The Curious Engineer

The Old New Thing

2003–2005

1,039 posts

2006–2008 →

2005 400

December 2005

  1. On the “Days without a pony” web page
  2. Why do up-down controls have the arrows backwards?
  3. The office disco party
  4. “Pro forma” was so 1990’s
  5. Why does Windows setup lay down a new boot sector?
  6. Music to slip into a playlist to see if anybody is listening
  7. Beware the Image File Execution Options key
  8. When hyperthreading is enabled, all the processors are virtual
  9. The Dead Sea Scrolls are coming to Seattle
  10. A note to headhunters: Check your links
  11. You probably don’t want to run programs directly off your USB memory drive
  12. Whole lotta cranking going on
  13. On the ambiguity of uniqueness
  14. We Microsoft bloggers do talk to each other occasionally, y’know
  15. Experiencing the world from flight level 210
  16. Your debugging code can be a security hole
  17. On the inability to support hardware that nobody makes any more
  18. The not-entirely-unwitting victims of the Daily Show interview
  19. Using a physical object as a reminder
  20. Rory Blyth explains the difference between 720p and 1080i
  21. Whimsical embarrassment as a gentle form of reprimand
  22. Humanity’s greatest invention, according to seventh grade students
  23. When a token changes its meaning mid-stream
  24. It’s always a good idea to check your sources
  25. Using floppy disks as semaphore tokens
  26. Derren Brown’s tips on being a psychic
  27. Psychic debugging: Why your CPU usage is hovering at 50%
  28. What one Windows XP feature am I most proud of?

November 2005

  1. The Airline Screening Playset
  2. Sometimes the fault is not in our stars but in ourselves
  3. The craft of UI design: flow|state
  4. Taxes: Geopolitics
  5. Where does an IT guy from a major hotel chain stay at the PDC?
  6. Taxes: Hierarchical Storage Management
  7. How to get Raymond to stop being interested in talking with you
  8. This video universally gets one of two reactions
  9. What causes a program to be marked as “new” on the Start menu?
  10. Semaphores don’t have owners
  11. Why is a drive letter permitted in front of UNC paths (sometimes)?
  12. The world’s worst celebrity recasting of the American version of Harry Potter
  13. What’s the difference between HWND_TOP and HWND_TOPMOST?
  14. Mini-conversations at the stoplight during the bicycle commute
  15. What does the word “supported” mean?
  16. I didn’t see Stephen Hawking in Seattle yesterday
  17. Force-feeding the dogfood
  18. Another Schadenfreude-filled look back at the dot-com zaniness
  19. Sampling every flavor of dogfood in the store
  20. In real life, nobody upgrades their server
  21. Raymond’s review of Pride and Prejudice (Keira Knightley version)
  22. What was Dr. Watson’s original name?
  23. I just have a plain standard-issue guest chair
  24. The etymology of the word “traffic light”
  25. When was the last time you formatted a floppy disk?
  26. Content owners need to review the designer art, too
  27. The psychology of naming your internal distribution lists
  28. Hiding from the police? Try knitting a sweater
  29. Why was GlobalWire called GlobalWire?
  30. Take it easy on the automatic retries
  31. It’s not a book, but it’s slightly closer
  32. Why is there a special PostQuitMessage function?
  33. Look what the hurricanes blew into Lafayette, LA
  34. To be a leader you must know when to follow
  35. Found blog: The Piehole
  36. Blog design as a form of reality programming
  37. Why is inline autocomplete disabled by default?
  38. Bicycling from Mercer Island to Microsoft main campus
  39. Välkommen till Saerige?
  40. The COM interface contract rules exist for a reason

October 2005

  1. Night of the Knitting Dead
  2. The Hallowe’en-themed lobby
  3. Even in the enlightened year of 2005, we have programs that don’t handle long file names
  4. How to recognize different types of sentinel timestamps from quite a long way away
  5. Without a doubt, the world’s worst online Swedish lessons
  6. Why is the OEM code page often called ANSI?
  7. PC Magazine interviews “the team behind Windows” on its twentieth birthday
  8. When programs assume that the system will never change, episode 1
  9. Seattle Twenty-Five for $25 November 2005 restaurant list is available
  10. It’s like being at the PDC, but without the lines or the tote bag
  11. One person’s discoverable feature is another person’s annoyance
  12. New device detected: Boeing 747
  13. Fair Isle: Knitters Wanted
  14. Why is it even possible to disable the desktop anyway?
  15. The things in the PDC 2005 introductory video
  16. Quick and dirty buzzword bingo cards in Excel
  17. Follow-up: Portsmouth Spinnaker Tower now open, but maybe you should take the stairs
  18. There’s something about Rat Poker
  19. Be careful what you name your product group
  20. Answering the phone, a classic rookie mistake
  21. The undeletable Outlook folder
  22. The history of the path separator in Japanese and Korean Windows
  23. Thread affinity of user interface objects, part 5: Object clean-up
  24. Make money working at home in your pajamas, and it’s completely legal!
  25. Thread affinity of user interface objects, part 4: GDI objects and other notes on affinity
  26. Newark Liberty International Airport Terminal A travel tips
  27. Thread affinity of user interface objects, part 3: Menus, icons, cursors, and accelerator tables
  28. New blog on integrating Groove with Office
  29. Thread affinity of user interface objects, part 2: Device contexts
  30. Thread affinity of user interface objects, part 1: Window handles
  31. The difficult balancing act between customization and supportability
  32. Your profiling tools can manufacture performance issues where there were none
  33. On the dangers of sharing your apartment
  34. Jensen Harris joins the 7am club
  35. The unfortunate interaction between LOAD_LIBRARY_AS_DATAFILE and DialogBox
  36. Running old programs in a virtual machine doesn’t necessarily create a good user experience
  37. My history of time is briefer than yours
  38. Katamari Damacy: The most screwed-up video game ever
  39. Consequences of the scheduling algorithm: Sleeping doesn’t always help
  40. Perhaps I like the phrase “withered hand” a bit too much
  41. Consequences of the scheduling algorithm: Low priority threads can run even when higher priority threads are running

