Building an LLM-Powered Code Review Sidebar
How I built Sherpa, a Chrome extension that uses LLMs to explain pull requests as you review them, with progressive file and hunk-level detail.
Writing about Go, Rust, AI, developer tools, whatever.
How I built Sherpa, a Chrome extension that uses LLMs to explain pull requests as you review them, with progressive file and hunk-level detail.
How to use devcontainers to run AI agents like Claude Code and Codex in isolated environments you control, so you can skip the permission prompts.
An explanation of Dependency Injection in Go and why it's useful.
Converting a library that used code generation to generics in Go 1.18
My experience switched my gRPC backed project's protofiles to use Buf
Four things to think about when choosing an API framework to write your next Go service.
How To Write Tests for Your Database Code in Go Without Mocking SQL
Setting a personal goal to read 26 books in a year with a system for retention using notes and summaries.
A pattern for returning errors from Go HTTP handlers to reduce boilerplate and centralize error handling.
Using pprof and go tool trace to find and fix a 100x memory allocation issue caused by compression middleware.
How to configure GitHub Actions caching for Go modules and build cache to speed up your CI pipelines.
A walkthrough of migrating a Go project's CI/CD pipeline from Travis CI to GitHub Actions with matrix builds, services, and releases.
Lessons learned from spending three years building Flipt, including mistakes to avoid and launching before you feel ready.
4 Tips for Testing Your API Client
Creating Option types in Go without generics using go generate, templates, and golden file testing.
Using recursive function types to implement elegant state machines in Go, inspired by Rob Pike's lexical scanning talk.
Final part: adding glass materials with refraction, a movable camera, field of view, and runtime configuration with Go flags.
Introducing materials with Lambertian diffuse reflection and specular metal surfaces with fuzz coefficients.
Adding shading with surface normals, implementing anti-aliasing with sampling, and refactoring with Go interfaces.
Implementing rays, spheres, and ray-sphere intersection to render a red sphere on screen.