Achievement Unlocked: Become a terrible coder



  • So apparently this "gamification" trend is affecting everything, from going to the store to exercise routines to now coding.

    Microsoft has apparently released an "achievement" extension for Visual Studio. I mean, it can't be bad right? If a user can get an achievement for doing something correct, then they come off as better coders and we all benefit, right?

    Except look at the list of achievements:

     

    "Add 10 regions to a class"? Okay, I guess if it's a long enough class that makes kind of sense (if for whatever reason you forgot partial classes exist).

    "Reference 25 assemblies."? Hmm, perhaps large enough applications may need this but I've never needed to do that many in anything I've worked on thus far.

    "Use 5 different curse words in a file."? What?

    "Use of the goto keyword."!?. What??

    "Write 20 single letter class level variables in one file."!? I give up.

     

    Pretty much only the "Unleashing Visual Studio" achievements seem to make any sense. The rest I'm sure is just some conspiracy to make sure MS developers are recognized as bad coders or something.

    (Also sorry if there's already a thread about this, I checked and there didn't seem to be one.)



  • No, it's a fake...



  • What's wrong with all of them being joke achievements?

    Most achievements in games are kind of jokes.



  • Yeah. It's obvious this is based on Xbox Live Achievements. Take a look at them sometime. Most games, half or more of the achievements are just jokes or stupid puns or 1-upping competing games. (The whole Dead Rising with its "kill 53594 zombies" achievement; so Left 4 Dead added the "kill 53595 zombies" achievement. Neither game seriously expects people to do those.)

    Also, Portal 2 I think deserves a notice for its brilliant "This Is The Part Where He Kills You" achievement, which isn't just a joke, but it's kind of a meta-joke. They are using the Achievement pop-up as a punchline to a joke in the game's dialog, it's crazy shit.



  • Arstechnical provided a review that presented Visual Studio as a text adventure game. If you are after the tldr; version, then it's 'Fun game, but the Ultimate version is a bit pricey'.

     

    OH, and akismet, just in case.



  • How long until people start complaining that Visual Studio is calling them a cow?



  • @MiffTheFox said:

    "Add 10 regions to a class"? Okay, I guess if it's a long enough class that makes kind of sense (if for whatever reason you forgot partial classes exist).

    "Reference 25 assemblies."? Hmm, perhaps large enough applications may need this but I've never needed to do that many in anything I've worked on thus far.

    "Use 5 different curse words in a file."? What?

    "Use of the goto keyword."!?. What??

    "Write 20 single letter class level variables in one file."!? I give up.

     

    the names of these achievements actually mock you, so i guess it's kind of meant as a "hey! don't do this!" - teaching good coding through pointing out bad practices.

     



  •  The OP clearly still needs to unlock the achievement "learn to recognize sarcasm".



  •  Hah, Puzzle Quest 2 has an achievement when you learn a new spell, called "learn 2 spell" which made me guffaw.



  • @dhromed said:

    Hah, Puzzle Quest 2 has an achievement when you learn a new spell, called "learn 2 spell" which made me guffaw.

    Not an achievement, but one of the round badges in Tribes: Ascend if you manage to destroy a generator is "Genehater." Which made me laugh.

    They also canonized the term "blue plate special" for hitting another tribes player in mid-air with a spinfusor disc. It's good to know the people making the game were Tribes players back in the day, or at least talked to a lot of Tribes players.


  • BINNED

    @blakeyrat said:

    The whole Dead Rising with its "kill 53594 zombies" achievement

    A friend of mine did do that.

    @blakeyrat said:

    Also, Portal 2 I think deserves a notice for its brilliant "This Is The Part Where He Kills You" achievement, which isn't just a joke, but it's kind of a meta-joke.

    I got the one where Wheatly begs you to come back and jump into the hole after you've escaped (if that is the one you mean). Yes, it's hilarious.

     

    @SEMI-HYBRID code said:

    the names of these achievements actually mock you, so i guess it's kind of meant as a "hey! don't do this!" - teaching good coding through pointing out bad practices.

    I think you seriously underestimate some people's "gotta catch em all" mentality. This will be incentive to write even worse code for at least some people.

     



  • @topspin said:

    I got the one where Wheatly begs you to come back and jump into the hole after you've escaped (if that is the one you mean). Yes, it's hilarious.

    No, it's a different one everybody gets for going through the plot. It goes like this:

    (Caption on Screen): Chapter 8, The Part Where He Kills You
    GlaDOS: "Uh oh, this is the part where he kills you."
    Wheatly: "Welcome to the part where I kill you!"
    (Game system): Achievement Unlocked: The Part Where He Kills You

    It's hilarious while you're playing.



  • Here, illustration. No achievement unlock though, I already unlocked it when I took these screenshots..




  • @AngelSL said:

    No achievement unlock though

    THEN I WILL CRUDELY IMAGE-EDIT ONE IN!



  •  Here. I found one.




  • I like mine better.


  • BINNED

    Who wouldn't.  ;)

    And thanks to this I started playing again.



  • The part of the product (which I shant name) that I'm testing is internally called '?????Panels', so I found this one extra amusing.

    http://www.youtube.com/watch?feature=endscreen&NR=1&v=Kyc4JK24EuI



  • @blakeyrat said:

    Also, Portal 2 I think deserves a notice for its brilliant "This Is The Part Where He Kills You" achievement, which isn't just a joke, but it's kind of a meta-joke. They are using the Achievement pop-up as a punchline to a joke in the game's dialog, it's crazy shit.
     

    Didn't Portal 2 also have an achievement for doing something that kills you and ends the game in failure? I think it was taking GLaDOS's fairly obviously fake offer of an escape route during one of the chase sequences.



  • @Someone You Know said:

    Didn't Portal 2 also have an achievement for doing something that kills you and ends the game in failure?

    Doesn't every game? It probably has several. Like, you know, every game.

    Seriously, what's up with people in this forum and not knowing what game achievements are.



  • @blakeyrat said:

    @Someone You Know said:
    Didn't Portal 2 also have an achievement for doing something that kills you and ends the game in failure?

    Doesn't every game? It probably has several. Like, you know, every game.

    Seriously, what's up with people in this forum and not knowing what game achievements are.

     

    Not all WTFers are gamers. Although it is quite hard to not know what an achievement is nowadays, they are coming out the wazoo. Pretty soon brushing your teeth in the morning will net you an achievement and another one if you do it every day of the week.

    Most of them I don't care for anyway. I prefer achievements that are exactly that - an achievement. Not "gain level 30" or "finish level X" but the kind that the classic game Painkiller coined in order to win the tarrot card of a level - and that is from before the time where achievements were actually recorded. The achievements tended to make you restrain yourself and make the level a whole lot more challenging to play. Things like "Finish the level using only the painkiller weapon", "find all secrets",  "kill boss X in under 3 minutes", "finish level without using any tarrot card", etc. A large chunk of them you could only actually finish when having a specific set of tarrot cards equipped (and thus you need to win them first). Challenge, puzzle requirements, a reason to replay old levels, a real reward. Now THAT is what I call achievements.

     



  •  



  • Yay for ginormous inaccessible image! (I tried "open image in new tab" and it even said 403 Forbidden!)



  • I've made up a few "achievements" of my own:



    The "Gang of Four Gang Bang" achievement: Solution has more levels of inheritance than it has actual end users.



    The "Scott Guthrie Gut-Buddy" achievement: Solution's design breaks Visual Studio's "Go to definition" with at least 90% "success".



    The "Hello World / Goodbye Sanity" achievement: Solution has more "class" declarations than it has I/O statements.



    The "ODBC-the-Monkeys" achievement: Solution (luckily) uses legacy technologies that change from deprecated to exalted during development.



    The "WP-F-My-Life" achievment: Reverse of "ODBC-the-Monkeys"; solution uses technologies deprecated during development.



  • This is what is known as a "joke".



  • @toth said:

    This is what is known as a "joke".

    People get fired for jokes. People get punched in the nose for jokes. I think anything even resembling intentional humor is completely inappropriate from Microsoft. The fact that they are wasting time on this crap in spite of the myriad real problems they ought to be fixing is an insult. They are basically daring people to move to a competing product: "Oh, you say that Outlook stops responding to mouse input randomly? And the WPF designer doesn't properly support ViewBoxes? Well, here are some jokes to hold you over while we continue to ignore your problem."



    Where I work, we have been consigning Microsoft to the ash heap of company history as fast as possible. Subversion has replaced Team Visual Fortress Power Safe CodeHog (or whatever it's called). For "native" code, we've ditched Visual C++ completely. We use SSRS about as much as we use SSDS, i.e. not at all. You can argue with me all you want, but the day is fast approaching when Microsoft gets laughed out of existence.



  • @bridget99 said:

    People get fired for jokes. People get punched in the nose for jokes. I think anything even resembling intentional humor is completely inappropriate from Microsoft. The fact that they are wasting time on this crap in spite of the myriad real problems they ought to be fixing is an insult.

    Yeah! Those bastards should be fixing the "window is not responding" bug!

    @bridget99 said:

    Subversion has replaced Team Visual Fortress Power Safe CodeHog (or whatever it's called).

    You do realize of course that even Microsoft has considered VSS obsolete for years and years? TFS, the replacement, is quite nice. Hell, what version of Outlook are you talking about with that mouse bug? '97?

    @bridget99 said:

    You can argue with me all you want, but the day is fast approaching when Microsoft gets laughed out of existence.

    The problem is that even if your viewpoint were sane, I'd still ignore you because you're the Worst Programmer On This Forum.

    A programmer who was not the Worst Programmer On This Forum would have read "The Mythical Man-Month" and would realize that even though Microsoft is a large company with thousands of employees, randomly assigning someone who's qualified to write Visual Studio plug-ins to resolved a bug involving a mouse cursor in an Office product would slow forward momentum of both products, not increase it.

    And that's assuming that this Visual Studio plug-in was even written on company time in the first place-- is there any evidence it was? You don't present any.



  • @Someone You Know said:

    Didn't Portal 2 also have an achievement for doing something that kills you and ends the game in failure? I think it was taking GLaDOS's fairly obviously fake offer of an escape route during one of the chase sequences.
     

    It's called Good Listener

    http://www.youtube.com/watch?v=KbTXHuytW6g



  • @blakeyrat said:

    Team Visual Fortress Power Safe CodeHog

    Ah, good, I'm not the only one who sees "TFS" and thinks of Team Fortress...



  • @bridget99 said:

    [snipped batshiat crazy talk]
    So, does it just come naturally to you or do you have to work hard at sounding like a close-minded nutter?



  • @Someone You Know said:

    I think it was taking GLaDOS's fairly obviously fake offer of an escape route during one of the chase sequences.

    What chase sequences? You mean the parts where the music picks up and the blue one yells at you to run? Nothing happens if you ignore them and stand around or take the time to explore. Nothing is actually chasing you.



  • @lettucemode said:

    @Someone You Know said:
    I think it was taking GLaDOS's fairly obviously fake offer of an escape route during one of the chase sequences.

    What chase sequences? You mean the parts where the music picks up and the blue one yells at you to run? Nothing happens if you ignore them and stand around or take the time to explore. Nothing is actually chasing you.

    Much like a roller coaster, a video game is about the illusion of danger. Don't ruin the illusion.



  • @blakeyrat said:

    @lettucemode said:
    @Someone You Know said:
    I think it was taking GLaDOS's fairly obviously fake offer of an escape route during one of the chase sequences.

    What chase sequences? You mean the parts where the music picks up and the blue one yells at you to run? Nothing happens if you ignore them and stand around or take the time to explore. Nothing is actually chasing you.

    Much like a roller coaster, a video game is about the illusion of danger. Don't ruin the illusion.

    Meh. Portal 2 was an illusion of a physics-based puzzle game and I'm still bitter.



  • @lettucemode said:

    Meh. Portal 2 was an illusion of a physics-based puzzle game and I'm still bitter.

    Hey it had like... 4 funny lines before Stephen Merchant became intolerable.

    But yeah. Hugely over-rated game. They introduce some new game mechanics, like the magical moon fluid or whatever the fuck it was, do like 4 puzzles with it, then it's gone without a trace. They never go back and combine ALL the game mechanics in a single puzzle, which is what puzzle games like that typically do.

    Hell, S.C.Out had like HALF the mechanics of Portal, but with 100 levels and every one was entertaining. Also, monsters you had to shoot.



  • @blakeyrat said:

    Yeah! Those bastards should be fixing the "window is not responding" bug!




    I agree; there's no reason the OS should display ominous-sounding messages simply because my programs don't allow user interaction while they're running batch processes. Microsoft should definitely fix that bug.



    @blakeyrat said:
    You do realize of course that even Microsoft has considered VSS obsolete for years and years? TFS, the replacement, is quite nice.




    So I've been told. And I'm sure Captain Schettino would be a great deck hand for my next regatta... but it ain't gonna happen. My point is that people run out of chances with me. Why Microsoft is immune to this phenomenon (with so many others, at least) is difficult to understand, but only in the same way that the Pet Rock or the Jonestown Massacre is difficult to understand. Each of these things can easily be understood, if one acknowledges that the human condition is one of abject ignorance.



    @blakeyrat said:
    A programmer who was not the Worst Programmer On This Forum would have read "The Mythical Man-Month"

    This was required reading for a class I took in college. I read it, got an "A", graduated, and still refer to this book frequently.

    @blakeyrat said:

    randomly assigning someone who's qualified to write Visual Studio plug-ins to resolved a bug involving a mouse cursor in an Office product would slow forward momentum of both products, not increase it.




    If Microsoft is employing someone who really can only work on joke projects, that person should be fired. (And I can't imagine Fred Brooks would disagree with that.)



    @blakeyrat said:
    The problem is that even if your viewpoint were sane, I'd still ignore you because you're the Worst Programmer On This Forum.




    You're just a script kiddie compared to me. Do you even have a CS degree? Was the program accredited? What was your GPA? What sort of work do you do? Have you ever done Win32 C++ programming professionally? How about Intel assembly language? I've done both professionally, and been well-paid for it. That makes me superior to about 99% of people employed as developers, and you know it. Nobody's impressed that you can regurgitate .NET code in a way that Scott Guthrie approves of. That's just being a tool of the establishment, not a real programmer.


  • ♿ (Parody)

    @bridget99 said:

    @blakeyrat said:
    A programmer who was not the Worst Programmer On This Forum would have read "The Mythical Man-Month"

    This was required reading for a class I took in college. I read it, got an "A", graduated, and still refer to this book frequently.

    @blakeyrat said:

    randomly assigning someone who's qualified to write Visual Studio plug-ins to resolved a bug involving a mouse cursor in an Office product would slow forward momentum of both products, not increase it.

    If Microsoft is employing someone who really can only work on joke projects, that person should be fired. (And I can't imagine Fred Brooks would disagree with that.)

    OK, so you supposedly understand the lesson of The Mythical Man Month. I guess that means that you must misunderstand basic economics? Marketing? You just like speaking in logical fallacies? Making stuff up? Trolling blakeyrat?



  • @bridget99 said:


    You're just a script kiddie compared to me.

    Is this where we compare who has the biggest "whatever"?

    @bridget99 said:


    Do you even have a CS degree? Was the program accredited? What was your GPA? What sort of work do you do? Have you ever done Win32 C++ programming professionally? How about Intel assembly language? I've done both professionally, and been well-paid for it.

    So?  That doesn't make you a great programmer.  I have done that as well and I don't consider myself great.

    @bridget99 said:


     That makes me superior to about 99% of people employed as developers, and you know it.

    I don't know you enough to argue that but having knowlodge does not traslate to being a good dev

    @bridget99 said:


    Nobody's impressed that you can regurgitate .NET code in a way that Scott Guthrie approves of. That's just being a tool of the establishment, not a real programmer.

    To be honest I don't know what to make of this.  I kind of get your point (again, I don't know blakey enough to argue this) but most of the time average code is way better than whatever a "genius" can create (I see a lot of people code and most of the time when they try to be smart it is awful).  That is why standards are important, creativity aside.



  • @bridget99 said:

    You're just a script kiddie compared to me.

    Oh noes! You're impugning my cocksmanship! To steal the by far best line from Network!

    @bridget99 said:

    Do you even have a CS degree?

    Nope!

    @bridget99 said:

    Was the program accredited?

    I took 4 years of computer science courses from an accredited university, yes.

    @bridget99 said:

    What was your GPA?

    I don't remember, nor do I care.

    @bridget99 said:

    What sort of work do you do?

    I'm kind of a jack-of-all-trades around here (the "only guy on the team who knows computers well"), but I mostly work with non-UI JavaScript development, SQL Server administration/development, C# service development, and I maintain a couple of C# GUI utilities we use internally here. Plus whatever else people ask of me-- for example, configuring a test in Adobe Omniture Test&Target isn't far from "programming".

    @bridget99 said:

    Have you ever done Win32 C++ programming professionally?

    No; but I have done C++ programming professionally.

    @bridget99 said:

    How about Intel assembly language?

    God no. Why would I want to? Why would anybody?

    @bridget99 said:

    I've done both professionally, and been well-paid for it.

    Congratulations.

    @bridget99 said:

    That makes me superior to about 99% of people employed as developers, and you know it.

    I dare say that Jensen Harris has made more of a contribution to the art of Computer Science than you ever will, without ever touching Intel assembly language.

    The fact that you think knowledge of Intel assembly language is somehow necessary to the art is really what concerns me-- it's not. It's just rehashing problems that have already been solved. The unsolved problems are in places like, say, building a reliable distributed NoSQL database, or iterating the UI... that's the interesting work.

    @bridget99 said:

    Nobody's impressed that you can regurgitate .NET code in a way that Scott Guthrie approves of.

    I don't even know who Scott Guthrie is.

    @bridget99 said:

    That's just being a tool of the establishment, not a real programmer.

    If your definition of "real programmer" includes re-solving solved problems, or refusing to fix an application that locks-up while processing... I don't want to be a "real programmer". I'll keep on being a fake programmer, doing groundbreaking work in web analytics, thank you very much.



  • @bridget99 said:

    @blakeyrat said:
    Yeah! Those bastards should be fixing the "window is not responding" bug!


    I agree; there's no reason the OS should display ominous-sounding messages simply because my programs don't allow user interaction while they're running batch processes. Microsoft should definitely fix that bug.

     

     It's not "displaying an ominous-sounding message" it's telling the users that you're too lazy or stupid to realize that you should disable the window, but still pump messages if doing work.  Perhaps have a modal dialog box with no controls and a progress bar (or even just an animated "stuff is processing" bar) so that users know that your program is actually doing something. 


  • BINNED

    @bridget99 said:

    You're just a script kiddie compared to me. Do you even have a CS degree? Was the program accredited? What was your GPA? What sort of work do you do? Have you ever done Win32 C++ programming professionally? How about Intel assembly language? I've done both professionally, and been well-paid for it. That makes me superior to about 99% of people employed as developers, and you know it. Nobody's impressed that you can regurgitate .NET code in a way that Scott Guthrie approves of. That's just being a tool of the establishment, not a real programmer.

    Oh man, just give in already.

    Win32 is a C API, not C++. (Which you can of course use in C++, but that sentence is still BS). And in your CS course they should have told you about interface contracts. If Win32 says you have to pump messages than that is a contract and it doesn't matter if (you think) that makes sense or not.



  • @topspin said:

    And in your CS course they should have told you about interface contracts. If Win32 says you have to pump messages than that is a contract and it doesn't matter if (you think) that makes sense or not.

     

    Careful, trying to make people understand such concepts is likely to result in exploded heads.

     



  • Interesting. I'm happy that I will never see such a lack of professionalism from a quality open source project, like Eclipse.



  • @topspin said:

    If Win32 says you have to pump messages than that is a contract and it doesn't matter if (you think) that makes sense or not.

    If I make a library consisting of a bunch of static functions, like Win32, their signatures are (or at least should be) the "interface contract."



    Is it appropriate to throw natural language preconditions on their use, e.g. "the ResizeWindowpane() function accepts two 64-bit integers and returns a single 64-bit integer, but you must not use it on windowpanes where b_ComplicatedFeature is true"? I suppose such things are inevitable, but I certainly would not consider them design positives.



    Are these preconditions, as you say, part of the "interface contract"? I don't know... I think you're on very shaky ground claiming that all of these stupid little rules are part of the "interface contract". In fact, I think you chose that term ("interface contract" vs. simply "interface") because you know that an "interface" is a first-order concept in many languages, and in none of these languages does an "interface" have anything to do with message pumping requirements. So you've come up with this notion of an interface contract, which is basically the 2012 version of yelling "RYFM" at one's own customers instead of just dealing with their client code gracefully.



    And even if one accepts this notion of having assorted natural language pronouncements as part of the "interface contract," one must admit that 1) propping up the library with these sorts of gotchas detracts from its usability and 2) the Win16 "interface contract", with which Win32 was supposed to be backwards compatible, enforced no message pumping requirement on its user. So it's really unfair, especially given the fact that one of Windows' main claims to fame is its backwards compatibility, for Microsoft to just suddenly decide to add some verbiage to their OS to imply that this behavior, which is in fact inevitable under the original interface - Win16 - is somehow wrong.



    And it's not as if there's any special difficulty associated with making Windows handle this behavior more gracefully... really, the entire "Not Responding" experience seems to me to be an example of planned obsolescence. Microsoft sold Windows XP with the claim that it would run existing software, but they inserted features that made older software look bad.



    Gee, thanks... would you like even more of my money? Because, after all, application programmers and end users are the customers here. If we want to write batch processes with GUIs that kick them off and then lock up, Microsoft should facilitate this, not mock us. Someone else posted something like "'Not Responding' is Microsoft's way of telling your users you're too lazy to pump messages"... as if my users had any idea what that meant, and as if the job of a software vendor were to point out as many flaws as possible in the work of its customers.



    My God some of you people have a distorted view of the world. Oh, but wait, I didn't use "using" correctly in one of my C# programs back in 2003... lemme guess, that's the real WTF. Or maybe seeing NaN on a temperature display at the airport is the real WTF... not when companies get so big and arrogant that they mock their best customers. That's not a WTF... right?


  • Discourse touched me in a no-no place

    @bridget99 said:

    Is it appropriate to throw natural language preconditions on their use, e.g. "the ResizeWindowpane() function accepts two 64-bit integers and returns a single 64-bit integer, but you must not use it on windowpanes where b_ComplicatedFeature is true"? I suppose such things are inevitable, but I certainly would not consider them design positives.
    How else are you supposed to create the 'contract?' A real-life example of what you describe there is in C or C++ where the parameter passed to free() must either be 0 or have come from a previous *alloc() function (as opposed to, say new[]] in C++, or just making it up as you go along in C). Or memcpy() which states that the two buffers concerned should not overlap.



  • @erikal said:

    @topspin said:

    And in your CS course they should have told you about interface contracts. If Win32 says you have to pump messages than that is a contract and it doesn't matter if (you think) that makes sense or not.

     

    Careful, trying to make people understand such concepts is likely to result in exploded heads.

     

    You know, there are plenty of libraries out there that won't work if you try to call them from multiple threads. But there's only one company that I know of that is so stupid and incompetent that they've released a library that arbitrarily refuses to work (or, at least, refuses not to embarrass its developer) unless your program has multiple threads. That turns the rest of the computing universe on its head, it's so stupid. "Not only is our library threadsafe (some of it)... it will mock you if you're program doesn't have multiple threads!" If it weren't the sad truth, it would be worthy of a Yakov Smirnov routine.



  • @bridget99 said:

    If I make a library consisting of a bunch of static functions, like Win32, their signatures are (or at least should be) the "interface contract."

    That sounds like a noble goal. Probably not possible in reality, but a noble goal.

    @bridget99 said:

    In fact, I think you chose that term ("interface contract" vs. simply "interface") because you know that an "interface" is a first-order concept in many languages, and in none of these languages does an "interface" have anything to do with message pumping requirements.

    Sometimes words have more than one meaning.

    @bridget99 said:

    So you've come up with this notion of an interface contract, which is basically the 2012 version of yelling "RYFM" at one's own customers instead of just dealing with their client code gracefully.

    Whoa, Topspin invented it? He should go in the lecture circuit, that could be worth a lot of cash.

    Also, the author of the program that shoves "not responding" on the titlebar is complaining about people who don't "deal with their client code gracefully?"

    @bridget99 said:

    And even if one accepts this notion of having assorted natural language pronouncements as part of the "interface contract," one must admit that 1) propping up the library with these sorts of gotchas detracts from its usability

    True.

    @bridget99 said:

    2) the Win16 "interface contract", with which Win32 was supposed to be backwards compatible, enforced no message pumping requirement on its user.

    False. Try using "Shut Down" while your program isn't pumping messages. It didn't enforce it in the same way that NT does, but it still enforced it.

    Of course that's irrelevant, because a thing doesn't need to be enforced to be part of the contract.

    @bridget99 said:

    So it's really unfair, especially given the fact that one of Windows' main claims to fame is its backwards compatibility, for Microsoft to just suddenly decide to add some verbiage to their OS to imply that this behavior, which is in fact inevitable under the original interface - Win16 - is somehow wrong.

    Inevitable? Somehow most Win16 software other than yours managed it fine. Virtually all Classic Mac software (which had the same contractual requirement, BTW) managed it fine, and Classic Mac didn't even have threads until a couple years before it was scrapped.

    @bridget99 said:

    And it's not as if there's any special difficulty associated with making Windows handle this behavior more gracefully... really, the entire "Not Responding" experience seems to me to be an example of planned obsolescence.

    Ok put on your engineering hat, solve the problem for Microsoft: GUI program Foo isn't pumping messages. The user selected Shut Down. You're Windows-- how do you gracefully handle this situation?

    @bridget99 said:

    Microsoft sold Windows XP with the claim that it would run existing software, but they inserted features that made older software look bad.

    Actually they improved your program, now when its UI locks up the user get a message saying so so they won't spaz all over your controls.

    @bridget99 said:

    If we want to write batch processes with GUIs that kick them off and then lock up, Microsoft should facilitate this, not mock us.

    It does facilitate that type of application, just not at the same time it facilitates GUI applications. Microsoft (shockingly!) sees a GUI application locking-up as a bad thing. If you write the same application in a form-factor without a GUI, for example a Service or a Console application, you can do whatever you like. (Although Services still need to answer messages from the OS.)

    Microsoft isn't mocking you, what a weird assertion. Microsoft is telling your users why the application isn't currently responding to button presses.

    @bridget99 said:

    Someone else posted something like "'Not Responding' is Microsoft's way of telling your users you're too lazy to pump messages"... as if my users had any idea what that meant, and as if the job of a software vendor were to point out as many flaws as possible in the work of its customers.

    Wait, now you admit that not pumping messages is a flaw in your work? Great, we're on the same page. Now fucking fix it.

    @bridget99 said:

    not when companies get so big and arrogant that they mock their best customers. That's not a WTF... right?

    As soon as Microsoft mocks one of their customers, I'll call it out as a WTF. But that'll be awhile-- AFAIK the only Microsoft blogger who talks about backwards compat. is Raymond Chen, and he always anonymizes company names.

    That said, the fact that you feel mocked is promising-- maybe it'll encourage you to go back and fix the program.



  • @bridget99 said:

    But there's only one company that I know of that is so stupid and incompetent that they've released a library that arbitrarily refuses to work (or, at least, refuses not to embarrass its developer) unless your program has multiple threads.

    Between this thread and the last time we discussed this, it's probably been mentioned a dozen times on this board. But here it is again:

    YOU DON'T NEED THREADS TO CONTINUOUSLY PUMP MESSAGES.

    Here's some evidence I have backing this up: the THOUSANDS of Classic Mac applications that had to pump messages (otherwise completely breaking multitasking) and were written when the OS had no thread capability at all. Some of which I wrote myself.



  • @blakeyrat said:

    @bridget99 said:
    But there's only one company that I know of that is so stupid and incompetent that they've released a library that arbitrarily refuses to work (or, at least, refuses not to embarrass its developer) unless your program has multiple threads.

    Between this thread and the last time we discussed this, it's probably been mentioned a dozen times on this board. But here it is again:

    YOU DON'T NEED THREADS TO CONTINUOUSLY PUMP MESSAGES.

    Here's some evidence I have backing this up: the THOUSANDS of Classic Mac applications that had to pump messages (otherwise completely breaking multitasking) and were written when the OS had no thread capability at all. Some of which I wrote myself.

    I stepped away, had a fag, kicked a couple of stray cats, and a new perspective on this occurred to me. You're right... plenty of programs don't have multiple threads, but neither do they show the "Not Responding" message... WTF is up with that?



    I think this relates to Microsoft's definition (and your definition) of "continuously." No program is truly going to respond to messages continuously. Even a well-behaved GUI app must run its event handlers, during which time it is not really "responding."



    This implies that "Not Responding" actually means "Not Responding Quickly Enough According to Some Obscure Microsoft Guideline." This is a bad design, since it relies on some "magic number" time quantum. Of course, Windows is not a real time OS, so this time quantum cannot be expected to actually be constant, or to be reliably enforced, nor can the application programmer truly make guarantees about how long his event handlers will take. So all applications - be they well-behaved or not, and no matter their behavior during development - are really susceptible to the "Not Responding" problem, and that's Microsoft's fault. This makes their decision to throw the blame onto my program even more dubious.



    Personally, the way I deal with this issue in apps that have to be commercial quality, or at least well-polished, is to throw a topmost banner window over the entire display while I'm not pumping messages. I've got no problem with that design... except nobody else does it and Microsoft doesn't encourage it. And if natural language pronouncements are a part of the "interface contract," I'm going to hold said pronouncements to a certain standard of practicality.



    Incidentally, did the versions of MacOS with a Win16-style multitasking model have anything like "Not Responding", or did they just lock up quietly? I'm guessing that the latter option (quiet lockup) was selected, but if Apple had something like "Not Responding" then I suppose I'd be more open to such a design.



  • Calm down dude, you made your point - royally. You don't have to make it twice in a row ;)

    @bridget99 - threads are tools you have available to you. What the feck is the problem in it being a best practice to use them to neatly cooperate with the OS? I'd rather use threading than having to write long running tasks such that they can do their work in short running batches; its just a good practice that saves you from writing hairy code.

    edit: ninja'd.


  • @bridget99 said:

    I think this relates to Microsoft's definition (and your definition) of "continuously." No program is truly going to respond to messages continuously. Even a well-behaved GUI app must run its event handlers, during which time it is not really "responding."

    Someone took over Bridget's account and is using it for trolling. I believed it before, but now... this is just unbelievably stupid.

    @bridget99 said:

    This is a bad design, since it relies on some "magic number" time quantum.

    The "magic number" in XP is (IIRC) 15 seconds. If you haven't replied to a message in 15 seconds, you're locked-up, no question about it.

    @bridget99 said:

    Personally, the way I deal with this issue in apps that have to be commercial quality, or at least well-polished, is to throw a topmost banner window over the entire display while I'm not pumping messages.

    That doesn't work. Plus I wager it's actually more difficult than handling the situation properly in the first place.

    @bridget99 said:

    I've got no problem with that design... except nobody else does it and Microsoft doesn't encourage it.

    That's because it doesn't work.

    @bridget99 said:

    Incidentally, did the versions of MacOS with a Win16-style multitasking model have anything like "Not Responding", or did they just lock up quietly?

    Hard-to-say, since during the entire lifetime of Classic Mac, the OS was actually responding to the same messages as applications were-- so it's not like the Classic Mac message-passing system was ever ported onto an NT-like kernel which could enforce such things as "hey you didn't respond to a message in 15 seconds."

    Mac OS X is just a re-branded NeXT-- it has no link whatsoever with Classic Mac except (in early years) being able to run it in an virtual machine. Now it has no link at all.

    BTW it's good to hear that a programmer who's been around long enough to have written Win16 apps is so knowledgeable about the industry. You didn't already know how Classic Mac worked? Aren't you in the IT industry? Do you just not give a shit? Ding ding ding I think we found the answer.


Log in to reply