WRITING
Architecture decisions, AI pipelines, and the hard parts nobody blogs about.
A practical breakdown of the four-layer clean architecture pattern I use in every NestJS project, and why the constraints are the whole point.
Before adding Pinecone or Weaviate to your stack, check whether the PostgreSQL database you already run can handle vector search. For most RAG workloads under a few million embeddings, it can.
Type drift — when your backend renames a field and the frontend doesn't know — is entirely solvable. Here's how a shared types package in a Turborepo monorepo makes it a compile error instead of a runtime bug.