Blog

Notes on architecture, decisions, and learnings from the systems I build.

Part 1/42026-06-28

Deploying my portfolio to AWS - Part 1: from Next.js to CloudFront

First entry of the thread. I walk through the choice of AWS over simpler alternatives and leave the site running in production, with the bucket private and static-page routing fixed at the edge.

AWSCloudFrontS3JavaScript
Read
Part 2/42026-06-29

Deploying my portfolio to AWS - Part 2: smoothing out the deploy and fixing broken routing

The deploy goes from four manual commands to a single local command, and missing URLs now return a proper 404 instead of the raw bucket error. Two gotchas along the way: one from Windows and one from git.

AWSDeploymentBashGit
Read
Part 3/42026-06-30

Deploying my portfolio to AWS - Part 3: an architect's decisions

The deploy gets automated with no stored credentials. I add a custom domain with TLS, basic observability, and cost guardrails, justified decisions through the Well-Architected Framework pillars.

AWSOIDCGitHub ActionsRoute 53
Read
Part 1/32026-07-01

Building EVA - Part 1: a RAG assistant over my own portfolio

A Full RAG pipeline that answers questions about me from a corner of the portfolio, designed prioritizing cost control and being honest about the limits of retrieval.

RAGAWS BedrockClaude HaikuDynamoDB
Read
Part 2/32026-07-02

Building EVA - Part 2: from pipeline to agent

The linear pipeline turns into an agent: conversation memory, routing by question type, query reformulation when retrieval medition is weak, and an eval suite so nothing regresses on guesswork.

RAGLangGraphClaude HaikuAgents
Read
Part 3/32026-07-03

Building EVA - Part 3: polished implementations and a testing-focused demo

The known limitation is solved by a second reranking stage, and add a guard that reverts the reformulation when it degrades more than it improves.

RAGRerankingCross-encoderEvals
Read