Blog

We are all vehicles

A framework for understanding ourselves.


Layered architecture

Creating maintainable and testable services.


Simple model service

How I built a simple embedding model service using open-source tools.


Software projects

Practical projects for building skills in software, data, and ML.


Career options in software

Discovering roles and possibilities for newcomers to the world of software, data, and ML.


Removing the cable lock on Sennheiser headphones

The HD 5XX series of Sennheiser headphones has a cable lock mechanism which requires compatible cables. Here's how to remove the lock.


Two is better than one

An introduction to pair programming.


Sending emails with Unicode address headers

Unicode characters in address headers can cause email send failures. Here's how to fix it.


Adventures in code performance

Why your code is slow and how to make it faster.


Git under the hood

Foundations, structures, and useful features of Git.