Thoughts

Notes on software engineering, distributed systems, and the future of human productivity.

A URL That Speaks Markdown

The article you are reading is also a plain-markdown file, a .md away. This is the content negotiation that serves the same writing to people and to machines from one source, and why it matters now that some of your readers are not people.

More Backend Than a Blog Needs

How pablofr.com is actually built. Three services, a shared data-stack of Postgres, Meilisearch and Redis, one real work queue, and a lot of SSE. Why a personal site is over-engineered on purpose, and where that pays off.

Understanding React Server Components

How React Server Components split an app across the server/client boundary, why they never hydrate, and the composition pattern for putting server content inside a client component.

Getting Started with Next.js 16

What actually changed in Next.js 16, from the "use cache" directive to Turbopack as the default bundler, the React Compiler on by default, proxy.ts in place of middleware, and native View Transitions.