Remote Software Engineer at Stripe and cellist based out of Ontario. Previously at GitLab. Fascinated with building usable, delightful software.
October 14, 2024
I recently migrated the website you are on now from AWS to GitLab Pages.
May 31, 2024
I built a light that glows when I’m on a Zoom call.
June 26, 2023
I spent most of my free time over the last 10 months building this bizarre keyboard from scratch. It’s a Dactyl Manuform - a split keyboard with a highly sculpted design that is somehow simulataneously the ugliest and most eye-catching object I’ve ever seen.
January 25, 2022
Like everyone else, I’ve been obsessed with Wordle lately.
August 26, 2021
Juggling multiple Git identities can be tricky.
May 7, 2021
It’s been almost seven years since Inspiral Web was released.
November 18, 2020
Diagnosing issues with a live Alexa skill can be tricky.
October 19, 2019
How many different special characters can you jam into a Git ref name (i.e. the full name of a tag or a branch) before Git will complain?
April 15, 2019
Generating PDF reports is one of those features that every enterprise developer will implement at some point in their career. I had my turn on a project with my previous employer. After exploring the available options, I settled on using Chrome’s headless mode to render HTML and save the result as a PDF.
December 4, 2018
I’m incredibly excited to announce that I will be joining the GitLab team in just a few days!
November 16, 2018
One of the small but important features of ES6 is a shorthand syntax for creating object literals:
June 17, 2018
Here's a TL;DR for my future self when I inevitably forget the correct shebang to use. If you’re like me, most of your time writing bash scripts is spent Googling basic things like “how to loop in bash” while grumbling to yourself how easy this would be in a sane language like TypeScript.
June 7, 2018
The other day, I ran across Windows 95 In Your Browser, which uses Emscripten and DOSBox to run a full-fledged operating system in a browser. What a time to be alive.
May 14, 2018
Not my snappiest title, but this topic is too near to my heart to obscure with puns. Tight feedback loops are one of my favorite aspects of front-end development.
April 27, 2018
While building the Jekyll template for the latest iteration of my website (the site you’re on now), I discovered a new CSS trick:
June 26, 2017
tl;dr: I created a custom Solr filter that allows for natural date searching. Here’s the source.
January 26, 2015
A quick note for context: this post was stolen from a portfolio site I built a few years back. It’s about my side project Inspiral Web.
March 6, 2013
It’s often necessary to remove an event handler once the target event has fired and the handler code has been executed. Most JavaScript libraries provide this functionality stock - for example, jQuery users can make use of the .off() function, which takes a string event name (e.g. "click" or "hover") and a reference to the victim handler function.
December 25, 2012
Java 7 introduced a new operator - <> - referred to as the “diamond” operator. This new keystroke-saving syntax allows you to maintain the benefits of compile-time generics without typing out long strings of redundant type parameters. Prior to Java 7, creating and initializing a variable with nested type parameters was an arduous task:
December 13, 2012
Do not feed the wild regex.
December 13, 2012
Everyone who has fought with word-wrapping in HTML layouts is familiar with the HTML entity. This special “space” character appears like a normal space to the end-user, but the browser won’t break this space to wrap a line.
December 13, 2012
I use the SyntaxHighlighter JavaScript library by Alex Gorbatchev on this site my previous site to auto-format chunks of code, resulting in nicely colored and tabulated blocks of text like this: