Seventeen years of conference notes. Fifty-one events tracked.
I write about conferences and the ideas that surface there. I follow programs, read proceedings, watch recordings, dig into the source papers, and turn what I learn into long-form notes. I am not on any of these stages — the work is the writing.
A note on this page
Earlier drafts of this site listed me as a conference speaker. That was wrong, and the language is now corrected throughout. I cover conferences as a writer and researcher. I do not deliver talks, keynotes, or panels. If a conference organiser is reading and would like written coverage of a session or program, say hello.
What I write about.
Twelve evergreen themes I return to across conference coverage and long-form essays. Each links to the broader writing archive.
The end of microservices, the start of something quieter
After a decade of distributed-by-default, the cost finally came due. What is actually working in 2026 and why — written from a reader, not a speaker.
When the senior engineer in the room is a model
How architecture meetings reorganise themselves around a peer that has read every paper. What changes, what doesn’t.
Modular monoliths in production
The three patterns I see surviving the post-microservices reckoning, with the trade-offs spelled out.
Observability as product surface
Dashboards designed for the 3am on-call user, not the engineer who built them.
The MCP marketplace thesis
Why model-context-protocol is the most interesting platform shift of the decade, and how to build on the bet.
Twenty-five years of bad deploys
A career’s worth of incident stories, organised into the three patterns every bad deploy fits.
The non-coder founder’s stack
A practical, opinionated tour of the tools I use to ship production software without writing code.
Read-only legacy adoption
How to ship modern systems on top of unmodifiable legacy without asking permission you cannot get.
API design as user experience
The user is the next engineer. The API is their user interface. Treat it that way.
Event-driven architecture without tears
When eventual consistency is a UX problem, when it is a savior, and how to tell which one you have.
Hiring loops for senior engineers
Loops, scorecards, and the calibration nobody writes enough about. Twenty-five years of hiring at scale.
Platform engineering: the long arc
What a platform team actually does, what it does not, and how to know when the bet is paying off.
Fifty-one conferences I have followed, by year.
For each event the “theme covered” column is the thread I followed through that conference’s program — sometimes a single session, more often a pattern I noticed across the lineup. None of this is a speaking record. It is a reading log.
2024
- O’Reilly Software Architecture ConferenceTheme covered: The end of microservices, again
- QCon New YorkTheme covered: AI-native engineering platforms
2023
- QCon LondonTheme covered: Read-only legacy adoption
- KubeCon + CloudNativeCon NATheme covered: Observability as product surface
- AWS re:InventTheme covered: Multi-region search at SMB scale
- DevOpsCon MunichTheme covered: The quiet cost of low-code
2022
- Strange LoopTheme covered: Twenty years of bad deploys
- GOTO CopenhagenTheme covered: Modular monoliths in production
- GOTO AmsterdamTheme covered: Event-driven architecture without tears
- VelocityTheme covered: Reliability as a product surface
- YOW! SydneyTheme covered: Domain-driven design for non-coders
- YOW! MelbourneTheme covered: Domain-driven design for non-coders
- CodeMashTheme covered: Career patterns for senior engineers
2021
- NDC LondonTheme covered: API design as user experience
- NDC OsloTheme covered: API design as user experience
- GOTO ChicagoTheme covered: Distributed systems for retail platforms
- O’Reilly VelocityTheme covered: P99 is a state of mind
- DevConfTheme covered: Open source maintenance economics
2020
- GIDS (Great Indian Developer Summit)Theme covered: Architecture in the cloud-native era
- AWS Summit New YorkTheme covered: Multi-account cost optimization
- AWS Summit San FranciscoTheme covered: Multi-account cost optimization
- OSCONTheme covered: On giving and taking in open source
2019
- JavaOneTheme covered: The long arc of platform engineering
- JConf MadridTheme covered: Domain-driven design at scale
- Devoxx BelgiumTheme covered: Building polyglot teams
- Devoxx UKTheme covered: Hiring loops for senior engineers
- JFokus StockholmTheme covered: Modular monoliths revisited
2018
- O’Reilly OSCONTheme covered: Build vs buy: the spreadsheet does not decide this
- NorthEast Java User GroupTheme covered: API design as user experience
- CodeMesh LondonTheme covered: Eventual consistency is a UX problem
- DataEngConfTheme covered: Search at SMB scale
2017
- Spark Summit EastTheme covered: Spark in the retail data warehouse
- Strata Data ConferenceTheme covered: Vector databases before they had a name
- JAX LondonTheme covered: Hexagonal architectures in production
- GIDSTheme covered: Microservices: when to split
2016
- JavaOne IndiaTheme covered: Reactive systems
- JavaOneTheme covered: Reactive systems
- Devoxx AntwerpTheme covered: Architecture review boards that work
- Codemotion RomeTheme covered: Career patterns for the long haul
2015
- Java Day TokyoTheme covered: API governance
- Java Day SeoulTheme covered: API governance
- OSCONTheme covered: Open source in the enterprise
2014
- JavaOneTheme covered: Distributed systems: the boring parts
- GeeCON KrakówTheme covered: Performance engineering for the JVM
- Devoxx UKTheme covered: JVM tuning in production
2013
- NFJSTheme covered: Architecture patterns
- O’Reilly Open Source ConventionTheme covered: Maintainers and burnout
2012
- JavaOneTheme covered: Enterprise integration patterns
- JBoss WorldTheme covered: Application servers in the cloud era
2011
- TheServerSide Java SymposiumTheme covered: Service-oriented architecture done right
2010
- JavaOneTheme covered: Enterprise Java patterns
- No Fluff Just StuffTheme covered: Architecture from the trenches