The Old New Thing

Practical development throughout the evolution of Windows.

Latest posts

Jun 23, 2026
Post comments count 0
Post likes count 0

Microspeak elaborated: Isn’t escrow just a release candidate by another name?

Raymond Chen

Yes, but the name is a psychological trick.

Jun 22, 2026
Post comments count 13
Post likes count 13

In memory of the man who put red and green squiggles under words

Raymond Chen

Starting in Word and expanding to nearly every other word processor, and even things that aren't word processors.

Jun 19, 2026
Post comments count 1
Post likes count 2

What does it mean when the bottom bit of my HMODULE is set?

Raymond Chen

A special kind of <CODE>HMODULE</CODE>.

Jun 18, 2026
Post comments count 5
Post likes count 2

Why doesn’t Get­Last­Input­Info() return info for the user I’m impersonating?

Raymond Chen

It doesn't care about impersonation, says so on the tin.

Jun 17, 2026
Post comments count 6
Post likes count 2

Windows stack limit checking retrospective, follow-up

Raymond Chen

Choosing the register to use to pass the desired stack allocation size.

Jun 16, 2026
Post comments count 6
Post likes count 3

Retrofitting the WM_COPY­DATA message onto Windows 3.1

Raymond Chen

It was carefully designed to be trivial.

Jun 15, 2026
Post comments count 28
Post likes count 13

The time the x86 emulator team found code so bad that they fixed it during emulation

Raymond Chen

Offensive content in the eyes of a software engineer.

Jun 12, 2026
Post comments count 8
Post likes count 3

How can I schedule work on a thread pool with low latency?

Raymond Chen

The thread pool is designed for throughput, not latency.

Jun 11, 2026
Post comments count 5
Post likes count 4

Understanding the rationale behind a rule when trying to circumvent it

Raymond Chen

I mean, technically <I>I</I> didn't do it.

Jun 10, 2026
Post comments count 7
Post likes count 2

What’s the opposite of Clip­Cursor that lets me exclude the cursor from a region?

Raymond Chen

There is no such feature, but you can just exclude it virtually.

Jun 9, 2026
Post comments count 2
Post likes count 2

The Microsoft Company Party where everybody played name tag swap

Raymond Chen

Even the boss got into the festivities.

Jun 8, 2026
Post comments count 2
Post likes count 2

Rotation revisited: Shuffling more than three blocks, and other small notes

Raymond Chen

Generalizing the shuffle to arbitrary numbers of blocks.

Jun 5, 2026
Post comments count 9
Post likes count 9

The back cover of C++: The Programming Language also raises questions not answered by the front cover

Raymond Chen

Not doing the reading.

Jun 5, 2026
Post comments count 2
Post likes count 2

Rotation revisited: Avoiding having to calculate the gcd when doing cycle decomposition

Raymond Chen

Math is hard. Let's go counting!

Jun 4, 2026
Post comments count 1
Post likes count 2

Rotation revisited: Cycle decomposition in clang’s libcxx

Raymond Chen

Rotating in the minimum number of steps by performing cycle decomposition.

Jun 3, 2026
Post comments count 1
Post likes count 3

Rotation revisited: A shocking discovery about gcc’s unidirectional rotation algorithm

Raymond Chen

We've seen this before.

Jun 2, 2026
Post comments count 1
Post likes count 4

Rotation revisited: Another unidirectional algorithm

Raymond Chen

Moving in a straight line, in a different way.

Jun 1, 2026
Post comments count 20
Post likes count 7

The placeholder name for the Windows 8 experience was “modern”

Raymond Chen

Modern this and that.

May 29, 2026
Post comments count 0
Post likes count 1

Sharing the result of a single Windows Runtime IAsyncOperation among multiple coroutines, part 3

Raymond Chen

A variation where we try only once.

May 28, 2026
Post comments count 1
Post likes count 2

Sharing the result of a single Windows Runtime IAsyncOperation among multiple coroutines, part 2

Raymond Chen

Just let each person take turns trying.

May 27, 2026
Post comments count 0
Post likes count 2

Sharing the result of a single Windows Runtime IAsyncOperation among multiple coroutines, part 1

Raymond Chen

Caching the result and knowing when the cache is valid.

May 26, 2026
Post comments count 4
Post likes count 6

If C# and JavaScript lets me await a Windows Runtime asynchronous operation more than once, why not C++/WinRT?

Raymond Chen

A difference in philosophy.

May 25, 2026
Post comments count 10
Post likes count 6

A hypothetical redesign of System.Diagnostics.Process to avoid confusion over properties that are valid only when you are the one who called Start

Raymond Chen

Putting them in a place that can access only if you call <CODE>Start</CODE>.

May 22, 2026
Post comments count 3
Post likes count 1

Why do you say that a COM STA thread must pump messages if I see sample code creating STA threads and not pumping messages?

Raymond Chen

You need to pump messages when idle, but maybe you are never idle.

May 21, 2026
Post comments count 0
Post likes count 3

How do I use Win32 structures from the Windows Runtime?

Raymond Chen

Trick question: You can't. But maybe you can fake it.

May 20, 2026
Post comments count 1
Post likes count 2

The classic TreeView control lets me sort by name or by lParam, but why not both?

Raymond Chen

You need to arrange to get one from the other.

May 19, 2026
Post comments count 5
Post likes count 5

What is the history of the ERROR_ARENA_TRASHED error code?

Raymond Chen

The storage control blocks were destroyed.