The Old New Thing

devblogs.microsoft.com/oldnewthing · Company blog · on HN since 2019

Raymond Chen, a Microsoft engineer, writes about Windows history, API design quirks, and low-level programming.

What HN saysCommenters call his articles a wealth of tech lore and recommend specific posts, including his analysis of SoftRam and stack probes.
788HN people shared it
533linked it in comments
879stories submitted
16Kstory points
2 months agolast shared
2019people per year2026

Most-shared posts

  1. 1
    Homepage
    46 people · first shared 2019
  2. 2
  3. 3
    Practical use of the null garbage collector (2018)
    36 people · 44 points · first shared 2019 · 12 comments on HN
  4. 4
    Undefined behavior can result in time travel (2014)
    25 people · 90 points · first shared 2019 · 23 comments on HN
  5. 5
  6. 6
    What was the role of MS-DOS in Windows 95? (2007)
    15 people · 27 points · first shared 2019 · 2 comments on HN
  7. 7
  8. 8
    What if two programs did this?
    11 people · 10 points · first shared 2019 · 1 comments on HN
  9. 9
    The outside investigation of SoftRAM 95
    9 people · 48 points · first shared 2021 · 2 comments on HN
  10. 10
  11. 11
  12. 12
    Fibers aren’t useful for much any more
    8 people · 95 points · first shared 2019 · 58 comments on HN
  13. 13
  14. 14
    Why was Pinball removed from Windows Vista?
    8 people · 7 points · first shared 2020 · discussion on HN
  15. 15
    There's an awful lot of overclocking out there (2005)
    8 people · 3 points · first shared 2019 · discussion on HN

What HN people wrote when they linked it

