Archive

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
Please Don’t Steal My Focus

user experience

Please Don’t Steal My Focus

Has this ever happened to you? You’re merrily typing away in some application, minding your own business, when – suddenly – a dialog pops up and steals the focus from you. At best, your flow is interrupted. You’ll have to switch back to the window that you were using, figure

By Jeff Atwood ·
Comments
Shuffling

shuffling

Shuffling

Pop quiz, hotshot. How would you write code to shuffle a deck of cards? I was thinking about this after reading Mike’s card-shuffling algorithm woes: Here’s where the non-CS mind comes into play. My first thought was to generate an unshuffled deck as an array-like

By Jeff Atwood ·
Comments
Presentation: Be Vain

user experience

Presentation: Be Vain

Frets on Fire is an open source clone of Guitar Hero. It’s a great idea. Think of all the user-created songs we could play! My excitement quickly faded after I downloaded it and tried it out. I’ll be first in line to champion gameplay over graphics, but

By Jeff Atwood ·
Comments
Mort, Elvis, Einstein, and You

programming languages

Mort, Elvis, Einstein, and You

Earlier this week I wrote about The Two Types of Programmers. Based on the huge number of comments, it seemed to strike a nerve. Or two. This surprised me, because it was never meant to be the inflammatory, provocative diatribe that many people interpreted it as. It got so out

By Jeff Atwood ·
Comments
What If They Gave a Browser War and Microsoft Never Came?

browser

What If They Gave a Browser War and Microsoft Never Came?

Two weeks ago, Apple announced a new version of WebKit, the underlying rendering technology of their Safari web browser. The feature list is impressive: * Enhanced Rich Text Editing * Faster JavaScript and DOM (~ 2x) * Faster Page Loading * SVG support * XPath support * Improved JavaScript XML technology (XSLT, DOMParser, XMLSerializer, and enhanced XMLHttpRequest

By Jeff Atwood ·
Comments
The Big Ball of Mud and Other Architectural Disasters

software development concepts

The Big Ball of Mud and Other Architectural Disasters

Mistakes are inevitable on any software project. But mistakes, if handled appropriately, are OK. Mistakes can be intercepted, adjusted, and ultimately addressed. The root of deep, fatal software project problems is not knowing when you’re making a mistake. These types of mistakes tend to fester into massive, systemic project

By Jeff Atwood ·
Comments

programming languages

The Two Types of Programmers

Contrary to myth, there aren’t fourteen types of programmers. There are really only two, as Ben Collins-Sussman reminds us. There are two “classes” of programmers in the world of software development: I’m going to call them the 20% and the 80%. The 20% folks are what many

By Jeff Atwood ·
Comments
Has CAPTCHA Been “Broken?”

e-commerce

Has CAPTCHA Been “Broken?”

A recent Wall Street Journal describes Ticketmaster’s problems with online scalpers: The Internet era has brought speed and convenience to all sorts of consumer transactions. For concertgoers, however, it has also led to ever-faster sellouts for hot events. Ticketmaster deploys technology that is supposed to stop brokers from

By Jeff Atwood ·
Comments
Living the Dream: Rock Band

guitar hero

Living the Dream: Rock Band

I’m a huge fan of the Guitar Hero series. After reading the first reviews in November 2005, I rushed out to get one of the few available copies at my local Best Buy. It was an obscure title at the time – I had no idea it was even being

By Jeff Atwood ·
Comments
Pair Programming vs. Code Reviews

code reviews

Pair Programming vs. Code Reviews

Tom Dommett wrote in to share his positive experience with pair programming: The idea is two developers work on the same machine. Both have keyboard and mouse. At any given time one is driver and the other navigator. The roles switch either every hour, or whenever really. The driver codes,

By Jeff Atwood ·
Comments