Multi-tenancy is the economic engine of SaaS. Sharing infrastructure across customers reduces cost and simplifies operations. But it introduces a risk that can end your business overnight: tenant data leakage. When one customer can see another customer's data — even accidentally — the consequences are severe. Regulatory fines, contract termination, public disclosure requirements, and irreparable t
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
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
Some time ago, I was building a chat application using AWS Websocket API gateway. Things were going smoothly. I created a WebSocket API Gateway, added $connect, $disconnect, and sendMessage/addGroup routes. From the frontend (React) side, everything was fire-and-forget. You send a message, and the onMessageHandler takes care of it 💪🏼 But then a new requirement of uploading files using S3 signed
A small engineering team can ship remarkably well. The coordination overhead is low, decisions happen quickly, and everyone can hold the system in their head. That advantage does not persist automatically. We have watched teams of eight that moved faster than teams of eighty, and teams of eight that had somehow manufactured all the coordination problems of teams of eighty without any of the benefi