• Migrating to Octopress 3.0

    Over the past several days, I’ve been working to migrate my blog from whatever version of Octopress I was on to Octopress 3.0. The process ended up being more involved and taking longer than I expected, but I think now I have a more powerful and maintainable blogging setup.

  • Should You Go to Grad School? Or, Why I'm Glad I Went to Grad School

    Back when I was deciding what to do about grad school, I found hearing what others did and why to be incredibly helpful. I hope I’ve been able to return the favor to others along the way. Having officially finished grad school not too long ago, I thought I’d take a moment to tell my story in the hopes that it will help others. Most of the people I talked to said something that boiled down to “do what I did.” In this post, I’ll continue the tradition.

  • I'm a doctor now!

    So it’s been a long time coming, but as of Thursday, June 30th,1 I’m officially a doctor! If you want, you can read my final dissertation here. It seems like the cool thing to do is to share the graph of commits over time, so here it is:

    1. I realize this post is pretty late as well. So it goes. 

  • Generating Morse Code with JavaScript

    Lately I’ve been toying around with learning Morse Code, and like any good computer programmer, I decided to write a program to do it for me. The whole program was under 100 lines of code. This was my first time using the new Web Audio API and I must say I’m impressed with how easy it is to use.

  • Arduino Pong

    Recently I’ve been helping out with the local library’s Arduino workshop, which is one of the events for their summer Maker Days program. It’s been a lot of fun watching kids and adults learn to build circuits and program microcontrollers. Doing so has also inspired me to spend some more time playing with Arduinos on my own. I recently purchased a small OLED display from Adafruit, and while I was getting the hang of working with it, I decided to put together a simple Pong game. Here it is in action. If you’re interested in seeing how to build your own, read on!

  • Monads as a Design Pattern

    Lately I’ve found monads to be more and more useful in several programming projects. For example, Harlan’s type inferencer uses a monad to keep track of what variables have been unified with each other, among other things. It took me a while to really grok monads. One reason is that many of the tutorials I’ve seen start out with category theory and the monad laws. These things don’t strike me as all that useful when I’m trying to make my code better in some way.

  • On Being an Artifact Evaluator

    I had the pleasure of serving as a committee member for this year’s PLDI Artifact Evaluation Process. After reading Lindsey Kuper’s post from the author’s point of view, I thought I’d say a little about my perspective from the other side. I had a lot of fun doing this, and it’s exciting to think about the implications for our field as artifact evaluation becomes a more common thing at conferences.

  • Rust Project Updates

    Happy New Year!

  • Continuation Passing Style Interpreters

    In my post on Scheme debuggers, I introduced a simple Scheme interpreter. Unfortunately, the interpreter was structured such that it was hard to make a terribly sophisticated debugger. While we won’t improve upon our debugger much today, I do want to look at a different style of interpreter that should enable more advanced debugging features.

  • Booting to Rust

    A couple nights ago I was looking over the UEFI spec, and I realized it shouldn’t be too hard to write UEFI applications in Rust. It turns out, you can, and here I will tell you how.