Pular para o conteúdo principal
Escritos · № 03

Notas longas sobre software, sistemas distribuídos e a arte de construir.

Um post, toda segunda-feira. Busque ou navegue pelo arquivo abaixo.

Todos os Posts
55 posts
Engineering01

Arquitetura como código tem três funções: descrever, governar, lembrar

Na primeira semana do Bullpen, o modelo de arquitetura planejado ainda citava um provedor de ações que eu tinha recusado, e uma mudança no rodapé e um teste o seguiram. Nada falhou. Uso esse incidente e outros dois para defender que arquitetura como código tem três funções: descrever o sistema, governá-lo e lembrar por que ele tem a forma que tem. Depois sigo a primeira mudança real após as correções, o analytics de produto, pelas três: um registro de decisão antes que o modelo pudesse citá-lo, arquitetura construída e planejada que discordavam, e uma regra que compõe as duas em vez de editar qualquer uma delas.

11 de out.
Engineering02

Quando usar microsserviços em 2026: escalar, por si só, já não é o motivo

No dia em que o Dow registrou uma alta recorde para a época, os clientes da Robinhood não conseguiram operar da abertura ao fechamento. Separar a parte quente para que ela escale sozinha era a resposta antiga; hoje uma plataforma serverless faz isso por função. Abro esta série com o Bullpen, uma liga de paper trading sobre dados de mercado ao vivo, e defendo quando usar microsserviços em 2026: só por um motivo que eu consiga nomear, com um teste, uma medição ou uma fatura por trás.

4 de out.
AI03

O Portão da Compreensão: Transformando o Entendimento Humano em Restrição de Engenharia

O post anterior apresentou a cobertura de compreensão como conceito. Este é o relato de campo: o instrumento existe, é open source, e sua primeira execução foi em um repositório que eu mesmo mantenho — uma pequena biblioteca desenvolvida predominantemente por meio de agentes de código. Quatro de seis módulos voltaram escuros. A única entidade que o instrumento reconhece como compreendedora do módulo assinatura é um bot. Este post percorre o mapa real, a execução de calibração que discutiu com a especificação e venceu, o rastro de um módulo escuro, as duas falhas que a primeira execução era obrigada a produzir, e o portão que um pipeline de CI já consegue impor — com uma válvula de emergência cujo uso alimenta o próprio mapa. Os cinco primeiros posts tornaram a camada humana explícita. Este a torna aplicável.

27 de set.
AI04

O modelo de IA Jev não consegue alucinar. Ainda assim errou 37% dos e-mails.

O modelo de IA Jev não consegue devolver uma resposta fora do schema que você dá a ele, e a cobertura do lançamento transformou isso na promessa de que ele não consegue alucinar. Em um benchmark independente de phishing, o mesmo modelo errou 37,4% de 2.000 e-mails quando recebeu uma única pergunta ampla, enquanto cinco perguntas estreitas a ele, combinadas em código por uma regressão logística com validação cruzada, chegaram a 95,1%. Li a documentação e os evals da TypeSafe, rodei o adaptador do Pydantic AI e mapeei para que o Jev foi construído, onde as afirmações do lançamento se sustentam e onde eu o colocaria — ou não — em um pipeline.

23 de set.
AI05

Apresentando a cobertura de compreensão

Toda base de código carrega dois mapas: o que os testes verificam, medido até a segunda casa decimal, e o que os humanos ainda entendem, medido por ninguém. Durante vinte anos o segundo mapa vinha de graça com o git blame — autoria implicava compreensão. Os agentes apagaram esse axioma. Partindo do alerta de Naur, feito há quarenta anos, sobre programas que morrem junto com sua teoria, passando pela pesquisa da curva do esquecimento e por um preprint de 2026 que argumenta que toda a família de métricas baseadas em autoria ruiu de uma só vez, estas são minhas anotações apresentando a cobertura de compreensão: um mapa por módulo, por pessoa, baseado em evidências e que decai com o churn, mostrando quais humanos ainda entendem quais partes de um sistema — com o trabalho anterior mais próximo devidamente nomeado, suas condições de refutação anexadas e o instrumento que constrói esse mapa vindo a seguir.

21 de set.
AI06

Fitness Functions São o Control Plane para Agentic Coding

O post anterior perguntou para onde foi o ponto de controle. Aqui está a primeira resposta que estou disposto a defender: ele não desapareceu — parte dele compilou. Fitness functions arquiteturais, apontadas para agentes de código, se tornam o control plane que permite ao desenvolvedor permanecer no comando sem virar o gargalo: julgamento compilado uma vez em gates determinísticos que aplicam a regra na velocidade da máquina, com mensagens de falha escritas como prompt engineering para o loop de retry. Em seguida, a complicação que dá forma ao post inteiro: no momento em que um agente otimiza contra a compilação, o controle compilado vira objeto de ataque — e o design de fitness functions herda uma corrida armamentista, com uma constituição em Kotlin/ArchUnit para tornar tudo concreto.

14 de set.
Engineering07

Stamp vs Control Coupling: Onde Mora a Decisão de Escrita?

Control coupling e stamp coupling ficam lado a lado na taxonomia de Constantine, classificados piores que data coupling e pouco mais. Quando reli isso com um refactor real de applyDiscount em Kotlin à minha frente, o ranking não era a parte interessante. A pergunta que ele não responde é onde a decisão de escrita de fato mora.

7 de set.
Distributed Systems08

O Retry Que Sobreviveu ao Seu Token: Temporal Fakes em Go

Uma vez entreguei um teste que mockava um token como sempre válido, e ele escondeu um retry que alcançou o provedor depois que o token expirou. Estas são minhas notas reconstruindo aquele teste em Go com um temporal fake — um provedor com estado que compartilha um relógio com o código — mais testing/synctest, para que um TTL de 30 segundos rode em microssegundos e a corrida finalmente fique vermelha.

2 de set.
AI09

A Armadilha do Espectador: Mantendo o Controle no Desenvolvimento Assistido por IA

Meus feeds estão cheios de gravações de tela de desenvolvedores assistindo um agente escrever código — e quero nomear essa postura com gentileza: isso é assistir, não produtividade. Fechando a linha de raciocínio de Zero Token Architecture e O Handoff É a Unidade de Design, estas são minhas anotações sobre o plano de controle que um desenvolvedor nunca deveria abandonar: handoffs pequenos e paralelos em vez de accept-all, pesquisa e mapeamento de efeitos colaterais automatizados antes da implementação, e o alerta em formato de Log4Shell sobre entregar código que ninguém entende — com os custos do handoff consciente nomeados com a mesma honestidade que seus benefícios.

28 de ago.
AI10

Previsão agora é uma chamada de biblioteca: anotações de quem rodou o TimesFM 2.5

O TimesFM 2.5 do Google encolheu para 200M de parâmetros, liderou o GIFT-Eval em zero-shot no lançamento e agora está por trás do AI.FORECAST do BigQuery — então rodei o modelo eu mesmo em séries com formato de telemetria. Em zero-shot, ele superou o seasonal-naive em 15% com 0,6s por previsão em CPU. Depois adicionei um salto de nível de 60% uma semana antes da previsão e a baseline de uma linha venceu por 1,5x — enquanto a banda de quantis do modelo silenciosamente alargava 2,6x. Estas são minhas anotações sobre o que chamou atenção, o que observar antes de confiar nele e os casos de uso em que eu realmente o colocaria em produção.

26 de ago.