I Fight For The Users

If you haven't been able to keep up with my blistering pace of one blog post per year (if that), I can't blame you. There's a lot going on right now. It's a busy time. But let's pause and take a moment to celebrate that Elon Musk destroyed Twitter. I | Continue reading


@blog.codinghorror.com | 4 months ago

A Visual Explanation of SQL Joins

I thought Ligaya Turmelle's post on SQL joins was a great primer for novice developers. Since SQL joins appear to be set-based, the use of Venn diagrams to explain them seems, at first blush, to be a natural fit. However, like the commenters to her post, I found that the | Continue reading


@blog.codinghorror.com | 1 year ago

We Don't Use Software That Costs Money Here

Whenever the regular expression topic comes up, I unashamedly recommend the best tool on the market for parsing and building regular expressions -- RegexBuddy. But there's one tiny problem. RegexBuddy costs money. I've always encountered vague resistance when recommending … | Continue reading


@blog.codinghorror.com | 1 year ago

How Not to Advertise on the Internet

Games that run in your web browser are all the rage, and understandably so. Why not build your game for the largest audience in the world, using freely available technology, and pay zero licensing fees? One such game is Evony, formerly known as Civony – a browser-based clon … | Continue reading


@blog.codinghorror.com | 2 years ago

The 2030 Self-Driving Car Bet

It's my honor to announce that John Carmack and I have initiated a friendly bet of $10,000* to the 501(c)(3) charity of the winner’s choice: By January 1st, 2030, completely autonomous self-driving cars meeting SAE J3016 level 5 will be commercially available for passenger use in | Continue reading


@blog.codinghorror.com | 2 years ago

Falling into the Pit of Success (2007)

Eric Lippert notes the perils of programming in C++: I often think of C++ as my own personal Pit of Despair Programming Language. Unmanaged C++ makes it so easy to fall into traps. Think buffer overruns, memory leaks, double frees, mismatch between allocator and deallocator, usi … | Continue reading


@blog.codinghorror.com | 2 years ago

“Unix is a junk operating system designed by a committee of PhDs.” -Dave Cutler (2004)

A friend of mine recently returned the book Showstopper! after an extended loan. If you haven't heard of this book, allow me to quote the Amazon.com editorial summary: Showstopper! is a vivid account of the creation of Microsoft Windows NT, perhaps the most complex software p … | Continue reading


@blog.codinghorror.com | 2 years ago

Updating The Single Most Influential Book of the BASIC Era

In a way, these two books are responsible for my entire professional career. With early computers, you didn't boot up to a fancy schmancy desktop, or a screen full of apps you could easily poke and prod with your finger. No, those computers booted up to the command line. From | Continue reading


@blog.codinghorror.com | 2 years ago

The First Rule of Programming: It's Always Your Fault

You know the feeling. It's happened to all of us at some point: you've pored over the code a dozen times and still can't find a problem with it. But there's some bug or error you can't seem to get | Continue reading


@blog.codinghorror.com | 2 years ago

Revisiting the Black Sunday Hack

One of the most impressive hacks I've ever read about has to be the Black Sunday kill. Since the original 2001 Slashdot article I read on this is 99.9% quote, I'm going to do the same. I can see why they quoted so extensively; it& | Continue reading


@blog.codinghorror.com | 2 years ago

All Your App Is: A Collection of Tiny Details

Fair warning: this is a blog post about automated cat feeders. Sort of. But bear with me, because I'm also trying to make a point about software. If you have a sudden urge to click the back button on your browser now, I don't blame you. I don't often talk | Continue reading


@blog.codinghorror.com | 2 years ago

The Power of Defaults (2007)

In Typing Trumps Pointing, I extolled the virtues of the full-text search included in Vista's new Start Menu. As many commenters pointed out, the feature itself is nothing new: I love keyboard searching, but basically you say you are installing Vista, an entire operating syst … | Continue reading


@blog.codinghorror.com | 2 years ago

The Danger of Naïveté (2007)

