I build multiplatform apps and small software products with a focus on clean, scalable architecture. I'm passionate about product philosophy, moving fast, staying lean, and keeping code simple but strong.
Many people think that creating an abstract class, an implementation and injecting the abstraction is already applying the Dependency Inversion Principle. It's not. This post walks through the questions I keep hearing about Clean, layered and DIP, and pins down the one detail that makes the difference.
I realized I was spending more time compiling the app and navigating to a screen to verify a UI change than it would take to just ask the AI to generate a golden test. In this post I will explain you how I stopped building and just asking the AI for "screenshots" of my screen.
One reactive source of truth. The repository streams data, and each feature listens and derives its own state independently. Clean, decoupled, and easy to scale.
Many people think that creating an abstract class, an implementation and injecting the abstraction is already applying the Dependency Inversion Principle. It's not. This post walks through the questions I keep hearing about Clean, layered and DIP, and pins down the one detail that makes the difference.
I realized I was spending more time compiling the app and navigating to a screen to verify a UI change than it would take to just ask the AI to generate a golden test. In this post I will explain you how I stopped building and just asking the AI for "screenshots" of my screen.
This weekend I spent some time reviewing the backend code of a project generated with AI. I wanted to test how it feels to build a full project from scratch only vibe coding with Claude Code. The code worked, but when I looked closer I found security issues everywhere.
One reactive source of truth. The repository streams data, and each feature listens and derives its own state independently. Clean, decoupled, and easy to scale.
Don't make one single BLoC for the whole page. Follow the Single Responsibility Principle and split UI components into small features with their own BLoCs.
Prop drilling happens when data travels through widgets that do not need it. In this post I show how I removed it in my project and made the code cleaner using a provider.