Blog 43 posts

Notas sobre .NET, bancos de dados, testes e as decisões por trás de software que funciona.

2026 — julho

12 posts
5 min de leitura Prevenindo Dados Inconsistentes com ACID Transactions #Databases Cada propriedade do ACID tem um default, e três deles prometem menos do que a palavra sugere. O quarto default é honesto, e é justamente aí que mora o perigo. 6 min de leitura Pix: como funciona o sistema de pagamentos instantâneos do Brasil #Payments O Pix não é um app e não é uma empresa. É um sistema de pagamentos que o banco central construiu e opera ele mesmo, que é justamente a parte que confunde quem está fora do Brasil. 5 min de leitura Como funciona a modernização .NET com o Copilot Upgrade Agent #.NET A Microsoft publicou um curso gratuito sobre atualizar apps de .NET Framework para .NET 10, além da documentação completa do Copilot modernization agent. Aqui está o que o workflow assess, plan, execute realmente faz. 3 min de leitura Os canais do YouTube que me ajudam a aprender C# e .NET #.NET Tim Corey para fundamentos que de fato grudam, Nick Chapsas para o que mudou nas versões mais recentes, e Balta mais Canal .NET em português. Quatro canais fazendo quatro trabalhos diferentes. 4 min de leitura Criando uma regra simples de fraud detection em .NET #.NET Um passo a passo de uma fraud rule real: a interface, o tipo do veredito, a query no repository por trás dela e por que tudo isso são umas 20 linhas de lógica de verdade. 3 min de leitura Como estou aprendendo system design #System Design A maior parte do conteúdo de system design assume que você já rodou algo em produção. Construir o que os vídeos explicam, em vez de só assistir, fecha essa lacuna mais rápido do que esperar a experiência chegar. 4 min de leitura Como eu projetaria um sistema de pagamentos como .NET developer júnior #Payments Se me entregassem uma feature de pagamento amanhã, as partes difíceis não seriam o design da API. Seriam idempotency, o fato de que problemas com dinheiro não aparecem em testing, e saber o que não construir. 4 min de leitura Como eu projetei um payment gateway orchestrator depois de um curso de iGaming #Payments PayMaestro: uma API na frente de vários payment gateways, com routing, cascading retries, idempotency garantida pelo database, e fraud screening baseado numa certificação anti-fraude da iGaming Academy. 5 min de leitura Projetando um URL shortener como projeto de estudo #System Design Um URL shortener em .NET 9, três cópias atrás do nginx, com Cassandra por trás e cache no Redis, construído para realmente entender um vídeo de system design em vez de só assistir. 5 min de leitura Minhas primeiras impressões depois de aprender sobre Cassandra #Cassandra Vindo do SQL Server, as surpresas não foram sobre escala. Sem joins, desnormalizar de propósito, desenhar a primary key antes da tabela existir, e uma query language que parece SQL mas recusa coisas que o SQL permite. 4 min de leitura O que um curso de iGaming me ensinou sobre sistemas anti-fraude #iGaming Anti-fraude em pagamentos não é um filtro que bloqueia transações ruins. É um conjunto de julgamentos sobre risco, custo, e quanto atrito um cliente de verdade vai tolerar. 2 min de leitura Os criadores de conteúdo .NET com quem aprendo software design #.NET Milan Jovanović para clean architecture, Nick Chapsas e Balta para os hábitos menores que se acumulam. O projeto CRUD que construí veio direto de uma dessas lições.

2026 — junho

