Observations about the human at work, building software.
Want to see me on stage?
Watch "Why smart developers write silly code" from VoxxedDays Amsterdam 2026, recorded live.
| Date | Event | Title | Materials |
|---|---|---|---|
| QCon London 2027 |
Did My Deploy Degrade Production? Answering It for Other People's Systems | Schedule | |
| BuildStuff 2026 |
Did My Deploy Degrade Production? Detecting Bad Deploys with Math, Not AI | Slides Schedule | |
| Heapcon 2026 |
Software Estimates and the Illusion of Control | Schedule | |
| TDC 2026 |
Did My Deploy Degrade Production? Detecting Bad Deploys with Math | Slides Schedule | |
| Devoxx Belgium 2026 |
Their API Went Down. So Why Is My App on Fire? | Video Slides Schedule | |
| Python Meetup Ljubljana |
Their API Went Down, So Why is My App on Fire? | ||
| Voxxed Days Luxembourg 2026 |
Did My Deploy Degrade Production? | Video Slides Schedule | |
| PyCon Italia 2026 |
Stop asking me how long it will take | Video Slides Schedule | |
| VoxxedDays Amsterdam 2026 |
Why smart developers write silly code | Video Slides Schedule | |
| Codemotion Roma 2026 |
It'll Take Two Weeks: Why Software Estimates Are a Pipe Dream | Slides Schedule | |
| J-Fall 2025 |
Your Brain Is Sabotaging Your Code, But We Can Outsmart It | Video Slides Schedule | |
| Swiss Python Summit 2025 |
Software estimation: False sense of certainty | Video Slides Schedule | |
| Voxxed Days Luxembourg 2025 |
Software estimation is a delusion | Video Slides Schedule | |
| PyCon Austria 2025 |
Software Estimation is a Delusion (or Maybe Just a Misused Tool) | Slides Schedule | |
| Meetup of Meetups |
Why do developers like to argue so much? | ||
| Python Meetup Ljubljana |
Applying Marketing Techniques to Developers' day-to-day | Slides | |
| Python Meetup Ljubljana |
Fluent Python: How to write Python as if it were your first programming language | ||
| WebCamp Ljubljana 2017 |
Conquering JSONB in PostgreSQL | Video Slides Schedule | |
| StripeCon 2016 |
10-ish Things I Learned from Programming an E-Shop for a Year | Slides |
Interested in having me speak at your event? Here's what I talk about.
Every API is doing its own thing. Authorization, headers, rate limiting (devs are creative people, so we just like to invent our own rules). After integrating 40+ APIs into the same product, I have a lot to say about handling failures of remote APIs.
Of course, we learned statistics. We went to university, there was a course, there was an exam, we passed it. But we don’t really use it at work… when writing code, except… that we love proving a point with a good chart. That would be a harmless quirk if we were bakers, but our code now decides who gets a loan, whose claim gets approved, when the doctor sees you. Software engineers have somehow become some of the most consequential decision-makers in society, and we cope with it by pretending we’re just typing.
Software estimation has turned into ritualized guessing. We are pushed to estimate, but nobody is teaching us how to do it. Our estimates are deemed crucial, but the project’s specs keep changing mid-work. It’s time we abandoned long-term estimates and focused instead on managing project risks.
When you deploy some code, do you know its impact on your production stats, like memory usage, request duration, error rates? If you wanted to know if your code improved or deteriorated the speed of SQL queries, would you know where to get this data? In this talk, I walk through a real-world system we built to automatically detect pattern changes to metrics without having to set thresholds manually. (And with no LLMs.)
Knowing about cognitive biases is like debugging our brain. Devs spend tons of time fixing bugs in code, but biases are the mental bugs that mess with our decisions. They make us overconfident, they make us ignore users and fight for bad ideas. But it needn’t be this way.
What makes us really calm when deploying code to production? A green test suite with 100% test coverage. But then we merge, deploy, go to lunch… and somewhere out there a user does something so creative that production goes down anyway. There’s no amount of tests that makes the bugs go away. We wish test coverage was a magic number, just like we want to believe in the power of other metrics (LOC, story points, DORA, …). This talk grapples with two questions: what our tests actually catch, and why we keep reaching for these numbers.
There’s an entire field dedicated to getting people to read what you write, developers just aren’t in it. We’re trained in precision and completeness. Marketers know people only skim, they decide in 3 seconds, and only care about what’s relevant to them. This talk steals their tricks for standups, PRs, proposals, and that email nobody answered.
Country flags on this site are Twemoji graphics, licensed under CC-BY 4.0.