Thoughts, tutorials, and insights on software development and technology
A webhook is not an HTTP request — it is a promise, and a promise can be broken in six different ways. Duplicates, forgeries, silence, reordering, staleness and slow handlers, with real code from M-Pesa, Paystack and Meta.
A database schema is one of the hardest things to change once an application is in production. This article covers practical principles for designing schemas that stay fast, consistent, and maintainable as your application and data grow.
Deploying software reliably requires more than pushing code to production. This article explores a practical deployment workflow covering Docker, Git, CI/CD, staging environments, database migrations, monitoring, and rollback strategies to help developers ship software with confidence.
I built the messaging rule correctly and put it in the wrong place: the contact list filtered what the app showed, while the endpoint underneath would talk to anyone. How a real authorization bug happens, and what mutation-testing my own fix revealed.
APIs power modern applications by connecting web clients, mobile apps, databases, and third-party services. Because they often expose sensitive data and business logic, securing them is essential. This article explores practical API security best practices—from authentication and authorization to monitoring and secret management—that every backend developer should understand.
Creating CRUD endpoints is an important first step in backend development, but production-ready APIs require much more. This article explores the principles and practices that transform a basic API into a reliable, secure, and maintainable service.
Building an application is only the first step. Once software reaches production, monitoring and observability become essential for ensuring reliability, detecting issues early, and delivering a better user experience.
A complete tutorial on building a full-stack React and TypeScript application with Supabase — covering database setup, Row Level Security, authentication, React Query data fetching, real-time subscriptions, and Vercel deployment.
Getting the STK Push prompt to appear takes an afternoon. Making sure the right person is credited exactly once — even when the callback is duplicated, forged, or never arrives — takes considerably longer. A production guide in plain PHP.