Click here to Skip to main content
Email Password   helpLost your password?
Friendly Url http://www.codeproject.com/Members/Michael-Dunn
Status Platinum. Member No. 152     
Awards 31 Dec 2009: CodeProject MVP 2010
31 Dec 2007: CodeProject MVP 2008
19 Mar 2007: Best C++/MFC article of Feb 2007
25 Feb 2007: All Topics Jan 2007
31 Dec 2006: CodeProject MVP 2007
31 Jan 2006: MFC/C++ Jan 2006
31 Dec 2004: CodeProject MVP 2005
29 Sep 2003: MFC/C++ Aug 2003
29 Mar 2003: MFC/C++ Feb 2003
30 Oct 2002: MFC/C++ Sep 2002
Questions & Answers
Messages Posted 12,632 - Fixture
Articles / Tech Blogs Articles: 63   - Legend
Tips/Tricks Posted
Biography Michael lives in sunny Mountain View, California. He started programming with an Apple //e in 4th grade, graduated from UCLA with a math degree in 1994, and immediately landed a job as a QA engineer at Symantec, working on the Norton AntiVirus team. He pretty much taught himself Windows and MFC programming, and in 1999 he designed and coded a new interface for Norton AntiVirus 2000.
Mike has been a a developer at Napster and at his own lil' startup, Zabersoft, a development company he co-founded with offices in Los Angeles and Odense, Denmark. Mike is now a senior engineer at VMware.

He also enjoys his hobbies of playing pinball, bike riding, photography, and the occasional 360 or MAME game (current favorite: Space Invaders Extreme). He would get his own snooker table too if they weren't so darn big! He is also sad that he's forgotten the languages he's studied: French, Mandarin Chinese, and Japanese.

Mike was a VC MVP from 2005 to 2009.
Location United States United States
Job Title Software Developer (Senior)
Company VMware
Member since Thursday, July 06, 2000
(9 years, 7 months)
  
Homepage http://michaeldunn.info

Below is the list of groups in which the member is participating


CodeProject Insiders


Member

Location: United States United States
The Reputation graph is a beta-only release. Read the FAQ for more information.

Membership status calculated as follows:

1-4 articles posted = Bronze. 5-14 articles = Silver. 15-24 articles = Gold. 25+ articles = Platinum. Each 500 messages posted adds one level, and if a member has posted a message then each year of membership adds 1 level until the member hits Silver. Bronze is awarded at the beginning of the first 500 messages posted instead of the end.
You must Sign In to use this message board.
 
 
 FirstPrevNext
GeneralBlast from the Past: Ten Years Ago Pin
Michael Dunn
Friday, May 21, 2004 9:46 PM
Or, How to Make Your Audience Feel Old in Ten Easy PowerPoint Slides.

A couple days ago at work the dev team and some management had a long meeting with some Longhorn evangelists from MS. The evangelists' job is basically to get other companies to write software for Longhorn to be ready for launch. It's the equivalent of, say, Sony going to video game companies to get them to write launch titles for the next PlayStation.

This isn't a Longhorn post though, it's a historical post. At the beginning of the presentation, the first evangelical speaker went through a "ten years ago" section. He listed the goals MS had ten years ago with Windows 95. The biggies were run on affordable hardware (meaning 386s), run Win16 and DOS programs, and the ultimate goal, "A PC on every desk".

Now, aside form thinking "damn I'm old, I remember all that", I got to thinking that was a pretty remarkable feat to get a Win32 OS, with memory protection (even if it was only for 32 bit code), device drivers, VxDs, DOS compatibility, long filenames on FAT, and so on and so on... get all that running on a 386 machine that had less RAM than your current hard drive's cache.

My first PC was a P120 with 24 MB and man did Win 95 fly on that thing. Wink

--Mike--
Personal stuff:: Ericahist | Homepage
Shareware stuff:: 1ClickPicGrabber | RightClick-Encrypt
CP stuff:: CP SearchBar v2.0.2 | C++ Forum FAQ

----
Actual sign at the laundromat I go to: "No tinting or dying."
 
GeneralPreview of new CP Search Bar Pin
Michael Dunn
Thursday, May 20, 2004 8:03 PM
I've been sitting on this release for quite a while because I haven't wanted to update the SearchBar article to describe the new features. I've gotten burned out on writing, as evidenced by the 8 months since my last article[^]

I just remembered that I have this blog thingy Wink and I can put up pre-release stuff for anyone who wants to see the new features and happens to read this.

The big new feature is a signature manager. I know there are already a few of those, however AFAICT they all require you to have VC 7.x installed because they use a DLL that comes with VC. Since I don't use VC 7 (I actually installed it at home a couple weeks ago [but that's for another entry]) and since I'm a native code guy, I wanted to have a normal C++ signature tool.
The good news is that I use an XML file in the same format as the existing sig managers, so if you use another one, you can import your sigs into the SearchBar.

