I'm William Pearson.

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 II 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, board games, and reading. I've been hiking to a number of places within Washington state, the Oregon coast, and in the San Francisco Bay Area. I do not have a chess elo rating. Before COVID-19 shut down the library, I was reading a new book every two or three weeks.

My Projects


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

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.