Writing
Blog
Thoughts on software development, ICT infrastructure, and technology from the field.
BackendRebranding a Live SaaS Across 45 Files Without Breaking It
Notes from renaming ChamaPro to ChamaBiz across an entire Django codebase — preserving internal app names, avoiding broken migrations, and a content-anchored find-and-replace approach that didn't touch what shouldn't change.
ToolsAutomating Database Backups on Windows with Task Scheduler
How I built a custom Django management command for automated backups and wired it into Windows Task Scheduler for a production chama management platform — no cron, no extra infrastructure.
BackendWiring M-Pesa, Airtel Money, and PesaLink Into One App
Lessons from expanding a Kenyan fintech app beyond M-Pesa — handling three payment providers with different callback formats behind one clean, interactive selector UI.
BackendBuilding Scalable APIs with Node.js and PostgreSQL
A deep dive into designing RESTful APIs that scale — covering database indexing, connection pooling, and caching strategies.
BackendDjango + Azure Cosmos DB: A Practical Guide
How to connect a Django application to Azure Cosmos DB — covering the django-cosmos driver, proxy configuration, and database creation.
ToolsHow Git Works: A Visual Guide for Developers
A clear visual breakdown of Git workflows — workspace, staging, local repository, and remote repository using GitHub, GitLab, and Bitbucket.
📝 How to add a new blog post
- 1. Open
src/data/siteData.tsand add an entry to theblog: [...]array - 2. Set a unique
slug(e.g."building-apis") - 3. Add a cover image to
public/images/ - 4. Edit
src/app/blog/[slug]/page.tsxto add full post content