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.

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)