RSSAmplifier

Blog

Chris Loy

Chris Loy's blog on software engineering, AI, and leadership

chrisloy.devRSS feed ↗20 posts

Latest posts

Coding too fast to collaborate

Software engineering is a collaborative discipline, in which a single engineer typically works closely with others in a cross-functional team. Collaboration happens at the point of input (product specification), output (delivery of working software to the business), and internally (team practices that improve quality, supportability, and maintainability of the software).

What temperature are you coding at?

When it comes to using AI to write code, I have been thinking a lot about porridge. Allow me to explain.

AI makes interfaces disposable

I recently became a parent for the first time, as my wife and I welcomed a beautiful baby boy into our lives in January of this year. As I write this, we are still in the first weeks of adjusting to the maelstrom of caring for a fragile, precious life that demands round-the-clock attention. In other words, we are not getting very much sleep.

The rise of industrial software

> _Industrial_ > > _adj. (sense 3a)_ > > Of or relating to productive work, trade, or manufacture, esp. mechanical industry or large-scale manufacturing; ( > also) resulting from such industry. > > —Oxford English Dictionary

System design assistants

As AI assistants become more dominant in the software industry, one best practice that I have recommended(/post/2025/09/28/the-ai-coding-trap) is to invest time and tooling in using AI across the whole SDLC (software development lifecycle).

The AI coding trap

If you ever watch someone “coding”, you might see them spending far more time staring into space than typing on their keyboard. No, they (probably) aren’t slacking off. Software development is fundamentally a practice of problem-solving, and so, as with solving a tricky crossword, most of the work is done in your head.

Unthinking biases and fallacies

I recently built a small flashcard web app(https://unthink.chrisloy.dev/) to help me learn and avoid various cognitive biases and logical fallacies. I find it helpful to document and recognise these behaviours, so I can avoid blindly repeating them in future.

Vibe coding art

The advent of AI-assisted coding has made it almost trivially easy to spin up custom software. This has made it much easier to view coding a website as something as lightweight as recording music or engaging in some other hobby.

Context engineering

As our use of LLMs has changed from conversational chatbots and into integral decision-making components of complex systems, our inference approach must also evolve. The practice of "prompt engineering", in which precise wording is submitted to the LLM to elicit desired responses, has serious limitations. And so this is giving way to a more general practice of considering every token fed into the…

Distance metrics for vectors

Ever been asked to deploy a machine learning model that outputs a "vector" or an "embedding"? Perhaps you've been asked to set up vector search over some text embeddings, and as soon as you look into it you find there's a bewildering array of options and parameters you have to pick from. This article is a short explainer to help the uninitiated find their way around one of those - picking the…

Will AI replace software?

No, this is not another hot take about how AI is going to replace software engineers. Instead, I would like to explore the idea that, over time, AI might replace software itself. Which might lead you to ask - what exactly is the distinction?

Modular software design

Whenever people ask me about my philosophy for building software, top of my list is always to say that I am a proponent of modular design. To explain what I mean by that, it is first necessary to understand a few of the fundamental theories that underpin how I view software engineering as a discipline, and then we can explore how those come together in a philosophy of modularity.

LLMs are scrappy innovators

The last few years have seen an explosion of innovation within the technology sector, driven by the advent of widely-accessible, commodity-priced Large Language Models (LLMs) such as OpenAI’s GPT family or Anthropic’s Claude models.

How to be comfortable with ambiguity

Many job postings include a required skill for candidates to display “comfort with ambiguity”, a definition that itself can seem ambiguous alongside harder skills such as experience managing people, knowledge of particular technologies and so on. So what is this strange personal trait, and how can we develop it?

Constraints and innovation

Any technological endeavour will operate under a series of constraints. These constraints come in many forms, and understanding the existing, nature and extent of those constraints is one of the primary roles of technology leadership within an organisation. As we shall see, a deep understanding of your own constraints can also be a catalyst for the fundamental innovation that separates great…

Thoughts from a Chief How Officer

The most successful organisations have leaders with clear divisions in their responsibilities. In my role as a CTO or Engineering leader, I often find myself addressing the same type of problems, even in organisations with very diverse industries, teams and funding.

How to reduce mass to aid acceleration

In Newtonian mechanics, the degree of acceleration is proportional to the force and inversely proportional to the mass:

Momentum and agility in software

This article is the second in a series applying this framework to thinking about how software engineering teams operate and deliver.

Generative AI model collapse

A recent paper, published in Nature(https://www.nature.com/articles/s41586-024-07566-y), explores a critical issue facing generative AI models, termed "model collapse," which occurs when models are trained on data generated by earlier models, rather than genuine human-generated content. This process leads to a gradual and irreversible degradation in model performance, in which the models lose…

The mechanics of software engineering teams

This article defines a few terms, borrowed wholly from Newtonian mechanics, to define a framework for thinking about how software engineering teams operate.