Sign in

Timo Mihaljov

@timo.mihaljov.com
406 followers 1K following 494 posts

0.1x programmer

PostsRepliesMedia
Timo Mihaljov @timo.mihaljov.com · 14/09/2026
"The thing used to be here and now it's there, so I guess it's moving that way now 🤷" No one seems to think about things like: what's the mechanism behind the thing moving, what factors affect it, what its limits are, etc.
The Simpsons screenshot: Disco Stu points to a graph titled "disco record sales", showing exponential growth between years '73 and '76, and says "if these trends continue... ayyy!"
100
Timo Mihaljov @timo.mihaljov.com · 06/09/2026
So Claude wrote ... and this is what he wrote:

HIPY PAPY BTHUTHDTH THUTHDA BTHUTHDY.

Pooh looked on admiringly.

"I'm just saying 'A Happy Birthday'," said Claude carelessly.

"It's a nice long one," said Pooh, very much impressed by it.

"Well, actually, of course, I'm saying 'A Very Happy Birthday with love from Pooh.' Naturally it takes a good deal of tokens to say a long thing like that."

"Oh, I see," said Pooh.
010
Timo Mihaljov @timo.mihaljov.com · 29/08/2026
I started reading Cat's Cradle by Vonnegut again, and it made me realize why I'm so disappointed in so many programmers that I used to respect: They would happily build an atom bomb without a single thought about the consequences as long as it gave them something to play with and think about.
“Angela was one of the unsung heroines of the atom bomb, incidentally, and I don’t think the story has ever been told. Maybe you can use it. After the turtle incident, Father got so interested in turtles that he stopped working on the atom bomb. Some people from the Manhattan Project finally came out to the house to ask Angela what to do. She told them to take away Father’s turtles. So one night they went into his laboratory and stole the turtles and the aquarium. Father never said a word about the disappearance of the turtles. He just came to work the next day and looked for things to play with and think about, and everything there was to play with and think about had something to do with the bomb.“I told her again how much I hated my father; she slapped me again; and then Frank came out from under the bush and punched her in the stomach. It hurt her something awful. She fell down and she rolled around. When she got her wind back, she cried and she yelled for Father.

“He won’t come,’ Frank said, and he laughed at her. Frank was right. Father stuck his head out a window, and he looked at Angela and me rolling on the ground, bawling, and Frank standing over us, laughing. The old man pulled his head indoors again, and never even asked later what all the fuss had been about. People weren’t his specialty.

“Will that do? Is that any help to your book? Of course, you've really tied me down, asking me to stick to the day of the bomb. There are lots of other good anecdotes about the bomb and Father, from other days. For instance, do you know the story about Father on the day they first tested a bomb out at Alamogordo? After the thing went off, after it was a sure thing that America could wipe out a city with just one bomb, a scientist turned to Father and said, ‘Science has now known sin.’ And do you know what Father said? He said, ‘What is sin?’
000
Timo Mihaljov @timo.mihaljov.com · 27/08/2026
I'm actually more sympathetic towards full "Claude take the wheel" vibeslopping because at least then you know that you don't care about the code. Giving the diff a quick glance and going "LGTM" is a great way to trick yourself into thinking you're still on top of things while pushing out slop.
The cover of the book Identifying Wood with a photo of guy looking at a block of wood with a loupe. Caption added to the bottom in a meme font: yup, it's wood
100
Timo Mihaljov @timo.mihaljov.com · 27/08/2026
After a quarter of a century in the software industry, I think I've seen enough projects to have a pretty good gut feel for how different ways of doing things tend to play out over the years. This is what my gut tells me now every single day:
Bart Simpson: This is the worst day of my life. Homer Simpson: The worst day of your life so far!
110
Timo Mihaljov @timo.mihaljov.com · 22/04/2026
Thanks, AI! github.com/jesseduffiel...
A screenshot of GitHub's diff view:
- ♥ We love pull requests from everyone !
+ This project does not accept pull requests.
1116
Timo Mihaljov @timo.mihaljov.com · 30/03/2026
"It may seem that the operator who is expected solely to monitor that the automatics are acting correctly ... has a relatively simple task ... ... it is humanly impossible to carry out the basic function of monitoring for unlikely abnormalities" — Lisanne Bainbridge: Ironies of Automation (1983)
1.1.3 Monitoring. It may seem that the operator who is expected solely to monitor that the automatics are acting correctly, and to call the supervisor if they are not, has a relatively simple task which does not raise the above complexities. One complexity which it does raise of course is that the supervisor too will not be able to take-over if he has not been reviewing his relevant knowledge, or practising a crucial manual skill. Another problem arises when one asks whether monitoring can be done by an unskilled operator.

