Weeknotes 2025 W11: Rotten
Quick bits:
-
Rather low on spoons this week.
-
I am not pleased with having near-freezing temperatures again. Spring and summer need to hurry up.
-
My expression parsing article is making such slow progress that I might as well not be working on it. Part of the reason for it being so slow is that I keep changing the underlying implementation and having to rewrite bits.
-
I published a bugfix version of my Solitaire game. This came after an email with a bug report, and I’ve got to say: it is rather nice to handle correspondence over email, rather than bug trackers and forums and that sort.
-
More and more tourists are making their way to Berlin, which means there are increasing numbers of pedestrians walking on bike paths. I wish Berlin’s bike paths had a uniform look; sometimes it’s wholly unclear what is and what isn’t a bike path.
-
I’m considering giving up my Now page. There is a lot of overlap with the weeknotes, after all.
Shower thoughts:
- I am a simple man with simple needs. All I want is for CinemaWins to narrate my achievements after I die.
The citations on my web site can now have a locator, so I can be specific about what exactly I am referring to when citing a source, like a page number. For example, I can now write [@Hauser2008Notes, p. 43]
and this is what it’ll end up looking like on my web site:
Hauser and Reich1 describe an objective has having four criteria.
See the p. 43
at the end there? That’s the important bit!
The notation is flexible, too. I can not only refer to pages of physical books, but also to chapters and sections of ebooks — or anything else I want, really. I’ll certainly make use of going forward.
Someone on the Internet confused static typing with strong typing, so naturally I had to jump in, and make a chart to show the difference:

First of all: this chart is an approximation. Countless hours of argumentation can be had over this chart, but I think the rough shape is there.
Static typing is orthogonal to strong typing: Ruby is a strongly and dynamically typed language, while C is a weakly and statically typed language.
The way I see it:
-
The more strongly typed a language is, the harder it is to treat data that’s of one type as (accidentally or intentionally) another type. JavaScript is notorious for its confusing handling of
0
and[]
and""
, for example, and C has void pointers. -
The more statically typed a language is, the more realistic it is to infer properties about symbols (variables, constants, functions, …) ahead of time. Conversely, the more dynamically typed a language is, the more those properties are only available at runtime.
Both static–dynamic and strong–weak are a spectrum, as you can tell from the chart and my description.
So now you know!
I mentioned last week that I was thinking about Nanoc 5, and I’ve drafted a (very incomplete) Nanoc 5 wishlist for myself. To be clear: I have not started any work on a Nanoc 5 implementation, and such an implementation is still far away.
Nanoc 1.0, released nearly 18 years ago, was written in Ruby because Ruby was the new hotness in web-focused programming languages. At the time, JavaScript was a bit of a joke; jQuery had come out only the year before2 and Node.js did not exist yet. I made a bet on Ruby for this project and I believe that for the time, it was absolutely the right choice.
But these days, Ruby is getting a bit in the way for Nanoc, for two primary reasons: Ruby still doesn’t have reasonable support for parallel computing, and maintaining a Ruby installation can be a pain (and thus not worth it when your only use of Ruby is maintaining a Nanoc web site). And so, for Nanoc 5 it would be nice to move away from Ruby as the implementation language.
Nanoc relies heavily on plugins (e.g. for filters) and that is something I want to keep. I would even like to allow plugins to be written in other languages: not just Ruby, but also Node.js and Lua and Go and Rust and so forth.3 An IPC/RPC protocol for plugins (using e.g. gRPC) could work very well.4
That still leaves the question of which host language to use. Rust would be interesting, but the learning curve5 is steep and developing in Rust is still a rather frustrating experience for me. Go would be an obvious answer; I’ve got experience with it and would do exactly what I need.
For this new piece of software, I would take my nearly-18 years of learnings and pour it into something that could be a fundamental reimagining of what a static-site generator can be. Lots of prototyping and experimentation will be needed for this. Again: Nanoc 5 is not coming anytime soon.
I still believe Nanoc (or its successor) has a distinct place in the world. I have looked at other static-site generators out there, but none of them fit my needs. Perhaps Nanoc (or its successor) is less of a static-site generator and more of a “build system for the web” — something that could be worth leaning into even harder.
Entertainment:
-
Factorio6 is a time sink. The Space Age DLC is rather big. I am getting a bit bored of it all. And everything on Gleba is rotten!
-
The Man in the High Castle7 gets weird near the end, and not in a good way, I think. I lost the connection with the characters, and I especially can’t make sense of Joe & Julianne’s story. I am probably missing something here.
-
AAR031 - Luche / Laton Raver - Acid Avengers 031: Belgian-style acid rave, hell yes!
Links:
-
BERLIN VETERANS (Meditations for the anxious mind): Accurate.
-
What do accountants actually do? (Good Work)
-
Every Mind-Bending TV Show (Alasdair Beckett-King)
Tech links:
-
AI Search Has A Citation Problem (Klaudia Jaźwińska and Aisvarya Chandrasekar for Columbia Journalism Review)
-
Building Websites With LLMS — (L)ots of (L)ittle ht(M)l page(S) (Jim Nielsen)
-
Companies warn investors that DOGE’s federal cuts might hurt business: Quote: “[…] Brian Robins, finance chief for San Francisco-based software maker GitLab, said GitLab is aligned with the goals of DOGE […]. ‘What the Department of Government Efficiency is trying to do is what GitLab does,’ Robins said.” Well, screw GitLab, then. Codeberg is looking very enticing these days.
-
CSS Relative Colors (Ahmad Shadeed)
-
Choosing Languages (Steve Klabnik)
-
Frank Hauser and Russell Reich, Notes on directing: 130 lessons in leadership from the director's chair (New York, London, Oxford, New Delhi, Sydney: Bloomsbury, 2008), p. 43. ↩︎
-
jQuery was awesome, just to be clear. The impact that it had on frontend web development is enormous. It paved the way for many, many great things that followed. The fact that jQuery is largely obsolete these days is a testament to how much it pushed the industry forward. Nothing but respect here. ↩︎
-
And Forth and so forth. I suppose. ↩︎
-
This might be difficult to get to work on Windows, though. There are definitely people that use Nanoc on Windows. Do I want to retain Windows as a supported OS? ↩︎
-
Fun fact: I initially wrote “learning curse” here, which is rather apropos. ↩︎
-
Factorio (Wube Software, 2020), published by Wube Software. ↩︎
-
Philip K. Dick, The Man in the High Castle (New York: Putnam, 1962). ↩︎