Aesthetic Habit Tracker: A Challenge Grid That Lives in Your Browser
Most habit apps want an account, a subscription, and a notification every hour. I built a minimalist challenge tracker that stores everything locally, exports to PDF, and ships free on GitHub Pages.
From Prompt to Home Screen: Shipping Nursing Tracker with GitHub Pages
My wife was losing track of feeds, so I built a one-tap nursing timer that grew into a pumping log, and shipped it for free on GitHub Pages with no database and no app store.
Send Half the Bytes Over the Network: Cut Kafka Integer Payloads with Bijou64
Every Kafka record with a Long value you produce sends 8 bytes over the wire, even when the value is 42. Bijou64 encodes integers in 1–3 bytes with drop-in serializers, cutting network transfer and replication traffic on integer-heavy topics by up to 50% or more.
Stream Wars: A Simple Game to Explain Kafka
I built Stream Wars as a tiny tap game to demo how Kafka works, by turning every tap in the browser into a real Kafka event you can inspect.
From Celery to Restate: Rethinking Async Tasks in Django
The Celery Question For years, when someone asked “How do I handle background tasks in Django?”, the answer was almost always “Use Celery”. And for good reason. Celery is mature, battle-tested, and has solved async task processing for countless Django applications. It has extensive documentation, a large ecosystem of plugins, and most Django developers have at least some experience with it. But Celery also brings complexity. You need a message broker like Redis or RabbitMQ. You need to manage worker processes. You need to implement your own progress tracking if tasks need to report status. You need to handle state persistence separately if your tasks need to remember things across restarts. As your application grows, this infrastructure overhead grows with it. ...
Adding Durable Execution to Flask Applications with Restate
The Challenge of Reliable Background Operations Building web applications with Flask is straightforward until you need to handle operations that can fail. Database operations timeout, external APIs become unavailable, and network connections drop. These failures are inevitable in production systems, yet handling them gracefully often requires significant engineering effort. Recently, I was trying to build a Todo application where users could create, update, and delete tasks. On the surface, this seems simple. But when you start thinking about production scenarios, questions emerge. What happens if the database connection fails mid-operation? How do you handle retries without duplicating operations? What if the server crashes while processing a delete request? ...
Introducing ContextLayer: Transform Any REST API into an MCP Server in Minutes
The Problem: Connecting AI Assistants to Your APIs As AI assistants like Claude and VS Code Copilot become more powerful, developers are discovering a critical bottleneck: these AI tools can’t directly interact with our existing REST APIs. After building Django DRF to MCP converters and Kafka MCP servers, I realized a fundamental challenge: Every API requires custom MCP server implementation. You shouldn’t need to write custom code for every API integration. You shouldn’t have to learn Model Context Protocol’s internals just to connect Claude to your weather API, GitHub API, or internal company APIs. ...
SSE Kafka Connector: Stream Real-time Events into Kafka
The Problem: Getting Real-time Data into Kafka Have you ever tried to stream Wikipedia changes or other real-time Server-Sent Events (SSE) updates into Kafka? If you have, you probably wrote custom Kafka producer and consumer code to handle these events, managed reconnections, and built your own error handling. There had to be a better way. Introducing the SSE Kafka Connector I’m excited to share my new open-source project: a generic Kafka Connect connector for Server-Sent Events. It lets you stream data from any SSE endpoint straight into Kafka topics—no custom code required. ...
Convert Your Django DRF Project to MCP in 5 Minutes
The Problem: When APIs Meet AI Assistants A few weeks ago, I was experimenting with Model Context Protocol (MCP) for a Kafka integration project. The experience was eye-opening - being able to interact with complex systems through natural language felt like a glimpse into the future of development workflows. After successfully getting MCP working with Kafka, I started thinking about other systems I could connect. That’s when I looked at one of my old Django projects. ...
Turn GitHub into Your Free Data Platform: Building APIs with GitHub Actions
What if I told you that you could build, host, and maintain data APIs completely free using just GitHub? Here’s how I built a production-ready data platform without spending a penny on hosting. The Problem: APIs Are Expensive (Or Are They?) Building data-driven applications usually means expensive cloud hosting, database costs, and server maintenance. Most developers assume they need AWS, Google Cloud, or Azure to run automated data collection and serve APIs. But what if there was a better way? ...