Blog

I tend to write blogs less frequently that TIL’s. So they are typically longer and dig a little deeper.

Bookend agents for product quality blog
Claude kept apologizing for skipping my expectation-based testing rules…and then skipping then again 2 minutes later. This is how I replaced best-effort written instructions with two …
Flow metrics for work in GitHub blog
I built a GitHub CLI extension for engineering flow metrics. Here’s the philosophy behind it, and two stories about what went wrong.
Building the 'Jobs For Me' Agent blog
What I learned building an AI job search agent as a Claude Work plugin in three days—and why I open-sourced it instead of selling it.
Building a language in Go blog
What I learned building CalcMark — a calculation language embedded in markdown — in Go. Lexers, parsers, type systems, and the tradeoffs that bit me.
Compound engineering blog
How I used compound engineering to build a real product as a solo developer. Not “look how many commits I made” but “look at the quality and speed of issue resolution.” The …
Create a Hugo Site from Scratch blog
I like Hugo for static web sites but I always forget how to start from from scratch without a template. This is my short guide with some handy tips and reminders.
Week 5: Image and Video Generation blog
Overview of generative approaches to image and video generation. Includes text-to-image and text-to-video tasks.
Week 4: Thinking and Reasoning Models blog
Complex prompts are better handled with multi-step logical answers. Reasoning models are still an LLM, but we add reasoning before the response is provided.
Week 3: Agents blog
Week 3 is all about agents. Workflows, tools, multi-step agents, and the protocols and frameworks involved.
RAFT for RAG blog
RAFT (Retrieval-Augmented Fine-Tuning) confused me when I first heard about it in a training class. It’s a technique that combines both offline fine-tuning and runtime retrieval to improve the …
Week 2: Adapting LLMs blog
Part two of the AI Engineering Course, focusing on adapting existing LLMs with post training work. It covers Retrieval Augmented Generation (RAG) and Fine Tuning.
uv for LLM Experiments blog
Using uv instead of Anaconda environment.yml to set up a virtual environment for LLM experiments.
Week 1: LLM Foundations blog
Resources from Week 1 of the AI Engineering Course
TPM Journey at Github blog
Slides and recording of my presentation about how technical program management (TPM) came about at GitHub. All in context of Tuckman’s model of group development.
Slice by Slice blog
How two German automotive engineers got inside my head. Or: how I learned to stop stressing out and to start solving problems.
Altitude, Brevity, Contrast, and Directness blog
How to write with a busy reader in mind by answering some questions. What altitude are they at? How can you be succinct? Are you highlighting the important bits? Are you being as direct as you can be?
Pay It Forward blog
I had a great chat with a college student about a career in tech. I thought I’d share some of the advice I gave them. It’s not going to change the world, but it might help someone.
Tracking program investments in SQLite blog
Using SQLite to work with hierarchical data and learning about CTEs and data loading along the way.
Task for automation blog
Using task as a Make alternative for your automation tasks and wonderment.
SQLite and Go App blog
Using Go and SQLite to munge YAML data for fun and profit…or for free.
Giving Actionable Feedback blog
Feedback is a gift. But how do you provide feedback to someone while increasing the chance that the person can hear and maybe even act on what you’re sharing with them?
Learning JSON Schema blog
JSON Schema is an old concept wrapped in a relatively new format. I learned a few things as I was defining a data model using JSON Schema.
Terraforming 101 blog
In which I finally get to grips with infrastructure as code on a real project while trying to set up identity aware proxy to protect a private app from prying eyes.
Operating Principles a.k.a. How We Work blog
This is a lightly obfuscated version of something I wrote for the technical team at Woolpert Cloud Solutions. It reflects the values I promote for the team and my ethos around enabling people to make …
A Bit of Fastapi for Auth blog
Learning more about JWT as a way to encode claims by getting hands-on with FastAPI, a relative newcomer to the Python family of web frameworks.
Tinkering With Tax Data blog
Using some open source tools to learn about tax data in Denver.
Big O for Imposters blog
A short and probably obvious statement for people who studied computer science. But for me is not obvious and took a short bit of reading on Big(O).
Transforming the Team on Your Practical Cloud Journey blog
Reposting a blog I wrote for Woolpert about digital transformation and the necessary culture, learning, and mindset for a successful and practical cloud journey.
Multiple ssh keypairs and how to use them blog
Finally learning more about ssh keypairs and how to manage them using ssh-agent.
asdf for Runtime Management blog
Using asdf as an alternative to homebrew for managing language runtimes like Python and Ruby. It provides a holistic solution to the same problem that pyenv and nvm and rvm solve for specific …
Coding Exercise in Go blog
Answering my own coding exercise using Go and sharing a couple of things I learned along the way about JSON and concurrency.
A Practical Cloud Journey blog
Re-posting the kickoff to Woolpert’s 2021 Practical Cloud Journey series. It’s all about customer value, not getting ahead of yourself (or your competence), and the importance of context.
Open Source (Geospatial) Data Exploration blog
GCP Billing API Scripting blog
Tips blog
Welcome Back blog
Reposting Woolpert Cloud strategy blog blog
Reposting a blog I wrote for Woolpert on how to proceed with a cloud strategy. I focus mostly on the Decide phase, since that’s most interesting to me personally, and I think it’s also the …
Core Skills ≥ Technical Skills blog
Re-posting a popular article of mine from LinkedIn, I muse over the relative benefits of technical skills over core skills in hiring.
UML in a nutshell blog
I don’t always reach for UML but when I do I always draw the wrong little diamond for aggregation vs. composition so maybe this will help me to use the right pen for the job next time!
Running SQL scripts in C# blog
How to run a bunch of SQL scripts inside a C# program.
Capturing edit events in ArcMap blog