[{"data":1,"prerenderedAt":391},["ShallowReactive",2],{"navigation":3,"blog-page":25,"blogs":35},[4],{"title":5,"path":6,"stem":7,"children":8,"page":24},"Blog","\u002Fblog","blog",[9,13,17,21],{"title":10,"path":11,"stem":12},"[object Object]","\u002Fblog\u002Fbanksy-what-not-to-do-with-ai","blog\u002Fbanksy-what-not-to-do-with-ai",{"title":14,"path":15,"stem":16},"Making Sense During the AI Revolution","\u002Fblog\u002Fmaking-sense-during-ai-revolution","blog\u002Fmaking-sense-during-ai-revolution",{"title":18,"path":19,"stem":20},"RAG vs AI Wiki","\u002Fblog\u002Frag-vs-ai-wiki-evolution-of-context","blog\u002Frag-vs-ai-wiki-evolution-of-context",{"title":10,"path":22,"stem":23},"\u002Fblog\u002Fvector-storage-in-rag-choosing-right-backend","blog\u002Fvector-storage-in-rag-choosing-right-backend",false,{"id":26,"title":27,"body":28,"description":29,"extension":30,"links":28,"meta":31,"navigation":32,"path":6,"seo":33,"stem":7,"__hash__":34},"pages\u002Fblog.yml","Articles",null,"Work in progress notes and technical articles on AI engineering, RAG systems, and cloud-native DevOps.","yml",{},true,{"title":27,"description":29},"oZbDvvuQoArgB_zcN-P1isiWDuYUJMjyrGwNuA2jsAI",[36,138,217,298],{"id":37,"title":14,"author":38,"body":42,"date":130,"description":131,"extension":132,"image":133,"meta":134,"minRead":135,"navigation":32,"path":15,"seo":136,"stem":16,"__hash__":137},"blog\u002Fblog\u002Fmaking-sense-during-ai-revolution.md",{"name":39,"avatar":40},"Andrés Renaud",{"src":41,"alt":39},"\u002Favatars\u002Fplaceholder.svg",{"type":43,"value":44,"toc":122},"minimark",[45,49,57,62,75,79,94,98,101,112,115,119],[46,47,48],"p",{},"AI tooling accelerated software delivery, but it also increased the cost of unclear intent.",[46,50,51,52,56],{},"I call this shift ",[53,54,55],"strong",{},"from vibe coding to harness engineering",": less focus on one-shot outputs, more focus on building systems that constrain, verify, and evolve AI-assisted work.",[58,59,61],"h2",{"id":60},"why-this-shift-matters","Why this shift matters",[63,64,65,69,72],"ul",{},[66,67,68],"li",{},"Prompts alone do not create quality bars.",[66,70,71],{},"Fast iteration without guardrails creates hidden operational debt.",[66,73,74],{},"AI-generated code scales risk as quickly as it scales output.",[58,76,78],{"id":77},"what-changes-in-practice","What changes in practice",[80,81,82,85,88,91],"ol",{},[66,83,84],{},"Define contracts before implementation.",[66,86,87],{},"Add observability from day one.",[66,89,90],{},"Use tests as executable product intent.",[66,92,93],{},"Add review checkpoints for security and data boundaries.",[58,95,97],{"id":96},"a-pragmatic-operating-model","A pragmatic operating model",[46,99,100],{},"For engineering teams, this usually means:",[63,102,103,106,109],{},[66,104,105],{},"short feedback loops,",[66,107,108],{},"measurable acceptance criteria,",[66,110,111],{},"and explicit rollback paths.",[46,113,114],{},"The goal is not to slow down AI usage. The goal is to make speed sustainable.",[58,116,118],{"id":117},"closing-note","Closing note",[46,120,121],{},"We do not need less AI in delivery pipelines. We need better engineering harnesses around it.",{"title":123,"searchDepth":124,"depth":124,"links":125},"",2,[126,127,128,129],{"id":60,"depth":124,"text":61},{"id":77,"depth":124,"text":78},{"id":96,"depth":124,"text":97},{"id":117,"depth":124,"text":118},"2026-05-27","From vibe coding to harness engineering, a practical perspective on building reliable systems while AI tooling evolves fast.","md","\u002Fimages\u002Fai_development.jpeg",{},8,{"title":14,"description":131},"0_FPFzRuQefhb-7VNWdMPRD9bzffi_iQjRUyIzEe4zI",{"id":139,"title":10,"author":28,"body":140,"date":28,"description":144,"extension":132,"image":28,"meta":206,"minRead":28,"navigation":32,"path":11,"seo":207,"stem":12,"__hash__":216},"blog\u002Fblog\u002Fbanksy-what-not-to-do-with-ai.md",{"type":43,"value":141,"toc":200},[142,145,148,152,163,167,178,182,193,197],[46,143,144],{},"I refactored Alex into my personal banking assistant under strict time constraints.",[46,146,147],{},"It worked enough for a demo, but the approach created avoidable complexity.",[58,149,151],{"id":150},"what-i-did","What I did",[63,153,154,157,160],{},[66,155,156],{},"Reused an existing codebase optimized for a different architecture.",[66,158,159],{},"Pushed rapid changes with large context windows and mixed-model workflows.",[66,161,162],{},"Prioritized delivery over structural cleanup.",[58,164,166],{"id":165},"problems-i-hit","Problems I hit",[63,168,169,172,175],{},[66,170,171],{},"Legacy resource names leaked into new domains.",[66,173,174],{},"Old workflow fragments remained active after redesign.",[66,176,177],{},"Infrastructure refactors required deeper recoding than expected.",[58,179,181],{"id":180},"what-i-would-do-differently","What I would do differently",[63,183,184,187,190],{},[66,185,186],{},"Start with an architecture map and deletion plan.",[66,188,189],{},"Rebuild core Python flows from clean boundaries.",[66,191,192],{},"Re-validate Terraform modules against the target domain before reuse.",[58,194,196],{"id":195},"takeaway","Takeaway",[46,198,199],{},"Plan first, then accelerate. AI tools amplify your approach, including flawed assumptions.",{"title":123,"searchDepth":124,"depth":124,"links":201},[202,203,204,205],{"id":150,"depth":124,"text":151},{"id":165,"depth":124,"text":166},{"id":180,"depth":124,"text":181},{"id":195,"depth":124,"text":196},{},{"title":208,"description":144},{"Banksy":209,"description":210,"date":211,"image":212,"minRead":213,"author":214},"What Not to Do with AI","A candid postmortem on refactoring Alex into a personal banking assistant under deadline pressure.","2026-05-25","\u002Fimages\u002Fdevops_automation.jpeg",10,{"name":39,"avatar":215},{"src":41,"alt":39},"dMDbRDvWYOfs9evf01Ta8ySGYqIZORX593CTPDQjUTg",{"id":218,"title":18,"author":28,"body":219,"date":28,"description":10,"extension":132,"image":28,"meta":288,"minRead":28,"navigation":32,"path":19,"seo":289,"stem":20,"__hash__":297},"blog\u002Fblog\u002Frag-vs-ai-wiki-evolution-of-context.md",{"type":43,"value":220,"toc":282},[221,224,227,231,242,246,257,261,264,275,279],[46,222,223],{},"A traditional wiki stores information. A RAG system retrieves context dynamically.",[46,225,226],{},"Both solve knowledge access, but with different trade-offs.",[58,228,230],{"id":229},"ai-wiki-strengths","AI Wiki strengths",[63,232,233,236,239],{},[66,234,235],{},"Stable editorial workflows",[66,237,238],{},"Clear ownership and approval models",[66,240,241],{},"Strong discoverability for humans",[58,243,245],{"id":244},"rag-strengths","RAG strengths",[63,247,248,251,254],{},[66,249,250],{},"Context assembled at query time",[66,252,253],{},"Better performance on long-tail questions",[66,255,256],{},"Easier integration with operational data sources",[58,258,260],{"id":259},"where-teams-get-stuck","Where teams get stuck",[46,262,263],{},"Many teams try to replace the wiki entirely with RAG. In practice, hybrid models work better:",[63,265,266,269,272],{},[66,267,268],{},"Keep canonical policy\u002Fprocess docs in a wiki.",[66,270,271],{},"Use RAG for synthesis and workflow-level answers.",[66,273,274],{},"Add source citation and freshness indicators.",[58,276,278],{"id":277},"key-design-principle","Key design principle",[46,280,281],{},"Treat context as a product. The ingestion, retrieval quality, and governance model matter as much as model choice.",{"title":123,"searchDepth":124,"depth":124,"links":283},[284,285,286,287],{"id":229,"depth":124,"text":230},{"id":244,"depth":124,"text":245},{"id":259,"depth":124,"text":260},{"id":277,"depth":124,"text":278},{},{"title":18,"description":290},{"The evolution of context management":291,"date":292,"image":293,"minRead":294,"author":295},"when retrieval pipelines beat static knowledge pages, and when they do not.","2026-05-26","\u002Fimages\u002Faws_cloud_infrastructure.jpeg",7,{"name":39,"avatar":296},{"src":41,"alt":39},"ObvPGPRRF9F7ZuAhjklOtI1mRs1sCue7IIptdfKcqaA",{"id":299,"title":10,"author":28,"body":300,"date":28,"description":304,"extension":132,"image":28,"meta":380,"minRead":28,"navigation":32,"path":22,"seo":381,"stem":23,"__hash__":390},"blog\u002Fblog\u002Fvector-storage-in-rag-choosing-right-backend.md",{"type":43,"value":301,"toc":374},[302,305,308,312,323,327,338,342,353,357,371],[46,303,304],{},"Selecting vector storage is not just a database decision. It is an operational decision.",[46,306,307],{},"This comparison focuses on four dimensions: latency, cost, security, and multitenancy.",[58,309,311],{"id":310},"rds-based-patterns","RDS-based patterns",[63,313,314,317,320],{},[66,315,316],{},"Good transactional control and governance.",[66,318,319],{},"Predictable operational model for SQL-heavy teams.",[66,321,322],{},"May require careful indexing strategy under high retrieval concurrency.",[58,324,326],{"id":325},"s3-based-patterns","S3-based patterns",[63,328,329,332,335],{},[66,330,331],{},"Low-cost storage and high durability.",[66,333,334],{},"Useful for batched or offline retrieval workflows.",[66,336,337],{},"Requires additional orchestration for low-latency serving paths.",[58,339,341],{"id":340},"opensearch-based-patterns","OpenSearch-based patterns",[63,343,344,347,350],{},[66,345,346],{},"Strong query flexibility and integrated observability tooling.",[66,348,349],{},"Useful when search analytics and retrieval debugging matter.",[66,351,352],{},"Cost and scaling behavior need active tuning.",[58,354,356],{"id":355},"practical-rollout-sequence","Practical rollout sequence",[80,358,359,362,365,368],{},[66,360,361],{},"Deploy baseline to local clusters (Minikube).",[66,363,364],{},"Add OpenSearch logging for retrieval traces.",[66,366,367],{},"Run backend variations (RDS, S3, OpenSearch).",[66,369,370],{},"Validate cloud deployment path (including Bedrock model routing where applicable).",[46,372,373],{},"The best option is the one your team can operate reliably under real load.",{"title":123,"searchDepth":124,"depth":124,"links":375},[376,377,378,379],{"id":310,"depth":124,"text":311},{"id":325,"depth":124,"text":326},{"id":340,"depth":124,"text":341},{"id":355,"depth":124,"text":356},{},{"title":382,"description":304},{"Vector Storage in RAG":383,"description":384,"date":385,"image":386,"minRead":387,"author":388},"Choosing the Right Backend","Comparing RDS, S3, and OpenSearch for latency, cost, security, and multitenancy in production RAG systems.","2026-05-24","\u002Fimages\u002Fterraform_iaac.jpeg",9,{"name":39,"avatar":389},{"src":41,"alt":39},"W0rrGpQDOzFmDhpbcSZeg7ZLEeVbGQlaQjd58_rVNWA",1780323544250]