Holy cow, I wrote a book!
After five years,
the contents of abandoned safe deposit boxes are turned over
to the state,
which attempts to contact the owners,
but if the owners cannot be located after three years,
they are put up for auction.
this antique watch with a Swedish dedication:
"Till min kära syster Nanny fr. Elin — Mors klocka"
"To my dear sister Nanny, from Elin — Mom's watch".
It's sad that something with such obvious sentimental value
is being sold off.
Or, if you are more of the nerdy type,
you could bid on
Star Trek comic books graphic novels
Michael Jordan rookie trading card.
Commenter bav016 asks
how functions like PostQuitMessage
and SetTimer(NULL) know which thread the messages should
Unlike some functions such as InvalidateRect which have a window
handle parameter that lets you say which window you want to operate on,
PostQuitMessage and SetTimer(NULL)
don't say which thread the WM_QUIT
or WM_TIMER message should go to.
How do they decide?
The messages go to the current thread;
that is, they are delivered to the thread that called the function
in the first place.
There are many functions which operate on an implicit message queue,
and those cases, they operate on the message queue associated
with the thread making the call.
If you call GetKeyState
you retrieve the calling thread's keyboard state.
If you call GetMessage
you retrieve messages from the calling thread's message queue.
If you call InSendMessage,
you are told about the calling thread's message processing state.
If you call GetQueueStatus
you retrieve information about the calling thread's msesage queue.
You get the idea.
If you want these functions to operate on a thread different
from the one that is executing,
you'll have to ask that thread to make the call for you.
Whenever I post about a programming error that can lead to crashes,
the security team gets all excited and starts looking for ways
to exploit it.
For example, when I wrote about
the fundamentally flawed DONT_RESOLVE_DLL_REFERENCES
flag, the security folks went scouring through the Windows source code
looking for anybody who passed that flag, and then tried to come up
with ways they could trick the code into loading an unintended DLL
and causing trouble.
I wouldn't have known about this exercise at all if
one of the team members
hadn't forwarded me some email discussing their preliminary
investigations as if to say, "See what you started?"
I'm always amused when somebody announces that
they're having a geek dinner at a technology conference.
I mean, at a conference like that,
every dinner is a geek dinner.
The geek density is so high, +4 enchanted vorpal swords quiver in fear.
[Update 8am: Fixed broken permalink. Yay, they broke a permalink...]
Phase three: Not profit.
Coolidge High School received a $50,000 grant from AOL Time Warner
to help keep the school computer systems running.
Add a bizarre and disastrous fundraiser
run by a confessed fraudster,
and the next thing you know,
nearly all of the money vanished before the year was out.
Security researcher Ross Anderson
gives a talk on
how a search engine can be used to shed light on the various
evils that lurk on the Web.
It starts off slow, but picks up when he gets to the
"Can you spot the scam?"
game that he plays with each Web site.
(If you're in a hurry, skip ahead to a little past the 20 minute mark.)
The only thread message you can meaningfully post
to a thread displaying UI is WM_NULL,
and even then, it's only because you want to wake up the message
loop for some reason.
A common problem I see is people who use PostThreadMessage
to talk to a thread that is displaying UI and then wonder why
the message never arrives.
Oh, the message arrived all right.
It arrived and then was thrown away.
This is actually a repeat of
an earlier entry with the title
Thread messages are eaten by modal loops,
but I'm repeating it with a better subject line to help search engines.
But since I'm here, I may as well augment the existing article.
Obvious places where you have modal loops on a UI thread are functions
that are explicitly modal like DialogBox
or MessageBox or
But there are less obvious modal loops, like the modal loop that runs
when you click on the caption bar and hold the button
or the modal loop that runs when COM is waiting for a cross-thread call
And since you don't control those modal loops, when they call
DispatchMessage, your thread message will simply be
If you need to communicate reliably with a thread that also displays UI,
then create a hidden window and send or post messages to that window.
This year, I was woefully unprepared for the annual
Chilly Hilly ride,
not having gotten on my bicycle for the entire month of February.
And I paid dearly for this lack of preparation,
conking out and ending up walking up some of the last few hills.
I rode with a few other people, but I quickly ended up lagging
They would sometimes stop to let me catch up,
but I told them not to bother and just go at their own pace.
At one point, I ran over a nail and lost precious time to a flat tire.
(I took the flat tire as an opportunity to take my midpoint break,
since it occurred just a half mile or so from the cider stop.)
After patching the flat, I caught up to the rest of the group at the
cider stop, where they were nearly ready to resume the ride.
We left the cider stop together, but I quickly fell behind.
I rolled into the finish as the rest of the group finished up their chili
(a traditional post-ride snack),
so we all headed out directly to the ferry.
(Basically, I used their break time as my opportunity to catch up.)
We were just in time for
the 1:10 run, but we were too far back in line and they stopped
accepting riders just as we reached the front.
I guess I had time to have some chili after all,
but by this point I didn't want to lose my place in line.
My record against Chilly Hilly is now even at
2 wins, 2 losses.
Ferry trivia: Even though there was room for more bicycles on the
ferry, they wouldn't accept any more.
This wasn't because they were being mean.
They were following safety rules:
While the limiting factor in how many cars they will allow on the
ferry is the amount of space on the ferry deck,
the limiting factor in how many bicycles they will accept on the ferry
is the number of life jackets they have.
Nobody would know:
Right near the start, a wine store advertised that it was offering
Don't just lubricate your bicycle; lubricate yourself!
One of my friends who was riding by himself noted
"I saw that sign and thought to myself,
you know, I could just go in there, drink wine for three hours,
then tootle back to the ferry for the return trip, and nobody would know."
I wonder if anybody actually did that.
Chilly Hilly trivia:
There were 6028 riders this year,
a huge increase from the 3585 riders last year.
Are you sick of all these little blurbs yet?
Photos of the ferry ride from the Seattle P-I.
The Kitsap Sun link above also has pictures of the ride itself.
Then again, the "no sense of fashion or taste" may be redundant.
Perhaps you are so enamored of the Microsoft-branded
at the Company Meeting
that you can't keep your excitement to yourself
and want to share the joy with a friend.
You can now pick one up at the Microsoft Company Store in Redmond,
right across the hall from the
(The Rapture Index ticks up another notch.)
"You shouldn't have."
Previously, in Christmas gift ideas.
¹ The Internets.
¹ The Internets.