September 2005

  1. The reverse-engineering of PDC 2005 pass colors
  2. But I have Visual Basic Professional
  3. English Cut: Bringing bespoke tailoring into the general consciousness
  4. The DHS television show was all a scam, it appears
  5. On objects with a reference count of zero
  6. Avoiding double-destruction when an object is released
  7. COM object destructors are very sensitive functions
  8. Raymond’s 2005 MVP Global Summit event diary
  9. Kurt would have wanted it that way
  10. This is an unsupported ride, so if you stop, you will fall over
  11. The Double-E Half Hour of Pain
  12. Ten things I noticed at the 2005 PDC
  13. Contradictory feedback from my 2005 PDC talk
  14. Coming to the completely opposite conclusion on Windows versions
  15. Black(out) humor at the 2005 PDC
  16. Giving fair warning before plugging in your computer
  17. Things to do at Microsoft when the power goes out
  18. Please disconnect all cell phones, signal watches, and pagers
  19. Corrections to the answers I gave at the end of my PDC talk
  20. Why doesn’t Microsoft give every employee a UPS?
  21. Fiddling with the fonts, part 2: Keeping the English font small
  22. Fiddling with the fonts, part 1: Making the Chinese characters larger
  23. Typo patrol at the PDC
  24. Like an invention out of Harry Potter, except that Harry’s would use a quill
  25. The double-Ctrl+Alt+Del feature is really a kludge
  26. Sorry I missed you all this morning
  27. Why is there no all-encompassing superset version of Windows?
  28. Annoying renditions of the songs of Elvis
  29. Richard E. Grant as Dr. Who
  30. Understanding the consequences of WAIT_ABANDONED
  31. Reading the output of a command from batch
  32. I won’t be signing books but don’t let that stop you
  33. Why does the function WSASetLastError exist?
  34. Why aren’t low-level hooks injected?
  35. Declared unsuitable for minors in Australia! Sort of.
  36. Windows Server 2003 can take you back in time
  37. Spider Solitaire unseats the reigning champion
  38. Precision is not the same as accuracy
  39. More undocumented behavior and the people who rely on it: Output buffers

August 2005

  1. Hoping the worst-case scenario doesn’t come to pass
  2. Understanding hash codes
  3. On the adult appeal of dodgeball
  4. Program names in file type handlers need to be fully-qualified
  5. What program did you get, Danny?
  6. Why is the default console codepage called “OEM”?
  7. If you squint you might be able to make out my name
  8. Free bicycles to borrow at Marymoor Park
  9. Windows 95 crashes a cash register
  10. Marymoor Park summer movie series 2005 is nearly over
  11. A ticket to the Windows 95 launch
  12. Buying an entire Egghead Software store
  13. Why are icons multiples of 8 pixels in width?
  14. How do you convince developers to pay their “taxes”?
  15. This might be for real, even though it comes out at 7am
  16. How many floppy disks did Windows 95 come on?
  17. Justifiable assault with folding chair
  18. What are the access rights and privileges that control changing ownership of an object?
  19. Let’s just make up some dollar values and print them as fact
  20. What I’ll be doing at this year’s PDC
  21. Why is processor affinity inherited by child processes?
  22. When people ask for security holes as features: Silent install of uncertified drivers
  23. On being attacked by a sidewalk
  24. The poor man’s way of identifying memory leaks
  25. Adding a lookup control to the dictionary: Searching Pinyin
  26. Whatever you do, don’t ask for coffee
  27. Adding a lookup control to the dictionary: Just getting it on the screen
  28. Why is Windows Error Reporting nicknamed “Dr. Watson”?
  29. How can a company get access to Windows Error Reporting data?
  30. The dangers of messing with activation when handling a WM_ACTIVATE message
  31. That’s about the size of it
  32. Hey, who flattened the hills?
  33. The dangers of playing focus games when handling a WM_KILLFOCUS message
  34. Have you made any assignments in this space?
  35. Why does the Internet Explorer animated logo arrange its frame vertically?
  36. On speaking a particular language in the presence of non-speakers
  37. Double-clicking radio buttons
  38. Watch out, there are Swedes in the hallway!
  39. Drawing a monochrome bitmap with transparency
  40. Rendering menu glyphs is slightly trickier
  41. Rendering standard Windows elements
  42. Microsoft Company Picnic 2005

July 2005

  1. Does Windows have a limit of 2000 threads per process?
  2. What is this “web site” thing you are talking about?
  3. When the normal window destruction messages are thrown for a loop
  4. What is the difference between WM_DESTROY and WM_NCDESTROY?
  5. On paying for your meal upon leaving a restaurant
  6. Dinner at the Herbfarm in Woodinville
  7. Marin Alsop to be music director of the Baltimore Symphony Orchestra
  8. The importance of passing the WT_EXECUTELONGFUNCTION flag to QueueUserWorkItem
  9. FindFirstFile is not a SQL query
  10. News flash: Going for a walk on a nice day makes you feel better
  11. The Northwest Mahler Festival performs Mahler’s Second Symphony (“Resurrection”)
  12. Why does FindFirstFile find short names?
  13. What is the deal with the ES_OEMCONVERT flag?
  14. Watching the game of “Telephone” play out on the Internet
  15. If InitCommonControls doesn’t do anything, why do you have to call it?
  16. The apocryphal history of file system tunnelling
  17. Where did the names of the computer Hearts opponents come from?
  18. When Marketing edits your PDC talk description
  19. Converting from traditional to simplified Chinese, part 3: Highlighting differences
  20. Converting from traditional to simplified Chinese, part 2: Using the dictionary
  21. Converting from traditional to simplified Chinese, part 1: Loading the dictionary
  22. The best book on ActiveX programming ever written
  23. How can I recover the dialog resource ID from a dialog window handle?
  24. What struck me about life in the Republic
  25. What are SYSTEM_FONT and DEFAULT_GUI_FONT?
  26. What’s the point of DeferWindowPos?
  27. Answers to yesterday’s holiday fun puzzles
  28. Using script to query information from Internet Explorer windows
  29. Some holiday fun: Puzzle supplementary material
  30. Some holiday fun: Puzzle #6
  31. Some holiday fun: Puzzle #5
  32. Some holiday fun: Puzzle #4
  33. Some holiday fun: Puzzle #3
  34. Some holiday fun: Puzzle #2
  35. Some holiday fun: Puzzle #1
  36. I hope you weren’t using those undocumented critical section fields
  37. What’s the difference between My Documents and Application Data?

