Conexão · Interrompida

Algo não carregou

Parte desta página não chegou até você. Recarregue para tentar novamente — se persistir, verifique sua conexão.

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
30 posts
Distributed Systems01

Descarte Primeiro as Requisições Certas: Load Shedding Baseado em Prioridade sob Sobrecarga

Limites estáticos de RPS descartam o tráfego errado. Concorrência é o que satura um serviço, não a taxa de requisições. A partir das minhas anotações após ler o artigo do InfoQ sobre proteção contra sobrecarga, o post de janeiro da Uber sobre o Cinnamon e a palestra da Netflix no QCon SF sobre load shedding priorizado em nível de serviço, eis por que latência é o sinal de controle correto — e como uma pequena taxonomia de prioridades aliada a um limite adaptativo de concorrência mantém o tráfego mais barato sendo descartado primeiro.

28 de mai.
Distributed Systems02

Actor-per-Entity vs Bloqueio Otimista no Postgres: Um Comparativo em Reserva de Assentos

Executei a mesma carga de trabalho de reserva de assentos com hot key de duas formas: Postgres com coluna de versão e retries, e um único actor por assento. O design com actor não escalou melhor — ele moveu o problema difícil do controle de concorrência para a corretude de roteamento e rebalanceamento, e essa troca foi a mais fácil de raciocinar sob hot keys.

26 de mai.
Distributed Systems03

Auditando um serviço Scala contra as quatro restrições regenerativas de Chad Fowler

Levei um serviço Scala de processamento de pedidos das minhas anotações pelas quatro restrições regenerativas de Chad Fowler. Duas passaram de graça, duas forçariam um redesign de verdade. Aqui está o que aprendi sobre onde "módulo fracamente acoplado" termina e "componente regenerativo" começa, e quais partes do redesign eu de fato pagaria.

23 de mai.
Research04

Pré-registrando o Experimento #1: Quão Frágeis São os Prompts de Extração de JSON em Produção?

O primeiro experimento concreto da linha de pesquisa de precisão — comprometido em público antes da coleta dos dados. Cinco classes de perturbação, quinze variantes, quatro métricas, quatro hipóteses falsificáveis e um repositório companion executável com testes.

21 de mai.
Backend05

Execução Durável Não É Sobre Agentes — É Sobre Workflows de Backend com Replay

Cheguei aos runtimes de execução durável pela hype dos agentes, mas a restrição que surpreende todo mundo é o determinismo no replay. Estas são minhas anotações trabalhando uma reconciliação de pagamentos de seis passos como um workflow do Restate em TypeScript — a linha que quebrou o replay, o modelo mental que consertou, e os trade-offs que vêm com o padrão.

19 de mai.
Research06

Prompts de IA: Quão Bons e Quão Ruins Eles São — Abrindo uma Nova Linha de Pesquisa

Um olhar honesto sobre onde os prompts funcionam, onde eles falham silenciosamente e a suposição que paramos de questionar — a de que a IA precisa cometer erros. O tiro de abertura de uma linha de pesquisa sobre sair do "melhor esforço" para a precisão especificável e mensurável.

16 de mai.
AI07

Code Graphs para Coding Agents: O Formato de Entrega Importa Mais que o Algoritmo

Passei um fim de semana apontando um coding agent para um monorepo Go de 480 mil linhas e vendo ele entrar em loop de grep por 38 chamadas de ferramenta em uma pergunta. Code graphs derivados de AST resolvem isso, mas o formato de entrega — MCP local via stdio, serviço remoto ou skill — muda a economia mais do que o algoritmo do grafo. Aqui está onde eu colocaria um em 2026, com um indexador Go mínimo que dá para soltar ao lado do agente.

14 de mai.
Distributed Systems08

AckWait É um Contrato: Como um Default de 30 Segundos Derrubou Meu Consumer JetStream

Perdi uma noite com um pull consumer NATS JetStream que dobrou seu trabalho em produção. A causa foram três linhas de ConsumerConfig que eu nunca escrevi. Estas são minhas anotações sobre o que o AckWait realmente conta, por que MaxDeliver = -1 é a armadilha silenciosa e o contrato Go de 70 linhas que agora envio em todo consumer JetStream.

12 de mai.
Engineering09

Idempotência É um Protocolo, Não uma Chave

Na primeira vez em que entreguei idempotência como um header UUID e uma consulta no Redis, uma cobrança duplicada escapou uma semana depois. Estas são minhas notas sobre tratar idempotência como um protocolo de quatro partes — deduplicação, determinismo, segurança concorrente, propagação downstream — com uma implementação mínima em Kotlin mais Postgres que se mantém firme sob retry.

9 de mai.
Engineering10

O que `dbos ontime` realmente está perguntando: construindo um cron distribuído com leases do etcd em Go

Uma busca 0-click por `dbos ontime` apareceu no meu Search Console na semana passada. Quem digitou isso não está perguntando sobre DBOS — está perguntando como rodar um job a cada minuto, exatamente uma vez, em uma frota de máquinas. Pelas minhas próprias anotações, um lease do etcd, o pacote `concurrency.Election` e um fencing token cobrem esse caso em menos de 100 linhas de Go, sem precisar trazer um workflow engine.

7 de mai.