There are only two hard things in Computer Science: cache invalidation and naming things.

- Phil Karlton

Photo by Boba Jovanovic on Unsplash.

Naming things is hard, and bad names make developers unhappy.


Photo by Ricardo Viana on Unsplash

Test-driven development (TDD) is a core IBM Garage practice. It provides the foundation for the other practices such as continuous delivery, DevOps, and automation.

When you work in a test-driven style, before writing any code you have to figure out what success looks like for the change you are making. Next, you work out how to validate success in an automated way. Then, you implement that automation. Finally, you code the thing.

The actual implementation is almost always the easy part. The first part of the process — figuring out what success looks like — is often the hardest part…


Models wearing black and white on a zig zag runway.
Models wearing black and white on a zig zag runway.
Photo by Flaunter on Unsplash. It looks like binary, right? Maybe?

Last night I dreamt that Roger Daltry’s wife told me to write about fashion and programming. We were in a small skate-punk shop. It was never made clear how she knew me or why she cared.

By the end of the dream I’d almost written a “why fashion and programming are actually connected” blog, so I woke and made frantic notes to try and remember it before it slipped away. Although on the surface they seem pretty distinct, there are actually some interesting links between fashion and programming — or at least, I think so. …


The past year saw an unprecedented flourishing of “photos of home offices,” “recommendation threads for microphones,” and “microphone review videos with huge numbers of views.” I’ve experimented with a few different setups for talks, and I’ve been having to watch my own videos more than I usually do.


What are the climate impacts of our technology habits? Part I of this blog discusses the importance of multi-tenancy, utilisation, and elasticity. So what happens if we establish good multi-tenancy patterns, create highly elastic pods and clusters, and keep our utilisation high? Is this a guaranteed climate win?

It all depends on what’s running in those pods. No matter how well-packed pods are, no matter how clean the multi-tenancy, no matter how admirable the utilisation metrics, if the workload isn’t useful, the whole thing is waste.

But surely no one would run useless applications? In fact, probably almost all of…


Earlier this year, I had the enormous honour of delivering a keynote at KubeCon Europe. I wanted to start a conversation about how our community should be thinking about climate change and what actions we should be taking.

the earth
the earth

The starting point is … we have a problem. The earth is getting warmer. It’s already a degree warmer than it was in pre-industrial times, and it seems likely to go up at least half a degree or a degree more. A couple of degrees warmer doesn’t sound too terrible — we’d barely notice that if we stepped outside. …


The world is changing. The cloud gives us dazzling computational possibilities, and … potentially uses a lot of energy. As climate change accelerates, where do we, as engineers, fit in? Are we part of the problem or part of the solution? How do we balance the needs of people against the need of the planet? Or can they be aligned?

The Situation

In 2019, back when plane travel was still a thing, I was on a plane from Berlin to London, reading Lean Enterprise. I recommend that to everyone — the reading part, not necessarily the plane part. Near the beginning of…


Hand drawn threads
Hand drawn threads

I’ve recently started using Tekton as my main build system. In combination with Argo CD for GitOps management of the pipeline scripts, it has some pretty nice features. One of the things I’m appreciating is the ability to get down to the platform level and customize my pipeline.

A challenge we’ve recently been puzzling over is the integration test phase. The integration tests are the sort of juicy integration tests that you’re really glad you run, because they involve OpenShift on IBM Cloud, a number of IBM Cloud managed services, another cloud provider, virtual machines, scripts, legacy systems, data pushes…


The IBM Garage is a highly dynamic, multi-disciplinary consulting practice working with clients and partners of any size across all industries. We combine design thinking, lean startup, devops, extreme programming, and cloud native development into an awesome package of client success and staff satisfaction. Our clients include both startups and household names, and help them innovate, modernise, and find a new way of working. Not surprisingly, the people in our team who do this are pretty special.

What we look for in a Garage developer

Our developers are customer focused, highly communicative, flexible, adaptable and know how to empathize and effectively work with in teams. Because our technology…


Poor old garbage collection. One of the unsung heroes of Java, often blamed, rarely praised. Before Java made garbage collection mainstream, programmers had little choice but to track all the memory they’d allocated manually, and deallocate it once nothing was using it anymore. This is hard. Even with discipline, manual deallocation is a frequent cause of memory leaks (if too late) and crashes (if too early).

Java GC is often thought of as a necessary cost, and ‘reduce time spent in GC’ is common performance guidance. However, modern garbage collection can be faster than malloc/free, and time spent in GC…

Holly K Cummins

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store