Blog index
Below are a collection of likely nerdy topics that have been stuck in my head for a few years, dumped here for posterity. As a long time Windows developer, topics might reflect that bias.
- Why make (and ymake)
- Improving execution speed of an almost traditional syntax (07 May 2021)
- GetDiskFreeSpace used to require a volume root
- GetDiskFreeSpace made sense at the time, but don't use it now (28 Jul 2017)
- NT 3.51 attempts to run 4.0 applications
- NT 3.51 was the current release of NT when Windows 95 shipped, so it always tries to run Windows 95 (4.0) applications (23 Jul 2017)
- Clang/LLVM system requirements for Windows
- The reason finding system requirements for Clang is hard is because it's a hard question to answer (16 Jul 2017)
- Visual C++ 6 linking for NT 3.1
- Visual C++ 6 could target NT 3.1, but the linker has some strange quirks (27 May 2017)
- Being native Windows and OS/2
- Windows Libraries for OS/2 was impressive technology, even if relatively unknown (12 May 2017)
- Marking NE binaries compatible
- Sometimes binaries need to declare support for a new thing and work on an old thing (07 May 2017)
- Using \\?\ to exceed MAX_PATH
- MAX_PATH is an outdated limit that's not needed on any recent version of Windows, but there's a key piece missing to eradicate it (26 Mar 2017)
- \\?\ is what you want, despite ugliness
- Many people use \\?\ to overcome MAX_PATH, but it really should be used anyway (17 Mar 2017)
- Implementing Autoconf in NMAKE
- NMAKE is the most primitive make still in existence but it has a powerful hidden primitive (11 Mar 2017)
- A visual history of Visual C++
- A catalog of the versions of Visual C++ over the years with screenshots (04 Mar 2017)
- A good compiler with bad defaults
- Visual C++ 6 is a venerable piece of code, but changing defaults left a bad first impression (01 Mar 2017)
- Patching closed software for beginners
- Without source code, programs can be debugged and altered. (25 Feb 2017)
- Shimming real software
- Without source code, real programs can be made to work on old versions of Windows. (22 Feb 2017)
- Import table shimming
- Without source code, many function dependencies can be shimmed. (20 Feb 2017)
- Import table reductions with minicrt
- With source code, many function dependencies can be removed. (18 Feb 2017)
- Import table dependencies
- Programs can depend on functions that aren't available and won't work. (16 Feb 2017)
- PE subsystem version field, part 2
- The PE subsystem version determines if programs will work. (14 Feb 2017)
- PE subsystem version
- The PE subsystem version changes how programs are displayed. (12 Feb 2017)