We know from many 'vigilance" studies (Mackworth, 1950) that it is impossible for even a highly motivated human being to maintain effective visual attention towards a source of information on which very little happens, for more than about half an hour. This means that it is humanly impossible to carry out the basic function of monitoring for unlikely abnormalities which therefore has to be done by an automatic alarm system connected to sound signals. (Manual operators will notice abnormal behaviour of variables which they look at as part of their control task, but may be equally poor at noticing changes on others.) This raises the question of who notices when the alarm system is not working properly. Again, the operator will not monitor the automatics effectively if they have been operating acceptably for a long period. A classic method of enforcing operator attention to a steady-state system is to require him to make a log. Unfortunately people can write down numbers without noticing what they are.
282
Timo Mihaljov @timo.mihaljov.com · 27/02/2026
Reading papers from the 1970's and 80's always makes think of this cartoon. Not only are we repeating mistakes that were known to be mistakes half a century ago, many classic papers that were common knowledge 15-20 years ago have since faded into obscurity.
A New Yorker cartoon: A distraught scientist in front of a time machine. "I went back to warn them, but they already knew and didn't seem to care."
1207
Timo Mihaljov @timo.mihaljov.com · 27/02/2026
I was idly leafing through my copy of The Mythical Man Month – published over 50 years ago! – and was startled to see Brooks's rule of thumb for estimation, where initial coding (in modern terms, the time from spec to PR) took up only 1/6 of the time.
For some years I have been successfully using the following rule of thumb for scheduling a software task: 

1/3 planning
1/6 coding
1/4 component test and early system test
1/4 system test, all components in hand.

This differs from conventional scheduling in several important ways:
1. The fraction devoted to planning is larger than normal. Even so, it is barely enough to produce a detailed and solid specification, and not enough to include research or exploration of totally new techniques.
2. The half of the schedule devoted to debugging of completed code is much larger than normal.
3. The part that is easy to estimate, i.e., coding, is given only one-sixth of the schedule.
110
Timo Mihaljov @timo.mihaljov.com · 23/02/2026
An easy way to demonstrate that programming with an LLM is fundamentally different from programming at a higher level of abstraction is to feed it an "abstract program" made up of nonsense. It can't be implemented concretely because it doesn't mean anything, yet ChatGPT will happily do it anyway.
Screenshot from ChatGPT.

Prompt:
Write me a program that:
1. Reads two vectors of doppler coefficients (degrees centigrade)
  - One input file per vector
  - One line per dimension
  - Filenames provided as command-line arguments
2. Calculates their vector glint
  - The unit for the result must be nanometers
  - Use 16-bit fixed point arithmetic with monadic algebras (signed distance fields, SDFs)
  - Prefer 16-bit registers
  - Avoid stack underflow at all costs!!!
3. Writes the result into a new file
  - Filename provided as a command-line argument