June 2005

  1. Beware of roaming user profiles
  2. Why isn't Windows Setup just a disk reimage plus a registry dump?
  3. A simple story in pictures
  4. Drink at work: The blog of a cartoonist
  5. Why do Microsoft code samples tend to use ZeroMemory instead of { 0 }?
  6. Why are there broadcast-based mechanisms in Windows?
  7. Why can't I get the pixels of a window that isn't visible on screen?
  8. Why does the CreateProcess function do autocorrection?
  9. I'll see (some of) you in Los Angeles in September
  10. Why does the Run dialog autocorrect but not the Run key?
  11. Google is the cute two-year-old girl with curly blond hair that gets all the attention
  12. The Date/Time control panel is not a calendar
  13. Perhaps this is what airport security is worried about
  14. What's the difference between autocomplete and dropdown history?
  15. Is there ever such a thing as a good letter from the IRS?
  16. Why do NTFS and Explorer disagree on filename sorting?
  17. What is the difference between "Unpin from Start menu" and "Remove from this list"?
  18. Displaying the dictionary, part 3: Using an owner-data listview
  19. Displaying the dictionary, part 2: Using text callbacks
  20. Seattle International Juggling Festival 2005
  21. Displaying the dictionary, part 1: Naive version
  22. Maintaining high standards at the International Frederic Chopin Piano Competition
  23. Why does Explorer eject the CD after you finish burning it?
  24. Why can't the default drag/drop behavior be changed?
  25. Can you trust the Man on the Street interview?
  26. Why don't control panel programs and property sheets show up in the taskbar?
  27. Answer to quick puzzle about security and synchronization
  28. What if two programs did this?
  29. Adam Felber teaches us how to avoid setting off motion detectors
  30. A quick puzzle about security and synchronization
  31. Why does Windows XP SP2 sometimes forget my CD autoplay settings?
  32. The 2005 Seattle Chicken Tour
  33. If strncpy is so dangerous, why does Visual Studio 2005 still support it?
  34. Why don't you ever see a rat vomiting?
  35. Using /LARGEADDRESSAWARE on 64-bit Windows for 32-bit programs

May 2005

  1. Using modular arithmetic to avoid timing overflow problems
  2. Shocked (shocked!) that patronage exists in Chicago politics
  3. You can't simulate keyboard input with PostMessage
  4. When is x/2 different from x>>1?
  5. Why does Add or Remove Programs show a large blank space?
  6. The effect of SetCursor lasts only until the next SetCursor
  7. Understanding ternary raster operations
  8. Boil first, then mash
  9. Why are DLLs unloaded in the "wrong" order?
  10. I'd like to register my stolen car, please
  11. When is a window visible yet not visible?
  12. Loading the dictionary, part 6: Taking advantage of our memory allocation pattern
  13. Loading the dictionary, part 5: Avoiding string copying
  14. You can't escape those AOL CDs
  15. Loading the dictionary, part 4: Character conversion redux
  16. Loading the dictionary, part 3: Breaking the text into lines
  17. The Microsoft corporate network: 1.7 times worse than hell
  18. Loading the dictionary, part 2: Character conversion
  19. Loading the dictionary, part 1: Starting point
  20. Developing a Chinese/English dictionary: Introduction
  21. How to query properties of the taskbar
  22. How do I cover the taskbar with a fullscreen window?
  23. When people ask for security holes as features: Stealing passwords
  24. Managing the UI state of accelerators and focus rectangles
  25. Another dead computer: My personal laptop

April 2005

  1. Building a dialog template at run-time
  2. Rescuing thread messages from modal loops via message filters
  3. Watching thread messages disappear
  4. If you pull a 1920's fire extinguisher out of the ocean, for pete's sake don't drink it!
  5. Thread messages are eaten by modal loops
  6. Welcome to Millennium Tower, due for completion in May 2005
  7. What is the HINSTANCE passed to SetWindowsHookEx used for?
  8. The new scratch program
  9. Sweden's Worst Driver
  10. The Itanium’s so-called stack
  11. What is the DC brush good for?
  12. When people ask for security holes as features: Hiding files from Explorer
  13. Project update: Voyage to Our Hollow Earth
  14. What is the HINSTANCE passed to CreateWindow and RegisterClass used for?
  15. News flash: Everybody has to pay income tax
  16. Tweaking our computation of the interval between two moments in time
  17. Computing the interval between two moments in time
  18. Using the powers of mathematics to simplify multi-level comparisons
  19. There's an awful lot of overclocking out there
  20. The end of one of the oldest computers at Microsoft still doing useful work
  21. The dialog manager, part 9: Custom accelerators in dialog boxes
  22. The dialog manager, part 8: Custom navigation in dialog boxes
  23. The dialog manager, part 7: More subtleties in message loops
  24. The dialog manager, part 6: Subtleties in message loops
  25. The dialog manager, part 5: Converting a non-modal dialog box to modal
  26. The dialog manager, part 4: The dialog loop

March 2005

  1. Neuroscience in the service of basketball fans
  2. The dialog manager, part 3: Creating the controls
  3. The dialog manager, part 2: Creating the frame window
  4. Adventures in product testing: Candles that catch fire
  5. The dialog manager, part 1: Warm-ups
  6. The CEO-to-English Phrase Book, a continuing series from Slate
  7. When a program asks you a question and then gets upset if you answer it
  8. The invisible price reduction
  9. If you disable drag/drop on the Start menu, you also disable right-click
  10. Pointers to virtual functions with adjustors
  11. Why does the debugger show me the wrong virtual function?
  12. Why does the debugger show me the wrong function?
  13. Psychic debugging: Why your expensive four-processor machine is ignoring three of its processors
  14. Confusion over whether you have Windows XP SP1 or SP2
  15. Competing to be the worst-dressed couple in America
  16. Your exception handler can encounter an exception
  17. The great Alaskan ice sculpture
  18. Windows NT Security in Theory and Practice
  19. Windows are not cheap objects
  20. Dot-Con Job: How InfoSpace took its investors for a ride
  21. A subtlety in restoring previous window position
  22. VegFest 2005 this weekend – and – vegetarian is as vegetarian does
  23. Performance gains at the cost of other components
  24. Why does SystemParametersInfo hang when I pass the SPIF_SENDCHANGE flag?
  25. Using SystemParametersInfo to access user interface settings
  26. Keep your eye on the code page
  27. A timed context menu
  28. Modality, part 8: A timed MessageBox, the better version
  29. Raymond's random walk, from Swedish designers to Mr. Monkey
  30. The bonus window bytes at GWLP_USERDATA
  31. Curling proves itself much more exciting than hockey this year
  32. The scratch window
  33. Suggestion Box 2
  34. Modality, part 7: A timed MessageBox, the cheap version

February 2005

  1. "Support our troops" wristbands provide only 1/3 support
  2. Modality, part 6: Interacting with a program that has gone modal
  3. Two brief reminiscences on the Windows XP "Comments?" button
  4. Modality, part 5: Setting the correct owner for modal UI
  5. Modality, part 4: The importance of setting the correct owner for modal UI
  6. Modality, part 3: The WM_QUIT message
  7. Modality, part 2: Code-modality vs UI-modality
  8. Modality, part 1: UI-modality vs code-modality
  9. MsgWaitForMultipleObjects and the queue state
  10. Limitations of the shell animation control
  11. You cannot globally reserve user-mode address space
  12. How to act like you know Chinese even though you don't
  13. LoadLibraryEx(DONT_RESOLVE_DLL_REFERENCES) is fundamentally flawed
  14. Windowless controls are not magic
  15. Why do minimized windows have an apparent size of 160×31?
  16. The dangers of filtering window messages
  17. What other effects does DS_SHELLFONT have on property sheet pages?
  18. Why does DS_SHELLFONT = DS_FIXEDSYS | DS_SETFONT?
  19. What's the deal with the DS_SHELLFONT flag?
  20. Why is breadth-first searching better for file system tree walking?
  21. The history of the Windows PowerToys
  22. How to detect programmatically whether you are running on 64-bit Windows

