Unprofessional programmer. Former professional programmer. Former leader of the Pirate Party of Canada. Recurse Center alum/never-graduate. I build things because I want them to exist.


Since I left my job, I've tried to refocus myself on simple one-person projects that I can ship and (to some extent) forget about. Hopefully a few will see a modest profit, some others are intended to be open-source projects, and quite a few are just for my own amusement.

However, the biggest problem I've encountered so far is a stark reckoning with where my strengths really lie. I've spent ten years working full-time as a programmer, long enough that impostor syndrome shrank from a constant specter looming over me to only the occasional bout. I'd even gotten pretty comfortable calling myself a "senior software developer" with a straight face. The wakeup call for me has been leaving my work and attempting to do a junior's job again.

Self-employed. Programmer without portfolio. Gainfully unemployed. Funemployed. Retired. These are all terms that I've tried on over the 6 months since I left my last job (ever?) at the tender age of 33, but none of them feel right.

Perhaps I can best express my goals in terms of what I don't want. On one end of the spectrum, I don't want to be idle or hedonistic. On the other hand, I don't want to found a startup that will go public or sell to Google for billions. It seems like finding a place between those extremes should not be difficult, but my search is ongoing. (And this article, such as it is, has no answers to offer, only more questions.)

At this point, most developers use Git as a tool for collaboration. We have our rote-learned commands to pull, commit, and push. And of course, there's that one coworker who knows a bit more about Git than everyone else, who helps get us back on track whenever our local repos end up in a strange state.

But what if I told you that Git can be a valuable tool without ever setting up a remote repository? I'm not just talking about having a working version of your code base to roll back to if you mess something up, although there's that too. Used correctly, Git can help to structure your work, identifying gaps in your test coverage and minimizing dead code.

Hey, my blog has now matured to the point that I'm apologizing for not blogging more! Progress, of a sort.

I'm sorry for not blogging more.

Anyway, I've recently finished what I'd planned to be the capstone project of my time at Recurse Center. I'm calling it Weathervane: an e-paper display mounted on a Raspberry Pi Zero W to give me at-a-glance weather conditions as I'm on my way out the door. No, I haven't calculated if it was worth the time. No, I don't intend to.

My initial plan for this week was to do some more work on RefCell, but I forgot that Tuesday was December 1, which means that Advent of Code 2020 is kicking off! I'd never heard of it before, but looking through past years piqued my interest, so I decided to use it as an excuse to improve my abysmal Python skills.

This article should more properly be titled "RefCell", that being the name of this week's project, but I didn't want to bury the lede. So, having failed to build anything with a UI last week, I set out to build something with a UI this week: an implementation of the FreeCell card game in Rust using Druid. Naturally, I named it RefCell. And... I failed.

This is my first real project week at Recurse Center. For other Recursers, it was generative art and music week, but that didn't really jive with my own goals (though it was a lot of fun to be a fly on the wall for the presentations). Instead, I built something completely different from what I promised to build last week: a little proxy to allow you to modify iCalendar feeds "in flight". (No relation to the Apple app, BTW.)

Today is the last day of my first week at Recurse Center. To avoid overloading the feeds of anyone who may be listening, I'm aiming for a weekly release schedule.

It's almost time. This week is my last full week at Lightspeed; starting next week, I will be joining the embarking on a new journey of technical- and self-discovery at the Recurse Center. Exciting as it is, I also have to face the reality that "learn how to learn stuff" and "remember how to build stuff" aren't the most specific goals.


It's time for mikkel.ca to evolve. That seems insignificant for a simple personal portfolio site, but it's part of a much bigger change in my life. I'm moving on to bigger and better things, and I'll be using this site to keep a record of that journey. Mostly this is for my own benefit, giving me a trail to look back on and remind myself where I've been and what I've learned along the way. It's also for friends, as I've abandoned social media and am not eager to jump back into any of that.


Crikey IRC

An IRC library written in Rust.


Mysterium Card Reader

A simple application to select Mysterium cards so you don't have to.