• Some Jerk (unregistered) in reply to Brian
    Brian:
    Remy Porter:
    PHP has frameworks that allow you to not merge implementation and document structure. But PHP, as usually used, is friggin' terrible. It's Classic ASP with PERL-like syntax, which is roughly equivalent to the product of a forced mating between a hippopotamus and a duck-billed platypus.

    Which language matches which organism can be left as an exercise to the reader.

    A smooshed Platypus?

    A Flatypus

  • (cs) in reply to Some Jerk
    Some Jerk:
    Brian:
    Remy Porter:
    PHP has frameworks that allow you to not merge implementation and document structure. But PHP, as usually used, is friggin' terrible. It's Classic ASP with PERL-like syntax, which is roughly equivalent to the product of a forced mating between a hippopotamus and a duck-billed platypus.

    Which language matches which organism can be left as an exercise to the reader.

    A smooshed Platypus?

    A Flatypus

    Depends: Who's on top?

  • Some Jerk (unregistered) in reply to PiisAWheeL

    I just can't picture a platypus climbing like that.

  • Joe (unregistered) in reply to Some Jerk
    Some Jerk:
    1. Didn't say I look down on other languages... just said that I choose not to use the ones that are not designed for my role. I don't look down on Flash and Cold Fusion... they just are designed with a different intent in mind... and one that is incompatible with what I do (professionally speaking).
    Most programming languages are incompatible with professional speaking.

    I mean, who in their right mind would speak Java and have to end every statement with a ; ?

    Or Python, where much of the meaning of your words is held in the silence between them?

    Or Perl, which would be indistinguishable from static?

    Or VB/PHP/pickyourWTF, which would be indistiguishable from Tourette's syndrome?

    Professional speaking is much better handled in a language like Klingon. You haven't truly heard a powerpoint presentation until you've heard it in the original Klingon.

    --Joe

  • danielpauldavis (unregistered)

    My eyes! The giggles do nothing!

  • dogmatic (unregistered) in reply to Some Jerk
    Some Jerk:
    I find it funny how every wtf article ends up with people claiming one language or another is the WTF. It is surprising that one of the largest commonalities among developers (and the distinction between inferior developers and good ones) is that they are all brashly convinced that the coding language they choose to use is the single best solution and all other languages, platforms and technologies are inferior.

    I, for one, will use any language to equal effect (except cold fusion... but that is OBVIOUSLY not designed for professional use... or Flash, which is clearly modeled for designers and not programmers... and other such tools that are obviously inappropriate). In my experience, I have seen JSP and ASP.NET websites perform the same functionality with a lower performance threshold as vbscript or php websites... due to the inexperience or stupdity of the coder. They were probably fools that were simply using a technology they didn't understand because some idiot convinced them that it was best.

    Hopefully.. my fellow developers will move forward and judge the quality of the code and not their enthusiasm for the technology exectuting it.

    CAPTCHA : consequat - when cause and effect turns you into a vegetable?

    Flash has one of the best programming languages out there behind it. AS3 is an excellent OOP, strongly typed language. Not to mention Flex, which is geared towards enterprise level applications. And which Adobe, in their infinite wisdom, abandoned right after pushing it like mad to many corporations. That was a huge debacle, but I digress. The sad thing is most everything that would've been done with Flash is done with Javascript now and JS is horrible by comparison. Adobe's stewardship of Flash has been a miserable failure.

  • Jay (unregistered) in reply to Ayn Rand's Ghost!
    Ayn Rand's Ghost!:
    Nagesh:
    I look down on all languages includes English.

    If I were to speak your kind of language, I would say that man's only moral commandment is: Thou shalt think. But a 'moral commandment' is a contradiction in terms. The moral is the chosen, not the forced; the understood, not the obeyed. The moral is the rational, and reason accepts no commandments

    Hmm, I just don't know where to begin.

    So it is not "moral" for the government to pass laws against murder, because that would then be "forced"? I don't doubt that it would be nice if everyone behaved morally from their own free choice. But if it's a choice between hoodlums beating up and raping little old ladies, and the government or society forcing its morality on the hoodlumns, I choose "forcing morality".

    And it is unreasonable to say, for example, "Make your arguments based on fact and not emotion", because that would be a "commandment"? Umm, no.

  • mainframe web dev (unregistered) in reply to dogmatic
    dogmatic:
    Flash has one of the best programming languages out there behind it. AS3 is an excellent OOP, strongly typed language. Not to mention Flex, which is geared towards enterprise level applications. And which Adobe, in their infinite wisdom, abandoned right after pushing it like mad to many corporations. That was a huge debacle, but I digress. The sad thing is most everything that would've been done with Flash is done with Javascript now and JS is horrible by comparison. Adobe's stewardship of Flash has been a miserable failure.

    Flash binary is crazy good. No bytes. If something requires only 3 bits, that's what it passes. Reminds me of using unsigned numerics for storing "cash on hand". Also to the earlier comment about ColdFusion not meant for professional development -- didn't that sell for like > 100M on a startup budget of 20k? And the confluence -- sad that Harpoon was never released by Adobe after the ColdFusion buyout. We were to supposed to get Flash JSP generated from servlets... bummer.

  • Crampy Grampy (unregistered) in reply to WC
    WC:
    People want to feel that something is happening, and computers often do it really fast.
    This reminds me of how fight choreography in older Steven Seagal films had to be slowed down so the audience would be able to see exactly what he did to disable the bad guy, i.e. to make it look "realer." If it were real and full speed, you'd see a guy approach him, make some brief/glancing contact, and then fall to the ground unconscious or writhing in pain ("WTF? He didn't even hit him!").
  • (cs) in reply to Jay
    Jay:
    Ayn Rand's Ghost!:
    Nagesh:
    I look down on all languages includes English.

    If I were to speak your kind of language, I would say that man's only moral commandment is: Thou shalt think. But a 'moral commandment' is a contradiction in terms. The moral is the chosen, not the forced; the understood, not the obeyed. The moral is the rational, and reason accepts no commandments

    Hmm, I just don't know where to begin.

    So it is not "moral" for the government to pass laws against murder, because that would then be "forced"? I don't doubt that it would be nice if everyone behaved morally from their own free choice. But if it's a choice between hoodlums beating up and raping little old ladies, and the government or society forcing its morality on the hoodlumns, I choose "forcing morality".

    What's interesting about this is that Ayn Rand was opposed to anarchy, but that's a nice straw man you have there. Also, you do know you've been trolled, right?

  • Dazed (unregistered) in reply to Jens
    Jens:
    Well, it is a good idea. Not the unicorn part, that is more a matter of taste. But slowing down processing to enhance the UX may sound like a sin to engineers but often it is really helping the customer to understand what happens. Not automatically the best solution here, but sounds reasonable to me.
    Slowing down processing to help the user typically refers to such things as ensuring that messages stay on the screen long enough to be read, and avoiding flickering displays. What has that got to do with this WTF?
  • Spewin Coffee (unregistered)

    Bronies! Magical things happen in the land of My Little Pony.

    If the end-user of this software is a little 5 year old girl, then I don't see a problem. Otherwise, hire someone else fast because maintaining software written by a Brony is going to be vomit-inducing.

  • myname (unregistered) in reply to Le Forgeron

    this i coming close: [image]

  • That's the (second) one (unregistered) in reply to Jens
    Jens:
    Well, it is a good idea. Not the unicorn part, that is more a matter of taste. But slowing down processing to enhance the UX may sound like a sin to engineers but often it is really helping the customer to understand what happens. Not automatically the best solution here, but sounds reasonable to me.
    Really, this shows up all over. I'm in game development and I've seen it more than a few times. It makes operations look important, even if they're actually only taking a fraction of a second to complete.
  • foxyshadis (unregistered) in reply to That's the (second) one
    That's the (second) one:
    Jens:
    Well, it is a good idea. Not the unicorn part, that is more a matter of taste. But slowing down processing to enhance the UX may sound like a sin to engineers but often it is really helping the customer to understand what happens. Not automatically the best solution here, but sounds reasonable to me.
    Really, this shows up all over. I'm in game development and I've seen it more than a few times. It makes operations look important, even if they're actually only taking a fraction of a second to complete.
    I'm firmly convinced that most level loading times on mobile games are so they can either show you more ads, or at least shove their "hints" at you repeatedly to minimize support traffic.
  • jMerliN (unregistered)

    TRWTF is using a busy loop as a delay. Should've used a more formal time-delayed redirect or something that doesn't chew up CPU doing nothing. Everything else is peachy (except ASP, WTF man?).

    Captcha: verto, that's what the unicorn got.

  • (cs)

    "It's really important that the user knows the server is doing important work."

    "As opposed to us, right?"

  • johnny_five (unregistered) in reply to GoodtimesSnuggler

    What he said.

    (FU Akismet. Seriously.)

  • foo (unregistered) in reply to Remy Porter
    Remy Porter:
    I'll say this much: PHP is better than using CGI to do web development.
    Do you also think apples are better than orange juice bottle seals? CGI is an interface that can be used via various libraries in various languages.

    Unless, of course, you're referring to Computer Generated Imagery. PHP might indeed be better than that for web development, slightly.

  • Nasukkin (unregistered)

    A WTF indeed, but sadly more common (I imagine) than some may realize. I came upon a similar issue before, where we wrote an iPad application that uploads data to a remote server. The data was mostly user-entered text (iPad-typed text, no less!), so as you can imagine the upload went by really quick.

    Product management looked at it and were greatly distraught; how were they to know anything had been uploaded if the upload bar flashed by too quickly for the user to see move? Unacceptable user experience! Upload of text-based JSON must take longer.

  • (cs) in reply to foo
    foo:
    Do you also think apples are better than orange juice bottle seals? CGI is an interface that can be used via various libraries in various languages.

    Unless, of course, you're referring to Computer Generated Imagery. PHP might indeed be better than that for web development, slightly.

    That's specifically why I called out CGI, not the various languages that can interface with it. Because it doesn't matter what language you're using- CGI basically converts STDOUT into an HTTP response. Again, you can layer enough APIs on top of it to not make it utter shite, but the core premise is, itself, bankrupt.

  • C-Derb (unregistered) in reply to Remy Porter
    Remy Porter:
    foo:
    Do you also think apples are better than orange juice bottle seals? CGI is an interface that can be used via various libraries in various languages.

    Unless, of course, you're referring to Computer Generated Imagery. PHP might indeed be better than that for web development, slightly.

    That's specifically why I called out CGI, not the various languages that can interface with it. Because it doesn't matter what language you're using- CGI basically converts STDOUT into an HTTP response. Again, you can layer enough APIs on top of it to not make it utter shite, but the core premise is, itself, bankrupt.

    Pearl Jam is the greatest band in the history of the world!

    Completely irrelevant, I know, but just like this conversation, there is no right answer.

    Ok, just kidding. The greatest band in the history of the world really is Pearl Jam.

  • NotARobot (unregistered) in reply to iToad
    iToad:
    Remy Porter:
    "...But there's a difference between being able to solve a problem and their ability to solve a problem elegantly..."

    I am so going to steal this.

    "Engineering is the art of doing for a shilling what any clown can do for a pound." Nevil Shute. You're a bit late...

  • Bill (unregistered) in reply to WC
    WC:
    I'm not sure what the WTF is supposed to be. This is actually something that is done and works.

    People want to feel that something is happening, and computers often do it really fast. Slowing it down makes them think it worked harder. One of the major tax companies does this with their online tax software. It spends like 5 seconds 'loading' my account, when I know good and well that it's already loaded when I logged in.

    I've heard other usability stories that say their customer opinion improved when they showed a loading bar in certain places that it was expected, instead of just doing things fast.

    If there's any real WTF here, it's people. And not the one who implemented the loading bar here.

    ATM's and that reassuring whirring sound....

    I'll bet people would actually think the bank didn't do things properly if a withdrawl was quicker - and the whirring sound makes it clear to the user that something important is going on....

  • Jim (unregistered) in reply to Andrew
    Andrew:
    Remy Porter:
    When you get down to it, each language is exactly the same- they're all (or mostly all) Turing Complete, and hence can be used to solve any problem.

    Can we please stop repeating this vacuous truth? Turing-completeness only applies if you're willing to dedicate an unbounded amount of memory and wait an unbounded length of time for your solution.

    Problems in the real world come with hardware, time, and programming effort constraints, so no, just because a language is Turing-complete does not mean it can be used to solve any problem.

    Pedants Anonymous 1 800 555 436

    Actually, Turing-complete languages CAN be used to solve any programming problem. The problem of obtaining hardware with enough grunt to help facilitate this, however, cannot usually be solved using these languages.

    The abilities of the language are not constrained by your pissie mainframe....

  • foo (unregistered) in reply to Remy Porter
    Remy Porter:
    foo:
    Do you also think apples are better than orange juice bottle seals? CGI is an interface that can be used via various libraries in various languages.

    Unless, of course, you're referring to Computer Generated Imagery. PHP might indeed be better than that for web development, slightly.

    That's specifically why I called out CGI, not the various languages that can interface with it. Because it doesn't matter what language you're using- CGI basically converts STDOUT into an HTTP response. Again, you can layer enough APIs on top of it to not make it utter shite, but the core premise is, itself, bankrupt.

    That's just the transport. (And actually that's the trivial part of CGI. The, uhm, slightly less trivial part is how the request etc. is passed.) It's like saying TCP/IP sucks because the raw HTTP request and response is passed through it.

    You can use any HTML generating library with CGI or copy your text from templates. CGI is neutral to all of this. So I really don't understand what you mean.

    Even PHP can run over CGI. The decision between PHP as a module or via CGI is basically a question of performance vs. security. Is that what you're getting at? Though, as far as I'm concerned, if either performance and/or security is really an issue, I wouldn't use PHP anyway, but rather a compiled and/or type-safe language.

  • bl0wf1sh (unregistered)

    That reminds me of a website modification I had done once for a client. PDFs had to be shown, and normally those will just pop up in a new window (or the same window), with no progress indicator (if they are relatively small). The client, however, wanted some indication that the file was loading (so people do not click on the same link again furiously).

    So at first, we tried to do loading the PDF via a flash service, which is pretty, and has a nicely animated loading image overlay... but the customer was not happy.

    In the end, we did a short delay (client-side) before actually loading the PDF, with an image and saying "please be patient, PDF is loading" or sth like that. This made the client happy, and was implemented. The delay serves no practical purpose except to delay the loading of the PDF and to notify the user of the fact that he had just clicked that link.

  • (cs)

    This reminds me of the time when our 'server' applications (things that connect to databases, do some stuff, and connect to a back-end system) were actually Swing applications, with a GUI. Sure enough, you could stop and start such an application by clicking a button. One particular example had a little dog running about when the application was running, and the dog sitting down and wagging its tail when the application was stopped.

    Obviously, there were a couple of disadvantages to this approach. For one thing, the 'server' applications all had their own window, all running on a Windows machine, and you have to take care not to log out. Also, the task bar was filled to the brim with windows.

    The unimaginative brute that I was, I replaced the lot with a service framework that runs from the console and logs using log4j.

  • (cs)

    Summary of thread: Building a good UX is hard.

    My observation: I just wish more user-facing software components were written by people who a) were aware of this and b) gave a flying fuck.

    Case in point: PIN pad machines for Chip & PIN credit cards. Far too many do not update the display after you enter your PIN, until after they have had an approval from the card. A few will display "Veuillez patienter" immediately after you press the green button, and then "Code bon" after the card agrees, so you know they've heard you. (The ones I use say these things, because I live in France, so mostly use ones intended for use by French people. I'm not French.)

  • (cs) in reply to Jim
    Jim:
    Actually, Turing-complete languages CAN be used to solve any programming problem. The problem of obtaining hardware with enough grunt to help facilitate this, however, cannot usually be solved using these languages.
    Well, saying "Turing-complete" just means you've got a general while loop (or equivalent mathematical structure), variables and a way of doing arithmetic that isn't restricted to a fixed number of bits. (Theoretically infinite, but nobody works with infinite state TMs if they can avoid it.)

    Turing-completeness says absolutely nothing about interacting with hardware, or about the timeliness of the production of results. These things matter a lot in the real world. (They are why a language like Brainfuck can't be used for serious web programming. Now, if you added syscalls then you could at least contemplate it…)

  • UNICORNS!!! (unregistered)

    I am very glad that clicking on unicorn gave me the expected behavior

  • Nagesh's Pet Goat (unregistered) in reply to Jim
    Jim:
    Actually, Turing-complete languages CAN be used to solve any programming problem. The problem of obtaining hardware with enough grunt to help facilitate this, however, cannot usually be solved using these languages.

    Actually, there is one problem that no Turing-complete language can solve: deciding if a program (written in the same language) will terminate.

    A non-Turing-complete language can be devised to write programs which are guaranteed to terminate, so the decision is simple, it is always positive.

    (Since you did not define "programming problem", to me this is a valid example of such a problem. If you had said "computable problem", you would be correct. "Real world" and "business" problem are subjective and not allowed in rational discussion.)

  • (cs) in reply to Zylon
    Zylon:
    Given who anonymized this article, I very strongly doubt that the animated GIF in question was actually of a unicorn.

    But we can live in hope.

  • Anonandon (unregistered) in reply to Some Jerk
    Some Jerk:
    Remy Porter:
    Doing templating with code infrastructure behind it is one of the fastest ways to generate unmaintainable spaghetti code.

    WebForms is also terrible, although for different reasons (look at Node.js to see how event-driven web programming is done correctly). I'm fairly certain Alex built this site in WebForms, but that doesn't change the fact that WebForms was hideous and makes the dolphins cry.

    PHP was designed for web development, in theory, but given the core design decision was that it should mix code and document in a single file, it is not good for web development. You can make it good for web development by never using it the way it was designed, but once you leave a certain level of small scale applications, you're going to bump into serious problems with the PHP architecture.

    Code is code. Document/presentation is document/presentation. You shouldn't mix them any more than you should put data access code in your view classes.

    Spoken like a true enterprise developer. Have you forgotten that for every website with a complex business model, there are nearly 100 which require only a handful of basic CRUD operations?

    <snip>
    But for every 100 of these, I'd guess there are quite a number that start like that in someone's head, but then they want it a bit more polished and interactive and they don't really want to be constantly switching pages to see different stuff, and before you know it you've got reams of document/script that rely on dozens of hard-coded references and constants, and that break, silently and at run time, at the slightest provocation.

    Grr.

  • Some Jerk (unregistered) in reply to Anonandon

    now that has nothing to do with the language. In 13 years I have yet to find a scope that didn't creap... if only a little. That is no excuse to write sloppy code though :p.

  • Anonandon (unregistered) in reply to Some Jerk
    Some Jerk:
    now that has nothing to do with the language. In 13 years I have yet to find a scope that didn't creap... if only a little. That is no excuse to write sloppy code though :p.
    Serious question then - does anyone know any good articles on how to get rid of all the hard-coded identifiers, unsafe method calls, silent failures and general hacks (hidden fields to ensure UI state stays consistent, etc) from Javascript/JSP pages?
  • noland (unregistered)

    By popular demand (you asked for it): http://www.masswerk.at/cornifiedLoader/

    Public Domain. (Don't know what that will mean in terms of kharma ...)

  • noland (unregistered) in reply to noland

    Totally forgot to advertise the name: "The Glorious WTF Cornified Loading Indicator" And here it is, by popular demand: http://www.masswerk.at/cornifiedLoader

  • Some Jerk (unregistered) in reply to Anonandon
    Anonandon:
    Some Jerk:
    now that has nothing to do with the language. In 13 years I have yet to find a scope that didn't creap... if only a little. That is no excuse to write sloppy code though :p.
    Serious question then - does anyone know any good articles on how to get rid of all the hard-coded identifiers, unsafe method calls, silent failures and general hacks (hidden fields to ensure UI state stays consistent, etc) from Javascript/JSP pages?

    Code maintenance is much like physical fitness. Only a great deal of work can get the code into shape... and only continuous effort can keep it that way. I can tell you how to prevent things from getting to that point... but the only way that I know of to turn bad code into good code involves a keyboard, a lot of hours and even more caffine.

    Captcha: iusto - iusto write bad code too... but I know better now.

  • noland (unregistered) in reply to Some Jerk

    You could write a tiny script to delete these entities from the page, but this would just break the platform the code was generated by. Maybe you could use such a script to enforce a decent praxis:

    var codeWatchDog = new function() {
        var legalGlobals = {};
        var legalHiddenFields = {};
        function init() {
            // collect initial entities
            for (var p in window) legalGlobals[p] = true;
            for (var i = 0, l = fields.length; i < l; i++) {
                var f = fields[i];
                if (f.type == 'hidden' && f.id)
                    legalHiddenFields[f.id] = true;
            // and start
            setInterval( bark, 20 );
        }
        function bark() {
            // delete any additional simple entities
            // of the global object
            for (var p in window) {
                if (!legalGlobals[p]) {
                    switch (typeof window[p]) {
                        case 'number':
                        case 'string':
                        case 'boolean':
                            delete window[p];
                            break;
                    }
                }
            }
            // delete any additional hidden fields
            var fields = document.getElementsByTagName('input');
            for (var i = 0, l = fields.length; i < l; i++) {
                var f = fields[i];
                if (f.type == 'hidden'
                    && !legalHiddenFields[f.id]
                    && f.parentNode)
                        f.parentNode.removeChild(f);
            }
        }
        init();
    }

    I would not advise to use such a construct.

  • noland (unregistered) in reply to noland

    Ahem:

        function init() {
            // collect initial entities
            for (var p in window) legalGlobals[p] = true;
            var fields = document.getElementsByTagName('input');
            for (var i = 0, l = fields.length; i < l; i++) {
                var f = fields[i];
                if (f.type == 'hidden' && f.id)
                    legalHiddenFields[f.id] = true;
            }
            // and start
            setInterval( bark, 20 );
        }
  • Some Jerk (unregistered) in reply to noland

    ... ummm $(function() { alert('you are a dumb@$$ if you expect this to do your job for you!'); });

  • noland (unregistered) in reply to Some Jerk
    Some Jerk:
    ... ummm $(function() { alert('you are a dumb@$$ if you expect this to do your job for you!'); });
    But it would be a pain in the @$$ for anyone who would be cluttering the global object ... ;-)
  • foo (unregistered) in reply to Some Jerk
    Some Jerk:
    It is surprising that one of the largest commonalities among developers (and the distinction between inferior developers and good ones) is that they are all brashly convinced that the coding language they choose to use is the single best solution and all other languages, platforms and technologies are inferior.
    It's what separates professionals from amateurs. Those that think this way are either inexperienced or amateurs... at least that's what i learned spending the last decade in the field.
  • David L. (unregistered) in reply to Some Jerk

    "cold fusion... but that is OBVIOUSLY not designed for professional use"

    I say BS to this. ColdFusion is perfectly acceptable for enterprise level applications.

    Get over yourself.

  • Some Jerk (unregistered) in reply to David L.

    lol. Get over myself. :p. I didn't belittle Cold Fusion... I just said it is not designed for professional use. The reason I said that is simple. It was architected with drag and drop and wizards as the principal form of interaction. It is designed so that anybody with intelligence can produce information management sites without need for things like knowledge and experience. These features being the key selling point of the technology, the architecture incures a massive performance differential from large volumes of plumbing infrastructure. The programming language is then built on top to EXTEND the capabilities for users who take the time to learn it. Other platforms are the other way around... the language and infrastructure consuming a framework and then augmented with WYSIWYG.

    It is good for proof of concepts, and it is good for small businesses that cannot afform a programmer. Comparitive performance however is so inferior (unless they have come a VERY long way in 2 years) is not even a potential argument. Cold Fusion (On Windows at least) actually manages to perform worse than JAVA. That does not smack of Enterprise scale to me... and certainly does not imply that it was intended for Enterprise.

  • Jazz (unregistered) in reply to Remy Porter
    Remy Porter:
    PHP has frameworks that allow you to not merge implementation and document structure. But PHP, as usually used, is friggin' terrible.

    If by "frameworks" you mean "best practices," and by "usually" you mean "frequently by newbies," then sure. The common PHP frameworks will force you into using good practices, too, but you don't need a framework to write good PHP. Every developer I know who has used PHP (even without a framework) for more than 18 months knows better than to merge implementation with document structure. The projects I work on in PHP have roughly 70% of their files as pure object-oriented code, no presentation, and the other 30% presentation files with a smattering of view logic where it's needed.

    The assertion that all PHP developers can't write reliable, maintainable code, just because everybody's seen at least one PHP application with unreliable, unmaintainable code, is just as false as saying that every Christian hates gay people just because some Christians - who happen to be very loud and prominent in the media - hate gay people.

    Remy Porter:
    It's Classic ASP with PERL-like syntax, which is roughly equivalent to the product of a forced mating between a hippopotamus and a duck-billed platypus. Which language matches which organism can be left as an exercise to the reader.

    Perl is clearly the hippopotamus – bloated but deadly. ASP is the duck-billed platypus - so ugly your brain can't believe it's a real thing.

  • Jazz (unregistered) in reply to Anonandon
    Remy Porter:
    PHP was designed for web development, in theory, but given the core design decision was that it should mix code and document in a single file, it is not good for web development. You can make it good for web development by never using it the way it was designed, but once you leave a certain level of small scale applications, you're going to bump into serious problems with the PHP architecture.

    You're close. Everywhere you say "designed" you should really say "originally designed." PHP was originally designed around the templating-with-supporting-infrastructure approach because, let's not forget, when web programming became a thing in 1995 or 96, that was the best idea anyone had at the time of how to do it. Later, when the pitfalls of this approach became clear, massive changes were made to PHP (versions 5 and 5.3) so that it was easier to use in a way that it hadn't originally been designed. PHP 5 and 5.3 are a significant departure from the mash-it-all-up approach which characterizes bad PHP code.

    Now, when they made 5 and 5.3, they refused to break existing functionality, so it's still possible to use PHP 5.3 to code really terrible apps, sure. All the crap code written in PHP 3 or PHP 4 still runs, just as crappily, on 5 and 5.3 (for the most part). And whether or not that backwards-compatibility is a good thing or not is sure open to debate. But please realize that no decent developer still uses it the way it was originally designed.

    As for the scalability of PHP: I think I'll let Facebook talk about this one. If PHP is running the largest social networking website in the history of the world, I don't think any more really needs to be said about its scalability.

  • (cs) in reply to Steve The Cynic
    Steve The Cynic:
    Case in point: PIN pad machines for Chip & PIN credit cards. Far too many do not update the display after you enter your PIN

    Worse would be the terminals/software used by McDonalds in Australia (or at least where I am)... They come up with "Enter PIN" about 1 second before they start accepting input. So I end up regularly either missing the first digit off, or pressing the first digit far too many times as I get frustrated and start tapping it.

  • EmperorOfCanada (unregistered)

    I agree that sometimes you need to make the server look like it is working hard. Otherwise people will feel that the process/transaction failed.

Leave a comment on “Fruity Loop”

Log In or post as a guest

Replying to comment #:

« Return to Article