/articles
Artigos
Notas longas sobre Rails, PostgreSQL, sistemas distribuídos, performance e ML do zero.
Você não entende Machine Learning até implementar do zero
Chamar sklearn.fit() não é entender. Construir perceptron, regressão logística e uma rede que resolve XOR em Ruby é. ML é álgebra e otimização — não mágica.
mlGradient descent explicado visualmente
Função de custo é uma superfície. Derivada é inclinação. θ = θ − α·∇J(θ). Toda rede neural que você já ouviu falar é essa regra, repetida.
mlepoll e io_uring explicados visualmente
Blocking IO → select → poll → epoll → io_uring. Cada degrau existe porque o anterior travava. Async não é feature de linguagem, é feature de kernel.
infraComo o kernel Linux recebe uma request HTTP
NIC → driver → IRQ → softirq → IP → TCP → socket buffer → accept queue → Puma. Seu framework é os últimos 5% do request. O resto é kernel.
infraO mito do "exactly once"
Exactly-once não existe na rede. O que existe é at-least-once com idempotência. Pare de perseguir mito de marketing — projete para a realidade e durma à noite.
distributedComo evitar retry storms em background jobs
API externa caiu. 100k jobs no Sidekiq decidem tentar de novo ao mesmo tempo. Jitter, circuit breaker, DLQ — retry não é fix, é estratégia de adiamento.
distributedIdempotência em sistemas reais
At-least-once é a realidade. Unique constraint é a única garantia de verdade. Idempotency-Key, dedupe table — sobrevivência em sistemas distribuídos.
distributedLock contention: o assassino silencioso do Postgres
Migração de 10ms que congela produção por 40 minutos. ALTER TABLE pegando ACCESS EXCLUSIVE. pg_locks + pg_stat_activity. Locks são invisíveis até não serem mais.
postgresO que VACUUM realmente faz no Postgres
MVCC, dead tuples, bloat, autovacuum, transaction wraparound. VACUUM não é faxina — é parte de como o Postgres funciona. Ignorar é acordar 3h da manhã.
postgresEXPLAIN ANALYZE deveria ser obrigatório
Junior roda a query. Senior roda o plano da query. Seq Scan, Index Scan, Bitmap Heap, estimativa vs real, BUFFERS — olhar o plano não é luxo, é o trabalho.
postgresVocê NÃO entende Rails até entender o ciclo completo de uma Request
Rails não é mágico. Rails é Rack, TCP, Threads, Middleware, SQL e objetos Ruby na heap. Entenda o que acontece antes e depois do seu controller.
railsRefatorar monólito sem detonar produção
Microsserviço não é a solução. Refatorar monólito é uma arte — strangler fig, feature flag, migração de schema em passos. O que ninguém te conta sobre o processo.
architectureComo identificar gargalo de performance em minutos
Toda app lenta tem UM gargalo dominante. Achismo não resolve. Aprenda a hierarquia de suspeitos, as ferramentas certas e o fluxo que vai direto na causa.
performanceDebuggar memory leak em Ruby sem chorar
Ruby tem GC. Então leak clássico não existe. O que existe é bloat — e a diferença entre os dois é o que separa o senior do junior nesse assunto.
performanceEscrever uma DSL simples do zero em Ruby
Rails, RSpec, Sidekiq, Devise — toda gem famosa é uma DSL. E nenhuma é mágica. São truques simples de metaprogramação que você replica em uma tarde.
rubyComo ActiveRecord monta SQL por baixo dos panos
Você não está montando SQL. Está montando uma árvore. Entenda Arel, bind parameters, lazy evaluation e a diferença real entre includes, preload e eager_load.
railsAncestors chain: como Ruby resolve métodos de verdade
Pergunta de entrevista preferida pra separar Rubyist de pessoa que escreve Ruby. Include, prepend, singleton classes — toda dúvida tem a mesma resposta.
rubyComo Ruby resolve métodos internamente
Quando você chama user.name, Ruby faz um ritual. Method lookup, inline cache, method_missing, singleton classes — a mecânica real por trás de uma chamada simples.
rubyGIL: o lock que todo Rubyist precisa entender
Ruby não tem paralelismo real por causa do GIL — meia-verdade dita com confiança. Entenda o GVL de verdade, quando threads ajudam e quando viram armadilha.
rubyEntender o runtime do Ruby (não só a linguagem)
A maioria conhece a linguagem. Quase nenhum conhece o runtime. YARV, heap, GC, GVL, inline cache — onde a engenharia mora e onde os bugs de produção nascem.
ruby