Ideias & Insights

Explorando desenvolvimento AI-first, guardrails de código e a arquitetura da descartabilidade.

Sim, Mas Seu Sistema de Tipos Precisa Saber O Que É Um Dólar

O TypeScript trata todos os números como idênticos. Veja como ensiná-lo a distinguir USD de EUR para que o compilador capture bugs de conversão de moeda antes que eles cheguem à produção.

Em 2022, uma grande plataforma fintech processou uma transferência em massa de 32.700.000,00. O valor estava armazenado como um simples. Um serviço downstream…

Um número não é apenas um número: como fazer o compiler detectar bugs de unidade

Passar milliseconds onde seconds eram esperados é um bug que passa em todos os testes. Veja como codificar unidades diretamente no sistema de tipos do TypeScript para que confusões falhem em tempo de compilação com zero custo em runtime.

Uma função pede um timeout em milliseconds. Você passa . Mais tarde, outra função pede um timeout em seconds. Você passa . Em algum lugar entre elas, você…

Differential Testing Funciona Sem uma Prova Formal, mas Common-Mode Failures São o Problema

Differential testing permite encontrar bugs sem saber a resposta correta. O problema é que erros correlacionados parecem concordância. Veja como identificar os pontos cegos.

Você pode confiar em differential testing sem uma prova formal, mas apenas se entender exatamente onde ele falha. A fraqueza se chama common-mode failure.…

Testes Não Provarão Que Duas Funções São Equivalentes. Veja o Que Vai.

A programação N-version assume que suas implementações concordam. Veja por que os testes não são suficientes, como os solvers SMT podem de fato provar equivalência, e onde traçar a linha entre bom o suficiente e formalmente verificado.

Você construiu um sistema n-version. Três implementações independentes da mesma função crítica, um voter que escolhe o resultado da maioria, e uma sensação de…

E Se Minhas Variantes de LLM Discordarem? Qual Está Certa?

Executar múltiplos LLMs em paralelo captura erros que qualquer modelo individual enviaria com confiança. Aqui está como construir um sistema de resolução de divergências que realmente funciona.

Você envia um prompt para o GPT-4o. Ele retorna um blob JSON com uma confiança de 0.97. Você envia o mesmo prompt para o Claude 3.5 Sonnet. Ele retorna um blob…

Cinco Implementações e Nenhuma Maioria: Como Escolher a Melhor na Prática

N-version programming parece simples: execute várias implementações e escolha a melhor resposta. Na prática, 'melhor' é muito mais difícil de definir do que 'mais comum'.

Você tem cinco implementações da mesma função. Três retornam o mesmo resultado. Uma é ligeiramente diferente. Uma lança uma exceção. Qual está certa? A maioria…

O Mesmo LLM Pode Escrever Cinco Versões da Sua Função. Veja Como Fazê-las Realmente Diferentes.

Programação N-version com LLMs não requer múltiplos modelos. Você pode extrair implementações diversas e corretas de um único modelo variando prompts, personas e restrições de raciocínio.

A programação N-version assume que a diversidade vem de autores diferentes. Com LLMs, isso significa modelos diferentes, provedores diferentes, talvez…

A NASA Executou 27 Cópias do Mesmo Programa. Os Bugs Votaram em Bloco.

A programação N-version prometia que equipes independentes cometeriam erros independentes. O experimento de Knight e Leveson em 1986 provou o oposto, e a NASA abandonou a ideia em silêncio.

No início dos anos 1980, a NASA enfrentou uma questão que ainda assombra a engenharia safety-critical hoje: como tolerar bugs que ainda não encontraste? A…