January 2005

  1. Why did the Win64 team choose the LLP64 model?
  2. Capturing the current directory from a batch file
  3. Control how much network bandwith Automatic Updates will use
  4. The strangest way of rounding down to the nearest quarter
  5. Why do files and directories with no time/date mess up sorting in Explorer?
  6. Alton Brown book appearance report
  7. Bringing cryptic command lines to Windows
  8. Why are kernel HANDLEs always a multiple of four?
  9. Hyperlinking to Hutchison Whampoa Limited forbidden
  10. A 90-byte “whereis” program
  11. A 90-byte "whereis" program
  12. CreateProcess does not wait for the process to start
  13. The importance of error code backwards compatibility
  14. How did MS-DOS report error codes?
  15. Cleaner, more elegant, and harder to recognize
  16. User interface design for vending machines – answer to puzzle
  17. User interface design for interior door locks
  18. User interface design for vending machines
  19. Marriage as a cross-branding opportunity
  20. Why doesn’t \ autocomplete to all the computers on the network?
  21. Why doesn't \ autocomplete to all the computers on the network?
  22. Seattle Snowstorm 2005 (insert swooshy sound effect)
  23. Taskbar notification balloon tips don’t penalize you for being away from the keyboard
  24. Taskbar notification balloon tips don't penalize you for being away from the keyboard
  25. How can code that tries to prevent a buffer overflow end up causing one?
  26. A rant against flow control macros
  27. You don’t need to run away from home to join the circus
  28. PulseEvent is fundamentally flawed
  29. You don't need to run away from home to join the circus
  30. Using fibers to simplify enumerators, part 5: Composition
  31. Using fibers to simplify enumerators, part 4: Filtering

2004 450

December 2004

  1. Using fibers to simplify enumerators, part 3: Having it both ways
  2. Using fibers to simplify enumerators, part 2: When life is easier for the caller
  3. Using fibers to simplify enumerators, part 1: When life is easier for the enumerator
  4. Computing the size of a directory is more than just adding file sizes
  5. You can create an infinitely recursive directory tree
  6. Alton Brown book tour 2005: I’m Just Here for More Food
  7. How to open those plastic packages of electronics without injuring yourself
  8. Why does the system convert TEMP to a short file name?
  9. Do you need clean up one-shot timers?
  10. BOOL vs. VARIANT_BOOL vs. BOOLEAN vs. bool
  11. Sometimes people don’t like it when you enforce a standard
  12. Don’t save anything you can recalculate
  13. Excellent blog about Windows and Unicode
  14. How did Windows 95 rebase DLLs?
  15. Optimization is often counter-intuitive
  16. How to get more hits on Google than even Steve Ballmer
  17. The hunt for a faster syscall trap
  18. This Game Boy won’t hurt a bit, just help the Powerpuff Girls count backwards from ten
  19. Scientists come one step closer to the perfect poppy-seed bagel
  20. Why do dialog editors start assigning control IDs with 100?
  21. Why do I get E_NOINTERFACE when creating an object that supports that interface?
  22. Tintin goes to the neurologist
  23. Dragging a shell object, part 5: Making somebody else do the heavy lifting
  24. For all your chicken sequencing needs
  25. Dragging a shell object, part 4: Adding a prettier drag icon
  26. Time to dust off your conspiracy theories
  27. It is not illegal to use James Bond style tactics for winning at the roulette wheel
  28. Dragging a shell object, part 3: Detecting an optimized move
  29. Researchers find connection between lack of sleep and weight gain
  30. Dragging a shell object, part 2: Enabling the Move operation
  31. Dragging a shell object, part 1: Getting the IDataObject
  32. Why are documents printed out of order when you multiselect and choose “Print”?
  33. Why did Windows 95 run the timer at 55ms?
  34. What is the purpose of the bmPlanes member of the BITMAP structure?

November 2004

  1. What’s the difference between GetKeyState and GetAsyncKeyState?
  2. Why doesn’t the RunAs program accept a password on the command line?
  3. Simple things you can do with the ShellExecuteEx function
  4. A sample of desktop icon text effects
  5. Why can’t you drop directly onto a taskbar button?
  6. Why do folders like “My Pictures” come back after I delete them?
  7. When people ask for security holes as features: World-writable files
  8. The various ways of sending a message
  9. Am I sorry or not?
  10. If a program and a folder have the same name, the shell prefers the program
  11. Poking at diploma mills: Kennedy-Western University
  12. How do I break an integer into its component bytes?
  13. Exploiting the inattentive
  14. What is this Xerox directory doing in Program Files?
  15. Asking questions where the answer is unreliable anyway
  16. Will dragging a file result in a move or a copy?
  17. Advantages of knowing your x86 machine code
  18. Why does Windows not recognize my USB device as the same device if I plug it into a different port?
  19. A history of GlobalLock, part 4: A peek at the implementation
  20. A history of GlobalLock, part 3: Transitioning to Win32
  21. Ein hundert Dinge, die in den Vereinigten Staaten besser bleiben
  22. A history of GlobalLock, part 2: Selectors
  23. A history of GlobalLock, part 1: The early years
  24. Why do I sometimes see redundant casts before casting to LPARAM?
  25. And to think they let me get away with it for five years
  26. What was the point of the GMEM_SHARE flag?
  27. What was the difference between LocalAlloc and GlobalAlloc?

October 2004

  1. Why didn’t the desktop window shrink to exclude the taskbar?
  2. Where did windows minimize to before the taskbar was invented?
  3. Sometimes you can’t read the text under the cursor
  4. The strangest way of detecting Windows NT
  5. If the Euro 2004 tournament were a video game
  6. Accessing the current module’s HINSTANCE from a static library
  7. Why doesn’t Setup asks you if you want to keep newer versions of OS files?
  8. Let WMI do the heavy lifting of determining system information
  9. How does Explorer detect whether your program supports long file names?
  10. The compatibility constraints of even your internal bookkeeping
  11. Implementing higher-order clicks
  12. Logical consequences of the way Windows converts single-clicks into double-clicks
  13. Little facts you didn’t know about volcanoes
  14. The procedure entry point SHCreateThreadRef could not be located…
  15. Dispatching items collected from the suggestion box
  16. People lie on surveys and focus groups, often unwittingly
  17. What’s the atom returned by RegisterClass useful for?
  18. Why is there a separate GetSystemDirectory function?
  19. Cooking for engineers
  20. How to host an IContextMenu, part 11 – Composite extensions – composition
  21. How to host an IContextMenu, part 10 – Composite extensions – groundwork
  22. The macros for declaring and implementing COM interfaces
  23. Those partisan non-partisan groups
  24. How to host an IContextMenu, part 9 – Adding custom commands
  25. How to host an IContextMenu, part 8 – Optimizing for the default command