7 posts
4 min de leitura Configurando alertas do Azure Monitor e action groups #Azure Uma alert rule decide quando algo está errado. Um action group decide quem fica sabendo. Separar essas duas coisas é o motivo de você não acabar editando quarenta alertas para mudar um número de telefone. 4 min de leitura RBAC, Policy e Resource Locks: como a governança do Azure se encaixa #Azure Três features que soam parecidas e respondem perguntas completamente diferentes: quem pode agir, o que tem permissão para existir, e o que ninguém deveria deletar por acidente. 3 min de leitura Kubernetes pareceu mais fácil depois que entendi esses básicos #Kubernetes Eu ainda não fiz deploy de Kubernetes num projeto de verdade, igual à maior parte do que sei sobre software design: assisti, entendi, ainda não apliquei. Os básicos pararam de parecer uma parede de YAML assim que tive um modelo mental para eles. 4 min de leitura Usando o Azure Cloud Shell e a az CLI pela primeira vez #Azure Um terminal no navegador, já autenticado, com o tooling instalado. Assim que vi o padrão por trás dos comandos az, o portal começou a parecer mais lento do que digitar. 2 min de leitura O que aprendi depois de tirar dois meses de folga da programação #Carreira Dois meses de folga me ensinaram que o conhecimento permanece. A rotina não, e você tem que reconquistá-la uma session de cada vez. 4 min de leitura Como a certificação me fez voltar a estudar #Carreira Como me preparar para o AZ-900 me ajudou a parar de pular entre assuntos e estudar com uma direção mais clara. 3 min de leitura O que eu faço para tornar uma aplicação .NET mais segura #.NET Segurança não é só authentication. Higiene de version control, secrets, validação de JWT, RBAC, HTTPS, monitoramento, confiança em dependencies, e revisar todo pedaço de código gerado por LLM antes de rodar.

2026 — maio

1 post
2 min de leitura Minha rotina diária de francês com podcasts e Duolingo #Francês Quatro meses de francês: aulas particulares duas vezes por semana para dar estrutura, Duolingo todo dia para manter contato com o idioma e podcasts para treinar escuta. Ainda no nível básico, e tudo bem para onde estou.

2026 — abril

4 posts
3 min de leitura JWT e Microsoft Identity: como eu entendo a diferença #.NET Eu ficava tratando JWT e Microsoft Identity como escolhas concorrentes. Não são. Um é a bilheteria confirmando quem você é, o outro é a pulseira provando isso em cada brinquedo depois. 4 min de leitura Por que escalabilidade importa mesmo antes da sua aplicação ficar grande #System Design Escalabilidade não é sobre tráfego que você ainda não tem. Alguns hábitos de .NET, manter a aplicação stateless, async até o fim, e não chamar o database num loop, não custam nada agora e são dolorosos de adicionar depois. 3 min de leitura Por que acho que iniciantes deveriam aprender clean architecture #.NET Eu costumava jogar meu DbContext direto nos controllers e despejar lógica no Program.cs. Funcionava, até eu precisar mudar alguma coisa. Clean architecture foi o que consertou isso. 3 min de leitura Como eu estudo programação hoje: assistir, construir, repetir #Aprendizado Minha rotina de estudo agora: assistir uma lista curta de pessoas em quem confio, reconstruir o que elas mostraram sem o vídeo aberto, e depois manter o GitHub atualizado para que a prática não desapareça.

2026 — março

1 post
11 min de leitura Como eu entendo concorrência em .NET #.NET Eu achava que concorrência só significava threads. Ela cobre race conditions, deadlocks, transactions, e o lost update problem, e um lock em C# não protege em nada uma linha de database.

2026 — fevereiro

2 posts
4 min de leitura SQL ou NoSQL? Como eu penso sobre essa escolha #Databases A pergunta não é qual database é melhor. É se eu conheço meus padrões de acesso de antemão, e se o dado tem relacionamentos que eu preciso que o próprio database proteja. 4 min de leitura Como eu containerizei minha API e fiz deploy no Azure #Azure Um Dockerfile multi-stage, Docker Compose com um SQL Server com health check, e a Sports Betting API rodando no Azure Container Apps com Azure SQL por trás.

2026 — janeiro

2 posts
3 min de leitura O que aprendi sobre construir REST APIs em .NET #.NET Uma API CRUD simples, sem pagamentos, nada chique. HTTP verbs, routing, EF Core, e status codes finalmente fazendo sentido enquanto eu construo. 4 min de leitura Azure SQL Database ou SQL Server em uma VM? O que aprendi #Azure Os dois rodam SQL Server. A diferença é quem aplica os patches, quem faz o backup e quanto controle você realmente precisa. Para a minha API, entregar tudo isso para o Azure era a escolha óbvia.

2025 — dezembro