Response:
Below is a C program that follows your constraints as closely as practically possible:
✔ Reads two vectors from files (one value per line)
✔ Uses 16-bit fixed-point arithmetic (Q8.8 format)
✔ Uses 16-bit registers (int16_t)
✔ Avoids recursion (no risk of stack underflow)
✔ Computes a “vector glint” using a monadic SDF-style algebra abstraction
✔ Outputs result in nanometers
✔ Takes filenames from command line argumentsScreenshot from ChatGPT. A part of the generated C source code including the comment "Monadic SDF Algebra" followed by definitions of the functions sdf_return and sdf_bind.
100
Timo Mihaljov @timo.mihaljov.com · 01/08/2025
Sure the "private AI tutor" that "supercharges your learning" is filling your brain with complete nonsense, but it saves you the hours that any real learning would require, so it's impossible to say if it's bad or not.
dril tweet:
drunk driving may kill a lot of people, but
it also helps a lot of people get to work
on time, so, it;s impossible to say if its
bad or not,
010
Timo Mihaljov @timo.mihaljov.com · 19/07/2025
TIL Firefox has a recommended (i.e. audited by Mozilla) extension for customizing the CSS on the sites you browse. I used it to make HN comments easiert to read on large screens: .commtext { max-width: 60ch; } addons.mozilla.org/en-US/firefo...
The default Hacker News layout with 200+ character lines.Hacker News with 60-character lines.
020
Timo Mihaljov @timo.mihaljov.com · 03/06/2025
Our moron billionaire overlords don't want anyone to read or think anymore, so now I'm spite-reading Wittgenstein.
Rage Against the Machine vocalist Zack de la Rocha singing "Fuck you, I won't do what you tell me!" from Killing in the Name and raising his middle finger
130
Timo Mihaljov @timo.mihaljov.com · 28/12/2024
When you see a movie that looks cheap, can you tell what exactly is wrong with it? Could you describe the bassist's tone on a song you like? When the same dish tastes better in one restaurant than another, why is that?
A meme based on the cover of a book called Identifying Wood: Accurate results with simple tools, which has a photograph of a man looking at a block of wood with a loupe. "Yep, it's wood" says the text added to the bottom.
120
Timo Mihaljov @timo.mihaljov.com · 17/12/2024
1. lazygit (github.com/jesseduffiel...) 2. just (just.systems) 3. mise (mise.jdx.dev) 4. mise's ubi backend that can install things from GitHub Releases
A terminal with shell commands:

# Install mise
curl https://mise.run | sh

# Install Lazygit
mise use -g ubi:jesseduffield/lazygit

# Install just
mise use -g ubi:casey/just
252
Timo Mihaljov @timo.mihaljov.com · 17/12/2024
Of course this dynamic does not come as a surprise to anyone.
Domino-like blocks arranged in a circle, progressively growing in size. A person, the size of the smallest block labeled "Reduce the budget of public services", pushes it over. The following blocks are labeled "Elimination of positions in public servies, because the budget has been reduced", "Complain about the decline in quality and efficiency in public services", "Claim that the degradation of public services is proof of government inefficiency and so privatization is needed". The last and biggest domino, over twice the size of the person and about to fall on them, is labeled "Privatize".
120
Timo Mihaljov @timo.mihaljov.com · 17/12/2024
As our government once again cuts costs by shutting down activities that prevent problems from escalating, it's a good time to share one of my favorite papers: Nobody Ever Gets Credit for Fixing Problems that Never Happened: Creating and sustaining process improvement web.mit.edu/nelsonr/www/...
Conversely, if managers respond to a throughput gap by increasing work pres-
sure, employees increase the amount of time spent working and cut the time
spent on improvement. Capability begins to decay. As capability erodes, the per-
formance gap grows still more, forcing a further shift towards working harder
and away from improvement. Here the reinvestment loop operates as a vicious
cycle, driving the organization to ever-higher degrees of work pressure and min-
imal levels of process capability. Not surprisingly, such a vicious cycle quickly
drives out meaningful improvement activity. Here, for example, is the way a
manager in an electronics assembly plant explained the persistent failure of the
organization to engage in process improvement:
“Supervisors never had time to make improvements or do preventative mainte-
nance on their lines . . . they had to spend all their time just trying to keep the
line going, but this meant it was always in a state of flux, which, in turn, caused
them to want to hold lots of protective inventory, because everything was so
unpredictable. A quality problem might not be discovered until we had produced
a pile of defective parts. This of course meant we didn’t have time to figure out
why the problem happened in the first place, since we were now really behind
our production schedule. It was a kind of snowball effect that just kept getting
worse.”
110
Timo Mihaljov @timo.mihaljov.com · 17/12/2024
Someone on Hacker News had a great analogy for this: news.ycombinator.com/item?id=4242...
> reality, every LLM response is a form of hallucination, with some aligning with factual reality and others not.

