Justin Lam
Justin Lam
Justin Lam
This site is my little corner of the internet, where I can think out loud, share what I’m learning, and make things at my own pace. It’s a creative outlet that ebbs and flows with what’s going on with my life.
Latest Posts
So you’ve heard of split keyboards and want to buy one, but don’t know where to start? You’ve come to the right place! There are many offerings these days which can be overwhelming, so this guide aims to provide a high level overview of...
As much as I enjoy using my ergonomic keyboards, sometimes I still need to use the built in keyboard on my laptop. Transitioning between the two drastically different layouts is no longer an issue, but I find myself having an itch of...
As you might have noticed, I’ve put this website through a number of changes this year. Apart from changing the theme (sorry if you hate blue), I also switched my website metrics from Google Analytics to Umami, which is an open source,...
As I continued the descent into my split keyboard addiction, I decided to dive off the deep end and handwire my own ergonomic keyboard. My Corne was a good intro keyboard, but I eventually determined it had more keys than I actually...
When first designing my layout on my Corne keyboard, I was mostly focused on the macro level of what layers keys should go on as well as the ease of common workflows like selecting text or switching workspaces. I put some thought into...
Having used my Corne keyboard for some time now, I kept seeing 34/36 key layouts on r/ErgoMechKeyboards with a growing amount of envy. I mean, the minimalist aesthetics of the Ferris Sweep are just so enticing! Staring down at my...
It all started when I first saw a tenkeyless keyboard. Compared to a standard 104-key keyboard, having only 87 keys (an entire 17 keys fewer!) seemed like the next best thing to sliced bread. Since I wasn’t a big user of the numpad, it...
My intro to Hugo was back in 2016, a mere 3 years after its inception, when I was in my early days of learning web development. Quite a bit has changed since then, both in what Hugo is capable of and my understanding of how to actually...
Google Cloud’s Pub/Sub is a useful service that provides an asynchronous and scalable messaging platform that decouples services producing messages from those that receive and process those messages. When combined with Apache Beam...
Terraform’s null_resource resource can be useful when there aren’t any existing modules to satisfy your needs (with some caveats). Hashicorp’s documentation for it is a bit lacking, but fortunately there’s more information about the...
Cloud Functions are an easy, performant, and potentially inexpensive way to build serverless backends. I recently went down the route of setting up continuous deployments for them, and thought I’d share my learnings with it. The easiest...
Featured on Hackaday! A few years ago, I had the idea to track my sourdough starter using computer vision. It was neat to monitor it this way, but it was fairly impractical to do for each feeding since it required setting up a camera,...
Back in 2018, we decided to raise chickens in our urban backyard, all in the name of being able to have fresh eggs every morning. Our city had bylaws on having chickens, which included: A maximum of 4 hens (no roosters), 4 months or...
A few years ago, I created a tutorial on setting up Visual Studio Code for development with the STM32. Since I’ve also been developing on the Nordic nRF52, I thought I’d share another tutorial to show how a project can be set up,...
Featured on MagPi Issue 72, Hackaday, Hacker News, Adafruit, Hackster.io and The Guardian! Bread, the quintessence of life. People have survived for centuries off this staple consisting only of flour, water, salt, and yeast. Try...