SOFTWARE ARCHITECTURE & REFACTORING 3 Domain-Centric Architectures Every Software Architect Should Know The first concern of the architect is to make sure that the house is usable; it is not to ensure that the house is made of brick. — Uncle Bob The expression domain is occurring in software bibles for a very long time now and is heavily discussed in the book Domain-Driven
Or: what broke on my first three attempts so you don't have to repeat it I've built two prediction markets from scratch. The first one crashed on testnet. The second one launched but had zero users for two months. The third one? Actually works. Here's what I learned in the process. Ask yourself three boring but critical questions: Binary outcomes (Yes/No) or multiple choices? Who decides the trut
If your Flutter app offers any third-party login on iOS — Google, Facebook, anything — Apple's App Review guideline 4.8 forces you to also offer Sign in with Apple. That part is non-negotiable. .p8 keys, capabilities, entitlements, deep links — and most of it is only documented across three or four different Apple and Supabase pages that don't quite agree with each other. This is the guide I wis
What Should Humans Design When AI Can Write Most of the Code? AI can now write code. Not perfectly. Not always safely. Not without review. But it can write a great deal of code. It can generate functions, create tests, call APIs, build UI components, handle common errors, and produce large amounts of implementation detail at a speed no human developer can match. This changes the meaning of prog
We are currently witnessing a massive shift in AI development. We’ve moved past the "Chatbot" era and into the era of Agentic Systems—AI that doesn’t just suggest text, but actually executes code, moves money, and modifies databases. However, there is a fundamental architectural flaw in how most agents are built today: we are giving "Intelligence" and "Authority" to the same probabilistic model.
Technical debt gets talked about like a moral failing. “We have so much tech debt.” “The team keeps cutting corners.” “We need to stop and fix things.” The framing is usually emotional, which means the decisions that follow are usually not very good. A CFO talking about financial debt does not sound like this. A CFO talks about principal, interest rates, covenants, amortization schedules, and the
Supabase Edge Functions run on Deno Deploy and are far more capable than simple REST handlers. This guide covers three advanced patterns every indie developer should know: streaming responses (for LLM integrations), WebSocket upgrades (for real-time features), and background jobs using EdgeRuntime.waitUntil. The most common use case is streaming LLM output without blocking the client. // supabase/
Supabase Realtime streams PostgreSQL changes to clients over WebSocket. Combine it with Flutter and you can ship live notifications, "who's online" indicators, and collaborative editing in dozens of lines of code. This guide covers all three channel types — Postgres Changes, Presence, and Broadcast — with production-ready examples. Type Use Case Data Source Postgres Changes React to INSERT/