Code Comprehension in the Age of AI
Two habits that keep your understanding of a codebase from falling behind what you ship.
~/victorpierre.dev ❯ ls blog/
Notes on software engineering, systems design, tools, and the occasional reflection on working and living with technology.
This is a collection of blog posts. They are mostly written to improve my writing skills and share my thoughts on various topics. They capture my thoughts at a specific point in time and may not reflect my current thinking. They are also not representative of my employer’s views, only my own.
Please take them with a grain of salt. They can be outdated, inaccurate, and I may have changed my mind since then. I hope you find them useful. Please feel free to reach out on Mastodon if you have any questions, comments, or suggestions.
Archive
Two habits that keep your understanding of a codebase from falling behind what you ship.
Teams were never just parallel typing. What building solo with AI quietly costs.
Reordering struct fields to cut padding, and the tools that find the waste for you.
How I use Obsidian to keep notes findable, linked, and local-first.
Fixing dual-write bugs by writing events to the database alongside the data that caused them.
Why digital dependence is a strategic risk, and how open standards offer a way out.
Photography, work, and reading: reflections on 2025 and hopes for the year ahead.
Instrumenting Go services with OpenTelemetry and Jaeger to follow a request end to end.
Keeping small, reviewable pull requests in sync with stacked Git branches.
A year-end look back at the work, travel, and changes that shaped 2024.
Building a reproducible macOS setup with Nix flakes and nix-darwin.
A framework for planning features around users when you rarely get to talk to them.
Notes on stoicism, resilience, and looking after your mind in an unstable industry.
Make haste slowly: why the fastest way to ship is usually the deliberate one.
Five practices that keep Go interfaces small, useful, and easy to maintain.
Stacking caching, logging, and instrumentation onto a data layer with Go interfaces.
What each number in a version means, and when to bump which one.
What Go gives a variable before you do, and how to put zero values to work.
The Fediverse, ActivityPub, and the case for a more decentralized internet.
The folder structure I use for Go microservices, and why I skip frameworks.
Writing end-to-end and integration tests in plain YAML with OVH's Venom.
What Protocol Buffers are, how the syntax works, and why they are worth learning.
Five command line tools I keep coming back to: chezmoi, delta, lazydocker, lazygit, and bat.