I spent most of 2024 writing a (n incomplete) book on software architecture. I learned a lot about DSL design, array languages, naming, notation, information architecture and of course normal architecture (also many other things).
The densest insights emerged from:
- How Buildings Learn - Stewart Brand - e.g. how shearing layers give language to make’s dependent structure to organize coupling
-
https://ryjo.codes/articles/a-simple-tcp-server-written-in-go-and-clips.html builds configs with a rule engine. Many have voiced similar over the years but never really implemented it, whether rules, relational algebra to build constraints or… which inspired a lot of exploration and failure.
- inventor’s paradox - ambitious plans succeed more often than conservative ones (wrestling with and simplifying large systems, we derive new primitive sets which make wild things seem possible to us! Bringing them to fruition, we overcome their poor optics. Iterating along conservative routes however makes us bash heads with prior art and race with many others iterating along the same lines (with better economies of scale etc.))
-
Van Roy’s programming paradigm taxonomy (pg. 5/13), showing multiple dimensions of paradigms (in 2d!) as unique systems based on small changes to their primitive sets
- Consilience - Wilson - presents approaches to synthesizing knowledge (also compare to Arthur Köstler’s Act of Creation, which also covers naming conventions)
Notably good textbooks:
- Intro to Functional Programming through Lambda Calculus - Michaelson - builds ML and Lisp out of an initial lambda calculus
- Programmer avec Schme - Chazarain - although in another language, the chapters on propositional calculus, automata theory etc. were clearer than anything I’ve seen before and cascaded understanding and connections in my mind. I learned something new every few pages! It’s like SICP on steroids
- Analysis of Complex Networks From Biology to Linguistics - Dehmer, Emmert-Streib - both provided a good model for managing generalized patterns in disparate domains and some good math for my actual work
To be honest, in 2024 I mostly did what the French sometimes call “butiner”, a hard to translate word that describe the motion of a bee going from flower to flower, never stopping for long on each one. The closest English term would be “foraging”, but it lack the implication that one never stick at a particular spot for long. Anyway.
I can’t say I learned much that rocked my world in the area of software dev this year. I’m not really interested in AI stuff for now, and it seems that it is the only things people talk about these days. For someone like me who work on boring enterprise system, things seems to be settling down after the absolute maelstrom that was the 10s, so I took the opportunity to learn stuff just for the fun of learning, without feeling like I have to fulfil some rigid objective of self improvement.
“Butiner” keeps on giving:
What take aways did you have from B*tch?
Now it’s a political book, it has to be said, about sex and gender, written by a self declared feminist. If this get you blood boiling, stop reading now.
Honestly, I mostly loved it for the fun of discovering about cool animals that act in ways that make you go “what in the world, evolution?”. I’m the kind of person who can binge watch BBC earth documentaries.
An important message of the book is that we human tend to impose our moral and values on the way we see the world, and it blind us to what is really going on. And as a result, Science is not as pure of bias as some would let us believe. Nothing revolutionary, but the countless example really drive that point home.
Finally, it’s a refutation of some pop concept we hear a lot these days about how the animal world tell us how the human female should be. Yeah, some species have alpha males, but others have alpha females too. Sexuality in the animal world is complicated and if you actually look at wide diversity of behavior, instead of cherry picking, it may not be what you expected.
In our days of completely emotion driven take on these subjects , it was nice to have a book about cold hard facts in the real world. I like book that respect my intelligence.
I think the English equivalent might be “grazing”? The image being an animal which nibbles a bit of grass from many different places.
I prefer the French version…
basically just blog posts from @simonw :)
I think this year’s goal for me is: read 100 posts from Simon W ;-)
I read Introduction to Programming in ATS from the website. It was a challenging read but I made it nonetheless despite no expirience with either linear or refinement types or pointers (I have decent higher-level FP experience)—so there was quite a lot to try to understand since most languages either go full abstract or closer to the metal, not both. The Dataviewtypes were probably the neatest part. I can’t wait to see what’s cooking up in version 3 in terms of usability.
I should pick ATS back up this year! It’s a treasure trove of cool ideas in language design, really.
It takes quite a while to get used to its compiler errors, but even that one can get the hang of
I have been playing a bit role over the last couple of years bridging the gap between old ways of working with climate data and new ones. (The new way is often put under the umbrella term “ARCO”, or Analysis-Ready, Cloud-Optimized). I’m relatively late to the climate tech / GIS / web cartography party, having previously worked in ecommerce, so I’ve been spending a lot of time reading and implementing standards specifications and reading the docs for various other tools along the way. It’s an amazingly rich ecosystem, albeit occasionally for a newcomer like me a bit like drinking from a fire hydrant.
Some of the old-ish tools that are still in common use include:
Some classics that have aged pretty well include:
Some of the new-ish ones include:
GeoJSON and TopoJSON are both pretty old though? GeoJSON pre-dates D3 by a few years. TopoJSON has been around for a little over a decade at this point as well.
Good catch. Looking it up, it seems GeoJSON’s initial specification was in 2008 and D3’s initial release was 2011. Somehow I had it in my head that GeoJSON was newer than that and D3 older. In that case, I would move GeoJSON and TopoJSON to the “classics” category, with an emphasis on TopoJSON if one is working with regions that have shared boundaries.
I’m interested in how such disparate systems deal with geographic data. What are the pros and cons of GeoJSON vs. TopoJSON or STAC?
I have a lot of geo data (currently just using my own naive approach then drawing over google maps) but I’ve not explored prior art at all.
For GeoJSON vs. TopoJSON, TopoJSON has advantages in storage size when geometries are clean, and like @adamshaylor said above, have shared boundaries. Otherwise, I don’t use it much.
Back in 2013, for the software I helped build that now pays my bills, we decided on GeoJSON because, well, it’s just JSON. It’s easy enough to push JSON to a REST API endpoint for pushing geometries. TopoJSON could work but support for editing it isn’t really as robust. I can’t think of any of the popular frontend map editing libraries (geoman, leaflet-draw) that support editing it directly.
There are a bunch of other formats that are prevalent. The shapefile is still pretty dominant, with KML and geodatabase (ugh) being popular choices as well. Really wish more folks would adopt geopackage, which itself has been around for a bit, but don’t see many people actually using it in the wild.
Learning (or starting to learn) lean and especially following the mathematics in lean book. I really like how Lean allows me to build from the very basics up to powerful formalizations. I’m still learning: one of my goals is to formalize the FLP result in Lean, and I haven’t quite completed that yet. The IDE experience of Lean is also really great.
Completing following Andrej Karpathy’s Zero to Hero series. I really liked getting hands-on implementing things at this low level, thinking through the trade-offs, etc. I get a lot more out of reading ML papers now. I also spent some time implementing some of the major vector search algorithms, another very worthwhile exercise.
I hadn’t read Jim Gray’s A Transaction Model until this year, despite reading a lot of things that reference it. Truly a great paper.
On the non-work side, I set out to read some books I’d been recommended but was avoiding because I felt they were cliches. Seven Years in Tibet totally wasn’t the book I was expecting, and was absolutely fascinating (is it true? no idea). I also enjoyed Moneyball and Liar’s Poker, but not The Big Short. My top non-fiction of the year was The Shining Mountain. Most disappointing was Herzog’s Annapurna. He comes across as insufferable.
If you’re reading climbing books you might already be aware of it, but I enjoyed the documentary Touching the Void. It’s a gut wrenching story that thankfully ends well (not a spoiler since both climbers are involved in the media).
The movie is based on a book with the same name if that’s more you’re fancy, though I haven’t read it myself but it got awards.
The book is great, and well worth a read just as an adventure story.
The best thing I read last year by a mile was The Embodied Mind: Cognitive Science and Human Experience, by Francisco J. Varela, Evan Thompson, and Eleanor Rosch. Just wow. I can’t wait to feel like I have enough free time upcoming to read it again.
I also enjoyed reading some Luciano Floridi and Herbert Marcuse. Somehow I would like to figure out how it all meets in the middle, particularly in regards to ethics in technology and personal/societal fulfillment and growth.
In a slightly different direction, I liked Krome Barratt’s Logic & Design in Art, Science, and Mathematics, and I worked through most of George Bridgman’s excellent Life Drawing.
I’m working on a novel set in an alternate history Pacific rim in 1704, which has involved reading an incredible amount of interesting history ranging from pre-European Polynesian social organization to the transition from the Ming to the Qing in China, to the organization of Dutch Batavia. It also led me to the poetry of Du Fu, though I have to read it in translation learning to read Chinese is not happening any time in the next few years.
Manning et al’s ‘Introduction to Information Retrieval’ was a good, quick read and has been super useful.
I’m only part-way through Schneider’s ‘Governable Spaces,’ but it’s already provided a lot of food for thought.
It’s a lovely temporal region! My favorite concepts are the mandala states and little Chinas.
I’m changing the stack this year (also due to the war), so lot’s of pre-schooling books on the matters. Still, there’s something outside of that not-that-interesting pile.
Non-tech: there’s superb collection of old sci-fi (not 60s, but rather 70s-80s) that you can find on undisclosed amazon audiobook site. John Varley, Greg Bear, James Tiptree Jr etc. Love a new way to consume that during the walks.
Tech: by far The Art of Doing Science and Engineering: Learning to Learn by Richard Hamming. Rereading that right after the first read, now more thoroughly.
Of unusual stuff I’ve read a book called Portal written after the game called Portal, and it’s not that Portal with stupid turrels and shiny teleporters. This is a great book (not sure about the game quality, as it was unplayable to me due to age) that you can find here https://archive.org/details/portal0000swig . Robert Swigart writes a proper postmortem to humanity through intricate set of self-logs provided to lonely human by the leftovers of the internet. Super cool book, that hits even harder today.
Someone rereading a book is usually a good indicator that it worth checking out, especially if they reread it immediately. I’ll add that Hamming book to my list.
It’s a really great book. I remember going down to the New York City special collections library to read it in their reading room. I stayed all day and finished it. Now you can order a nice hardback for cheap on Amazon since it’s back in print.
Biggest thing for me was learning that CD+EG (Extended Graphics) discs actually exist, which led me to track down all I could and document them at extended.graphics. That enabled my implementation of the spec, probably the first time anyone thought about it this millennium.
I don’t think I learned that much last year just tried to keep up with Japanese and picked up some bits and pieces of Kubernetes and Kafka. I learned a bit of Factor which was fun but really there was no time for it.
This year I think I’m going to follow 99% invisible’s guide and read The Power Broker.
The 99% invisible podcast is reading The Power Broker and going over chapters. Might not be your thing at all, but it’s there if you want it :)
I think that’s what I said?
Oh my god, I’m sorry haha. It appears I didn’t fully read your comment. I blame my cat for waking me up too early.
Last year for my birthday a friend with a masters in philosophy gave me a copy of “The Passion of the Western Mind” by Richard Tarnas. It is incredibly dense and far reaching but I’ve been chipping away at it a little bit each day and I hope to have it finished by my next birthday. For someone who has no formal training in history or philosophy it has been a brilliant “let’s get you all caught up” kind of book. I feel it’s given me a greater ability to place some of the biggest names and ideas into context.
Seeing Like a State