September 2004

  1. How to host an IContextMenu, part 7 – Invoking the default verb
  2. Still more goofy terms of service – restrictions on information disclosure
  3. What does boldface on a menu mean?
  4. How to host an IContextMenu, part 6 – Displaying menu help
  5. How to host an IContextMenu, part 5 – Handling menu messages
  6. The unrecognized assistants on those do-it-yourself shows
  7. How to host an IContextMenu, part 4 – Key context
  8. Penguins do not fall over!
  9. How to host an IContextMenu, part 3 – Invocation location
  10. How to contact Raymond
  11. How to host an IContextMenu, part 2 – Displaying the context menu
  12. Swedes struggle with the meaning of sick leave
  13. Pitfalls in handling the WM_CONTEXTMENU message
  14. How to host an IContextMenu, part 1 – Initial foray
  15. Why does my mouse/touchpad sometimes go berzerk?
  16. What happens when you specify RegexOptions.ECMAScript?
  17. A visual history of spam (and virus) email
  18. Interlocked operations don’t solve everything
  19. The x86 architecture is the weirdo
  20. How does Windows exploit hyperthreading?
  21. Sometimes the bug isn’t apparent until late in the game
  22. Storsjöodjur hunting season will opening soon
  23. Why isn’t the original window order always preserved when you undo a Show Desktop?
  24. Why is the page size on ia64 8KB?
  25. Converting a byte[] to a System.String
  26. What about Steve?
  27. More dictionaries you didn’t realize you needed
  28. The shift key overrides NumLock
  29. Even in computing, simultaneity is relative
  30. Why does Windows keep your BIOS clock on local time?
  31. How to find the Internet Explorer binary

August 2004

  1. Reading a contract from the other side: Application publishers
  2. The sociology of the mobile phone
  3. Importance of alignment even on x86 machines, part 2
  4. Importance of alignment even on x86 machines
  5. Why do some structures end with an array of size 1?
  6. Why can’t you treat a FILETIME as an __int64?
  7. Beware of non-null-terminated registry strings
  8. Finished competing in your event? Let the games begin!
  9. The kooky STRRET structure
  10. Summary of the recent spate of /3GB articles
  11. The curious interaction between PAE and NX
  12. Writing your own menu-like window
  13. Myth: In order to use AWE, you must enable PAE
  14. Why all these articles about PAE and /3GB?
  15. Myth: PAE increases the virtual address space beyond 4GB
  16. Why is the virtual address space 4GB anyway?
  17. Myth: The /3GB switch lets me map one giant 3GB block of memory
  18. Why does Exchange recommend /3GB if you have more than 1GB of physical memory?
  19. Myth: The /3GB switch expands the user-mode address space of all programs
  20. Myth: You need /3GB if you have more than 2GB of physical memory
  21. Myth: Without /3GB a single program can’t allocate more than 2GB of virtual memory
  22. Myth: Without /3GB the total amount of memory that can be allocated across all programs is 2GB
  23. Kernel address space consequences of the /3GB switch
  24. The oft-misunderstood /3GB switch
  25. Spammers look stupid when they don’t read the blog they spam on
  26. Why .shared sections are a security hole
  27. Never leave focus on a disabled control
  28. How to set focus in a dialog box
  29. The company picnic, sponsored by Microsoft

July 2004

  1. What is the DS_CONTROL style for?
  2. When should you use a sunken client area?
  3. The evolution of mascara in Windows UI
  4. Norway, drunk on success, becomes a country of layabouts
  5. Disabling the program crash dialog
  6. Slightly closer to a proper football (i.e., soccer) match
  7. A twenty-foot-long computer
  8. Why do some process stay in Task Manager after they’ve been killed?
  9. Why do some process stay in Task Manager after they've been killed?
  10. Why can’t you trap TerminateProcess?
  11. Why can't you trap TerminateProcess?
  12. Why was nine the maximum number of monitors in Windows 98?
  13. Querying information from an Explorer window
  14. Wrapper templates to make writing callback functions slightly easier
  15. How to display a string without those ugly boxes
  16. Don’t forget to #define UNICODE if you want Unicode
  17. Why “Under Construction” should be made illegal on the web
  18. Don't forget to #define UNICODE if you want Unicode
  19. Why "Under Construction" should be made illegal on the web
  20. How do you detect “Large Fonts”?
  21. How do you detect "Large Fonts"?
  22. There are two things you can do if you have a mad crush on a boy
  23. Watch out for those sample URLs
  24. Positioned vs. non-positioned listview views
  25. Welcoming a new era in Swiss army knives
  26. How does Add/Remove Programs get the size and other information?
  27. Why does icon text get a solid background if drop shadows are disabled?
  28. Lighting organic material and sucking it into your lungs
  29. Obtaining a window’s size and position while it is minimized
  30. Differences between managers and programmers, part 2
  31. Obtaining a window's size and position while it is minimized
  32. Differences between managers and programmers
  33. Diagnosing a problem with calling conventions
  34. What’s the difference between SHGetMalloc, SHAlloc, CoGetMalloc, and CoTaskMemAlloc
  35. What's the difference between SHGetMalloc, SHAlloc, CoGetMalloc, and CoTaskMemAlloc
  36. Another chance to see Elvis take on a mummy
  37. Don’t name your DLL “Security.dll”
  38. Don't name your DLL "Security.dll"
  39. Being in upper management must damage certain portions of your brain
  40. Why can’t I use the same tree item multiple times?
  41. What’s this fascination with Germanic languages?
  42. Why can't I use the same tree item multiple times?
  43. What's this fascination with Germanic languages?

