
Do not respond in anger
Responding in anger undermines leadership. Learn how managing emotions leads to better decisions and healthier team dynamics.

Squashing Docker images with Buildx
Learn how to squash Docker images using Buildx to create smaller, more efficient images by consolidating layers.

Zsh 'illegal modifier' with Git Conventional Commits
Fix ZSH ‘illegal modifier’ errors with Git Conventional Commits by disabling the NO_BANG_HIST option.

I made Windows use UTC with Linux dual boot
Configure Windows to use UTC for the hardware clock when dual-booting with Linux, avoiding time synchronization issues and maintaining Linux defaults.

Shucking WD Elements 20TB
A detailed guide on shucking WD Elements 20TB drives, including testing, performance benchmarks, and stress testing.

Generating Miniatures for my Frameo Digital Photo Frame
A story of how I bought a digital photo frame, and how I created a tool to generate miniatures of my photo collection to fit them all on the device.

20 years of Getting Things Done
Reflections and practical tips from 20 years using Getting Things Done, plus a short workshop plan for leaders who want actionable routines.

Create Markdown presentations with Marp
Learn how to create beautiful slide decks with Markdown and Marp, a simple and powerful tool for presentations.

Running Gemini CLI in a Docker container
Learn how to run Google’s Gemini CLI in a Docker container to avoid installing Node.js and its dependencies directly on your system. This guide provides a simple setup, a recommended shell function for seamless integration, and usage examples.

How to add llms.txt to a Hugo Blog
Learn how to add an llms.txt file to your Hugo blog to make it more visible to AI agents and improve Generative Engine Optimization (GEO).