Pular para o conteúdo principal
Escritos · № 03

Todos posts

Notas longas sobre software, sistemas distribuídos e a arte de construir. Publicando uma por semana.

Todos os Posts
37 posts
Engineering01

Engenharia Antes da Inferência: A Pergunta Que a Zero Token Architecture Está Realmente Fazendo

Ultimamente eu venho ouvindo uma frase que teria sido absurda três anos atrás: "não consigo fazer agora — fiquei sem tokens". Estas são minhas anotações depois de investigar a Zero Token Architecture — a ideia que Kelsey Hightower levou de um post descartável a uma keynote na PlatformCon — e o princípio que quero construir em cima dela: toda chamada de IA é uma decisão de arquitetura, e os custos que mais importam nunca foram os tokens.

26 de jul.
Distributed Systems02

Read-Your-Writes é um Contrato de Sessão, Não uma Configuração de Banco

Adicionei uma réplica de leitura e, em um dia, usuários reportaram edições que "não salvaram" — elas tinham salvado, mas as leituras correram contra o stream de replicação e perderam. Estas são minhas notas sobre por que read-your-writes é um contrato de sessão em vez de uma configuração de réplica, reproduzido com 50 ms de lag fixo em Go, e as três formas de carregá-lo — roteamento sticky, um token de versão estilo GTID e uma espera de bounded-staleness — comparadas em custo.

22 de jul.
Engineering03

Quando o SQL Basta para Streaming: O Que a Manutenção Incremental de Visões Garante — e O Que Ela Recusa

A promessa de 2026 é que um job de stream escrito à mão se resume a um único CREATE MATERIALIZED VIEW, então construí um no RisingWave e passei meu tempo de estudo tentando quebrá-lo. Estas são minhas anotações sobre a consistência que a visão realmente entrega conforme os eventos chegam, por que cada join nela é uma conta de memória permanente, e as queries que se recusam a ser incrementais — com um consumidor Node acompanhando o changefeed da visão sobre o protocolo puro do Postgres.

19 de jul.
Engineering04

Java 26 Chegou: Os Recursos para Acompanhar Antes do LTS do Java 29

A maioria das equipes de backend roda apenas as linhas LTS, então o Java 26 parece dispensável. Não é — é o preview mais claro do que o LTS do Java 29 vai conter. Estas são minhas anotações sobre o que já está finalizado (cache de objetos AOT com ZGC, um G1 mais rápido, HTTP/3), o único preview pelo qual eu reescreveria código (Lazy Constants, com um exemplo executável) e a mudança de integridade que vai quebrar builds.

15 de jul.
Engineering05

A Zona de Transição: O Backend Está Se Tornando Software Que Dorme

Vi o estado quebrar o monólito, depois os microsserviços, depois o serverless — e passei meses lendo os changelogs que me convenceram de que a terceira quebra acabou de ser resolvida. Estas são minhas anotações sobre a convergência de 2024–2026 entre compute efêmero e estado durável, por que o modelo de cobrança é o indício revelador, e o experimento A/B com o qual este post me compromete: reconstruir sobre o novo substrato um problema que já resolvi em Spring Boot, com os números publicados de qualquer forma.

12 de jul.
Engineering06

O Servidor Agora É um Relay de Sincronização: Arquitetando em Torno do Estado que Pertence ao Cliente

Na QCon London 2026, Kleppmann descreveu o local-first como o melhor do Google Sheets e o melhor do Git, e neste ano os sync engines chegaram ao mercado. A partir da minha leitura do Electric, do Zero e do LiveStore lado a lado, estas são minhas anotações sobre o que muda quando a cópia do cliente se torna primária: onde os conflitos são resolvidos, o que o servidor ainda controla e a linha entre mesclar e recusar que decide quais aplicações nunca devem ser construídas dessa forma.

8 de jul.
Distributed Systems07

Relógios Lógicos Híbridos: Fazendo o Last-Write-Wins Significar a Escrita Mais Recente

O last-write-wins baseado em relógio de parede mantém a escrita do relógio mais rápido, e não a do evento mais recente — e descarta silenciosamente dados causalmente mais novos sob desvio (skew). Estas são minhas notas reconstruindo um Relógio Lógico Híbrido em Go: um timestamp de 64 bits, monotônico e causal, por que seu contador permanece limitado, e quanto isso custa em reinícios por incerteza no estilo do CockroachDB.

8 de jul.
Engineering08

Transformando Manutenção de Repositório em Markdown: Mantendo uma Codebase Rust Viva com Workflows Agênticos

Repositórios de vida longa sofrem drift: componentes depreciados persistem, camadas sangram e testes não cobrem as funções que de fato quebram. No meu próprio estudo, transformei três tarefas recorrentes em workflows markdown agendados que o próprio repositório roda sobre si mesmo, e depois escrevi o que aprendi sobre limitar o raio de impacto, parear checagens LLM com scans determinísticos, e deixar os agentes rascunharem formatos enquanto eu escrevo a substância.

5 de jul.
Engineering09

O que o APISIX no Anel Trial Realmente Oferece: Notas sobre seu Plano de Controle Baseado em etcd

O Volume 34 do Thoughtworks Technology Radar moveu o Apache APISIX para o anel Trial. Passei uma semana investigando a documentação, o código-fonte e alguns bug reports para me convencer de que a alegação de roteamento dinâmico baseado em etcd era real — e para pesar o custo operacional que ela esconde. Estas são minhas notas sobre o mecanismo de watch, o precipício de escala de conexões nos 263 long polls, e quando eu recorreria ou não ao APISIX em 2026.

1 de jul.
Engineering10

Concorrência Estruturada Parece Igual em Quatro Runtimes — Até um Filho Falhar

Escrevi o mesmo fan-out quatro vezes — Java 25 StructuredTaskScope, Kotlin coroutineScope, Swift withThrowingTaskGroup, Python asyncio.TaskGroup — e a API de superfície é quase intercambiável. As semânticas de cancelamento e agregação de exceções não são. Estas são minhas notas sobre o que diverge no caminho de falha e por que apenas Python te entrega todas as falhas por padrão.

28 de jun.