RSSAmplifier

Blog

Blog posts on .NET Software Development, C#, and Debugging on Michael's Coding Spot

Recent content in Blog posts on .NET Software Development, C#, and Debugging on: Michael's Coding Spot

michaelscodingspot.comRSS feed ↗153 posts

Latest posts

My perfect email client was there all along

Let’s admit it, the popular desktop email clients suck for power users. Both Gmail and Outlook are slow, push their own (bad) AI on you, have terrible search (some more than others), and are not customizable. They are a poor common denominator that makes me upset when I use them. For years I’ve dreamt of the perfect email app, without really knowing what it is or what it would look…

eBPF, BYOC, ClickHouse, Telemetry Pipelines: Which Ones Are Actually Worth It?

Originally posted in Obics.io The observability world is changing in very interesting ways. In the last decade we’ve experienced the rise of the OpenTelemetry standard and the rise of open source solutions like Elastic and Grafana. Now, the observability world is experiencing a new wave of technologies: eBPF based instrumentation Bring your own Cloud (BYOC) Columnar data stores, most…

How I Work With 5 Coding Agents Simultaneously

Originally posted in Obics.io In a world where writing code became as fast as your thought, you would think it would be an equalizer among software developers. Being a senior or a highly performant coder would be less relevant because so much of what they learned over years is no longer applicable. But it seems that 10x developers didn’t disappear, they just changed. The super-performers now…

Telemetry accumulates like technical debt. We built a tool to clean it up.

Originally posted in Obics.io We set out to build an automated incident response solution. Then we talked to more than 50 companies, and heard the same objection repeating: it won’t work on our data. The telemetry is too noisy, too low quality, too misleading. So we went digging, and found the problem underneath the problem. Logs, metrics, and traces accumulate for years, and almost nothing…

One month on Linux after 30 years on Windows (as a software developer)

Originally posted in Obics.io I moved from Windows to Linux 1 month ago, after using Windows for the last 30 years (and developing software 15 years). It wasn’t easy to leave my comfort zone, but I got so frustrated with Windows performance that I couldn’t take it anymore. As I was able to do more tasks in parallel with AI coding agents, the performance of the system degraded. I…

5 Strategies to Reduce Logging Costs

Originally posted in Obics.io If you’re not careful, logging costs can rise up to staggering amounts. Paying 5 or 10 (or more) percent of your cloud host costs for logging is just too much. And let’s be honest, most of the logs are redundant and never queried. But you still need logs just in case, otherwise, you’re blind in production next time there’s an incident. So…

Preparing Your Codebase for AI Coding Agents

Originally posted in Obics.io The Brilliant New Hire With No Memory While LLM coding agents are extremely smart, they are pretty stupid about your own project. They don’t know what your app is trying to do, the architecture, or anything really. It’s like a very smart software developer on their first day in the office. No matter how smart they are, they won’t contribute much in…

How to Multi-Task in Claude Code Without Losing Your Mind

Originally posted in Obics.io I have been hearing of developers who run dozen agents in parallel and create 40 pull requests a day, but I never quite believed it myself. I was never able to do that because the mental overhead of multitasking was just too much for me. But in the last few weeks, I drastically changed the way I work as an experiment and I was able to do just that.

Demystifying DataDog Metrics Pricing: 2026 Ultimate Guide

Originally posted in Obics.io So, you’re trying to understand why your DataDog metrics bill is so high and you can’t figure it out? You’re not alone. DataDog pricing is one of the great mysteries of the universe. But in this post, we’ll go over how it works and try to make it as clear as possible. The first part of the bill for infrastructure hosting is a fixed price per…

15 Years of Windows Dev: My Productivity Inventory

Originally posted in Obics.io Windows might not be what the cool kid use these days, but I’ve been using it for software development for the last 15 years and have gotten some kick-ass projects done on it. As a productivity nerd, I’ve got a bag of tools that I’ve gathered over the years. I always love hearing about other people’s workflows and favorite tools, so let me…

Demystifying DataDog Logs Pricing

Originally posted in Obics.io Understanding DataDog pricing sometimes feels like you need a PhD on the matter. Some would say on purpose. And it’s a shame that such a wonderful product is accompanied by a less pleasant side. So, in this post, we’ll be demystifying exactly how DataDog bills for its log offering, which optimizations help and which don’t, and the fine-print gotchas…

Observability and Distributed Tracing Terminology Guide

If you’re new to the observability space, it’s easy to get lost in a sea of terms. What are APMs, traces, spans, telemetry, and metrics? Are Jaeger and Zipkin actual words? What’s the difference between OpenTelemetry and OpenTracing? Let’s try to make sense of all this language. Let me present a complete dictionary of observability and distributed tracing terminology. Telemetry…

