The Old New Thing

Solving one problem by creating a bigger problem

Often, people will not even realize that their solution to a problem merely replaces it with another problem. The quip attributed to Jamie Zawinski captures the sentiment: Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems. For example, in response to "How do I write a ...

On the alert for expired food-handling licenses

Since the lines at warehouse-style stores are always ridiculously long, I like to pass the time by checking out the legally required postings of food-handling and related licenses. Usually, two or three of their licenses have expired. It could be their seafood license, or their raw meat license, or their bakery license, it's always a surprise ...

Why doesn't Windows File Protection use ACLs to protect files?

Windows File Protection works by replacing files after they have been overwritten. Why didn't Windows just apply ACLs to deny write permission to the files? We tried that. It didn't work. Programs expect to be able to overwrite the files. A program's setup would run and it decided that it needed to "update" some system file and attempt to ...

Basic ground rules for programming – function parameters and how they are used

There are some basic ground rules that apply to all system programming, so obvious that most documentation does not bother explaining them because these rules should have been internalized by practitioners of the art to the point where they need not be expressed. In the same way that when plotting driving directions you wouldn't even consider ...

You never know until you test it with real users

Speculate all you want about what users expect, what they want, what they care about. There's no substitute for actually running experiments to find out. Those who haven't already been following Jensen Harris really ought to be, because he talks about user interface design in a highly practical way. Consider this entry on deciding how the ...

Raymond's highly scientific predictions for the 2006 NCAA men's basketball tournament

Methodology explained earlier. Update: As I noted yesterday, the final will be very close, with George Washington University edging out Villanova by two months, 1988.08.01 to 1988.10.05. Other people have come up with their own systems. The person a few doors down from me chose an algorithm that can be captured in three words: "Shorter...

Why does the version 6 animation control not use a background thread?

Many people have noticed that the animation bar control in version 6 of the common controls no longer uses a background thread to draw the animation. Instead, it acts as if the style is always set, even if the caller didn't pass it. Why is that? The first reason is that the background thread didn't actually help any. In order to draw ...

Really, college athletics is about education (not)

Okay, somebody handed me a NCAA Men's Basketball Bracket to fill out. I don't know squat about college sports, so I decided that I would fill in the bracket based on the following simple principle: The school whose President (or Chancellor) has served longer will win the match-up. (Not counting the first-round games of the top five seeds in ...

Das Buch der verrückten Experimente

The Annals of Improbable Research tipped me off to Reto Schneider's Das Buch der verrückten Experimente (The Book of Weird Experiments in English), a collection of descriptions of one hundred scientific experiments throughout the course of history. As you might expect from the title, the experiments are all somewhat strange, yet ...

On the fuzzy definition of a "Unicode application"

Commenter mpz wondered why the IME cannot detect whether it is sending characters to a Unicode or non-Unicode application and generate the appropriate character accordingly. But what exactly is a Unicode application? Actually, let me turn the question around: What is a non-Unicode application? Suppose you write a program and don't , so you'...