June 2004

  1. Why does the Links folder keep re-creating itself?
  2. Fees disguised as taxes
  3. You can already see the bug report that led to this dialog box
  4. The difference between thread-safety and re-entrancy
  5. Ringside seats at Fruit Fly Fight Club
  6. When does SHLoadInProc unload a DLL?
  7. The suggestion box is now open
  8. Suggestion box
  9. Hong Kong crocodile caught at last.
  10. Monitor giving you a headache? Check the refresh rate.
  11. At least it's easier than learning Finnish
  12. The evolution of dialog templates – Summary
  13. The evolution of dialog templates – 32-bit Extended Templates
  14. The only way you're going to wake up next to Claudia Schiffer
  15. When cafeteria pricing meets mathematics
  16. The evolution of dialog templates – 16-bit Extended Templates
  17. The evolution of dialog templates – 32-bit Classic Templates
  18. Drug dealers have to pay taxes too.
  19. Too late, Mr. Jenkins. You were an F7 back at question 2
  20. The evolution of dialog templates – 16-bit Classic Templates
  21. Tweaked comment policy
  22. Exploding frying pans
  23. The evolution of dialog templates – Introduction
  24. Anybody remember Blade Squad or MV24?
  25. Verifying that your system files are digitally signed
  26. Augusto Pinochet's beverage preferences are a matter of national security
  27. What was the purpose of the hPrevInstance parameter to WinMain?
  28. Norway works to lengthen its lead
  29. What is the difference between HINSTANCE and HMODULE?
  30. Taiwan law requires writing to go left-to-right instead of top-to-bottom
  31. A hidden performance cost of regional windows
  32. Did you know that Baltimore has a Rumor Control Center?
  33. Speeding up adding items to a combobox or listbox
  34. What are these directories called 0409 and 1033?
  35. Calculate the speed of light by microwaving marshmallows
  36. Let there be a grand clubhouse feast!
  37. When can a thread receive window messages?
  38. The suburbs make you fat, more researchers conclude
  39. Deleted but not yet forgotten
  40. Do not underestimate the power of the game Deer Hunter
  41. An easy way to determine whether you have a particular file permission
  42. My first death threat
  43. Need to add 1.5kg and 350g?
  44. Letter carriers rebel
  45. The dreaded "main" threading model
  46. French schoolchildren invited to draw their impressions of the United States
  47. What does SHGFI_USEFILEATTRIBUTES mean?

May 2004

  1. Why is the default 8-bit codepage called "ANSI"?
  2. Chewing gum legalized in Singapore
  3. Kipping
  4. High-performance multithreading is very hard
  5. How do you undo Minimize All and Show Desktop?
  6. What is the difference between Minimize All and Show Desktop?
  7. Meet Anton Chekhov
  8. How does the desktop choose the icon label color?
  9. Art too bad to be ignored
  10. When you change the insides, nobody notices
  11. The F*deral Bur*au of Inv*stigations
  12. Extending the Internet Explorer context menu
  13. Callback, the safety newsletter for the aviation community
  14. Do you know when your destructors run? Part 2.
  15. You can do anything at zombo.com, anything at all
  16. Do you know when your destructors run? Part 1.
  17. Coffee machine or assault weapon?
  18. Letterboxing: Geocaching without the GPS
  19. Beware the hash reset attack
  20. The coolest thing you can do with a Gameboy is not "play a game on it"
  21. String sorting is not done by ASCII code any more.
  22. When do you put … after a button or menu?
  23. Plane-spotters to require government license
  24. How did those FILE_SHARE_* values come to be?
  25. Who'll be where for whom?
  26. When do you disable an option and when do you remove it?
  27. Norway: Pros and cons
  28. Thinking through a feature
  29. Is your web site an open relay?
  30. Varför läser jag svenska?
  31. How do the FILE_SHARE_* bits interact with the desired access bits?
  32. Links about COM threading models
  33. A guide to British pub etiquette
  34. There are two types of scrollbars
  35. Image File Execution Options
  36. Batman and Robin patrolling Whitley
  37. When should your destructor be virtual?
  38. Why did InterlockedIncrement/Decrement only return the sign of the result?
  39. Scripting is a two-edged sword
  40. Chris Pratley's history lesson
  41. Broadcasting user-defined messages
  42. Dead man running
  43. Is open source the new monoculture?
  44. Truckers block highway to protest high gas prices
  45. Why does my hard drive light flash every few second?
  46. Today is Swedish tax day
  47. You wanted Extreme Crochet?

April 2004

  1. Extreme croquet
  2. Where does the taskbar get grouped button icons from?
  3. $501 for 510g of peanut butter
  4. Using the echo command to remember what you were doing.
  5. What is __purecall?
  6. What, going to Sweden *again*?
  7. Nobody said it was a democracy
  8. Why doesn't C# have "const"?
  9. Musings on formal and informal address
  10. In order to demonstrate our superior intellect, we will now ask you a question you cannot answer.
  11. News flash: People are fooled by the Onion
  12. How to retrieve text under the cursor (mouse pointer)
  13. Cleaner, more elegant, and wrong
  14. NFL cracks down on grandstanding
  15. Good-Bye, Lenin!
  16. Why the compiler can’t autoconvert foreach to for
  17. Beethoven as ambient music
  18. Why can't the system hibernate just one process?
  19. WM_KILLFOCUS is the wrong time to do field validation
  20. A $2 billion bridge to one person
  21. Mapping all those "strange" digits to "0" through "9"
  22. Sorry, no free ice cream in Tennessee; it's illegal
  23. Why can't I install Windows on my USB drive?
  24. Astonishingly, rules apply to everyone.
  25. Not all short filenames contain a tilde
  26. Playing on an entirely different level
  27. First thing we do is kill all the jerks
  28. Unicode collation is hard
  29. The random number seed can be the weakest link
  30. Extraterrestrial income
  31. Comparing the Norwegian, Swedish, and Danish languages.
  32. A story about USB floppy drives
  33. Where does the taskbar get grouped button titles from?
  34. A very brief anecdote about Windows 3.0
  35. Reference counting is hard.
  36. How can I format my USB drive as NTFS?
  37. Why a really large dictionary is not a good thing
  38. The martial arts logon picture

March 2004

  1. The look of Luna
  2. When temperance backfires
  3. "Special skills" draft on the drawing board
  4. Where did my Task Manager tabs and buttons go?
  5. It's embarrassing how little Swedish you need to know
  6. Why Ctrl+Alt shouldn’t be used as a shortcut modifier
  7. The army is cool, except for the part where you have to fight
  8. You know you've been in Sweden too long when…
  9. What U.S. college students miss from home
  10. Yahoo's privacy policy regarding web bugs
  11. The ways people mess up IUnknown::QueryInterface
  12. Swedish spicy food
  13. URLs too small? Here comes hugeurl.com
  14. Regular expressions and the dreaded *? operator
  15. The SAS in-flight safety video
  16. Out of the deep fryer
  17. Some files come up strange in Notepad
  18. the qUirKY jaPan HomEPage
  19. @-notation was never legal in HTTP URLs anyway
  20. Why an object cannot be its own enumerator
  21. A privacy policy that doesn't actively offend me
  22. The only logical conclusion is that he was cloned
  23. Why does the Resource Compiler complain about strings longer than 255 characters?
  24. Catholic baseball fans want to eat meat on opening day
  25. The car with no user-serviceable parts inside
  26. Why is the line terminator CR+LF?
  27. On a server, paging = death
  28. More on the AMD64 calling convention
  29. Ännu skriver jag inte bra
  30. Still more creative uses for CAPTCHA
  31. Why do text files end in Ctrl+Z?
  32. Senators are really good at stock-picking
  33. How do I convert a SID between binary and string forms?
  34. What is the default security descriptor?
  35. What happens to those "To Any Soldier" care packages
  36. Tony Harding laces up again
  37. Why are dialog boxes initially created hidden?
  38. Why do operations on "byte" result in "int"?
  39. The Department of Homeland Security, the television series?
  40. Returning to Sweden, this time with some actual knowledge of Swedish
  41. Char.IsDigit() matches more than just "0" through "9"
  42. C++ scoped static initialization is not thread-safe, on purpose!
  43. Can you pass "Coaching Principles and Strategies of Basketball"?
  44. Money can burn a hole in your pocket
  45. Defrauding the WHQL driver certification process
  46. Where do those customized web site icons come from?
  47. Sorry, my kitchen is on fire
  48. Blow the dust out of the connector
  49. Calling the irony patrol
  50. Went to a Seattle Thunderbirds game this weekend
  51. Why are HANDLE return values so inconsistent?
  52. Why 16-bit DOS and Windows are still with us

