At the very start of the year I thought I’d do something little different and begin working remotely. I moved from SF out to Alabama, with intentions of teaching a programming class there, and making a whole new set of friends. I had never lived in the south before, and California was getting slightly old, so it could have been a great adventure. Needless to say, the class never happened. I did discover what it’s like to be in quarantine isolation in a completely new city for months on end.
Unfortunately this means I did not fulfill all my goals for this year, since one of them was a fairly intense in-person social goal. However, although I don’t have official numbers for every year, I’m pretty sure I smashed my old record for video games beaten in a year. You take what you can get.
I’ve also kept track of media I’ve interacted with over the course of the year. I’m not convinced it’s the best way to sum up a year, but it’s easy enough to keep track of.
I definitely didn’t write as much as I did last year, but I didn’t intend to, so that’s okay. I still think that the more-technical material is usually my best work. When I’m just riffing on some abstract mental model of how things might intuitively work, I tend to have worse arguments, and probably write less clearly about them. Those kinds of ideas can be fun to write about, though.
The bit of writing I’m probably most proud of is Esqueleto Select Syntax, because some people told me directly how much it helped them understand more clearly, and it’s a really good feeling to hear that kind of thing. I also thought Journeying Into Harry Styles’ Solo Discography was fun to write, and although it happened way back in January, Deconstructing Hadamard Gates demonstrates some fun quantum computing ideas, with simple math, which was fun to explain.
The year started with rrule, a datetime recurrence rule parser and formatter. It was my first-ever package on Hackage, and it just hit 200 total downloads.
Over the summer I built a tiny, statically typed, non-strict, purely functional programming language, to better understand how such languages work. I also worked on a tiny proof system for classical propositional logic, which lets you “run” logical statements as code to see if they can be proven.
In the fall, I did some machine learning stuff, including a neural network using LTSMs to solve the XOR problem, a project that does character recognition on the chars74k dataset, and an implementation of the Vanilla Policy Gradient deep learning algorithm.
Finally, in the last few weeks I put together a tiny proof-of-concept database-backed API with Haskell, Servant, and Persistent, as well as Haskell bindings for PyAutoGUI.
As far as contributing to other open source projects goes, I added support for big query tuples to persistent, as well as doing a small MonadLogger vs. MonadLoggerIO FIXME. I also made some typo fixes to tensorflow, esqueleto, Fundamentals of Piano Practice, and Theorem Proving in Lean. I expect to be doing some work on haskell-cpython going into 2021.
I’ve noticed a bit of a pattern, where on many projects I’ll write just enough code to be worth a blog post, and then stop. I didn’t do any really extensive side projects this year; I’m curious whether that will change next year. I think I’m generally interested in increased programming productivity/output, but not super sure how best to get there. Maybe I should spend some more time thinking about possible extended projects I’d be happy to work on across multiple weeks.
I made my first dollar in the music industry this year, from streams of songs I made. Definitely not enough to go pro, but that was cool to see.
I also started taking piano lessons. It’s been interesting to have that specific kind of structured learning for some skill; I haven’t had a teacher to work with on anything in a long time. In a few months, I’ve finished working through one classical book and learned a few jazzy pieces (especially jazzy christmas tunes). I’m looking forward to making huge technical advancements next year.
I don’t think I’ve found a more consistent activity for getting into the “flow state” than playing piano. Programming sometimes gets me into a deeper focus, but piano gets me to focus essentially every time.
My favorite album of the year probably came way back in January, with Spencer Brown’s Stream of Consciousness. I noticed I started listening to music somewhat less often this year. Often I used to listen at work, to drown out office noise, but when you work remotely you have more control over noise.
This fall I started creating some visual art, on a whim. It started mainly with surreal photoshops, then moved into a bit of drawing and some odd 3D stuff. It’s cool to have another angle of attack for self-expression, even when what I’m expressing is almost always just “look at this weird thing I cobbled together”.
I didn’t know where else to put this, but I guess it fits best here. This year I had a chance to give a five-minute workshop covering five topics in one minute each. The lesson was about how to construct an infinite list of all the fibonacci numbers in haskell, and introductory photoshop, and an explanation of the variational principle of quantum mechanics, and how to play a basic arrangement of “Teardrop” by Massive Attack on the piano, and finding the sweet spot on a tennis racket, by feel. That was super exciting, and very memorable. While giving the talk, there wasn’t any time to worry about whether things were going well as I bounced from the haskell stuff in a terminal to physics on a whiteboard to a demo at the piano. Probably my highest words per minute of any five minute period throughout the whole year. I felt like I learned something important by doing that, but can’t quite express what.
Although I all but completely dropped tennis, this year I started weightlifting in earnest. It was interesting to do something so quantitative, but so physically taxing. I was pretty badly calibrated for setting weight targets, as I finished my goals for the year by August, but that means I got to completely blow my original goals away.
I hope to get back to tennis as the weather warms up again. I also want to do more hiking. I tend to walk a lot more when I travel, and I didn’t travel much this year.
I read not one, but a whopping TWO fiction books this year (Dune and A Confederacy of Dunces). Maybe I’ll read three (or even more?) next year.
I also got better at “reading badly”—getting as much understanding as I could while going through something, but not worrying about completely getting everything. If I had insisted on legitimate, full understanding, I’d still be slogging through Algebra: Chapter 0 to this day.
Picking a book of the year is pretty hard. I think maybe I’d go with Reasons and Persons, because while it’s a smidge out of my comfort zone, I liked following along with the arguments. The whole slew of “morality” books came as recommendations from a friend. It’s atypical for me to disagree with books as much as I did this year (since normally I’m just learning some factual material directly), but I did find a lot of substance to agree with as well.
I’d give runner-up awards to Death and The Road to Reality.
|Optics by Example: Functional Lenses in Haskell||Chris Penner|
|Quantum Computing Since Democritus||Scott Aaronson|
|The Little Typer||Friedman, Christiansen|
|Human Compatible||Stuart Russell|
|Deep Learning||Goodfellow, Bengio, Courville|
|Consciousness Explained||Daniel Dennett|
|Cambridge Handbook of Artificial Intelligence||Frankish, Ramsey|
|Ending Aging||Aubrey de Grey|
|Algebra: Chapter 0||Paolo Aluffi|
|Atlas of Human Anatomy||Frank Netter|
|The Art of PostgreSQL||Dimitri Fontaine|
|Implementing Functional Languages: A Tutorial||Simon Peyton Jones|
|The Life you can Save||Peter Singer|
|Good and Real||Gary Drescher|
|Living High and Letting Die||Peter Unger|
|The Precipice||Toby Ord|
|Fundamentals of Piano Practice||Chaun Chang|
|The Perfect Wrong Note||William Westney|
|Reasons and Persons||Derek Parfit|
|Algebra-Driven Design||Sandy Maguire|
|Theorem Proving in Lean||Avigad, de Moura, Kong|
|Designing Design||Kenya Hara|
|Strangers Drowning||Larissa MacFarquhar|
|Abstractions in Context:
Case Studies in Haskell Library Design
|The Road to Reality||Roger Penrose|
|Probability Theory||E. T. Jaynes|
|Topology||James R. Munkres|
|Homotopy Type Theory||The Univalent Foundations Program|
|Proofs from The Book||Aigner, Ziegler|
|A Confederacy of Dunces||John Kennedy Toole|
This is possibly the most impressive, or at least the most extensive, of my 2020 lists.
My favorite game that came out this year is probably Hades, with Ghost of Tsushima not far behind. I also really liked playing Sekiro, Hollow Knight, Bloodborne, Earthbound, Katamari Damacy, and many more from this list.
However, even among all these there weren’t really any great puzzle games I know of released this year.
|Thinking with Time Machine||PC|
|Return of the Obra Dinn||PC|
|A Short Hike||PC|
|Super Mario Galaxy 2||Wii|
|Thrillville: Off the Rails||PC|
|Animal Crossing: New Horizons||Switch|
|Ni No Kuni 2||PC|
|Ace Combat 7 Skies Unknown||PC|
|Star Wars Jedi: Fallen Order||PC|
|Ultimate Chicken Horse||PC|
|Jedi: Fallen Order||PC|
|Persona 4 Golden||PC|
|Resident Evil 2||PC|
|Ghost of Tsushima||PS4|
|Super Mario Galaxy||Switch|
|Super Mario Sunshine||Switch|
|My Friend Pedro||PC|
|Risk of Rain 2||PC|
|What the Golf||PC|
|Ori and the Will of the Wisps||PC|
|SEGA Bass Fishing||PC|
|Katamari Damacy Reroll||PC|
|The Gardens Between||PC|
|Parappa the Rapper||PS4|
|Need for Speed||PS4|
|The Last of Us 2||PS4|