Opinions on software.
We write about scoping, delivery, operations, and the messy parts of building custom software for South African businesses.
Practical thinking, written down.
Straightforward writing on the decisions that make software easier to build, use, and support.
5 min read · June 2026
Your spreadsheet is not the problem.
88% of spreadsheets contain errors. But the error rate isn't the real problem - it's what spreadsheets become over time in a growing business, and what that costs you at the exact moment you can least afford it.
6 min read · June 2026
Most software projects fail before the build starts.
Most custom software failures are not technical failures. They are failures of problem definition. The brief described a solution, the team built it - and six months later, the software worked and did not fix what was wrong.
7 min read · June 2026
Most systems called real-time
Real-time is one of the most overused terms in software. Most implementations described as real-time are polling - the system checks for new data every few seconds. True real-time is event-driven, and the two have fundamentally different infrastructure requirements.
5 min read · June 2026
Sharper than a freelancer.
Every development agency claims to move fast. Most do not. We sit deliberately between a freelancer and a large agency - and the speed is structural, not aspirational. Here is what actually makes the difference.
6 min read · July 2026
The tool is not broken.
The trigger for replacing software is almost never breakdown - it is outgrowth. The system does exactly what it was built to do. The business around it has changed. Six signals your operation has already crossed that line.
6 min read · July 2026
The system should not depend on heroics
SLA support for bespoke software is fundamentally different from SLA support for a packaged product. The system should not depend on heroics to stay running - and that is only possible when the people supporting it are the people who built it.
7 min read · August 2026
Every integration that does not exist
Integration debt is the accumulated cost of manual data transfer between systems that have never been connected. Unlike technical debt, it is invisible - it lives in someone's job description, in the extra thirty minutes at end of day, in the error that only surfaces when both systems are open at the same time.