Blog

Our thoughts on technology and design

Tech
We explore using JavaScript’s native Proxy object as a simpler, safer alternative to external state-management libraries. We demonstrate how a Proxy can intercept gets and sets on an object to enable reactive behavior—like creating computed properties, triggering listeners when state changes, and even achieving bi-directional binding between form inputs and state. Drawing inspiration from Angular Signals, we argue that for many cases, proxies are sufficient without needing full frameworks, reducing complexity and dependency risk.
Tech
Let's explore the concept of 'masonry' layout in web development where items share the same width but differ in height. We'll explain when a simple CSS grid is sufficient, when to rely on libraries like Masonry.js for dynamic content, and why the CSS grid-template-rows experimental value 'masonry' remains impractical due to limited browser support. We'll also touch on accessibility concerns, the underlying column-stacking logic, and more advanced rectangle-packing techniques for layouts with both variable widths and heights.
Sustainability
We recently undertook a literature review about the environmental impact of AI, across carbon, energy, and water. It offers practical strategies for teams to reduce impact today, while highlighting the gaps in measurement, reporting, and governance that still need to be addressed.
Delivery
A look at MVPs, when they are a good fit and alternative tools that may suit your use case better.
Testing
This blog explores how to best use GitHub Copilot to swiftly refactor existing test automation
Sustainability
Sam Altman says AI will cost as little as electricity—but what’s the real environmental impact of billions of queries a day? In this post I dig into the numbers from the blog post "The Gentle Singularity" and compare them to previous studies of the power and water use of AI systems.
Artificial Intelligence
This episode charts my attempt to build Mini-Me, a CLI sidekick that was supposed to learn my quirks and write like me, but instead turned into a shadowy pastiche of my style. AI tools can generate features at light speed, yet without unwavering product ownership discipline, scope creep turns your elegant vision into feature bloat. The experience crystallised into a practical checklist for AI project governance - because just as every orchestra needs a score, every cinematic universe needs a storyline, otherwise what should be a legendary saga of epic proportion becomes just a messy saga of its own making, worthy of nothing more than a post-credit scene.
Data Engineering
Distributed systems often struggle with data consistency. In this post, I explore how the Transactional Outbox pattern helped us solve this challenge in a client project, and how it compares to CDC and Event Sourcing.
Sustainability
The Scott Logic sustainability team has recently been updating the open-source Technology Carbon Standard website to better reflect evolving challenges of carbon accounting in the tech sector.
Testing
While on my most recent project I had the unique experience of working closely with many testers and test minded individuals. This allowed me to learn some much-needed lessons about how to best implement automation testing with accessibility in mind, a sometimes-overlooked area of test automation.
Delivery
When you're embarking on a legacy modernisation initiative, it’s crucial to gain a holistic understanding of the project, and you need to be able to devote sufficient time to this and involve all the right people. In this blog post, I explore this further, describing the expert input you need to draw on, the role of leadership in this context, and the kind of up-front planning that’s required.
Delivery
Increasingly, I’m seeing that government procurement is not giving suppliers the chance to demonstrate their ability to deliver meaningful social value. In this blog, I explore what government procurement sets out to achieve, what is actually happening, and how things could be improved if the government simply heeded its own guidance.
Tech
For junior developers just starting with CSS, the vast array of available length units can feel overwhelming. This post offers a clear breakdown of the main categories - absolute units; relative units, which adapt better to different screen sizes and accessibility settings; viewport units and niche units.
Tech
When I wanted to learn a new programming language and a new programming paradigm, I decided to cut my teeth on a practical problem.
Testing
AI is reshaping the testing landscape, but it can’t replace the value of human judgement. In this post, I explore how experience, intuition and healthy scepticism remain essential to building better software.
Testing
Automating Playwright visual test maintenance with GitHub Actions simplifies updating baseline screenshots across platforms. By running tests on both Windows and Linux via a workflow, developers avoid manual setup and ensure consistent UI validation, even when third-party libraries like CO2.js change underlying data.
Tech
Learn how to build a custom, user-friendly search language using ANTLR and Elasticsearch. We'll cover grammar design, query parsing, and indexing techniques to turn plain user input into powerful search results.
Delivery
Messaging-based communication tools such as Slack and Microsoft Teams are commonplace in development teams, often being the main platform for textual communication. “Channels” are a key concept in these tools for organising communication. How these are organised and used makes a big difference to their effectiveness and in turn the overall effectiveness of the team communication. In this post, I’ll share my thoughts on what makes a good approach, and provide some example channels based on what I’ve seen work well in projects of various natures and sizes.
Testing
Switching testing teams in the middle of a live project can feel like changing pilots mid-flight — risky if you’re unprepared, smooth if you’ve planned it right. In this post, we’ll look at how to hand over testing between vendors without letting quality or deadlines slip.
Tech
In this post, I describe how your business can assess whether a system is ready for modernisation and, if so, how to set your project up for success. I then explain why, in most cases, you’ll probably want to take an incremental approach rather than replacing the old system in one fell swoop. I end by providing an example of one of the ways your business can do this – by using Event-Driven Architecture.

Authors