I'm currently open to new opportunities! View my resume or connect on LinkedIn.
281 posts

I use a Macbook now

After using Linux for nearly 20 years, I've gotten an M5 Macbook Pro as my daily driver.

January 27, 2026 · 3 min · 594 words
DSA Prep Progress Visualization

Data Structures & Algorithms - Preparing for Interviews

My process for learning Data Structures and Algorithms, with some segues into data visualization

January 23, 2026 · 4 min · 845 words

Using a local DNS namespace for local service discovery

I wanted to stop using IP addresses to access my homelab services, and I spent a Friday evening fixing that.

January 16, 2026 · 5 min · 876 words

Direction

Reflections on my career and where I want to go

January 8, 2026 · 1 min · 144 words
KOllector - KoReader Highlights Collector banner showing the application interface

KOllector - Publishing KOReader Highlights

How I built an application to merge KOReader highlights across devices and publish them.

December 7, 2025 · 7 min · 1467 words

gbt: branches touched in the last 24 hours

A tiny Fish function I use at Chatwoot to remind myself which Git branches I touched in the last day.

December 3, 2025 · 2 min · 290 words

A Soiree into Symbols in Ruby

A Pythonista opens `irb` and looks at all the symbols in Ruby. Or so the joke begins.

November 3, 2025 · 11 min · 2253 words

Some Smalltalk about Ruby Loops

Sending a message about why you shouldn't write `for` loops in Ruby.

October 20, 2025 · 12 min · 2446 words  · Updated: October 21, 2025

Ruby Blocks

How to start really getting Ruby, especially blocks.

October 14, 2025 · 6 min · 1234 words  · Updated: October 20, 2025

Returning from Ruby Blocks, Procs and Lambdas

How does `return` work within blocks, procs and lambda?

September 29, 2025 · 3 min · 548 words  · Updated: October 20, 2025

Subscribe to Newsletter

Get the latest posts and insights delivered to your inbox.

Built using Picoletter.