The best things and stuff of 2021
Great things and people that I discovered, learned, read, met, etc. in 2021. No particular ordering is implied. Not everything is new.
also: see the lists from 2020, 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011 and 2010
Great posts | articles | talks read/watched
- A Short History of Objective-C – Sadly, Brad Cox passed away in 2021. Years ago he participated in a fantastic oral history (pdf) — RIP my old office-mate.
- The Birthplace of AI: The 1956 Dartmouth Workshop – A wellspring of information around the 1956 Dartmouth Summer Research Project on Artificial Intelligence organized by John McCarthy, Marvin Minsky, Claude Shannon, and Nathaniel Rochester. The post dives into the proposal and some of the prestigious attendees and their follow-on work. There’s a supplemental article at AAAI that’s worth reading as well. This post motivated me to imagine a world in which these ideas took hold of the computing universe and didn’t ever let go. This is a work in progress and may never find completion but it’s been fun so far.
- J notation as a tool of thought – In addition to providing a great introduction to J, Hillel Wayne also touches on the underlying philosophies underpinning APL and J.
- Introducing the Smalltalk Zoo – A nice condensed history of Smalltalk with links and videos along the way. More importantly, the post talks about the Welcome to the Smalltalk Zoo, a collection of Smalltalk information, emulations, and various other bits of knowledge curated by Dan Ingalls.
- Bootstrapping a minimal math library – This was a simple post and I’m certain that most mathematicians already knew this information. However, I am not a mathematician and so the revelations were deeply interesting to me. I instantly ran off and started implementing the ideas in my own little language playground.1
- The Kubrick Gaze – JF Martel spends buckets of ink (so to speak) about Kubrick’s filmatic device of focusing in an a character’s face as it stares deeply into the camera. There is a surprising amount of depth behind something seemingly so simple.
- A Close Look at a Spinlock – A deep deep dive into the workings of the spinlock mutual exclusion primitive. It’s been a long time since I thought about spinlocks and it was surprising how much I had forgotten — and what I didn’t know in the first place.
- Uptime 15,364 days – The Computers of Voyager – There are few hobbies better than spending years to completely understand the computing systems running Voyager 1 and 2. Great talk by Aaron Cummings. The references for the talk are amazing too.
Most viewed blog posts by me
- Clojure Core – I joined the Clojure core team on a full-time basis and posted about it. I’ve worked on Clojure in my free-time for years and so the decision to join the team for my actual job was a no-brainer. I’ve always felt that Clojure the language was interesting but the forces that drove its design and creation were far more important. By working on Clojure full-time I feel that I can contribue something important (despite that my individual contributions may be humble) to the computing industry.
- Clojure builds as an amalgamation of orthogonal parts – One of the first projects that I worked on after joining the core team was tools.build and in this post I dove into it a bit.
- Thunks – I tend to either tweet nonsense or write long(ish) posts (i.e. longer nonsense) on my blog. In the background I tend to write notes in a notebook and transfer them as needed into post drafts. Instead of doing that, I’ll likely use Thunks to hold notes in focused topics for (perhaps) future nonsense.
Favorite technical books discovered (and read)
- Software Design for Flexibility How to Avoid Programming Yourself into a Corner by Chris Hanson Gerald Jay Sussman – The best book on programming and programming practice written in years. Hanson and Sussman are on fire — as if there was any doubt. I have a whole set of notes for this book centered around Clojure that I’d love to Thunk some day. Until then I will say that this is the advanced programming techniques-centric book that I’ve wanted for years. There is a deep focus on layered program construction, DSLs, propagator networks, non-determinism, and degeneracy2, all of which are little covered in most computing texts. The schools of software architecture exposed in this book are informed by biological systems, symbolic AI, ambient behaviors, and the blood and sweat shed over the years developing functional programming systems. There’s a plethora of wisdom contained in these pages and a lot of thinking required to fruitfully mine that wisdom to inform the construction of systems, but I think this process will be more than worth the effort.
- Inside Macintosh – I was fortunate to come across a set of Inside Macintosh books locally and it’s a multi-year project of mine to work my way through them. The first volume in the series covers the Macintosh 128K, 512K, and XL models and their operating environments and I followed along with my 512K in tow. This book (and the series in general) are among the greatest technical references ever written. As a part of my day job (and outside of it) I’ve needed to leverage my technical writing skills for thousands of pages of material, and yet there’s always room for growth on my part. These books are inspirational.
- Electronic Calculators by H. Edward Roberts – For a time early in the year I started down the path of building my own calculator and so I grabbed this book to look at the thinking on the subject from a reference that dates back to the early days of portable models. The books is of course dated but it covers a large range of topics, from fabrication techniques of the time, to display options, ergonomics, and even function implementation techniques briefly.
Favorite non-technical books read
- Piranesi by Susanna Clarke – A triumph from Clarke (author of the masterful Jonathan Strange & Mr Norrell) that follows Piranesi, a character for the ages, who lives in a (seemingly) endless labyrinthine castle. The story follows his daily life, his interactions with others, and eventually his origins. This is structurally a very simple story but it turns out to be a cool, clear glass of water for my parched imagination.
- Mumbo Jumbo by Ishmael Reed – This one falls into the “grand conspiracy” sub-genre but it takes that somewhat tired genre into places I haven’t read before. The story follows PaPa LaBas as he attempts to discover the machinations of the Wallflower Order as the latter attempts to stamp out the “Jes Grew” virus that makes people dance and experience joy.
- The Fifth Child by Doris Lessing – A horror novel of the mundane — a family attempts to deal with a troubled fifth child. The book details the deteriorating happiness of a family dealing with a situation that no one around them can understand nor empathize with. The book was harrowing to read as a parent.
- Yotsuba&!, Vol. 1 by Kiyohiko Azuma – This is as wholesome a manga as one can find. The story follows Yotsuba, an adopted girl who gets into various odd situations and filters life through her beatific lens. Laugh out loud funny.
- In the Dust of This Planet by Eugene Thacker – This book is everything and came into my life at the right moment. It’s philosophy, media criticism, horror film commentary, found drama, metal studies, weird, eerie, and nihil all at once. A near perfect book for my sensibilities of the time.3
- Capitalist Realism: Is There No Alternative? by Mark Fisher – I came to discover Fisher very late in the game, indeed, after he had taken his own life. There is an amazing body of work to explore and while I’ve only dipped my toe so far, I did manage to read what is considered his seminal work. The book starts with a simple premise, originally attributed to Fredric Jameson and Slavoj Žižek — “it is easier to imagine an end to the world than an end to capitalism”. While a simple premise, Fisher spends a lot of time unpacking this phrase and tying it to our modern Western world passed through a neoliberal filter. Numerous more reads are needed for me to really “get” this book, but I was struck by the implied implications.
- The Fisherman by John Langan – This is a modern take on the weird fiction sub-genre very much in the vein of H.P. Lovecraft, M.R. James, Robert W. Chambers, and the like. Many words are spent to build tension and to world-build and are done so in a overly, sing-songy way. Very few books are written in the classic weird fiction style so as a fan of the genre this was a treasured find for me.
Number of books written or published
0
Number of programming languages designed
0.25
I’ve been working on a Forth variant that’s driven not by any particular need but by a morbid curiosity to see how deep that particular rabbit-hole goes. Specifically, I’d like to know what it takes to build a software suite from a Forth that includes such things as an internal database, an embedded language, a reasoning system, an editor, and a structured programming environment.4 Over the course of the year I’ve researched each of these sub-systems and partially enumerated the minimal-viable features needed in a Forth to implement them.
The chart is a fragment of that research and is currently only a gross enumeration of every feature needed. Another pass on this list needs to happen with an eye towards distilling features into their composite parts, in an attempt to identify a language kernel. As a side-effort I’ve started looking into how to implement a VM for a Forth-like language by I’ve only scratched the surface with the mainline interpreter. Lots and lot of research needed still.
While this research is happening, I’ve worked on a bit of bootstrapping code, of which there’s:
- data stack
- return stack
- kernel functions: kpush, kpop, kdsadj, kdsaddr, kivar, krvar, kdstack
- dictionary construction, search, and traversal
- initial words stack words:
DUP
,DROP
,OVER
,ROT
,SWAP
- initial command words:
BYE
,.S
And that’s what it looks like so far. I’ll have something that’s usable in 2022.
Number of books read
For 2022 I’ve toyed with the idea of sticking to certain themes on a month-by-month basis instead of the whim-based approach that I’ve taken so far in my life. Therefore, the themes that identified were as follows:
- Banuary
- banned books
- Faebruary
- fantasy
- Ides of March
- history
- Caperule
- games and absurdity
- Maystery
- mystery
- Carjune
- manga, comics, and graphic novels
- True-lie
- non-fiction and occult
- Thougust
- philosophy, the sciences, and computing
- Scitember
- scifi
- Shoctober
- horror, weird fiction, and tales of murder
- Noirvember
- noir
- Detember
- detective fiction and true crime
The problem with a list like this for me is that I don’t read like this. My whole life I’ve been a very impulsive reader and past attempts to stick to themes outside of an academic environment have died on the vine. Maybe someone else can make something of it however.
Favorite musicians / albums discovered
- Everywhere at the end of time by The Caretaker – This is an incredibly ambitious series of ambient works by a historically ambitious ambient artist. Simply put, the music attempts to capture the tone and feeling of someone suffering from degenerative memory loss. The work is overwhelming at times.
- Heresy by Lustmord – This is the kind of music that you might hear playing as the gates of Hell open.
- Wave Notation 2 – Still Way by Satoshi Ashikawa – An interesting mix of traditional Japanese music with electronic elements, boiled down to their bare essences.
- Hoodoo Man Blues by Junior Wells – What I don’t know about classic Blues could fill the Grand Canyon but it’s a musical vein that I’ve tried to tap over the years and have come away enriched by the efforts. This one by Junior Wells is no exception.
Favorite show about the hobby of metal detecting and about hobbying itself
Favorite films discovered
- Aguirre, The Wrath of God by Werner Herzog – Kinski’s acting is otherworldly. There are supplemental stories in Herzog’s My Best Fiend about Kinski that help to enhance the enjoyment of his work.
- Under the Skin by Jonathan Glazer – An alien lures men to their deaths in an inky black nether-region. This film has very little dialogue and it a slow-burn but I found it riveting.
- Sunset Boulevard by Billy Wilder – I’ve know my whole life that this was considered among the best films ever made but never got around to watching it. Let me me perfectly clear. This is a frigging bad-ass piece of filmatism! The level of depravity portrayed in this film is masterful and comes off in a realistic way. I could watch this 10,000 times more. The film is perfect — one for the personal Pantheon.
- Black Narcissus -by Michael Powell and Emeric Pressburger I’ve always wanted to live on a mountain. The few times that I’ve been on a mountain at significant heights were invigorating. There’s a madness in the mountains and that’s something that I’ve always wanted to experience for a sustained duration. Black Narcissus deals head on with that madness and it does so in a beautiful way. Certainly the film is born from the prejudices of its day and at times it shows. However, it does attempt to address those prejudices directly and does so thoughtfully. This film is a masterpiece — another one for the personal Patheon.
Favorite games discovered
- The Field of the Cloth of Gold – For those of you familiar with board games and their evolution, you may recognize a term “German-style Board” game. In the early 1990s the board game industry was in trouble. However, in Germany a trend grew and eventually spread around the world that helped to save the floundering hobby. The games popular in Germany at the time, or the “German School” tended to have a number of shared characteristics that helped them to gain a hold of the industry, including: clean and streamlined rules that were easy to teach, few special-exceptions and combinations, a shared game space, and non-combative but necessary player interaction. Games like Catan, Carcassonne, and Modern Art were the pinnacle of this style. However, over time this style fell from fashion and were superseded by more complex offerings. That said, occasionally a game hits the scene that hearkens back to the bygone days of the German School and The Field of the Cloth of Gold is one such game. The rules are simple, the game play tense, and the time investment short. This is another triumph from the amazing Amabel Holland.
- Babylonia – Speaking of the German School of board games, the master designer in that school is Reiner Knizia. His body of work is staggering and with Babylonia he’s managed to add to his oeuvre a game that’s deep and reminiscent of classics like Tigris & Euphrates and Samurai. I’ve only played a few games but this one is a keeper.
Favorite programming languages (or related) I hacked on/with on my own time
- Forth – There’s not a lot to say about Forth that hasn’t been written a million times before except that it twists my brain like no language before it. I’ve known about it for years and even took a stab at a small implementation in the past but it wasn’t until I started dabbling in SBCs that I started using it for more interesting purposes. I don’t know where this exploration is going but I’m having a blast.
Programming languages used for work-related projects
- Clojure – 2022 marks the 12th year5 as a full-time Clojure programmer and the 1st year as a full-time Clojure core developer.
- ClojureScript – Less-so now than when I was consulting full-time but I occasionally dig into explore the implications of changes to Clojure on CLJS.
- Datalog – The Datomic flavor of Datalog is the flavor of choice for database access, be it in-process or in the cloud.
- Bash – I managed to get do some work on the Clojure CLI so Bash was in play there. That said, I pondered Bash more than I wrote bash this year.
Programming languages (and related) that I hope to explore more deeply
- Forth – I’ll continue to tinker with my own impl as well as existing impls targeting SBCs.
- Joy – While a concatenative language like Forth, Joy plays out in a much more functional style. Much more exploration needed here.
- MMSForth – A version of Forth for desktop computers in the 80s that’s little known these days. There are many lessons to learn from this lost gem, especially in the approach to create a total programming environment with Forth interposed between the user and the bare metal.
- KAMAS – KAMAS was early outliner software that targeted the Kaypro II computer. It had an embedded Forth-like language that users could use to script the application. Little survives about this language and I’d like to remedy that somehow but even though there is an abandonware version for DOS, it doesn’t contain the full feature set of the Kaypro version and thus no embedded language. It seems that an actual Kaypro is needed and somehow the KAMAS discs obtained as well. The computer part is the easy step while the software has proven difficult to find.
Favorite papers discovered (and read)
Here are a few that I enjoyed in 2021.
- Object Oriented Extensions to Forth by Dick Pountain – Details implementation techniques to add object-oriented features to Forth. It should be noted that not all Forths are created equally and so what works on one may not work on another. This paper details how to add OO to a Forth-79 or Forth-83 compatible system.
- A Forth Implementation of Lisp by Tom Hand – Briefly describes the implementation of a LISP in Forth. There are scant details of the implementation and most is left to the reader’s imagination. Much more detail is found in Pountain’s book “Object Oriented Forth” where the kernel of a LISP-like subsystem is created on the way to an OO system.
- Stack Computers: the new wave by Philip J. Koopman, Jr. – Koopman’s classic book on stack-based architectures is a fun read and at the same time representative of a lost future.
- A History of Clojure by Rich Hickey – Rich details the origin story behind Clojure and a lot of the thinking that went into the language design.
Still haven’t read…
Pattern Recognition, I Ching, A Fire upon the Deep, Don Quixote, and a boat-load of sci-fi
Favorite technical conference attended
None — maybe next year.
Favorite code read
- Fairy-Stockfish – a version of the Stockfish engine built around facilitating variants. I’ve waited for something like this for years and can now promptly retire my janky Grande Chess implementation!
- T9 predictive text code – Remember T9 predictive texting? Do you miss it?
- Fitting a Forth in 512 bytes – A tiny Forth implementation that almost fits in a boot sector.
- SectorLISP Now Fits in One Sector – … and now it fits in a boot sector.
- …and now has GC in ~475 bytes – I’m fully onboard for the ride at this point!
- Functional transformation of immutable objects – A Java proposal in the works from Brian Goetz discussing functional transformations on Java objects and the support there for.
- 1968 Forth – A listing of one of the earliest versions of Forth by Chuck Moore.
- Ribbit – A Scheme implementation with the goal of fitting an entire language, run-time, and GC into 4K or less.
Life-changing technology “discovered”
- Internet Archive’s Books to Borrow – as an avid reader, searching for new sources for interesting books is a constant struggle. the Internet Archive’s 1-hour borrow service has been an amazing resource for old, obscure, and out-of-print finds.
State of plans from 2020
- Spend more time working on Clojure and ClojureScript – This was a smashing success as I joined the Clojure core team to work on the language and its ecosystem full-time. I’ve been fortunate enough to make an immediate impact and I hope to help the language move forward into the future.
- Dive deeper into microcontroller programming, especially with the Teensy – My SBC of choice right now is the Teensy computer. It has various modes of operation and is Arduino compatible. I’ve put a decent number of hours into it this year and am enthusiastic to learn more.
- Add another entry to my personal programming languages zoo – My Forth is coming along but it wasn’t completed in 2021.
- Read more philosophy and mathematics – This was hit or miss, though I did explore a branch (nihilism) that I had previously ignored.
- Get more involved with the local Old School MtG scene – Covid continues to complicate this plan.
- Return to civilization. – ditto
Plans for 2022
- Help get 1-2 Clojure releases out the door – One is in the works for early 2022 and the preliminary plans for another are forming as you read this.
- Read Finnegans Wake – I’m a couple of chapters in and have hit a wall. This one will take at least all of 2022 to finish.
- Stay on the Forth way for hobby endeavors – I see no reason why this couldn’t happen.
- Build a Lisperati1000 – The Lisperati1000 is Conrad Barski‘s open-sourced mobile terminal-centric Lisp-hacking machine. I’ve assembled all of the component parts and it’s time to put them all together.
- Continue making progress on my calculator project – I also have the parts for a calculator based around the ATmega328P processor. While learning how to build a key matrix will be enlightening, I’m really looking forward to writing the calculator software. Certainly using an ATMega328P as the core is overkill for calculator programming6 but I’d like to explore the lost-world of Compulators and my electronics skill are nowhere near up to snuff for such an exploration.7
2021 Tech Radar
- try: Nexys 3 FPGA board
- adopt: Babashka
- assess: odoyle-rules
- hold: Read-Eval-Print-λove
- stop: “Modern” C++
People who inspired me in 2021 (in no particular order)
Yuki, Keita, Shota, Craig Andera, Carin Meier, Justin Gehtland, Rich Hickey, Jenn Schiffer, Nick Bentley, Paula Gearon, Zeeshan Lakhani, Brian Goetz, David Nolen, Jeb Beich, Paul Greenhill, Kristin Looney, Andy Looney, Kurt Christensen, Samm Deighan, David Chelimsky, Chas Emerick, Stacey Abrams, Paul deGrandis, Nada Amin, Michiel Borkent, Alvaro Videla, Slava Pestov, Yoko Harada, Mike Fikes, Dan De Aguiar, Christian Romney, Russ Olsen, Alex Miller, Adam Friedman, Tracie Harris, Alan Kay, Alan Watts, Elizabeth Warren, Warren Ellis, Naoko Higashide, Zach Tellman, Nate Prawdzik, JF Martel, Phil Ford, Nate Hayden, Sean Ross, Tim Good, Chris Redinger, Jordan Miller, Tim Ewald, Stu Halloway, Michael Berstein, Rafael Ferreira, Robert Randolph, Joe Lane, Pedro Matiello, Jarrod Taylor, Jaret Binford, John Cooper, Conrad Barski, Amabel Holland.
Onward to 2022!
:F
-
I didn’t finish however — PRs welcomed. ↩
-
When I was in distributed simulation a million years ago I spent a lot of time building a framework for degeneracy that allowed simple processors to provide a temporary calculation while more complex models churned out an eventual higher fidelity answer. Interestingly the framework allowed simple models to be developed in and run from a browser which was pretty new in that space. I wonder if anything ever came of that work… ↩
-
I talked a little about these explorations on Craig Andera’s new podcast Get Smarter and Make Stuff. Craig is a friend and so I’m surely biased but it’s one of my favorite podcasts going right now. ↩
-
The desire to dive down the Forth rabbit hole was driven by my discovery of both MMSForth and the KAMAS outlining software that contained an embedded Forth-like programming language. ↩
-
This is strictly my work-life time. My total use of Clojure has been longer. ↩
-
An ATMega328P is very far away from the early calculators built around Hitachi MOS adders (pdf), JMOS chipsets, and Philco shift registers but I would be foolish not to use what’s available to me — even if it is cheating… so it goes. ↩
-
A shining example of a “Compulator” is the HP 9100A which was loved by Woz and possibly the first personal computer. You can see it in action on YT. ↩
8 Comments, Comment or Ping
Craig Andera
Thanks for the mention. This post is amazing! I frequently feel a sort of fleeting despair that the list of things I want to learn and do is several lifetimes long – you seem to have gotten through a few hundred years’ worth this year alone. Very cool to hear about it.
Dec 27th, 2021
fogus
@craigandera
I know exactly what you mean about “several lifetimes” as the more I look into the more I realize that I know nothing. As I dig deeper I realize that I have to pop yet another lifetime onto the stack just to accommodate the things that I want to learn about.
Dec 27th, 2021
Brian
Nice post, thanks! Forth… I actually was paid money to program in FORTH decades ago, on HP technical computers. I used it to control thermochemistry machines and analyze the data. It was a lot of fun. I was not knowledgable about computers then, but Forth seemed to come pretty naturally to me. Maybe because of my lack of experience with other languages (Mostly basic and FORTRAN at that time). Fun times, back then!
Dec 27th, 2021
amrox
Can you elaborate on the “Stop: Modern C++” bit?
Dec 27th, 2021
Zach from Hackensack
I really enjoyed the Fisherman as well, although it delved a bit into a Stephen King direction with the change of tense in the middle part that was set in the 20s.
Dec 27th, 2021
fogus
@amrox I used to do a lot of C++ early in my career — pre-Boost days. I recently explored the post-Boost landscape to see if there was something worth pursuing (for me) and decided that I wasn’t satisfied with that as an option.
Dec 27th, 2021
Fox
Grest list and couldn’t come at a better time for me! Loved Piranesi as well so I know we are on the same wavelength.
Dec 27th, 2021
Kevin Green
Years ago, Byte books had one on building Forth-like languages. Threaded Interpretive Languages by R. G. Loeliger, 1981
Last time I checked a major online book seller, it was rather pricey. ISBN 0-07-038360-X
Jan 6th, 2022
Reply to “The best things and stuff of 2021”