The 11th

Today is September 11th. I remember waking up 19 years ago, coming into the living room, and my dad getting down on one knee so he was closer to my level. He told me that earlier that morning two airplanes had crashed into some tall buildings in New York City. I didn’t know what that meant at the time, but I soon found out.

Quarantine in the 1600s

It’s been a long six months that we’ve been under quarantine and other disease-limiting measures. It hasn’t been easy, but thanks to something I saw at Königsstein Fortress I’m not complaining. Here’s why:

Book Review: Technopoly

In Technopoly: The Surrender of Culture to Technology, Neil Postman argues that our infatuation with technology has insidiously eroded our culture. We gain much through technology, but it comes at a price; all too often we are blind to that price. This book seeks to call attention to the costs of a technology-focused society. I felt this poignantly because I, as a technology worker, know what that infatuation feels like.

Thoughts on Goals in Programming Language Design

I’ve been thinking about programming languages a lot recently. A question I asked myself was: why do we work on, refine, and create new programming languages? I thought of several reasons, but they seemed to boil down into two broader reasons: Better abstractions and more automation: some languages automate and ease some tedious tasks like memory management, concurrency, or type annotations. Almost all languages give you some ways of creating abstractions that let you reason with concepts in your problem domain, but different languages do this in different ways.

Transitioning to GUI'd Emacs on macOS

I went on an adventure today. I left behind the stable comforts of the terminal and compiled bleeding-edge Emacs that uses a native window system. This is a big deal for me. As long as I can remember, I’ve used Emacs from within a terminal. I’ve decided to give the GUI’d Emacs a whirl. My Journey I’m running macOS Catalina (10.15.5). Originally I tried using the pre-built packages via brew (brew cask install emacs) and those available at Emacs for Mac OS X.

Programming Languages and Typography

An analogy occurred to me this evening as I was thinking about programming language design: Choosing good keywords and function names is like picking a good font; the ideas conveyed may be the same, but a change can drastically impact legibility and enjoyment of use. PHP does a spectacular job of providing a bad example. It’s like the Comic Sans of programming languages. Now there are many reasons why PHP is not a good language—I’d like to investigate this particular aspect of its design here briefly.

Book Review: Amusing Ourselves to Death

Overview The primary thrust of this book is that television has degraded our mode of public discourse. Our news, politics, education, and even religion are delivered to us primarily through television, where they were once delivered via the written word. This transformation of medium is not irrelevant: just as poetry doesn’t survive fully intact when translated from one language to another, likewise ideas do not survive translation of medium. This book was written in 1986.


Masks have become a hot issue. Here’s my 2¢. Summary I think everyone should wear a mask, unless they have a compelling medical reason not to. Look at it this way: a mask will either help you and those around you, or it will do no harm—beyond a little social awkwardness. If we look at the trade-offs in a game-theory-style matrix, we get: | | Masks Help | Masks don’t help | |——————-+————+——————| | Wear a mask | +100 | 0 | | Don’t wear a mask | -100 | 0 |

Computers and Abstractions

Computers are funny things. At the lowest level they’re just a pile of ones and zeros that we assign meaning to. It’s something you can easily take for granted, but there’s a disconnect with how we talk about how things operate at the hardware level and then again at the software level. Since writing a compiler, I’ve been able to bridge that gap in part. The fundamental idea is that we represent some meaning in a concrete, though still high-level form.

Starting Fresh

I’ve been building a compiler for a small lambda calculus that compiles to x86. It’s pretty broken, and I decided to start from scratch. I checked out a new branch in Git, and then deleted the entirety of my compiler before I had a chance to do anything else. It hurt. But it was a good kind of hurt. I don’t usually just blow everything away like that. Even this time, I’m keeping many of my auxiliary functions.