To use the new SearchBar, install the current version from the SearchBar article[^]. Then grab this zip file[^] and extract the DLL over the one you just installed.

Go to the options and there's a new Signatures tab:
 
Hopefully this is self-explanatory. Wink When you hit Ctrl+Shift+Space on a posting page, there are signature commands on the Commands submenu.

Let me know how y'all like this.

--Mike--
Personal stuff:: Ericahist | Homepage
Shareware stuff:: 1ClickPicGrabber | RightClick-Encrypt
CP stuff:: CP SearchBar v2.0.2 | C++ Forum FAQ

----
Pinky, are you pondering what I'm pondering?
I think so Brain, but if we shaved our heads, we'd look like weasels!

 
GeneralThe first Great Ad Banner Controversy Pin
Michael Dunn
Saturday, May 15, 2004 8:04 PM
With the recent Ad Banner SnafuTM I thought I'd do a little historical post.

Some time ago (a couple years at least), a lot more HTML was allowed in posts, including script. Some people used this to do neat sigs, like David Wulff with the anger/humor/sincerity scales. But of course, some a-holes always have to ruin it for everyone and exploit it.

That's what happened here. Someone made an account and put some script in the signature. The script changed the properties of the ad banners to point to their own banners, which were (naturally) for some adult chat site. When you viewed one of their posts, the HTML in the sig was parsed and the script ran, which switched the banners.

After that happened, Chris tightened up the restrictions on what tags are allowed in posts.

--Mike--
Personal stuff:: Ericahist | Homepage
Shareware stuff:: 1ClickPicGrabber | RightClick-Encrypt
CP stuff:: CP SearchBar v2.0.2 | C++ Forum FAQ

----
Pinky, are you pondering what I'm pondering?
I think so Brain, but how will we fit the hamster inside the accordion?

GeneralRe: The first Great Ad Banner Controversy Pin
Paul Watson
2:21 17 May '04  
 
GeneralHow to keep yourself occupied when you're sick Pin
Michael Dunn
Thursday, May 13, 2004 12:37 AM
It's 2 AM and due to this stupid cold, I can't sleep. Mad Since I've been stuck at home the past couple of days, I've gotten some time to play one of my all-time favorite games (thanks to MAME):
 
Block Out[^], a Tetris-style game viewed from overhead. It's intensely challenging once you get to level 15 or so. Of course, being sick has dulled my 3D spatial recognition skillz a bit... Wink

--Mike--
Personal stuff:: Ericahist | Homepage
Shareware stuff:: 1ClickPicGrabber | RightClick-Encrypt
CP stuff:: CP SearchBar v2.0.2 | C++ Forum FAQ

----
You cannot truly appreciate Dilbert unless you've read it in the original Klingon.
 
GeneralMy First Article Pin
Michael Dunn
Saturday, May 8, 2004 6:05 PM
On a whim, I went over to that other programming article site[^] because I wondered if my articles were still up there. It turns out they are, all three of them.

The first was Most Recently Used List in a Combobox[^] and to give you an idea of how old it is, the screen shot shows that I had Win 98 installed into "C:\chicago". ("Chicago" was the MS codename for Windows 95 and I often installed the OS into "C:\chicago" for testing; putting the OS in a directory with a name different from the default is a good thing to do when you're in QA.)
 

I haven't read the article... I don't want to see how bad my writing style was back then. D'Oh!

[The article is here on CP[^] too Wink]

--Mike--
Personal stuff:: Ericahist | Homepage
Shareware stuff:: 1ClickPicGrabber | RightClick-Encrypt
CP stuff:: CP SearchBar v2.0.2 | C++ Forum FAQ

----
Laugh it up, fuzzball.
GeneralRe: My First Article Pin
Mr.Prakash
5:36 9 May '04  
First[^] article that I read written by you Smile


I'll write a suicide note on a hundred dollar bill - Dire Straits

 
GeneralWhat's an "Ericahist"??? Pin
Michael Dunn
Friday, May 7, 2004 1:23 PM
It was a running joke. A while ago (on the order of years) there was a Lounge thread about The MSDN Show[^] (now The .Net Show) and Erica Wiechers, who is on the show for a couple of segments. Being guys, we naturally started talking about her good looks. (This was back when Lounge traffic was much less than it is now, so the thread hung around for a while.)

The next month, when the new show came out, I posted a screen cap of Erica, again so we could talk about her good looks. Some else did it the following month, and then I had an idea. Some people keep a "sighist", a history of their funny or witty signatures. So I made the Ericahist, a history of Erica's outfits from various shows.

--Mike--
Personal stuff:: Ericahist | Homepage
Shareware stuff:: 1ClickPicGrabber | RightClick-Encrypt
CP stuff:: CP SearchBar v2.0.2 | C++ Forum FAQ

----
"How does one know if one's aura is dirty? Does someone come along with their finger and write "wash me" on it?"
  -- Buffy

GeneralRe: What's an "Ericahist"??? Pin
Hockey
2:32 18 May '04  
GeneralRe: What's an "Ericahist"??? Pin
Michael Dunn
21:43 20 May '04  
 
GeneralWhat blogs do I read? Pin
Michael Dunn
Friday, May 7, 2004 12:58 PM
I've never been much of a web reader, I only regularly read a few sites like:
CodeProject[^] Wink
Homestar Runner[^]
ISCA BBS[^]
Alyson Hannigan Corner[^]
Astronomy Picture of the Day Archive[^]

As for blogs, I started with Raymond Chen's[^] (which was great at the beginning, he talked about historical stuff in OS development; still good now because he doesn't talk about much .NET stuff, which is refreshing), then gradually found other MS bloggers that were interesting. Here's an OPML file of my current reading list (not all the blogs are very active).
Other good blogs are Eric Lippert[^], Larry Osterman[^], and Sara Ford[^]

