Articles

Notes from 28 years of building and running software teams.

On-device speech to text in Flutter: what works

On-device speech to text in Flutter: Apple SpeechTranscriber and Android ML Kit through a platform channel first, Whisper on device through whisper.cpp for the languages the phone cannot do. Measured on an iPhone 15 Pro and a Nokia T20.

2026-09-29. 6 min read.

Hard paywall vs freemium for a subscription app

Hard paywall vs freemium for a subscription app: what RevenueCat's data across 115,000 apps shows, a side-by-side table, and why I kept a Free plan in VitaCal but put the paywall first in VitaMood.

2026-09-29. 5 min read.

Building AI calorie tracking from a photo: lessons from VitaCal

How VitaCal turns a meal photo into calories: a Gemini vision call, JSON checked on the server, user correction, photo deletion, cost control and Health sync.

2026-09-25. 6 min read.

How to connect a PLC to the cloud over Modbus TCP

To connect a PLC to the cloud, put a gateway on the PLC's network that polls it over Modbus TCP and forwards events over HTTPS. The Raspberry Pi gateway design I use, with offline buffering.

2026-08-26. 6 min read.

ZUGFeRD, XRechnung and Peppol: e-invoicing formats explained for software builders

ZUGFeRD, XRechnung and Peppol BIS Billing 3.0 all carry EN 16931 invoice data in different packaging. How the formats differ, what Germany's B2B mandate accepts, and how I built and validate them in an invoicing SaaS.

2026-05-05. 6 min read.

Flutter vs React Native: which to choose, from someone who ships both

Flutter and React Native compared on rendering, native integration, hiring and long-term cost, based on production apps built in both since 2020. Flutter wins for hardware-heavy and design-heavy apps; React Native wins when the team already writes React.

2025-04-19. 4 min read.

How to design an event-driven serverless platform on AWS: lessons from 90+ Lambda functions

A practical guide to building an event-driven serverless system on AWS with Lambda, SNS, SQS and DynamoDB: queue-per-consumer fan-out, CQRS projections, idempotency, dead-letter queues and Terraform, from a health-data platform running more than 90 functions.

2024-12-29. 4 min read.

How to hire a contract software developer in South Africa: contracts, vetting and red flags

A buyer's guide to hiring a contract software developer in South Africa: how to vet candidates in one interview, what the contract must contain, how IP assignment and change orders work, and the red flags that predict a failed engagement.

2024-01-11. 4 min read.

What a fractional CTO does, and when a startup should hire one

A fractional CTO is a part-time chief technology officer who sets architecture, hires developers and owns delivery for a few days a month. When it makes sense, what it costs relative to a full-time hire, and what to ask before signing.

2023-11-15. 4 min read.