Holy cow, I wrote a book!
One of the proposals for adding hidden features to Windows Setup
is to have
a bunch of hidden function keys,
one for each hidden option.
Well, first of all, there are only twelve function keys
and there are way more than twelve possible Setup features.
(Yes, there may be a few function keys still active during Setup,
but they exist only for compatibility purposes.
No new Setup features involve function keys as far as I'm aware.
And yes, there are keyboard layouts with more than twelve function keys,
but think about what you're saying in context:
"Yes, Setup should use function keys that are not available on
Furthermore, there's no guarantee that there's somebody sitting in
front of the computer when it's running Setup.
Indeed, 90% of the time, there is nobody there at all;
Setup is running on a factory floor somewhere churning out computers
day and night.
Adding a command line option to Setup also
runs you into problems:
The command line gradually gets bloated with a bajillion options.
After taking your several dozen customizations and cramming them onto the
command line, you'll find yourself having to type 500 characters
onto the command line to get what you want,
and woe unto you if you typo one of those 500 characters.
Can you imagine if somebody said,
"To set up Windows the way I like, I simply type the following
command," followed by a command that goes on for six lines?
"This is total crap.
I'm expected to type this monstrosity?"
Windows Setup for quite a long time has supported so-called
You build a so-called unattend file and pass it to
the setup program as a single command line parameter,
something like setup /unattend:unattendfile.
(I forget the command line exactly; you can go look it up yourself.)
Now somebody can post their favorite settings onto their
Web site, and you can download it and pass it to Setup.
For many years, this unattend file took the form of an INI file,
with [Sections] and Key=Value entries.
In Windows Vista, the Setup folks threw away the old parser
and switched to XML.
Because XML is the wave of the future, right?
(I can imagine Steve Ballmer jumping up and down shouting
"XML! XML! XML!")
I don't know whether they've actually done it, but in principle,
the switch to XML means that they can write a schema for the
unattend file, and then all the standard XML
validation tools become available.
It appears that the country of Burundi
used a freelance photographer's image on their currency without permission.
(If the article goes down,
BoingBoing saved a side-by-side comparison for your inspection.)
The article adds that
Fajack says he's talked about his case with several lawyers,
editors and people experienced in photography and
none of them has heard of any other infringement cases involving currency.
I guess nobody remembered that the initial design for the Euro
taken from the book
Bridges: Three Thousand Years of Defying Nature.
The theory must have been that there's no room for footnotes on a banknote.
(Though the Bank of England found room for
a copyright notice.)
(On a tangential note,
Kazakhstan misspelled the word "bank" on their notes.)
This is really just a corollary to
Why are DLLs unloaded in the "wrong" order.
Exactly the same logic that explains why DLLs are unloaded in the "wrong"
order also explains why they are uninitialized in the "wrong" order.
Once you understand the first issue, the second comes for free;
just change DLL_PROCESS_DETACH to DLL_THREAD_DETACH
in your analysis.
Apply the logic to
the scenario posed in this comment
and you'll see why it too is flawed.
Password was one of the classic game shows.
Its methodical pace encouraged thoughtful play,
as opposed to today's game shows which appear to rely
on dramatic music and ominous spotlights for their appeal.
not a clip from the game show
but rather a scene from the comedy The Odd Couple
in which the two characters are contestants,
and as you might expect from a sitcom, they fail spectacularly.
But even from the clip, you can get a pretty good feel for how
the game is played.
The new version is nothing like it.
It's really "try to guess a word which your partner describes in three words."
The strategy of deciding whether to "pass or play": Gone.
Picking up a miss from the opponent: Gone.
It sounds like
the folks at BuzzerBlog aren't big fans of the remake either.
A customer noticed that if you add three to a process ID
and pass it to the OpenProcess function, it still
Why is that?
Well, first of all, I need to say up front that the behavior you're
seeing is an artifact of the implementation and is not part of the
You're passing intentionally invalid parameters,
what did you expect?
The context of this question is "We're seeing this behavior and we
can't explain it," not "We're using this trick and want confirmation
that it's okay."
you actually know the answer to this already.
As we saw earlier,
the Windows NT kernel uses the handle manager
to parcel out process and thread IDs,
and the handle manager ignores the bottom two bits of handles.
Therefore, adding three has no effect on the process-id-to-object
This mechanism is peculiar to kernels based on Windows NT.
Versions of Windows derived from the Windows 95 kernel
have a different mechanism for mapping process IDs to processes,
and that mechanism is
If you add three, the OpenProcess function will reject
your process ID as invalid.
And I don't know how Windows CE handles it.
Again, I wish to emphasize that the behavior you see in Windows NT-based
kernels is just an implementation artifact
which can change at any time.
Who knows, maybe once they read this entry,
the kernel folks will go in and change OpenProcess
to be even more strict.
Pre-emptive Yuhong Bao comment:
"Process IDs on Windows 95 are a pointer to an internal data
structure XORed with a constant to obfuscate them."
Back in March,
I agreed to make a brief appearance at
Portugal TechDays 2008.
My arrival was delayed due to heavy traffic:
I had taken the number 15 tram, which was jam packed, and the traffic
on the road didn't help either.
And then when I found the building labelled
Centro de Congressos,
I found the doors locked.
That's because the big sign facing
Rua da Junqueira
is not the main entrance.
The main entrance faces Travessa da Guarda.
But of course, when you're standing on Rua da Junqueira,
you don't know that.
And right next to the big sign is a door.
Which is locked.
And there's no sign on the door that says
"You idiot, this is the side entrance.
The main entrance is around the corner over there."
All these problems getting to (and finding the entrance to) the
meeting hall meant that I had eaten into my entire scheduling buffer
and even gone a few minutes over.
Fortunately, we operate on
and people were still settling in when I rushed onto the stage.
The conference organizers had sent me a slide deck template.
It went roughly like this:
My completed slide deck therefore looked like this:
As a result,
my slide deck consisted almost entirely of the Do not remove
When I was invited,
the conference organizers had told me that I had a one-hour time slot
and when I arrived, I asked,
"So this is one hour, right?"
"One and a half hours" was the reply.
At about the one hour mark into my talk, people started leaving.
Gosh, I'm sorry my stories sucked.
Maybe they were too technical, or they were not technical enough?
I don't know, because people who leave early don't leave feedback.
I wrapped up at the 90 minute mark, got my polite applause,
and packed up my things to leave.
Maybe if I rushed, I could catch the 15 tram back to my hotel in time.
A conference organizer person asked if I could do
a short interview for a Webcast.
Okay, we set up the camera and the microphone, and we were rolling.
The interviewer then asked questions that I obviously can't answer,
like "So tell me when Windows 7 is going to ship."
I pointed out to the interviewer,
"You know I can't answer that."
"Yes, I know but our viewers want to know."
As if I'm going to say, "Oh, I'm sorry, I didn't realize.
Let me talk about something I'm not authorized to talk about
so your viewers won't be disappointed."
Fortunately, I have a standard story that I tell whenever an interviewer
asks me a question I obviously am not allowed to answer.
The interviewer continued by
asking questions that I had answered in my talk.
I thought this was strange, but afterwards I realized that the people
who will watch the Webcast probably didn't see my talk.
After all, who wants to see me any more than necessary?
Each of the questions after the first two was of the form,
"One last question. Blah blah blah blah?"
I think there were five "last questions".
The interview took about a half hour, and now I had no chance of
making it back to my hotel by public transit.
I hailed a cab and just my luck,
I got an older cabbie whose farsightedness prevented him from
reading the address I had written down
on a slip of paper.
I was forced to try to read it to him
by reverse-engineering on the fly the pronunciation
rules for the Portuguese language based on what I could remember
from how the station names were announced on the subway speaker system.
By some miracle, I was successful.
What my cabbie lacked in short-distance vision he more than made up
for with blood pressure.
He drove aggressively through the streets,
liberally honking his horn at everything in his way.
The pictures I took out the cab window all came out blurry.
I arrived at my hotel with plenty of time to spare.
I glanced at the conference schedule included in my speaker ID tag.
My talk was scheduled for 60 minutes after all.
That's why people were leaving.
And they must think I'm a jerk for going over my time slot.
And I never did get my speaker shirt.
pays a visit to The Learning Annex,
home to classes like
Bending Spoons with Your Mind and
But he signs up for How to be a TV producer.
Listen to the story and you can save yourself twenty bucks.
You may be minding your own business and discover
that your clipboard has stopped working.
You try to copy something to the clipboard,
and it's not there.
You try to paste something from the clipboard,
and nothing comes out.
What's going on?
The clipboard is a shared resource.
(More specifically, shared among programs that run on the same desktop.)
The window manager automatically closes the clipboard if
a process terminates while it has ownership of the clipboard,
but if a program opens the clipboard and simply forgets to close it
for whatever reason,
the clipboard will remain unavailable to other programs
until that program exits.
If you find yourself in this situation,
and you want your clipboard back,
you'll have to start exiting programs until you find the one
that has been holding the clipboard locked.
Terminal Services Team
one case where
the rdpclip program can
become the "bad guy" that locks up the clipboard.
second part to the story for those who can't get enough.)
Or it might be
a Virtual PC Virtual Machine Addition.
another entry in the extremely sporadic series of
food products that are offenses against nature.
Today it's the incorrectly-punctuated
Bisquick Shake 'n Pour.
For people for whom adding a half cup of milk and one egg to
two cups of
is too complicated,
now they've even dehydrated the milk and egg
and pre-measured the mix,
so all you need to do is add a measured amount of water.
Because you know,
cracking an egg is so time-consuming.
who tips me off to all the foods that are offenses against nature
let me know by email that even she,
mother to a three-week-old baby,
was able to somehow pull it together
and measure out the milk and crack the egg.
"Oh wait," she corrected herself.
"I made the pancakes from scratch."
A colleague of mine stopped by my office
to tell me that he got a telephone call from his father in Poland
why Microsoft sunk Poland.
My colleague was somewhat baffled by this question,
since his father isn't a computer nerd,
but his father explained that he saw the story on the front page
of the newspaper.
the story ran in the largest Polish newspaper,
but it doesn't appear that they credited their source,
demonstrating that quality journalism is hard to find in any country.
My guess is that the jump into Poland came from
this page, which does credit my article.
I'm just guessing, though, since I can't read Polish.
I just found it weird to see my stuff spreading all the way to
general-audience newspapers in Poland.