Je ne sais quoi

Programming languages and other technologies, and feel.

This item is a work in progress. It is subject to change radically at any time—up to and including being deleted entirely if I change my mind about it! Because it is a draft, it is not included in the site’s feeds; if you want to watch its progress, you will need to do that very old thing and bookmark this page and return to it over time until it is published.

Assumed audience: People with an interest in tools and their aesthetics. I talk about, but do not assume any deep familiarity with, both programming languages and cameras in this piece.

Epistemic status: Feeling this one out in real time.

I have been writing a bunch of Rust again over the past couple days, working slowly to implement pieces of what I hope will become the next version of this site.1 Every time I sit down and work with Rust in earnest for any length of time — ten minutes or ten hours spread across a weekend — I have the same feeling I did when I first started messing with it all the way back in the summer of 2015: This is really good.

It is not that Rust has no issues. It is not perfect. I have quibbles and complaints. The syntax is not pretty by any stretch. There are rough edges still in both the language itself and the surrounding ecosystem. And yet: it feels good in a way I find difficult to put into words. There is just something about building a program in Rust which transcends the individual parts of it (good though those individual parts are), or even the mere composition of those parts (generally very wise-composed though their integration is!). It ends up feeling — somehow — elegant and joyful and satisfying.

Rust is not the only programming language that makes me feel this way. I have much the same experience working in Unison. (Elm, too.) Not so with TypeScript, even if I find it a surpassingly useful and capable tool. Certainly not so with Java nor C♯ nor C++: languages whose contributions I can appreciate but the experience of writing which infuriates me. Not PHP nor JavaScript nor Ruby nor Python. Not even a language which at first blush ought to feel like Rust and Elm, and which I still very much like, such as F♯. Try as I might, I find it impossible to explain exactly what distinguishes the ones I love from those I simply find usable and useful.

This is, in a word, taste.

Taste is famously difficult to pin down, and even more famously not to be accounted for.


  1. It has been about five years since I started working in earnest on the current revision, though working in fits and starts as I did it took me until late 2019 to actually get it to a point I was happy with and launch it. This v6 version is a case where I hope to build some technical underpinnings that will last me a decade or more, even if I evolve the design over that time. I expect it to take me another year or two to finish getting it to the point where I can launch it because the underpinnings are — ambitious, to say the least, and the time I have to spend on it is split with other things like family activities, music composition, photography, running, cycling, and so on. ↩︎