About (Software)

I’m a self-taught and life-long hacker who first started out programming, by sheer coincidence, on an IBM Model M keyboard, something that has annoyed colleagues with good hearing ever since. My first project was an “operating system” written in Basic when I was around 9 years old, then a MUD written in C which was briefly the most popular of its kind (though that’s not saying much,) and I’ve been making stuff ever since. I’m pretty sure I will be forever captivated by the concept of creating something out of nothing, and being limited only by your imagination and your compiler.

These days, my primary interests are formal methods and PL theory, particularly Haskell and its ilk, and how to make software in general more robust and reliable. I was an early contributor to the Go programming language, and am “one of those people” who does just fine without an IDE, at least when I’m not forced to write writing Java. Professionally, I primarily write security and crypto software, but my personal projects are all over the map.

I’m not a fan of software patents, and wish they would be abolished, but I am listed as the inventor on a couple of filings. They may be the first to include Haskell code—I’m not sure. That would be a pretty lame feat, anyway.

If none of these make you rage, we’re gonna get along:

  1. Every programmer should know at least two fundamentally different languages, even if that difference is simply “industry OOP” (Java, C++, …) vs. actual OOP (Smalltalk, Erlang, …)
  2. Emacs is best, but I’m worried about my little finger’s long-term prospects
  3. If you’re mostly using the mouse, you’re Doing It Wrong™
  4. Static typing that gets out of the way is streets ahead of dynamic typing
  5. Fuzz testing > unit tests any day of the week
  6. Choosing C “for performance” is silly in 95% of today’s use cases
  7. I don’t understand why nearly every FizzBuzz implementation includes a third (modulo 15) conditional
  8. Node.js’ popularity and the beliefs surrounding its “async benefits” compared to modern languages are completely baffling to me, and I’m pretty sure it’s all a direct result of #1 not being widely embraced