In my previous post on shuffling, I glossed over something very important. The very first thing that came to mind for a shuffle algorithm is this: for (int i = 0; i < cards.Length; i++) { int n = rand.Next(cards.Length); Swap(ref cards[i], ref cards[n]); } It's a | Continue reading


@blog.codinghorror.com | 2 years ago

The PC Is over (2012)

MG Siegler writes: The PC is over. It will linger, but increasingly as a relic. I now dread using my computer. I want to use a tablet most of the time. And increasingly, I can. I want to use a smartphone all the rest of the time. And I do. | Continue reading


@blog.codinghorror.com | 2 years ago

All Programming Is Web Programming

Michael Braude decries the popularity of web programming: The reason most people want to program for the web is that they're not smart enough to do anything else. They don't understand compilers, concurrency, 3D or class inheritance. They haven't got a clue why I& | Continue reading


@blog.codinghorror.com | 2 years ago

Fast Approximate Anti-Aliasing (FXAA) (2011)

Anti-aliasing has an intimidating name, but what it does for our computer displays is rather fundamental. Think of it this way -- a line has infinite resolution, but our digital displays do not. So when we "snap" a line to the pixel grid on our display, we can compensate by | Continue reading


@blog.codinghorror.com | 2 years ago

Quantity Always Trumps Quality

Nathan Bowers pointed me to this five year old Cool Tools entry on the book Art & Fear. Although I am not at all ready to call software development "art" -- perhaps "craft" would be more appropriate, or "engineering" if you're feeling | Continue reading


@blog.codinghorror.com | 2 years ago

Coding Horror: Google Fu

Did you ever get the feeling that the browser address bar is the new command line? I keep forgetting how much functionality Google provides in their search text box; I was reminded when Damien Katz posted a link to a nice little Google search cheat sheet. Google also automaticall … | Continue reading


@blog.codinghorror.com | 2 years ago

In praise of Beyond Compare (2005)

It's a shame that Beyond Compare isn't listed in more "favorite tool" lists. This amazing little folder and file differencing tool has earned its spot in my core toolset a dozen times over. Here's a screenshot of it in action: I' | Continue reading


@blog.codinghorror.com | 2 years ago

Of spaces, underscores and dashes (2006)

I try to avoid using spaces in filenames and URLs. They're great for human readability, but they're remarkably inconvenient in computer resource locators: A filename with spaces has to be surrounded by quotes when referenced at the command line: XCOPY "c:\test files\refer … | Continue reading


@blog.codinghorror.com | 3 years ago

International Backup Awareness Day – Coding Horror

You may notice that commenting is currently disabled, and many old Coding Horror posts are missing images. That's because, sometime early on Friday, the server this blog is hosted on suffered catastrophic data loss. Here's what happened: The server experienced routine hard … | Continue reading


@blog.codinghorror.com | 3 years ago

Please Give Us Your Email Password (2008)

A number of people whose opinions I greatly respect have turned me on to Yelp over the last six months or so. Yelp is a community review site, and a great way to discover cool new places in whatever neighborhood you happen to be in. I've enjoyed using | Continue reading


@blog.codinghorror.com | 3 years ago

Bias Lighting

I've talked about computer workstation ergonomics before, but one topic I didn't address is lighting. We computer geeks like it dark. Really dark. Ideally, we'd be in a cave. A cave … with an internet connection. The one thing that we can't abide is direct overhead lighting. E … | Continue reading


@blog.codinghorror.com | 3 years ago

Was the Windows Registry a Good Idea? (2007)

One of the hot new features introduced with Windows 95 was the Windows Registry. The Windows Registry offered a centralized database-like location to store application and system settings. No more plain text .INI files splattered all over your system. Instead, issue a few easy AP … | Continue reading


@blog.codinghorror.com | 3 years ago

Boyd's Law of Iteration

Scott Stanfield forwarded me a link to Roger Sessions' A Better Path to Enterprise Architecture yesterday. Even though it's got the snake-oil word "Enterprise" in the title, the article is surprisingly good. I particularly liked the unusual analogy Roger chose to illus … | Continue reading


@blog.codinghorror.com | 3 years ago

