Best of 2024
Posted:
I'm always surprised when distilling a year into a single post just how many things take place over those 365 days. When I'm in the thick of it I'm rarely thinking about the details. Events and projects come and go, rarely do I take a step back and properly register their impact or my feelings. So forgive me a moment of catharsis.
Game development
I made a game! It's a little game, but I'm proud of it. It received second place in a game jam and I think it's pretty good (only 25-ish entries in the jam so reign in the enthusiasm). At the very least, it contains my current best attempt at level design. Play it for free: Kat's Ghost.
Unsurprisingly the game is a block-pushing puzzle game similar to Sokoban. I say unsurprisingly because the Sokoban-like has been one of my favorite subgenres of puzzle games ever since Stephen's Sausage Roll (which I haven't even finished because it's devilishly hard). The Sokoban-like is the platonic ideal of a puzzle game: all logic, simple controls, simple constraints.
I also got into crossword construction this year, releasing two midi-sized American-style crosswords. Both of which are Dungeons and Dragons themed:
I tried (and failed) to get the first of those puzzles accepted into Puzzmo during their open submission period. Here's hoping my next submission does better.
2024 was a big year for puzzles. The availability of free online puzzle games like Minute Cryptic, Blockables, and the mainstays of Puzzmo or NYT have made puzzle-solving a daily exercise. We're living in the golden ages of snackable puzzle games. My morning routine has suffered.
This year also marks the release of Braid Anniversary Edition, released 16 years after the original. It includes the most in-depth commentary I've ever seen for a video game, talking game design, programming, art, and music. It offers a ton of wisdom and has inspired me to create. It's also just a phenomenal game.
Start (and end) Emacs
Late 2023 and early 2024 I spent quite a bit of time on Crafted Emacs with the goal of helping folks get started with Emacs. I've always felt that most of the starter kits pack too much extra stuff into the base Emacs installation, making for a very complicated or cumbersome first experience. Ditto for distributions like DOOM or Spacemacs that effectively hijack the built-in Emacs configuration tools in favor of custom ones (e.g. layers). Crafted Emacs felt like a nice, intermediate step.
That said, there was still something about Crafted Emacs that prevented me from recommending it to folks that were interested in switching to Emacs. For one, the README is that particular breed of verbosity that old-school Emacs hackers are so fond of. Heavy on the philosophy, light on the examples. For two, the module system is just inherently complicated. I really wanted to push new Emacs users towards a single-file configuration, just like how I started.
And so I created Start Emacs. It's basically just a "better defaults" setup for Emacs with some packages that align the Emacs and VSCode experience. I'm particularly happy with the extension guide guide, which moves a lot of the optional configuration into a handful of recipes.
During the making of Start Emacs I moved back to Windows as my primary dev
machine and was absolutely hating the experience. Emacs mostly worked, but
mainstays like Magit were horribly slow and many packages assumed access to
standard Linux utilities like diff
or grep
. I spent so many hours messing
around with different Windows development kits (MSYS2,
w64devkit, etc.) but couldn't find
something I was happy with. Finally I gave up and
swapped over to WSL.
This period of Windows hacking had me switching back and forth a few different text editors while I troubleshooted Emacs, finally motivating me to try out Helix. The vim-ish keybindings definitely threw me for a loop, sitting in that awkward area of close enough to vim that it feels familiar, yet far enough away that I'm constantly invoking the wrong commands. But after I garnered enough experience with it I grew to like it so much that I started questioning my motivations. Why am I spending so much time setting up Emacs when I have a capable editor already working?
I switched and haven't looked back.
I've tried writing a blog post about my new setup but I can't motivate myself because it's so banal. I use Helix for editing text, tmux to manage terminal windows (which works excellent in the Windows Terminal, surprisingly), and have replaced all of my usual Emacs power features with CLI tools like ripgrep or Awk. I'm probably not as productive since I still lack familiarity with my tools, but I've really been enjoying leveraging a console workflow instead of relying on a GUI editor.
Am I done with Emacs? Probably. Do I still think Emacs is a great tool? Absolutely! Don't let my experience dissuade you from trying it out.
Ruby on Rails
This year felt like a great one for Ruby on Rails. The release of Rails 8 brings a bunch of awesome improvements, including built-in authentication, full-stack SQLite, and zero-build frontend development. Folks are talking about Rails again and they're doing so with a ton of enthusiasm.
Coincidentally all of this Rails enthusiasm lines up with a job change for myself, taking on a new role that does a lot more traditional Rails development. I'm thankful that I have the opportunity to work with Ruby everyday.
That said, I've never worked at a Rails shop that actually used Rails for the frontend. Every single app that I've worked on professionally with Rails has been an Rails JSON API paired with a SPA frontend, usually React. With SSR making a big comeback this year (thanks to Hotwire, HTMX, among others) I'm eager to dive into the new suite of Rails tools.
Books
This year continues a reading trend from the past few years: an exploration into Japanese literature through Haruki Murakami. Since then I've expanded to another Japanese-borne author, Kazuo Ishiguro, and am dabbling in the works of Yukio Mishima. But Murakami still reigns as my most-read author for the third year in a row.
He's especially notable this year thanks to the release of The City and Its Uncertain Walls in November. Let's just say the Murakami excitement was high.
Here are some of my reading highlights for this year:
-
The City and Its Uncertain Walls by Haruki Murakami. I just finished this one last week so it's fresh in my memory. I was surprised at how much of this book rehashes content from Hard-boiled Wonderland, with the exploration of consciousness as a town surrounded by a wall. Despite that, I enjoyed the deeper exploration into the shadow-self. "My real self isn't here. It's somewhere else. The me that's here looks like me, but is nothing more than a shadow projected onto the ground and walls..." Quite a few aspects of this novel parallel 1Q84, particularly the protagonist who searches for a long-lost love that rules his heart. The City and Its Uncertain Walls is an exploration of the self and how it relates to the world around us.
-
Anathem by Neal Stephenson. I've seen the name Neal Stephenson on many a massive tome at my local bookstore but haven't read any until this year. Now I'm hooked. Anathem is a slow novel in every category, but its exploration of philosophical topics is thorough and endlessly interesting for a layperson like me. Underpinning the novel is an exploration of realism and nominalism, depicted through manufactured names created for the world of Anathem. Just don't come to Anathem looking for plot.
-
1Q84 by Haruki Murakami. It's long, ponderous, and contains one too many Proust references, but aspects of the work feel cohesive in a way that Murakami's other novels don't. I'm also a sucker for a story about a writer. I am not prepared for a literary analysis of 1Q84 though, I was mostly sailing on vibes.
-
Never Let Me Go by Kazuo Ishiguro. I was introduced to Ishiguro from his most latest novel, Klara and the Sun, which I found to be an enjoyable exploration of empathy, if a bit superficial on the Sci-Fi implications of an Android protagonist. Never Let Me Go has similar themes but delivers on them more successfully. But man, is this book a bummer. Where Klara and the Sun is light and forgiving, Never Let Me Go is oppressive and unyielding.
I also wanted to shout-out The Awk Programming Language which had a second edition release late last year that I finished in February. It's unexpectedly one of the best programming books that I've read recently for a language that I had no prior experience with. I bought the book expecting perl-ish one-liners for simple problems, but stayed for its profound analysis of DSLs and Awk as a toolkit for building them. Incredible stuff. These days I have too much enjoyment searching for problems that I can solve using little Awk scripts.
Movies
Over the last couple years I've met with a group of friends every weekend to discuss a movie that one of us picked. A kind of movie-book-club.
The result has been great. I'm thinking more critically about the media I consume and my relationship to it. I'm exposed to other perspectives that reflect experience I would've never gathered myself. I'm thankful to have the opportunity to meet and talk with others about this kind of stuff.
Notable films that I watched this year:
-
Perfect Days. I would describe this film as a personification of Taoism. It follows the daily ritual of a janitor for The Tokyo Toilet, an artsy urban development project distilled into fancy toilets. The movie is slow and contemplative and well worth the watch.
-
Vertigo. Lately I've been on a little Hitchcock kick, Vertigo being the first of the bunch that I haven't already seen. Unsurprisingly, it's great. It's a bit slow, but the twists are worth it.
-
Evil Does Not Exist. 2021's Drive My Car is one of my favorite films, period. So I went into Evil Does Not Exist with high expectations. Unfortunately this one did not do much for me. There's some allegorical storytelling underpinning this movie, filling in the lines between some light plot elements and nature cinematography. And while that cinematography is gorgeous, I couldn't shake a sense of boredom at the many extended pauses between beats. Normally contemplative movies are a hit for me, but this movie didn't spark any thoughts with its storytelling that were worthy of the thoughtful moments.
-
Autumn Sonata. Speaking of thoughtful moments. Look, Ingmar Bergman makes excellent movies. Autumn Sonata is no exception. There's a scene in this movie that is a slow pan onto the face of Liv Ullmann, broadcasting an entire life's worth of emotions into a mere thirty seconds.
Games
I was so starved for puzzles after beating Braid that I followed it up by playing through all of The Talos Principle and about a forth of the sequel. But neither of those games came out this year, so here's a short list of a few others that sparked my interest.
-
Braid: Anniversary Edition. Already mentioned above. Do yourself a favor and pick it up, both for the game and the commentary.
-
The Rookery. You have to be some kind of Chess sicko to get a kick out of this game, but if you are, it will suck up a ton of your time. It's effectively Chess: the roguelike, but executed incredibly well. It lacks the presentational details of something like Balatro (another great game this year) but still offers a tight gameplay loop.
-
UFO 50. An incredible achievement that is an easy recommendation for anyone remotely interested in game design. There are so many ideas in this game (well, at least 50) that twist well-known game mechanics in compelling ways. When I first heard about this game years ago I thought it was going to be a Warioware-like collection of minigames. Imagine my surprise when almost every one of the 50 games is about the length of an original NES title. The fact that this game was ever finished is an achievement. That it includes so many great games is nothing short of amazing.
-
Animal Well. I have played many metroidvanias over the years but have finished almost none of them. Animal Well is an exception. It wasn't my favorite game to play in 2024 but it was certainly my favorite one to talk about. There was a general sense of excitement around this title that was infectious, helped along by some devilish secrets.
Looking ahead
Not mentioned in this post are a couple months that I spent working on a Chess engine, or other numerous side projects that have been tabled, resumed, and tabled again. I'm thinking a lot about my reading stack, for lack of a better term. I've been noodling on a few ideas for building my own Goodreads alternative that doesn't have any of the AI cruft from Storygraph, focused purely on reading and notetaking. We'll see where it goes.
I'm also attempting to break into the world of longform writing, in the way of nonfiction. In other words, I'm writing a book. Well, several. Most of my attempts have suffered the same fate as the average side project, with myself working furiously until interest wanes, then promptly abandoning the idea.
Eventually one of my many book ideas will make its way into a finished product, and when that happens I hope those of you still reading this post will enjoy the result.