Glass houses are great places to throw stones


Whenever I write an article explaining that programs should avoid doing X, I can confidently rely on a comment saying, "Well, Microsoft Product Q does this!" as if to say, "Gotcha, you hypocrite!"

But they're saying "gotcha" to the wrong person. Because, and I'm sure it's a shock to many people to read this, I did not personally write every line of software Microsoft ever produced. (And even if I did write it, I may have written it as a younger developer, before I learned about said rule. Because, and I'm sure this is also a shock to many people, I was once a beginner, too.)

If you find a Microsoft product breaking a rule, then go complain to that product team. Complaining to me won't accomplish anything. I don't have access to their source code, and even if I did, I certainly don't have permission to go in and make changes to their code, nor do I have the time to go in and learn how their product works and figure out the right place to make the fix. Furthermore, and I don't know if you all can handle three shocking revelations in one article, product teams do not send me every line of code for review.

Indeed, one of the reasons I write here about things programs should or shouldn't do is because I myself will see a Microsoft product breaking a rule! By discussing the problem here rather than in an internal mailing list, the information gets out to everybody. And maybe, just maybe, the product team will read the entry and say, "Oops, I think we do that." Because (shocking revelation number four) not all Microsoft programmers are seasoned experts in Win32 user-interface programming.

(Articles where I was consciously tapping my colleagues on the head include my discussion of CallMsgFilter, the long and sad story of the Shell Folders key, and reminding you to pass unhandled messages to DefWindowProc. In fact, for every "do/don't do this" article, I'd say odds are good that with enough searching, you can find a Microsoft product that breaks the rule. And when you do, complain to that product team. Even the difference between the tray and the notification area was in part a response to all the other groups that perpetuate the misuse of the terminology.)

So when I write something like, "Applications shouldn't do this", go ahead and insert the phrase "and this means all applications, including those published by Microsoft." When I write, "some annoying programs", go ahead and insert the phrase, "which might even include programs published by Microsoft". I'm not going to insert those phrases into every sentence I write. I'm assuming you're smart enough to realize that general statements apply to everyone regardless of who signs their paychecks.

Of course, if the consensus of my readership is that I shouldn't tell you not to do things until every last Microsoft product has been scoured to ensure that none of them violate that rule either, then I can abide by that decision. I'll just stop posting those tips here and keep them on the internal mailing lists. It's much less work for me.

Comments (105)
  1. Tone says:

    I appreciate these postings and would like to see them continue.

  2. Cody says:

    Agreed.  You do us all a service, Raymond, and you must remember that no good deed goes unpunished.

  3. charless says:

    Raymond,

       Ditto, the previous two comments. But I did want to stand up and be counted. Keep up the good work.

  4. MLetterle says:

    Raymond,

    Ignore the whiners and keep the information flowing.  If your 3rd-party developers know the right way to do things it makes Windows look that much better.  Of course the 1st party developers do need to be whipped into shape too, so get to the beatings!

  5. Tom says:

    I love your articles on how not to do things.  As someone who has recently starting investigating Win32 it’s a Good Thing(TM).

    Regarding telling the product team about bugs/complaints, I would love to, but it, too, seems a difficult task.  Example: I applied the latest security patch to Windows Media Player 9 and now I can only run WMP with administrator rights — makes it hard to use in a LUA (Limited User Account).  I searched Microsoft.com to find a place to submit a bug report (without having to pay money to do so), but after two hours I gave up and switched to using Winamp.

    [That’s the part that confuses me. “I can’t find the right person to report this to, so I’ll report it to the wrong person.” All that’s going to happen is that the person will say, “Sorry, wrong person.” -Raymond]
  6. Peter Ritchie says:

    I fourth that. (unless there’s others in the queue that haven’t displayed yet :-)

    Keep up the good work, Raymond.  Some people are incapable of directing their emotions in the right direction and are too lazy to find the correct place to rant.

  7. Tom M says:

    OT I know, but just who is it that owns the "Good Thing" trade mark, and do they get any royalties?

  8. Mal says:

    I find this to be one of the most interesting and informative websites on the internet, and I’ve learned a great deal about best practices and common errors over the course of the last 3 years.

    It seems almost inevitable that those with an axe to grind are most vocal in these comments, so I would like to thank you for the time you spend writing it all down and publishing it for everyone’s benefit. Long may it continue!

  9. Clifton says:

    Shocking revelation number five – I bet most readers who appreciate the informative and insightful postings here don’t post comments.

    So, put me in the "keep up the good work" pile.  The whiners can just talk to the (withered) hand.

  10. Lionell Griffith says:

    I have been developing Windows software since the intro of Windows 3.1.  I say keep it up.  The information is valuable even to this old timer.

  11. mastmaker says:

    Well said, Raymond!

    I too was pretty wary of this ‘Bad news? let us nuke the messenger!’ mentality.

  12. James Risto says:

    Yes, for every one of those responders that think that MS is still that "gang of seven" photo, there are many many of us that shut up and learn how stuff happens in a huge dev shop with legacy and other concerns. Please continue on, oldnewthing!

  13. brij says:

    Agreeed ! Programming is an art that is supposed to be learnt by discipline…. Rules that we come to know later… must be followed religiously…i started my first Job around a year ago.. with an ex. MS employee, and he somehow poured all his programming disciplines into me during this time….Keep posting…good job.

  14. Steve Loughran says:

    Hey, I am one of the people who gives you a hard time. I used to do a lot of win32 dev, as you may recall from the old programmer.win32 newsgroup, now its mostly java on linux. But I still have to use a windows laptop, I still have to deal with the people who can’t stop the windows explorer delete action from failing if the explorer has the directory you are trying to delete open. Presumably they are a different team from whoever tries to get explorer to update its directories in the main thread, bringing it screamingly to a halt when the remote server is offline. but I dont know the URLs or the email addresses of those people, all we get is you, telling us developers off.

    Speaking of which, have you looked at iTunes from a criticism perspective. It does everything you dont want. A new service, installed in a dir with everyone rights -there’s your privelege escalation hole. New stuff installed in the Windows/CurrentVersion/run regkey, even if you dont need it. They even manage to make a mess of the java CLASSPATH environment variable, in a desparate attempt to make java on windows look worse than java on macos.

    And they dont pass messages down properly. Set itunes up to minimise to the systray, and when they get a minimise request they ::ShowWindow(hMainWind,SW_HIDE) without passing the WM_MINIMIZE down. The result is that the footprint of the minimised app is still the bloated 40+MB that marks it as overweight as outlook.

    keep up the good work, but dont expect an easy time of it.

    -steve

  15. Sena says:

    Please don’t stop. Your posts are most informative. It’s a must read every day for me.

  16. Miles Archer says:

    You don’t expect the wining to stop, now that you’ve posted this explanation, do you? ;-)

  17. zahical says:

    Just wanted to say that even when I say "I don’t have time for anything" I still manage to find a little time to read your blog.

    Keep up.

  18. Sean says:

    Whoooaaa!! Too many shocking revelations in one post.  Seriously, though – keep up the good work – from another silent reader.

  19. KiwiBlue says:

    [quote src="Steve Loughran"]Presumably they are a different team from whoever tries to get explorer to update its directories in the main thread, bringing it screamingly to a halt when the remote server is offline. but I dont know the URLs or the email addresses of those people, all we get is you, telling us developers off. [/quote]

    [quote src="oldnewthing"]Complaining to me won’t accomplish anything.[/quote]

    I guess the only option is to find these URLs and email addresses. Unless you get a emotional kick out of posts like that. You know, like "look at me, I’ve shown these M$ ba$tards how crappy is their software".

  20. Keithius says:

    Add me to the pile of people who love what you write, but never post comments.

    Keep it up! You’re doing great!

  21. Adam says:

    Well, as one of the whiners, I suppose I ought to take this as an opportunity to apologise.

    The thing is, if I stop to think about it, I already know everything that you’ve mentioned above. When you post about something that seems absurd, I realise that it nearly always wasn’t your decision to make it that way, and that there would have been a number of factors in the design (or lack of :) – such as bug-for-bug backwards compatibility – that made it a reasonable thing to do at the time. And similarly for implementation mistakes, etc…

    But once it’s brought up, it’s hard not to whin^H^H^H^Hrant. And because it’s you that’s brought it up, it’s really hard not to direct flam^H^H^H^Hcomments your way. :)

    But, I’m going to try a bit harder.

    Because, when it comes down to it, I find your posts informative, I thoroughly enjoy reading them, and I’d be really disappointed if they stopped. I’d rather bite my tong^H^H^H^Hfingers (!) than not have this to read.

    Keep up the good work.

  22. Koro says:

    You rule, I have learned lots of interesting things thanks to you, keep up the good postings! :)

    – Another reader that [almost] never posts

  23. Erbo says:

    Raymond, I’d hate to see these posts stop.  You know more about the tricky ins and outs of Windows programming than most any three guys that I could pick.  Even though it’s been a long time since I touched Windows development, it’s still interesting to read.

    By the way: Have you ever considered writing a book?  Something like "Raymond Chen’s Dos and Don’ts of Windows Programming"?  I bet it’d sell…

  24. FusionGuy says:

    Your informative blog is the only reason lunch isn’t boring anymore!

  25. Please don’t let a few bad apples get you down.

    I love these posts and it helps a lot of people quickly learn what would otherwise be missed or spent hours on, laboriously trying to figure out with the debugger.

  26. richard says:

    Hmmm … a bit tetchy this morning?

    It should be obvious to anyone that Microsoft is a bit larger then 3 developers hacking away on a bit of code.

    If you have several different projects and teams, the quality of the work will vary depending on experience and familiarity with the target in question. Not only that, but how many people have their code rigorously peer reviewed by several sets of eyes to ensure it (1) meets coding standards, (2) is comprehensible, (3) robust, (4) extensible?

    On the other people llike to wallow in conformity and not stick their necks out – everybody seems to like to point and say: "Look, they do it that way." To which I reply, "Oh, look! They are jumping off bridges. Please hurry and join them."

  27. Cody says:

    Is everyone else also rather sad that this announcement means there’s only one blog post today rather than two — And that it’s not the usual funny/informative post?

  28. dislyxec says:

    Think of it this way: those users will point out the examples for you so that you don’t have to go around looking it up and calling them out on it.

  29. Anonymous Idiot says:

    You could always just disable comments. We readers would still get your insights and you could post in peace.

  30. JP says:

    I, like many others am a silent reader and get a lot of good information from your blog.  Please don’t let a few whiners stop you from sharing your knowledge.  

    Please keep posting.

  31. Rob says:

    I’m one of the silent majority that appreciates this a lot but doesn’t say anything. I think it would sound pretty inane if I said "geez, this is really neat" two or three times a week.

    This appreciation manifests in me talking a lot less smack about Microsoft than I would otherwise. Before I started this job and reading this blog I had never used the Win32 API or COM before, and the learning curve on both is, well, pretty rough. Rather than just cursing them for three hours every afternoon, reading the insight here helps me understand some of the thought that went into these tools.

  32. Raymond,

    pls. keep on posting these goodies.

    WM_THX

    thomas woelfer

  33. Mihai says:

    "shouldn’t tell you not to do things until every last Microsoft product has been scoured to ensure that none of them violate that rule either"

    I have nothing against having my applications doing better than the MS ones :-)

    "I’ll just stop posting those tips here and keep them on the internal mailing lists"

    Please continue :-) In fact, you know what you do is good and usefull. Hope you only have a bad day. It will go away :-)

    Thanks for all the good info.

  34. InkaCoder says:

    Please, please keep posting about these issues. I for one greatly appreciate those precious nuggets you give us.  We all know that a significant area of the developer community has bad feeling towards your employer for whatever reasons.  Do not let these ill comments deter you from disseminating the information to the part of the community that welcomes it.

  35. Stefan Kuhr says:

    Hau’ rein, Raymond, keiner kann es besser! Pfeif’ auf die Klugscheißer!

  36. Gabe says:

    You know, I think it would be a good idea for MS to hold seminars for their less-experienced devs, with the actual authors/designers/experts for the APIs in question giving all the important details that anybody using the system should know.

    I know they have How Not To Do Security classes ever so often, and it seems they could benefit from having How Not To Do Win32, How Not To Do COM, etc.

  37. J says:

    Raymond, I love reading your blog, but frankly a whiny blog post about blogging is a) not going to stop anyone from complaining to you and b) marring the quality of your blog.

  38. Well, I’m going to have to come down on the side of "You should stop posting until Microsoft fixes everything, or at least gives you access to every line of code and the mandate to fix all of it," because nobody else has.

    It would just be silly to have a completely one-sided vote.  People would complain about vote-rigging later.

    So, there you go.  You’re responsible for every line of code that’s come out of Microsoft, and you can’t ever say things that, while entirely true, aren’t nice about stupid coding practices until every product to come out of Microsoft (even the discontinued ones) is bug free.

  39. ::wendy:: says:

    I love it when you ‘talk back’ to your readers and do it so sensibly.  Sensible Raymond.

  40. random dev says:

    One thing that always strikes me about dealing with the public is how many unreasonable, whiny, assholes there are wandering around. I guess when they’re showing up at your blog, it’s harder to see how tiny a minority they are.

    I know your articles have saved me at least once, so please don’t let the Slashdot crowd wear you down.

  41. I think you fell into a trap that catches a lot of bloggers.  You listen too closely to the comments.  It is admirable, but I don’t think you need to address complaints raised by isolated commentors in the forum of your main articles.  

    Most people read only the main articles of a blog by far, especially us RSS aggregator users.  Thus we don’t see the (often unwarranted) whining and sniping in the comments about the articles in the blog.

    It’s tough to let go the negative thoughts of people and choose not to use the power of your voice you’ve developed through diligent work to refute them.  Even so, I think it is almost certainly the correct course of action.  As I said, most people will never see the negative comments.  Of the few who read the comments, most people can spot a whiner, so they have already discounted the comments and the commentor.  Main articles to address comment whining confuse people like me who typically only pay attention to the persons we choose to trust, and you won’t be able to convince a whiner to stop whining.

    Just my two cents…

  42. Maarten says:

    /me pets Raymond, your blog is a nice read :)

    But! You still need to add that warning in the registry (as per: http://blogs.msdn.com/oldnewthing/archive/2003/11/03/55532.aspx#55549) because Vista beta 2 doesnt have it yet :P

    [Look for it in build 5426. -Raymond]
  43. Erwin Alva says:

    Keep those snippets coming! :-)  If only your readers can "bury" comments just like what digg does…

  44. Pete R. says:

    This is one of my favorite blogs.  Now that you’ve reached 40+ comments, most of them encouraging, you probably don’t need another encouraging one, but… I’ll do it anyway.

    I read this blog daily, always enjoy it, but only once posted a comment prior to this one.  I hope you continue, and I hope people think twice before posting stupid comments.

    I’d suggest disabling comments, but sometimes the comments are insightful, and often your responses to comments (in trademark yellow boxes) are valuable.  So I don’t want to see comments disappear either.  I’ll take whatever you are willing to offer, though.

    So yeah, not adding anything new, just adding another voice to the normally quiet chorus of fans.

  45. SS says:

    Your blogs are far more educative than a lot of books put together. Your writing style is concise and to the point. You separate the wheat from the chaff. So please continue to do the good work. In fact Microsoft should pay you for this.  

  46. J (the original one) says:

    Here’s my vote of support, too.  Nothing else to say that hasn’t already been said, but I understand how occasionally everyone could use some positive re-enforcement to counter the extremely vocal minority.

  47. Brian says:

    If a comment were meant only for you, it would make more sense to email it to you.  Often times, a comment posted here is meant for anyone who happens to read your page.  For example if someone were to say, "MS Office has this bug", he would be saying it to any MS office team member that happens to be reading this page.  Given the popularity of your site, it’s probably a good assumption that an office team member will read it.

  48. Pavel Lebedinsky says:

    Set itunes up to minimise to the systray, and

    >when they get a minimise request

    >they ::ShowWindow(hMainWind,SW_HIDE) without

    >passing the WM_MINIMIZE down. The result is

    >that the footprint of the minimised app is

    >still the bloated 40+MB that marks it as

    >overweight as outlook.

    They probably did this on purpose:

    http://support.microsoft.com/kb/293215/en-us

    It’s arguable whether trimming on minimize makes sense or not (Vista doesn’t do this anymore by the way, but it also has other changes in memory management that made trim on minimize unnecessary).

  49. Nathan says:

    "Though if you aren’t directing them at me, why are you posting the question on my web site?"

    Because you raise discussion points, and the evangelist in many of us compels us to point out "hey guys, there are other options". We dont expect you to listen, or even care what we say.

    As a whiner (at least in theory,  I rarely make a post) – I do enjoy your blog its informative. When I’m stuck using Windows for whatever reason, its nice to know why <random-broken-functionality> occurs. I can’t fix it, but at least I can avoid it.

  50. Kuwanger says:

    ‘If you find a Microsoft product breaking a rule, then go complain to that product team.

    Indeed, one of the reasons I write here about things programs should or shouldn’t do is because I myself will see a Microsoft product breaking a rule! By discussing the problem here rather than in an internal mailing list, the information gets out to everybody. And maybe, just maybe, the product team will read the entry and say, “Oops, I think we do that.”‘

    Given that you expressly post at least some blog entries because some Microsoft product doesn’t follow a rule, why exactly are you miffed when someone points out a Microsoft product that doesn’t follow a rule?  Further, if the posted comment isn’t a snarky “ha ha”, aren’t the comments, like you suggested for the blog itself, yet another way for other Microsoft developers who view your blog to go “hey, we violate that”?  Your example link of “Well, Microsoft Product Q does this!” was far from snarky, IMHO.

    ‘Of course, if the consensus of my readership is that I shouldn’t tell you not to do things until every last Microsoft product has been scoured to ensure that none of them violate that rule either, then I can abide by that decision.’

    I’m far from that position.  Such information is quite useful, and I do hope you continue to provide it.  But if you’re going to use your blog to help Microsoft developers to spot rule violations, I’m not sure I understand why you are upset when commenters to your blog do the same thing.  I can understand being miffed when people are intentionally spiteful, but perhaps it’s best to not assume that a few slightly overly negative words are directed at you, rather than frustration at the described problem.  Without body language, it’s a lot harder to know what the person typing on the other end’s tone really was.

    Maybe you’re more interested in talking in the abstract and not pointing fingers at examples which muddles the point?

    [“why exactly are you miffed when someone points out a Microsoft product that doesn’t follow a rule?” Because it’s rude to mock people publically. I try hard not to name names, be the culprit Microsoft or some other company. The goal here is not to ridicule people for their mistakes; it’s to make everybody better programmers. It’s one thing for you to read an article and say to yourself, “Oops, I think I do that.” It’s another to have somebody else post on a public web site, “Hey, go check out that moron!” and put your name right there for everybody to see. -Raymond]
  51. bvleur says:

    Comments aren’t directed at you only, but at your public posting. The reason to comment in public probably is to add something useful to the post. Although I don’t find these bug reports very useful myself, I’ve never read them as an attempt to mock anyone or as an instruction for you to go and fix it.

    When you consider some comment not useful, why not simply respond with "This is a bug report. Please don’t post it here and contact the <product> team"?

    Teaching us good practices is one thing you shouldn’t stop doing, I enjoy it very much. Wether you allow comments is up to you, but most of them actually add value to the blog entry and even the bug reports show you that people read, interpreted and used the information in your writing.

  52. Jamie says:

    Hi Raymond,

    I’m curious if you’ve ever stated a rule, in this blog, and later discovered it’s not. How does the visibility of this blog effect the rules your willing to publicize? Are there rules you believe to be true but aren’t yet committed to and therefore do not share?

    Oh and I’m only interested in your thoughts to the above as applied to Windows programming – not life in general, mounting a bike atop a car, or your “incomplete or even flat out wrong” explanation of the “house in front of RedWest”.

    Jamie

    [I post what I believe to be true. They might not be. People post corrections in comments all the time. -Raymond]
  53. jmmv says:

    Keep up the good work!  I am *not* a Windows programmer, yet still read this blog on a regular basis.  I find it very interesting and has certainly changed my mind on Microsoft and Windows (for better).

  54. Norman Diamond says:

    If you find a Microsoft product breaking a

    > rule, then go complain to that product team.

    We can’t.  EVEN IF for some reason we decide to agree with Microsoft that we should pay a support fee to Microsoft in order to report a bug to Microsoft, there’s still no way for an ordinary customer to make sure that the really correct product team gets the report.

    > Articles where I was consciously tapping my

    > colleagues on the head include

    In articles where you told us that you were doing so, this was very much appreciated.  In articles where you don’t tell us this, you know very very well why it looks like hypocrisy.  You’ve observed this before and you know exactly how to get your point across.  When you choose not to get your point across, the result should not surprise you.

    > if the consensus of my readership is that I

    > shouldn’t tell you not to do things

    Not at all.  The information is valuable.  You know how to avoid misperceptions when you want to avoid them.

    Interesting that your two quotations of me were answers to another commenter’s question, not complaints to you.  You already knew the subject.  I even thanked you for publishing it — I didn’t check to see if that comment is still there in the thread, I just hope it is.  Another poster called it "history" which it is not.

    By the way, if your postings get your colleagues’ shoulders tapped, then maybe comments also get your colleagues’ shoulders tapped?  If not, maybe we should infer that your colleagues really really want your employer’s products to maintain the level of quality that they’re famous for.  I think I’m not the only person who refuses to pay support fees to try to bring a change.

  55. Jorge Coelho says:

    Glad you got this out of your chest, Raymond. Now can you please keep on telling us why programs shouldn’t do X (even if some MS applications do it)? ;-)

    ‘Negative’ feedback in comments is, obviously, not meant directly at *you*, so it shouldn’t be taken personally (but I guess you already know that, although it sometimes must get too much or you wouldn’t have written this post ;-).

    It’s just that your blog has grown extremely popular – helped by the fact that you are a prolific writer – and you kind of became the ‘visible’ part of Microsoft. I think that people would indeed send their ‘negative’ comments to the proper teams if they actually knew who they were and how to contact them – and if they actually got feedback. At least here opinions are actually read and, more often than not, replied to.

    The fact that more and more people inside Microsoft have started blogging helps a great deal, although sending mail to Microsoft still feels like sending mail to a black hole – unless you know a specific person there and that person is willing to respond to you.

    [Is it unreasonable for me to assume that (in the absence of a vocative to the contrary) if people post comments to *my* blog, they are directing the comments at me? Perhaps you’re suggesting that questions posted in comments aren’t actually directed at me. In which case I’ll ignore them. (Though if you aren’t directing them at me, why are you posting the question on my web site?) -Raymond]
  56. Ulric says:

    Please don’t stop doing these posts, Raymond.

    I have myself a blog for the product I work on in Canada.  Being involved in forums and mailing list many clients know my name.

    I’ve essentially given up on my blog because after a pretty cool article, the comments section get inundated with complaints about unrelated parts of the product, other team, the company in general.  

    A few users really just look at things to pick at in every sentence.  The problem is not so much with the users (they must be bitter about their pet peeves for a reason, after all, although I’m aware of a couple who may have had professional/personal problems) but really I was blogging out of the goodness of my heart to explain and clarify the product and show cool new tricks I was excited to have implemented, not to be a representative for the company.

    Many more people since have told me they missed the posts, emailed me asking me for more update, and told me they read but never commented.  But on my side, I’ve given up for good, in my particular case I can better get the information out on a more formal Wiki and risking less being the lightning rod for someone’s anger with the company.

    I really cringe when I see the flames that go your way, and the crazy theories about the so-call advantage MS apps have over other things.  We and larges place like Adobe, Corel, and others write huge applications and we have no problem with the MSDN doc and few tricks here and there.  I’ve created very complex UI widgets similar to the ribbon and have never needed the source.

    I can’t lie, a year ago I did come across some Windows source code, the MainSoft leak.  Being a Windows programmer for 12 years (yes, windows in 1994) this should have been like finding a treasure, but after the initial giggle I threw it away because frankly with the doc, these tips, the debugger and Bound Checker, there is absolutely nothing that would help me work better or faster.   Debugging does not work that way.

    My bottleneck is lack of hours in the day, not anything undocumented in the the win32 API is doing.  We make a very complex application and if we every run into some API usage that is obscure, we would stay the hell away from it.  I expect that other companies that also suport multiple OS do the same.  

    There is no magic API or magic API documentation that is blocking people from making great product, and hundreds of developers at MS aren’t on average any smarter about it than good developers outside.  It’s a poor programmer that would blame a problem in his app on MS.  There are tons of alternate networking, UI, threads, etc, frameworks as well to choose from on Windows.

  57. Jeff says:

    Yet another lurker chiming in – keep it up Raymond. You’re the first blog I ever subscribed to (a few years ago) and I’m glad I did.

    Many of us really *do* realize that:

    – you do this as a service for us, and don’t get compensated

    – that Microsoft is a huge development shop with many projects and lots of skill/knowledge variance

    Thanks for sharing your knowledge with us. Ignore the naysayers that look for any opportunity to complain about Microsoft.

  58. telcor says:

    Here’s another silent one chiming in. Many times I have little idea what you are discussing, since I’ve never been a Win32 developer, however I still find *every* article readible and useful.

  59. silkio says:

    i’m reminded of the soup nazi episode from seinfield.

    raymond, don’t stop dishing out soup … and feel free to ban the people who are not grateful enough :)

    and jamie, if you’re not interested in those type of responses just don’t read them.

  60. Jorge Coelho says:

    [Is it unreasonable for me to assume that (in the absence of a vocative to the contrary) if people post comments to *my* blog, they are directing the comments at me? Perhaps you’re suggesting that questions posted in comments aren’t actually directed at me. In which case I’ll ignore them. (Though if you aren’t directing them at me, why are you posting the question on my web site?) -Raymond]

    Hehe, don’t get into a loop. ;-) I think David Gladfelter above expressed, a lot better than me, why you shouldn’t take negative comments to hearth. What I meant is that most of the negative comments (at least of the kind you mentioned in this post and unless otherwise stated) are directed more at Microsoft than you.

    As a highly visible blogger, and one that works at Microsoft, you *will* attract your fair share of whiners and anti-MS evangelists.

    However, proved by the overwhelming positive response to your post, the fact is that the vast majority of us are on your side, understand what you are trying to do, and LOVE all the info you give us (some bits more than others, but, ah well, you can’t please everybody all the time, can you? ;-)

    On my part, I can only thank *you* for all the useful inside stories and information I have learned here which I probably would have never known about otherwise.

  61. randomArmyITGuy says:

    Please don’t stop posting. Please. Even turn off the comments if they bother you, but please don’t stop posting. I wish we could "digg"-down some of the pointless "but Micorosft Bob did that, see M$FT sux0R$, i’m 3li7e" comments. Our office loves your blog so much that we managed to talk our local webfiltering people to make a special exception in the "block blogs" policy just for you.

  62. Stefan says:

    Shocking revelation number five – I bet most >readers who appreciate the informative and >insightful postings here don’t post comments.

    I totally agree with that. Normally, I don’t post comments to blog entries. I just enjoy reading your blog. And I am amazed by the things I can learn from you.

    So the the time is come to say a big: Thanks for supporting us!!

  63. Steve says:

    Good blog, keep it up.

  64. Jim T says:

    Actually this has clarified the purpose of this blog for me a great deal. I had pretty much considered it as a way for Microsoft to preach the best practice mantra to the external Microsoft world – as in "you dumb bastards can’t you read the docs?".

    I hadn’t even considered the possibility that this was actually directed inwardly at Microsoft and us outsiders were just being given a priveleged view of these useful tips. Looking at it that way makes the whole thing a damn site more powerful.

    I guess the truth is somewhere in the middle and slightly up.

  65. Charles Hanson says:

    "Although I don’t find these bug reports very useful myself, I’ve never read them as an attempt to mock anyone or as an instruction for you to go and fix it."

    You’re telling me that when you read the thread that Raymond linked above*,  you don’t think there’s malice behind the comments?  I was aghast at how rude that person was.

    * http://blogs.msdn.com/oldnewthing/archive/2006/06/26/647365.aspx#649293

  66. John Greenan says:

    I am not sure if you are copping some heat from management on this or whatever, but I am with Joel Spolsky in my views of Raymond

    (see http://www.joelonsoftware.com/articles/APIWar.html).

    So, Raymond, keep on posting and keep up the great work.  Ever hear of Pareto (80/20 rule?) well just ignore the 20% – although I expect it’s more like 95/5…

    Cheers,

    John

  67. Kuwanger says:

    ‘"why exactly are you miffed when someone points out a Microsoft product that doesn’t follow a rule?" Because it’s rude to mock people publically.’

    Of course it’s rude to mock people publically.

    ‘I try hard not to name names, be the culprit Microsoft or some other company. The goal here is not to ridicule people for their mistakes; it’s to make everybody better programmers.’

    But how is naming names "ridicule" alone?

    ‘It’s one thing for you to read an article and say to yourself, "Oops, I think I do that." It’s another to have somebody else post on a public web site, "Hey, go check out that moron!" and put your name right there for everybody to see. -Raymond’

    Except that the post wasn’t "Hey, go check out that moron!", it was "Hey, here’s an example of that rule being broken".  Just because someone is pointing out a rule breaking doesn’t mean the person is calling them a moron.  As you well described, not everyone is an expert on the win32 api; pointing out a rule breaking is far from calling a person a moron (in itself).  Being told where you made a mistake is a chance for you to better yourself.  Yes, it might hurt your ego, and if they do start name calling then that’s quite uncalled for, but everyone makes mistakes.

    I’d rather be told that there’s a bug in my software and given an explanation of a rule than to be left in the dark because I’m somewhat oblivious to my mistake (or put another way, just because someone tells me that there’s a rule that’s commonly broken doesn’t mean I’ll instantly remember that one of the projects I work on violates said rule, so pointing out the problem is actually a *good* thing for me).

    Having said all that, I can understand why after a while of some people being rude there is a presumption that when others point out a problem that it’s made in the same context.  If you don’t want to call out anyone’s name because you don’t want your message to be contorted as a "blog of shame", I can fully understand that.  But I don’t think it’s reasonable to take any one comment and draw some sort of a "ha ha" out of it merely because they point out a specific rule breaker.  A history of a person making such comments, sure, there’s reason to be a bit skeptical even if they don’t explicitly state the "ha ha".

    So, in summary, I can sort of understand your position (especially in your position of authority over this blog) but I’d rather try to draw some constructive out of something and not assume that it’s another "ha ha" post.

  68. Sean D says:

    Long time reader, first time commenter.

    Ignore the noisy minority, please keep posting.

  69. mariush says:

    I’m also in the large crowd of long time readers and no posting".

    Don’t feel let down by the people posting crap, flames and so on, your blog is very valuable for us programmers.

    Thanks..

  70. Jorge Coelho says:

    "Even turn off the comments if they bother you"

    I, for one, would hate to see that happening. I’ve also learned a lot from some of the comments, plus there is nothing more frustrating, from my point of view as a reader, than a technical blog where you cannot talk back and/or ask questions to clarify the matter.

    A blog with comments becomes a ‘community’, a blog without comments isn’t much more than a news letter.

  71. Ma says:

    This is the best blog… keep posting please!

  72. Raymond:

    You are one of the examples of the very few authors worth reading in a world increasingly filled with commercialised and politicised junk.  I will not waste my time reading ‘The Canberra Times’, but I will read this blog from time to time.

    Steve Loughran:

    You could also add, "the method it uses to determine if Outlook and Outlook Express are installed (for exporting contacts to your iPod) does not work", "support for converting formats is a convoluted hack in the Help file when it could just be a simple set of context menu items" and "why can’t I requery ‘smart’ playlists without redefining them?", etc, etc, but surely it is better to fire this information at the iTunes development team?

    However, your point does bring up an interesting generalisation which the anti-"Micro$oft" brigade do not consider: Most of the applications on my computer that have no concept of Unicode, multi-user configuration, Fast User Switching, basic security, good performance, good user interface design, are *NOT* Microsoft products.

    For me, these are critical ‘first-base’, ‘take-it-for-granted’, ‘develop-the-base-for-this-before-you-write-any-other-code-for-your-first-ever-newbie-application’, ‘bread-and-butter’ things.  If you do not do them, I will not buy your product unless I really need it and you have no competition.

    Some of the ommissions are fantastic: for example, I have not found one secure erase utility that works with Unicode filenames.  Not one.  If it’s not ASCII, it can’t be wiped, yet all of them claim to be ‘military grade’.  Likewise, ‘ntbackup’ alternatives with no concept of NTFS-permissions or Unicode.  Like a telephone missing the number ‘2’, it is considered to be ‘good enough’ because it can dial most numbers (and only fussy people call numbers with ‘2’ in them).

    For some reason, graphics and audio applications programmers are always the worst offenders.  Although we can still be thankful that, unlike circa 1995, they no longer try to replace ‘kernal32.dll’ with their own version (a major graphics application used to do this, I can’t remember who after all these years).

    On that note, I just hope my recent purchase of Manga Studio allows me to use Japanese in word balloons…

  73. Xavi says:

    Not many URLs made it to my favorites list, yours did. Let me keep it there.

  74. MSDNArchive says:

    "Regarding telling the product team about bugs/complaints, I would love to, but it, too, seems a difficult task.  Example: I applied the latest security patch to Windows Media Player 9 and now I can only run WMP with administrator rights — makes it hard to use in a LUA (Limited User Account)." -Tom (5th comment from the top)

    Often times you can search the web to find people who work on given teams. For example, I searched for:

    "I work *** Windows Media Player"

    and found this text:

    "Hi, I work at Microsoft in Windows Media Player. I also DJ at a professional level in clubs all over Seattle and the US."

    on this page:

    http://podcasting.meetup.com/22/member/2510120/

    That page links to the fellow’s website where you can find his E-mail address.

    Of course I can’t guarantee that he’ll be able to help you with your problem, but this shows that non-Microsofties can search for contacts from given Microsoft teams.

  75. DriverDude says:

    Raymond, if I remain silent, it’s because I agree with what you wrote or because I have nothing constructive to add.

    Your "don’t do X" posts should be required reading for all Win32 programmers. Heck, some apply to all platforms.

    If somebody truly cared about the products they’re working on, they should be asking themselves whether their products suffer from these mistakes.

    And I know *you* are not responsible for all of Microsoft’s faults, this is often a convienent place to point out that "alternative solutions" often are not viable.

    For example, if tech support was more responsive, nobody would be complaining. I’ve reported bugs to Adobe, Nikon, Microsoft, eBay and others. Most of the time I get nowhere – maybe an offhand comment to try something irrelevant. (On the other hand, APC and Sonic, my ISP, have been very helpful)

    Whatever I’ve said, it’s not because of you, but rather *your employer* – and everyone else who’ve made the same mistakes but refuse to acknowledge/fix the bugs. (Pass this one to the managers, will ‘ya)

    Thanks again for these informative posts!

  76. From a semi-lurker here (I’ve only occasionally posted comments), I’d say that your efforts are well appreciated by a rather larger community of reasonable, decent adults than the comparatively smaller (but perhaps louder) group of unseasoned, puerile miscreants that litter many blogs with uninformed, immature rubbish in some misguided effort to inflate their shattered ego.

    As unfair and bizarre as this may seem, I think a price one pays for notoriety involves not enjoy enjoying praise, but suffering even the most ridiculous slights.

    Even Mr. Rogers found himself harrassed for his efforts in children’s television programming, and I don’t see how his work could possibly have offended anyone.

    While I realize this is kind of selfish, I hope you continue to post these sort of programming tidbits to your blog.

  77. Raymond II says:

    Maybe you come off as "a preacher guy from Microsoft telling them off", which in turn triggers a defence mechanism, provoking them to bring up inconsistencies in Microsoft’s own products, which again you see as an attack, and so on and so forth. — I view this as a misunderstanding, unless the same people continue to not get it, having no other place to vent their general frustrations with Microsoft.

    http://blogs.msdn.com/oldnewthing/archive/2006/04/04/568100.aspx

    The original, direct version:

    "If *you* fill the event log with chatter, …"

    The indirect, generalized version:

    "If *an application* fills the event log with chatter, …"

    Would this help reduce future misunderstandings and take the focus away from the person reading it, and at the same time include Microsoft products? I don’t know.

  78. Dewi Morgan says:

    Small chance of flyby complainers reading this post, I fear, unless there’s a way to "pin" it as a "read this first" message.

    Personally, I’d institute a rule "product names (from any company) mentioned in a negative context will be censored out, rendering your posts meaningless". People would hopefully soon learn… maybe.

    Or just don’t accept those comments. Comments are already spam-screened, after all: maybe screen them for product defamation, too?

  79. Mike Swaim says:

     Not everything MS Makes is listed in Connect (for example, I don’t see Windows in the list). Also, it’s pretty darn new, having been one of the MS Research projects until very recently.

  80. Karl says:

    Keep it Raymond.  Bloglines says 2732 people subscribe to your blog, and undoubtedly many many more read it through other methods.  It is always great info, if anything I wish somebody more familiar with the Windows Security API would start writing articles like you do for UI issues. :)

  81. BryanK says:

    Randolpho:  I suspect the fee that Norman refers to is the $245-per-incident call-in-to-support fee.  If they find that your issue is due to a bug, you get a refund, but you still need the $245 to begin with.  (And I seem to remember the charges being up in the $400 range several years ago.  Perhaps the fee just depends on the product — $245 is for VS.net 2003, which I just looked up.)

    But I don’t know for sure…

  82. C Gomez says:

    Considering that you get a lot of immature comment spam from folks who just want to bash for the sake of being bashed, I consider your responses to be very patient and open.

    You do us all a service by providing your insight into programming and Win32 programming.  You have valuable experience that makes us all better.

    I think it’s important to stand up and continue to flood your comment section with "keep up the good work" votes because it is important to see there is a "silent majority" that appreciates the time you take each day to help us learn.

    Thank you.

  83. Randolpho says:

    BryanK — Ah, I see. So what he really wants is to talk to somebody voice in order to report a bug?

    Maybe Microsoft should promote connect.microsoft.com more, but it’s probably the better way to get bugs reported.

  84. roy says:

    Raymond,

    I don’t comment much on your blog, but I read it everyday.  The information you dispense is informative and helpful.  You also reach a lot of people, which means that you’re going to reach people that don’t agree with your points and will complain to you rather than the correct party.

    C’est la vie!  Just forget about them.  You’re doing a great job.  Keep it up! ^_^

    P.S. Every morning when I get into work I make it a habit to read your entries.  So your writing is actually part of my daily life habit!

  85. Miles Archer says:

    One more thing – Now that Scoble’s gone, your the best, most credible MS advocate out there.

    [Which is bizarro to me since I don’t consider what I do advocacy. Robert Scoble linked to people and expressed his opinion on hot topics of the day. I talk about stuff that happened ten years ago. -Raymond]
  86. BryanK says:

    Randolpho — I can’t speak for him, but that’s the charge that I always associated with his comments.

    Sean W. — I believe there are "contact us" links on the bottom of every MSDN page.  That doesn’t help in general, but for MSDN documentation, in theory, it should.  (Of course I’m just as guilty of forgetting that those links are there as anyone.)

    (And the one time I did use that link, I got a "this should be fixed in the next MSDN release" answer, and then my emailed reply couldn’t get through the SORBS blacklist that Microsoft used.  But still, the link is there, and it may work for some issues.  I suspect that it has a greater effect on documentation bugs than on "this page’s script uses IE-only properties, so it won’t work in any other browser; you can fix this by replacing parentElement with parentNode everywhere" reports, which is what my comment was.  Of course MSDN2 doesn’t fix the script bug, either, it just expands all the sections by default.  At least I can read the text, though; the page in question had the text collapsed by default in MSDN1.)

  87. Randolpho says:

    Norman Diamond wrote:

    > > If you find a Microsoft product breaking a

    > > rule, then go complain to that product team.

    > We can’t.  EVEN IF for some reason we decide

    > to agree with Microsoft that we should pay a

    > support fee to Microsoft in order to report a

    > bug to Microsoft, there’s still no way for an

    > ordinary customer to make sure that the really

    > correct product team gets the report.

    That’s twice that I’ve read where there’s been a fee for providing feedback to Microsoft mentioned. What is this feedback fee of which you write? I participate in a couple Microsoft feedback connections (see https://connect.microsoft.com/availableconnections.aspx ) and I have yet to be asked to pay any sort of fee.

    Or do you mean, perhaps, that some of the connections require that you actually *own* the software in question? The Microsoft Dynamics connection, for example, is limited to MBS partners and clients. Is this your issue, or are you referring to something else?

  88. Sean W. says:

    Although I’m sometimes critical of your company’s products, Raymond, I still think this blog is an absolutely invaluable resource, excellently written, informative, and useful, and I’d be pretty unhappy if you stopped writing it.  I subscribe to it via RSS, and it’s the only blog I read daily.  Please, please, please, don’t stop writing it.

    I think there might be a good way to deflect some criticism:  Help us in the general public understand how to complain to the *right* people inside Microsoft.  I’d be more than happy to direct my comments and questions to the appropriate parties, but as one of the other commenters said above, Microsoft is a black hole of communication, and you’re the only ray of light poking out of that blackness (no pun intended, sorry).  A posting or two in your blog about the best ways to contact the MSDN people about bad API documentation, or the best ways to contact, say, the GDI team about a bug (to give a few random examples) would help everybody.

    In any case, Raymond, please please please keep writing this thing; I can’t even begin to tell you how useful it’s been over the years.  About the only thing that’d be better to come out of Microsoft than your words in this blog would be your words in dead-tree form (hint, hint) ;-)

  89. Mr. Chen,

    Please do not stop making informative posts.  You are my programming god and I have learned much from you.  Your experience and knowledge is proof that for all of us out there trying to better ourselves there is a light at the end of the tunnel….and it isn’t a train.

    James

  90. Martijn says:

    I am still looking for a Microsoft product that is guilty of this finger-pointing practice too :)

    But seriously, really love the articles, keep up the good work!

  91. Dog says:

    "it’s rude to mock people publically"

    Though apparently not to mock in public what people write on your blog. I feel a Gatting moment coming on.

    Meanwhile you’d prefer that we continue to debug MS’ products for them, though we shouldn’t tell you but instead hunt down some contact in the correct team to do it? It doesn’t occur to you that we might actually have our own work to do, whereas your work /is/ for Microsoft and you are actually paid by them?

  92. BryanK says:

    Dog — but he’s paid by Microsoft to work on the shell and back-compat, not on Outlook Express or FoxPro or ADO or MSDN or Visual Studio or any other product that happens to have the bugs in it that he writes about.

    If you don’t want to debug their products for them, then don’t.  For most of their programs (by number, not by popularity), there are alternatives, and sometimes the alternatives are good enough.  But if you do debug their stuff for them, then don’t point the bugs out to Raymond; he can’t do anything about them anyway.

  93. nksingh says:

    Thanks for the great posts, Raymond!  Some readers like me also get kind of pissed off at the negative posts that are there just for whining.

    Would you mind it if people phrased their bug comments as "If someone responsible for X product is reading this post, could you check out Y bug?  Please contact me at A@B.C for a repro?"  Then it is clear that it isn’t your responsibility, while still allowing people to post some feedback.  As many have said, MSFT is a large organization and it’s sometimes quite unclear whose door to knock on.

    -A humble tee dash

  94. Norman Diamond says:

    Friday, July 14, 2006 10:18 AM by Randolpho

    > Norman Diamond wrote:

    [Raymond Chen:]

    >>> If you find a Microsoft product breaking a

    >>> rule, then go complain to that product

    >>> team.

    >>

    >> We can’t.  EVEN IF for some reason we decide

    >> to agree with Microsoft that we should pay

    >> a support fee to Microsoft in order to

    >> report a bug to Microsoft, there’s still no

    >> way for an ordinary customer to make sure

    >> that the really correct product team gets

    >> the report.

    >

    > That’s twice that I’ve read where there’s

    > been a fee for providing feedback to

    > Microsoft mentioned. What is this feedback

    > fee of which you write?

    I’m not talking about betas (the Connect site), I’m talking about products that have been released and already paid for by customers.  Start at:

    http://support.microsoft.com

    In Windows 95 days two examples of fees were US$35 or 4,000 yen (probably not including 3% tax at the time).  For Windows XP or 2003 the fee I saw was 4,200 yen (including 5% tax).

    A few years ago, regarding some hotfixes for which English-language Knowledge Base articles said that there were limited conditions under Microsoft might decide not to charge support fees, a Microsoft US employee persuaded me to phone Microsoft Japan’s support operations to ask for some hotfixes.  I made a list of Windows XP and 2003 product codes and Knowledge Base article numbers and phoned Microsoft, but they wouldn’t even let me state the KB article numbers unless I first opened a paid support incident.

    For bugs other than those for which a KB article mentions a hotfix, I have not even seen an assertion that a customer could report a bug to Microsoft’s support operations without paying a fee.

    Friday, July 14, 2006 10:35 AM by Dewi Morgan

    > Personally, I’d institute a rule "product

    > names (from any company) mentioned in a

    > negative context will be censored out,

    > rendering your posts meaningless".

    That would add to evidence that Microsoft really really wants to keep its products as bug-ridden as ever.

    It took me a couple of years to understand that Mr. Chen (and some of his colleagues) are not official Microsoft mouthpieces and can write honestly.  I’ve apologized twise to Mr. Chen for the length of time it took me to learn that, and I’m perfectly willing to apologize again for that.  Nonetheless when there’s no really correct way to report bugs, the possibility of posting them in articles that talk about those bugs is still going to be pretty attractive.

  95. work2do says:

    If you don’t want to debug their products for them, then don’t.

    Can’t do that. I, and I assume alot other people, are forced to use MS crap at work.

  96. steveg says:

    I’d like you to keep writing this blog, but only if you want to — if you’re losing sleep about it, forget it.

    I regard this blog and the comments a bit like a book. Oooh, will Norman Diamond be insightful or inciteful? Will Larry Osterman make a cameo? Will Paul Coddington reference Australia (he’s right, the Canberra Time’s been rubbish for years) and so on through for the other regulars.

    I’m always surprised by the amount of MS-bashing in the comments. I’d imagine this blog is mostly of interest to programmers, and I’d’ve expected them to be a little more understanding, maybe a number of them haven’t worked in large organisations, or worked on decent sized applications?

  97. Andy says:

    I love your posts. I have learned more useful things from this blog than any other I read bar none. I almost never read the comments. I am honestly not really interested in what they have to say. I know if someone corrects an error in one of your posts you always go back and edit it with a note as to why it was edited. The only reason I read these comments was because I saw there was so many of them on one post and since everyone else has given their two cents I would like to give mine as well:

    I would rather see you disable comments entirely than to stop posting. I come here to read what you have to say. I could not care less what is in the comments.

  98. In a a recent post, The Old New Thing made reference to terminology errors, citing the system tray as…

  99. In his article Glass houses are great places to throw stones Raymond writes in part:

    Whenever I write…

  100. Norman Diamond says:

    Wednesday, July 19, 2006 3:48 AM by steveg

    > Oooh, will Norman Diamond be insightful or

    > inciteful?

    Well, I get incited by lies about as much as normal people get incited by truths.  This ought to make it easier to predict some responses in the future.

    For other issues such as thefts, I think I’m a bit closer to normal, I think there are a lot of people who get incited by being victims of thefts.

  101. Jamie Anderson says:

    I think that most people don’t understand just how big Microsoft is.

    One of my workmates (who has actually visited the Redmond campus) told me that there were about 48000 employees in Redmond, and 5 or so freeway offramps feeding into the campus.

    Assuming that only 5% of those employees actually write code, that’s still 2400 developers. We can’t expect Raymond to go around and slap all the "bad" ones of the back of the head now, can we?

  102. Dialog boxes are not the place to put logic puzzles.

  103. The target of a drag/drop operation is not necessarily a directory.

  104. Closing off one category of security vulnerability in Windows Vista.

  105. Otherwise file names won’t resolve.

Comments are closed.