Raymond Chen

Raymond has been involved in the evolution of Windows for more than 30 years. In 2003, he began a Web site known as The Old New Thing which has grown in popularity far beyond his wildest imagination, a development which still gives him the heebie-jeebies. The Web site spawned a book, coincidentally also titled The Old New Thing (Addison Wesley 2007). He occasionally appears on the Windows Dev Docs Twitter account to tell stories which convey no useful information.

Post by this author

Converting between LCIDs and RFC 1766 language codes

Occasionally, I see someone ask for a function that converts between LCIDs (such as 0x0409 for English-US) and RFC 1766 language identifiers (such as "en-us"). The rule of thumb is, if it's something a web browser would need, and it has to do with locales and languages, you should look in the MLang library. In this case, the ...

The first rule about knit club…

Knit Club (direct link), a student movie from Western Washington University, wherein each residence hall floor was given less than a week to produce a five-minute movie. Note: Not be confused with Pillow Fight Club (photos from the one-hour fight). Unfortunately, the original Pillow Fight Club page is gone, but the first rule of Pillow ...

Don't underestimate the resourcefulness of people trying to be annoying

TechNet Magazine's January • February 2006 issue is now available, including a short article from me on the resourcefulness of people trying to be annoying. The issue also has an article on how to use the Volume Shadow Copy Service which I mentioned a few months ago. (And if you had read that posting from last September, ...

Taxes: Detecting session state changes, such as a locked workstation

Another developer tax is playing friendly with Fast User Switching and Terminal Services. When the workstation is locked or disconnected, you should turn off non-essential timers, minimize background activities, and generally send your program into a quiet state. If you already used the technique of painting only when your window is visible ...

Taxes: Remote Desktop Connection and painting

An increasingly important developer tax is supporting Remote Desktop Connection properly. When the user is connected via a Remote Desktop Connection, video operations are transferred over the network connection to the client for display. Since networks have high latency and nowhere near the bandwidth of a local PCI or AGP bus, you need to ...

The world's slowest RET instruction

Occasionally, somebody will ask I'm debugging a hang, and I see that many threads are stuck at a RET instruction. When I try to trace one instruction from that thread, the trace breakpoint never fires. It's as if the RET instruction itself is wedged! I've found the world's slowest RET instruction. (A common variation on this theme is that ...

2005 end-of-year link blowout sale

A quick list of links amassed over the past year. Not quite worth a posting on their own, but together they might mean something. [While Raymond was on vacation, the autopilot stopped working due to a power outage. This entry has been backdated...

On the abuse of properties

One thing that I see occasionally is the abuse of property syntax. IDispatch and CLR objects (and C++ objects if you want to avail yourself of a Microsoft-specific extension) support "properties", which syntactically look like fields but internally are treated as a pair of methods ("get" and "put"). An important principle is that given an ...

There's more to calling a function than just getting the types to match

Here's a classic novice error. You want to call a function, say GetBinaryType. What should you write for those question marks? Well, the prototype says that the second parameter is an LPDWORD, so let's pass it one. Hm, but that crashes. Well, maybe we can pass it an LPDWORD this way: Hm, that still crashes. Oh wait, it's because ...

If one certification is good, more must be better

In the discussion of driver signing, commenter ATZ Man suggested: Further, Microsoft should allow orgs that are peers of WHQL [to] certify drivers and allow drivers to obtain certs from any such org or set of such orgs as they choose. Over time users would know which orgs were on the ball and which had agendas. Would they? Let's take a ...