• Montoya (unregistered) in reply to Anon
    Anon:
    TRWTF:
         for (int i = 0; i < _bar.Maximum; i++) 
         { 
             if (i == _percentage) 
             { 
                 //execute the real code 
             }
    
             // Always perform progress step 
             _bar.PerformStep(); 
         }
    

    So I'm assuming PerformStep is supposed to prompt the GUI thread to force it to redraw, presumably with some kind of small delay (so you can see the intermediate steps), which means that this code forces the user to wait while the program does some pointless animation before it even starts doing the task. Start the task in another thread immediately and then play around with the progress bar while the task is being done.

    Took a long time for someone to mention TRWTF!

  • StychoKiller (unregistered) in reply to Severity One

    At first I thought you were recommending Roman numerals, which make some sort of perverted sense.

  • (cs) in reply to Dignissim
    Dignissim:
    Kiss me I'm Polish:
    There should be an obligatory UI class at CS courses.

    Q Effing T

    I totally agree with "Kiss me I'm Polish", although I'm not sure what "Dignissim" means. It looks like Q.E.D. somewhat, but that has a totally different meaning (quod erat demonstrandum - that which needed to be proven, if my Latin is correct).

  • (cs) in reply to Anonymous
    Anonymous:
    How about not confusing member variables with locals?
    My local variables don't have their first character capitalized, others do.

    Fits really nice with using i, j, k, l, m or similar for small looping variables, anything that gets used for more than two lines needs a meaningful name of course.

    Addendum (2010-01-25 20:59): So the example given above would look something like this in my code:

    Vector2::Vector2(int x, int y) : X(x), Y(y) { }

    Although I agree with some others that the original example will also suffice, and just to add "this->" if really needed. I like code that's understandable without the need of being aware of certain coding conventions. It's why I don't like all the Hungarian Notation variants, as the average uninitiated outsider will have no clue what they mean.

  • Gazzonyx (unregistered) in reply to RogerWilco

    Q Effing T = QFT = Quoted For Truth

    Although it took me a minute to translate it, also.

  • Mike (unregistered) in reply to mcmcc
    mcmcc:
    What in God's name are you doing that prefixing (presumably private) data members with 'm_' leads to an unmaintainable mess? And upon whom exactly is this convention an imposition? Sounds to me like you already have an unmaintainable mess to start with.
    The warts are a symptom, not a cause. If the classes and functions are kept small enough that the purpose of each variable is immediately obvious, then no warts are necessary. If not, then complexity will breed complexity and the code will turn to spaghetti. In neither case do the warts serve any purpose other than making the code look quirky. I do, however, see the warts as possible evidence of a mindset that tends to favour bloated multi-purpose classes.
    The point is that you can't (reliably) know when it is needed. Most compilers (unfortunately) do not warn about this. If your members are plainly named, there's a decent chance you won't realize that a local variable is overriding it. Your only reliable choice is to wart-ify all references to member variables. Choose your flavor of wart.
    I'll take your word for it that "most" compilers omit this obvious warning - mine doesn't. Even if it did, sensible class/function design would mean this situation would very rarely arise and, when it does, unit tests would catch the mistake straight away. Mandatory wartification of the entire world in the hope of developing habits that would prevent this mistake is a grotesque nonsolution to a nonproblem. It just serves to develop crutches to work around problems that should be fixed by design.
  • Gazzonyx (unregistered) in reply to RogerWilco
    RogerWilco:
    Dignissim:
    Kiss me I'm Polish:
    There should be an obligatory UI class at CS courses.

    Q Effing T

    I totally agree with "Kiss me I'm Polish", although I'm not sure what "Dignissim" means. It looks like Q.E.D. somewhat, but that has a totally different meaning (quod erat demonstrandum - that which needed to be proven, if my Latin is correct).

    [ Let me try this again, but not forgetting the quote this time around. - Gazzonyx]

    Q Effing T = QFT = Quoted For Truth

    Although it took me a minute to translate it, also.

  • methinks (unregistered) in reply to Mike Caron
    Mike Caron:
    dpm:
    I can't think of any clever or even snarky way of pointing out that 1/5 != 0.5

    Let me try:

    "Hmm... 0.5 == 0.2? This must be that 'new math' I keep hearing about..."

    2nd try

    "New math"?

    reminds me of this... ;o)

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

  • Shinobu (unregistered)

    A spinning throbber is no guarantee that the application isn't hung. I've been in the situation where the UI thread of an application kept updating the throbber, while the worker thread was deadlocked due to violating the lock hierarchy. Good times.

  • methinks (unregistered) in reply to Kermos
    Kermos:
    Fred:
    Anonymous:
    frits:
    They must certainly be using Microsoft coding conventions with those stupid leading underscore member names.
    What do you use? Our shop used to use m_xxx for members but we went over to the Microsoft conventions a while ago so now we use exclusively _xxx for members. This is an improvement if only because all member variables are one character shorter and minimising line length is fundamental to improving readability. It's a small improvement but an improvement nonetheless. So what's your solution, frits?

    howabout not prefixing with anything?

    Because not prefixing with anything gives you this issue:

    Vector2::Vector2(int x, int y) : x(x), y(y) { }

    Means you either have to prefix the member variables or prefix the parameters being passed in.

    This on the other hand, has no such issue:

    Vector2::Vector2(int x, int y) : m_x(x), m_y(y) { }

    This is just one example where now prefixing your member variables can cause them to be shadowed by incoming parameters.

    To me, using this->memberVar (or this. in case of .Net languages) is far more of a pain than prefixing with m_

    Oh my, so this is the kind of coding style one learns from using MS-languages and conventions...

    Of course the ONLY sensible way of qualifying a variable as a member IS using the "this"-reference (or -pointer, depending on language and semantics) - not only that the keyword is there for exactly this reason, the reference is ALWAY present implicitely, because ANY member access ALWAYS needs a reference - the compiler is just nice enough to assume "this.", if there is no name collision with a local variable. And using "this." is semantically correct, not a "wart"!

    As a direct consequence of dumb conventions like prefixing members with "m_" or the like, there are in fact many people who are simply not aware of this fact...

    And just in case you REALLY think it is too much hassle to type "this." (which is of course inane with modern IDEs - in fact it is often easier to type "this." and choose the member from the popping up list, which is then also guaranteed to be from the correct scope and typo-free!), at LEAST be sensible and pre- or postfix the LOCAL variables instead of ruining your sensible and alphabetically sortable names for the members!

  • Duke of New York (unregistered) in reply to RogerWilco
    RogerWilco:
    I totally agree with "Kiss me I'm Polish", although I'm not sure what "Dignissim" means. It looks like Q.E.D. somewhat, but that has a totally different meaning (quod erat demonstrandum - that which needed to be proven, if my Latin is correct).
    Please learn to talk like a human being.
  • Jimmy McJimbo (unregistered) in reply to Gazzonyx
    Gazzonyx:
    Q Effing T = QFT = Quoted For Truth

    Although it took me a minute to translate it, also.

    I read it as: "Quite F`ucking True".

    Captcha: facilisis - To facilitate fellatio.

  • oheso (unregistered) in reply to why?
    why?:
    Huh? Why would you need variable names to be alphabetical? Are you using some kind of crazy self-writing code that needs to be able to sort by variable name??

    An IDE with auto-completion of variable names. If you implement a systematic name scheme (doesn't matter whose in a one-man shop, despite the religious wars) then you only have to type a few keys to get the right variable.

  • Paradice (unregistered) in reply to Anonymous
    Anonymous:
    This is pretty horrific and I'm sure it's not a "Microsoft Standard" [b]but[/i] Microsoft certainly have done it before. Internet Explorer anyone? In the last version I used (v6.0), the progress bar would very slowly increment at all times, irrespetive of whether there is any data being sent or received from it. They probably thought to themselves "we can't stop the progress bar when the network gets interrupted, people will think IE is broken!". And it is.

    Actually, it's a two-step progress bar. First it sends the HTTP request and then waits for a response: while waiting, the progress bar is essentially counting towards a timeout. Once a response is received, it becomes a normal download progress bar. In both states, it's indicating how long you're going to have to wait before the view state changes. Which is a perfectly acceptable usage of a progress bar. But don't facts derail your mindless "IE sucks!" rhetoric.

  • (cs)
    This is a Microsoft STANDARD... I'm sure of it!

    He may have been on to something there. Or ON something...

  • Dragan Matic (unregistered) in reply to Steve the Cynic
    Steve the Cynic:
    * Non-measurable-work. This requires the program to commit fiction, in that it cannot show its progress, because it has no idea how much progress it has made. This shouldn't ever happen. You can always report the number of megabytes copied, files deleted, fleens ogglefloggled, etc.

    So what about database? after issuing "update all rows " to database what is there to measure?

  • Raw (unregistered) in reply to Richard
    Richard :
    Actually, the Microsoft way it to have the bar asymptotically increase towards 100% on a timer, never really reaching it. When the task is done, they just slam it to 100% and finish. This is used, among other places, in Microsoft Access.

    That's what we did in our webapp a few years ago. It sounds awful, but our users wanted some kind of moving progress bar (not just a cylon-style moving animation), and they were actually very happy with it. We didn't ever bother reaching 100% since when the task was over the new page would be delivered. Just use an exponentially increasing sleep amount, and only start about 1/2 second after the new page was requested.

    We played around with the idea of measuring weighted average wait times to come up with a better bar, the same way that Hudson does for its tasks, but it turned out that everyone was basically fine with it once we made a couple of tweaks to the scaling.

    What I did in my improvements:

    • Supplying an guesstimated time when starting the progress bar. The asymptotic function would reach 50% on half that time. Surprisingly good results for such a simple algoritm, even with crappy guesses.

    • Faking the percentage a little, so that it's never 0% once it has started, and never 100% until it is really finished, regardless of correct rounding. This eliminates users complaining that a large task does not start or that they can't do anything even though it's finished.

    • Had methods for a more normal bar, where it could be used. The 0% and 100% rules still applied.

    The trick to getting the rest of the team to use progress bars is to make it dead simple, they shouldn't even have to calculate percentage, just call with a record 798 of 17903, and let the bar do the rest. If it's more than one line of code for them, it doesn't get done.

  • Polish (unregistered) in reply to Kiss me I'm Polish

    Yeah, just like some people already do with AJAX! Just show some GIF, then fail your AJAX request and the user will surely wait forever for the process to complete!

  • Anonymous (unregistered) in reply to frits
    frits:
    Anonymous:
    Our shop used to use m_xxx for members but we went over to the Microsoft conventions a while ago so now we use exclusively _xxx for members. This is an improvement if only because all member variables are one character shorter and minimising line length is fundamental to improving readability.

    Obvious Troll is obvious.

    Are you fucking kidding me? I tell you about my shop, I ask you a straight question and you accuse me of trolling? Fuck off back to 4chan you pathetic little 14 year old brat.

  • Steve the Cynic (unregistered) in reply to Dragan Matic
    Dragan Matic:
    Steve the Cynic:
    * Non-measurable-work. This requires the program to commit fiction, in that it cannot show its progress, because it has no idea how much progress it has made. This shouldn't ever happen. You can always report the number of megabytes copied, files deleted, fleens ogglefloggled, etc.

    So what about database? after issuing "update all rows " to database what is there to measure?

    An interesting question, with no easy answer. An old friend used to cite a study done at DEC. Apparently user-initiated tasks are either instantaneous or take (what feels like) an infinite amount of time.

    The boundary, however, is around 80-120 milliseconds, depending on the individual, that is, not very long at all.

    In the context of this, we can conclude that progress bars, whirlygigs, etc. are all just eye candy to give us something to watch, and might as well be the flying folders animations from Windows Explorer.

  • THE Brian (unregistered)

    In my last major project, I experimented with a progress bar, but the results were less than spectacular. Instead, I settled on a status bar at the bottom, and I placed meaningful messages ('Querying Database' ...) in it. The users liked that a lot better than the progress bar, and it was helpful when the occasional bug was revealed. ("What was the last status message you saw?")

  • Machtyn (unregistered) in reply to Severity One
    Severity One:
    Surely, there must be a more elegant way of doing this. Perhaps involving XML...

    and regular expressions!

  • (cs) in reply to Anonymous
    Anonymous:
    frits:
    Anonymous:
    Our shop used to use m_xxx for members but we went over to the Microsoft conventions a while ago so now we use exclusively _xxx for members. This is an improvement if only because all member variables are one character shorter and minimising line length is fundamental to improving readability.

    Obvious Troll is obvious.

    Are you fucking kidding me? I tell you about my shop, I ask you a straight question and you accuse me of trolling? Fuck off back to 4chan you pathetic little 14 year old brat.

    If the selected quote is not a trolling attempt, then you really are stupid--or a noob. Does your "shop" call this naming convention the "Microsoft" naming convention? Reducing line length by one character? That surely must be a joke.

  • Anonymous (unregistered) in reply to frits
    frits:
    Anonymous:
    frits:
    Anonymous:
    Our shop used to use m_xxx for members but we went over to the Microsoft conventions a while ago so now we use exclusively _xxx for members. This is an improvement if only because all member variables are one character shorter and minimising line length is fundamental to improving readability.

    Obvious Troll is obvious.

    Are you fucking kidding me? I tell you about my shop, I ask you a straight question and you accuse me of trolling? Fuck off back to 4chan you pathetic little 14 year old brat.

    If the selected quote is not a trolling attempt, then you really are stupid--or a noob. Does your "shop" call this naming convention the "Microsoft" naming convention? Reducing line length by one character? That surely must be a joke.

    As I said, it's a small improvement but an improvement nonetheless. How can you possibly claim that reducing line length is a "joke"? It results in a real and tangible improvement to code readability, whether or not you realise it or like it. Have you ever actually written code for a real software development house? Because I have to say, you reek of a college kid with more opinions that experiences.

    I have no idea why you've chosen to attack me, I honestly just wanted to know how your company handled this particular convention, but if you want to be a prick about it that's just fine. I'm seriously starting to doubt that you're even out of college so it's not like your opinion has any credence anyway.

    No disrespect but the grown-ups are trying to have a sensible conversation here so why don't you just pop off back to 4chan where you'll be around people of your own mentality (ie. other 14 year olds).

  • Bob (unregistered) in reply to Kermos
    Kermos:
    Or even better, progress bars that move from 0 to 100%, then do so again...and again...and again...and again...
    We are forced to use Lotus Notes at work. When you launch Notes (TRWTF), a loading screen greets you. It's eventually replaced by a loading bar that goes from 0% to 100% (it's numbered). At 48%, a second progress bar appears underneath it, fills, then dissappears. Again at 73%. After 100% we get a fourth progress bar in a diferent style (and no indication anywhere that it's connected to the Notes process). This is the last progress bar, and when it's full, you're only about 3 minutes away from being able to check your mail :-/
  • Mike (unregistered) in reply to Anonymous
    Anonymous:
    frits:
    Anonymous:
    frits:
    Anonymous:
    Our shop used to use m_xxx for members but we went over to the Microsoft conventions a while ago so now we use exclusively _xxx for members. This is an improvement if only because all member variables are one character shorter and minimising line length is fundamental to improving readability.

    Obvious Troll is obvious.

    Are you fucking kidding me? I tell you about my shop, I ask you a straight question and you accuse me of trolling? Fuck off back to 4chan you pathetic little 14 year old brat.

    If the selected quote is not a trolling attempt, then you really are stupid--or a noob. Does your "shop" call this naming convention the "Microsoft" naming convention? Reducing line length by one character? That surely must be a joke.

    I have no idea why you've chosen to attack me

    I see no attack here, just a suggestion that a post with all the hallmarks of a troll is likely to be a troll. But since you want a serious reply:

    Ritualistic conventions like this have no bearing on code quality, and very little bearing on readability. Shortening the warts, thereby reducing line length by at most a handful of characters, will make no difference to readability. Removing the warts altogether might, since there will be less clutter for the brain to trip over, but the difference will be small.

    If your "shop" has an established codebase that uses pointless typographical conventions, it's best to go along with them and save your energy for dealing with real problems. Wholesale dewarting of a large project, or applying conventions inconsistently, may introduce bugs and will generate friction with team members that enjoy their rituals.

    If you start a new project and have the luxury of choosing your conventions, then don't introduce any warts at all. Structuring your code so that everything has a clear purpose will produce better results in the long term than scattering vague clues throughout less well structured code.

  • Anon (unregistered) in reply to Mike
    Mike:
    Anonymous:
    frits:
    Anonymous:
    frits:
    Anonymous:
    Our shop used to use m_xxx for members but we went over to the Microsoft conventions a while ago so now we use exclusively _xxx for members. This is an improvement if only because all member variables are one character shorter and minimising line length is fundamental to improving readability.

    Obvious Troll is obvious.

    Are you fucking kidding me? I tell you about my shop, I ask you a straight question and you accuse me of trolling? Fuck off back to 4chan you pathetic little 14 year old brat.

    If the selected quote is not a trolling attempt, then you really are stupid--or a noob. Does your "shop" call this naming convention the "Microsoft" naming convention? Reducing line length by one character? That surely must be a joke.

    I have no idea why you've chosen to attack me

    I see no attack here

    Really? Aside from the merits, or lack thereof, of what Anonymous originally posted, surely you don't think calling somebody stupid is constructive?

  • jg (unregistered) in reply to Anonymous
    Anonymous:
    frits:
    They must certainly be using Microsoft coding conventions with those stupid leading underscore member names.
    What do you use? Our shop used to use m_xxx for members but we went over to the Microsoft conventions a while ago so now we use exclusively _xxx for members. This is an improvement if only because all member variables are one character shorter and minimising line length is fundamental to improving readability. It's a small improvement but an improvement nonetheless. So what's your solution, frits?

    I dunno. How about variable names without retarded prefixes?

  • Mike (unregistered) in reply to Anon
    Anon:
    Really? Aside from the merits, or lack thereof, of what Anonymous originally posted, surely you don't think calling somebody stupid is constructive?

    It seems like a reasonable response to "fuck off you pathetic brat", and a reasonable description of someone who regards replacing one set of pointless typographical warts with another as an "improvement". But that's between Anonymous and frits - I'm just here to read about amusingly bad code.

  • Rhialto (unregistered) in reply to Grovesy
    Grovesy:
    to be honest I'm happy with prefixing member fields with '_',
    You can't use those identifiers, since names starting with '_' are reserved to the compiler. See the C99 standard, section 7.1.3 (page 178 of http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf )
  • sane person (unregistered) in reply to dpm
    dpm:
    I can't think of any clever or even snarky way of pointing out that 1/5 != 0.5

    1/5 == 0.5 in base 25.

  • (cs) in reply to Mike
    Mike:
    Anon:
    Really? Aside from the merits, or lack thereof, of what Anonymous originally posted, surely you don't think calling somebody stupid is constructive?

    It seems like a reasonable response to "fuck off you pathetic brat", and a reasonable description of someone who regards replacing one set of pointless typographical warts with another as an "improvement". But that's between Anonymous and frits - I'm just here to read about amusingly bad code.

    Oh, no. He's your troll now. I'm done.

  • (cs)

    Some "interesting" points by posters:

    • Using random values to animate a progress bar is better than using a marquee style bar when it's impossible to make a reasonable estimate.

    • That you can't estimate time to complete for common tasks like file copying.

    • That you can't do progress bars in AJAX.

    If you believe any of the above are true, you are defective and your matter should be recycled into something more functional. Possibly cat food.

  • Mike (unregistered) in reply to Rhialto
    Rhialto:
    Grovesy:
    to be honest I'm happy with prefixing member fields with '_',
    You can't use those identifiers, since names starting with '_' are reserved to the compiler. See the C99 standard, section 7.1.3 (page 178 of http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf )

    Technically, these are only reserved for use as identifiers with file scope (or, in C++, as identifiers in the global or std namespaces). So using them as member names is allowed, but is in poor taste.

  • Quirkafleeg (unregistered) in reply to Hans
    Hans:
    As with everything else in engineering, it is a trade off: very long lines are unpleasant, but so are extremely short names for variables and functions. About half the screen width seems fine in most cases (unless you have a 30" Cinema Display...)
    That's all well and good, but it says nothing about how many characters that is (and that's assuming that a monospaced font is in use). And don't you mean the window width?
  • Harold (unregistered) in reply to Dragan Matic
    Dragan Matic:
    Steve the Cynic:
    * Non-measurable-work. This requires the program to commit fiction, in that it cannot show its progress, because it has no idea how much progress it has made. This shouldn't ever happen. You can always report the number of megabytes copied, files deleted, fleens ogglefloggled, etc.

    So what about database? after issuing "update all rows " to database what is there to measure?

    Absolutely nothing unless you go to some extra effort and get fancy. You can count how many rows wil have to be updated and aproximate a time per row to be updated and lie to the user. Or you could spin another task up, and actually monitor how maqny rows were updated, but you cannot do this via SQL, you'd have to have a sophisticated monitoring program like comes with a grown up database.

  • Quirkafleeg (unregistered) in reply to Anonymous
    Anonymous:
    There's a much more elegant way of doing this - I don't know what language the original is in (C-pound?) but in Java […]
    There's a language called ‘C£’?
  • The Wanderer (unregistered) in reply to Quirkafleeg
    Quirkafleeg:
    Anonymous:
    There's a much more elegant way of doing this - I don't know what language the original is in (C-pound?) but in Java […]
    There's a language called ‘C£’?
    Whoosh.

    (Post attempt: 3.)

  • db (unregistered) in reply to Hans
    Hans:
    Anonymous:
    What do you use? Our shop used to use m_xxx for members but we went over to the Microsoft conventions a while ago so now we use exclusively _xxx for members. This is an improvement if only because all member variables are one character shorter and minimising line length is fundamental to improving readability.

    I strongly disagree with that. As with everything else in engineering, it is a trade off:

    Ha! If you were a real engineer your convention would be that any variables starting with I, J and K are integers :)
  • Marvin (unregistered) in reply to Steve the Cynic
    Steve the Cynic:
    * Non-measurable-work. This requires the program to commit fiction, in that it cannot show its progress, because it has no idea how much progress it has made. This shouldn't ever happen. You can always report the number of megabytes copied, files deleted, fleens ogglefloggled, etc.

    How about a long running SQL stored procedure that takes variable amount of time to finish processing depending on the data in various tables and to even figure out which data will be processed it takes almost as much time as processing it.

    The only thing that can be shown there is time elapsed and that is not enough for a progress bar (which is what users really want).

  • (cs) in reply to The Wanderer
    The Wanderer:
    Quirkafleeg:
    Anonymous:
    There's a much more elegant way of doing this - I don't know what language the original is in (C-pound?) but in Java […]
    There's a language called ‘C£’?
    Whoosh.

    (Post attempt: 3.)

    It's unusual for someone missing a joke to supply their own whoosh. Congratulations.

  • Markus Milleder (unregistered) in reply to Mike
    Mike:
    Rhialto:
    Grovesy:
    to be honest I'm happy with prefixing member fields with '_',
    You can't use those identifiers, since names starting with '_' are reserved to the compiler. See the C99 standard, section 7.1.3 (page 178 of http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf )

    Technically, these are only reserved for use as identifiers with file scope (or, in C++, as identifiers in the global or std namespaces). So using them as member names is allowed, but is in poor taste.

    Until some compiler header defines them as a macro :-)

  • Mike (unregistered) in reply to Markus Milleder
    Markus Milleder:
    Until some compiler header defines them as a macro :-)

    Nope: that's only allowed if it starts with two underscores, or an underscore and a capital letter. These are reserved for "any use" (i.e. including macros), not just "use as a name in the global namespace".

    But this is irrelevant to good coding practice. If you need a language lawyer to determine whether some freaky name is legal or not, then just choose a less freaky name.

  • dotdotdot (unregistered)

    This comment is a Microsoft Standard... I am sure of it!

  • (cs)

    I wrote a download progress indicator for the OS/2 version of our product that animated after a given amount of data had been read. The faster it went, the faster your data was moving; if it stopped moving, something was wrong. Nifty, for 1994.

    My Windows counterpart also thought it was nifty, but she used a Windows widget that animated on a timer. It didn't even bother to stop if the download failed.

  • Anonymous coward (unregistered)

    Hah i did like him at least once in the past, just don't tell the users. It's not like they can really tell anyway.

  • Tim (unregistered)

    My progess bar for server responses times the tasks, stores them in a database and performs a non-linear least squares regression on them to determine statistically likely time to complete given the number of items to process, then counts it down. Total overhead: fraction of a second. Progress bars have run times over 20 minutes in some cases. Users get realistic feedback, and the program apologies on my behalf if it guess wrong, then stores the data to do a better job next time.

    This could be an operating system service in an operating system that cared about user satisfaction.

  • myself (unregistered) in reply to Name

    marquee scroll? is that like a posh beer tent scroll?

  • ... (unregistered)

    I don't see the WTF here. On embedded systems you don't have file system. So...

    Brilliant!

  • Quirkafleeg (unregistered) in reply to Iain Collins
    Iain Collins:
    […] you can't do progress bars in AJAX.
    True.

    Well, sort of true.

    It gets a bit messy with all that powder…

Leave a comment on “Meaningless Progression”

Log In or post as a guest

Replying to comment #:

« Return to Article