Posts
.NET Stuff
Level Up Your Integration TestsLevel Up Your Integration Tests: Record, Replay, RelaxSick of flaky integration tests? You run your tests once — they pass. Run them again — they fail. Maybe the third-party API timed out. Or the response changed. Or your internet blinked. Integration tests should give you confidence, not stress. That’s where deterministic integration testing comes in. Imagine recording your API interactions once and replaying them forever — offline, fast, and predictable. cassete-http-recorder.png No network. No surprises. That’s exactly what Vcr.HttpRecorde
Async FlowsFrom Async Flow to Documentation: Modeling .NET Microservices with MassTransit Sagas, Mermaid Diagrams, and EventCatalogModern microservices are powered by asynchronous flows — messages pass between services, events trigger chains of reactions, and no single system owns the full picture. While this makes systems scalable and fault-tolerant, it also makes them hard to reason about. Yes, tools like OpenTelemetry, Grafana, and dashboards can help you trace these flows — but only after something has run. You still need to stitch everything together from logs and traces, which often means a lot of digging just to an
Messaging vs HTTP in .NET Microservices, A Practical BenchmarkMessaging vs HTTP in .NET Microservices: A Practical BenchmarkIntroduction In microservices architecture, it's generally considered a bad practice to make synchronous request/response calls across service boundaries — especially using HTTP. The ideal model is to design services to be autonomous, decoupled, and event-driven. However, in reality, there are times when one service needs to fetch data from another — and when that happens, most developers instinctively reach for a direct HTTP call. It's simple, familiar, and it seems fast and efficient. On t
OMSCS Courses
CS6200 - Introduction to Operating SystemsCS6200 - Introduction to Operating SystemsIntroduction I took GIOS in the Spring 2023 semester as part of my master's at Georgia Tech University, and it was my first course in the program. It was highly recommended for a first course in the Slack group and had great ratings in OMSCS Hub, and indeed those were on point! The course was a great start in the program and now in my turn, I also highly recommend it to anyone interested in Computing Systems Specialization as a first course, and also provide some tips that helped me finish th
CS6290 - High Performance Computer ArchitectureCS6290 - High Performance Computer ArchitectureIntroduction I believe that if you program computers, even using high level languages that abstract away most of the details of the hardware, you must have at least a basic knowledge of what is happening under the covers. This belief, coupled with the pretty good rating of HPCA available here led me to choose it as my third course in the OMSCS program. Highlights This course assumes a foundational understanding of computer architecture, expecting students to have completed an undergraduate
CS 7210 - Distributed ComputingCS 7210 - Distributed ComputingIntroduction I recently finished CS 7210: Distributed Computing in the OMSCS program, and I walked away with an A — but not without earning every bit of it. This course has easily been the most difficult, most time-consuming, but also my favorite so far. If you're working in software engineering today — especially with microservices, cloud computing, Cosmos DB, etc. — you’re already dealing with distributed systems. This course helped me understand what’s really going on under the hood. It wa
CS 6210 - Advanced Operating SystemsCS 6210 - AOSI wrapped up CS 6210: Advanced Operating Systems recently — and I genuinely loved it. While not as intense or brutal as CS 7210 (Distributed Computing), this course still packs a punch, just in a very different way. Where CS 7210 is all about large-scale distributed correctness and fault tolerance, CS 6210 dives deep into the low-level optimizations that make systems fast, efficient, and scalable. Think thread scheduling, memory management, barrier synchronization, RPC internals, etc. The Pro