dwattttt · 2026-08-20
That's a pretty great article. Re. the stack probes, it's not hard to supply your own; Raymond Chen recently did a blog series on stack probes, the entries for amd64 and arm64 are here: amd64: https://devblogs.microsoft.com/oldnewthing/20260319-00/?p=112152/ arm64: https://devblogs.microsoft.com/oldnewthing/20260320-00/?p=112154/
srvmshr · 2026-08-20
Raymond Chen's articles are the true wealth of contemporary tech-lore. My favorite is the one where a user reported error on Flight Simulator map [0] and it escalated all the way up to Bill Gates & the then chief of FS division. [0] https://devblogs.microsoft.com/oldnewthing/20170418-00/?p=95985
Calavar · 2026-07-28
SoftRam. Raymond Chen wrote a great technical analysis on what it actually did: https://devblogs.microsoft.com/oldnewthing/20211111-00/?p=105897
geekman7473 · 2026-07-20
Raymond Chen often makes it to the front page here, but in case you haven't seen it: https://devblogs.microsoft.com/oldnewthing/ This is my favorite from him: https://devblogs.microsoft.com/oldnewthing/20220426-00/?p=106528
lynndotpy · 2026-04-22
For as much flack Microsoft gets today, they have some of the best people writing about low-level computing. James Mickens writings managed to make me literally laugh-out-loud on these subjects. Chen described him best as "the funniest man in Microsoft Research" ( https://devblogs.microsoft.com/oldnewthing/20131224-00/?p=2283 )
Someone · 2026-04-01
> I too feel that storing the array's length glued to the array's data is not that good of an idea, it should be stored next to the pointer to the array aka in the array view. That’s not cache-friendly, though. I think the short string optimization (keeping short strings alongside the string length, but allocating a separate buffer for longer strings. See https://devblogs.microsoft.com/oldnewthing/20240510-00/?p=109742 for how various C++ compilers implement that) may be the best option.
ValdikSS · 2026-02-03
>Why do we often say 1 kilobyte = 1024 bytes? Because Windows, and only Windows, shows it this way. It is official and documented: https://devblogs.microsoft.com/oldnewthing/20090611-00/?p=17933 > Explorer is just following existing practice. Everybody (to within experimental error) refers to 1024 bytes as a kilobyte, not a kibibyte. If Explorer were to switch to the term kibibyte, it would merely be showing users information in a form they cannot understand, and for what purpose? So you can feel superior because you know what that term means and other people don’t.
Fulgen · 2026-01-16
C++20 actually [changed the semantics of consume](https://devblogs.microsoft.com/oldnewthing/20230427-00/?p=108107), but Rust doesn't include it. And last I remember compilers still treat it as acquire, so it's not worth the bytes it's stored in.
TrainedMonkey · 2026-01-06
Apparently the trick is two std::rotates : https://devblogs.microsoft.com/oldnewthing/20260101-00/?p=111955&c… As a side note, love how Raymond handled that, no fluff and straight to the point. Beginners mind and all that.
Ysx · 2025-12-27
> Yes, I know which “major computer manufacturer” it is, and no, I’m not telling. This is consistent with longstanding blog policy that companies are not identified in stories, because the point of the story to teach something, not to call out companies for derision. From the follow-up post: https://devblogs.microsoft.com/oldnewthing/20220920-00/?p=107201
jonstewart · 2025-12-23
Not corporate, but two of the best individual developer blogs are Eli Bendersky's and Rachel by the Bay. They've both been blogging prolifically for a decade+, Eli with a focus on, broadly, compilers and Rachel on SRE/debugging. Raymond Chen's The Old New Thing is also required reading for anyone that works with Windows. https://eli.thegreenplace.net/ https://rachelbythebay.com/w/ https://devblogs.microsoft.com/oldnewthing/
OptionOfT · 2025-12-22
My favorite story about garbage collection: https://devblogs.microsoft.com/oldnewthing/20180228-00/?p=98125
ankurdhama · 2025-12-11
> The TaskBar at the bottom was a great innovation that persists to this day The taskbar was supposed to be at the top of screen but some apps would put window at 0,0 and will be below taskbar, to fix they moved the taskbar to bottom (which I think is bad from ergonomic point of view)[1] [1] https://devblogs.microsoft.com/oldnewthing/20030912-00/?p=42543
mananaysiempre · 2025-12-01
As I’ve already said in my initial comment, this is not the whole story. (I acknowledge it is the official story, but I want to say the official story, at best, creatively omits some of the facts.) NTVDM as it existed Windows NT (3.1 through 10) for i386 leveraged V86 mode. NTVDM on Windows NT (e.g. 4.0) for MIPS, PowerPC, and Alpha, on the other hand, already had[1] a 16-bit x86 emulator, which was merely ifdefed out of the i386 version (making the latter much leaner). Is it fair of Microsoft to not care to resurrect that nearly decade-old code (as of Windows XP x64 when it first became relevant)? Yes. Is it also fair to say that they would not, in fact, need to write a complete emulator from scratch to preserve their commitment to backwards compatibility, because they had already done that? Also yes. [1] https://devblogs.microsoft.com/oldnewthing/20060525-04/?p=31073
MaxBarraclough · 2025-11-19
> don't have to write code for that exceptional behavior, except where it makes sense to. The great Raymond Chen wrote an excellent blog post on how this isn't really true, and how exceptions can lure programmers into mistakenly thinking they can just forget about failure cases. Cleaner, more elegant, and harder to recognize https://devblogs.microsoft.com/oldnewthing/20050114-00/?p=36693 (ctrl-f for taskbar to skip to heart of his point.)
mdriley · 2025-11-11
Obligatory oldnewthing: https://devblogs.microsoft.com/oldnewthing/20030929-02/?p=42363 > Multilingual support also explains why you see things like “1 folder(s)” instead of “1 folder” and “2 folders”. Why not have two format strings, one for when the number of items is exactly one, and one for when the number of items is two or more? > Well, for one, that would significantly increase the number of strings we would have to carry around. (If you say “just add s to make the plural” then you really need to get out more!) > For two, some languages (such as Slovene) have a “dual” number in addition to singular and plural. The Lahir language has singular (one), dual (two), trial (three), paucal (a few), and plural (many). So now you have to have perhaps five versions of every string that contains a replaceable number.
duskwuff · 2025-11-10
You can't. This is a classic example of an "other side of this airtight hatchway"[1] problem. [1]: https://devblogs.microsoft.com/oldnewthing/20060508-22/?p=31283
Stratoscope · 2025-10-08
You may enjoy this classic Raymond Chen post: Blow the dust out of the connector https://devblogs.microsoft.com/oldnewthing/20040303-00/?p=40423
sillywalk · 2025-09-30
The article links to [0] from Microsoft's Raymond Chen. Discussed previously: Why did Windows 95 setup use three operating systems? (microsoft.com) 307 points by mooreds 10 months ago | hide | past | favorite | 192 comments https://news.ycombinator.com/item?id=42166606 [0] https://devblogs.microsoft.com/oldnewthing/20250926-00/?p=111629
0xffany · 2025-07-24
Also on the topic of missiles, it reminded me of Raymond Chen's classic Null Garbage Collector https://devblogs.microsoft.com/oldnewthing/20180228-00/?p=98125
gpderetta · 2025-07-13
I recently decided that it was time to properly learn C++ coroutines. I looked at a few tutorials, but by far the best was Raymond Chen coroutine series[1]. It is a long series, but every article is just the right size. Strongly recommended. [1] https://devblogs.microsoft.com/oldnewthing/20210504-01/?p=105178
ericpauley · 2025-07-08
I have a tough time deciding a favorite between this story and “the ultimate in garbage collection”: https://devblogs.microsoft.com/oldnewthing/20180228-00/?p=98125
userbinator · 2025-04-23
On Windows 11 24H2, more stack space was modified by a new implementation of Critical Sections. IMHO this shows the downfall of Microsoft. Why did they do that? Critical sections have been there for many decades and should be basically bug-free by now. My best guess is someone thought they'd "improve" things and rewrote it, then made some microbenchmark that maybe showed the dubious improvement. The other comment here mentions Raymond Chen, who wrote this article about why backwards-compatibility is very important (and arguably what got Microsoft into the position it's in today): https://devblogs.microsoft.com/oldnewthing/20031224-00/?p=41363 and also this memorable case: https://news.ycombinator.com/item?id=2281932
MattSayar · 2025-04-23
Small thing but I love the effort he puts into actually coding up his examples instead of screenshots. For example: https://devblogs.microsoft.com/oldnewthing/20250414-00/?p=111072 He has many better ones but that's the latest one I've seen
vunderba · 2025-04-23
For finding blogs I either pick them up organically here or on lobste.rs. The more niche your blog is, the more chances you'll have at sharing it on highly specialized subreddits - otherwise you can always drop links to your blog in HN conversation threads if it feels relevant. That's how I developed a bit of readership on mine. And in the interest of sharing blogs, a classic is "Old New Thing" written by Raymond Chen. It's highly technical around Microsoft/Windows but I enjoy how incredibly thorough it is. https://devblogs.microsoft.com/oldnewthing
johndoe0815 · 2025-04-05
At least Teams and Outlook are not on that list... The only Microsoft thing I enjoy to "use" is Raymond Chen's blog. Highly recommended if you are interested in computer architecture, operating systems, compilers and related topics: https://devblogs.microsoft.com/oldnewthing/
Maxatar · 2025-02-01
No it's not, even with MSVC on Windows dereferencing a null pointer is not guaranteed to do anything: Here's a classic article about the very weird and unintuitive consequences of null pointer dereferencing, such as "time travel": https://devblogs.microsoft.com/oldnewthing/20140627-00/?p=633
TonyTrapp · 2024-11-18
"What if two programs did this?" https://devblogs.microsoft.com/oldnewthing/20050607-00/?p=35413 This is a recurring theme featured in multiple of Raymond Chen's blog posts, though. This is just the earliest one I can remember. Here's a few more: https://www.google.com/search?q=%22two+programs%22+site%253Adevblogs.m… The "what if two programs did this" mantra I learned from these blog posts helped me greatly in judging whether certain feature requests from users make any sense at all. As soon as it involves touching system configuration, even if there is an API for it, it's probably a very bad idea.
pjmlp · 2024-10-26
Despite all the security improvements that Microsoft has pushed for, here is one of the latest posts on Old New Thing. https://devblogs.microsoft.com/oldnewthing/20241023-00/?p=110411 Notice the use of C's memcpy() function. This is exactly the kind of posts where showing best practises would be quite helpful, as education.

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close