My Mostly Technical Personal Blog

👋 Welcome to my personal blog!

At its heart, this blog is about three things: preserving the wisdom passed to me, refining my understanding through explanation, and inviting others into the messy joy of figuring things out together. It’s for them, and for me. 🌱

📝 Rewriting a Git Commit Message

So you started contributing to a new project and have an excellent contribution to make. You code it up, test it, and wrap it up in a commit. You are exceedingly proud of yourself and then you realize that your commit message is a little unclear and also you have a typo. fiz: typo There is something ironic about this commit isn’t there 😏. Let’s fix this message, we can address the typo and make the message more expressive. Perhaps we can make the message something like the following: ...

April 15, 2025 · Stephan Rayner

DuckDB Has Replaced JQ For Me

The Problem Processing JSON Lines (JSONL) data on the command line has traditionally been done using JQ, but its specialized syntax and limited functionality can make complex data operations challenging. Many developers need a more powerful and intuitive tool for JSON processing tasks. A Solution DuckDB provides a SQL-based alternative to JQ that offers better performance, familiar syntax, and more advanced features for processing JSONL data. Let’s explore how DuckDB can replace JQ for common JSON processing tasks. ...

January 30, 2025 · Stephan Rayner

Column-Oriented vs Row-Oriented Databases: How to Avoid Looking Silly

Motivation The motivation for this article comes from my time at a comically dysfunctional mobile game studio and particularly a rather brash “VP of Core Tech” who once went on at length longly, loudly, and publicly, about how poor a decision it was for the analytics department (not in any way shape or form connected to his division, responsibility, or experience) I lead to choose a SQL based database to use as our datalake. Given that we had chosen BigQuery, I was deeply confused by his rantings. That is to say, I was deeply confused until I realised he had conflated SQL with relational database management systems typically used for CRUD (Create, Read, Update, and Delete) operations. BigQuery is many things but that is absolutely not one of them, and by the end of this article you will understand why, when to use a tool like it, and importantly when not to. ...

January 26, 2025 · Stephan Rayner

This is Why I Write

I’ve Been Lucky Over the years, I’ve been incredibly fortunate to work alongside some excellent engineers. The opportunities I had early in my career to learn from these talented people shaped me into who I am today. Beyond their technical skills, their passion for what they were teaching made me rethink what it was to be a good engineer. I now believe that engineering (of all kinds) is a much more interpersonal discipline where knowledge sharing should be the principal indicator of a great engineer. ...

December 27, 2024 · Stephan Rayner