My book "Practical Debugging for .NET Developers" is now Free!

Once upon a time, I wrote a book about debugging in .NET . After 4 years now, I think it’s time for the old fellow to become available to everyone. PDF | MOBI | ePub + Video lessons Some topics covered in the book are: Advanced debugging techniques with Visual Studio .NET Core and .NET Framework on Windows, Linux, and Mac Performance issues Memory leaks and memory pressure issues ASP.NET…

How culture and structure in big tech (GAFAM) show in their products

When talking about big tech, we usually mean five specific companies known as the Big Five or GAFAM. Those are Google, Amazon, Facebook (now Meta), Apple, and Microsoft. These companies have shaped the technology world as we know it. They led the five big waves of disruption: personal computing, the internet, mobile, social media (web 2.0), and cloud. When we think of personal computers, we think…

Changing TypeScript library functions while keeping backwards compatibility

Changing APIs is a common problem for library authors. There’s some class or function that you need to change, but you don’t want to break your library’s client code when they upgrade the library. In other words, the change needs to be backward compatible. Sure, there are cases when you’ll have to make breaking changes, but it’s usually better to avoid that. In the…

Recapping C# and .NET in 2023: Announcements, Conferences, and best Blog Posts

We had a ton of stuff go down in the world of C# .NET this year. The big news was all about generative AI, ChatGPT, and Copilot, but the .NET team and the community didn’t take a sabbatical. We had loads of conferences, announcements, new frameworks, and cool tools. There was a fresh C# version release, a new .NET version, and plenty more. Yours truly went over all the 2023 announcements,…

Development slowness in big and legacy applications [and how to hurry it up]

Software companies come in many sizes. There are small startups, medium-sized companies, and huge enterprises. As you might expect, startups are usually lean and fast. Big companies that develop large applications move much more slowly. Those might be systems developed for many years or decades by hundreds of developers. I’m talking about products like the Amazon marketplace, AutoCAD, or any…

How to Debug LINQ queries in C#

LINQ is one of my favorite features in C#. It just makes the code look nicer. Instead of tedious foreach loops, we got a neat functional syntax that’s easy to write and understand. Well, at least if we’re using the method syntax flavor of LINQ. LINQ is also terrible to debug. We have no way of knowing what goes on inside that query. We can see the input, we can see the output, but that’s about it.

Premature Infrastructure is the Root of All Evil

Premature infrastructure is a peculiar behavior pattern that I witnessed in every single tech company I worked for. It is the habit of creating infrastructure code before it is actually needed. The development team is predicting future requirements and preparing ahead of time. That might be preparation for a future feature, extension capabilities that aren’t needed yet, or customization that…

Declutter Your Work Day: 9 Tips to Manage your Tasks Without Stress

Do you ever feel like a million tasks are looming over you at any given moment? How about that you can’t concentrate because it feels like you should be doing something more important? I used to have these feelings all the time. I call this “brain clutter”, though I’m sure there are many other names for it. That’s a problem that hurts work productivity more than you…

7 Command Prompt Techniques in Windows You Should Know

The more I work in software development, the more I love working with the command line. I notice I’m becoming increasingly productive with it. When dealing with Git, for example, I used to do almost everything in a GUI program, whereas now I use the command line for 90% of the actions. But the command line will make you more productive with everything, not just source control. There are…

All the Possible Ways to Debug Node.js

We all know the value of debugging. Inspecting the values of variables, seeing the call stack, and moving step-by-step are all features that are priceless for developers. But it’s not always simple to get a debugging session going in real-world scenarios. Sometimes, you can’t get the debugger working. Or you’re starting the program from the command line and want to debug from the…

How Would Steve Jobs Fare as a Software Engineer?

Steve Jobs was a genius product guy. I think few would say otherwise about the man behind the iPod, iPhone, and iPad. But given a different turn of events, say if he was born 30 years later and decided to become a software engineer, how would he manage? Do you think he’d reach similar greatness as he did in Apple? If you read Steve Job’s biography or saw the movie Jobs , then…

9 Steps to Master the Keyboard and Become an Ultra Efficient Software Developer

I don’t know about you, but I hate using the mouse. The entire concept of a mouse is not productive. I’m supposed to move my hand to a different place, nudge something with accuracy, and click a button. I’m getting tired just thinking about it. I’d argue that unless you’re doing design or graphics, you can get by with just a keyboard. Most certainly as a software…

9 Announcements in Microsoft Build 2023 and their Implications for the Future

The annual Microsoft Build 2023 conference just occurred and it came with a truckload of announcements. This event is Microsoft’s developer-focused conference, and it’s usually about cloud services and developer platforms. But it’s not unusual for the conference to be used as a marketing opportunity, and this year wasn’t an exception. Microsoft marketed the hell out of…

