Blog 43 posts

Notes about .NET, databases, testing and the engineering decisions behind working software.

2026 — July

12 posts
5 min read Preventing Inconsistent Data with ACID Transactions #Databases Every ACID property has a default, and three of them promise less than the word does. The fourth default is honest, which turns out to be the dangerous part. 5 min read Pix: How Brazil's Instant Payment System Works #Payments Pix isn't an app and isn't a company. It's a payment system the central bank built and operates itself, which is exactly the part that confuses people outside Brazil. 5 min read How .NET Modernization Works with the Copilot Upgrade Agent #.NET Microsoft published a free course on upgrading .NET Framework apps to .NET 10, plus full docs on the Copilot modernization agent. Here's what the assess, plan, execute workflow actually does. 3 min read The YouTube Channels Helping Me Learn C# and .NET #.NET Tim Corey for fundamentals that actually stick, Nick Chapsas for what changed in the latest versions, and Balta plus Canal .NET in Portuguese. Four channels doing four different jobs. 3 min read Building a Simple Fraud-Detection Rule in .NET #.NET A walkthrough of one real fraud rule: the interface, the verdict type, the repository query behind it, and why the whole thing is about 20 lines of actual logic. 3 min read How I'm Learning System Design #System Design Most system design content assumes you have already run something in production. Building what the videos explain, instead of only watching them, closes that gap faster than waiting for the experience to arrive. 4 min read How I Would Design a Payment System as a Junior .NET Developer #Payments If I got handed a payment feature tomorrow, the hard parts wouldn't be the API design. They'd be idempotency, the fact that money problems don't show up in testing, and knowing what not to build. 5 min read Designing a URL Shortener as a Learning Project #System Design A URL shortener in .NET 9, three copies behind nginx, backed by Cassandra and cached with Redis, built to actually understand a system design video instead of just watching it. 4 min read How I Designed a Payment Gateway Orchestrator After an iGaming Course #Payments PayMaestro: one API in front of many payment gateways, with routing, cascading retries, database-enforced idempotency, and fraud screening informed by an iGaming Academy anti-fraud certification. 4 min read My First Thoughts After Learning About Cassandra #Cassandra Coming from SQL Server, the surprises weren't about scale. No joins, denormalising on purpose, designing the primary key before the table exists, and a query language that looks like SQL but refuses things SQL allows. 4 min read What an iGaming Course Taught Me About Anti-Fraud Systems #iGaming Anti-fraud in payments is not one filter that blocks bad transactions. It's a set of judgment calls about risk, cost, and how much friction a real customer will tolerate. 2 min read The .NET Creators I Learn Software Design From #.NET Milan Jovanović for clean architecture, Nick Chapsas and Balta for the smaller habits that add up. The CRUD project I built came straight out of one of those lessons.

2026 — June

7 posts
4 min read Setting Up Azure Monitor Alerts and Action Groups #Azure An alert rule decides when something is wrong. An action group decides who finds out. Splitting those two apart is why you don't end up editing forty alerts to change a phone number. 4 min read RBAC, Policy and Resource Locks: How Azure Governance Fits Together #Azure Three features that sound similar and answer completely different questions: who can act, what is allowed to exist, and what nobody should delete by accident. 3 min read Kubernetes Felt Easier Once I Understood These Basics #Kubernetes I haven't actually deployed Kubernetes in a real project yet, same as most of what I know about software design: watched, understood, not yet applied. The basics still stopped feeling like a wall of YAML once I had a mental model for them. 4 min read Using Azure Cloud Shell and the az CLI for the First Time #Azure A terminal in the browser, already authenticated, with the tooling installed. Once I saw the pattern behind the az commands, the portal started feeling slower than typing. 2 min read What I Learned After Taking Two Months Off Coding #Career Two months off taught me the knowledge sticks around. The routine doesn't, and you have to earn it back one session at a time. 4 min read How Getting Certified Got Me Studying Again #Career How preparing for AZ-900 helped me stop jumping between topics and study with a clearer direction. 3 min read What I Do to Make a .NET Application Safer #.NET Security isn't only authentication. Version control hygiene, secrets, JWT validation, RBAC, HTTPS, monitoring, dependency trust, and reviewing every piece of LLM-generated code before it runs.

2026 — May

1 post
2 min read My Daily French Routine with Podcasts and Duolingo #French Four months into French: private lessons twice a week for structure, Duolingo daily to stay in contact with the language, and podcasts for listening. Still basic level, and that's fine for where I am.

2026 — April

