I am a software developer. Occasionally, I will compose a post for this blog.

@sircmpwnsir@cmpwn.com, F4EA1B88

Open Source

I work on a lot of open source software. Here are some interesting projects of mine that could use your help. I accept pull requests on all of my GitHub repositories, so feel free to contribute to anything else that interests you.


Need someone to host your video, audio, or images? Want to run your own server for doing the same? I've worked with my friend @jdiezlopez to make a cool site for doing just that. We could use help with our enourmous backlog of GitHub issues, or donations to keep the servers online. Site's written in Python, CoffeeScript, and SCSS, so feel free to join in if that's your cup of tea.

KnightOS Kernel

If you have an interest in the low-level world, you'll love this. This is a kernel (and technically a userspace, but it's pretty bare) for Texas Instruments calcultors, written entirely in z80 assembly. Working on it is a challenge, but it's very fun. It's got a lot of Unix-isms, like a tree-based filesystem, multitasking, and proper memory management. There's lots to do and there's an IRC channel to do it in, if you're interested.


An open-source implementation of Minecraft, written in C#. Includes a client, server, and a bunch of useful libraries for doing things like editing levels or simulating worlds. It's functional, but it could use a lot of work getting to feature-pairity with the official Minecraft software. If you'd like to help, glance through the backlog or join the IRC channel. The exciting work is trying to get things working for Minecraft 1.7.x, which introduced an entirely new networking stack.

Recent Posts

Python's datetime sucks 28 Jun 2014

I’ve been playing with Python for about a year now, and I like pretty much everything about it. There’s one thing that’s really rather bad and really should not be that bad, however - date & time support. It’s ridiculous how bad it is in Python. This is what you get with the standard datetime module:

Why Go's error handling doesn't sit right with me 07 Jun 2014

I’ll open up by saying that I am not a language designer, and I do like a lot of things about Go. I just recently figured out how to describe why Go’s error handling mechanics don’t sit right with me.

Hacking on your TI calculator 25 Feb 2014

I’ve built the KnightOS kernel, an open-source OS that runs on several TI calculator models, including the popular TI-83+ family, and recently the new TI-84+ Color Silver Edition. I have published some information on how to build your own operating sytsems for these devices, but I’ve learned a lot since then and I’m writing this blog post to include the lessons I’ve learned from other attempts.

The bug that hides from breakpoints 02 Feb 2014

This is the story of the most difficult bug I ever had to solve. See if you can figure it out before the conclusion.

Getting started with fish shell 13 Jan 2014

There’s a cool shell called fish that I think is pretty damn good. However, the documentation leaves something to be desired for new users and I found it a little difficult to get into it simply because there wasn’t a lot written about it. So here I am, writing about fish. Consider this a pitch for why you should be using it instead of whatever else you’re using now (bash, probably).

Custom Music Syncing on Android 24 Aug 2013

I have an HTC One, with CyanogenMod installed. I usually use Spotify, but I’ve been wanting to move away from it for a while. The biggest thing keeping me there was the ease of syncing up with my phone - I added music on my PC and it just showed up on my phone.

You don't need jQuery 19 Aug 2013

It’s true. You really don’t need jQuery. Modern web browsers can do most of what you want from jQuery, without jQuery.