No, not that Avatar. And not the other one either. This post is about avatar.png, a handful of lines of PHP that have inspired me for a long time.

Around 2011 or 2012 a friend of mine, Andrew Kvalheim, blew my mind when he made his Skype profile picture display the IP address of the computer I was using. It might have looked a bit like this.

Parsing TFTP in Rust

Several years ago I did a take-home interview which asked me to write a TFTP server in Go. The job wasn't the right fit for me, but I enjoyed the assignment. Lately, in my spare time, I've been tinkering with a Rust implementation. Here's what I've done to parse the protocol.

A Fresh Coat of Paint

I'm starting the new year with a new job. To paraphrase a friend, "it's just moving from one $BIGCORP to another", but it's still exciting. I worked my last gig for 5 years, so I'm nervous, but also very ready to do something new. While I'm doing one new thing I might as well do another. Taking some time off between jobs has given me enough breathing room to redo my website. Is An IP Address

Hello! Welcome to the once-yearly blog post! This year I'd like to examine the most peculiar bug I encountered at work. To set the stage, let's start with a little background.

Deprecating Layabout

Since Layabout launched last year it has been downloaded 5,755 times, gotten 16 stars on GitHub, been used by a Portuguese startup to teach a Haskell workshop, and received a Twitter shout-out from @roach, one of the core contributors to the official Python Slack client. During that time the official client library also got a lot better! So much better, in fact, that I've decided to deprecate Layabout.

Announcing Layabout

Today I'm announcing Layabout, my first official Python library. Layabout is a small event handling library on top of the Slack Real Time Messaging (RTM) API. You can get it right now on PyPI.

Resolving A DNS Issue

Haha. Get it? Resolving a DNS issue. OK, that was bad. You don't have to read anymore, but I'm SOA into this. You might even say I'm in the zone. I think it's gonna be A great read, so consider sticking around, 'cuz there's no TLD;R.

Stateful Callbacks in Python

If you're unfamiliar with what a callback is, don't worry, we can sort that out quickly. If callbacks are old hat for you you might want to skip to the interesting bit.

Simply put, a callback is a function that is passed as an argument to another function which may execute it.

gutenberg init blog

When I first created this site I wanted to get it live as quickly as possible. Hexo, a blogging framework written in Node.js, seemed like the perfect tool. At the time I was rather interested in Node.js, so it seemed natural to use a framework rooted in that community.

By the time of my last post I'd become increasingly disinterested in Node.js and much more interested in Rust and its community. It was mostly procrastination, but I convinced myself that using a tool written in a language I didn't use often directly contributed to the paucity of posts here, so I finally decided to ditch Hexo.

git filter-wat

Welcome to this year's annual blog post!

I've been signing git commits for my dotfiles repository since its inception in October of last year, so I was excited to see that GitHub recently added GPG signature verification. All you have to do is upload your public key to GitHub and you'll be verifying commits like a champ. Or so I thought…

hexo init blog

I've been wanting to start a blog for a long time now. Today I'm pulling the trigger on that with a simple hexo init blog. Well, it wasn't that simple, so I feel like it's worth talking about a few of the complications I had.