4 posts
3 min read JWT and Microsoft Identity: How I Understand the Difference #.NET I kept treating JWT and Microsoft Identity as competing choices. They're not. One's the ticket booth confirming who you are, the other's the wristband proving it on every ride after that. 4 min read Why Scaling Matters Even Before Your Application Gets Big #System Design Scaling isn't about traffic you don't have yet. A few .NET habits, keeping the app stateless, async all the way down, and not calling the database in a loop, cost nothing early and are painful to add later. 3 min read Why I Think Beginners Should Learn Clean Architecture #.NET I used to drop my DbContext straight into controllers and dump logic into Program.cs. It worked, until I had to change something. Clean architecture is what fixed that. 3 min read How I Study Programming Today: Watch, Build, Repeat #Learning My study routine right now: watch a short list of people I trust, rebuild what they showed without the video open, then keep GitHub updated so the practice doesn't disappear.

2026 — March

1 post
10 min read How I Understand Concurrency in .NET #.NET I thought concurrency just meant threads. It covers race conditions, deadlocks, transactions, and the lost update problem, and a C# lock does nothing to protect a database row.

2026 — February

2 posts
4 min read SQL or NoSQL? How I Think About the Choice #Databases The question isn't which database is better. It's whether I know my access patterns up front, and whether the data has relationships I need the database itself to protect. 4 min read How I Containerised My API and Deployed It to Azure #Azure A multi-stage Dockerfile, Docker Compose with a health-checked SQL Server, and the Sports Betting API running on Azure Container Apps with Azure SQL behind it.

2026 — January

2 posts
3 min read What I Learned About Building REST APIs in .NET #.NET A plain CRUD API, no payments, nothing fancy. HTTP verbs, routing, EF Core, and status codes are finally clicking while I build it. 4 min read Azure SQL Database or SQL Server on a VM? What I Learned #Azure Both run SQL Server. The difference is who patches it, who backs it up, and how much control you actually need. For my API, handing all of that to Azure was the obvious call.

2025 — December

2 posts
2 min read What I Learned Implementing JWT Authentication in .NET #.NET Access token expiration is easy to handle. The refresh token expiring silently, with no explicit failure path, is what actually caused confusing logouts until I gave it one. 2 min read Finishing My Computing Degree After Failing an Exam #Education I failed a module the first time from lack of study time. The retake was a hand-written SQL exam, joins and indexes on paper, and it taught me more than passing first try would have.

2025 — November

1 post
3 min read The CRUD Project I Built to Have Something to Show Recruiters #.NET Inspired by a coding assessment André Baltieri (Balta) gives candidates, I built a Student and Premium subscription CRUD app with real auth in a few days, then spent the saved time on what actually makes a project look finished.

2025 — September

1 post
3 min read OOP in C#: The Examples That Finally Made It Click #C# Dog, Animal, and Bark() never stuck. Encapsulation, abstraction, inheritance, and polymorphism finally clicked once I saw them in a bank account, a notification service, and a payment processor instead.

2025 — February

2 posts
2 min read Learning to Code with JetBrains Rider #JetBrains Rider Every C# tutorial for Mac said install VS Code and a stack of extensions. That fell apart for me until someone on Reddit mentioned Rider, and auto-complete and debugging just worked. 3 min read How I Keep Myself Studying Every Day #Learning No syllabus, mostly video across five lanes I keep circling, and a habit of noticing when I've fallen down a SaaS rabbit hole instead of studying what I sat down for.

2024 — December

1 post
2 min read Learning Italian as a Portuguese Speaker: My Experience #Italian A solid intermediate level in about four months, built on Babbel Live for an hour a day, heavy YouTube and podcast listening, and Duolingo catching the gaps in between.

2024 — October

2 posts
2 min read What I Find Hardest About Learning Programming #Learning It's not any single technology. It's the blank page after the tutorial ends, and everything that shows up the moment you start making your own decisions instead of following someone else's. 3 min read The AI Prompts That Help Me Study Programming #AI Prompts that just explain a concept don't stick. The ones that force me to answer, guess, or produce code before getting the explanation are the ones that actually teach me something.

2024 — September

2 posts
2 min read Using GPT to Practise Italian One Sentence at a Time #AI The default GPT experience for practicing a language is a wall of text. Constraining it to 1-2 sentences, a correction format, and one question per turn turns it into an actual conversation instead of an essay generator. 2 min read How I Reached the Third Round of a Google SWE Internship Interview Without LeetCode #Career Screening, behavioral, then a live palindrome challenge I wasn't ready for. I thought I'd lost my one shot. I hadn't, and system design still interests me more than LeetCode ever will.

2024 — July

1 post
2 min read Why I Stopped Trusting AI Answers in College Without Checking Them #AI Working code and understanding code turned out to be different things. Now every AI answer gets treated like a code review before I accept it.

2024 — May

2 posts
2 min read The Mac Apps I Actually Use for Development #macOS Rider for the backend, VS Code for Angular, Postman and Azure Data Studio in between. The smallest set of tools that covers a full stack without fighting macOS to get there. 2 min read Moving to a MacBook Pro: What I Liked and What Took Time to Get Used To #macOS Years of Windows muscle memory fought me for weeks. The Unix-based terminal, Homebrew, and battery life that lasts a full day are what actually won me over.