Blog

A builder's notes

AI-assisted development, serverless architecture on AWS and modern frontend. All learned building real products.

Featured
IA Jul 9, 2026 · 10 min

How to survive as a programmer in the AI era (without turning cynical or naive)

AI isn't coming for your job — it's coming for your tasks. What's really changing, which skills are appreciating, and which ones are quietly losing value.

Read article →
IA Nov 13, 2026 · 6 min

Your API is not an MCP server: designing tools an agent can actually use

Wrapping your REST endpoints one by one is the fastest way to build a useless MCP. Granularity, schemas that teach, the caller identity, and idempotency for when the model retries.

Read article →
AWS Aug 18, 2026 · 5 min

Lambda vs PostgreSQL: the day you run out of connections

A connection pool and an ephemeral function are two ideas that contradict each other. Why connections run out, what RDS Proxy actually fixes, and what you can fix for free before paying for it.

Read article →
Frontend Aug 10, 2026 · 5 min

Loading states: that centered spinner is a product decision

While the data loads there is a screen almost nobody designs. Skeletons that do not shift, streaming with Suspense, and the delay trick that makes an app feel fast.

Read article →
AWS Aug 3, 2026 · 6 min

CloudFront in front of your app: why your hit rate is 30%

Adding a CDN is not caching. The cache key, your origin's Cache-Control and how you invalidate decide whether CloudFront saves you money or just adds one more hop.

Read article →
Frontend Jul 21, 2026 · 5 min

INP: why your app feels slow even when it loads fast

A green LCP does not mean your app responds well. INP measures what the user feels on every click, and fixing it changes how your product is perceived.

Read article →
IA Jul 9, 2026 · 8 min

Cheaper embeddings: trimming dimensions and quantizing without losing recall

How I decide how many dimensions to keep and at what precision, and why I almost always end up with a two-phase scheme: small vectors on top, precise ones underneath.

Read article →
Frontend Jul 9, 2026 · 7 min

Forms that work without JavaScript (and better with it)

The progressive enhancement pattern I use for forms: the platform solves the base case, JavaScript only adds layers, and neither path is second-class.

Read article →
IA Jul 9, 2026 · 13 min

What's going to happen to software development: predictions with dates (July 2026)

What to expect in the coming months, in 2027 and toward 2030: agents, the future of web and apps, and what happens to programmers. With data, not vibes.

Read article →
AWS Jul 9, 2026 · 8 min

The NAT Gateway nobody asked for: your VPC's silent bill

Why the most expensive component in many AWS accounts is a networking piece nobody remembers designing, and how VPC endpoints change that equation.

Read article →
IA Jul 9, 2026 · 10 min

How to survive as a programmer in the AI era (without turning cynical or naive)

AI isn't coming for your job — it's coming for your tasks. What's really changing, which skills are appreciating, and which ones are quietly losing value.

Read article →
IA Jul 9, 2026 · 12 min

The startup stack in July 2026: what I would use today to build a SaaS

An honest map of the ecosystem: coding agents, models, frameworks, infra and the AI layer. What I would pick today and why, with real prices.

Read article →
IA Jul 9, 2026 · 11 min

AI-built startups in 2026: the real numbers behind the hype

Cursor, Lovable, Cognition, Base44, Cal AI and the YC data: what they actually earn, with how many people, and which patterns repeat. With charts.

Read article →
IA Jul 8, 2026 · 8 min

Fine-tuning, RAG or prompting: how I decide which to use

An honest decision tree for choosing between fine-tuning a model, building RAG, or staying with prompting, with the real cost of each branch.

Read article →
AWS Jul 8, 2026 · 8 min

Step Functions: when an orchestrator beats chaining Lambdas

Why I move the coordination logic of long processes out of code and into an explicit state machine, and the trade-offs that implies.

Read article →
Frontend Jul 8, 2026 · 7 min

Web Workers: getting heavy work off the main thread

When moving computation to a real worker improves the UI and when it only adds complexity, with the pattern I use to avoid fighting postMessage.

Read article →
IA Jul 7, 2026 · 8 min

Semantic caching for LLMs: pay once for answers you already gave

How to use embeddings to detect repeated questions and serve cached answers without calling the model, pitfalls included.

Read article →
Frontend Jul 7, 2026 · 7 min

Container queries: the day I stopped lying to my components

Why media queries break the promise of a reusable component and how container queries actually keep it.

Read article →
AWS Jul 7, 2026 · 8 min

EventBridge: decoupling services without building a queue monster