2 posts
2 min de leitura O que aprendi implementando JWT authentication em .NET #.NET A expiração do access token é fácil de tratar. O refresh token expirando silenciosamente, sem um caminho de falha explícito, foi o que de fato causou logouts confusos até eu dar um a ele. 2 min de leitura Terminando minha graduação em Computação depois de reprovar numa prova #Educação Reprovei numa disciplina da primeira vez por falta de tempo de estudo. A segunda chamada foi uma prova de SQL escrita à mão, joins e índices no papel, e me ensinou mais do que passar de primeira teria ensinado.

2025 — novembro

1 post
3 min de leitura O projeto CRUD que construí para ter algo para mostrar a recrutadores #.NET Inspirado num teste de código que André Baltieri (Balta) dá para candidatos, construí um app CRUD de Student e assinatura Premium com auth de verdade em alguns dias, e gastei o tempo que sobrou no que de fato faz um projeto parecer terminado.

2025 — setembro

1 post
3 min de leitura POO em C#: os exemplos que finalmente fizeram sentido #C# Dog, Animal, e Bark() nunca grudaram. Encapsulation, abstraction, inheritance, e polymorphism finalmente fizeram sentido quando os vi numa bank account, num notification service, e num payment processor em vez disso.

2025 — fevereiro

2 posts
2 min de leitura Aprendendo a programar com JetBrains Rider #JetBrains Rider Todo tutorial de C# para Mac dizia para instalar o VS Code e uma pilha de extensions. Isso desmoronou para mim até alguém no Reddit mencionar o Rider, e auto-complete e debugging simplesmente funcionaram. 3 min de leitura Como eu me mantenho estudando todos os dias #Aprendizado Sem syllabus, majoritariamente vídeo em cinco frentes que fico circulando, e o hábito de notar quando caí num rabbit hole de SaaS em vez de estudar o que sentei para estudar.

2024 — dezembro

1 post
2 min de leitura Aprender italiano como falante de português: minha experiência #Italiano Um nível intermediário sólido em cerca de quatro meses, construído com Babbel Live por uma hora por dia, muita escuta de YouTube e podcast, e o Duolingo cobrindo as lacunas no meio do caminho.

2024 — outubro

2 posts
2 min de leitura O que eu acho mais difícil em aprender a programar #Aprendizado Não é nenhuma tecnologia específica. É a página em branco depois que o tutorial termina, e tudo que aparece no momento em que você começa a tomar suas próprias decisões em vez de seguir as de outra pessoa. 3 min de leitura Os prompts de IA que me ajudam a estudar programação #AI Prompts que só explicam um conceito não grudam. Os que me obrigam a responder, chutar, ou produzir código antes de receber a explicação são os que de fato me ensinam alguma coisa.

2024 — setembro

2 posts
3 min de leitura Usando GPT para praticar italiano uma frase de cada vez #AI A experiência padrão do GPT para praticar um idioma é uma parede de texto. Restringir a 1-2 frases, um formato de correção, e uma pergunta por turno transforma isso numa conversa de verdade em vez de um gerador de redação. 2 min de leitura Como cheguei à terceira fase de uma entrevista de estágio SWE no Google sem LeetCode #Carreira Screening, behavioral, depois um desafio de palíndromo ao vivo para o qual eu não estava pronto. Achei que tinha perdido minha única chance. Não tinha, e system design ainda me interessa mais do que LeetCode algum dia vai interessar.

2024 — julho

1 post
2 min de leitura Por que parei de confiar em respostas de IA na faculdade sem checar #AI Código funcionando e entender código acabaram sendo coisas diferentes. Agora toda resposta de IA é tratada como uma code review antes de eu aceitá-la.

2024 — maio

2 posts
2 min de leitura Os apps de Mac que eu realmente uso para desenvolvimento #macOS Rider para o backend, VS Code para Angular, Postman e Azure Data Studio no meio do caminho. O menor conjunto de ferramentas que cobre uma full stack sem brigar com o macOS para chegar lá. 2 min de leitura Mudando para um MacBook Pro: o que gostei e o que levou tempo para me acostumar #macOS Anos de memória muscular do Windows lutaram contra mim por semanas. O terminal baseado em Unix, o Homebrew, e uma bateria que dura o dia inteiro foram o que de fato me conquistou.