Alan Jacobs
revisiting architectural blogging
Makers and Making
An Article by Alan JacobsThe [Silmarils] are good; their making was at least potentially innocent; but afterward arose a lust for owning and controlling that led to great tragedy… The aspect of humanity which the elves represent most fully – both for good and ill – is the creative one.”
And this is why “making” in and of itself is not the answer to our decadent moment. “Love of things, especially artificial things, could be seen as the besetting sin of modern civilisation, and in a way a new one, not quite Avarice and not quite Pride, but somehow attached to both” – and this is the Fëanor Temptation. It is in light of this temptation that I advocate repair, which is a mode of caring for what we have not made, but rather what we have inherited. We will not be saved by the making of artifacts — or from the repair of them, either; but the imperative of repair has these salutary effects: it reminds us of our debt to those who came before us and of the fragility of human constructs.
Against Canvas
An Article by Alan JacobsEven with all the features and plugins, Canvas presumes certain ways of organizing classes that might not be universal, just typical. And if (like me) you’re an atypical user, you have to choose between constantly fighting with the system or gradually doing more and more things the way Canvas wants you to do them. This, by the way, is why it’s never true to say that technologies are neutral and what matters is how you use them: every technology without exception has affordances, certain actions that it makes easy, and other actions that it makes difficult or impossible. A technology whose affordances run contrary to your convictions can rob you of your independence — and any technology deployed on the scale of Canvas will inevitably do that. It will turn every teacher into an obedient Canvas-user. I don’t want to be an obedient Canvas-user.
But we're not there
A Fragment by Alan JacobsGet your fucking hands up
Get on out of your seats
All eyes on me, all eyes on me...But we’re not there. There’s a cheering-audience soundtrack, but it’s fake, Burnham knows it’s fake, he’s the one who put it there. He doesn’t know whether we’re watching, whether our hands are up, whether all eyes are on him.
The small web is beautiful
I believe that small websites are compelling aesthetically, but are also important to help us resist selling our souls to large tech companies. In this essay I present a vision for the “small web” as well as the small software and architectures that power it.
Why aim small?
Why aim small in this era of fast computers with plenty of RAM? A number of reasons, but the ones that are most important to me are:
- Fewer moving parts. It’s easier to create more robust systems and to fix things when they do go wrong.
- Small software is faster. Fewer bits to download and clog your computer’s memory.
- Reduced power consumption. This is important on a “save the planet” scale, but also on the very local scale of increasing the battery life of your phone and laptop.
- The light, frugal aesthetic. That’s personal, I know, but as you’ll see, I’m not alone.
Features and complexity
Niklaus Wirth of Pascal fame wrote a famous paper in 1995 called A Plea for Lean Software. His take is that “a primary cause for the complexity is that software vendors uncritically adopt almost any feature that users want”, and “when a system’s power is measured by the number of its features, quantity becomes more important than quality”.
Solving the problem of software bloat
But instead of just complaining, how do we actually solve this problem? Concretely, I think we need to start doing the following:
- Care about size: this sounds obvious, but things only change when people think they’re important.
- Measure: both your executable’s size, and your program’s memory usage. You may want to measure over time, and make it a blocking issue if the measurements grow more than x% in a release. Or you could hold a memory-reduction sprint every so often.
- Language: choose a language that has a chance.
- Remove: cut down your feature set. Aim for a small number of high-quality features. My car can’t fly or float, and that’s okay – it drives well.
- Say no to new features: unless they really fit your philosophy, or add more than they cost over the lifetime of your project.
- Dependencies: understand the size and complexity of each dependency you pull in. Use only built-in libraries if you can.
Raw size isn't enough
A few months ago there was a sequence of posts to Hacker News about various “clubs” you could post your small website on: the 1MB Club, 512KB Club, 250KB Club, and even the 10KB Club. I think those are a fun indicator of renewed interested in minimalism, but I will say that raw size isn’t enough – a 2KB site with no real content isn’t much good, and a page with 512KB of very slow JavaScript is worse than a snappy site with 4MB of well-chosen images.
...[Instead, it's about] an “ethos of small”. It’s caring about the users of your site: that your pages download fast, are easy to read, have interesting content, and don’t load scads of JavaScript for Google or Facebook’s trackers.