When an event bus beats calling services directly or chaining SQS queues, and the trade-offs I accepted adopting it.

Read article →
Frontend Jul 7, 2026 · 7 min

Server Actions in Next.js: where they shine and where I refuse to use them

Server Actions eliminate API boilerplate, but they are not a universal replacement for endpoints. My criteria for deciding.

Read article →
AWS Jul 7, 2026 · 7 min

Serverless observability: structured logs or debugging blind

In Lambda there is no server to SSH into. How I structure logs, correlate requests, and find failures without losing my mind.

Read article →
IA Jul 7, 2026 · 8 min

Rerankers: the piece my semantic search was missing

Embeddings retrieve reasonable candidates; the reranker decides which ones deserve the top. Here is how I combine them without doubling latency.

Read article →
AWS Jul 7, 2026 · 7 min

File uploads with presigned URLs: let S3 do the heavy lifting

Why I stopped piping files through my backend and how to design the presigned URL flow without security holes.

Read article →
IA Jul 7, 2026 · 8 min

Tool calling in production: the LLM doesn't execute, it proposes

The mental model that avoids half the bugs in a tool-using agent: the LLM suggests calls, your code decides whether they run.

Read article →
Frontend Jul 7, 2026 · 7 min

One Zod schema to rule them all: shared client/server validation

Duplicating validation between the form and the API is a source of silent bugs. Here is how I share a single schema across both worlds.

Read article →
Frontend Jul 6, 2026 · 7 min

Islands in Astro: when to hydrate and when not to

Astro's partial hydration isn't magic: it's a per-component decision you make, and getting it wrong costs JavaScript nobody asked for.

Read article →
Frontend Jul 6, 2026 · 7 min

View Transitions in Astro: SPA-like navigation without the SPA weight

How I get smooth page-to-page transitions and state that survives navigation without giving up the HTML Astro serves by default.

Read article →
AWS Jul 6, 2026 · 7 min

Queues with SQS: retries that don't duplicate work

How I make SQS retries safe in JXBS without sending duplicate emails, charges, or state changes.

Read article →
AWS Jul 6, 2026 · 8 min

DynamoDB single-table: the pattern that took me longest to get

Why cramming several entities into one DynamoDB table stops looking insane once you think in access patterns instead of entities.

Read article →
AWS Jul 6, 2026 · 7 min

Lambda or Fargate: how I decide which to use

I stopped asking which is better and started asking what shape the workload has. The answer almost always falls out of that.

Read article →
IA Jul 6, 2026 · 8 min

Evals for LLM features: how I know I didn't break anything

Without a set of evals, every prompt or model change is a blind bet. Here is how I built mine.

Read article →
IA Jul 6, 2026 · 8 min

Structured outputs with LLMs: how I stopped parsing text by hand

Why function calling and Zod validation turned my LLMs-in-product from a fragile component into a reliable piece of infrastructure.

Read article →
AWS Jul 6, 2026 · 8 min

OpenTofu modules you won't hate six months from now

Most infrastructure modules age badly. These are the limits I set for myself so they don't.

Read article →
IA Jul 6, 2026 · 8 min

RAG in production: chunking matters more than the model

How you split your documents decides more about RAG quality than the LLM you put on top.

Read article →
Frontend Jul 6, 2026 · 7 min

Modeling the domain with types: when the compiler writes your tests

A good type model makes impossible states fail to compile. Here is how I use TypeScript for that.

Read article →
IA Jun 12, 2026 · 8 min

Cursor + Claude on a real team: integrating AI without losing quality

What to automate, what to always review, and how to keep the team sharp when AI writes half the code.

Read article →
AWS May 28, 2026 · 10 min

Painless serverless: Amplify, Lambda and DynamoDB for real apps

The architecture behind the Toyota Colombia admin panel: decisions, trade-offs, and what I would change today.

Read article →
Frontend May 15, 2026 · 6 min

Offline-first PWAs: apps that work when the signal does not

Service Workers, smart caching and deferred sync for events with spotty connectivity.

Read article →
IA Apr 30, 2026 · 7 min

Embeddings + pgvector: semantic matching in PostgreSQL

How we built the JXBS matching engine without adding a dedicated vector database.

Read article →
AWS Apr 18, 2026 · 9 min

From monolith to per-audience backends: migration lessons

Why we split a shared NestJS backend, and the pnpm DI pitfalls nobody warns you about.

Read article →
Frontend Apr 2, 2026 · 5 min

The design system as a product: maintaining a shared UI library

Versioning, tokens and component discipline when several portals depend on your library.

Read article →