The signal, not the noise.
Long-form essays and rapid field notes on AI agents, product engineering, careers, and the craft of shipping.
DDD with EventStorming in iTOP: from ticket sale to check-in
Learn DDD in a familiar ticketing domain: events, orders, payments, ticket issuance, check-in, subdomains, bounded contexts, rules and TypeScript.
DDD in practice with EventStorming: from client intake to the first lawsuit
Understand DDD through a legal domain: domain, subdomains, bounded context, aggregate, business rules, EventStorming and simple TypeScript code.
How to use the Domain-Driven Design starter modelling process
Domain-Driven Design gets clearer when a team turns business goals, domain knowledge, architecture, team design and code into one process it can repeat.
Products were automation before software
Automation before software: understand how products, services, and technology packaged processes long before AI.
From feudalism to AI: how to read past revolutions
AI revolution: understand how feudalism, empires, and industry changed scarcity, power, and work so you can decide better now.
The market became an AI experiment
Node.js AsyncLocalStorage: async context without prop drilling
Node.js AsyncLocalStorage carries request context across async code. Learn implementation, use cases, maintainability, and multi-tenancy patterns.
Superpowers vs Agent Skills vs Matt Pocock's Skills
Superpowers vs Agent Skills vs Matt Pocock's Skills: compare autonomy, lifecycle coverage, and daily tooling to choose coding-agent skills with less risk.
Loop Engineering: what it is, where to use it, and when to avoid it
Loop Engineering applies AI agents in cycles with goals, memory, verification, and limits. See where to use it in product, coding, and daily life routines.
Loop Engineering: how AI agents work without you piloting every step
Loop engineering turns prompts into cycles with goals, state, verifiers, and limits. Learn when agent loops help teams and when they burn expensive tokens.
Cognitive distortions for engineers: how to think better under pressure
HTTP QUERY: the safe method with a body is now RFC 10008
HTTP QUERY is now RFC 10008: learn when to use the safe method with a body, how it differs from GET and POST, and what to check before shipping in real APIs.
How I added browser-native TTS to the blog
Browser TTS tutorial for Next.js blog posts: research Web Speech API, plan the player, implement voices, speed control, tests, ship notes, and next steps.
REST vs RPC: when to use gRPC, tRPC, oRPC, or REST
REST vs RPC: compare performance, OpenAPI, typed errors, streaming, and DX to choose between REST APIs, gRPC, tRPC, and oRPC in real production systems.
What agentic AI means: the autonomous car reread
Agentic AI is autonomy with human judgment. Learn the difference from AI-assisted systems through the autonomous car metaphor.
How software development changed in 2026
How I built Ask Thiago: a public RAG for my blog
Ask Thiago shows how to ship a public blog RAG with published content, cited sources, search fallback, optional AI Gateway, and safe feature flag rollout.
Beginners should not start with JavaScript
JavaScript for beginners feels easy, but it teaches risky habits early. Start with compiler feedback, types and immutability before scaling real codebases.
Sandcastle vs Flue: coding agent runner or agent framework?
Sandcastle vs Flue: compare function, sandboxing, Git, sessions, workflows, and deploy to choose a coding agent runner or agent framework.
The web system bottleneck is rarely CPU. It is I/O
Understand why web systems slow down more from I/O than CPU, and how Node.js with TypeScript reduces latency without premature architecture.
Code review process: how to review code without blocking the team
Deploy cancelled by Out Of Memory: WiredTiger cache in containers
A Dokploy deploy stopped during the Next.js build and was cancelled without a clear error. The cause was memory pressure: two MongoDB instances in containers calculated their WiredTiger cache from the VPS RAM, not from an isolated container limit.
RPC, REST and GraphQL: the same remote call with different interfaces
In a fullstack TypeScript web app, REST, GraphQL and RPC/tRPC look like three different worlds. But all three serialize data, send it over HTTP and read the response back. They all live on OSI layer 7. What changes is not how remote the call is, it is the mental interface at the top, and the price each abstraction charges. With the tRPC vs Server Action contrast on the same create.
The harness is the product
WorkOS, Stripe, and OpenAI arrived, through different paths, at the same conclusion about coding agents: senior engineering stopped being about writing code and became about building the harness that makes the agent write code reliably.
Where Java with Spring Boot still beats Node.js (and where it doesn't)
It is not Java vs Node in the abstract. It is about where the maturity of the Spring ecosystem solves the boring production problems out of the box, the ones Node still puts together piece by piece, and where Node + TypeScript stay the obvious call. With honesty about Virtual Threads, types that vanish at runtime, and what really decides: the requirement.
Back to the fundamentals: I'm taking Andrew Ng's Machine Learning Specialization
LlamaIndex: orchestrating your data with LLMs
How LlamaIndex solves the problem of connecting private data to language models — from ingestion to RAG, agents, and query engines.
14 books every engineer should read — and the core lesson of each
Chip Huyen's non-technical reading list, with a summary and the practical takeaway from each book: from complex systems to cryptography, by way of chance, design, and scientific ethics.
Anatomy of an agent: what tools really are
Starting from Chip Huyen's agents essay and reading the code of an open-source coding agent, we unpack what a tool is, how the model calls it, and why defensive prompt engineering isn't optional.
MCP vs CLI: what each is, when to use them and when not to
MCP (Model Context Protocol) standardizes how AI apps discover and use external tools. But not every agent needs MCP — a plain CLI often wins on cost and speed. I walk through what MCP is, the client → server flow, real use cases, when it's overkill, and why CLI beats MCP for popular tooling.
My AI journey: from ChatGPT in 2023 to the creative chaos of 2026
Why Markdown is the lingua franca of LLMs and what it changes for your RAG
Markdown is not just a human-friendly format — it's the syntax LLMs were trained on at scale. Why it improves table understanding, chunking, and RAG quality — and where the claim deserves nuance.
Conductor: orchestrating multiple AI agents on Mac without the mess
My experience using Conductor to run Claude Code and Codex in parallel inside isolated workspaces, with git worktrees, diff viewer, and merge — without ever opening GitHub.
Reasoning Is Planning: how RAP changes the way LLMs think
How the RAP framework (Reasoning via Planning) turns an LLM into both agent and world model, then uses Monte Carlo Tree Search to unlock deliberate planning — beating GPT-4 + CoT on Blocksworld with just LLaMA-33B.
llama.cpp hits 100k stars: the local agents era has begun
Why llama.cpp's milestone and Pi running Qwen3.6 on a MacBook in airplane mode mark the start of the second AI revolution — local, sovereign, and plural.
Lenis in Next.js: how 19 lines turned the site's scroll cinematic
In 2026, use Postgres — until requirements say otherwise
Consolidating Elasticsearch, Redis, Pinecone, Kafka, and MongoDB into Postgres is the right bet for most teams — the AI-agent era only reinforces it. But honestly: where Postgres shines, where it hits a wall (CAP, sharding, replication), what to use for a distributed banking core (CockroachDB, Spanner, MongoDB, Cassandra), and why it all starts with requirements.
How to build a GenAI platform: a 7-layer tutorial
A practical walk-through to evolve a generative AI app — from a single model call to a full platform with RAG, guardrails, gateway, cache, agents, observability, and orchestration. Based on Chip Huyen's essay.
Why Python and PyTorch dominate ML inference
Python is the glue language, PyTorch won on eager mode, and almost no one serves raw PyTorch in production. The rationale behind today's default ML stack.
What is an agent, actually?
An honest definition of AI agents, distilled from Chip Huyen, Anthropic, and Cedric Chee: perception plus action in an environment, with tools, memory, and a decision loop.
RAG end to end: Input, Retriever, and Generator explained
The AI Engineering Stack: an applied summary
What changes when AI engineering stops being ML engineering: the three layers of the stack, why product now comes before model, and where the real complexity moved.
Pinecone: the default vector database for RAG
What Pinecone is, when it makes sense, how it works, and the trade-offs against pgvector, Qdrant, Turbopuffer, and Upstash Vector.
pgvector + Aurora PostgreSQL for embeddings: why I picked it (and how I use it)
The rationale for choosing Aurora PostgreSQL with pgvector over a dedicated vector database, plus a hands-on setup, indexing, and query guide using Drizzle.
GoodAIList: the living map of open-source AI repositories
Why Chip Huyen's GoodAIList became my go-to lens for tracking the open-source AI ecosystem — and how to actually use it.
6 common pitfalls when building generative AI applications
Leaving the cloud: why 2026 is the year of the bare metal comeback
Cloud repatriation stopped being a Twitter take and became a real movement. The rationale behind moving back to bare metal, the numbers that matter, and when it actually makes sense for your team.
AI stack trends across 7 companies: what The Pragmatic Engineer actually shows
AWS Bedrock, Postgres with pgvector, LangChain, and the move down to the metal: the useful read isn't the list of tools — it's the curve they trace.
PRD vs SPEC: which one to write first (and why with AI it matters more)
The practical difference between a Product Requirements Document and a Technical Specification, the natural flow between them, and why skipping the PRD in the AI era is the fastest path to shipping the wrong thing.
LLM Wiki: Karpathy's Idea for Real Memory in AI Agents
Karpathy proposed swapping RAG for a persistent wiki that the LLM maintains on its own. Why it reframes the agent memory debate, and what Fabio Akita adds about the practical side.
What would the best programming language for AI agents be?
Volumetric light, fog rings and 3D parallax: rebuilding the hero in pure CSS/SVG
Five techniques used to redesign the home hero — Grok-style volumetric beam, dissolved photo edges, organic fog ring, mouse-driven 3D tilt, and AI background removal — taught both as prompts and as code.
The MacBook and the minimalist distro: why 2026 is the year to test AI tools
A reply to Akita about oh-my-pi and OpenCode. The Linux analogy works — but maybe Claude Code is the MacBook, and Pi is the minimalist distro you admire but can't keep maintaining.
I fear regret more than failure
A personal reflection on leaving stability, pursuing an international tech career, and accepting that some decisions are still worth it even when they hurt.
The new visual identity of my website and blog: Futurist Minimalism + Agentic AI
The rationale behind the redesign: palette, typography, visual primitives, and engineering decisions to make the website more distinctive, modern, and alive.
Harness Engineering: what makes AI agents ship real software
Software Developer/Engineer Career Levels
A practical guide to software engineering career levels, from junior to distinguished engineer, and the skills expected at each stage.
Imposter Syndrome in Tech
A reflection inspired by Julie Pagano's talk on insecurity, anxiety, confidence, and the invisible monsters that follow people through tech careers.
Agent Harness Engineering in practice
Why coding agent performance depends more on the harness than on the model alone, and how to apply that in day-to-day engineering.
Git Worktree: The Standard for Juggling Multiple Features and Running Agents in Parallel
Many working trees, one repository. How git worktree kills destructive context switching, runs multiple AI agents in parallel, and why it beats cloning the repo by hand.
Vibe Coding vs Agentic Engineering
Avoiding In-Memory Aggregation and Overfetching in MongoDB with Prisma
How we stopped loading entire collections into Node.js and let the database do its job.
Getting Started with Next.js 15
Learn how to build modern web applications with Next.js 15, the latest version with App Router and React Server Components.
TypeScript Tips for React Developers
Essential TypeScript patterns and tips that will make your React code more type-safe and maintainable.
How to Add Blurred Text in React Native
A stylish way to hide information in your React Native app using BlurView.
Organizing Your Backend: Services or Helpers?
Using for await...of to Iterate Sync and Async Arrays in JavaScript
How the for await...of loop simplifies async data handling, with practical examples.
Conventional Commits in Practice: Patterns for a Better Git History
Hands-on guide to writing better commit messages with Conventional Commits — types, scope, examples, and a cheat sheet.
AbortController: Manage Memory Efficiently in React
How to use AbortController to cancel fetch requests and prevent memory leaks in React components.
How to Validate US Shipping Addresses with JavaScript and React
Two approaches to validate US shipping addresses: Google Maps Geocoding API and client-side validation with React Hook Form + Zod.
Sharing Env Vars in a Monorepo with Vite and Next.js
How to Learn Quick
Study techniques and habits to accelerate your learning — without falling for the illusion that you can learn everything in a few days.
What Is Technical Debt?
What technical debt is, when it happens, and how to manage it so it doesn't drag your software down.
How to create a custom random ID with Postgres
Helper function for creating a custom random ID like a9Kl12
Web3 - What to build?
Know about what kind of solutions you can build using web3 technology
How to Deploy a Monorepo with TurboRepo on Heroku
How to merge two or more repos into a new one without losing the history of commits
TurboRepo in Action
Becoming a fitness Dev
The Five Do's for good daily habits that you should begin today.
React Suspense - in the right way
Study case about how to use React Suspense
Basic Wax blockchain
Useful links, sample code about how to interact with
How to get the first job
Using find with delete flag
Nice command Unix find.
Expansion Week at Rocketseat
To infinity and beyond — second edition of EW/RS
Understanding Falsy and Truthy values in JavaScript
Both concepts are very common and essential for JavaScript Developers. They are widely used in Back-end and Front-end Apps.
My First Next Level Week at Rocketseat
Impressions and reflections on Rocketseat's Next Level Week
Renaming a Branch in Git
Types of Parameters in REST Requests
Conceptualizing and differentiating the types of request parameters in REST APIs.
Quick Tips about React Native
Some quick tips for React Native beginners and I recommend a nice podcast
How to install React Native with Typescript
I'll show how to install React Native with Typescript
Introduction to GraphQL with NodeJS and MongoDB
Get started with GraphQL on a Node.js backend backed by MongoDB — schema, resolvers, queries and mutations from scratch.
How to access Redis from inside Docker and run queries
GoBarber - Mobile App with React Native
My class notes and code from the Rocketseat bootcamp, where we build a mobile app that consumes a Node.js API
Using react-native-vector-icons in React Native - ANDROID
How to set up and use react-native-vector-icons on Android in modern React Native projects
GoBarber Web - Frontend Application with React
My class notes and code from the Rocketseat bootcamp; in this project we build a frontend that consumes the GoBarber Node.js API
React Hooks + Redux (useSelector) + Unform
Boosting productivity with React Hooks + Redux (useSelector) and Unform
React and Redux Hooks API: a practical guide
Flux Architecture: A Rocketshoes E-commerce
Let's build a Rocketshoes e-commerce to learn Flux through a Redux implementation, using Redux Saga to handle side effects for asynchronous features
Meet Polished: a JS library for color manipulation
I really enjoyed lightening and darkening colors with the polished library — it pairs nicely with Styled Components for component styling.
Introduction to React Native
How to set up webpack, babel, and the CSS and image loaders, plus the main React lifecycle methods
Using react-native-vector-icons in React Native - iOS
How to install and use react-native-vector-icons on iOS with React Native 0.61+ (autolinking).
First Project with ReactJS
Introduction to React
How to set up webpack, babel and the css/image loaders, plus the main React lifecycle methods
Continuing the GoBarber API
Let's continue the GoBarber application and learn some advanced techniques and best development practices.
GoBarber - Backend Application
My class notes and code from Rocketseat's bootcamp — in this project we build an API with NodeJS
Creating a Node.js project
See how easy it is to bootstrap a Node.js project in Visual Studio Code
Node.js Concepts
My Development Environment
A walkthrough of my hardware, IDE, extensions, terminal, plugins, fonts, theme, and tools for software development
Ignoring git status when file or folder permissions change in a git-versioned project
If someone runs chmod 777 -Rf * on a project directory or ...
How to keep your repository updated with main project
How to keep your repository updated with main project
Higher-Order Function with Reduce
Higher-Order Function with Reduce — Recompose's Compose explained
Ten Rules for Achieving English Fluency
High Order Functions — Easy Mode
I intend to explain a little bit about High Order Functions with Javascript.
Finding and Sorting Records by Date in Mongo with Meteor
A quick tip on Meteor's Mongo sort syntax and why it differs from the raw MongoDB query.
Downloading npm packages behind a proxy
How to install npm packages from inside a network with a proxy.
How to install Node.js via binary archive on Linux?
How to install Node.js via binary archive on Linux?
Help for learning English
Practice Itself
Practice Itself — Starting to speak English — Baby Steps
Creating a Code Snippet in VSCode
See how easy it is to create a boilerplate in Visual Studio Code
Basics of Component Composition
Fundação Bradesco course, free online course
Importing and exporting files in MongoDB with Meteor
Import/Export files in MongoDB using Meteor to handle the import flow
Reading Tip - JS Cangaceiro
Configuring a custom domain for GitHub Pages
A quick tutorial on how to host a static site on GitHub Pages and point a custom domain to it.
Computer Scientist
My graduation ceremony for the Bachelor's in Computer Science at Uniderp in Campo Grande/MS
Parallel Processing and Distributed Systems
chat_ppsd project — Parallel Processing and Distributed Systems
A logic book with OO in Java
Reading tip: Applying Object-Oriented Logic in Java
Emulating your apps directly from the phone
PostgreSQL Course
Handbook for a PostgreSQL course
