You probably came here out of curiosity. What's 0fail, and why am I starting this?
I've been in the industry for more than 10 years. I started with FrontPage and Dreamweaver as a teenager. During college, I did C# for the .NET platform and deployed sites via FTP to Arvixe as a freelance student. That was history.
Step by step, I learned Git and how to save my snapshots. Deployment at that time was happening on Heroku — it was magic ✨
You commit, and Heroku fetches the code and makes it live... The 12-factor app was the de facto standard.
Nowadays, it's the cloud.
Deployment happens behind the curtain. You push a commit to a branch, and GitHub Actions or a GitLab CI/CD pipeline delivers the code to machines. These machines, in particular, are in a specific environment — Kubernetes, anyone? — hopefully for testing. Then, you flip a switch, and it goes live in production.
I wish these steps were easy. I wish they were simple.
I've been involved in release management at GitLab, delivering code for production, canary, staging, and SelfHost packages to customers — one package at a time.
I also did cloud infra for Erste Bank, where we migrated local banks to the cloud. Local bank's code was written in Java — may God forgive me...
I wrote code for Adidas premium subscriptions while at Runtastic/Adidas. I even once wrote a whole service solely — that’s microservice for you. I stress-tested it and added observability; voila — management said we’re going freemium, so there’s no need for it.
I have stories. I’ve accumulated some knowledge.
I started 0Fail to tell you all about it, to give you some of my insights. I also want to share the kind of wisdom that AI can’t really give you.
I use AI — just like DHH. I ask it for a code review. I ask it for API specs and how to validate them. I bounce ideas with it.
I'm using LLMs all day long, but I'm not letting it write my code. It's looking up APIs, it's explaining concepts, but I want to reserve the fun part of programming for myself: Actually writing code!
— DHH (@dhh) May 9, 2025
The rest is mine to enjoy. I want to write my own code. I want to plan and design my system. How else am I gonna enjoy my job?
Why the name 0Fail?
Not to be overly philosophical, but everything fails. Every system is shaped by its history — and that’s all we have to build mental models of what might happen next. Since the future is fundamentally unknowable, we can never be 100% certain.
That’s the nature of non-deterministic, complex systems like modern computing environments or distributed systems — where anything can break, from a dropped network packet to a human pushing bad code.
That’s why we build for failure. If a system crashes on a plane, we don’t want the plane to fall out of the sky. We want graceful degradation, fault tolerance, and fast recovery.
0 Fail means 0 Downtime — a goal that’s impossible in reality, but worth chasing. In SRE, we talk about availability in nines: add another 9 when you’re doing something exceptional — but never say 100%.
So, 0 Fail?
It’s just me sharing everything I know with you.
Hopefully, you find it useful.
Hopefully, you will learn from it.
And hopefully, it matters.
— Ahmad
Comments