2009–2012
1,397 posts
2012 307
December 2012
- 2012 year-end link clearance
- Why can't you rename deleted items in the Recycle Bin?
- What do HeapLock and HeapUnlock do, and when do I need to call them?
- What is so special about the instance handle 0x10000000?
- What celebration of Kwanzaa would be complete without Sandra Lee's infamous Kwanzaa cake?
- A question about endian-ness turns out to be the wrong question
- You too can use your psychic powers: Spaces in paths
- Miss Denmark, she is dressed as a mermaid because we couldn't secure the rights from LEGO
- What is the proper handling of WM_RENDERFORMAT and WM_RENDERALLFORMATS?
- Why do BackupRead and BackupWrite require synchronous file handles?
- Why do I sometimes get classic buttons and sometimes themed buttons depending on the host process?
- Why doesn't SHGetKnownFolderPath return the customized path?
- Why was Pinball removed from Windows Vista?
- 2012 års Gävlebock gick upp i brand. Igen.
- Like the cake, WS_EX_TRANSPARENT is a lie, or at least not the entire truth
- Why is it possible to create a toolbar with the wrong HINSTANCE? And what's the right HINSTANCE anyway?
- Why is it so hard to write a program that requires UI Access privilege?
- How am I supposed to free the information returned by the GetSecurityInfo function?
- Microspeak: v-team
- I'll tell you what I think of the new University of California logo once it finishes loading
- Why do some shortcuts not support editing the command line and other properties?
- It rather involved being on the other side of this airtight hatchway: Writing to the application directory
- Replaying input is not the same as reprocessing it
- Why do I get notified for changes to HKEY_CLASSES_ROOT when nobody is writing to HKEY_CLASSES_ROOT?
- The QuickCD PowerToy, a brief look back
- Have you found any TheDailyWTF-worthy code during the development of Windows 95?
November 2012
- The debugger lied to you because the CPU was still juggling data in the air
- Various ways of performing an operation asynchronously after a delay
- Why are there both FIND and FINDSTR programs, with unrelated feature sets?
- Security vulnerability reports as a way to establish your l33t kr3|)z
- Puzzling triple rainbow clearly identifies location of pot of gold
- How does the window manager decide where to place a newly-created window?
- The Hater's Guide to the Williams-Sonoma Catalog
- When studying performance, you need to watch out not only for performance degradation, but also unexpected performance improvement
- The resource compiler will helpfully add window styles for you, but if you're building a dialog template yourself, you don't get that help
- It rather involved being on the other side of this airtight hatchway: Silently enabling features
- How do I use group policy to improve security of USB thumb drives in my organization?
- Microspeak: touch base
- Raymond's podcast list (for 2011, at least)
- How do I forward an exported function to an ordinal in another DLL?
- If you're going to write your own allocator, you need to respect the MEMORY_ALLOCATION_ALIGNMENT
- Break it up, you two!: The zero width non-joiner
- Microsoft Money crashes during import of account transactions or when changing a payee of a downloaded transaction
- Frequentists vs Bayesians
- Why are taskbar live previews lost when you use Fast User Switching?
- Thread affinity of user interface objects: Addendum
- What does the COINIT_SPEED_OVER_MEMORY flag to CoInitializeEx do?
- Instead of trying to create a filter that includes everything, try just omitting the filter
- If you're asking somebody to help you, you want to make it easy for them, not harder
- How do I get the tabbed dialog effect on my own custom tabbed dialog?
- How do I parse a string into a FILETIME?
- When you synthesize input with SendInput, you are also synthesizing the timestamp
October 2012
- The TEMP directory is like a public hot tub whose water hasn’t been changed in over a year
- The wisdom of seve^H^H^H^Hsixth graders: Living without electronics for a week
- Keyboard shortcut for resizing all columns in a listview control to fit
- In the conversion to 64-bit Windows, why were some parameters not upgraded to SIZE_T?
- Whether the Unicode Bidi algorithm is intuitive depends on your definition of "intuitive"
- Keyboard layouts aren't like Beetlejuice – they won't appear just because you say their name
- You can't use the WM_USER message in a dialog box
- Diversion: Generating a random color from JavaScript
- How do you come up with new shortcut keys?
- Using WM_COPYDATA to marshal message parameters since the window manager otherwise doesn’t know how
- Why does ShellExecute return SE_ERR_ACCESSDENIED for nearly everything?
- If there's a problem with a wiki, then you can fix it; that's why it's a wiki
- Irony patrol: Recycling bins
- The cries of "Oh no!" emerge from each office as the realization slowly dawns
- What happens if you forget to pass an OVERLAPPED structure on an asynchronous handle?
- Combo boxes have supported incremental searching for quite some time now
- Why does Windows Compressed Folders (Zip folders) reject paths that begin with a slash?
- Usage guidance for a popcorn machine in the kitchenette
- How does Explorer deal with recent files that were renamed?
- How do I override the default icon selection algorithm?
- An unexpected application of negative numbers to gift-giving
- Why does RegOpenKey sometimes (but not always) fail if I use two backslashes instead of one?
- How do I suppress the default animation that occurs when I hide or show a window?
- Microspeak: Granular
- What's the difference between F5 and F8 at the boot screen?
September 2012
- 2012 Q3 link clearance: Microsoft research edition
- Data in crash dumps are not a matter of opinion
- The Ride to Rio: Bicycling from Los Angeles to Rio de Janeiro
- Why aren't environment variables being expanded in my RGS file?
- Sabotaging yourself: Closing a handle and then using it
- Why can't I set "Size all columns to fit" as the default?
- A classification of faces with eyes open and closed in Dr. Seuss's ABC based on the nature of the character
- I brought this process into the world, and I can take it out!
- In vollen Zügen genießen
- How can I implement SAFEARRAY.ToString() without going insane?
- How do I invoke a verb on an IShellItemArray?
- Does the CopyFile function verify that the data reached its final destination successfully?
- The day I stole Joe Belfiore's mouse
- How do you deal with an input stream that may or may not contain Unicode data?
- Raymond learns about some of the things people do to get banned on Xbox LIVE
- IShellFolder::BindToObject is a high-traffic method; don't do any heavy lifting
- WM_CTLCOLOR vs GetFileVersionInfoSize: Just because somebody else screwed up doesn't mean you're allowed to screw up too
- Rogue feature: Docking a folder at the edge of the screen
- One for the "They have to say that because of me": Ground rules at the Point Defiance Zoo
- Why can't I use Magnifier in Full Screen or Lens mode?
- When you transfer control across stack frames, all the frames in between need to be in on the joke
- The case of the asynchronous copy and delete
- You can't rule out a total breakdown of normal functioning, because a total breakdown of normal functioning could manifest itself as anything
- How did the X-Mouse setting come to be?
- Why don't the shortcuts I put in the CSIDL_COMMON_FAVORITES folder show up in the Favorites menu?
- Buzzword-filled subject line easily misinterpreted by unsuspecting manager
August 2012
- Adventures in undefined behavior: The premature downcast
- I'm not calling a virtual function from my constructor or destructor, but I'm still getting a __purecall error
- Psychic debugging: Why Chinese characters don't work
- Command line tool to manage Windows 7 Libraries, with source code
- Well at least nobody's parking there any more
- How does the taskbar decide whether to show Recent or Frequent documents on the jump list?
- Dumping a hash table with external chaining from the debugger
- Wait, you never said that I had to initialize the object before I used it!
- The shifting sands of "Run as different user"
- Sorry we got cut off, my phone just auto-rebooted
- How do I customize how my application windows are grouped in the Taskbar?
- My colleague picked a good day to go out and catch a baseball game
- What if my application is really two applications bundled into a single file, and I want them collected into two groups on the taskbar in Windows 7?
- Charles Petzold's Programming Windows Sixth Edition has reached Release Preview
- What happened to the Windows 2000 "Set default language setting for the system" button?
- What happened to the Windows 2000 "Language settings for the system" control panel?
- How long does it take for a notification icon to stop appearing in the Notification Area Icons control panel?
- Why am I in the Quake credits?
- How did real-mode Windows implement its LRU algorithm without hardware assistance?
- What is SysFader and why is it always crashing?
- Of what possible legitimate use are functions like CreateRemoteThread, WriteProcessMemory, and VirtualProtectEx?
- Microspeak: planful
- Why is the desktop treated so special in window ordering?
- Get your Contoso-branded merchandise while you can
- FORFILES, for your fancier batch file enumeration needs
- If you're going to throw a badminton match, you have to be less obvious about it
- Exiting a batch file without exiting the command shell -and- batch file subroutines
- You gotta fight for your right to parry
- How do I find the most recently created file in a directory from a batch file?
July 2012
- Reading the output of a command into a batch file variable
- Raymond's subjective, unfair, and completely wrong impressions of the opening ceremonies of a major athletic event which took place recently
- Why don't any commands work after I run my batch file? I'm told that they are not recognized as an internal or external command, operable program, or batch file.
- Psychic debugging: Why your IContextMenu::InvokeCommand never gets called
- A brief and also incomplete history of Windows localization
- One way to make sure you pass an array of the correct size
- Taking flexitarianism to another, perhaps unintended, level
- What's the story behind the WM_SYNCPAINT message?
- The format of icon resources
- Why do some font names begin with an at-sign?
- Why don't per-item custom icons work when I open a Zip file or some other virtual folder?
- Why doesn't the Low Disk Space warning balloon show up as soon as I run low on disk space
- How much gets localized in a localized version of Windows?
- Why doesn't RealGetWindowClass return the real window class for my superclass?
- What happens when you mark a section as DISCARDABLE?
- What does the HTOBJECT hit-test code do?
- Microspeak: radar
- Why hasn't the API hook mechanism for x64 been standardized like it was for x86?
- The physics of a falling Slinky
- What are the recommended locations for storing different types of files?
- How your taskbar auto-hide settings can keep getting overwritten
- The continuing battle between people who offer a service and others who want to hack into the service
- You already got your answer, why are you re-asking the question?
- Tracking shortcuts and the early history of multiple monitors
June 2012
- 2012 mid-year link clearance
- How did real-mode Windows patch up return addresses to discarded code segments?
- You still need the "safe" functions even if you check string lengths ahead of time
- How did my hard drive turn into a TARDIS?
- Thanks for reminding me what to do when the elevator is out of order
- How does Explorer determine the delay between clicking on an item and initiating an edit?
- How did real-mode Windows fix up jumps to functions that got discarded?
- When the default pushbutton is invoked, the invoke goes to the top-level dialog
- Counting down to the last day of school, as students do it
- When embedding a dialog inside another, make sure you don't accidentally create duplicate control IDs
- It's not a good idea to give multiple controls on a dialog box the same ID
- What is the history of the GetRandomRgn function?
- Globalization quiz: In honor of, well, that's part of the quiz
- Now that Windows makes it harder for your program to block shutdown, how do you block shutdown?
- Why don't all of my folder customizations roam with my profile?
- Microsoft Dynamics in a soda can, sort of
- Fabio coming to Redmond. Also: Whey Protein
- Why do you have to wait for Windows Error Reporting to check for solutions before it restarts the application?
- How can I determine the underlying cause of a EXCEPTION_IN_PAGE_ERROR exception?
- Eventually the window manager simply says that enough is enough
- Don't be helpless: What might be the reason for a "Path not found" error?
- Microspeak: Turds
- Why does PrintWindow hate CS_PARENTDC? Because EVERYBODY hates CS_PARENTDC!
- The time I watched a total lunar eclipse from the top of a mountain
- How do I prefetch data into my memory-mapped file?
May 2012
- What happens if I call KillTimer with a NULL hwnd?
- What does a STATUS_OBJECT_TYPE_MISMATCH exception in LeaveCriticalSection mean?
- Hazards of spelling autocorrection: defiance
- If my window hosts multiple windowless ActiveX controls, which one do I call IOleInPlaceActiveObject::TranslateAccelerator and IOleInPlaceObjectWindowless::OnWindowMessage on?
- The extern “C” specifier disables C++ mangling, but that doesn’t mean it disables mangling
- How do I prevent unchecked checkboxes in my listview control from disappearing?
- GUIDs are designed to be unique, not random
- Why is the Close button in the upper right corner?
- What was the registry like in 16-bit Windows?
- How to view the stack of threads that were terminated as part of process teardown from user mode
- Charles Petzold is back with another edition of Programming Windows
- How to view the stack of threads that were terminated as part of process teardown from the kernel debugger
- Sure, we do that: Context menu edition
- Microspeak: The parking lot
- What is the historical reason for MulDiv(1, -0x80000000, -0x80000000) returning 2?
- Warum deine Mutter Deutsch spricht
- When you crash on a mov ebx, eax instruction, there aren't too many obvious explanations, so just try what you can
- Cheap amusement: Searching for spelling errors in the registry
- How do I hide a window without blocking on it?
- Why can't I use the file sharing wizard if I exclude inheritable permissions from a folder's parent?
- Why are the Windows 7 system notification icons colorless?
- How does the MultiByteToWideChar function treat invalid characters?
- How does Explorer calculate the folder size information in the folder tooltip?
- Why is there sometimes a long delay between pressing a hotkey for a shortcut and opening the shortcut?
- What happened to the Summary information created on Windows 2000 and Windows XP?
April 2012
- When you don't speak a language, don't sound like you speak the language
- What were the tests that WinG did to evaluate video cards?
- A process shutdown puzzle, Episode 2
- Shortcut properties are in the shortcut, so if they can read the shortcut, they can read the properties
- How do I prevent users from opening TIF files?
- I thought I was so clever, salvaging an old floppy drive from a dead computer, but I didn't think *two* steps ahead…
- Why are programs allowed to use normal characters as hotkeys?
- What does INIT_ONCE_CTX_RESERVED_BITS mean?
- Why don't I get a Caps Lock warning balloon any more?
- Why doesn't the Version tab show up for very large files?
- There's the kernel, and there's kernel mode – confusing historical terminology
- Why do we need IsDialogMessage at all?
- You already know the answer since you do it yourself
- What is the real maximum length of a DNS name?
- I know that an overlapped file handle requires an lpOverlapped, but why does it (sometimes) work if I omit it?
- Microspeak: scoped to
- There's the interface contract, and there are the implementations of the interface contract
- Registration-free COM the old-fashioned way: The car mp3 player
- You can use an OVERLAPPED structure with synchronous I/O, too
- I totally presented to an executive the wrong way
- Introducing the unrolled-switch anti-pattern
- If posting here is frequently frustrating and irritating, why do I keep doing it?
March 2012
- How do I perform shell file operations while avoiding shell copy hooks?
- Why can't I delete a file immediately after terminating the process that has the file open?
- Converting to Unicode usually involves, you know, some sort of conversion
- Amusing message on a whiteboard in the hallway
- Why does a maximized window have the wrong window rectangle?
- Beverage Gas Division of Central Welding Supply
- Why is the Heap32Next function incredibly slow on Windows 7?
- Why does my window style change when I call SetWindowText?
- Isn't there a race condition in GetFileVersionInfoSize?
- In 1993, Microsoft stole my colleague's car
- The most exciting part of my morning is catching my bus, specifically, making the transfer
- Why does holding the Ctrl key when selecting New Task from Task Manager open a command prompt?
- Memory allocation functions can give you more memory than you ask for, and you are welcome to use the freebies too, but watch out for the free lunch
- Why does the VerQueryValue function give me the wrong file version number?
- How do I get mouse messages faster than WM_MOUSEMOVE?
- Microspeak: Friction
- If you have multiple versions of Windows installed, why do they all try to adjust the clock?
- To some people, time zones are just a fancy way of sounding important
- Alt text for images are important in email, too
- Why do program files go into the Program Files directory?
- Why does Explorer ignore seconds when sorting by Date Modified?
- Why doesn't the Maximize button maximize across all monitors?
- This isn't Highlights magazine: Sort keys and why they change
- How do I make it so that users can copy static text on a dialog box to the clipboard easily?
February 2012
- What was the nature of the feedback that resulted in the change to the highlighting model for Explorer navigation pane?
- How can I customize which notification icons are displayed by default on a new installation?
- Why was HDS_FILTERBAR added to the common controls if nobody uses it?
- Why does Windows keep showing the old indirect strings even after I update the binary?
- What does the minus sign in indirect localized string resources mean?
- Instead of creating something and then trying to hide it, simply don't create it in the first place
- Why don't music files show up in my Recent Items list?
- What's the difference between Text Document, Text Document – MS-DOS Format, and Unicode Text Document?
- How do I find out which process has a file open?
- Why does the DrawIcon function draw at the default icon size?
- When does an icon handler shell extension get unloaded?
- The awesome Valentine's Day gift disguised as an uncreative one
- Why did the Windows 95 Start button have a secret shortcut for closing it?
- Fancy use of exception handling in FormatMessage leads to repeated "discovery" of security flaw
- What is the effect of memory-mapped file access on GetLastError()?
- The path-searching algorithm is not a backtracking algorithm
- Microspeak: fit
- The story of the mysterious WINA20.386 file
- The compatibility constraints of error codes, episode 2
- When you are looking for more information, it helps to say what you need the information for
- Things I've written that have amused other people, Episode 9
January 2012
- The Freudian typo that will not die: Enchanced video quality
- Why does it take Task Manager longer to appear when you start it from the Ctrl+Alt+Del dialog?
- Does mapping the same shared memory two times in a process lead to double the address space usage?
- The 2012/2013 Seattle Symphony subscription season at a glance
- Why doesn't the Windows 7 Start menu have a pushpin for pinning items?
- How do I disable the fault-tolerant heap?
- A single-handed effort to keep the memory of $2 bills alive
- Can OANOCACHE be used for non-debug purposes?
- How do FILE_FLAG_SEQUENTIAL_SCAN and FILE_FLAG_RANDOM_ACCESS affect how the operating system treats my file?
- Why do Microsoft customer records use the abbreviation “cx” for customer?
- Don't try to allocate memory until there is only x% free
- Microspeak: Walls and ladders
- Cultural arbitrage: The food-related sucker bet
- Why was there a font just for drawing symbols on buttons?
- Keys duplicated from photo: Delayed reaction
- How do I print non-error messages during compilation?
- Puzzling out the upsell-o-meter
- Why does CreateEvent fail with ERROR_PATH_NOT_FOUND if I give it a name with a backslash?
- What a steal: A house for only ten dollars!
- How can I detect the language a run of text is written in?
- News flash: Work-at-home job offers are mostly just scams
- You can use backups for things other than restoring
- From the research journal Duh: To lose weight, eat less
- What were some of the abandoned features of Explorer back in its prototype days?
- It must totally suck to live near Abbey Road
- Why did HeapFree fail with ERROR_POSSIBLE_DEADLOCK?
- A joke for mathematicians: On the Weyl schism
- When DLL_PROCESS_DETACH tells you that the process is exiting, your best bet is just to return without doing anything
- Misleading advertisement: Passports or green cards?
- Creating context menus on menus
- The new business model: Intentional billing errors
- Why don't ZIP files have the FILE_ATTRIBUTE_COMPRESSED attribute?
- Exploiting the inattentive: The Xbox Kinect Premium Starter Kit
- Why wasn't the Windows 95 shell prototyped on Windows NT?
2011 310
December 2011
- 2011 year-end link clearance
- Using the MNS_DRAGDROP style: Menu rearrangement
- Using the MNS_DRAGDROP style: Dropping in
- Using the MNS_DRAGDROP style: Dragging out
- Introducing the for-if anti-pattern
- Celebrating the end of the gluttony season, but the effects linger
- Why is the file size reported incorrectly for files that are still being written to?
- How do I get the full path for the target of a shortcut file?
- How do I determine programmatically whether a particular language is LTR or RTL?
- Deftly solving compatibility problems by withholding information
- Microspeak: Offline (noun)
- Paint messages will come in as fast as you let them
- Programmatically controlling which handles are inherited by new processes in Win32
- Not even making it to the airtight hatchway: Execution even before you get there
- The peculiar cadence of executive mail messages
- Online gift ordering + enthusiastic kids at the keyboard + Unicode, wait… Unicode?
- What is the API for accessing content on SkyDrive?
- How can I tell whether a window is modal?
- Sure, I'm supposed to pass WT_EXECUTELONGFUNCTION if my function takes a long time, but how long is long?
- What does it mean when my program exits with the message "This application has requested the Runtime to terminate it in an unusual way"?
- GetParent, just as confusing as EnumClaw, but it's an actual function!
- A feature I didn't even know existed much less had a name: Color hot-track
- Why does my program still show up in the Programs and Features folder after my uninstaller exits?
- Don't let more than one process try to read from stdin at the same time
- Our code needs to run on multiple platforms with different rules, so we follow none of them!
November 2011
- If you protect a write with a critical section, you may also want to protect the read
- Things I've written that have amused other people, Episode 8
- Why is CLIPFORMAT defined to be a WORD rather than a UINT?
- How to insert a large number of items into a treeview efficiently
- How can I extend the deadline for responding to the PBT_APMSUSPEND message?
- It is not unreasonable to expect uninitialized garbage to change at any time, you don't need to ask for an explanation
- The Control Panel search results understand common misspellings, too
- Why not use animated GIFs as a lightweight alternative to AVIs in the animation common control?
- Why does Internet Explorer not call DLL_PROCESS_DETACH on my DLL when I call ExitProcess?
- Why can't I install this DLL via Regsvr32 /i?
- How can I tell whether a COM pointer to a remote object is still valid?
- Fontography term or pretentious blather?
- The challenges in changing the way Explorer hosts shell extensions
- Stupid Raymond talent: Screaming carrier
- How can I tell whether a DLL has been registered?
- Okay, everybody, it's time for rumors and gossip
- Microspeak: Level-set
- Percentages may not add up to 100%, but not for the reason you suggest
- The life story of the SwitchToThisWindow function
- How do I generate a unique 32-bit value for a time zone?
- We've traced the call and it's coming from inside the house: A function call that always fails
- Debugging why a user's taskbar disappeared
- The power of statistical photography
October 2011
- My least effective Hallowe'en costume
- Why isn't my transparent static control transparent?
- Why do the pinned items in the Jump List go on the top instead of the bottom?
- How can I get notified when some other window is destroyed?
- Raymond misreads restaurant names: Local 360
- No good deed goes unpunished: Helping to redirect a question
- Squeezing the last bit of enjoyment out of the lost half-inning of a baseball game
- If the shell is written in C++, why not just export its base classes?
- The video of Microsoft Store employees dressed in Windows colors, revealed by a falling curtain, gee that looks familiar, somehow
- The PSN_SETACTIVE notification is sent each time your wizard page is activated
- No, modifying the DLLs that come with Windows is not supported
- Why do some infotips repeat the name of the item as well as the infotip?
- Seeing the world through arbitrage-colored glasses
- Why is there a CSIDL_DESKTOP value if you need the desktop in order to get it anyway?
- When your vice president tells you to stop replying to a mail thread, you probably should stop replying to the mail thread
- The question mark lets you make up anything you like
- How do I set an accessible name on an unlabeled control?
- Is there a 2048 character limit for OFN_ALLOWMULTISELECT in MFC or isn't there?
- Microspeak: Bug jail
- Why does copying a file to my USB thumb drive say that the parameter is incorrect?
- How do I access a file without updating its last-access time?
- During process termination, slim reader/writer locks are now also electrified
- Why can't I move the Program Files directory via the unattend file?
- The unattend file lets you configure Windows while it's installing, and in some cases it's your only chance
- Beyoncé, the giant metal chicken has a Facebook page
- Adjusting your commute to avoid being at work quite so much
- Do not access the disk in your IContextMenu handler, no really, don't do it
September 2011
- 2011 Q3 link clearance: Microsoft blogger edition
- There's also a large object heap for unmanaged code, but it's inside the regular heap
- Appearing to succeed is a valid form of undefined behavior, but it's still undefined
- Does this operation work when impersonating? The default answer is NO
- Ah, the exciting world of cross-forest dogfood
- Sending a window a WM_DESTROY message is like prank calling somebody pretending to be the police
- Why does my asynchronous I/O complete synchronously?
- Why does my single-byte write take forever?
- Why do Windows functions all begin with a pointless MOV EDI, EDI instruction?
- Random notes from //build/ 2011
- Microspeak: The bug farm
- The clipboard viewer linked list is no longer the responsibility of applications to maintain, unless they want to
- Why can't I PostMessage the WM_COPYDATA message, but I can SendMessageTimeout it with a tiny timeout?
- Some preliminary notes from //build/ 2011
- What happens to a sent message when SendMessageTimeout reaches its timeout?
- A common control for associating extensions is well overdue
- Why are the building numbers on Microsoft main campus so erratic?
- Is this a really bug with CreateWindowEx or am I just confused?
- Throwing garbage on the sidewalk: The sad history of the rundll32 program
- Why waste your money on the car when it's the sound system you care about?
- Why doesn't the Disk Management snap-in incorporate S.M.A.R.T. data?
- Why is the registry a hierarchical database instead of a relational one?
- What happened to that suspicious-looking guy hanging around the entrance?
- Thanks for letting me know what my ideal career and company are
- What's the story with the parameters to the WM_INPUT_DEVICE_CHANGE message?
- Invoking commands on items in the Recycle Bin
August 2011
- Modernizing our simple program that retrieves information about the items in the Recycle Bin
- How can I get information about the items in the Recycle Bin?
- Why can't I use PSGUID_STORAGE like a GUID?
- Random musings on the introduction of long file names on FAT
- Stupid command-line trick: Counting the number of lines in stdin
- Magic dirt, the fate of former professional athletes, and other sports randomness
- What do SizeOfStackReserve and SizeOfStackCommit mean for a DLL?
- Why doesn't the Open Files list in the Shared Folders snap-in show all my open files?
- You don't make something easier to find by hiding it even more deeply
- Why are the alignment requirements for SLIST_ENTRY so different on 64-bit Windows?
- Ow, I'm too safe!
- Why does IFileOperation skip junctions even though I passed FOFX_NOSKIPJUNCTIONS?
- Starting up inside the box
- Why does creating a shortcut to a file change its last-modified time… sometimes?
- Why does the runas command require its command line to be quoted?
- ReadDirectoryChangesW reads directory changes, but what if the directory doesn’t change?
- The ways people mess up IUnknown::QueryInterface, episode 4
- Slim reader/writer locks don't remember who the owners are, so you'll have to find them some other way
- Why does the Shift+F10 menu differ from the right-click menu?
- What does the CreateProcess function do if there is no space between the program name and the arguments?
- Menu item states are not reliable until they are shown because they aren't needed until then
- Why doesn't b match word boundaries correctly?
- A shell extension is a guest in someone else's house; don't go changing the code page
- An even easier way to get Windows Media Player to single-step a video
- Microspeak: Dogfood
- Why can you set each monitor to a different color depth?
July 2011
- Hey, let's report errors only when nothing is at stake!
- Simulating input via WM_CHAR messages may fake out the recipient but it won't fake out the input system
- Luxurifying the camping experience in a different direction
- You don't need to ask me a question the compiler can answer more accurately
- No, we're not going to play Stairway to Heaven, and please tell everbody else in your area code to stop calling me
- How is it possible to run Wordpad by just typing its name even though it isn’t on the PATH?
- How do I disable windowless control support in dialog boxes?
- Why is secur32.dll called secur32.dll and not secure32.dll?
- How do I find the original name of a hard link?
- Some mailing lists come with a negative service level agreement, but that's okay, because everybody is in on the joke
- The danger of making the chk build stricter is that nobody will run it
- Using the wrong HINSTANCE in RegisterClass is like identity theft
- Photoshop meme: Mark Reynolds casually eating sunflower seeds
- What is that horrible grinding noise coming from my floppy disk drive?
- The tradition of giving cute names to unborn babies
- What does the executable timestamp really mean?
- At least it'll be easy to write up the security violation report
- Windows has supported multiple UI languages for over a decade, but nobody knew it
- We've traced the pipe, and it's coming from inside the process!
- And… that cadence means it's halftime, concert-goers!
- Be careful when redirecting both a process’s stdin and stdout to pipes, for you can easily deadlock
- The historical struggle over control of the Portuguese language
- Looking at the problem at the wrong level: Closing a process's stdin
- Microspeak: Reporting through
- A handful of trips through the time machine
- The list of heaps returned by GetProcessHeaps is valid when it returns, but who knows what happens later
June 2011
- 2011 mid-year link clearance
- The UseUrl attribute in the App Paths key indicates that your application can accept a URL on the command line
- What happens to WPARAM, LPARAM, and LRESULT when they travel between 32-bit and 64-bit windows?
- A different way to win from one of those claw game
- How do I display the Find Printers dialog programmatically?
- There's more to workflow than hitting F5 in the IDE
- Why doesn't my MessageBox wrap at the right location?
- What happens when applications try to copy text by sending Ctrl+C
- How do I compress files (via NTFS compression) from the command line?
- How to get Windows Media Player to single-step a video
- See you in Building 109, Conference Room A
- In Windows, the directory is the application bundle
- How do I make a window remain visible even when the user selects Show Desktop?
- How do I create a right-aligned toolbar button?
- How do I convert a UTF-8 string to UTF-16 while rejecting illegal sequences?
- Sufficiently advanced magic is indistinguishable from technology
- You don't need to steal focus if you can just arrange for someone to give it to you
- Generally speaking, if your function fails, you should return a failure code
- PE resources must be 4-byte aligned, but that doesn't stop people from trying other alignments
- Microspeak: The planned unplanned outage, and other operations jargon
- You'd think that with the name scratch, people wouldn't expect it to be around for a long time
- Why do Group Policy settings require me to have a degree in philosophy?
- Swamping the thread pool with work faster than it can drain
- How do I control X-Mouse settings (active window tracking)?
- How do I prevent users from pinning my program to the taskbar?
May 2011
- My evil essence revealed
- Just for fun: Sample user names in Windows 7
- Why are custom properties created on Windows 2000 lost when I view the file from newer versions of Windows?
- How do IsThemeActive, IsAppThemed, and IsCompositionActive differ?
- WinMain is just the conventional name for the Win32 process entry point
- Microspeak: PowerPoint Karaoke and the eye chart
- If it's possible to do something, then it's possible to do something WRONG
- One engineer's interpretation of the Segway as a hybrid vehicle
- BeginBufferedPaint: It's not just for buffered painting any more
- Why is my program terminating with exit code 3?
- Watching the battle between Facebook and Facebook spammers
- How long do taskbar notification balloons appear on the screen?
- Why does Explorer show a thumbnail for my image that's different from the image?
- Multithreaded UI code may be just as hard as multithreaded non-UI code, but the consequences are different
- If undecorated names are given in the DLL export table, why does link /dump /exports show me decorated names?
- Looking at the world through kernel-colored glasses
- Why double-null-terminated strings instead of an array of pointers to strings?
- Why is hybrid sleep off by default on laptops? (and how do I turn it on?)
- Sorting is a state and a verb (and a floor wax and a dessert topping)
- A function pointer cast is a bug waiting to happen
- Your program loads libraries by their short name and you don't even realize it
- Why don't the file timestamps on an extracted file match the ones stored in the ZIP file?
- Like a chicken talking to a duck
- That's not a duck
- The Importance of Being Snooki
- Hidden compatibility constraints of redirecting program execution via a stub
April 2011
- Not quite understanding why you wash your hands before playing the piano
- Why is there a RestoreLastError function that does the same thing as SetLastError?
- Microspeak: Hipo
- How do I pin a program directly to the Start menu rather than a shortcut?
- No, you can't ask whether your notification icon is visible or not
- There's only so much you can do to stop running code from simulating UI actions
- Even if you have a lock, you can borrow some lock-free techniques
- The performance improvements of a lock-free algorithm is often not in the locking
- Corrections to Patterns for using the InitOnce functions
- Endorsement: Aaron Margosis's Unintended Consequences of Security Lockdowns talk at TechEd
- Visual Studio 2005 gives you acquire and release semantics for free on volatile memory access
- Back from Las Vegas, and now my clothes smell like cigarette smoke
- Don't forget to include the message queue in your lock hierarchy
- Lock-free algorithms: The try/commit/(hand off) model
- Lock-free algorithms: The opportunistic cache
- Lock-free algorithms: Update if you can I'm feeling down
- Overheard conversation fragment: I'm over here by the slot machines
- Lock-free algorithms: The try/commit/(try again) pattern
- Holding down the shift key when right-clicking lets you pin things to the Start menu even when you might have been better off not doing so
- Patterns for using the InitOnce functions
- Lock-free algorithms: The singleton constructor (answer to exercises)
- Lock-free algorithms: The one-time initialization
- Lock-free algorithms: Choosing a unique value (solutions)
- Lock-free algorithms: The singleton constructor
- Lock-free algorithms: Choosing a unique value (warm-up)
- Windows is not a .NET Framework delivery channel either
- The funniest joke I've ever told (to a three-year-old)
- The introduction of whimsical teasing in Comic Chat
March 2011
- 2011 Q1 link clearance: Microsoft blogger edition
- Having an owner window from another process is tricky, but it's sometimes the right thing to do
- How do I get the title of a dialog from a dialog resource?
- Although the default icon for a shortcut is the icon of the target, you can override that
- Why did Win32 define BOOL as a signed int instead of an unsigned int?
- Paul Cézanne and Camille Saint-Saëns may have similar-sounding last names, but they are not the same person
- How do I monitor, or even control, the lifetime of an Explorer window?
- How can I generate a consistent but unique value that can coexist with GUIDs?
- Function requirements are cumulative: If you fail to meet any of them, then all bets are off
- Why is there the message '!Do not use this registry key' in the registry?
- How does the C runtime know whether to use the static-linking or dynamic-linking version of the header file?
- You can extend the PROPSHEETPAGE structure with your own bonus data
- What does the "l" in lstrcmp stand for?
- What’s up with the mysterious inc bp in function prologues of 16-bit code?
- Raymond's highly scientific predictions for the 2011 NCAA men's basketball tournament
- Why can't Explorer decide what size a file is?
- The old DEBUG program can load COM files bigger than 64KB, but that doesn't mean they actually load as a program
- Why does my TIME_ZONE_INFORMATION have the wrong DST cutover date?
- How do I create a topmost window that is never covered by other topmost windows?
- How to rescue a broken stack trace: Recovering the EBP chain
- Microspeak: Cadence
- What's the difference between FreeResource and, say, DestroyAcceleratorTable
- News flash: Companies change their product to appeal to their customers
- The window manager needs a message pump in order to call you back unexpectedly
- If you're waiting for I/O to complete, it helps if you actually have an I/O to begin with
- Charlie Sheen v Muammar Gaddafi: Whose line is it anyway?
- Although the x64 calling convention reserves spill space for parameters, you don't have to use them as such
- No, not that M, the other M, the one called Max
February 2011
- On the linguistic productivity of the word spam
- If you want to use GUIDs to identify your files, then nobody's stopping you
- DRUNK HULK's insightful commentary in all-caps (and faux-rudimentary English)
- Why does WaitForMultipleObjects return ERROR_INVALID_PARAMETER when all the parameters look valid to me?
- iPhone pricing as economic experiment
- Shortcuts are serializable objects, which means that they can be stored in places other than just a file
- How long does an idle UNC connection remain active before it is automatically disconnected?
- Dr. Watson and the bluescreen – a story from the trenches
- Sharktopus: Just when you thought it was safe to see what movies are coming out
- If an operation results in messages being sent, then naturally the target window must be processing messages for the operation to complete
- WM_NCHITTEST is for hit-testing, and hit-testing can happen for reasons other than the mouse being over your window
- What is the highest numerical resource ID permitted by Win32?
- What is the difference between a directory and a folder?
- Don't mention the war. I mentioned it once, but I think I got away with it all right (Episode 2)
- Window message parameters do not come with metaphysical certitude
- What happens when you email the people in the I'm a PC commercial?
- Any intelligent human being
- How do specify that a shortcut should not be promoted as newly-installed on the Start menu?
- Psychic debugging: Because of course when something doesn't work, it's because the program was sabotaged from above
- Why does SHGetKnownFolderPath return E_FAIL for a known folder?
- Microspeak: Recycling bits or recycling electrons
- The cursor isn't associated with a window or a window class; it's associated with a thread group
- The 2010 Niney Award nominees have been announced
- Ready… cancel… wait for it! (part 3)
- I am no longer impressed by your fancy new 10,000 BTU hot pot burner
- Ready… cancel… wait for it! (part 2)
- Ready… cancel… wait for it! (part 1)
- There is no longer any pleasure in reading the annual Microsoft injury reports
January 2011
- Solutions that require a time machine: Making applications which require compatibility behaviors crash so the developers will fix their bug before they ship
- Some remarks on VirtualAlloc and MEM_LARGE_PAGES
- How do you obtain the icon for a shortcut without the shortcut overlay?
- Microspeak: Leverage
- Why does the name of my TEMP directory keep changing?
- There's a default implementation for WM_SETREDRAW, but you might be able to do better
- The 2011/2012 Seattle Symphony subscription season at a glance
- Modality, part 9: Setting the correct owner for modal UI, practical exam
- How to turn off the exception handler that COM "helpfully" wraps around your server
- Why didn’t they use the Space Shuttle to rescue the Apollo 13 astronauts?
- Don't just stand around saying somebody should do something: Be someone
- Was showing the column header in all Explorer views a rogue feature?
- What's the difference between an asynchronous PIPE_WAIT pipe and a PIPE_NOWAIT pipe?
- The MARGINS parameter to the DwmExtendFrameIntoClientArea function controls how far the frame extends into the client area
- My, what strange NOPs you have!
- The message text limit for the Marquee screen saver is 255, even if you bypass the dialog box that prevents you from entering more than 255 characters
- Why does pasting a string containing an illegal filename character into a rename edit box delete the characters from the clipboard, too?
- When does a process ID become available for reuse?
- Processes, commit, RAM, threads, and how high can you go?
- Why does SHGetSpecialFolderPath take such a long time before returning a network error?
- From inside the Redmond Reality Distortion Field: Why publish documents in PDF?
- Begin feeling
2010 360
December 2010
- 2010 year-end link clearance
- What makes RealGetWindowClass so much more real than GetClassName?
- WindowFromPoint, ChildWindowFromPoint, RealChildWindowFromPoint, when will it all end?
- Psychic debugging: When I copy a file to the clipboard and then paste it, I get an old version of the file
- Windows 7 not only can make a wallpaper slide show from images on your computer, it can even pull them from an RSS feed
- Why can’t you use the space bar to select check box and radio button elements from a menu?
- Some suggestions on improving the assembly instructions for your children's play furniture
- That mysterious 01
- What is the correct way of temporarily changing a thread's preferred UI language?
- The __fortran calling convention isn't the calling convention used by FORTRAN
- How do I simulate input without SendInput?
- Developing the method for taking advantage of the fact that the OVERLAPPED associated with asynchronous I/O is passed by address
- What happened to the return code from WinMain in 16-bit Windows?
- The OVERLAPPED associated with asynchronous I/O is passed by address, and you can take advantage of that
- Why does SHCOLUMNINFO have unusually tight packing?
- There is no interface for preventing your notification icon from being hidden
- The subtleties of a Will Ferrell movie, and other observations from the in-flight entertainment on a Chinese airline
- Microspeak: Informing a product
- Why are the Compression and Encryption options check boxes instead of radio buttons?
- Some notes on my trip to Beijing disguised as travel tips
- How do I limit the size of the preview window used by Aero Snap?
- What appears superficially to be a line is actually just a one-dimensional mob
- We've traced the call and it's coming from inside the house: Grid lines in list view report mode
- Kindergarten writing exercise from my niece
- It rather involved being on the other side of this airtight hatchway: Invalid parameters from one security level crashing code at the same security level
- Creative naming in pursuit of subverting the no-fun zone
- TrackMouseEvent tracks mouse events in your window, but only if the events belong to your window
- ZOMG! This program is using 100% CPU!1! Think of the puppies!!11!!1!1!eleven
- The alignment declaration specifier is in bytes, not bits
- I will be speaking at TechEd China 2010 today
- How do I delete bytes from the beginning of a file?
November 2010
- Microspeak: Take-away
- What were Get/SetMessageExtraInfo ever used for?
- Watching the game of Telephone play out in five seconds
- The easy way out is to just answer the question: What is the current Explorer window looking at?
- What if two programs did this? Practical exam
- You can filter the Common File dialog with wildcards
- But who's going to set up their own email server?
- Consequences of using variables declared __declspec(thread)
- What's the difference between the Windows directory and the System directory?
- One possible reason why ShellExecute returns SE_ERR_ACCESSDENIED and ShellExecuteEx returns ERROR_ACCESS_DENIED
- How full does a hard drive have to get before Explorer will start getting concerned?
- If you measure something, people will change their behavior to address the measurement and not the thing the measurement is intended to measure
- The program running in a console decides what appears in that console
- Why does the common file dialog change the current directory?
- Using delayload to detect functionality is a security vulnerability
- Your debugging code can be a security vulnerability: Loading optional debugging DLLs without a full path
- The curse of the current directory
- Is there any vendor bias in the way the Start menu determines which programs are most frequently used?
- Why does the Win32 Time service require the date to be correct before it will set the time?
- The story of MUI, as told by others (with some commentary)
- The quiet fading away of the CtlPanelClass
- The wisdom of seventh graders: Being President
- Saying that your case is different doesn't make it so
- Why doesn't the End Task button end my task immediately?
October 2010
- It's the Great Pumpkin, Charlie Brown: The world of competitive pumpkin-growing
- Debugging walkthrough: Diagnosing a __purecall failure
- Why is there an LVN_ODSTATECHANGED notification when there's already a perfectly good LVN_ITEMCHANGED notification?
- How do I programmatically invoke Aero Peek on a window?
- Hacking Barney the dinosaur for fun (no profit)
- Belated happy first birthday, Windows 7
- When you call a function, your code doesn't resume execution until that function returns
- The evolution of the ICO file format, part 4: PNG images
- The evolution of the ICO file format, part 3: Alpha-blended images
- How do I get the dimensions of a cursor or icon?
- The evolution of the ICO file format, part 2: Now in color!
- The evolution of the ICO file format, part 1: Monochrome beginnings
- What does the FOF_NOCOPYSECURITYATTRIBS flag really do (or not do)?
- The memcmp function reports the result of the comparison at the point of the first difference, but it can still read past that point
- How do I get the color depth of the screen?
- Why are the keyboard scan codes for digits off by one?
- Why does each drive have its own current directory?
- Why does TaskDialog return immediately without showing a dialog? – Answer
- Why does my asynchronous I/O request return TRUE instead of failing with ERROR_IO_PENDING?
- The overlooked computer room at school that became my "office" for a while
- Why does TaskDialog return immediately without showing a dialog?
- Wildly popular computer game? The Windows product team has you covered
- Secret passages on Microsoft main campus
- On understanding that getting married comes with changes in lifestyle
- Why is the origin at the upper left corner?
- Which ferry should we take from Germany back to Denmark? Oh, it's this one, except for that one word I don't understand
- Non-psychic debugging: Why you're leaking timers
September 2010
- 2010 Q3 link clearance: Microsoft blogger edition
- Why doesn't the TAB key work on controls I've marked as WS_TABSTOP?
- We apologize for the delay, but there is an issue with the music
- Where did my mail control panel icon go?
- Speculation around Microsoft Company Meeting 2010
- Children's reactions to macadamia nuts dipped in chocolate
- Why not just require each application to declare what version of Windows it is compatible with?
- Does anybody actually like Brazil nuts?
- How reliable is the BatteryLifePercent member of the SYSTEM_POWER_STATUS structure?
- Pizza: The reference food for young children
- You must flush GDI operations when switching between direct access and GDI access, and direct access includes other parts of GDI
- Happy Mid-Autumn festival 2010
- What is the effect of the /LARGEADDRESSAWARE switch on a DLL?
- Fact check: The first major Microsoft product launched via Webcast
- How do I get the dropped height of a combo box?
- It's amazing how many business meetings there are in Munich in late September
- What's up with the strange treatment of quotation marks and backslashes by CommandLineToArgvW
- How is the CommandLineToArgvW function intended to be used?
- Follow-up: The impact of overwhelmingly talented competitors on the rest of the field
- How do I create a UNC to an IPv6 address?
- Microspeak: Sats
- Ha ha, the speaker gift is a speaker, get it?
- Why doesn't Win32 give you the option of ignoring failures in DLL import resolution?
- Hey there token, long time no see! (Did you do something with your hair?)
- Flushing your performance down the drain, that is
- The contractually obligatory beeper, and the customers who demand them
- How do I customize the order of items in the All Programs section of the Start menu?
- Was there really an Opera billboard outside Microsoft main campus?
- What happens to a named object when all handles to it are closed?
- It rather involved being on the other side of this airtight hatchway: If you grant users full control over critical files, then it's not the fault of the system for letting users modify them
- Yes, the Windows 7 beta wallpaper was a picture of a betta fish
August 2010
- Shutdown reason codes are reason codes, not error codes or HRESULTs
- Be on the alert: Mainstream and alternative medicines mixed together on the store shelves, not clearly distinguished
- Reflections create Xbox logo on neighbor’s roof
- On LockWindowUpdate: Locking the taskbar
- If you return from the main thread, does the process exit?
- How do I recover the window handle passed to ShellExecute?
- What young children do when they hear a foreign language
- Why did the Explore option disappear from the context menu of folders in the second column of the Start menu?
- Windows 95: It sucks less
- Be careful that your splash screen doesn't squander the foreground love
- Miss France, she has the Eiffel Tower on her head, because France has the Eiffel Tower, and no other country does, so she put it on her head, that's why
- Why does the primary monitor have (0,0) as its upper left coordinate?
- I challenge you to come up with an even lamer physics pun
- How do I get the Explorer navigation pane to highlight the current folder all the time?
- Microspeak: The funnel
- What was that story about the WinHelp pen-writing-in-book animation?
- What happened to WinHelp?
- When do I need to use GC.KeepAlive?
- How can I find all objects of a particular type?
- How do I get the reference count of a CLR object?
- Everybody thinks about CLR objects the wrong way (well not everybody)
- When does an object become available for garbage collection?
- Everybody thinks about garbage collection the wrong way
- Some known folders cannot be moved, but others can, and you'll just have to accept that
- Raymond misreads flyers, episode 2: It Takes You
- How many failure reports does a bug have to get before Windows will fix it?
- Don’t forget to replace your placeholder bitmaps with real bitmaps
- A brief conversation while preparing to hike along the Pacific coast
- Did I know where the Novell short file name behavior came from?
July 2010
- Decoding the parameters of a thrown C++ exception (0xE06D7363)
- Holy cow, those TechReady attendees really love their tchotchkes
- Why is my icon being drawn at the wrong size when I call DrawIcon?
- The frustration of people who have already decided on the solution and won't let you derail them with your annoying questions
- Hardware backward compatibility: The finicky floppy drive
- Why didn’t Windows XP auto-elevate programs beyond those named setup.exe?
- MSDN content is also available as a Web service
- If I'm not supposed to call IsBadXxxPtr, how can I check if a pointer is bad?
- I will be speaking at TechReady11
- Things I've written that have amused other people, Episode 7
- No, you can't lock a gadget to the top of the sidebar
- Suggestion Box 4
- Management-speak: Multi-perspective content
- To enable and disable a window, use the EnableWindow function
- How do I launch the Explorer Search window with specific search criteria?
- There's always the low-tech way of managing a process, too
- Why don't all the Control Panel applications show up when you open a menu from the address bar?
- Tips for planning your ship party
- What is the cost of WS_CLIPSIBLINGS if the sibling windows don't overlap?
- What's the difference between LastWriteTime and ChangeTime in FILE_BASIC_INFO?
- How do I configure a Remote Desktop Connection shortcut to open on a specific monitor?
- Crackpots in computer security: The neighbors are looking at me weird
- Hardware backward compatibility: The firmware that missed one tiny detail
- One small silver lining of moving Boeing headquarters to Chicago
- The commutative law for postage and its limitations
- Instead of trying to figure out what shortcut class to use, just ask the shell to do it for you
- What Raymond listens to: KCRW's The Business
- What is the lpClass member of SHELLEXECUTEINFO used for?
June 2010
- 2010 mid-year link clearance
- Management fallacy: If I send people email, then they will work harder
- The illusory repair powers of black electrical tape
- Redneck Scrabble: It's fun unless you had to do it for real
- How do I get a radio button control to render its text transparently?
- 6-4, 3-6, 6-7 (7-9), 7-6 (7-3), 70-68: The scoreboard doesn't even go that high
- My life as a square (pixel)
- When setting expectations, you also have to deny them when necessary
- The best way to prove somebody incompetent is to make up stuff and then point out that it's idiotic
- How do I customize the Favorite Links section of the File Open dialog?
- Wow, a task bar, what a novel idea
- Bug Bash: It's funny because it's true
- As random as I wanna be: Why cmd.exe's %RANDOM% isn't so random
- I always do a double-take when I see the name Andrew Bynum
- Why can't AppLocale just be added to the Compatibility property sheet page?
- What does the PRE in PREfast stand for?
- Hunting for loopholes in Washington state's driving-while-phoning-or-texting law
- Annotating function parameters and using PREfast to check them
- My niece asked me what color seashell I would like her to draw
- How do I indicate that I want my window to follow right-to-left layout rules?
- When you set a 100% CPU program to real-time priority, you get what you asked for
- When you use a term, it helps if you know what the term means
- Proto-Microspeak: Bug-hugging
- Dum dee dum, just hanging around the European Conference on Computer Supported Co-op… OMG LOOK AT THOSE CUTE DUCKS!
- Is it real that you are still using Visual C++ 6 and 5?
- How do I enable and disable the minimize, maximize, and close buttons in my caption bar?
- The voice of Carl Kasell emerges from the loudspeaker as some old guy stands there and moves his mouth
- How do I convert an ANSI string directly to UTF-8?
- The giant typewriter eraser in the Olympic Sculpture Park in Seattle
- Puzzle: Can you explain this program's crash profile?
- Why doesn't the Windows Vista copy progress dialog show the names of the files being copied?, redux
- Welcome to the maze and enjoy the Habitrail
May 2010
- That's a great idea, it's on the list
- How do I accept files to be opened via IDropTarget instead of on the command line? – bonus content
- Every window with the WS_SYSMENU style has a system menu, but it's not there until it needs to be
- When will the window manager destroy a menu automatically, and when do I need to do it manually?
- How do I find the bounding box for a character in a font?
- Cliff Notes: The short version of the Cliff Mass blog
- Why doesn't the Windows Vista copy progress dialog show the names of the files being copied?
- Welcome to The New Old New Thing, 2010 edition
- What's the deal with What's This??
- SHAutoComplete giveth, and SHAutoComplete taketh away
- We've traced the call and it's coming from inside the house: Operating system names
- If you can detect the difference between an emulator and the real thing, then the emulator has failed
- No good deed goes unpunished, part 2, redux
- An insight into the balance between forgiveness and permission
- If Windows 3.11 required a 32-bit processor, why was it called a 16-bit operating system?
- Maxing out the upsell-o-meter
- How do I prevent users from dragging and dropping files in Explorer?
- Things the locals know: How to have lunch at El Brillante
- Why can I type a lowercase s with caron with the numeric keypad, but not a lowercase r with caron?
- The problem with setting up a story is that people focus on the set-up and miss the point of the story
- It rather involved being on the other side of this airtight hatchway: Consequences of enabling the kernel debugger
- On nearly getting pickpocketed in both Lisbon and Madrid
- Why can programs empty the clipboard when they start up?
- Words you've had wrong your entire life
- The many ways of converting a string from one language to another
- On the Portuguese custom of the couvert, and other restaurant customs
- What are these strange =C: environment variables?
- Eating where the teenagers are: Pão Pão, Queijo Queijo
- How the shell converts an icon location into an icon
- Microspeak: The statistic known as BIS
- Welcome to Belém, the scam artist capital of Lisbon
- How do I accept files to be opened via IDropTarget instead of on the command line?
April 2010
- Welcome to Taiwan's premier English-only nightclub
- If it's not yours, then don't mess with it without permission from the owner
- A short puzzle about heap expansion
- What happens to the contents of a memory-mapped file when a process is terminated abnormally?
- He bought the whole seat, but we only needed the edge
- Why doesn't TryEnterCriticalSection try harder?
- Our legal department suggests you skip our salad dressing and just eat an avocado
- Why can't I get my regular expression pattern to match words that begin with %?
- Email tip: When asking for help with a problem, also mention what you've already tried
- Email tip: When you say that something didn't work, you have to say how it didn't work
- The difference between your job and your hobby
- Why does the wireless connection dialog ask for your password twice?
- The mysterious stock bitmap: There's no way to summon it, but it shows up in various places
- Why are there two values for NoDriveTypeAutoRun which disable Autoplay on drives of unknown type?
- When you create an object with constraints, you have to make sure everybody who uses the object understands those constraints
- It's a miracle humanity has survived this far, if reaction to the inability to make or receive a telephone call is to be believed
- How do I switch a window between normal and fullscreen?
- Why can't you use WM_CTLCOLORSTATIC to change the color of a SS_BLACKRECT?
- Why doesn't SS_WHITERECT actually draw a white rectangle?
- How to edit the security attributes of more than one file at a time
- Microspeak: SQMmed
- When people ask for security holes as features: Non-administrators reading other users' stuff
- Why do non-folders in my shell namespace extension show up in the folder tree view?
- EnumClaw, the function that never was
March 2010
- 2010 Q1 link clearance: Microsoft blogger edition
- The great thing about URL encodings is that there are so many to choose from
- Non-Microspeak: Boiling the ocean
- Ruth Bader Ginsburg, the yardstick for Wikipedia entries
- What happens to the control names in the IDE when my program is running?
- WaitForInputIdle waits for any thread, which might not be the thread you care about
- WaitForInputIdle should really be called WaitForProcessStartupComplete
- First, try reading the error message, episode 3: Even programmers see error messages without reading them
- Why does it take longer to reject an invalid password than to accept a valid one?
- Germans are falling for the same trap as the Japanese: Importing words from English and changing the meaning, but the Germans do it even though the words didn't need to be imported at all
- Why does SHFileOperation have internal error codes for DVD?
- How many days long is a one-day sale? The answer might surprise you
- How does delay-loading use binding information?
- What is DLL import binding?
- What is DLL import hinting?
- Raymond's highly scientific predictions for the 2010 NCAA men's basketball tournament
- Why does my control send its notifications to the wrong window after I reparent it?
- Robots and humans coexisting, can it be done peacefully?
- A window can have a parent or an owner but not both
- Simplifying context menu extensions with IExecuteCommand
- Why does the OLE variant date format use 30 December 1899 as its zero point?
- Application compatibility layers are there for the customer, not for the program
- One of the consequences of accepting a job offer is that you might end up working with an interviewer who didn't like you
- Why is the fine for a basic traffic infraction in the state of Washington such a random-looking number?
- PSM_ISDIALOGMESSAGE is to modeless property sheets as IsDialogMessage is to modeless dialog boxes
- The best actors in the business still lean into the microphone when they talk
- Why doesn't double-right-click bring up the Properties dialog?
- Delegation of responsibilities within a family during pregnancy
- How do I access the magic IEEE floating point values like NaN in code?
- Everyday is Grammer Day
- What happens if I drag the mouse by exactly the amount specified by SM_CXDRAG?
- Voicemail security, even stronger than bank security
- Microspeak: Dialogue
- Chilly Hilly 2010 kicked my butt
- When does STARTF_USESHOWWINDOW override the parameter passed to ShowWindow()?
February 2010
- Microwave popcorn enthusiast proudly proclaims, "I *am* popcorn!"
- It's fine to use fibers, but everybody has to be on board with the plan
- Food products that are offenses against nature: Bagel-fuls
- What happens to the fibers which ran on a thread when the thread exits?
- German language tip: Matratzen = mattresses, Matrosen = sailors
- Why does the CBS_SORT combo box style sort the left square bracket so strangely?
- Le Chatelier's principle in action: Announcements
- On the Internet, everybody wants to know if you're a dog
- Custom navigation in dialog boxes, redux
- How many servings are there in a single-serve cup? The answer might surprise you
- The normal string manipulation functions stop on a null terminator, so be careful when manipulating double-null-terminated strings
- Don't forget to double-null-terminate those strings you pass to SHFileOperation
- Happy birthday, Windows 2000, and try not to get too hung over
- The fundamental rule of rocket science
- It rather involved being on the other side of this airtight hatchway: Dubious escalation
- Advocating the overthrow of the government of the United States by force or subversion
- Private classes, superclassing, and global subclassing
- A decidedly Canadian response to the shambles that was the running portion of the modern pentathlon in Beijing
- How do I get information about the target of a symbolic link?
- A sense of the term anonymous with which I had previously been unfamiliar
- Those annoying satisfaction surveys
- No matter what you do, someone will call you an idiot, part 2
- Moving by staying put
- The 2010/2011 Seattle Symphony subscription season at a glance
- For better performance, set all your monitors to the same color format
- A simple Venn diagram teaches you the difference between Norway and Sweden
- Why doesn't my program receive the WM_DWMSENDICONICTHUMBNAIL message when I ask for an iconic representation?
- The Brits once again come up with a clever solution to the problem of the scatterbrained client
- Why doesn't the shell animation control tell me the dimensions of the animation it is displaying?
- Long-term temporary parking?
- What is the maximum length of an environment variable?
- It appears that car park computers revert to their native language, German, when placed under stress
- Microspeak: Future-proofing
- It looks a little like CMD except there is white on the background
- Why can't I use the linker to delay-load a function from kernel32?
January 2010
- How do I suppress full window drag/resize for just one window?
- Microsoft phenomenon: The annual award that winds up being awarded only once
- What idiot would hard-code the path to Notepad?
- If you are trying to understand an error, you may want to look up the error code to see what it means instead of just shrugging
- Microspeak: Zap
- Why doesn't the window manager have a SetClipboardDataEx helper function?
- During process termination, the gates are now electrified
- Historically, Windows didn't tend to provide functions for things you can already do yourself
- The wrong way to determine the size of a buffer
- The hardest part of writing the video game Monty Python's Complete Waste of Time
- People just like you, for certain values of you
- It's fine to rename a function in your DEF file, but when you do, you have to link to that function by its new name
- How you might be loading a DLL during DLL_PROCESS_DETACH without even realizing it
- I could just use a picture of a regular-sized shopping cart from farther away
- It rather involved being on the other side of this airtight hatchway: If they can inject code, then they can run code
- News flash: Wearing clothing keeps you warm
- Why does GetCommandLine give me a corrupted command line?
- But that's not all: The story of that cheesy Steve Ballmer Windows video
- Weight Gain 4000, the competition
- Pros and cons of using a four-year-old as your language instructor
- Why aren't compatibility workarounds disabled when a debugger is attached?
- What is the hSection parameter to CreateDIBSection for?
- Learning how to cheat at Candy Land
- How to change the debugger attached to a process
- The wisdom of seventh graders: Success
- Can you get rotating an array to run faster than O(n²)?
- Thanks for coming together to enjoy the holiday together, now get off my lawn
- Microspeak: Engagement
- How many sides are there to a snowflake? The answer may surprise your marketing department
- How about not granting debug privileges to users?
- The goggles, they do nothing!: Gemulator advertisement from 1992
- Your program assumes that COM output pointers are initialized on failure; you just don't realize it yet
2009 420
December 2009
- 2009 year-end link clearance
- Why does COM require output pointers to be initialized even on failure?
- Join the Seattle Symphony for a New Year Eve's performance of Beethoven's Nin… wait a second…
- Even your folder icons can be used as a Rorschach test
- How do I minimize a group of windows in Windows 7 from the taskbar?
- How does the keyboard autorepeat setting work?
- Merry Christmas to me: Zune headphones
- No, you didn't win the Jethro Tull box set, and please tell everybody else in your area code to stop calling me
- The NPR Planet Money one-hour story competition: The shopping mall convention
- Why don't we create a special class of programs which can break the normal rules?
- Exploiting the inattentive: The posted wine rating may not match the wine on the shelf
- Why is it possible to destroy a critical section while it is in use?
- Tweeting Too Hard: Best of Twitter
- No, you can't lock icons to the user's desktop
- Christmas gift idea for your favorite Microsoft fanboy geek with no sense of fashion or taste
- What version of the compiler does Raymond use?
- The economic inefficiency of gift-giving
- I got an array with plenty of nuthin'
- Surprising things injected into Mozart cadenzas
- What was the ShowCursor function intended to be used for?
- Just like in real life, you can hire someone to do your programming taxes for you
- You are listening to Radio Free Bob, a pirate radio station broadcasting on the Microsoft corporate network
- Why did the word Start disappear from the Start button?
- Lamebook: The best of Facebook
- The format of bitmap resources
- Those houses are too small for anyone to live in
- Only an idiot would have parameter validation, and only an idiot would not have it
- What are those little overlay icons: Windows 7 edition
- How do I determine the processor's cache line size?
- Things I've written that have amused other people: Episode 6
- I'm sorry, Brian/Bryan Gregory, that confirming the spelling of your name is too much for you to handle
- What is the story behind multimon.h?
- Why do some comments have a star?
- When there is a long line of people waiting for a shared resource, you want to investigate the person who is hogging the resource, not the people waiting in line for it
- Why do Swedes count "1, X, 2"?
- What is the effect of setting the /3GB switch on my 64-bit Windows machine?
- Fake trend watch: Bridesmaid pre-nuptial agreements
- A shell extension is a guest in someone else's house; don't go changing the carpet
- Intelius cancels its cell phone directory, saving me the trouble of having to opt out of it every three months
- Microspeak: Cookie licking
November 2009
- Umpires are the lymphatic system of the baseball diamond
- Where did WIN32_LEAN_AND_MEAN come from?
- How does Raymond get rid of his excess pennies?
- Caches are nice, but they confuse memory leak detection tools
- I want to take all your chocolate milk
- When you want to copy a file into a folder, make sure you have a folder
- The magic of chocolate milk
- How do I get the command line of another process?
- When computer programmers dabble in making change
- Can I talk to that William fellow? He was so helpful
- The difference between assignment and attachment with ATL smart pointers
- We're using a smart pointer, so we can't possibly be the source of the leak
- News flash: Healthy people live longer
- How do I move the Windows.edb and other search index files?
- We found the author of Notepad, sorry you didn't go to the award ceremony
- How to tell when your patent has been approved
- How to pretend that you attended my talk at UIUC Reflections|Projections 2009
- Why does shlwapi import a nonexistent function?
- What a drag: You can be a drag in managed code, too
- You thought reasoning about signals was bad, reasoning about a total breakdown of normal functioning is even worse
- Why can you create a PIF file that points to something that isn't an MS-DOS program?
- Leave it to the Taiwanese to think of wrapping a donut inside another donut
- Trying to avoid double-destruction and inadvertently triggering it
- I reorganized your kitchen for you, sweetie
- Little-known command line utility: clip
- Stories of anticipating dead computers: Windows Home Server
- How do I create a toolbar that sits in the taskbar?
- Signs that the symbols in your stack trace are wrong
- The day the coffee machine exploded
- In the product end game, every change carries significant risk
- Good advice comes with a rationale so you can tell when it becomes bad advice
- When asked to choose among multiple options, the politician will pick all of them
- Microspeak: Net out
- Hey, is there somebody around to accept this award?
October 2009
- Still working out the finer details of how this Hallowe'en thing works
- What is the format for FirstInstallDateTime on Windows 95?
- What this batch file needs is more escape characters
- Warning: Not much useful content inside
- Why does the Photo Gallery show all my photos with a colored tinge?
- If aluminum pull tab redemption is a rumor, what happens to all the tabs?
- Freudian typo: The accidental emoticon
- Why won't my computer go to sleep? Where is the energy going?
- Yes, there's a new desktop window manager, but no, I don't know any more about it than you do
- If you have to cast, you can't afford it
- Once you announce a date, you’re already late
- Please, sir take a seat, sit anywhere you like, but oh, no, not there, rats
- How to write like Raymond: Start a sentence with a question mark
- Leaving Reflections | Projections 2009, travel marathon part two
- Thinking inside the box
- Arrived in Urbana-Champaign for Reflections|Projections 2009
- Important window message numbers to memorize
- Don't use global state to manage a local problem, practical exam
- Viral video: Pianotrappan
- When you want to pass a parameter on the command line, don't forget to pass the parameter on the command line
- You always hurt the things you love
- Why do we have import libraries anyway?
- The classical model for linking
- LoadString can load strings with embedded nulls, but your wrapper function might not
- In Hawaiʻi, "mahalo" might officially mean "thank you"
- What is the format of a double-null-terminated string with no strings?
- I will be speaking at Reflections|Projections 2009
- The ways people mess up IUnknown::QueryInterface, episode 3
- Proto-Microspeak: Efforting
- Trying to come up with the most annoying meal ever
- Why doesn't the mail image resizer check the image size before offering to resize?
- The mystery of the other girlfriend
- When you commit memory, you get a commitment to receive memory when you need it, but no sooner
- A Few Seconds of Panic: Life as an NFL kicker
- In the search for the subtle source of the problem, you sometimes overlook the obvious one
September 2009
- 2009 Q3 link clearance: Microsoft blogger edition
- Why do messages posted by PostThreadMessage disappear?
- Microspeak: Net net
- Why doesn't Explorer have an interface for creating hard links?
- The ways people mess up IUnknown::QueryInterface, episode 2
- Don't panic, it's just H1N1
- When people ask for security holes as features: Privileged execution
- The COM marshaller uses the COM task allocator to allocate and free memory
- We’ve got your hotel surrounded (on one side) (and not even the entire side)
- Things I've written that have amused other people, Episode 5
- We accept cash, credit cards, and Microsoft cardkeys
- What is the logic behind the thumb size and position calculation in scroll bars?
- Windows 95's ticking death
- Should I fix the spelling in the United States Constitution?
- Rentonites concerned about Hooters opening in their town, but not for the reason you think
- Whoa there, logging on awful fast now are we?
- Crazy Eddie: His prices were insane because it was all a criminal operation
- Why does the Start menu search box autoselect some items but not others?
- A complex family calculus
- Can you create an information context for the display?
- Most people who go to an open house aren't actually interested in buying it
- If you're handling an out of memory exception, you probably shouldn't allocate memory
- Start with a $50,000 grant, hold a fundraiser, lose $47,000
- Management-speak: Focus
- Hey, you look Chinese, we have a class for people like you
- When you agree to write to a particular length, make sure your content is actually that length
- Why are developer tools orange?
- Things other people have written that have amused me, Episode 2
- Thanks for identifying the good programmers for us
- Two-year-old as finite state machine
- Reading the error message carefully can help you see how the computer misinterpreted what you typed
- Grown in the middle of some very respectable Seattle suburbs, such as Renton
- Woe unto PROGMAN.INI
- Welcome to the 11th annual Mid-Atlantic Road-E-O
- The wheels of government bureaucracy turn slowly: Green cards
- Walt Mosspuppet: The return of the fake blog
- One way to make sure nobody sends you feedback
August 2009
- And they don't take American Express
- Why do new controls tend to use COM instead of window messages?
- A different perspective from the first row of the symphony
- The great thing about naming conventions is that not everybody will follow them
- Isn't every dinner at a technology conference a geek dinner?
- What is the maximum number of timers a program can create?
- The way to stop people from copying files to a folder is to use NTFS security, not to block drag/drop
- In Ephesus, you juggle or die
- Meta-content: Suggestion Box 4 will open sometime next year
- My phone just DoS'd my office network
- City noises and their effects on songbirds
- The operating system doesn't know which language programs are written in – by the time the code hits the CPU, they all look the same
- Restating the obvious about the WM_NOTIFY message
- Why does Windows wait longer than my screen saver idle timeout before starting the screen saver?
- There’s no law that says a meeting can’t end early
- Microspeak: Action on
- The format rectangle is recalculated whenever the window resizes, and that's a good thing
- It's not just on the Internet that nobody knows you don't have a real office
- Why can't I declare a type that derives from a generic type parameter?
- Landing the Space Shuttle is hard enough as it is
- Common gotchas when writing your own p/invoke
- The wisdom of sev^H^H^Heighth graders: What it means to be an adult
- Why can't I pass a reference to a derived class to a function that takes a reference to a base class by reference?
- The wisdom of seventh graders: What it means to be an adult
- Actually, FlagsAttribute can't do more; that's why it's an attribute
- Why doesn't String.Format throw a FormatException if you pass too many parameters?
- The wisdom of seve^H^H^H^Hsixth graders: What it means to be an adult
- Not beany enough
- SHCIDS_CANONICALONLY is the moral equivalent in the shell namespace of the Unicode ordinal comparison
- The great thing about regular expression engines is that there are so many to choose from
- Searching for Evil: Spot the scam
- How do you drop on the background of an Explorer window when it is in details view?
- Programming means that sometimes you have to snap two blocks together
- A burglar tells you the best place to hide your money
- When giving a presentation with a diagram, pretend the diagram doesn't exist
July 2009
- How organizations inadvertently confirm facts when they try not to
- What is the difference between Directory and DirectoryBackground?
- How do I quickly position two windows side by side using only the keyboard?
- What is the difference between CSIDL_DESKTOP and CSIDL_DESKTOPDIRECTORY?
- The advantage of knowing your limits of discrimination
- How do I put a window at the edge of the screen without triggering the automatic positioning behavior?
- Mr. Lee CatCam lets you see what a cat does all day
- How do I quickly position two windows side by side?
- Conway-Kochen Free Will Theorem: Lecture series
- Polling by sleeping versus polling by waiting with a timeout
- The guerilla wedding
- If you wished a language supported the preprocessor, you know, you can fix that
- Changes to the the 2009/2010 Seattle Symphony subscription season, part 2
- Your debugging code can be a security hole: Contest tickets
- I saw a fascinating documentary about bugs
- Microspeak: Whale Boy
- Proto-Microspeak: Coceptualize
- Why was MoveTo replaced with MoveToEx?
- The disembodiment of DIBs from the DIB section
- Caption contest: The pinball machine: Results
- Separating the metadata from the DIB pixels: Changing the raster operation
- On gender differences in expectations of thinness, and the impact on guys who live in their parents' basement
- Separating the metadata from the DIB pixels: Precalculating the BITMAPINFO
- What happens to your restaurant tip?
- The fun and profit of manipulating the DIB color table can be done without having to modify it
- Failed follow-up: The case of the dubious dental work
- Speculation on how a mishandled 13-character string can result in a blue screen
- The world reaction to the unexpected death of Michael Jackson extends to young children
- If dynamic DLL dependencies were tracked, they'd be all backwards
- Film students and The Bicycle Thief
- MS-DOS also allowed spaces in file names, although vanishingly few programs knew how to access them
- Up and down often substitute for compass directions, but you have to know when you've taken it too far
- Attack of the rogue feature: Oh no, where did my Explorer icon labels go?
- More musings on the peculiar linguistic status of languages acquired in childhood
- Command line parsers look at what you typed, not what what you typed looks like
- If somebody speaks a language I’m not expecting, sometimes I don’t understand it, even though I should
- A 32-bit application can allocate more than 4GB of memory, and you don't need 64-bit Windows to do it
- The most unwanted song ever
- Why does my screen go black when an emergency hibernation is in progress?
- Foreign languages can be used to impede communication
- You can use a Coke slogan as your password, but not a Pepsi one
- The New York Times says I'm doing it all wrong, but maybe that's for the better
June 2009
- 2009 mid-year link clearance
- Microspeak: The plan for the plan
- Learning to lie: Early forays
- If you want to consume all the virtual address space, well, then go ahead and consume it, you don’t need my help
- John Swansburg deftly declines the fine print disclaimer on his Heelys
- The thread that gets the DLL_PROCESS_DETACH notification is not necessarily the one that got the DLL_PROCESS_ATTACH notification
- News flash: Children are influenced by advertising
- First, try reading the error message, episode 2: Even programmers see error messages without reading them
- Spam trackback attack week 3 statistics
- Yet another experiment in motivating people to find and fix bugs
- Oh great, and my phone even has a CPU meter
- High school students guess what happens to money deposited into checking accounts
- Why does a flashing taskbar result in a fullscreen console returning to windowed mode?
- The butter and the money for the butter
- You can’t leave a critical section you never entered
- Don’t you hate it when someone leaks a ref to your clothes?
- The dangers of mixing synchronous and asynchronous state
- Welcome to Leavenworth, Washington’s faux-Bavarian village
- Sure, I can get spurious WM_MOUSEMOVE messages, but why do they keep streaming in?
- Management-speak: Upping the sats and stimulating the ecosystem
- Happening to be at the same post-concert restaurant as symphony performers
- Why do some file operations take file names and others take handles?
- A concrete illustration of practical running time vs big-O notation
- Fortune cookie fortunes are getting less and less interesting all the time
- Spam trackback attack week 2 statistics
- Why does Explorer use the term KB instead of KiB?
- Foreign languages can be used as a secret code, but it’s not always a good secret code
- Why does MS-DOS use 8.3 filenames instead of, say, 11.2 or 16.16?
- Mixed messages from the IT department regarding email safety
- On the importance of sanity-checking values where money is involved
- Why isn’t there a separate British English version of Windows?
- I’m sorry, Brian George, but we got cut off and I couldn’t call you back
- Bonus chatter about that virus that is responsible for the top six Explorer crashes
- Cool guys don’t look at explosions
- Why can’t I rotate the display with ChangeDisplaySettingsEx?
- Last tube standing: The Cardboard Tube Fighting League
- What does the “Zw” prefix mean?
- Spam trackback attack returns, it’s not a matter of whether but how much
- Who you calling boring?
- Whew, I’m not doing *that* again!
- Why does the CreateProcess function modify its input command line?
May 2009
- Lessons from the state police, like what to do when they pull you over
- Alternatives to using the #error directive to check whether the compiler even sees you
- An unexpected application of the First Law of Thermodynamics
- I’m sorry, you don’t have permission to know where this shortcut file should show up in the Explorer window
- Before designing and implementing around an assumption, it helps to check that your assumption is true
- How to hide privacy violations in a privacy disclosure statement, part 2
- What do you call a gadget that is used for debugging which looks at the properties of other gadgets?
- The latest installment of Wallace and Gromit coming to Seattle
- Why can’t you change the alignment of an edit control after it has been created?
- Chicken chicken chicken chicken
- If an event is signaled more than once, are they delivered in the order in which they were signaled?
- First, try reading the error message: Episode 1
- Signs that your new building was originally designed for another purpose: Rest rooms
- Just letting you know I had to reboot my telephone
- How do I know whether a window message was processed?
- Windows Vista User Experience Guidelines is online and downloadable
- Imagine our luck when we found one of the fancy conference rooms available for our meeting
- Parents billed when kids miss school: Pay for play
- Creating shortcuts in the same folder as the target isn’t as stupid as you may think
- People become more trustworthy the more you trust them
- Microspeak: T-shirt sizing
- How do I get a window back on the screen when it moved far, far away?
- Writing a sort comparison function, redux
- A puzzle: Why are so many fake LiveJournal blogs written by 29-year-olds?
- When you subclass a window, it’s the original window procedure of the window you subclass you have to call when you want to call the original window procedure
- You can tell which people listed blogging as a performance review goal
- The social skills of a thermonuclear device: Why did you hang up?
- The dummy icon that doesn’t know that its fifteen seconds are over
- When advanced users outsmart themselves: The device removal notification icon
April 2009
- Identity theft via repeated name changes
- Those notification icons, with their clicks, double-clicks, right-clicks… what’s up with that?
- Qrystal does more research into those spam blogs
- Why is there sometimes a half-second delay between the click and the action?
- A simple bar chart on letter distribution
- What kind of uncle am I?
- The Start menu pin list is just a list of items; there’s no magic
- No, we’re not nerds, why do you ask?
- Fashion is something that can be acquired by looking at lots of different fashions
- Why are there two values for PSH_WIZARD97?
- If you can’t find the statistics you want, then just make them up
- What structure packing do the Windows SDK header files expect?
- How to answer the telephone, according to the manual
- Principles of economics, translated
- The dangers of destroying a window while it is processing a sent message
- Why is the animation common control limited to RLE8-compressed animations?
- The frustration of people who are not interested in why something works but only interested in the magic phrase they need to type
- Taxes redux: You can’t open the file until the user tells you to open it
- Microspeak: The plate
- Why is there no support in the window manager for mouse button chording?
- When people ask to disable drag and drop, they often are trying to disable accidental drag and drop
- Being able to call a function without using GetProcAddress is not a security vulnerability
- Let GDI do your RLE compression for you
- Clap and the filter graph claps with you
- There’s nothing wrong with making bold treeview items
- On the almost-feature of floppy insertion detection in Windows 95
- Windows 95 almost had floppy insertion detection but the training cost was prohibitive
- Office redecoration: The classic Microsoft prank
March 2009
- 2009 Q1 link clearance: Microsoft blogger edition
- Freudian typo? The spinlock
- What is the implementation of WM_PRINTCLIENT?
- I drive a car the way most people use a computer
- The inability to lock someone out of the registry is a feature, not a bug
- Caption contest: The pinball machine
- Double secret auto-arrange probation
- What’s the point of the MoveWindow function when we already have SetWindowPos?
- How to write like Raymond: Intentional typographical errors
- Defense in depth means that you protect against exploits that don’t exist yet
- You can’t globally reserve screen space; you can put up signs, but if somebody ignores the sign you’ll have to decide how to respond
- Raymond’s highly scientific predictions for the 2009 NCAA men’s basketball tournament
- Well, duh, I’d sure better get my money back
- Overheard conversation fragment: Shrimp is not vegetables
- Why does the MoveWindow function let you suppress repainting?
- Raymond rewrites newspaper headlines, episode 2
- The perilous quandary of including external drivers on the Windows CD
- If Michael Jackson took up bhangra dancing
- Engineering is about tradeoffs: How hard will you work to save 68KB of disk space?
- Et tu, Fargo
- Sometimes people don’t even read what they’re typing
- The house no-electronics zone
- Why don’t the favorites I copy into the common Favorites directory show up in the Favorites menu of all users?
- Totally Recall: The meal
- Why doesn’t the MoveWindow function generate the WM_GETMINMAXINFO message?
- Why is the Win32 epoch January 1, 1601?
- Race you to the top: The Empire State Building Run-Up
- Fixups are not the same as rewriting code, they’re just fixups
- Microspeak: Year-over-year
- If Twitter is micro-blogging, then is what I’m doing macro-tweeting?
- Why is there a dry fountain in the Redmond North campus?
- Do QueryProcessCycleTime and QueryThreadCycleTime include cycles spent in kernel mode?
- The Suggestion Box is for suggestions, that’s why it’s called a Suggestion Box
February 2009
- What are your high school language students complaining about today?
- How does Raymond decide what to post on any particular day?
- Pressing a registered hotkey gives you the foreground activation love
- Star Trek meets The A-Team
- Smart quotes: The hidden scourge of text meant for computer consumption
- Rob Cockerham investigates those companies that pay cash for gold
- Email tip: Just because you get answers when you misuse a mailing list doesn’t doesn’t mean you should continue to misuse it
- Why is there no supported way to get the command line of another process?
- Announcements on the ferry, and hills that grew while I was away
- Foreground activation permission is like love: You can’t steal it, it has to be given to you
- Why do my file properties sometimes show an Archive check box and sometimes an Advanced button?
- Guest TCP psychic debugging: Why the remote server keeps RSTing the connection
- Another Seattle bus tool: One Bus Away
- Why doesn’t the file system have a function that tells you the number of files in a directory?
- Don’t keep track of information you don’t need
- The love bus, also known as Metro Bus Route number 308
- The checkbox: The mating call of the loser
- Superthunderstingcar is go!
- What does the COM Surrogate do and why does it always stop working?
- In order to serve you bett… wait, it really is better: Fuel surcharges
- If you get confused by a register dump, then you’ll just have to accept that some of my postings won’t make any sense
- A different type of writing exercise, this time in preparation for buying a house
- Changes to the the 2009/2010 Seattle Symphony subscription season
- What is the purpose of the RunAsCommand value?
- A process shutdown puzzle: Answers
- What the various registry data types mean is different from how they are handled
- Being lucky is observing what you weren’t expecting: An illustration
- What is the terminology for describing the various parts of the registry?
- The 2009/2010 Seattle Symphony subscription season at a glance
- Microspeak: Recommends (noun)
- Welcome to Groundhog Day, a holiday where the same thing happens over and over
- How do I programmatically show and hide the Quick Launch bar?
January 2009
- The problem with The Month Where Everyone Focuses on Improving Documentation is that most people are terrible technical writers
- Games to play at your Battlestar Galactica watching party
- A process shutdown puzzle
- The great thing about being popular is that everybody wants to see you go down
- When you have only 16KB of memory, you can’t afford to waste any of it on fluffy stuff
- There’s camping, and then there’s luxury camping, and then there’s ridiculous luxury camping
- Why can’t I see all of the 4GB of RAM in my machine?, redux
- I think I can read the bassoonist’s music from here
- But then we ran into problems when we started posting 10,000 messages per second
- Why can’t you apply ACLs to registry values?
- Why do I get the error REGDB_E_IIDNOTREG when I call a method that returns an interface?
- If you have full trust, then you can do anything, so don’t be surprised that you can do bad things, too
- If you didn’t like the answer, asking the same question again is unlikely to help
- May the Horse Be With You: Stories from the racetrack
- Why isn’t the screen resolution a per-user setting?
- You cannot pre-emptively reserve a file extension
- If you’re at a Thai restaurant with a Thai person who’s ordering food in Thai, and she asks you if you like your food spicy, think twice before answering
- What is this magic setting that synthesizes Unicode from non-Unicode?
- The day shell.windows.com went down
- Excessive speed appeared to be a factor in the crash
- Where does shell.windows.com get information about file extensions, and how do I get in on that action?
- xkcd breaks the news on the new Windows 7 user interface
- How does PostQuitMessage know which thread to post the quit message to?
- It’s surprising how suddenly those new skins started pouring in
- The programmers don’t design skins; they just make skins possible
- Raymond misreads flyers: A Taste of WWL
- When debugging a stack overflow, you want to focus on the repeating recursive part
- Microspeak: Learnings
- Not my finest hour: Misreading a product label
- Even if you have code to handle a message, you’re allowed to call DefWindowProc, because you were doing that anyway after all
- Kids love cake, but that doesn’t make them good judges of cake
- Why doesn’t Windows 95 format floppy disks smoothly?
- Follow-up: A new DUI record set in the state of Washington
- How do I write a program that can be run either as a console or a GUI application?