Great things and people that I discovered, learned, read, met, etc. in 2014. No particular ordering is implied. Not everything is new.
Great blog posts read
What happens if you write a TCP stack in Python? Julia Evans answers this question with “something awesome.” I couldn’t agree more.
The Bootstrapped Compiler and the Damage Done Laurence Tratt writes my favorite blog.
How Steve Wozniak Wrote BASIC for the Original Apple From Scratch The title says enough.
The Legend Of Linda Perhacs, ‘A Most Unlikely Rock Star’ Linda Perhacs is a little-known Folk singer who almost disappeared into eternal obscurity. That is, until her music was rediscovered decades after releasing her only album.
Life of a HTTP request, as seen by my toy web server I’ve always thought that programming toys (e.g. compilers, interpreters, servers, etc.) were, like the fruit fly, useful ways to gain a deeper understanding of larger systems within the confines of a constrained tableau.
The problematic culture of “Worse is Better” Well someone had to say it, and I’m glad that it was Paul Chiusano who did.
How I wrote Neuromancer A lovely little vignette by William Gibson about how Neuromancer came to be. The spirit of the article really resonates with my own experience and motivations for helping to write The Joy of Clojure.
ALEC’s a Language for Expressing Creativity – Grant Rettke is building a system on top of Emacs called Alec that is not only a useful tool, but a tool that has informed his very way of thinking. His ongoing journey is told via org-mode-babel files on Github and it’s a joy to read.
Frank Sinatra has a cold a great story from a bygone age about a force of nature.
A Generation Lost in the Bazaar A critical essay about the bazaar model of software development.
The second operating system hiding in every mobile phone Little-known considerations about firmware insecurities in your phone.
Forth Methodology Applied to Programming The title say enough.
What is Gradual Typing from the source
Ramblings on languages and architectures Mike Pall’s mind is open.
Most viewed blog posts by me (20K+ viewers)
I’ve been scaling back on blogging this past year and have tried something different instead – Read-Eval-Print-λove. That said, there were a couple of high-traffic posts on my blog.
10 Technical Papers Every Programmer Should Read (At Least Twice) — My most popular post of 2011 was also my most popular of 2012 and also of 2013 and also of 2014 — go figure.
Timothy Hart, Rest in Peace — Timothy Hart was the father of LISP macros.
Favorite technical books discovered (and read)
Creating Interactive Fiction with Inform7 — Inform7 is a perspective-altering programming language. It’s nearly the pinnacle of languages that are informed (hah) by the types of problems that they’re attempting to solve. Beautiful.
Object Oriented Forth — Honestly, I can’t think of better tech literature available than those written about Forth.
Ruby Under a Microscope — I’ll honestly say that I went into this book expecting the worst. However, I was pleasantly surprised when I was done that the book is a fairly nice dive into the Ruby internals. I’m frankly shocked that a book like this was even published, but once again the long tail reigns supreme; much to our benefit.
Programmer avec Scheme — I read this in a marathon 3-days during Strange Loop 2014 thanks to Nada Amin, who hauled it all the way across the planet for me to read. I’d really love to get another chance to go through it and digest it, but I did like it very much on my first pass. My favorite part was that while the prose was French, the code too was “very French” also!
Favorite non-technical books read
Ulysses by James Joyce — I finally got around to reading this and wow am I glad that I did. It took me a month to read and tended to dominate my other parallel books at the time, but it was worth the effort. Leopold Bloom is now one of my favorite anti-heroes from fiction.
How Buildings Learn: What Happens After They’re Built — It was this book that made me (finally) realize that some of the best programming books are not about programming at all. As a result I’ve cut back drastically on my “language-specific” programming books1 and have sought programming-relevant books instead.
Feminism Is for Everybody: Passionate Politics — The most lucid outline of feminism that I’ve found so far.
Anarchy and Alchemy: The Films of Alejandro Jodorowsky — I’ve always been an admirer of Jodorowsky’s films and graphic novels, so when I saw the cover I knew that I had to read this. I was not disappointed. The book is filled with spoilers, so beware.
Blindness — Another book that could have been easily subtitled ‘Humans are terrible.’
How to Travel with a Salmon and Other Essays — I couldn’t put this book down. Eco’s wit is impeccable and had me giggling at 2am.
Number of books read
Number of books published
Number of books written
Language zoo additions
Favorite musicians discovered
Interesting games discovered
- Catchup — The link conveys my thoughts on this beautiful game. Huge thanks to Zeeshan for all the games this year.
- Koi-Koi — A game that when you’re done you’ve created something beautiful.
- Splendor — This is considered an “engine-building” game that would appeal to many a programmer IMO.
- Entropy — Quite possibly my favorite game discovered this year even though I only just found it. Pure beauty in conception and execution. This is one of the few games that I wish I had thought of first.
- Alfred’s Wyke — A strange little game that baffles me how anyone could have even thought of it.
- Undercut — A sinister auction game turned on its head.
Favorite TV series about zombies
The Walking Dead
Favorite programming languages (or related) I’ve hacked
Programming languages used for projects both professional and not this year
Programming languages that I’m dying to explore next year
- Black — After seeing Nada Amin’s keynote I was compelled to run out and find out more about Black.
- Idris — Idris is
probably the most exciting language that I’ve seen since I found Clojure.
- LFE — Lisp. Flavored. Erlang. Need I say more?
- Squeak and/or Pharo— It’s time.
- Inform7 — A lovely language meant for creating interactive fiction, with a syntax that’s pseudo-natural.
- Joy — I’m in constant fear that this language will be forgotten.
Number of papers read
≈ 12 (again, a very slow year for me in the paper department)
Favorite papers discovered (and read)
Automatic Generation and Evaluation of Recombination Games (ZIP) by Cameron Browne
EULER: a Generalization of ALGOL and its Formal Definition (PDF) by Niklaus Wirth and Helmut Weber
Duplication and Partial Evaluation – For a Better Understanding of Reflective Languages by Asai, Matsuoka, and Yonezawa (and edited by Daniel Friedman!)
Control Structures for Programming Languages (PDF) by David Fisher
Dataless Programming (PDF) by Robert Balzer
Monte-Carlo Tree Search for Multi-Player Games (PDF) by Joseph Antonius Maria Nijssen
GEDANKEN: A Simple Typeless Language Which Permits Functional Data Structures and Coroutines (PDF) by John Reynolds
Still haven’t read…
Snow Crash, Spook Country, A Fire upon the Deep, Norwegian Wood, The Contortionists Handbook and a boat-load of scifi
Favorite conference attended
Favorite code read
- Om (Clojure) — A manifestation of the ideas in the paper “Worlds: Controlling the Scope of Side Effects“ 3
- Z3 (Verilog) — Learning about Inform7 has gotten me interested in exploring the Z-Machine more deeply. It was good timing when I discovered this project to create a hardware impl of the Z3 machine. I don’t fully understand it, but it’s gotten me motivated to try.
- Dominion (Haskell) — For some reason my favorite Haskell programs to study tend to be game implementations. I suppose they have the right mix of logic, complexity, data structure considerations, and I/O.
- Black (Scheme) — I recommend reading the code side-by-side with the paper (listed above).
- type-systems (OCaml) — The fruit flies of type system theory. A nice place to start learning the subject IMO.
Life changing technology discovered
State of plans from 2013
- Publish The Joy of Clojure, 2E
- Create a card game: Natto
- Create a dice game: Ozymandias
- Create a board game: Niwa, Insurrection
- Create a Looney Pyramids game: Logistics
- Blog about Zeder: major fail, though a Zeder talk is available
- Patagonia: major fail, though I talk about it in the Zeder talk linked previously
- No talks without code to show: partial success. I did agree to give the RacketCon keynote without code.
Plans for 2015
- Publish (at least) one issue of Read-Eval-Print-λove
- UCT in Clojure
- Treaps in Clojure
- Release secret project Phenomena
- Publish a card game of my own design
- Implement Lines of Action in an interesting language
- Contribute to other peoples’ OSS projects more often.
Onward to 2015!
And I’ve made it a personal goal to limit the “language-specific” books to those written before 1995. ↩
This is the first year in my career that I wrote more Clojure code than the sum of code in all other languages used. ↩
I would love to see great ideas in papers more widely implemented. While Om is a truly practical system, I think that said implementations need not be. ↩