Dan Mwenda Muriithi
I design, build and run production software across payments, telecom, property and compliance — in Go, PHP and TypeScript. I'm Technical Lead at Thrive Wave Solutions Ltd, run Syncraft Solutions independently, and co-founded Credywave.
The common thread isn't the industry, it's the shape of the problem: a system where money, a message, or a legal document has to move correctly between parties who don't fully trust each other, over an integration I don't control the reliability of. Safaricom's callback can arrive late or not at all. A bank's webhook can fire twice. A carrier's delivery receipt can lag by hours. Systems like that are less about writing clever code and more about deciding, in advance, what happens when the thing you're depending on doesn't behave.
Most of what's interesting in this work is the tradeoff, not the framework: releasing a payment before it's fully reconciled, resolving an ambiguous reference instead of demanding an exact one, choosing not to integrate a payment rail at all. I'd rather own infrastructure end to end — the service, the data underneath, the interfaces on top, and the server it runs on — than hand any of it to someone else's platform.
That's played out differently depending on the product. A live-tipping platform needs sub-second confirmation and a queue that re-ranks in real time. A debt-reminder tool needs the discipline not to integrate a payment rail at all, because the customer doesn't want the compliance weight that comes with it. A property platform needs the opposite: a bank integration and a resolver that can attribute an ambiguous payment reference automatically. Same underlying skill set, pointed at different constraints.
I'm based in Nairobi, Kenya (GMT+3), and take on remote engagements.
SKILLS
Languages and frameworks
Go (Gin), PHP (Laravel, Inertia), TypeScript, Vue 3, Next.js
Go for anything that needs to be fast and correct under concurrent load; PHP and Laravel where Inertia lets a Vue frontend share routing and state directly with the backend; TypeScript and Next.js for standalone frontends that need their own deployment lifecycle.
Data and messaging
PostgreSQL, MySQL, Redis, SQLC, Asynq, queue and background job design
Schema and queries written by hand — SQLC compiles SQL into typed Go rather than generating it from models — with Redis and Asynq handling anything that shouldn’t block a request: payout retries, SMS dispatch, scheduled jobs.
Infrastructure and operations
Docker and Docker Compose, Linux VPS administration, reverse proxying, TLS, monitoring, deployment pipelines
Infrastructure I administer myself on Linux VPS instances rather than hand to a managed platform — Caddy for reverse proxying and TLS, Prometheus and Grafana where a system’s health needs to be visible, and deployment reduced to one documented command.
Integrations
M-Pesa Daraja (STK push, B2C, C2B), bank payment webhooks, SMS and USSD gateways, third-party APIs and webhook design
The common failure modes across all of these are the same — a callback that never arrives, a webhook that fires twice, a reference a user typed wrong — and the integration is designed against those before the happy path.