My 2023 C# Software Developer Tool List

I don’t think I have to make the point of how important tools are. What would we do without IDEs like Visual Studio? Or without good email clients like Gmail and Outlook? For power users like software engineers, good tools can 10x your productivity. Everyone got their favorite tools, and I think I gathered a pretty good list. So here’s my list of tools that I use every day and highly…

Looking at C# 12 Proposals and Beyond

C# has been through a lot of change in the last decade. From open-sourcing the language to a new cross-platform framework to yearly releases instead of 3-year iterations. Meanwhile, new languages, new frameworks, and new paradigms have taken off in the software industry, including the rise in popularity of Node.js , TypeScript, Kotlin, Rust, Go, and Python. Through it all, C# and .NET stayed…

Performance benchmarks of PostgreSQL .NET with Npgsql, Dapper, and Entity Framework Core

Disclaimer: This blog post was written by a protein-based intelligence. in a previous blog post , I showed you how to use PostgreSQL in C# with Npgsql, Dapper, and Entity Framework Core. But if you’re going to use one of them, it’s probably a good idea to make sure you’re not choosing a library that has really bad performance. Or at least to understand how much it’s going…

Making your Idea Happen with a Proof of Concept (in software development)

Disclaimer: This blog post was written by a human, with no AI-generated text Have you ever considered the concept of the proof of concept? I bet you’ve been asked more than once in your career to prove something works before committing fully. It could have been anything - a change in UI, a performance optimization, or a new feature. The underlying contract is that if you prove the concept…

PostgreSQL in C# .NET with Npgsql, Dapper, and Entity Framework: The Complete Guide

One of the most used databases these days is PostgreSQL (aka Postgres). Its accomplishments include being the most popular DB [among professional developers] according to Stack Overflow survey of 2022 , the database in all of the fastest TechEmpower benchmarks , and being the most advanced open source database (self-proclaimed). We’ll talk today about combining Postgres with my favorite…

9 Best Practices to Safely Deploy and Keep Your Application Healthy at Scale

Disclaimer: This blog post was written by a human, with no AI-generated text. An application’s code base is a living entity. It keeps growing, changing, and adapting. There’s always a new feature to add, more bugs to solve, and new bugs that are created as a result. As the teams grow, the code changes more often and there are ever more features, more issues, and more bugs. Thorough…

The Best C# .NET Web Application Tech Stack: Choosing a Database

We continue on our path to make a web application using C# and .NET. After choosing the front-end technology in part 1 , picking the backend server tech in part 2 , and deploying to Azure in part 3 , we’re going to concentrate on choosing the database. With emphasis on .NET and Azure technologies of course. A database, or rather databases, is one of the most important aspects of any big…

My Christmas Wish List from Visual Studio and the C# Build System

We have a pretty great ecosystem for C# and .NET. We have amazing IDEs like Visual Studio, a fast runtime, good troubleshooting tools, etc. But I think we can do much better. I think the .NET ecosystem can be somewhat inspired by the development process in JavaScript and TypeScript projects. I’m talking about Visual Studio, MSBuild, and the .NET SDK being a closed ecosystem, whereas in…

7 Reasons for Startups to Choose ASP.NET Over Node.js

Node.js is probably the most popular backend technology in the industry. Companies like Twitter, LinkedIn, Uber, and many others use Node.js as their primary server technology or combine it with other languages. It has a lot of things going for it like a huge community, a great ecosystem, and it uses the same language in the front end and back end. Since C# and .NET are my main programming…

8 reasons startups prefer Node.js over .NET, and are they justified?

I’ve been a .NET software developer for my entire career, and I love it. I love the C# language, the productivity of the platform, and the ecosystem. But I’ve been dealing with an existential crisis for years now. I see how companies, especially startups, don’t seem to choose .NET as their platform of choice. That role seems to be reserved to Node.js in recent years [1] [2] [3] .…

6 Productivity Shortcuts on Windows 10 & 11 I wish I knew as a Junior Software Developer

I don’t know about you, but I’m obsessed with shortcuts. I’m much more productive when using just the keyboard, and having to use the mouse annoys me deeply. Over the years, I’ve learned many useful shortcuts that increase productivity. Many of them are for IDEs or other apps, but some of the best shortcuts are part of the operating system itself. Today we’ll cover 6…

Azure Virtual Machines vs App Services

Azure Virtual Machines and App Services are the two basic pillars of Azure cloud services. Both offerings provide a way for you to execute workloads or host your server in the cloud. In both, you pay for some virtual machine in an Azure data center that runs your code. But that’s where the similarities end. One is bare bones infrastructure, whereas the other is a managed platform. One is…

Productivity Boost After Porting from WordPress to Static Site Generation

