Blog
O que eu penso.
Carreira, engenharia e o que aprendi errando primeiro pra você não precisar.
Reprocessar lote financeiro sem duplicar lançamento
O lote falhou na metade. Alguém vai rodar de novo, provavelmente com pressa. O que decide o resultado foi escrito meses antes.
→OUT 2026SSRF: o perigo que quase ninguém testa
Sua aplicação busca uma URL que o usuário informou. Do lado de dentro da rede, onde nada é autenticado.
→OUT 2026Assinatura digital e hash: o que cada um garante
Um responde se o conteúdo mudou. O outro responde quem produziu. Trocar os dois é o erro que faz um sistema parecer seguro sem ser.
→OUT 2026Achando a métrica que importa
Todo painel tem vinte números e nenhum deles muda decisão. O problema não é falta de dado.
→OUT 2026Backfill de milhões de linhas sem derrubar a produção
Um UPDATE numa tabela grande parece a operação mais simples do mundo. É uma das que mais causam incidente.
→OUT 2026A parte de sênior que ninguém te ensina
Você chegou no nível em que a resposta certa deixou de ser suficiente. O que ninguém avisa é o que passa a ser cobrado no lugar.
→OUT 2026Cenário: a conciliação que não fechava por um centavo
Caso de estudo. Um centavo de diferença, todo dia, por catorze meses. A causa não estava no cálculo.
→OUT 2026Deploy sem medo: o que precisa estar no lugar
Time que tem medo de deploy faz deploy grande, e deploy grande é o que justifica o medo. Como sair desse laço.
→SET 2026Ledger multi-moeda: câmbio, arredondamento e dor de cabeça
A segunda moeda sempre entra. E ela quebra três premissas que o ledger de uma moeda só carregava sem ninguém perceber.
→SET 2026Segurança no pipeline de CI/CD
O pipeline tem acesso ao código, aos segredos e à produção. É o alvo mais valioso da empresa e o menos revisado.
→SET 2026Particionar a tabela de eventos antes que ela te particione
Tabela append-only cresce e nunca encolhe. Converter uma tabela de 400 milhões de linhas em particionada é bem pior do que já nascer assim.
→SET 2026Governança corporativa explicada para quem é de tecnologia
Parece assunto de conselho e advogado. É, na essência, o mesmo problema de controle de acesso e rastreabilidade que a gente resolve em código.
→SET 2026LGPD para engenheiro: o que muda no código
Não é sobre banner de cookie. É sobre modelagem de dado, retenção e a capacidade de responder perguntas que o seu sistema hoje não responde.
→SET 2026Exactly-once é mentira: o que fazer com isso
Todo broker promete entrega exatamente uma vez em algum lugar da documentação. O que existe é outra coisa, e ela resolve o problema.
→SET 2026Explicando dívida técnica pro negócio
A conversa falha porque o time apresenta um problema técnico pra quem decide com números. Traduzir não é vender: é fazer o argumento existir.
→SET 2026Timeouts e circuit breaker: o mínimo de resiliência
A dependência lenta derruba mais sistema que a dependência caída. Duas configurações separam uma coisa da outra.
→SET 2026Autorização e captura: dois eventos, dois riscos
Tratar pagamento com cartão como uma operação só é o erro que produz venda sem dinheiro e dinheiro sem venda.
→SET 2026Ataque via dependência: como reduzir sua superfície
Você audita o seu código. O código que roda em produção é 95% de outras pessoas, e ninguém leu.
→SET 2026Como provar que um documento não mudou desde a emissão
Guardar o hash do PDF no seu banco não prova nada pra quem não confia em você. O desenho que fecha essa lacuna.
→SET 2026Trabalhar com legado sem odiar a vida
Todo código que funciona e paga a conta é legado. A diferença entre sofrer e prosperar está em como você entra nele.
→SET 2026Rate limiting: token bucket, sliding window e o que usar quando
Quatro algoritmos, e a escolha muda o comportamento do seu sistema sob pico. Um deles falha de um jeito que quase ninguém prevê.
→SET 2026Como se consegue o primeiro cliente
A resposta desagrada quem esperava um canal de aquisição. O primeiro cliente quase nunca vem de marketing.
→SET 2026Cenário: o log que vazou CPF
Caso de estudo. Ninguém invadiu nada. Uma linha adicionada pra depurar um bug mandou dado pessoal pra fora por sete meses.
→SET 2026Migração de schema sem downtime
Renomear uma coluna parece trivial e é a operação que mais derruba deploy. A regra é sempre a mesma: nunca mude, adicione.
→SET 2026Arquitetura de integração com Pix: o que muda no seu backend
Pagamento instantâneo, irreversível e 24 por 7 quebra três premissas que quase todo sistema de cobrança carrega desde sempre.
→SET 2026XSS: defesa em camadas no frontend moderno
React escapa por padrão, então XSS acabou. Não acabou: ele migrou pros lugares onde o escape não acontece.
→SET 2026Colisão de hash: quando importa de verdade e quando é paranoia
A conta de probabilidade que todo mundo cita é a errada. E o risco real quase nunca é o que a conta mede.
→SET 2026Code review que ensina em vez de humilhar
A mesma observação, escrita de dois jeitos, produz um dev melhor ou um dev que para de abrir PR grande. É escolha de quem revisa.
→SET 2026Upload de arquivo seguro: checklist real
Aceitar arquivo do usuário é a funcionalidade que mais abre porta. Sete verificações, na ordem em que importam.
→SET 2026Desenhando uma API pensada para rastreabilidade
A maior parte das APIs devolve estado. Quem precisa provar o que aconteceu precisa de outra coisa, e isso muda o desenho desde o primeiro endpoint.
→SET 2026O MVP mais mal entendido do mercado
Virou sinônimo de versão capenga com prazo curto. A ideia original era outra e é bem mais útil.
→SET 2026Retry, backoff e dead letter queue
Repetir a operação que falhou parece trivial. Feito errado, o retry transforma uma falha pequena numa queda geral.
→SET 2026Conciliação financeira automatizada: o que ninguém conta
O relatório do gateway não bate com o seu banco de dados. Nunca bate. A questão é o que fazer com as diferenças que são normais.
→SET 2026Correlation ID, trace ID e span ID: quem é quem
Três identificadores que quase todo mundo mistura, e a diferença entre eles é o que permite responder o que aconteceu com aquela requisição.
→SET 2026SQL injection em 2026: por que ainda acontece
A falha tem quase trinta anos e continua aparecendo. Não é por falta de conhecimento: é por causa dos lugares onde o ORM não alcança.
→SET 2026Event sourcing: quando vale e quando é tiro no pé
Padrão poderoso, caro e adotado pelo motivo errado com frequência. Os quatro casos onde ele se paga.
→SET 2026Estimativa honesta: como dar prazo sem mentir
O problema da estimativa não é a matemática. É que a pergunta feita e a pergunta respondida quase nunca são a mesma.
→SET 2026Ledger imutável: como corrigir um erro sem apagar nada
Lançou errado. A tabela não aceita update. E agora? A resposta é a mesma que a contabilidade usa há séculos.
→AGO 2026Cenário: o índice que faltava e derrubou a Black Friday
Caso de estudo. A query rodava em 40ms havia dois anos. Num sábado ela passou de 12 segundos e levou o site junto.
→AGO 2026Monólito modular: a arquitetura que a maioria dos times deveria ter
A discussão monólito contra microserviço esconde a opção do meio, que é onde quase todo produto deveria estar.
→AGO 2026Hash de senha: bcrypt, scrypt, Argon2 e os parâmetros que importam
Escolher o algoritmo é a parte fácil. Os parâmetros errados transformam a escolha certa em proteção de mentira.
→AGO 2026Outbox pattern no Postgres: mensagem e transação no mesmo commit
Gravar no banco e publicar na fila são duas operações que podem falhar separadamente. O outbox junta as duas num commit só.
→AGO 2026O que é um product studio e por que fundei um
Não é agência, não é consultoria e não é fábrica de software. A diferença está no que se entrega e em quem carrega o risco.
→AGO 2026Segredo commitado: o que fazer nas primeiras duas horas
Acontece com todo time. O que decide o tamanho do estrago é a ordem das ações, e quase todo mundo faz na ordem errada.
→AGO 2026Saldo calculado ou saldo materializado: escolha com consequência
A pergunta que todo sistema financeiro enfrenta no primeiro mês. Escolher errado é barato agora e caro depois.
→AGO 2026Merkle tree na prática: provar que nada foi alterado
A estrutura por trás do Git, do Bitcoin e do certificate transparency. Mais simples do que a fama sugere, e útil fora de blockchain.
→AGO 2026O engenheiro que entende produto vale o dobro
Não é sobre virar PM. É sobre parar de aceitar tarefa e começar a discutir problema, que é onde a decisão cara acontece.
→AGO 2026IDOR: a falha mais chata e mais comum de todas
Trocar o número na URL e ver o dado de outra pessoa. Não precisa de ferramenta, não precisa de conhecimento, e continua em toda parte.
→AGO 2026Idempotência em pagamentos: o problema de cobrar duas vezes
Os quatro pontos de um fluxo de pagamento onde a duplicata entra, e o que cada um exige. Nenhum deles é resolvido pelo mesmo mecanismo.
→AGO 2026Audit trail que aguenta uma auditoria de verdade
Quase todo sistema tem uma tabela de log de alteração. Quase nenhuma responde as perguntas que aparecem quando a auditoria chega.
→AGO 2026Query N+1: como detectar e matar
O bug de performance mais comum em aplicação com ORM. Invisível em desenvolvimento, brutal em produção, e sempre a mesma correção.
→AGO 2026JWT: os erros que aparecem em quase todo projeto
Token assinado não é token seguro. Sete problemas que eu encontro com frequência desconfortável, e como consertar cada um.
→AGO 2026Como funciona um core ledger por dentro
Do request que chega ao saldo que aparece na tela. As camadas, os locks e o que roda de madrugada pra garantir que o número está certo.
→AGO 2026Log append-only: a estrutura mais subestimada de arquitetura
Uma tabela onde só se insere resolve rastreabilidade, auditoria, integração e boa parte dos bugs de concorrência. E quase ninguém começa por ela.
→AGO 2026De júnior a pleno: o que realmente muda
Não é a quantidade de tecnologia que você conhece. É parar de entregar no escuro e começar a sustentar a própria decisão.
→AGO 2026Cenário: a cobrança que saiu duas vezes
Um caso de estudo montado a partir de um padrão que se repete. O bug leva quatro minutos pra acontecer e três dias pra ser entendido.
→AGO 2026UUIDv7, ULID ou Snowflake: identificadores que não sabotam seu índice
UUIDv4 como chave primária é a decisão mais fácil de tomar e uma das mais caras de manter. Existe alternativa.
→AGO 2026Autenticação e autorização: confundir os dois custa caro
Saber quem é a pessoa e saber o que ela pode fazer são problemas separados. A maioria dos vazamentos mora na segunda parte.
→AGO 2026Por que dinheiro nunca deve ser float
0.1 + 0.2 não dá 0.3. Isso é uma curiosidade em tutorial e um prejuízo em sistema de pagamento.
→AGO 2026Índices no Postgres: os que importam e os que só ocupam disco
Metade dos índices que eu encontro em projeto nunca foi usada. E o índice que faltava está sempre na query que trava tudo.
→AGO 2026Idempotência: a chave que salva sua API de cobrar duas vezes
Rede falha no meio. O cliente não sabe se deu certo e tenta de novo. O que acontece depois disso é decisão de arquitetura.
→AGO 2026Como eu enxergo a arquitetura do LinkedIn
A empresa que resolveu o problema de integração entre sistemas transformando o log num produto. É por isso que o Kafka existe.
→AGO 2026Modelagem de ameaças em uma hora, com post-it
Dá pra fazer sem consultoria, sem framework de quatro letras e sem ninguém com cargo de segurança no time.
→AGO 2026Como eu enxergo a arquitetura do Spotify
Dois sistemas escondidos num só: um orçamento de latência medido em milissegundos, e um log de eventos que também é a contabilidade.
→AGO 2026Partidas dobradas explicadas para desenvolvedor
Contabilidade do século XV é a melhor constraint de integridade que já inventaram pra dinheiro. Sem jargão de contador.
→AGO 2026Como eu enxergo a arquitetura do WhatsApp
Criptografia ponta a ponta não é uma funcionalidade. É uma restrição que decide o que o servidor pode fazer, e ela simplifica mais do que complica.
→AGO 2026O que é hash criptográfico, explicado para quem constrói sistema
Sem analogia de liquidificador. O que a função garante, o que ela não garante, e onde o uso errado aparece em produção.
→AGO 2026Como eu enxergo a arquitetura do YouTube
Upload não é uma requisição, é um pipeline. E a recomendação não escolhe o melhor vídeo: ela elimina quase todos antes de escolher.
→AGO 2026Como construir aplicações seguras: o guia que eu queria ter lido
A maioria dos incidentes não vem de ataque sofisticado. Vem de permissão mal desenhada e de coisa que ninguém revisou.
→AGO 2026Como eu enxergo a arquitetura do Instagram
O sistema mais impressionante da série é o mais entediante. E o identificador deles carrega a resposta pra um problema que quase todo mundo resolve errado.
→AGO 2026O que é um core ledger e por que quase todo produto financeiro precisa de um
Coluna de saldo na tabela de usuário funciona até o dia em que alguém pergunta por que o número está errado. Aí não tem resposta.
→AGO 2026Como eu enxergo a arquitetura do Twitter (X)
Uma timeline não é uma consulta. É um resultado calculado antes de alguém pedir, e é essa inversão que sustenta o produto inteiro.
→AGO 2026Como projetar um sistema de rastreabilidade com hash único
Gerar um hash é fácil. Difícil é responder, seis meses depois, o que aquele hash prova. Um projeto de ponta a ponta.
→JUL 2026O que seis empresas me ensinaram sobre começar de novo
Trocar de empresa não é recomeçar do zero — é levar um repertório novo pra um problema novo.
→JUN 2026De pleno a sênior: o que realmente muda
Não é sobre saber mais tecnologia. É sobre ampliar o raio do teu impacto.
→MAI 2026Feedback que funciona: como pedir e como dar
A maioria dos feedbacks é inútil por educação. Um roteiro simples pra mudar isso.
→