Hype

Every Software Engineer Is About to Lose Their Job. Again.

Twenty years in software has taught me one thing: every generation swears the current abstraction will be the one that finally eliminates programmers. Compilers, COBOL, 4GLs, no-code — none of them did. So when people say AI will end software engineering, I think about what actually happened last time.

I’ve been in this field for over twenty years, and in that time I’ve watched a lot of technologies show up promising to revolutionize the industry. Some of them actually did. Most didn’t. Each time, people proclaim that every software engineer is about to lose their job. So even though I’ve been using chat-based AI for a while now, I was slow to touch the newer agentic coding tools. Call it stubbornness, call it healthy skepticism, call it whatever you want — I just wasn’t in a hurry.

linux console

host.docker.internal Is a Liar (On Linux)

A 5-second page load survived a moved-off-Docker-Desktop UAT deploy, three red herrings (CPU governor, IPv6, disk contention), a crash-looping RabbitMQ broker, a silent Redis hang, and a one-digit port typo. The actual culprit: host.docker.internal doesn’t auto-resolve on native Linux Docker Engine like it does on Docker Desktop.

I spent two days chasing a 5-second page load that had no business existing. Along the way I blamed the CPU governor, IPv6, disk contention, and a laundry list of side projects running on the same box. All of those theories were reasonable. None of them were it. The real answer was one bad assumption baked into a couple of connection strings, and it wore three different disguises before I finally cornered it. The gist of it: host.docker.internal is a liar (on Linux).

Here’s the whole mess, in order, mistakes included.

passive aggressive open-source maintainer

How to Alienate Your Users: An Asshole’s Guide For Responding to Help Requests in Open Source

The post discusses how open-source maintainers can alienate users through poor communication strategies. Key behaviors include ignoring help requests, being condescending, defensive, vague, neglectful of documentation, lacking transparency, being inflexible, and failing to express gratitude. These actions create a negative user experience and reflect poorly on the project.

Open-source projects thrive on community participation and collaboration. As a maintainer, how you respond to help requests can make or break the user experience. Here are some key points to implement if you want to ensure you alienate your users.

full-stack

What is a Full-Stack Software Engineer?

You’ve heard the buzzword, you’ve seen the job postings. If so many people are hot about this topic, it must be worth learning about, right? What is a full-stack software engineer anyway?

You’ve heard the buzzword, you’ve seen the job postings. If so many people are hot about this topic, it must be worth learning about, right? What is a full-stack software engineer anyway?

testing

Unit Testing Auth0 Scripts

Unit Testing Auth0 Scripts isn’t exactly easy. Come see how to make it possible with a little magic and elbow grease.

You’re a good developer. You like testing your code. Security is important to you, so you also decide that you’ll use a 3rd party service for authentication and choose Auth0. Out-of-the-box, however, doesn’t quite get you what you need so you add some custom rules and scripts to it. You realize, however, that even though these scripts run in a NodeJS instance on their side, they don’t follow conventional patterns. How do I go about unit testing auth0 scripts, you ask yourself?

authentication failed

Skip Authentication Schemes in ASP.NET Core

Authentication in ASP.NET Core is both powerful and dynamic. It provides you the power to incorporate many different schemes and augment the logged-in security principal. Authentication schemes are how we apply authentication in ASP.NET Core. What if you want to skip authentication schemes in favor of another?

security

Understanding Policy-based authorization in ASP.NET Core

Application security is a vital piece of our overall success as developers. Many of us have learned and applied role-based or claim-based authorization. Overall, this has been “good enough”. Unfortunately, there are still many use-cases it can’t handle gracefully. We call one approach that solves these use-cases policy-based authorization.