-
If you've read some of my posts before or worked with me, you know I like using Architectural Decision Records (ADRs) for lots of reasons. To me the most important one is documenting the why of a decision. If you've worked with AI models before, you've probably asked them for opt…
-
Claude Code's output styles control how the AI responds to your requests. This summary covers the built-in styles and when to use each one. TLDR: Output styles = stored system prompts that change Claude's behaviour. Slash commands = stored user prompts for quick actions. Use th…
-
A very short post on Claude Code's new output styles feature which I have been experimenting with in the past days. Here are some actual examples of how you can leverage output styles to change 'hard-configured' Claude Code behaviour: Remove Claude Code branding from commit mes…
-
I prefer Jujutsu (jj) over Git for version control, but getting Claude Code to work with jj proved tricky since Claude Code defaults to git. This post explains how to configure Claude Code to use jj instead of Git for version control operations and file change detection. I'll sho…
-
When Claude Code creates git commits for you, it automatically adds its own signature to every commit message, including a promotional link and co-author attribution. Personally I think this is pretty annoying but especially for professional work or team repositories you may pref…
-
Context engineering shows interesting potential to ground documentation to actual code, or as how I sometimes refer to it: reality. Linking AI instruction files (CLAUDE.md, .rules, .cursorrules, etc) to development documentation may turn static docs into living resources. Each co…
-
TLDR: Use code coverage reports to verify that test refactorings haven't accidentally changed what functionality you're testing. Same coverage percentage before and after refactoring gives confidence your tests still cover the same code paths. If we refactor code, tests should co…
-
A few days ago, I wrote about an issue I encountered where the code coverage for one of my projects failed on CI but worked fine locally. I also discussed a solution. It turns out there's an even better alternative: switch code coverage tools entirely and use llvm-cov instead of …
-
A short post to help if you run into the same issue. TLDR: If your code coverage reports show vastly different results between local development and CI, explicitly set --engine llvm in your cargo tarpaulin command. I recently ran into a frustration you may be familiar with: your …
-
TLDR: Below are test naming guidelines that help me write consistent, clear test names. This is quick post with the Test Naming Guidelines I have been using to make my test names consistent across multiple projects. I use also these with LLMs when writing tests or refactoring mul…
-
Git pre-push hooks can automate local installation of your personal CLI tools, creating a development workflow where your working environment always has the latest version of your code. When developing CLI tools, for example for personal use, I often want to run the latest versio…
-
Making architectural decisions is one thing, but have you ever wondered how to make them more effective? Adding a Verification section to Architecture Decision Records (ADRs) can make the difference. This simple addition bridges the gap between theory and practice, making decisio…
-
Notes inspired by Emily Bache's short Youtube video Design Better Code with Preparatory Refactoring in TDD | Demo. A preparatory refactoring is a refactoring to make future changes to accommodate new requirements easy. By definition, current behavior should not be changed. Instea…
-
Teams adopt Architecture Decision Records (ADRs) to document decisions, avoid revisiting settled matters, onboard newcomers, adapt to changing circumstances, and sharpen their thinking. However, there are several other valuable benefits that often go unnoticed. A clear decision p…
-
Some short notes from Chris Simon's Talk TDD & DDD From the Ground Up Live Coding When choosing the right testing level, developers face an important trade-off. Higher-level tests provide better coverage for refactoring, but make it harder to pinpoint the exact location of fa…
-
My short notes on 🚀 TDD, Where Did It All Go Wrong. Still a lot of testing wisdom in this talk (re-watched 6 years after publication). Focus on behaviour Behaviour should be your primary focus when writing tests. The need for a new test should arise from new behaviour or requirem…
-
In recent years, Scala CLI has replaced sbt for my home and smaller work projects. Scala CLI lacks the extensive plugin ecosystem of sbt, so you need to write any additional functionalities yourself. Fortunately, writing simple scripts is a primary use case for Scala CLI, which w…
-
Have you ever wondered if there are better ways to estimate work than using Story Points? Below is a potentially simpler, more effective method to prioritise and estimate your software development tasks that could save your team countless hours of debate and confusion. This mini-…
-
To become a better writer consistently writing is essential. Mini-essays provide a practical approach. Mini-essays are short pieces of writing that focus on a single idea or topic. Key properties of Mini-Essays Length: Mini-essays are short, usually 100 to 300 words to avoid di…
-
DDD (Domain Driven Design) is not tied to a particular programming paradigm and strategic and tactical design choices apply to the architecture and code level. This article was triggered by a talk that does not align with my thinking and experience with DDD and FP over the past y…