After 6 years of hosting my blog in WordPress , I ported it to Hugo , a static site generator. I used to be a big WordPress believer. I’d tell anyone who wished to hear, and many who didn’t, that WP was the answer to everything. Whether you’re building a personal blog, an e-commerce site, or a portfolio showcase. That belief was crumbling for the last few years up to the point I…

The Best C# .NET Web Application Tech Stack: Deploying to Azure

The Best C# .NET Web Application Tech Stack: Deploying to Azure We’re continuing our journey to go over the best modern web technologies by Microsoft for building a web application. We started by choosing a client-side framework in the first blog post and went on to choose a server-side tech in the 2nd post , and now it’s time to actually have your app make its way to the internet. And…

The Best C# .NET Web Application Tech Stack: Choosing The Back End

Did you notice that Microsoft announces a new and amazing web development framework each year? This year we had Minimal API hosting , before that we had Blazor , and before that we had ASP.NET Core . My point is that as the years go by, we get more and more technologies, and it’s getting hard to keep track of them all. In this article series, we’ll go over all the ways to build a web application…

The Best C# .NET Web Application Tech Stack: Choosing The Front End

There are so many different ways to create a web application today, it’s staggering. We have lots of different languages, different clouds, different server-side runtimes, and different deployment tools. Web assembly complicates things even more now that we can create our front-end in practically any language we want. In this post, we’ll try to make some semblance of order. We’ll go over the most…

Creating a Database in C#: Interviewing the CEO of RavenDB Oren Eini

I had the opportunity to interview Oren Eini , the CEO of RavenDB , a NoSql database created in C#. We had a fascinating talk and you can listen to the full recording here: Oren Eini is a long-time [blogger](https://ayende.com/blog/), a Microsoft MVP, a practitioner of 20 years experience in .NET technologies, author of “Inside RavenDB”, and a keynote speaker. Oren certainly makes a unique…

Optimizing CPU-Bound and Memory-Bound .NET Applications: 11 Best Practices

Everything has its limit, right? A car can drive only so fast, a process can use only so much memory, and a programmer can drink only so much coffee. Our productivity is limited by our resources, but we have the ability to make better or worse use of them. The goal should be to use each of our resources as close to its limit as possible. We want to use every bit of our CPU and memory or else…

6 Essential Tools to Detect and Fix Performance Issues in .NET

I don’t know about you, but I’ve been battling with performance problems all my career. And I’ll probably keep doing that all the way to retirement. For some reason, perf issues never seem to end. And the bigger the project gets, no matter how much effort your team puts into optimization, the performance problems keep piling up. So I came to accept the point of view that performance problems just…

6 Hidden Productivity Gems in Resharper and Rider

One of the most impressive productivity tools in .NET development is ReSharper . I keep getting blown away by its capabilities with each release. Don’t get me wrong here, I love Visual Studio, and it’s getting immensely better as well. But whenever I think Visual Studio caught up, I discover some new amazing feature that leaves me dependent on ReSharper and Rider yet again. So in this blog post,…

New browser APIs to detect JavaScript performance problems in production

Today’s users expect the best experience possible, and that means top-notch performance. They expect smooth scrolling, immediate interaction responses, fast page load time, and flawless animations. That’s easier said than done. As web applications scale and grow in functionality, it becomes increasingly difficult to know when performance issues appear. Profiling locally to find performance…

Maximizing the power of logs as your application scales

I think we can all agree that logs are pretty damn important. Since the beginning of time (well, of software development), logs offered an invaluable service: an insight into the black box that is your program. They can tell a story of the program’s usage, a report of all its errors, and a glimpse of its performance under the hood. Somehow, all the remote debuggers and observability tools in the…

What I Learned About C# From Job Interviews

I recently went through a series of job interviews for some of the biggest companies in tech. Without giving any names, I interviewed for 3 out of the top 5 tech firms in the world. You know who I’m talking about. The interview processes in these companies were quite different from each other, but they also had a lot of things in common, including a big emphasis on coding problems. Those problems…

Dynamic Queries with Expressions Trees in C#

When you’re using LINQ to work with a database the experience is kind of magical, right?. You treat the database entities like a regular collection, use LINQ operators like Where, Select, or Take, and it just works. But let’s consider whaHere’s how the this functionality can be achieved with dynamic queries and expression trees:t happens under the hood. The LINQ query you wrote transform into SQL…

6 Best Practices to Keep a .NET Application's Memory Healthy

Memory problems in a big .NET application are a silent killer of sorts. Kind of like high blood pressure. You can eat junk food for a long time ignoring it until one day you face a serious problem. In the case of a .NET program, that serious problem can be high memory consumption, major performance issues, and outright crashes. In this post, you’ll see how to keep our application’s blood pressure…