Weeknotes 2025 W11: Rotten

March 10​–​16, 2025
1300 words

Quick bits:


Shower thoughts:


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:

A two-dimensional chart with four quadrants. The X axis is “weakly typed” to “strongly typed”, and the Y axis is “statically typed” to “dynamically typed.” Various programming languages appear in all quadrants of the chart.

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:

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:


Links:

Tech links:


  1. 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. ↩︎

  2. 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. ↩︎

  3. And Forth and so forth. I suppose. ↩︎

  4. 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? ↩︎

  5. Fun fact: I initially wrote “learning curse” here, which is rather apropos. ↩︎

  6. Factorio (Wube Software, 2020), published by Wube Software. ↩︎

  7. Philip K. Dick, The Man in the High Castle (New York: Putnam, 1962). ↩︎

You can reply to this weeknotes entry by email. I’d love to hear your thoughts!
If you like what I write, stick your email address below and subscribe. I send out my weeknotes every Sunday morning. Alternatively, subscribe to the web feed.