February 2004

  1. The correct order for disabling and enabling windows
  2. Why do timestamps change when I copy files to a floppy?
  3. Why can't I put hotlinks in notification icon balloon tips?
  4. What's so special about the desktop window?
  5. Invalid thread and process IDs
  6. And we will build a processor with… ONE MILLION TRANSISTORS!
  7. Raymond's comment policy
  8. Why do I get a QueryInterface(IID_IMarshal) and then nothing?
  9. Sorry the posts are late lately
  10. No code is an island
  11. Why are RECTs endpoint-exclusive?
  12. The social skills of a thermonuclear device
  13. GetDialogBaseUnits is a crock
  14. The arms race between programs and users
  15. So what's to do in Sweden?
  16. The Seattle Improbable Show (2004)
  17. Bad version number checks
  18. Stories of going through airport security
  19. Improbable Research comes to Seattle
  20. TEXT vs. _TEXT vs. _T, and UNICODE vs. _UNICODE
  21. Dunkin Donuts vs. Krispy Kreme
  22. Sure, we do that
  23. Orkut's privacy policy and terms of service
  24. Answer to exercise: Pointer to member function cast
  25. I think this counts as having come full circle
  26. Pointers to member functions are very strange animals
  27. Adjustor thunks
  28. The layout of a COM object
  29. The Glass Engine and Ishkur's Guide to Electronic Music
  30. Answers to exercises – mismatching new/delete
  31. Mismatching scalar and vector new and delete
  32. The management of memory for resources in 16-bit Windows
  33. What goes wrong when you add "Copy To" to the context menu

January 2004

  1. "Section 419" scammers arrested in Netherlands; Danish flag flies proudly
  2. The format of string resources
  3. How do we decide what features make it into a product?
  4. Integer overflow in the new[] operator
  5. Ikea walk-through
  6. Another reason not to do anything scary in your DllMain: Inadvertent deadlock
  7. Passenger announcements in the airport
  8. Some reasons not to do anything scary in your DllMain
  9. Undermining your own proclamation
  10. Blog going on autopilot for a while
  11. The hollow brush
  12. David Hasselhoff's daughters normal in every way
  13. German as RPN
  14. In defense of the German language
  15. The white flash
  16. German, the language of love?
  17. What happened to DirectX 4?
  18. Cell phones: Can't live with 'em, can't live without 'em, but maybe can ban 'em
  19. What tools should I assume everybody has?
  20. Fixing security holes in other programs
  21. ia64 – misdeclaring near and far data
  22. Uninitialized garbage on ia64 can be deadly
  23. How can a program survive a corrupted stack?
  24. Aw, poor guy, he's so depressed
  25. Google just keeps adding stuff
  26. What can go wrong when you mismatch the calling convention?
  27. The history of calling conventions, part 5: amd64
  28. If you know Swedish, the world is funnier
  29. The history of calling conventions, part 4: ia64
  30. "Friends" is so trendsetting
  31. Why can't I GetProcAddress a function I dllexport'ed?
  32. What's old is new again… well it's still old
  33. Is there an exclusionary rule in Sweden?
  34. Why do member functions need to be "static" to be used as a callback?
  35. Ten-year-old + Microsoft Flight Simulator = terrorist
  36. It's called "proofreading", give it a shot why don't you
  37. The history of calling conventions, part 3
  38. Budget cuts strike Swedish radio
  39. The history of calling conventions, part 2
  40. Words I'd like to ban in 2004
  41. Why does the copy dialog give such horrible estimates?
  42. Why does the x86 have so few registers?
  43. The history of calling conventions, part 1
  44. Don't trust the return address

2003 189

December 2003

  1. College football commercialized? What ever gave you that idea?
  2. How to stop delivery of telephone books
  3. People with almanacs may be terrorists, FBI warns
  4. What's the difference between CreateMenu and CreatePopupMenu?
  5. At least the Danes know how to count
  6. "Beam me up" is not yet recognized
  7. What's with those blank taskbar buttons that go away when I click on them?
  8. Another privacy policy that isn't very private
  9. Danish so-called "pronunciation"
  10. How to hide privacy violations in a privacy disclosure statement
  11. Famous people doing mundane things = news!
  12. You can read a contract from the other side
  13. What order do programs in the startup group execute?
  14. Why not just block the apps that rely on undocumented behavior?
  15. When programs grovel into undocumented structures…
  16. The cult of PowerPoint
  17. One in five Swedes steal their Christmas tree
  18. How do I determine whether I own a critical section if I am not supposed to look at internal fields?
  19. German sounds more and more like "Alles Lookenpeepers" every day
  20. Sometimes, an app just wants to crash
  21. 20031218 00
  22. How to void your warranty
  23. What is the window nesting limit?
  24. When marketing designs a screenshot
  25. Tinkering with the look
  26. The unsafe device removal dialog
  27. The migration continues
  28. Welcome to the New Old New Thing
  29. Tote Hose in Weilburg
  30. Why are structure sizes checked strictly?
  31. Voyage to Our Hollow Earth
  32. How do I pass a lot of data to a process when it starts up?
  33. What is the command line length limit?
  34. Scoble's rant on UI defaults
  35. Why you should never suspend a thread
  36. What's with the catcow and dogoldfish?
  37. If FlushInstructionCache doesn't do anything, why do you have to call it?
  38. At least she represents the United States faithfully
  39. Why do I have to return this goofy value for WM_DEVICECHANGE?
  40. Which access rights bits belong to whom?
  41. Which window style bits belong to whom?
  42. The New Old New Thing
  43. Which message numbers belong to whom?
  44. What did the letters “NT” originally stand for?
  45. What are these strange values returned from GWLP_WNDPROC?

