Archive

The Great Browser JavaScript Showdown

javascript

The Great Browser JavaScript Showdown

In The Day Performance Didn’t Matter Any More, I found that the performance of JavaScript improved a hundredfold between 1996 and 2006. If Web 2.0 is built on a backbone of JavaScript, it’s largely possible only because of those crucial Moore’s Law performance improvements. But have

By Jeff Atwood ·
Comments

perl

Nobody Cares What Your Code Looks Like

In The Problems of Perl: The Future of Bugzilla, Max Kanat-Alexander* laments the state of the Bugzilla codebase: Once upon a time, Bugzilla was an internal application at Netscape, written in TCL. When it was open-sourced in 1998, Terry (the original programmer), decided to re-write Bugzilla in

By Jeff Atwood ·
Comments
Software Registration Keys

security

Software Registration Keys

Software is digital through and through, and yet there’s one unavoidable aspect of software installation that remains thoroughly analog: entering the registration key. The aggravation is intentional. Unique registration keys exist only to prevent piracy. Like all piracy solutions – short of completely server hosted applications and games, where piracy

By Jeff Atwood ·
Comments
On The Meaning of “Coding Horror”

programming languages

On The Meaning of “Coding Horror”

In a recent web search, I found the following comment in a programming.reddit.com thread from eight months ago, completely by accident: I think prog.reddit will continue to move in phases... a couple of days ago, someone complained about a drop-off in Haskell articles, today there were

By Jeff Atwood ·
Comments
Our Fractured Online Identities

blogging

Our Fractured Online Identities

Anil Dash has been blogging since 1999. He’s a member of the Movable Type team from the earliest days. As you’d expect from a man who has lived in the trenches for so long, his blog is excellent. It’s well worth a visit if you haven’t

By Jeff Atwood ·
Comments

programming languages

Sorting for Humans : Natural Sort Order

The default sort functions in almost every programming language are poorly suited for human consumption. What do I mean by that? Well, consider the difference between sorting filenames in Windows explorer, and sorting those very same filenames via Array.Sort() code: Explorer shell sortArray.Sort() Quite a difference. I can

By Jeff Atwood ·
Comments
Blacklists Don’t Work

security

Blacklists Don’t Work

📆This was written in 2007. The terms "whitelist" and "blacklist" are considered outdated. Today, the terms "allowlist" and "denylist" (among others) are more descriptive. Jon Galloway and I got into a heated debate a few weeks ago about the efficacy of anti-

By Jeff Atwood ·
Comments

government

Are You a Doer or a Talker?

Today’s lesson comes to you courtesy of your local Department of Transportation: The Utah DOT is spending $6 million on a feasibility study for a bridge across a lake. Meanwhile, the DOT doesn’t have enough money to put up traveler information video cameras at dangerous mountain passes and

By Jeff Atwood ·
Comments
Gifts for Geeks: 2007 Edition

programming languages

Gifts for Geeks: 2007 Edition

In case you hadn’t noticed, it’s that time of year again: let the wholesale buying of crap begin! As a technology enthusiast with a bad impulse purchase habit, I get a lot of complaints that I am difficult to buy for. That’s sort of intentional. I spent

By Jeff Atwood ·
Comments
The Danger of Naïveté

algorithms

The Danger of Naïveté

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

By Jeff Atwood ·
Comments
Hashtables, Pigeonholes, and Birthdays

hash function

Hashtables, Pigeonholes, and Birthdays

One of the most beloved of all data structures in computer science is the hash table. A hash table is a data structure that associates keys with values. The primary operation it supports efficiently is a lookup: given a key (e.g. a person’s name), find the corresponding value

By Jeff Atwood ·
Comments

user feedback

Sharing The Customer’s Pain

In this interview with Werner Vogels, the CTO of Amazon, he outlines how Amazon’s developers stay in touch with their users: Remember that most of our developers are in the loop with customers, so they have a rather good understanding about what our customers like, what they do not

By Jeff Atwood ·
Comments