Todos posts
Notas longas sobre software, sistemas distribuídos e a arte de construir. Publicando uma por semana.
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.
Log de Eventos como Fonte da Verdade Transforma Evolução de Schema em um Problema Eterno
Quando o log é a fonte da verdade, toda mudança de schema é permanente. Um passo a passo em Kotlin/Avro do rename que passou na verificação do Schema Registry e corrompeu silenciosamente todos os eventos antigos, mais os invariantes de Protobuf e Avro que agora mantenho fixados acima da minha mesa.
Transformando Engenharia de Contexto de LLM em um Loop de Avaliação com DSPy
Notas de dois fins de semana cavando o DSPy. Parei de tratar prompts como a fonte da verdade e comecei a tratá-los como saída compilada de uma assinatura tipada, uma métrica e um otimizador. Aqui está o menor programa end-to-end que mantive, como o MIPROv2 de fato busca, e onde a abordagem cai por terra na prática.
DBOS vs Temporal: Quando o Postgres É Suficiente para Execução Durável de Workflows
O DBOS reutiliza o Postgres como camada de durabilidade para workflows, enquanto o Temporal roda um cluster dedicado. A escolha certa depende do tamanho do time, da forma do workload e de onde você quer que seu orçamento operacional vá. Este é um critério prático para escolher entre eles.
O Transactional Outbox Não É uma Fila
O transactional outbox é um ledger, não uma fila. Tratá-lo como fila é o que quebra o Postgres sob carga. Este post percorre os modos de falha específicos — autovacuum travando, drift do horizonte xmin, lag do replication slot, poison pills — e as regras operacionais que realmente o mantêm funcionando em produção.
Virtual Threads Depois do JEP 491: O Gargalo Se Moveu
O JEP 491 removeu o problema de pinning do `synchronized` que mantinha as virtual threads fora da produção. A pergunta interessante agora não é se habilitar ou não — é qual gargalo aparece em seguida. Um guia de campo para serviços Spring Boot / Kotlin rodando em JDK 24+.