I'm a senior software engineer with more than a decade of experience in JavaScript and Ruby. I like working on frontend architecture and developer experience. After hours you can find me playing guitar or drums, designing logos and posters, or gobbling up the menus from the newest restaurants.
I love my Teenage Engineering EP-133 Sampler and noticed several of the stock sounds had hidden settings that were not accessible on the device itself. I did some reverse engineering and found a JSON blob in the header of the WAV files that stored default settings for each sample.
Because of the space limitations on the KO II (64 MB!), David created the Re:Pitch tool to speed up samples, an old technique for saving precious bytes. I added the KO II settings to it and learned about working with binary files in the process.
In February 2024 I migrated 1.3M lines of code from 18 live repositories into a single monorepo while retaining Github history. The team increased feature PRs by 1.6x and nearly eliminated (decreased by 95%) internal library bumps. I wrote a how-to guide and published it on the DigitalOcean blog.
I made the mistake of saving hundreds of my favourite places from around the world on my Google Maps work account. Then I changed jobs. Google Maps doesn’t support importing or transferring data between accounts so I hacked together this crude project to simulate re-saving data to the currently logged in account from the data export.
Since the pandemic hit, my friends and I could no longer gather ‘round a table to yell at each other for being a spy in the boardgame Resistance (also known as Avalon). So I created a realtime remote version to maintain our weekly scream quotas.
I’ve taken it offline since publishing, but you can fork it and self-host if you’d like!
Leading a team of three, we rebuilt the entire Retail Zipline front-end in under two months. Afterwards, I wrote about what processes worked, the tools we used, and lessons learned over at the LogRocket blog.
In this CSS Tricks article, I share a clever technique that mimics CSS Grid’s Auto-Placement feature using Flexbox, making it compatible with IE10+. There are no hacks, no extra markup, and no stretching elements. Just clean cells with gutters, perfectly aligned making it visually indistinguishable.
Think Like a Programmer is a 30-minute course I created with the Skillshare expansion team to help designers, marketers, and product managers work better with developers. Students learn ways to apply high-level programming concepts to their job and gain insights into how developers approach problems.
Curious if there was a perfect space system for web applications, I created Golden Space to try out different ratios and techniques. Ultimately, I didn’t uncover the one true ratio, but found hand-picking gaps that roughly resembled the Golden Ratio seemed to work best. Hence, the brass ratio.
This project also became a playground to practice with some tech I enjoy. I used CSS Custom Properties to dynamically change the ratios, TypeScript to mimic the Elm Architecture outside of Elm, Jest for tests, and Parcel for bundling assets.
Finding static site generators useful in my own projects, I wrote an article that solved a common problem. Static sites have no server that contact forms can submit to, but by using the Serverless Framework, I showed readers how to get more out of their site so they wouldn’t be forced to switch to a CMS.
I taught students Elm through a hands-on workshop at Code and Conf, a conference presented by Code and Coffee Meetup in Vancouver. After I provided an introduction and Q&A, we worked through exercises where everyone created Magic-Eight Balls.
After completing a handful of projects in Elm, I was hooked and wanted to share something fun with people who hadn’t yet tried it. In this two-part series, I walk through the steps to create this drum sequencer. Readers are introduced to Elm’s syntax, setup, and core concepts, then complier-driven refactors, side-effects, and communication with JavaScript.
To help back-end developers on my team release user interfaces faster, I created a reusable component library in Ruby on Rails, influenced by React. Rather than worrying about CSS, they call components with a Rails helper, pass in its props, and have it styled appropriately.
A year later I gave a Lightning Talk at the Van Ruby Meetup to share the concept since it was working so well.
Start-up Colour is an off-hand joke between a friend and I. It seems every successful start-up eventually changes their brand colour to some shade of blue, which must mean blue is the most successful colour. Right? Sure.
Users answer a short questionnaire processed by sophisticated AI that recommends the best colour to use. By entering how disruptive they are, how many ping-pong tables they have, and if they have beer taps in their exposed-brick office, they’ll get a colour that guarantees their success. Spoiler alert: it’s blue.