software calligraphy – part 2

As a systems administrator I am used to stitching together other people’s code and systems to produce a working outcome within given constraints. Which means, the rise of agentic coding should make me happy. Alas, outside work, it seems to make me sad. Which is why I still discuss my saddening experience with friends, coaches and mentors.

A professor friend posted on Facebook part of Moshe Vardi’s article:

CS departments must also grapple with the fact that the most fundamental skill we used to teach, which is coding (remember “Coding for All”?), may not be a viable skill at all.

To which I responded something along the lines of: Professors teaching circuits and computer architecture, do teach students how the components connect, but there is no person in the world, for decades now, who does this on their own for VLSI and the like. It is just not possible. They rely on the computer to do that. And yet, the skill of designing chips is not lost. We are there.

So what I call software calligraphy (hand crafted code) is the skill Dr. Vardi thinks is not the viable one. Yes, a calligrapher aims at a niche market. But to be honest, I do not think any of the 65 courses I had at NTUA taught me code as a viable skill. Maybe at Rice they did things differently (with Racket, HTDP and the like).


I woke up thanks to a nightmare this morning. I could not sleep. But here is what I remembered:

One morning I was shopping in Amsterdam with my young fiancée, and tired, we sat down on the café terrace to drink a cup of coffee and I was just thinking about whether I could do this, and I then designed the algorithm for the shortest path. As I said, it was a twenty-minute invention. In fact, it was published in ’59, three years later. The publication is still readable, it is, in fact, quite nice. One of the reasons that it is so nice was that I designed it without pencil and paper. I learned later that one of the advantages of designing without pencil and paper is that you are almost forced to avoid all avoidable complexities. Eventually, that algorithm became to my great amazement, one of the cornerstones of my fame.

This is Dijkstra describing his famous algorithm. And he did not do that in front of a computer. Hell, there was no way to be in front of a computer at the time for as long as we do now. It made me realize that I (and possibly others) had replaced any notation, pen and paper with the keyboard and the programming language. As I told another friend in our morning coffee, I had replaced thinking with pen and paper with C and pointers. It is as if we express unformulated thought by writing (and editing to bring it in order) code, and because the LLM writes code faster, we get saddened because we do not have time to think, when it should have been our thought, and not our query, guiding the LLM.

No algorithm was typed in the computer first (for certain definitions of “no”). I had this discussion back in 2006 with Aris. I told him, “I feel I can solve any problem you can pose to me by thinking in code”. “All right”, he said calmly, “solve graph isomorphism”. Yup, he is still waiting for my solution.

So the thing is this: I need to approach my interactions with the LLM in a way that does not outsource the thinking to it. Only the typing. And use more drawings and paper (I am no Dijkstra to be able to do without). This, I hope, will bring back my recreactional computing joy. And maintain fine motor skills.

Open Weight models and soft power

I see Open-weight AI models as a form of digital soft power. When an entity releases their models for free public use, they aren’t doing this operating under an altruistic motive; they’re aiming at shaping global perception: users get to run the latest (or the best for their hardware) model for free, but in return, they accept all the biases embedded in the model. For sure one could argue that the same holds true for search engines and even encyclopaedias, but encyclopaedias don’t hallucinate, the search results usually will point you to many competing analyses on what you’re looking for (otherwise SEO would not have been a thing) and users tend to accept answers easier due to the anthropomorphization.

This makes the open weight models a new strategic battlefied in the soft power arena. You do not have to run any long play PSYOP or even a tourist advertising campaign. You can have the free model say the thing and concentrate your efforts into making the users run the thing on their machine. Running it locally feels more “free” both in cost and dependency.

I foresee a near future with shareware models. The same companies giving us open weight models for free, are going to give us the new ones for a fee (training costs real money) and you will either subscribe to this service to get the latest model, or use the free one that will be two versions older. Which for most cases is going to be okish for the end user. Special purpose models, for writing code for example, will have the single user and the enterprize version, with maybe the enterprize version being fluent in more languages, or being aware of more libraries for your agents to work in an enterprise environment, as opposed to the indie game that you’re trying to push out.

We’ve seen the pattern: open-access allowing for an ecosystem to arise (see Kubernetes as the latest example), proprietary extensions capturing value. But with GenAI models, the issue is greater: The biases aren’t just in code; they’re in how the model serves truth, morality, and reality. Leading you to accept the producer’s perception one token at a time.

LLMs are my first go-to person

I have a go-to guy. Everyone should. But he decided to change continents. And this makes it difficult to challenge his mind on a frequent basis. I am now using Claude for this. It is always there and cannot complain, whatever crazy I may ask of it. It has even transformed into my repository of crazy ideas / projects that will never happen. Gone are the notebooks stashed deep in my drawers.

The LLM also never says no. Never denies a thing. It will never say something like “protect your time for such bullshit”. It will reframe the answer in a “positive” way. “While X is not the best technology for Y, it might be possible to achieve …”.

I iterate (“discuss”) a lot. Without code samples.

Maybe when something becomes well formulated, I will pick my go-to guy’s brain. Because it is easy to get high on your own supply.