One thread. Multiple AIs. Deliberation, not polling. Most people use AI like this: 🤦 Ask one model → get one answer Ask multiple models → compare results That’s not thinking. That’s polling. Not side by side. Not isolated. But in sequence — where each one reads what the previous one said before responding. Manual Council is the simplest form of that idea. No backend. No orchestration. No
I recently had a requirement where, if a user opens the app in multiple browser tabs, only one tab can be active at a time, and the rest are locked. Here are the core requirements as I see them: Uniquely identify each tabs Store the active tab somewhere If a user opens a new tab, lock it if there is already an active tab If the active tab is closed, detect that and inform the other tabs Sounds sim
I spent long hours debugging why Google couldn't index my React app. Lighthouse showed green scores. The app felt fast. But Search Console kept flagging LCP failures and CLS shifts I couldn't reproduce locally. The fix? Four lines of metadata and one misunderstood render strategy. If you've ever shipped a "fast" SPA and watched it flatline in search rankings, this Core Web Vitals SEO guide is for
If you are running production workloads, this is for you. Not side projects. Not early-stage experiments. Not a single-service app with low traffic. This is for teams shipping real systems. Systems with users, uptime expectations, and release pressure. Because at that stage, your deploy process is no longer a convenience. It is part of your product. And right now, for most teams, it is the weakest
Most teams treat cloud cost as a finance problem. But the root cause is usually engineering. Bills spike, dashboards grow, alerts fire — but the underlying issue rarely gets fixed. That idea stood out to me while reading about an approach where AWS cost was handled like an SRE problem — using the same mindset applied to reliability and performance. Instead of asking “why is the bill high?”, the fo
I wanted to add live chat to my WordPress sites without loading a 500KB third-party script. So I built my own. GhostChat is an open source embeddable Widget: Vanilla JS, no framework, ~10KB Backend: Cloudflare Workers + Durable Objects for persistent WebSocket connections Payments: Stripe for the hosted tier Self-hostable: Bring your own Cloudflare account Durable Objects give you stateful serve
The more I use AI, the more convincing it feels. Clear answers. Whether it’s: strategy code writing decision support AI rarely hesitates. And over time, I noticed something subtle. I stopped questioning it as much. Breaking the Expectation We assume better tools reduce errors. Smarter systems. And in many cases, that’s true. But there’s a hidden shift happening: As AI improves, our skepticism decr
My first Cloudflare Worker deployed in 47 minutes. Three of those were spent staring at this exact error in a red GitHub Actions log: Authentication error [code: 10000]. I had the API token. I had the account ID. I had copy-pasted the workflow from the official docs. It still failed. The fix was one checkbox I never selected. That checkbox is the entire reason I'm writing this post, because every