Multi-agent systems in production: what CrewAI handles and what you have to build yourself
What CrewAI gave us in production, what it did not, and the real lessons from running a hierarchical multi-agent trip-planning system with real users.
Archive
Notes on architecture, internal tooling, mobile apps, product systems, AI infrastructure, and engineering leadership.
What CrewAI gave us in production, what it did not, and the real lessons from running a hierarchical multi-agent trip-planning system with real users.
What turned out to matter across 13 years of building systems, tools, products, and teams, and what I would focus on if I were starting again.
Why we started building Bloat, why Docker stopped fitting our local workflow, and how the daemon, desktop app, DNS, TLS, and signed runtime manifests came together.
What staying technical actually looks like while managing a 20-person team, and the tradeoffs required to keep judgment grounded in real engineering work.
A practical walkthrough of turning support chat SQL dumps into a fine-tuned LoRA adapter, including extraction, canonicalization, shard processing, and training decisions.
How DSPy helped fix score collapse in Sherpa when smaller self-hosted LLMs kept returning safe middle-range values instead of real differentiation.
Why I increasingly prefer self-hosting when the protocol is open, the service is understandable, and ownership buys real control without forcing client rewrites.
What it meant to add MCP tools to Vortex, the Laravel MCP package, how tools are structured, what good tool design actually requires, and what changed when an AI could operate the release workflow directly.
Why plato-next splits reads and writes across GraphQL Yoga + Laravel, what each side owns, how the Prisma schema bridges them, and where the complexity is actually worth it.
How we structured Prisma in plato-next to drive code generation across five outputs, TypeScript client, Pothos GraphQL types, Zod validation, Eloquent models, and test data, and what that buys a polyglot stack.
What changed when chat became a reusable React Native library instead of app-specific code, the API design decisions, the imperative ref pattern, Sockudo integration, and what self-hosting as an SDK forces you to think about.
The full story of replacing Pusher with Sockudo, why protocol compatibility made this migration a config change, and what a year of running your own WebSocket server actually looks like.
What the migration from Stitches-based Atom to Tailwind taught me about where the stable layer in a design system actually lives, and why Radix UI survived the whole transition untouched.
Why module-scoped Jotai atoms worked better for Plato than one large global store, and how the boundaries held up as the app grew to 30+ pages.
Three months into engineering management, writing this to understand what staying technical actually means when the calendar suddenly has eight hours of meetings in it.
Why we built Atom instead of adopting a large UI library, how the package layers worked, and what I learned from making that architectural bet.
The order I follow when bootstrapping a production React Native app, and why the sequence matters more than the exact library choices.
What aspect-oriented programming means in plain terms, why method interception is useful in PHP, and how aspect-me fits into that problem.
The PHP 8 features that changed my day-to-day code most, and the ones I still find less relevant in ordinary web applications.
How my view of code review changed after years of leading reviews across a multi-brand platform and using review as a teaching tool instead of a gate.
What surprised me in my first six months as a lead, especially around communication, reviews, and the shift from shipping code to enabling a team.
Why I built an EAV package for Laravel, what Magento taught me about the pattern, and how I wanted the API to feel cleaner in Eloquent.
Why I used subtree splits for mods-framework packages, how the workflow works, and when the extra maintenance is worth it.
A technical look at how I structured mods as a modular application framework on top of Laravel, including discovery, theming, and package splitting.
Why framework extension points break so easily, and how I started thinking about safer ways to extend behavior with layout-core and aspect-me.
Why I started the mods-framework experiment: not to replace Laravel, but to make modular application architecture a first-class idea.
What changed for me moving from agency delivery at BORN Group to long-term enterprise consulting work at Cognizant.
What changed when Magento had to support the catalog complexity of a 500-brand retailer like Mapemall.
What I learned from working with both clean and tangled Magento codebases, and how I decide whether a system is worth saving.
What I learned building Magento stores across UAE and Indonesia: multi-region commerce is much more than translation and exchange rates.
What I learned about Magento performance once Xcite.com traffic made development-time assumptions stop working.
After spending enough time inside Magento's catalog model, I finally started understanding why EAV exists, where it helps, and where the tradeoff starts getting expensive.
The database decisions I made while building tripzar.com, especially around social relationships, feeds, and linking traveler content to places and trips.
What I learned while designing a hotel reservation API for ofertadeldia.com, especially around availability, reservation states, and the parts I got wrong the first time.
The Magento 1 module concepts that confused me most when I started building extensions at Contus, and the mental model that finally made them click.