Sharpening the Saw

As a software developer, how do you sharpen your saw? Sharpening the saw is shorthand for anything you do that isn't programming, necessarily, but (theoretically) makes you a better programmer. It's derived from the Covey book The 7 Habits of Highly Effective People. Ther … | Continue reading


@blog.codinghorror.com | 3 years ago

The Magpie Developer (2008)

I've often thought that software developers were akin to Magpies, birds notorious for stealing shiny items to decorate their complex nests. Like Magpies, software developers are unusually smart and curious creatures, almost by definition. But we are too easily distracted by shiny … | Continue reading


@blog.codinghorror.com | 3 years ago

Building a PC, Part IX: Downsizing

Hard to believe that I've had the same PC case since 2011, and my last serious upgrade was in 2015. I guess that's yet another sign that the PC is over, because PC upgrades have gotten really boring. It took 5 years for me to muster up the initiative to | Continue reading


@blog.codinghorror.com | 4 years ago

The best code is no code at all

Rich Skrenta writes that code is our enemy. Code is bad. It rots. It requires periodic maintenance. It has bugs that need to be found. New features mean old code has to be adapted. The more code you have, the more places there are for bugs to hide. The longer | Continue reading


@blog.codinghorror.com | 4 years ago

The God Login

I graduated with a Computer Science minor from the University of Virginia in 1992. The reason it's a minor and not a major is because to major in CS at UVa you had to go through the Engineering School, and I was absolutely not cut out for that kind of | Continue reading


@blog.codinghorror.com | 4 years ago

Good Programmers Get Off Their Butts

I searched for this citation, and like Wes, I remember reading it, but I can't remember the exact place I read it: This echoes another comment from a recently read blog article, the author of which I cannot recall. Good programmers get off their butts. Typically, programmers won … | Continue reading


@blog.codinghorror.com | 4 years ago

You Don't Need Millions of Dollars

Masters of Doom is the story of John Carmack and John Romero creating the seminal games Wolfenstein 3D, Doom, and Quake. It's an amazing work on so many levels – but primarily because of the exhaustive research the author undertook to tell this story. To re-create the story o … | Continue reading


@blog.codinghorror.com | 4 years ago

The Sad Tragedy of Micro-Optimization Theater (2009)

I'll just come right out and say it: I love strings. As far as I'm concerned, there isn't a problem that I can't solve with a string and perhaps a regular expression or two. But maybe that's just my lack | Continue reading


@blog.codinghorror.com | 4 years ago

Paul Graham's Participatory Narcissism

Continue reading


@blog.codinghorror.com | 4 years ago

Performance Is a Feature (2011)

Continue reading


@blog.codinghorror.com | 4 years ago

Multiple Monitors and Productivity

Continue reading


@blog.codinghorror.com | 4 years ago

Death to the Space Infidels (Tabs vs. Spaces)

Continue reading


@blog.codinghorror.com | 4 years ago

Is Writing More Important Than Programming?

Continue reading


@blog.codinghorror.com | 4 years ago

Stackoverflow got its name (2008)

Continue reading


@blog.codinghorror.com | 4 years ago

We Are Typists First, Programmers Second (2008)

Continue reading


@blog.codinghorror.com | 4 years ago

Programmers Don't Read Books – But You Should (2008)

Continue reading


@blog.codinghorror.com | 4 years ago

The Rise of the Electric Scooter

Continue reading


@blog.codinghorror.com | 4 years ago

Regular Expressions: Now You Have Two Problems (2008)

Continue reading


@blog.codinghorror.com | 4 years ago

Electric Geek Transportation Systems

Continue reading


@blog.codinghorror.com | 4 years ago

Electric Geek Transportation Systems

Continue reading


@blog.codinghorror.com | 4 years ago

New Programming Jargon (2012)

Continue reading


@blog.codinghorror.com | 4 years ago

Because Reading Is Fundamental (2014)

Continue reading


@blog.codinghorror.com | 4 years ago

What Can You Build in 600 Lines of Code?

Continue reading


@blog.codinghorror.com | 4 years ago