(Before you ask, Erica does not have a blog AFAIK; Robert Hess posts occasionally on the .NET Show blog[^] though.)

[edit]
BTW, I use SharpReader as my aggregator. I went through a couple of others but didn't like them, finally I tried SharpReader and it fits my needs well enough. I'm too lazy to keep going and find That One Perfect Aggregator. Wink
[/edit]

--Mike--
Personal stuff:: Ericahist | Homepage
Shareware stuff:: 1ClickPicGrabber | RightClick-Encrypt
CP stuff:: CP SearchBar v2.0.2 | C++ Forum FAQ

----
Pinky, are you pondering what I'm pondering?
I think so Brain, but if we shaved our heads, we'd look like weasels!

Windows troubleshooting: Reboot first, ask questions later.
GeneralRe: What blogs do I read? Pin
Colin Angus Mackay
13:56 8 May '04  
 
GeneralStatic linking to the CRT Pin
Michael Dunn
Saturday, May 1, 2004 10:19 AM
Over on Larry Osterman's[^] log (he's on the Exchange team) we were discussing which version of the CRT to use[^].

There are two schools of thought. The MS view is that they trust installers to never mess up someone's system so the exact correct versions of all DLLs will always be present; as a result you can always link to the CRT DLLs and get several benefits, most notably less physical memory usage due to the DLL being shared among processes, and fewer heaps in each process.