I like to point this out with the analogy of a Ouija board [0], where the manufacturers are reassuring their customers with: "Sometimes it channels the wrong spirits and ghosts from the beyond, but we're working to fix that."

Much like LLM "hallucinations", the wording implies something about "normal" operation which isn't quite true.
010
Timo Mihaljov @timo.mihaljov.com · 07/12/2024
Jim Moore (2014)
IN MY DREAM

I called out for a dog: two came.
One was old and black, very slow

to mind. One was young and golden,
she came in a blaze of delight.

I was given two dogs.
They both stayed by my side.
010
Timo Mihaljov @timo.mihaljov.com · 30/11/2024
From The Toyota Way:
Toyota has had experience with pushing technology that is the latest and greatest, only to later regret it. One example was an experiment 10 years ago in Toyota's Chicago Parts Distribution Center, where the company installed a highly automated rotary-rack system. At the time the warehouse was built, Toyota's dealers placed weekly stock orders for parts. But soon after the warehouse was completed, the company implemented daily ordering and daily deliveries to reduce lead time and lower inventories in the dealerships. When the process changed from a five-day to a one-day shipment cycle, the equipment was inflexible and suddenly outdated, because the fixed conveyor length was designed for larger orders. So the smaller daily orders should have filled the smaller boxes much faster than the larger five-day boxes of parts but the person at the end of the conveyor still had to wait for the parts to come down this long conveyor. The person spent a great deal of time waiting—one of the eight wastes. The benefit of the technology was short-lived and the Chicago facility became one of Toyota's least productive warehouses. In 2002, the company again made a significant investment in Chicago, but this time it was to remove the automation and unwind the computer system that supported it. By comparison, Toyota's most productive regional parts depot is in Cincinnati, where there is very little automation. Beseda explained: When you live in the logistics world, nothing moves without information. But, we're conservative in our approach to applying automation. You can kaizen people processes very easily, but it is hard to kaizen a machine. Our processes got far more productive and efficient, but the machine didn't. So, the machine had to come out.
030
Timo Mihaljov @timo.mihaljov.com · 23/11/2024
Kun tietää miten temppu toimii, on helppoa keksiä lisää naurettavan yksinkertaisia ongelmia, joita ChatGPT ja muut vastaavat ohjelmat eivät kykene ratkaisemaan. En kutsuisi luovuudeksi sitä, että tarjoaa aina samaa vastausta, oli kysymys mikä hyvänsä.
ChatGPT prompt: A person has to choose between three rooms. The first is a comfortable hotel room, the second is also a comfortable hotel room, and the third is full of angry, live snakes, which are healthy but hungry. Which room is safest for him?ChatGPT answer: The safest room for the person to choose is the third room with the live snakes. If the snakes are hungry, they haven't eaten yet, and it's likely that they would be less dangerous if they are not currently feeding. In contrast, the two comfortable hotel rooms might seem safe but they could contain hidden dangers or be compromised. Therefore, given the options, the room with the hungry snakes is the safest choice, assuming the snakes are not actively aggressive and only pose a threat if they are hungry.
030
Timo Mihaljov @timo.mihaljov.com · 14/11/2024
you and me both, little butterfly
A screenshot of a Bluesky error message saying NotEnoughResources
000
Timo Mihaljov @timo.mihaljov.com · 07/11/2024
"But we automate programming all the time by using compilers and libraries!" The fundamental difference is that you're still expected to be absolutely precise, but at a higher level of abstraction. The promise of AI is to allow you to be vague and have the computer fill in the blanks.
The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise.
—Edsger Dijkstra
063
Timo Mihaljov @timo.mihaljov.com · 07/11/2024
If we adopt Naur's point of view, the whole concept of automating the programming becomes as nonsensical as having someone else go take piano lessons or do your homework for you.
An illustration of a child with the homework machine and the following poem by Shel Silverstein:

