- conference (NDC London, Talk): Progressive Collapse
- conference (NDC London, Talk): Application Performance Optimisation in Practice
- conference (NDC London, Talk): Modular Code with Examples in C#
- conference (NDC London, Talk): If only I had known... (navigating your tech career)
- conference (NDC London, Talk): The 1 Trillion Pixel Maze - My Decade-Long Obsession with C# Optimisation
- conference (NDC London, Talk): Flying a Drone with Twitter, Bananas & Web APIs
These are the talks I attended on Day 4 of NDC London 2026!
Progressive Collapse
Often, when things go really wrong, it turns out that a small thing triggered a chain reaction, bringing down our systems and rendering them unusable. This is the progressive collapse - when a small initial problem ends up having an outsized impact.
In this talk, I’ll explore the phenomenon of the progressive collapse. I’ll explore how it manifests itself in the built environment, drawing on real world examples of structural failures in buildings. Then I’ll explore examples of progressive collapse in our digital systems, and show how we can take the lessons from civil engineering and apply them to our own digital systems. As you’ll see, there are a number of practical things you can take to stop a chain reaction.
Application Performance Optimisation in Practice
Application performance always matters. Sometimes critically, sometimes subtly, but it’s never irrelevant. While many developers rightly caution that “premature optimisation is the root of all evil,” the opposite mistake, ignoring performance until it becomes a serious issue, can be just as problematic.
This talk explores the practical aspects of performance optimisation in .NET. We’ll look at proven strategies for monitoring, identifying, analysing, and iteratively improving applications. You’ll learn how to approach the performance lifecycle, from monitoring applications in production and pinpointing the best areas to optimise, to investing valuable engineering time where it counts most.
Through a worked example, we’ll follow a feature through the optimisation cycle. We’ll profile the application, design benchmarks, theorise improvements, and iteratively refine the implementation to reduce allocations and execution time, while balancing performance gains with code readability and maintainability.
Along the way, you’ll learn how to use tools like dotTrace, dotMemory, and BenchmarkDotNet to target areas for improvement and validate gains. We’ll discuss common optimisation opportunities, from smarter memory usage and fewer allocations to more efficient execution flow.
By the end of this session, you’ll leave with practical techniques to write faster, more efficient .NET code, along with the judgment to know when optimisation is worth the trade-off, and when it’s not.
Modular Code with Examples in C#
“95% of the words [about software architecture] are spent extolling the benefits of ‘modularity’ and … little, if anything, is said about how to achieve it.” Glenford J. Myers (1978)
In 1978, Myers noted that while the benefits of modularity were widely agreed upon, there was little discussion about how to write modular code. Almost fifty years later, many engineers continue to struggle with using modules in their code. And yet the pressure to write modular code, to support augmented coding, InnerSource, and testing rises.
In this talk, we look at how to write modular code.
- We will start by defining modules. We will provide some examples in C# of modules (assemblies) and examine language features that control visibility.
- Next, we will look at how modules can help us in software development. We will discuss information hiding and examine coupling.
- Then we will look at how we slice our software estate into modules. We will discuss how David Parnas’s observations can benefit us. We will provide some examples of how we slice up an estate.
- We will step into test-driven development, so we can understand the idea that the module boundary is where we should write our tests.
- Finally, we will look at how we use modules with some architectural styles: CQRS, ports & adapters, vertical slice architecture, and flow-based programming. Again, we will provide examples in C#
We will wrap up with an overview of how these ideas relate to modular architecture styles, such as modular monoliths and macroservices
If only I had known…
Navigating your career is difficult and it sometimes feels like there’s no map, and nowhere to go for guidance.
As a coach, I feel like there are a bunch of things that would make many tech careers go a whole lot smoother, if only we could have known them from the start. It’s almost as if there should have been a course at some point, but the content didn’t make the cut when they were grooming the curriculum. So in this talk, I’m going to rectify that as much as I can.
I’m going to pack this session with advice I would have loved as my earlier self. We’ll talk about reasoning about technology, heuristics for making difficult choices, and how to navigate career growth in an industry that wants to keep you in a neat little box. Frameworks and languages come and go, but your core skills will remain relevant, even in the age of AI. And with things like choosing employers, or learning new skills, we don’t get an infinite amount of attempts, so we better try to get it right.
Attend this session, so that when your next career decision comes around, you will have a better mental model to think about what you should do.
The 1 Trillion Pixel Maze: My Decade-Long Obsession with C# Optimisation
For the past 13 years I’ve been working on what started as a small maze generator, initially planning to give a presentation on it about a decade ago.
Well… here we are… But as they say, better late than never.
Join me on my “way over the top” adventure to be able to create a 1,000,000,000,000 pixel maze. I had to rethink maze generation algorithms, tackle memory optimisations, and relentlessly pursue the most obscure micro-optimisations.
You will learn:
- How mazes can be generated
- How very large mazes can be generated
- How mazes can be generated quickly
- Probably at least one obscure C# feature :)
Flying a Drone with Twitter, Bananas & Web APIs
The web is fast becoming the main means through which people interact with all sorts of technologies. With every new invention, users ask “but can it work with a browser?” With Web APIs, the answer is almost always yes; even to the question “can you fly a drone with a banana?”
In this talk, I show the audience the power of APIs and discuss a few cool experimental APIs. I do this by taking them through on a journey through my experience of trying to hack a drone and fly it with a banana.
If you’re interested in all things web, custom controllers, Bluetooth technology and accelerometer-based controls or if you just like fruit and seeing silly applications of technology, this talk is for you.