Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    B

    Bytepointer

    bytepointer.com · Personal blog · on HN since 2019

    Bytepointer hosts Windows internals articles by Matt Pietrek and others, including the Rich header and structured exception handling.

    Visit blogHN submissions
    Systems & PerformanceRetro ComputingProgramming
    What HN says

    HN links it for its Windows internals material, such as the Microsoft Rich header and archived Old New Thing posts; one commenter says Windows still runs on this stuff.

    Stats for nerds
    15HN people shared it
    5linked in comments
    130story points
    Mar 2024last shared
    2019people per year2024

    Top posts on HN

    1. 1
      The Undocumented Microsoft “Rich” Header (2018)
      4 people · 124 points · first shared 2019 · 23 comments on HN
    2. 2
      A Crash Course on the Depths of Win32 Structured Exception Handling (1997)
      2 people · 2 points · first shared 2023 · Discussion on HN
    3. 3
      Freeware Tools for Windows and Linux
      1 person · 2 points · first shared 2024 · Discussion on HN
    4. 4
      Borland Turbo Assembler (TASM) Unofficial Changelist
      1 person · 2 points · first shared 2020 · Discussion on HN
    5. 5
      20050815 224 the poor mans way of identifying memory leaks
      2 people · first shared 2021
    6. 6
      20050211 035 windowless controls are not magic
      2 people · first shared 2023
    7. 7
      20040506 174 why did interlockedincrement decrement only return the sign of the result
      1 person · first shared 2022
    8. 8
      Pietrek in depth look into pe format pt1
      1 person · first shared 2022
    9. 9
      20030912 057 why does the taskbar default to the bottom of the screen
      1 person · first shared 2022
    10. 10
      20030910 053 why do some people call the taskbar the tray
      1 person · first shared 2023

    What HN people wrote when they linked it

    • mananaysiempreMay 2023

      Jokes aside, I can think of a couple of differences:

      - For the longest time, languages with typed (“checked”) exceptions lacked any parametric polymorphism worth a damn. That made the typing... less than optimally useful, especially with fallible callbacks. Sum types can borrow all that from the existing language, and you’d feel intensely awkward if you tried to go with untyped errors there (it’s of course still possible, through Dynamic or interface
      {} or whatever Rust’s thing is).

      Though looking at the boilerplate fest that is the latest Rust (sum-types-based) error handling article posted here[1], I’m not entirely convinced the situation has improved. Perhaps open union types of some sort really are needed? That’s where the algebraic-effects languages seem to be going, anyway.

      - Exceptions are more strict about what you can do with them: you can return or you can bind, monadically speaking. If an exception was raised, everything stops until it’s caught. With sum types (concrete ones, not an abstract error monad you can’t run), you are allowed to have several propagation chains at once and manipulate them as data. The lack of that additional flexibility is what makes exceptions (more cheaply?) implementable in terms of stack unwinding.

      (Traditionally, stack unwinding is thought of as expensive, but I don’t really see why. Sure SJLJ-induced register spills are bad, and sure table-based unwinding is slow as hell, but a linked list of frames as in Win32 SEH[2] has to be…

    • ogurechnyMar 2024

      I meant that skinning has already been cool before XP, with various degrees of attention to detail and various amounts of system hacks. WindowBlinds for the whole system, application-level reskins. Even Java applets were once considered cool simply because they used their own UI toolkit! Moreover, Microsoft had essentially sold wallpapers and cursors as Plus packs.

      However, after the release of XP developers did not stick to using correct native components that would automatically look like Windows 98 on Windows 98, and like Windows XP on Windows XP. They continued to reinvent everything via third-party skinning libraries, but now with kind-of-hip kind-of-XP styles. Random example:

      http://web.archive.org/web/20041213230620/http://www.helium2.com/eng/images/big-collage.jpg

      Native menus don't work like that. The gradient between “Standard theme” and “Silver theme” background colors is someone's invention. Scrollbars should reach the top of the table views, and their native headers look different. Extra shadows here and there. etc., etc. Everything is improperly remade.

      I suppose it was an important topic if they specifically introduced visual style signing at the time when system files and drivers were not even required to be signed. Maybe the perspective of new antitrust trials botched another EEE campaign, maybe the peasants just refused to bow to the king that time.

      As for undocumented framework, look up "Windows DirectUser Engine" and "DirectUIHWND". Here's someone…

    • mewmewJul 2019

      To give further background, the Devilution team has primarily relied on these resources:

      1. The Japanese Playstation port with debug symbols contained in `DIABPSX.SYM`. (see [1]).

      Example debug info of the Cathedral dungeon generation algorithm:

      // address: 0x801259D0
      // line start: 612
      // line end: 624
      void DRLG_L1Floor__Fv() {
      // register: 19
      register int i;
      // register: 20
      register int j;
      // register: 3
      register long rv;
      }

      2. The debug release of the PE executable, which contained assert strings (see [2]).

      Example assert string:

      "plr[myplr].InvGrid[i] <= plr[myplr]._pNumInv"

      3. The Rich header of the PE executable, which details the exact version of the original compilers and linkers used to build `Diablo.exe` (see [3,4]).

      Example information recovered from the Rich header of `Diablo.exe`:

      Id Build Count Name Description
      0 0 155 Unknown [---] Number of imported functions (old)
      1 0 229 Import0 [---] Number of imported functions
      6 1668 1 Cvtres500 [RES] VS97 (5.0) SP3 cvtres 5.00.1668
      2 7303 29 Linker510 [IMP] VS97 (5.0) SP3 link 5.10.7303
      3 7303 1 Cvtomf510 VS97 (5.0) SP3 cvtomf 5.10.7303
      4 8447 2 Linker600 [LNK] VC++ 6.0 SP3,SP4,SP5,SP6 link 6.00.8447
      48 9044 72 Utc12_2_C [---] VC++ 6.0 SP5 Processor Pack
      19 9049 12 Linker512 Microsoft LINK 5.12.9049

      4. Discovery of the original set of compiler flags used to…

    • rramadassFeb 2020

      Assuming you are interested in learning not just Assembly but how to use it in conjunction with a high-level language (almost always C/C++);

      Background:

      --- Matt Pietrek's "Just Enough Assembly Language to Get By" - http://bytepointer.com/resources/pietrek_asm_pt1.htm

      --- Hongjiu Lu "ELF: From The Programmer's Perspective" - http://beefchunk.com/documentation/sys-programming/binary_formats/elf/elf_from_the_programmers_perspective/elf.html

      Books:

      --- Computer Systems: A Programmer's Perspective (3rd Edition) by Bryant & O'Hallaron - https://www.amazon.com/Computer-Systems-Programmers-Perspective-3rd/dp/013409266X/ref=sr_1_1?crid=26HEH06VOP2XL&keywords=computer+systems+a+programmer%27s+perspective+3rd+edition&qid=1581230329&s=books&sprefix=computer+ssytems%2Cstripbooks-intl-ship%2C515&sr=1-1

      --- Modern X86 Assembly Language Programming by Daniel Kusswurm - https://www.amazon.com/Modern-X86-Assembly-Language-Programming/dp/1484240626/ref=sr_1_1?keywords=modern+x86&qid=1581228086&s=books&sr=1-1

      --- Low-Level Programming by Igor Zhirkov - https://www.amazon.com/Low-Level-Programming-Assembly-Execution-Architecture/dp/1484224027/ref=sr_1_1?crid=Y2MOWSFXW7TL&keywords=low-level+programming&qid=1581229802&s=books&sprefix=Low-level+progr%2Cstripbooks-intl-ship%2C512&sr=1-1

    • garaetjjteNov 2021

      >So why can't Visual Studio compile to something that works by default on the Windows of the target audience without requiring them to install those additional DLLs?

      Since Windows 10 it ships with Universal C Runtime, which is used by VS2015+. System software uses these runtimes too. For Win7+ it was added as system update, though MS later relented and said it was fine to copy-paste all the api-ms* libraries from the SDK into your application directory so it also works on outdated installations.

      In the past it was different though, as system software was compiled against MSVCRT.DLL, but you wasn't supposed to use it and instead use version specific DLLs shipped in "Visual C++ Redistributables". Though going back to Windows 9x there was a time when MSVCRT.DLL was the library that was supposed to be used by applications. See http://bytepointer.com/resources/old_new_thing/20140411_092_windows_is_not_a_microsoft_visual_c_c_run_time_delivery_channel.htm

    • omnicognateApr 2022

      Lost? Past? The Windows world still runs on this stuff, and there are still plenty of people who know how it works and make money from knowing.

      That said, MS have unintentionally (I think) done a pretty good job of scrubbing the internet clean of useful information about it by breaking all their links multiple times. I keep a personal copy of some things, such as Matt Pietrek's classic two-parter "An In-Depth Look into the Win32 Portable Executable File Format", lest they disappear completely while the technologies they describe continue to run the world.

      Edit: MS only appear to have part 2 of that article in their archive, and it contains broken links (of course). Both parts can still be read at [1] and [2] and remain as relevant as they were the day they were written

      [1] https://bytepointer.com/resources/pietrek_in_depth_look_into_pe_format_pt1.htm

      [2] https://bytepointer.com/resources/pietrek_in_depth_look_into_pe_format_pt2.htm

    Related

    Microsoft Tech Communitytechcommunity.microsoft.com738 people

    Postgres IDE in VS Code

    Microsoft Tech Community
    Company · last shared 2026
    Cambuscambus.net44 people

    Oldest domains in the .com, .net, and .org TLDs

    Cambus
    Personal · last shared 2026
    Embedded Gurusembeddedgurus.com45 people

    Are we shooting ourselves in the foot with stack overflows?

    Embedded Gurus
    Publication · last shared 2024
    Ctrl blogctrl.blog174 people

    TeamViewer installs suspicious font only useful for web fingerprinting

    Ctrl blog
    Personal · last shared 2026
    TrustInSoft Blogtrust-in-soft.com30 people

    Ways C compilers break for objects larger than PTRDIFF_MAX bytes

    TrustInSoft Blog
    Company · last shared 2025
    MSRC Blogmsrc.microsoft.com240 people

    SolarWinds hackers were able to access Microsoft source code

    MSRC Blog
    Company · last shared 2026
    Windows Blogblogs.windows.com885 people

    The Windows Subsystem for Linux is now open source

    Windows Blog
    Company · last shared 2026
    Oracle Blogsblogs.oracle.com651 people

    “Stop reverse engineering our code”

    Oracle Blogs
    Company · last shared 2026