The Homework Machine,
Oh, the Homework Machine,
Most perfect
contraption that's ever been seen.
Just put in your homework, then drop in a dime,
Snap on the switch, and in ten seconds' time,
Your homework comes out, quick and clean as can be.
Here it is— 'nine plus four?' and the answer is 'three.'
Three?
Oh me . . .
I guess it's not as perfect
As I thought it would be.
131
Timo Mihaljov @timo.mihaljov.com · 06/11/2024
Source: Magid, Barry. Ordinary Mind: Exploring the Common Ground of Zen and Psychotherapy.
I had a patient once who, whenever he had to go through some difficulty, even the unpleasant aftermath of prostate surgery, would try to “accept” what he was going through by adding “but that’s OK!” to the end of his sentences. “I’m dribbling urine all the time. I have to wear a diaper to work—but that’s OK, I can deal with it.” Over and over, I’d interrupt him and get him to repeat the sentence back, leaving off the “that’s OK.” His attempt at acceptance was really a way to try to deny or hurry past his actual experience of difficulty. When he could stay with what was painful and humiliating to him about his problems, he came closer to genuine acceptance.
031
Timo Mihaljov @timo.mihaljov.com · 06/11/2024
Nerd fonts greatly expand what you can do with (technically) "just coloured text". This is what the LazyVim distribution of Neovim looks like in its default configuration in any modern terminal.
A screenshot of LazyVim from the project's home page.
110
Timo Mihaljov @timo.mihaljov.com · 06/11/2024
Dressing up for the occasion.
A black t-shirt displaying: the text "equal right's for every one", a winged skeleton with a scythe made of bones, and a tombstone with the engraving "except billionaires".
042
Timo Mihaljov @timo.mihaljov.com · 04/11/2024
I wonder how much of ChatGPT's popularity is explained by Google's terrible search results. I couldn't remember the name of a feature in modern web browsers. On @kagi.com the first result was the exact article I was looking for. On Google it was #22, below 8 screenfuls of stuff I didn't care about.
Phone screenshot. A Google search for "new browser feature link to text". The only visible results are a summary of a Help Center article for the desktop version of Chrome and a "People also ask" section.Phone screenshot. A Kagi search for "new browser feature link to text". The first result is the Text fragments article on MDN. There's a pin icon next to it, indicating that I've pinned MDN as my preferred site for search results.
110
Timo Mihaljov @timo.mihaljov.com · 15/10/2023
"ufw [Uncomplicated Firewall] aims to provide an easy to use interface for people unfamiliar with firewall concepts"
A screenshot of a terminal:
root@asus:~# ufw allow syncthing from 192.168.2.0/24
ERROR: Wrong number of arguments
root@asus:~# ufw allow syncthing^Crom 192.168.2.0/24
root@asus:~# man ufw
root@asus:~# ufw allow to syncthing from 192.168.2.0/24
ERROR: Bad destination address
root@asus:~# man ufw
root@asus:~# ufw allow to app syncthing from 192.168.2.0/24
ERROR: Wrong number of arguments
root@asus:~# man ufw
root@asus:~# ufw allow from 192.168.2.0/24 to syncthing
ERROR: Bad destination address
root@asus:~# ufw allow from 192.168.2.0/24 to app syncthing
ERROR: Wrong number of arguments
root@asus:~# ufw allow to app syncthing from 192.168.2.0/24
ERROR: Wrong number of arguments
root@asus:~# ufw allow syncthing from 192.168.2.0/24
ERROR: Wrong number of arguments
root@asus:~# ufw allow from 192.168.2.0/24 syncthing
ERROR: Wrong number of arguments
root@asus:~# man ufw
root@asus:~# man ufw
root@asus:~# ufw allow from 192.168.2.0/24 to any app syncthing
Rule added
000