Holy cow, I wrote a book!
April is the time of year when applicants to colleges and universities
in the United States
typically find out
whether they have been admitted or not.
Researchers have determined
alumni give money to colleges and universities
in order to increase the likelihood
that the school will admit their children.
The double-click time is sort of the dialog unit of time.
It's used as the basis for many user interface time values
that don't have their own custom setting.
Here are just a few examples, along with
the values you get if you leave the double-click time at its default
If you go into the mouse control panel and speed up your
double-click speed, then you'll find that other user interface operations
tend to speed up as well.
The double-click time is a sort of barometer for how good the user's
reaction time is.
If you set it too low, you may find that things just happen too fast.
Spanning the main road through the Washington Park Arboretum is
a pedestrian bridge,
formally known as the
Arboretum Sewer Trestle
(you don't need me to explain why).
The bridge is marked Clearance: 9'0".
There are warnings posted far in advance.
There is even a laser sensor
above the road
which triggers flashing yellow warning lights
if an over-height vehicle approaches.
Despite all these precautions and warnings,
people still crash into the bridge with alarming frequency,
at least according to one of my colleagues who drives under
that bridge every day.
(If you ask the Department of Transportation—as my colleague
did—how often vehicles strike the bridge, you'll get a number
far, far below the actual number.
Probably because most of the incidents go unreported.)
The evidence by the side of the road suggests that the accidents
are usually caused by
somebody who forgot that he's pulling a U-Haul behind him.
Or maybe it was
a bus carrying a high school softball team.
The driver of the bus was blindly following the instructions of
his GPS navigation system and
never saw the flashing lights or the clearance sign.
He figured the route must have been good, because he set
the GPS to bus mode.
You can read the article to find out why that didn't work.
Remember folks, it's great that you have a computer to
give you directions,
but it's still your responsibility to drive the vehicle.
My bridge-obsessed colleague also introduced me to the
Om Nom Nom Nom meme by forwarding a picture of
the crash site with a pair of googly eyes drawn on the bridge overpass.
an interview with the source of the phrase om nom nom nom.
Oh, and my bridge-obsessed colleague also wishes somebody would
install a web-cam pointed at the bridge:
When the laser detects an imminent collision, it starts recording!
I was installing a program and its setup wizard said,
and I am not making this up,
Click Finish to begin installation.
But wait, the weirdness doesn't end there.
After you click Finish, the program installation completes,
and then you get another page that tells you to click Close.
This is misuse of the Finish button.
Finish does not mean Almost finished.
If the user clicks the Finish button, that's it.
No more wizard pages.
The last two wizard pages should have read
Click Next to begin installation.
You have successfully installed LitWare 2.0.
To close this wizard, click Finish.
the whimsical term applied to poorly-translated
or downright bizarre English used in non-English-speaking countries,
is not restricted to East Asia,
although the most well-known examples certainly come from there.
While in Lisbon, I saw someone wearing a t-shirt that said
Fell the force.
Commenter Peter Kankowski asks
why Windows doesn't send WM_CLOSE
and WM_DESTROY messages when the user logs off.
That's what WM_ENDSESSION is for.
To tell the program that the Windows session is ending,
and that you should get done whatever last things you want to get
done before the world comes to an end.
Windows doesn't send the WM_CLOSE message because
sending WM_CLOSE becomes complicated once there is
more than one window.
What is the correct order for sending WM_CLOSE when
there are multiple windows?
Besides, many programs don't respond to WM_CLOSE by closing.
Instant messenger programs typically treat
WM_CLOSE to mean "hide" rather than "close".
Notepad displays an unsaved data warning when you close the window.
And of course, you can't close a disabled window.
As we saw with Notepad, sending a WM_CLOSE would just
repeat actions that were taken during WM_ENDSESSION,
which is particularly bad because the time for user interaction is
WM_QUERYENDSESSION is the time to say your last good-byes.
If Windows sent the WM_CLOSE message during logoff,
Notepad would display a "You have unsaved changes.
Do you want to save this file?" message after the user already
said, "Go ahead and exit without saving," when Notepad handled
the WM_QUERYENDSESSION message.
"Stupid computer. Why is it asking me this question again?"
Even worse, what if the user says "Cancel"?
It's too late; shutdown has begun.
Your chance to cancel it was back when you got the
Asking for the WM_DESTROY message is even weirder,
since that message is not sent explicitly but is rather generated
when DestroyWindow is called.
You can't just send it outside of a destroy sequence.
Besides, why spend your time closing windows when the session is
about to go away anyway?
Ooh, let me clean up this and destroy that, I know you asked to
shut down, but this'll just take a few seconds.
It's like taking the time to steam-clean the rugs before you
demolish the building.
Now, you might respond, "Yeah, sure, these are problems,
but we should just require programs to address them,
such as not putting up additional UI if they get a WM_CLOSE
after a WM_ENDSESSION."
Of course, this argument contradicts the rationale for the original
question, since the question was inspired by programs that didn't
handle the WM_ENDSESSION correctly in the first place!
"We have a problem with programs that don't handle the
WM_ENDSESSION message correctly.
Make WM_ENDSESSION more complicated."
In response to
Perhaps the movies made too literal a translation,
Steve Sinofsky reminded me that
everybody at Microsoft got a special advance
screening of the movie True Lies, or at least five
The computer that Arnold Schwarzenegger's character infiltrates
runs the Arabic version of Windows 3.1, and the Arabic version
of Word 6 appeared on screen as well.
Steve was in charge of the Office division at the time and managed
to get permission to show a clip from a rough cut of the
movie at the 1994
"I had to run to the airport and pick up a beta tape,
show it at the meeting, and then return it via air-courier."
It was like some sort of spy movie.
I have only one citation, so it may not be proper Microspeak.
With all of these features covering the scenario end to end,
we wanted to create a new center of value.
I still don't know what it means.
While waiting in the check-out line at the local grocery store,
I saw a book titled
Baby Names For Dummies
and amused myself for wondering what its goal was.
Maybe it was a book for dumb people who don't understand
what baby names are.
"You see, babies, like many things, have names.
It is considered polite to remember the name of a baby
when you are introduced.
Baby names are often very similar to names for adults.
For most people, their adult name is the same as or very similar
to their baby name."
Maybe it was a book for dumb parents, looking for a name
for their child.
"You just had a baby, huh?
And the hospital gave you this form asking you to give it a name.
What's up with that?
This book will help you fill out that form."
(Though, personally, I think it would be better if the book
went something like this:
"Are you a dummy? Thinking of having children?
Don't do it.")
Maybe it was a book for giving names to dumb babies.
"So you have a dumb baby and you have to give it a name.
If it's a boy,
you might want to consider
(My apologies to fine people named Cletus.)
One of my colleagues proposed a fourth interpretation:
Maybe you are a store employee who dresses mannequins and
you want help coming up with cute names for them.
(On a related note, you might be
ventriloquist who is starting an act
with a dummy that is a baby.)
You don't need a whole 260KB program to do it.
This batch file does the trick just fine:
for /f "usebackq" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"
I call it rdempty.cmd.
This is the long-forgotten follow-up to
Performing an operation in each subdirectory of a directory tree
We're using the same technique as in that article,
but pumping the result through "| sort /R"
to reverse the order of the enumeration so we enumerate
the directories bottom-up rather than top-down.
This is important for deleting empty directories
because you have to remove the subdirectories before
you remove the parent.
| sort /R
I doubt anybody actually enjoys working with batch files,
but that doesn't mean that tips on using it more effectively
If you would rather gouge your eyes out than use the confusing
command prompt batch language,
then you are more than welcome to use
the scripting language of your choice instead.
At no point in this article am I saying that this is the only way
or the best way to do it.
But it's definitely smaller than a 260KB program.