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.
- C/C++ 7.0 add on for OS/2
- Although intended as an add-on, it's still a complete compiler (06 Jan 2024)
- zdir - an OS/2 Family sdir
- Rewriting my favorite tool into a hybrid 16 bit DOS-OS/2 program (20 Sep 2023)
- A C runtime for Visual C++ to target OS/2
- Recycling minicrt into a 16 bit environment (19 Sep 2023)
- Making OS/2 family programs with Visual C++
- Visual C++ doesn't help you write OS/2 programs, but won't stop you either (18 Sep 2023)
- Making nice UI on NT 3.1 and above
- The subsystem version controls the appearance, but the subsystem version can be controlled (13 Sep 2023)
- Buffer overflows using NT 3.1
- Strange bugs that are visible with a debug memory allocator (05 Aug 2023)
- 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)