November 2003

  1. Hello Sweden, you're on fire
  2. It's like the Swedes don't want you to learn their language
  3. Other tricks with WM_GETDLGCODE
  4. What do the letters W and L stand for in WPARAM and LPARAM?
  5. You can drag/drop to the command prompt
  6. A shortcut to the Run dialog
  7. Why isn't Fast User Switching enabled on domains?
  8. What's the deal with the System Volume Information folder?
  9. How can I tell if I have the 64-bit edition of Windows?
  10. Notepad's geek options require Word Wrap be disabled
  11. Make sure the buttons match the question
  12. Another favorite from the Grauniad
  13. More stories of bad hardware
  14. Stay healthy: Drink Guinness
  15. Preventing edit control text from being autoselected in a dialog box
  16. British newspapers are much more fun to read
  17. Another different type of dialog procedure
  18. Answer to previous exercise about m_fRecursing
  19. A different type of dialog procedure
  20. Safer subclassing
  21. Welcome Martyn Lovell
  22. Homework assignment about window subclassing
  23. A warning to people averse to code
  24. How much do you expect from a framework layer?
  25. Returning values from a dialog procedure
  26. Little facts you didn't know about concrete
  27. Why are companies so worried about retraining costs?
  28. An anecdote about improper capitalization
  29. Just follow the rules and nobody gets hurt
  30. The long and sad story of the Shell Folders key

October 2003

  1. Why highlighting by inverting colors is a bad idea
  2. I thought you said people don't know how to read analog clocks
  3. Drawing an active-looking caption even when not active
  4. When vendors insult themselves
  5. Getting a custom right-click menu for the caption icon
  6. Being the Nobel Peace Prize
  7. Kinder Überraschungen
  8. Why Daylight Savings Time is nonintuitive
  9. Writing a sort comparison function
  10. What's the deal with those reserved filenames like NUL and CON?
  11. Using the TAB key to navigate in non-dialogs
  12. What is the Alt+Tab order?
  13. The more I learn about Sweden, the weirder it gets
  14. Curling anyone?
  15. Don't let Marketing mess with your slides
  16. Scrollbars redux: Part 12
  17. The much-misunderstood "nop" action
  18. What about BOZOSLIVEHERE and TABTHETEXTOUTFORWIMPS?
  19. Murphy's law for school
  20. Why don't notification icons get a message when the user clicks the "X" button?
  21. Answer to previous exercise about the mythical WM_MOUSEENTER message
  22. Why is there no WM_MOUSEENTER message?
  23. Why doesn't the clock in the taskbar display seconds?
  24. Other uses for bitmap brushes
  25. Why is address space allocation granularity 64KB?
  26. In Explorer, you can right-click the icon in the caption
  27. I'm doing this instead of writing a book
  28. Low-tech usability testing
  29. Stupid memory-mapping tricks
  30. Researchers discover link between music and drinking
  31. Why does the System Properties page round the memory size?
  32. Why can't I use &-accelerators on the Start menu?
  33. What do the text label colors mean for files?
  34. Why does my Advanced Options dialog say ON and OFF after every option?
  35. Jag skrivar svenska inte so bra.
  36. Jag taler lita svenska.
  37. Why do I get spurious WM_MOUSEMOVE messages?

September 2003

  1. Why is the readonly property for folders so strange?
  2. Why you can’t rotate text
  3. In case people got the wrong impression
  4. Back from Europe
  5. When I dock my taskbar vertically, why does the word "Start" disappear?
  6. Pre-travel insomnia
  7. How much is that gigabyte in the window?
  8. Improving the world one bad analogy at a time
  9. Emergency vacation
  10. The end of the scrollbar series
  11. Answers to exercise from Scrollbars Part 11
  12. Scrollbars part 12: Applying WM_NCCALCSIZE to our scrollbar sample
  13. Why does Win32 fail a module load if an import could not be resolved?
  14. Eric's complete guide to BSTR semantics
  15. Scrollbars part 11: Towards an even deeper understanding of the WM_NCCALCSIZE message
  16. Something about Microsoft employees and milk
  17. I'm not sure if this was a dare
  18. Answers to exercises from Scrollbars Part 10
  19. Whimsical bug reports
  20. Why does the taskbar default to the bottom of the screen?
  21. Scrollbars part 10 – Towards a deeper understanding of the WM_NCCALCSIZE message
  22. You too can dress like Raymond
  23. Computers are still too hard to use.
  24. Why do some people call the taskbar the “tray”?
  25. If you see only one Elvis vs. Mummy movie this year, make it this one
  26. Scrollbars part 9 – Maintaining the metaphor
  27. It's a lot easier to write a column if you don't care about accuracy
  28. An insight into the Windows 95 startup sound
  29. How to recognize different types of timestamps from quite a long way away
  30. Where is my program running from?
  31. Case mapping on Unicode is hard
  32. Why are the rules for GetWindowText so weird?
  33. Why is there no programmatic access to the Start menu pin list?
  34. The World Adult Kickball Association
  35. Determining whether your window is covered
  36. Even the trees are falling for the media's lies
  37. Suburbs make you fat, researchers conclude
  38. The default answer to every dialog box is "Cancel"

August 2003

  1. Setup could not verify integrity of file
  2. Painting only when your window is visible on the screen
  3. Hardware backwards compatibility
  4. Why are these unwanted files/folders opening when I log on?
  5. What are all these files in my C:WINDOWSCSC directory?
  6. What are those little overlay icons?
  7. Rotating the Z-order
  8. Windows brings out the Rorschach test in everyone
  9. Knitting a pumpkin
  10. Why isn't my time zone highlighted on the world map?
  11. The secret life of GetWindowText
  12. What is in the "Windows 95 Special Edition" box?
  13. Lessons from the trenches
  14. There will be a part 9 in the scrollbar series
  15. Why does Windows 95 have functions called BEAR, BUNNY and PIGLET?
  16. A day in the trenches
  17. Answer to exercise
  18. Windows 95 doesn’t boot with more than 1GB of RAM
  19. Scrollbars part 8 – Integral interactive resizing
  20. Why can't I remove "for test/evaluation purposes only"?
  21. Scrollbars part 7 – Integrality
  22. Answers to exercises
  23. Why is a registry file called a "hive"?
  24. A subtlety in the keyboard code
  25. Scrollbars bart 6 – The wheel
  26. Limitations on DLL resources in Windows 95
  27. Keyboard accessibility for scrollbars
  28. Changing the Windows boot logo
  29. Answer to previous exercise on proportional scrollbars

July 2003

  1. Scrollbars, part 4: Adding a proportional scrollbar
  2. Answer to yesterday's exercise
  3. Why doesn't the new Start menu use Intellimenus in the All Programs list?
  4. Scrollbars, part 3: Optimizing the paint cycle
  5. Why doesn't Windows have an "expert mode"?
  6. Scrollbars, part 2
  7. More terse Q&A on Tweak UI 2.10
  8. The scratch program
  9. Why do you have to click the Start button to shut down?
  10. Tweak UI 2.10

2006–2008 →