Graham Brooks Photo

Hello! This is the website for Graham Brooks: architect, developer and sometime blogger.

Disclaimer: This is a personal weblog. The opinions expressed here represent my own and not those of my employer (LexisNexis).My thoughts and opinions change over time as I learn. This weblog is intended to provide a semi-permanent record of these thoughts and is for informational purposes only.

Working in Interesting Times: Generative AI as Disruptive Tech in Software Development
Iteration Zero - the first iteration

Iteration Zero - the first iteration

Iteration Zero - the understated and undervalued iteration

Kilpse Blogging

Kilpse Blogging

Adding interactive code snippets to articles using Kilpse.

User-defined build settings for Bazel builds

User-defined build settings for Bazel builds

Adding your own custom command line arguments to your Bazel build for a cleaner interface.

Text fingerprints

Text fingerprints

Creating text and document fingerprints that can be used to find similar documents or group text by similarity.

Installing built binaries locally with Bazel

Installing built binaries locally with Bazel

Building and installing locally with Bazel. A simple rule example.

Go and Bazel to build containers

Go and Bazel to build containers

Working with go projects using Bazel. Builing in and out of a container.

Technical Health over Technical Debt

Prefer technical health over technical debt as a metaphor for developer practice changes for better code.

Of Languages And Containers

Run production on a workstation or embrace a new way of working…​

Orchestration And Choreography

Orchestration and Choreography are often confused. This is how I think of them.

Quantifying Commit Risk

All change carries an element of risk but not all changes are equal.

The path to a million (loc)

How do projects get to a million lines of code.

Builder anti-patterns

The Builder pattern has become very popular over the last few years but there is a growning tendency to use it everywhere. Here are some of the problems and alternatives that you might find a better fit.

Commit History Metrics

What can your commit history tell you about the health of your project?

Defending the Domain Model

Keeping a domain model is hard. Implementing a anti-corruption layer with the right separation of concerns can help.