My view, as a programmer in the real world (not MS's world where they control everything) is that people's systems (especially 9x) get munged by bad installers or other accidents. If someone has a wrong/missing/corrupted DLL, it can cause my app to crash or misbehave, and guess who gets blamed for that? Me, not MS. Guess who loses sales because of it? Me, not MS.
Therefore I always use the static LIB version of the CRT in every one of my apps. If I lose any sales due to bugs, I can at least say it was my fault, not the system's. Wink

--Mike--
Personal stuff:: Ericahist | Homepage
Shareware stuff:: 1ClickPicGrabber | RightClick-Encrypt
CP stuff:: CP SearchBar v2.0.2 | C++ Forum FAQ

----
Kosh reminded me of some of the prima-donna programmers I've worked with. Knew everything but when you asked them a question; never gave you a straight answer.
  -- Michael P. Butler in the Lounge

 
GeneralIt seems like just yesterday... Pin
Michael Dunn
Friday, April 30, 2004 10:33 PM
I was listening to the news on the radio whilst driving home tonight, and the girl reading the news did a list of "this day in history" items. One of them was in 1992, the Rodney King riots started.

I almost drove off the road when I realized that was twelve years ago. OMG I can remember it like yesterday, I was on campus at UCLA working in one of the computer labs when I first heard about the riots starting. The following days were pretty bad and the air smelled like smoke due to all the idiots setting stuff on fire.

--Mike--
Personal stuff:: Ericahist | Homepage
Shareware stuff:: 1ClickPicGrabber | RightClick-Encrypt
CP stuff:: CP SearchBar v2.0.2 | C++ Forum FAQ

----
Kosh reminded me of some of the prima-donna programmers I've worked with. Knew everything but when you asked them a question; never gave you a straight answer.
  -- Michael P. Butler in the Lounge

GeneralRe: It seems like just yesterday... Pin
Uwe Keim
22:54 13 May '04  
 
GeneralHow to find the text under the cursor (sometimes) Pin
Michael Dunn
Saturday, April 24, 2004 2:38 PM
This will definitely go in the FAQ[^] next time I get around to updating it...
From RaymondC's blog[^], How to retrieve text under the cursor (mouse pointer)[^]

In short, if the cursor is over something that implements the accessibility interface then you can read its name and value properties using an accessibility API, AccessibleObjectFromPoint(). Try out the sample code in the entry, it's neat.

--Mike--
Personal stuff:: Ericahist | Homepage
Shareware stuff:: 1ClickPicGrabber | RightClick-Encrypt
CP stuff:: CP SearchBar v2.0.2 | C++ Forum FAQ

----
"That probably would've sounded more commanding if I wasn't wearing my yummy sushi pajamas."
  -- Buffy

 
GeneralBuffer overruns explained Pin
Michael Dunn
Friday, April 23, 2004 6:36 PM
Note: I've copied this post here from its original location[^] to give it (hopefully) better visibility.
Buffer overruns are possible because on x86 there are not separate categories of "readable memory" and "executable memory". If a block of memory has one permission, it has the other. They also work because a thread's local variables and return addresses are in the same area of memory, its stack.

Here's a typical stack with the default size of 1 MB, after one function call. Note how the stack grows down from high addresses towards low addresses.
0                         100000
+--------------------------+
| <unused>|<vars>|<retaddr>|
| | | 40AE |
+--------------------------+
^ top of stack
That indicates that when the current function returns, control resumes at address 0x40AE. Now after a few calls, the stack will have a few layers of that:
0                                                         100000
+------------------------------------------------------------+
| <unused>|<vars>|<retaddr>|<vars>|<retaddr>|<vars>|<retaddr>|
| | | 4E33 | | 4AD1 | | 4F10 |
+------------------------------------------------------------+
^ top of stack
Now lets say the current function declares a char[10] array as its only local variable. That array is denoted by asterisks:
0                             
+-------------------------------
| <unused>|<vars> |<retaddr>| ...
| |**********| 4E33 |
+-------------------------------
^ top of stack
If the function blindly strcpy's an input string (from say, the network) into that buffer, without checking the length of the source string, it will write past the end of the array, over the return address. The copied bytes are denoted by $:
0                             
+-------------------------------
| <unused>|<vars> |<retaddr>|
| |$$$$$$$$$$$$$$$$$$$$$$$ ...
+-------------------------------
^ top of stack
All a hacker has to do is figure out what to use as the $$$ to change the overwritten return address to be an address within the $$$ itself. Since the $$$ is the malicious data, the hacker has control over it.
0                               7AE1                 100000
+------------------------------+---------------------+
| <unused>|<vars> |<retaddr>| |
| |$$$$$$$$$$| 7AE1 $$$$$$$$$$$$$ ... |
+----------------------------------------------------+
^ top of stack
When the function returns, the thread reads its return value, which has been changed to point to within the $$$. Now the hacker has made the thread execute memory that he planted in the stack. If that thread happens to be running in a powerful account (like Admin or Local Service), bingo, your box is 0wn3d.

--Mike--
Personal stuff:: Ericahist | Homepage
Shareware stuff:: 1ClickPicGrabber | RightClick-Encrypt
CP stuff:: CP SearchBar v2.0.2 | C++ Forum FAQ

----
"Linux is good. It can do no wrong. It is open source so must be right. It has penguins. I want to eat your brain."
  -- Paul Watson, Linux Zombie

 
General*drool* (Alyson) Pin
Michael Dunn
Saturday, May 10, 2003 3:43 PM
Whoa boy. The June 2003 FHM (US edition of course) has some pics of the Buffy girls. New pics of Alyson. *drool* All I can say is DAY-UM.

Check out some scans here[^] (not safe for work)

[edit]The pics are gone now Cry The site had to take down a lot of its galleries due to its popularity and the resulting bandwidth costs.[/edit]

--Mike--
Ericahist | Homepage | RightClick-Encrypt | 1ClickPicGrabber
"You have Erica on the brain" - Jon Sagara to me

GeneralRe: *drool* (Alyson) Pin
Rickard Andersson18
22:45 21 May '03  
GeneralRe: *drool* (Alyson) Pin
Michael Dunn
7:44 22 May '03  
GeneralRe: *drool* (Alyson) Pin
IrvTheSwirv
4:34 30 May '03  
GeneralRe: *drool* (Alyson) Pin
Michael Dunn
8:13 30 May '03  
GeneralRe: *drool* (Alyson) Pin
peterchen
7:54 7 Sep '03  
GeneralRe: *drool* (Alyson) Pin
Michael Dunn
16:45 8 Sep '03  
GeneralRe: *drool* (Alyson) Pin
Brian Delahunty
3:40 26 Oct '03  


Last Updated 9 Feb 2010 | Advertise | Privacy | Terms of Use | Copyright © CodeProject, 1999-2010