Blog

O que eu penso.

Carreira, engenharia e o que aprendi errando primeiro pra você não precisar.

OUT 2026

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 2026

SSRF: 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 2026

Assinatura 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 2026

Achando 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 2026

Backfill 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 2026

A 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 2026

Cená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 2026

Deploy 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 2026

Ledger 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 2026

Seguranç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 2026

Particionar 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 2026

Governanç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 2026

LGPD 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 2026

Exactly-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 2026

Explicando 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 2026

Timeouts 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 2026

Autorizaçã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 2026

Ataque 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 2026

Como 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 2026

Trabalhar 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 2026

Rate 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 2026

Como se consegue o primeiro cliente

A resposta desagrada quem esperava um canal de aquisição. O primeiro cliente quase nunca vem de marketing.

→
SET 2026

Cená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 2026

Migraçã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 2026

Arquitetura 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 2026

XSS: 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 2026

Colisã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 2026

Code 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 2026

Upload 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 2026

Desenhando 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 2026

O 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 2026

Retry, 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 2026

Conciliaçã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 2026

Correlation 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 2026

SQL 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 2026

Event 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 2026

Estimativa 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 2026

Ledger 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 2026

Cená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 2026

Monó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 2026

Hash 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 2026

Outbox 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 2026

O 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 2026

Segredo 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 2026

Saldo 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 2026

Merkle 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 2026

O 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 2026

IDOR: 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 2026

Idempotê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 2026

Audit 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 2026

Query 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 2026

JWT: 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 2026

Como 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 2026

Log 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 2026

De 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 2026

Cená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 2026

UUIDv7, 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 2026

Autenticaçã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 2026

Por 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 2026

Idempotê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 2026

Como 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 2026

Modelagem 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 2026

Como 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 2026

Partidas 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 2026

Como 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 2026

O 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 2026

Como 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 2026

Como 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 2026

Como 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 2026

O 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 2026

Como 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 2026

Como 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 2026

O 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 2026

De pleno a sênior: o que realmente muda

Não é sobre saber mais tecnologia. É sobre ampliar o raio do teu impacto.

→
MAI 2026

Feedback que funciona: como pedir e como dar

A maioria dos feedbacks é inútil por educação. Um roteiro simples pra mudar isso.

→