I'm William Pearson.

This is what I'm up to now.

I'm a Computer Engineering graduate. My primary focus is on software. I am really excited by both operating systems and compilers.

I am currently employed by Microsoft as a Software Engineer in Azure Compute. While interning at Google, I worked on the memory management subsystem of the Linux kernel. Before that, I interned twice at Amazon.

The views I express on this website are solely my own. They do not reflect the views of my current employer, nor do they reflect the views of any of my past employers. But you already knew that, didn't you? My hobby projects are also solely my own.

Since 2010 or so, programming has been my main hobby. My more recent projects have tended to be libraries or other tools although I used to do quite a few web projects. I try to use the right tool for the job although that tool is never Java (nor C#). Often, the right tool is C, Python, or Rust. Of course, one of the right tools for any web project is JavaScript. Sometimes bash is the right tool. Sometimes perl is the right tool because bash isn't quite powerful enough. I started out programming in Ruby but I now prefer Python.

On a computer, I spend most of my time in Terminal and Emacs. The only activity which I have found to demand a GUI is web browsing due to images and video not displaying at all in edbrowse. I prefer open source software and generally use Debian GNU/Linux or Arch Linux. I release most of my code under the GNU GPL v3 or later although a couple of my projects — such as my toml library — are underneath the MIT License.

My hobbies outside of programming include chess, hiking and board games. I've been hiking to a number of places within King County, Washington and in the San Francisco Bay Area. My chess elo rating is non-existent.

My Projects


I give my friends burrito recommendations when they go to San Francisco.

What used to be interview advice has been expanded to career advice.

My GitHub account   My Twitter account

English letter frequency order goes something like "ETAOINSHRDLCUMWFGYPBVKJXQZ". Figuring that infrequently used letters were as good a source for a domain name as any, I picked xqz and found the .ca to be open.