Slashdot Mirror


When a CGI Script is the Most Elegant Solution

An anonymous reader writes "Writing local Web applications can be quick, easy, and efficient for solving specific Intranet problems. Learn why a Web browser is sometimes a better interface than a GUI application and why experienced Web developers find themselves struggling to learn a GUI toolkit, and descover that a simple CGI script would serve their needs perfectly well, if not better."

256 comments

  1. When is a CGI script the most elegant solution? by Anonymous Coward · · Score: 5, Insightful

    When everything else is not.

    1. Re:When is a CGI script the most elegant solution? by caluml · · Score: 1
      If "everything else" comprises of more than 1 element, then it will never equal "the most elegant solution", as the title "most elegant" can only be applied to one thing.

      if ( count($everything_else) > 1 )
      {
      die("Not the most elegant solution");
      }
      Meh. I'm so l33t.
    2. Re:When is a CGI script the most elegant solution? by Anonymous Coward · · Score: 0

      ... er, ANYTHING , anything must be better than byteboyz ebonics cr*polla.

    3. Re:When is a CGI script the most elegant solution? by Anonymous Coward · · Score: 0

      Should be moderated funny, it's clearly a set-theory joke!

  2. Easier than Networking! by MattPat · · Score: 5, Insightful

    Quick web scripts are way easier than developing an application if only for the fact that you don't need to figure out how to use networking in whatever language you'd be working in. Plus, you don't need to "distribute" the application once it's done, and you don't need to provide updates to every user on your network who's using it: update your script, update the application.

    Plus, developers think in program logic, not in program design. A web script let's the developer write their output in HTML, then go back in later and add some CSS for presentation once they've got the program actually working. I say, it's a good way to do things.

    Not to mention that a lot of web scripting languages are easier to use than full-blown application languages, and there are many packages that let you attach native GUIs to web scripts. There isn't a compelling argument not to go that route if your application a) uses networking, and b) is distributed over an intranet.

    1. Re:Easier than Networking! by AmazingRuss · · Score: 1, Informative

      I don't buy the distribution thing...you have to distribute a link, and you could just as easily distribute a small downloader/installer, and build an auto updater into the app. With a web app, you also download your code with every single page. Graphics. HTML. Javascript. Every single time.

      Then there is the joy of browser compatiblility. You start out saying, oh, we will only support browser X...but it never sticks...and your regression testing grows geometrically with each browser and version of browser you support.

      If you have a simple form/submit application, or you don't control the workstations you will be deploying the app on, then a web app makes sense. Otherwise, a high level language running directly against an SQL server is the way to go. It's no harder than writing a web app, and you get much better response time and control.

    2. Re:Easier than Networking! by MattPat · · Score: 5, Insightful

      You start out saying, oh, we will only support browser X...but it never sticks...and your regression testing grows geometrically with each browser and version of browser you support.

      Honestly, as a web developer, I've never quite understood this. Whenever I design a website, it'll often look different in multiple browsers (read: it'll be effed up in Internet Explorer), but unless I use a particularly fancy bit of JavaScript, they almost always functionally work the same in multiple browsers. I just don't get it... are the people who are writing the web apps really that bad with their concept of standards? Are they relying on browser bugs to do a job? Or are they just getting way too cutesy with their JavaScript? Should someone give them a dictionary open to the word "testing"? It just seems to me to be silly not to spend five extra minutes per browser to open your app up in IE, Firefox, Safari (if Macs will be using the app), and Opera (which is pretty guaranteed to work if Firefox and/or Safari does).

      Other than that, though, I agree with what you're saying, in many cases it looks like a full-blown app would be the best solution. I was thinking along the lines of quick fixes that were easily expandable, though, which in my mind is best for web app.

      But hey, in computers there's no wrong way to do anything, right? You just need to gauge which method will make your users swear the least. ;)

    3. Re:Easier than Networking! by Shados · · Score: 3, Informative

      things like Java Web Start or .NET's ClickOnce solve the distribution issue. The advantages of the web are more lightweight UIs, easier to distribute to -third partys-, and better cross platform compatibility (even compared to Java). Easier update and maintenance, not so much.

      Im working for an (extremely large) company that decided on web apps for the deployement thing alone, without needing (or -wanting-) any of the other advantages. So we have slow, bloated, IE6-only web apps. Hey, its easy to deploy. Has the users cursing non-stop and wanting us dead. But its easy to deploy!

    4. Re:Easier than Networking! by Jeff+DeMaagd · · Score: 1

      I think it's a good idea, and it's easier to manage the software for multiple platforms because web pages can be made platform agnostic.

    5. Re:Easier than Networking! by skoaldipper · · Score: 4, Insightful

      You are exactly right. When other business competitors (to us) were developing elaborate GUI based alternatives to our browser portal, our clients (and theirs) migrated to our platform instead. Which Industry? The Insurance companies - Progressive, Infinity, State Farm, etc. It was a perfect match for all their agents distributed across the nation (and who weren't even located on those companies premises). For heavy form processing, the browser already provided the interface - the backend delivery system we developed was a snap. And this was over a decade ago, long before distribution across the internet - just using their intranets. The biggest bonus from this GUI switch to browser? Maintenance - by far. Feature changes (like menu arrangements or additions) a close second.

      --
      I hope, when they die, cartoon characters have to answer for their sins.
    6. Re:Easier than Networking! by Anonymous Coward · · Score: 0

      With a web app, you also download your code with every single page. Graphics. HTML. Javascript. Every single time.


      Only if the user's browser has no cache or they have disabled it, or if you have disabled caching of the content server side and your application has absolutely zero static content.
    7. Re:Easier than Networking! by AmazingRuss · · Score: 4, Insightful

      "unless I use a particularly fancy bit of JavaScript, they almost always functionally work the same in multiple browsers. "

      But which bits of java script are fancy and which are not? And how often is almost always? It comes back to pushing stuff out on the server and crossing your fingers...and there is plenty of that inherent in development without your two qualifications. I guess I'm kind of anal, but, dammit, when I write a line of code I want it to do the same thing for everybody that runs it. That way I can focus my attention my own boneheaded mistakes.

      " I was thinking along the lines of quick fixes that were easily expandable, though, which in my mind is best for web app."

      Quick fixes that are easy expanded tend to grow into gigantic morasses of tacked on code with no toplevel design. In 20 years, the poor churl that has to deal with that monster will be damning you to the fiery depths of hell!

    8. Re:Easier than Networking! by nuzak · · Score: 1

      but unless I use a particularly fancy bit of JavaScript, they almost always functionally work the same in multiple browsers. I just don't get it... are the people who are writing the web apps really that bad with their concept of standards?

      Perhaps the Javascript they write is, I dunno, particularly fancy? Once you handle events, for example, in your code beyond onClick and onMouseOver, you find they need to be handled differently. And a site that's "effed up" in IE isn't actually acceptable to most web developers who want to get paid. When you start creating boxes and moving them around with JS, that box model problem is magnified.

      That said, cross-platform libraries exist that work across all major browsers, so indeed I've never sweated the difference.

      --
      Done with slashdot, done with nerds, getting a life.
    9. Re:Easier than Networking! by misleb · · Score: 3, Interesting

      Quick web scripts are way easier than developing an application if only for the fact that you don't need to figure out how to use networking in whatever language you'd be working in. Plus, you don't need to "distribute" the application once it's done, and you don't need to provide updates to every user on your network who's using it: update your script, update the application.


      What's funny though is that the example in the article was neither networked nor multiuser. Why not skip the CGI part even and just have commandline scripts to do certain things? I can't say I've ever really consider writing a simple, single-user one-off GUI application. Nor can I think of a time where I'd want a personal web server listening on a local IP/port.

      Plus, developers think in program logic, not in program design. A web script let's the developer write their output in HTML, then go back in later and add some CSS for presentation once they've got the program actually working. I say, it's a good way to do things.


      No, developers think in program design. *Programmers* things in program logic. :-)

      Not to mention that a lot of web scripting languages are easier to use than full-blown application languages, and there are many packages that let you attach native GUIs to web scripts. There isn't a compelling argument not to go that route if your application a) uses networking, and b) is distributed over an intranet.


      But if it doesn't do a or b (as in the article), Perl/Tk is probably simpler than even bothering with a web server. That is assuming that a GUI is even important at all.

      -matthew

      --
      "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
    10. Re:Easier than Networking! by mini+me · · Score: 1

      I say, it's a good way to do things.

      I'm a firm believer in doing it the other way around. The GUI design should drive the application's design - the application's design should not drive the GUI design. Not only is it easier building the application around the GUI, the results are almost always better, in my experience at least.
    11. Re:Easier than Networking! by achacha · · Score: 0

      We have run into a lot of problems with WebStart (haven't tried NET yet so don't know). But versions are a big problem with java, something that works on jre 1.4 may not work on jre 1.5 and to code for jre 1.3.1 just to be compatible is often limiting. This doesn't even address the issues of a problems in 1.4.6 (for example) that do not occur in 1.4.7 and you may need to avoid or write your own way to doing it to avoid this. .NET got the version handling down much better, so I would be interested in seeing it work.

    12. Re:Easier than Networking! by didde · · Score: 3, Insightful

      First of all, distributing a link seems like a smaller obstacle than distributing an executable file of some sort... A simple office text/plain e-mail would suffice.

      With a web app, you also download your code with every single page. Graphics. HTML. Javascript. Every single time.
      Yeah, or you could try caching stuff locally on the client machine. This can easily be done with expire-tags or similar. I'd also considering using inline CSS and JavaScript instead of linking them in externally as files. Surely this will reduce the network load. One could also use AJAX where applicable in order to keep pages from refreshing too often. This would also make the app quite snappy.

      Otherwise, a high level language running directly against an SQL server is the way to go
      Again, this traffic across the network would not exist if you used a web application for the purpose. So, perhaps the HTML transferred through the network is in fact equal to the SQL flowing back and forwards? Hmm.

      Then there is the joy of browser compatiblility. You start out saying, oh, we will only support browser X...but it never sticks...and your regression testing grows geometrically with each browser and version of browser you support.
      Ok, but what happens to your precious application when your company's Windows users are screaming for a functional version? Mac OS X? The web is a great tool if you need to deliver content and functionality across different setups. I'm sorry, but to me your arguments sound silly. I believe this is a matter of relativity; if I know how to create web based applications (internal or external) and do it good, then it'd probably be the wisest choice instead of me trying to learn "a high level language". Of course, this goes both ways.

    13. Re:Easier than Networking! by Bozzio · · Score: 3, Interesting

      I think major compatibility issues always have to do with the very basic ways the different browsers handle javascript and event. A GREAT example is if you ever have to write somecode for when a page unloads. It'll work fine in IE, Safari, and Firefox, but good luck getting it to work on Opera. I spent hours trying to figure out why onunload didn't work on Opera... apparently it's a "feature!"

      Anyway, whenever I've had problems with script compatibility it's ALWAYS been with event hooks, and with very basic interpretation differences in javascript between browsers. And let me tell you, getting these scripts to work is a LOT more than 5 minutes per browsers. Sometimes you'll need to write an extra 200 lines of script just to get the same feature in all browsers.

      It's not as simple as you made it seem.

      --
      I just pooped your party.
    14. Re:Easier than Networking! by MattPat · · Score: 1

      I see what you're saying, it seems to be the Mac way of development (I'm a Mac developer, that wasn't an insult :P). I was just thinking, while for consumer apps that's best, if you're in need of a very quick application to do a job, user interface might be willing to take a back seat.

    15. Re:Easier than Networking! by AmazingRuss · · Score: 1

      Well, if learning a high level language is such a barrier, you should definately stick with your scripting language....but I don't see how you can make an accurate comparison between the two methods if you have only ever used one.

      And always I hear about the "ease of deployment". Deployment happens ONCE per client...while the application will be used thousands of times. Even if it were significantly harder to get an exe onto a machine, it is insignificant effort over the lifecycle of the app.

      When I first learned how to write web apps, I agreed with your arguments. Multiple projects later, I learned otherwise, the hard way. The modern browser is a hack of a hack of a hack of a hack...and your application ends up being the top hack on the hack stack. Sometimes you need to do it that way, but I think browser apps are over used because people won't take the time to learn to write a thin client app. It really isn't any more difficult, it just requires a bit of willingness to learn, and the results are far superior.

    16. Re:Easier than Networking! by Shados · · Score: 1

      Well, the main thing with .NET is that its sent through windows update, and you can very easily push it through a windows domain (you can push anything mind you, but its obviously a lot easier to push windows components). Its also a big part of SQL Server's Reporting Services (the user end tools are pushed with ClickOnce), so you know there's a relatively large user base testing it. It "just works".

    17. Re:Easier than Networking! by jacksonj04 · · Score: 1

      Graphics can be cached, as can JavaScript using a .js file. So can CSS, which means all you need to send is the page content.

      Browser testing I agree on, but it's getting better and only really tends to flare up if you're doing something huge with AJAX. For the apps the article is on about (Rought and ready) then browsers can deal with it pretty well.

      --
      How many people can read hex if only you and dead people can read hex?
    18. Re:Easier than Networking! by Fastolfe · · Score: 1

      You only have to distribute a link once and can upgrade/patch to your heart's content without having to worry about re-testing an upgrade/installation process for your user base.

      I do agree that the decision to go with a web app should be made based on the requirements of the project. Use the best tool for the task. Sometimes that can be a web app, but sometimes it should be something else.

    19. Re:Easier than Networking! by Dragonslicer · · Score: 3, Informative

      I'm gonna have to agree with Opera on this one. onunload is the source of annoying pages and advertisements that can only be closed by killing your browser process.

    20. Re:Easier than Networking! by AmazingRuss · · Score: 1

      That very link could be to your installer package....and you could build automatic updating into your app. I push update binaries out via a simple SQL query.

    21. Re:Easier than Networking! by nuzak · · Score: 1

      Then the browser should decide the policy, much like it does with window.open(). Failing to support it at all is simple laziness at everyone else's expense.

      That said, onunload isn't anything you can rely on for running cleanup -- it certainly doesn't run when the user closes their browser entirely.

      --
      Done with slashdot, done with nerds, getting a life.
    22. Re:Easier than Networking! by Ash+Vince · · Score: 1

      Then there is the joy of browser compatiblility. You start out saying, oh, we will only support browser X...but it never sticks...and your regression testing grows geometrically with each browser and version of browser you support.

      Nah, it pains me to say but most of the time that is a load of rubbish. You just make sure your app works in IE6 and that covers it.

      I would love to develop more cross browser stuff, but I am never allowed to spend too much time on it. I also work on projects as a part of a team so no matter how much time I spend making my bits work in any browser one of the other devs doesnt do this and then chances are the whole app wont work.

      Management never care as the customers never complain they cant access the app in firefox, opera or whatever. Our app is aimed at corporate customers and they are all on IE6. I look forward to the day we get asked for firefox compatibility because I will come out of it smelling of roses but I am not going to hold my breath.

      --
      I dont read /. to RTFA, I read /. to offend people in ignorance.
    23. Re:Easier than Networking! by Bozzio · · Score: 1

      Yes, it is a source of advertisement nuisances, BUT, onunload can be used for MUCH more. I've been asked to develop application (Web Applications specifically) for use on intranets and MANY of these applications require a pop-window to validate information (or modify parent window forms). I can't rely that everybody here (especially management!) is smart enough to click on "update" or "submit," so I have to have the updated values submitted on unload. Works like a CHARM in all browsers but Opera. In Opera I had to implement a "watcher" that checked if the child window was still open at regular intervals. If the watcher can't find the child, then it submits copies of the child window's variables to the parent window. To make this work I had to have EVERY variable copy over to the watcher EVERY time it was modified. That is not elegant.

      --
      I just pooped your party.
    24. Re:Easier than Networking! by ozone_sniffer · · Score: 1

      "Quick web scripts are way easier than developing an application if only for the fact that you don't need to figure out how to use networking in whatever language you'd be working in." Uhmm ... exactly when the HTTP protocol was banned from the networking family? Granted, you don't need to implement it into your CGI web app, but if you don't have at least a very basic understanding of it you won't get to far, IMO.

    25. Re:Easier than Networking! by ozone_sniffer · · Score: 1

      Perhaps what you really meant is using *sockets* instead of using networking. Very different things, methinks.

    26. Re:Easier than Networking! by tepples · · Score: 1

      It just seems to me to be silly not to spend five extra minutes per browser to open your app up in IE, Firefox, Safari (if Macs will be using the app), and Opera (which is pretty guaranteed to work if Firefox and/or Safari does). Many hobbyists looking to gain experience in order to find a job can afford only one computer, not the two it takes to run both IE and Safari nor the $400/year it costs to subscribe to one of those browser-cam services.
    27. Re:Easier than Networking! by MattPat · · Score: 1

      Off-topic, but for the record: BrowserShots is a free service for this. It takes awhile, but it works.

    28. Re:Easier than Networking! by tepples · · Score: 1

      That very link could be to your installer package For which platform? (Windows does not run Mac OS X packages, nor vice versa. Wii packages must be signed by Nintendo, who doesn't care about smaller developers.) What about for web kiosks in public places? (EXEs not signed by the administrators do not run.)
    29. Re:Easier than Networking! by plams · · Score: 4, Informative

      "But which bits of java script are fancy and which are not?"

      This is actually quite easy. Stuff that relates to the DOM often differ from browser to browser while the core language does not. This is somewhat similar to the fact that you can compile and link ANSI-compliant C on virtually any platform as long as you don't do anything platform specific.

      At work I recently developed a JavaScript framework for calculating text length that had to take variable character widths and hyphenation into account. The idea is that the user can type away in a standard TEXTAREA field and know when some predefined text area in a PDF document is full. I think the code ended up as 500+ lines of JavaScript code, but the ONLY browser specific problem I ran into was a subtle difference in the parsing of arrays; Firefox would treat the statement [1,2,3,4,] as an array with the length of 4, while Internet Explorer would say the length was instead 5 (and the last value was "undefined", if I recall). I gather that the reason why browser independence came so painlessly was that 95% of the code was just text processing and number crunching anyway. I doubt I'd have the same luck if I tried to do a WYSIWYG editor since it would have a great more interaction with the DOM.

    30. Re:Easier than Networking! by Tablizer · · Score: 1

      Not to mention that a lot of web scripting languages are easier to use than full-blown application languages,

      If we are talking about smaller-scale applicates for data entry and reporting, I have to disagree. Tools like FoxPro and to a lessor extent MS-Access and VB-6 allowed really quick RAD. I could bang out stuff really fast in those, but web apps are less visual and more difficult to control the flow. With desktop apps, one can change the direction of flow on the fly based on question boxes, etc. One has to bust their balls to get flexible flow control with HTML forms because the TARGET attribute has to be known in advance. There are work-arounds, but they are clunky.

    31. Re:Easier than Networking! by Durandal64 · · Score: 1

      Buy a Mac with Parallels and run Safari and IE on the same machine. Problem solved.

    32. Re:Easier than Networking! by XO · · Score: 1

      I built the entire POS system for my gf's business over the course of about 4 hours, in PHP. It works great. :)

      --
      "Champagne for my real friends - and real pain for my sham friends!" http://ericblade.postalboard.com/
    33. Re:Easier than Networking! by Anonymous Coward · · Score: 0

      I just don't get it... are the people who are writing the web apps really that bad with their concept of standards?
      Yes.

      Seriously. Where I work we have some forms on our intranet that only work with Internet Explorer 6. They're just basic HTML forms with a couple of lines of trivial JavaScript input validation, and yet they manage only to work with a single version of a single web browser.

      No, I couldn't believe it either, until I actually got round to spoofing their stupid browser detection code and discovered that it was really actually true that they'd managed to write an HTML form that didn't work in Firefox...
    34. Re:Easier than Networking! by Tim+Browse · · Score: 1

      I just don't get it... are the people who are writing the web apps really that bad with their concept of standards? Are they relying on browser bugs to do a job?

      Well, I only skimmed the article, but:

      You can use image buttons for many purposes, although they do require you to develop images. If you want to bypass this, create an image button with alt text and an invalid URL for its image

      So yes, perhaps they are.

    35. Re:Easier than Networking! by redtux1 · · Score: 1

      I've done both (perl/cgi/postges when given the choice, MSAccess when not) and it is far easier going the cgi route

    36. Re:Easier than Networking! by Anonymous Coward · · Score: 1, Interesting

      So we have slow, bloated, IE6-only web apps. Hey, its easy to deploy. Has the users cursing non-stop and wanting us dead. But its easy to deploy!

      So you're expressing a preference for non-web apps based on the fact that the people who wrote your company's web app are incompetent? What the hell makes you think they'd have done a better job with whatever other toolkit they used, especially keeping in mind that both of those you mentioned would simply give them vastly more opportunity to seriously screw things up?

      If you've never used a properly designed and written web app (and from the tone of your comment, I'd guess not) you have no idea just how well they can work. Not everybody loves using them, but my experience with replacing non-web internal apps with web-based ones has been that the majority of people much prefer the web-based app. And if the developers of the software are clueless... well, no toolkit in the world is going to save them.

    37. Re:Easier than Networking! by misleb · · Score: 1

      Yeah, i'm sure it is wonderful. *rolls eyes*

      --
      "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
    38. Re:Easier than Networking! by Anonymous Coward · · Score: 0

      Where I work we have an application that only works properly in NS4.79. It's a CGI driven web application, yet rather than fix the cgi scripts it is easier to just keep rolling out 4.79, complete with its "Bus Error" shenanigans. Eugh.

    39. Re:Easier than Networking! by CastrTroy · · Score: 1

      This is something I've never really gotten about modern web development environments. Why do they try to veer away from having the code output the HTML? Ruby on Rails has the Model View Controller idea in which the HTML is hard coded, and varibles are filled in. .Net has well, drag and drop to design your webpage and put some code to control it in the back end. These are great for quick little apps, but fail when you need to customize the HTML, when different users need to see different things. Maybe I'm different because I'm used to the old ASP, and PHP, but I think it's much easier to do web apps when the code controls the output. Things seem to be a lot easier to customize when the code controls the HTML, rather than the other way around.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    40. Re:Easier than Networking! by CastrTroy · · Score: 1

      Is there any employer that wouldn't hire you because you couldn't list the rendering differences between IE and Safari? Couldn't you just use Linux with Konquerer in a VM to test on a Safari-like browser. Sure it's not exactly the same, but it's close enough. At least as close as any other two versions of Safari. If you're running a business, then surely you can afford a mac or two for testing. Get a Mac Mini, open up 4 users in Fast-User-Switching, each with their own VNC Server, and you immediately have 4 mac Terminals. It's not blazingly fast, but you're just testing a web app. If you don't run a business, don't fret, nobody cares if you don't know all the specific browser quirks of safari, just that you understand HTML and JS enough to fix browser quirks when they appear.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    41. Re:Easier than Networking! by ShaunC · · Score: 2, Insightful

      I'd also considering using inline CSS and JavaScript instead of linking them in externally as files. Surely this will reduce the network load.
      Actually, the opposite should be true. Client browsers will typically[1] cache the contents of an external .css file, downloading it no more frequently than once per visit (the same holds true for .js files). If you're inlining your CSS or Javascript as part of your pages, the client has to download a copy each and every time they load a new page on your site. Granted, for a personal blog or your local copy of Gallery, that isn't a big deal, but for an enterprise-grade site, compartmentalizing your CSS away from your view is almost always a good idea.

      [1]Geeks will be the exception here; I always set my browsers to download a fresh copy of files "every time" as opposed to the normal default of "once per session."
      --
      Thanks to the War on Drugs, it's easier to buy meth than it is to buy cold medicine!
    42. Re:Easier than Networking! by tepples · · Score: 1

      Buy a Mac That's still two computers. I apologize for not having mentioned that the web designer is more likely to already own a PC running Windows than to already own a Mac.
    43. Re:Easier than Networking! by tepples · · Score: 1

      Couldn't you just use Linux with Konquerer in a VM to test on a Safari-like browser. For running Linux under Windows, do you recommend VMware Server or a different product? How quickly do Linux, X11, Qt, KDE, and Konqueror run under a VM, so that people can distinguish VM performance problems from deficiencies in Konqueror itself?
    44. Re:Easier than Networking! by Shados · · Score: 1

      So we have slow, bloated, IE6-only web apps. Hey, its easy to deploy. Has the users cursing non-stop and wanting us dead. But its easy to deploy! So you're expressing a preference for non-web apps based on the fact that the people who wrote your company's web app are incompetent? What the hell makes you think they'd have done a better job with whatever other toolkit they used, especially keeping in mind that both of those you mentioned would simply give them vastly more opportunity to seriously screw things up? If you've never used a properly designed and written web app (and from the tone of your comment, I'd guess not) you have no idea just how well they can work. Not everybody loves using them, but my experience with replacing non-web internal apps with web-based ones has been that the majority of people much prefer the web-based app. And if the developers of the software are clueless... well, no toolkit in the world is going to save them.
      Quick to assume, eh? No. The people in charge of making decisions, decided on something not understanding its advantages and drawbacks. Our apps have requirements that fall straight in line with thick clients, and have very, VERY little in common with web apps. The developers just did what they were told (good people, but sheeps), made applications out of the use case to the best of their abilities. Which ended up with a total mess. However, I will admit that most of the developers had no clue how to use the web: Which is part of the thing, if all your senior developers haven't touched the technology, you either train them, or you go with a thick client. Existing ressources (and that includes the current hired developers) should always be considered in an analysis.

      I know very well that well written web apps. Thats my speciality. Which is why I can easily tell when its a good idea to use a web app, and when it isn't. When part of your requirement is to be able to display extreme amounts of data, and allow a bazillion amounts of operation in a single screen, updating the data in real time, all while minimising network usage, and that your current users were used to a terminal app (aka: extremely, EXTREMELY fast), a thick client through an automatic deployement technology, using binary remoting, is what you want. -Especially- when cross platform compatibility of any kind isn't required, and actually, isn't even desired (one of our requirements was total integration in the current system, including windows token authentification, active directory, etc, and while thats all possible cross platform, its a decent bit longer).

      Makes more sense now? We needed -nothing- web apps bring to the table, except ease of deployement, which is in itself not a major advantage anymore. Developping a thick client would have been faster, easier, more efficient, and more responsive for the scenarios we had to deal with. I, of course, would not be working there if they had made that decision, since I'm a web application specialist.
    45. Re:Easier than Networking! by Tablizer · · Score: 1

      To each their own. Not that there are no decent OSS HTTP editable grids. Editable grids simplify a lot of apps.

    46. Re:Easier than Networking! by nacturation · · Score: 1

      I built the entire POS system for my gf's business over the course of about 4 hours, in PHP. It works great. :) Only 4 hours? No wonder you call it a Piece Of Shit.
      --
      Want to improve your Karma? Instead of "Post Anonymously", try the "Post Humously" option.
    47. Re:Easier than Networking! by phorm · · Score: 1

      Ok, but what happens to your precious application when your company's Windows users are screaming for a functional version?

      Ummmm, standardize on a cross-platform compatible browser? Firefox, Mozilla, and I believe netscape/opera are available on most if not all major platforms.

      Just because they're windows users doesn't mean they're tied to a particular browser. We have plenty of both windows and linux machines at work, and they both get firefox, and generally both behave the same in firefox in regards to loading/displaying pages.

    48. Re:Easier than Networking! by fireboy1919 · · Score: 0

      user can type away in a standard TEXTAREA field and know when some predefined text area in a PDF document is full... ...but the ONLY browser specific problem I ran into was...

      No offense, but that means that you don't know much (or forgot about) the major incompatibilities between browsers. There's a great, sleeping dragon that you just barely skirted.

      I assume you're attaching an "onkeypress" or "onchange" event to the textarea. That would be the logical approach to that.

      Lets say that you liked your code and decided to implement it on another form, only this form is written to validate the entire form when you finish everything using some clever framework-generated javascript - maybe rails, maybe struts...whatever.

      Does your code still work the same in both browsers?

      No - because DOM event-compliant browsers and IE both bubble events differently. Fixing these two to work together in one browser won't fix them in the other. You have to have special cases to deal with both varieties. And that ends up being a huge pain if your framework didn't think of this to help ensure that every node with a listener on it gets to actually see its events.

      This is the fundamental problem that means that everyone always has to check for cross compatibility. Without events, javascript isn't dynamic. Without events, everything that javascript does can be done either server-side or with straight HTML. Events are the core of javascript, and they work differently depending on the browser.

      The is only the biggest problem. There are others. Most notably, there are some parts of IE that won't even accept events. You have to keep in mind which parts those are and basically not use them in Mozilla at all if you want your script to work everywhere.

      And now something completely different...I've identified a real problem. Now I'd like to address what I see as a nonproblem.
      Stuff that relates to the DOM often differ from browser to browser while the core language does not.

      Where exactly are you getting this? IE accepts all of the node addressing features of the DOM. While the event framework isn't supported (and it certainly isn't core to the functionality of DOM; it was tacked on afterward), anything at all that can get events through other means can get them through the DOM.

      As an example, here are the crucial DOM functions that I use that work in IE the same way that they do in Mozilla (a lot of these will work with any node object from the DOM; some are restricted to the global variable "document"):
      getElementByID,getElementsByName,attachEvent,detac hEvent,getElementsByTagName,childNodes,parent

      That covers the vast majority of scripts out there that use the DOM. Because IE has it's own special way of addressing things, you're more likely to cover everybody if you *do* use the DOM rather than not, since IE supports those things too. Which functions are you referring to that it doesn't support?

      --
      Mod me down and I will become more powerful than you can possibly imagine!
    49. Re:Easier than Networking! by Anonymous Coward · · Score: 0

      clearly the popup is the problem rather than the flawed solution you are trying to make it into.

    50. Re:Easier than Networking! by Phroggy · · Score: 1

      With a web app, you also download your code with every single page. Graphics. HTML. Javascript. Every single time.
      Yeah, or you could try caching stuff locally on the client machine. This can easily be done with expire-tags or similar. I'd also considering using inline CSS and JavaScript instead of linking them in externally as files. Surely this will reduce the network load. One could also use AJAX where applicable in order to keep pages from refreshing too often. This would also make the app quite snappy. Nope, you're definitely thinking backwards. Go ahead and use inline CSS and JavaScript during initial development, because it's simpler to debug, but once that's done, put it in a separate file. You're correct that there will initially be more overhead because the browser has to make several different connections to download each file, but these are all static files. The browser will cache them locally, and when you go to a different page that uses the same CSS or JavaScript code, the browser will just use its local copy, instead of requesting those files again. The browser may ask the server for information about the files, and compare their last-modified timestamp to the date on the files in the cache, then only reload if the file has changed.

      Another thing the grandparent mentioned is that "you download your code with every single page", and while this is true of the HTML component of it, the actual logic that runs behind the scenes is not downloaded, and depending on what you're doing, that could be quite a bit larger. For example, I've got about 3,000 lines of Perl code to generate my home page (not because it needs to be that complicated, but because I was bored, and kept adding new features, because I could - it's my personal site, I can to do that if I want). That's not including the actual content.

      You're absolutely right about browser compatibility. It was a problem 5-10 years ago; the problem is now mostly solved. Write valid HTML and check it with the W3C Validator, and it'll work on pretty much anything. CSS is a huge pain in the ass (the CSS validator doesn't help, because your errors are still valid code, they just don't do what you meant), but maybe you can hire somebody to build that for you. Sure, you may run into glitches here and there, and you should test all of your CSS and JavaScript in at least Firefox, Opera, Safari, IE6 and IE7, but compare that to testing a GUI application in WinXP and Vista, plus Mac OS X and Linux if you build for those platforms as well.
      --
      $x='S24;r)>63/* h@<5+oZ)32"5cz';$me='phroggy'x$];
      $x=~y+ -xz+\0-Tx+;print$_^chop$me for split'',$x;
    51. Re:Easier than Networking! by Anonymous Coward · · Score: 0

      I hope you're girlfriend isn't as easy to violate as PHP. What's the url?

    52. Re:Easier than Networking! by Anonymous Coward · · Score: 0

      Yeah, I built an improved fuel injection computer for my car in a couple hours.

    53. Re:Easier than Networking! by lordSaurontheGreat · · Score: 1

      You've obviously never used PHP. I can code something quick and dirty in Java in no time. But I'll spend twice the time, twice the effort, and twice the thought for the web based crap because:

      You've got to plug it into HTML. A pain.

      You've got to secure it. If you're not paranoid about your PHP scripting, a script kiddie WILL hack you and WILL rape your network.

      --
      Consider yourself spoken to.
    54. Re:Easier than Networking! by WNight · · Score: 1

      What kind of web-app are we talking about? Some GUI-based thing that has to have its own hotkeys and such? Then it's probably going to have compatibility problems as you play with CSS to make the GUI, play with Javascript events to handle the hotkeys and tab-order, etc.

      If you must present a bondage and domination interface to a user, a native executable is much better. For a point-of-sales app where reliability was king and the user wasn't supposed to do anything else, a native app is great.

      However, if I write a simple time-tracking program (like paper time sheets, online) an executable is overkill. I probably won't even bother with any formatting, so why would I care that browsers don't render it properly? If I use Javascript it'll be in a helper roll, where it could verify formatting pre-submit, or could handle a submit seamlessly, but that if it is not, the page still works in an extremely simple CGI fashion.

      I've never user a browser that appeared to work and yet wouldn't let me post a reply on Slashdot for instance. Forms and text fields just aren't rocket science and can't really fail to work from browser to browser. Everything past that however... I check all my fields server-side anyways though, so I don't require the Javascript on the client to do it. It just saves a potential resubmit, and doesn't prevent a submit, just warns the syntax might be wrong - if it is wrong, the user can still proceed.

    55. Re:Easier than Networking! by Fastolfe · · Score: 1

      This would be an effective way of distributing the app, but does nothing to reduce the costs associated with bundling, testing and successfully getting the new version of the app installed. With a failure rate of less than 1%, an organization with 100,000 employees could still have hundreds with installation problems that likely require dispatching a tech to resolve. The complexity (cost) goes up depending on how many PC platforms your installation package has to run on.

      In some situations, though, this cost is acceptable. It all depends on the nature of the app.

    56. Re:Easier than Networking! by CastrTroy · · Score: 1

      I use VMWare at home, although I'm sure somebody else will recommend QEMU, as it's also pretty good from what I hear, and it's open source. VMWare has a free version now, so there's no cost advantage here. as far as speed goes, well, you can't play DOOM3, but as far as testing web apps, you shouldn't notice any slowdowns, unless you're doing some heavy JS Processing. Most modern computers can handle this stuff quite well. If you have a 2 GHz machine, it probably runs at least as fast as a 1 GHz machine. So if you notice any slow downs, it' probably due to inefficiencies in your web application, and not in the VM.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    57. Re:Easier than Networking! by gfxguy · · Score: 1

      THANK YOU. I was looking for an appropriate response before giving my own. This whole thing is about when it's easier, and often enough these simple applications are much better suited to the browser. Anybody talking about pushing binaries out using an automated updater doesn't understand the article.

      I support people using Windows, Macs (both OS9, still, and OSX), and occasionally (sadly, not enough) Linux. When someone needs to do a purchase order or request a PTO, or create a new project on one of the shared drives... really, what's the point of writing a BINARY to do that? It's so much more complicated and machine dependent and actually takes LONGER to develop.

      And as long as you keep your page simple, there's very few browser problems.

      --
      Stupid sexy Flanders.
    58. Re:Easier than Networking! by AmazingRuss · · Score: 1

      I've been lucky in that the apps I distribute are simple...an exe and a few dlls in a folder. I could see where something with more dependancies could become nightmarish in a large organization. Then, such an organization probably has something link Systems Management Server for pushing things out to the clients.

      This undeniably gets more complex for deployment, but as I stated before, deployment is a small portion of the application lifecycle. I would rather have the complexity up front than the whole time people are using the thing.

      Client app -> ODBC driver -> SQL server is simpler, and therefor less prone to failure than
      Browser x, y, z -> Client Side Scripting -> Web Server -> Server side scripting -> ODBC driver -> SQL server

      If something is going to break, I prefer it to happen during deployment, while I am focused on the project. I hate deploying something, moving on to another project, and getting pestered to death by weird little problems that crop up later. It disrupts my train of thought, and ends up being more expensive in the long run.

      Oddly enough, web apps also use more bandwidth, even on the rare occasions that a browser can be coerced into caching stuff correctly. At best, you still push a bunch of uncompressed text and formatting tags with every hit, while an SQL response is just the data, usually compressed and decompressed on the fly.

    59. Re:Easier than Networking! by Anonymous Coward · · Score: 0

      Just get everyone to stop using Opera in your intranet. Problem solved.

    60. Re:Easier than Networking! by joshetc · · Score: 1

      Yeh! The company that developed my workplace's mailing solution felt the same way. Now we have a slow piece of trash web-based solution that has 1/4 the performance of our old one and doesn't even work when the server is down.

    61. Re:Easier than Networking! by Bozzio · · Score: 1

      Opera is the only browser their old computers can handle. Surprising, isn't it?

      --
      I just pooped your party.
    62. Re:Easier than Networking! by jackv · · Score: 1

      I completely agree . Get the output to the page and let designers do the CSS -images etc. Also , gives you a lot more control over positioning, debugging etc

  3. How about a step simpler? by LS · · Score: 2, Insightful

    Why not just use the command line? I didn't see anything in this article that would exclude its usage...

    --
    There is a fine line between being a cultivated citizen and being someone else's crop. - A. J. Patrick Liszkie
    1. Re:How about a step simpler? by skoaldipper · · Score: 2, Informative

      Why not just use the command line? I didn't see anything in this article that would exclude its usage...
      There's nothing necessarily wrong with that approach. However, as a practical example, I worked for Insurance companies and we developed software initially using nothing but DOS. However, even for simple form processing, it was quite a task (especially when each vendor had their own specific designs for their property and casualty policies). Just to rearange those items even from a given template (or using a suite of library tools like curses) it was an ordeal at times fitting (for example) UMBI (Uninsured Motorist Bodily Injury) with UMPD (...Property Damage) across a FIXED 80 column screen. And some companies would insist it be that way. It was like squeezing a small child out of a birth canal at times. Even when migrating to a full blown OO GUI, the design requirements and scope was not all that much different (or resource conserving).

      IBM said it best wrt scaling,

      When you add in the possibility of needing to rework the application for a larger (plural!) audience, it pays off even more.
      at least for our specific requirements it did.
      --
      I hope, when they die, cartoon characters have to answer for their sins.
    2. Re:How about a step simpler? by Doctor+Memory · · Score: 1

      That's fine if most of your users spend time on the command line. However, it's a little difficult to add a quick link to the group web portal to execute your command-line app.

      I've written a good half-dozen simple web scripts in the past few months, for specific little tasks. My tool of choice is JavaScript. I write a static HTML page with a form and some documentation on it, then just execute a js function on submit and use DOM to stick the output on the same page.

      Example: For hysterical raisins, we have to pass parameters for one our of main web apps in the URL. Even though all connections to the server go through SSL, we still encrypt the query string. I created a simple page that allows one of our support techs to paste an encrypted URL into a text field and hit submit and the page decrypts the URL and presents the contents. This permits them to easily check the parameters and verify that the information was passed correctly.

      I'm creating a slightly more complicated function this week, and I'm going to write it as a CGI script. Not because of this article, but because the task at hand is a perfect task for Perl. And I estimate I can write the CGI script in an hour or so, versus the four-plus hours it would take in Java. Or the three-p;us days it would take me in Ruby (since I don't know Ruby... ;)

      --
      Just junk food for thought...
    3. Re:How about a step simpler? by Profane+MuthaFucka · · Score: 1

      Don't you un-foe me, you cocksucker.

      --
      Fascism trolls keeping me up every night. When I starts a preachin', he HITS ME WITH HIS REICH!
  4. Ugh by Blakey+Rat · · Score: 3, Insightful

    I've had to support a lot of web-apps, and I can say a web browser is *never* a better interface than a GUI application.

    If they meet the following restrictions, they *might* be considered equal:

    1) Does not use Java.
    2) Works on multiple browser, including future versions of IE which may have more strict security settings.
    3) Does not require any client-side settings to work. (For instance, lowering security settings, turning off the pop-up blocker, etc.)

    But every web-app I've ever had to maintain in a corporate environment violated every one of these rules. And I'm talking about big companies making these web-apps, like IBM and Siemens. The end affect was:

    1) Some only used MS Java, some only used Sun Java, meaning that if a browser had one web-app installed you couldn't install the second one because the Java version would be incompatible.
    2) They worked on IE only, which only exaggerated the downfall of the previous point. (You can only have 1 IE per computer, and 1 Java per IE, web developers!!) In addition, it meant that the company I worked for had to freeze IE upgrades to prevent breaking web-app features.
    3) We had tons of security problems because of web-apps that required the pop-up blocker to be turned off, or security features to be turned off. (You can only have one set of settings per browser, web developers!! And most of the time, trusted sites doesn't cut it, from my experience.)

    Even if all these conditions are met, there's still a good chance that the interface of the web-app might plain suck. The web-based ticketing system "feetimpressions" (not naming names because I still have to work with it, but I think you can figure it out) has a terrible interface. It would be equally terrible as a desktop app, but at least it would run quicker so when you made a mistake you could undo it quicker.

    * To be fair, one of the web-apps above was basically a Lotus Notes database converted into a web-app, and Lotus Notes has its own enormous GUI blackhole which seems to suck in any good GUI and mutilate it into something frightening.

    1. Re:Ugh by beavis88 · · Score: 4, Insightful

      None of those are problems with web apps, they're problems with the decisions the companies made in developing said web apps.

    2. Re:Ugh by ShivanDragon · · Score: 1

      To be fair, one of the web-apps above was basically a Lotus Notes database converted into a web-app, and Lotus Notes has its own enormous GUI blackhole which seems to suck in any good GUI and mutilate it into something frightening.

      I agree how Lotus Notes is terrible in converting stuff to the web, But I don't really care. It's perfectly possible to make a good webapp, fast in notes, except for the Rich Text rendering which is terribly annoying :P

      look at what people at www.codestore.net or www.openntf.org can do...

      --
      Poowpoowpo
    3. Re:Ugh by Blakey+Rat · · Score: 2, Insightful

      Even if you have the best web-app in the universe, it still can't accept drag&drop files from the desktop, nor can it safely open multiple windows, nor can it interact with any other application on the system (i.e. by using AppleScript on Mac for example), nor can it use any OS widget other than the most basic few, it'll never be as responsive as a desktop app, and will never have any of the graphical capabilities of a desktop app.

      If you think back, way back when Windows 95 was out people were making the same prediction that web-apps would replace OSes and in the future the only OS would be the web-browser. It didn't happen then, and it won't happen now-- because web-apps suck. The only solution is to write a new internet protocol (not HTTP) designed specifically to run apps from a server... but by that point, you might as well just run the Windows app over a fileshare because it's the same thing.

      There are a lot of reasons that web-apps suck, I was just barely scratching the surface.

    4. Re:Ugh by Shados · · Score: 2, Insightful

      nor can it safely open multiple windows
      Oh, it can. Maybe not for "real", but there are toolkits that build entire "windows managers" in javascript. Works amazingly well.

      and will never have any of the graphical capabilities of a desktop app
      Now that depends where we stop the line of "web app". If we count it as HTML/CSS/Javascript/Whathaveyou, you're right. But there are things coming out to bridge the gap. For example, WPF/XAML, which is fairly amazing, though nothing a slashdotter would be interested in for obvious reasons. I'm sure there are cross platform equivalents in the work or already out.

      The rest of your post IS right though, now I wish most analysts/project managers/architects would get that. Right tool for the right job, and its not always the web, no matter how buzzword-compliant it can be....
    5. Re:Ugh by heroofhyr · · Score: 1
      Siemens' image database is a nightmare. I just order components through catalogues now rather than try to swim through what they call a web-application. You didn't make that, did you? By the way, this probably shouldn't happen when someone types in random shit out of frustration that the site has frames but reloads the entire page every click regardless:

      Microsoft OLE DB Provider for SQL Server error '80040e14'

      Line 1: Incorrect syntax near '('.

      /bilddb/content.asp, line 341 Passing chars for numbers in the GET variable nodeID returns an error like "nvchar cannot be converted to an int." Shouldn't the script be handling those kind of errors instead of trusting Microsoft to do it properly? I can't imagine a huge company like Siemens is printing errors you'd expect to see in some guy's undergrad homework slash PHP messageboard software.
      --
      brandelf: invalid ELF type 'KEEBLER'
    6. Re:Ugh by 93+Escort+Wagon · · Score: 2, Informative

      If they meet the following restrictions, they *might* be considered equal:

      1) Does not use Java.
      2) Works on multiple browser, including future versions of IE which may have more strict security settings.
      3) Does not require any client-side settings to work. (For instance, lowering security settings, turning off the pop-up blocker, etc.)

      But every web-app I've ever had to maintain in a corporate environment violated every one of these rules. A few points:

      1) These are not rules, these are your own biases.
      2) I share bias #2.
      3) We're talking specifically about intranet apps here. In an intelligently-managed workplace, having to customize the client shouldn't be particularly onerous (it's not like the IT folks should have to walk to each computer and do everything by hand anymore, if you're managing things correctly). The particular modified settings you list should be no-nos, in my opinion. But, say, requiring JavaScript should not be considered problematic (that does NOT, of course, require client modification; I mention it because of some /.'ers biases against anything that won't run on Lynx or Netscape 1.0)

      A big part of my job is writing custom web apps whose target audience is just my department's coworkers (or, occasionally, members of the wider university community). In most cases, it's being done to replace an existing paper-based system. In addition to a shorter development period, another advantage to web apps is that almost everyone nowadays is familiar with the web interface. Additionally, if done correctly you remove any OS lock-in. I develop and test for Firefox on my Mac; but many/most of my co-workers are running Windows (and usually Internet Explorer) - THAT'S an advantage writing a full-blown GUI app almost never has.

      --
      #DeleteChrome
    7. Re:Ugh by Dan667 · · Score: 1

      I would have to agree. Anyone designing a web app with client side java should be slapped with a wet noodle. When ever I run into these applications and I am installing whatever version I need to get it to work I always wonder what they were thinking. Just bad decision making to do things like that. If all that complexity is kept on the server, extremely complex web apps can be written and the end user does not have to troubleshoot the application.

    8. Re:Ugh by skoaldipper · · Score: 1

      There are a lot of reasons that web-apps suck, I was just barely scratching the surface.
      This is not the focus of the article. The article's focus is "when to use" (the very top title) and...

      Applications that are built around forms or data manipulation are often excellent candidates for implementation as a trivial Web service.
      Using javascript for form processing and database access applications is over engineering. Everything the article cites is all you need. Of course, the article itself is over simplistic and pretty much restating the obvious (for these _specific_ client requirements).
      --
      I hope, when they die, cartoon characters have to answer for their sins.
    9. Re:Ugh by Prof.Phreak · · Score: 1

      I'd also like to mention the often b0rken back button and refresh button. It's so frustrating that half the web-apps out there don't support those.

      In the (new!---2 months old) timesheet program we use at wr0k, both of those are b0rken (and there's no capability of printing out your timesheet except to print the whole page).

      (note, this is at a -HUGE- corp that spent millions developing this web-app; not something that was coded by a high school student on their own time---or maybe it was!)

      I generally find web-apps to be great, but they -do- have to be properly designed. A good design test: if it works in Netscape 3, then it will work for all past/future browsers.

      --

      "If anything can go wrong, it will." - Murphy

    10. Re:Ugh by Anonymous Coward · · Score: 0

      You seem to have missed the point.

      1. Why have Java when you have the browser and the server? Have the server do the stuff and the browser send to it. You're talking abouot a Java problem...not a CGI problem. The fact that your app was built on non-standard (m$) Java is not CGI's fault.
      2. Coding to standards allows things to work in IE (most of the time). Again, you're bringing up Java. Stop using proprietary browser functionality and this won't be a problem.
      3. Offtopic. What do popup blockers, especially disabled ones, have to do with CGI? What does a security setting being DISABLED do to prevent CGI? These are both arguing FOR CGI because any limitations you would have had (by coding stupidly) are now allowed.

      Even if you had an argument before your example about your web-based ticketing system is specific. The author is talking generally. He is saying that coding an entire application in some full compiled (including to byte-code) language is not often needed if you are writing something quickly. Don't do it. Accept GET/POST variables and spit out text. How much simpler can it be? This also applies to command-line scripts. The command-line (windows excluded without cygwin) is extremely powerful and can do many repetitive tasks as quickly and securely as anything for you. Many of these are easily converted to web-based if needed for others on the Intranet (the logic's the hard part...porting is trivial).

    11. Re:Ugh by misleb · · Score: 1

      None of those are problems with web apps, they're problems with the decisions the companies made in developing said web apps.


      Seriously, the same company that locks you into a specific version of IE would probably just lock you into a specific version of .NET. The end result would be the same. you need to be running Windows with a specific version of the VM (be it IE or .NET).

      -matthew
      --
      "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
    12. Re:Ugh by frizop · · Score: 1

      it still can't accept drag&drop files from the desktop, Am I missing something about this? I've seen drag and drop java applets. Also it looks like some of the newer versions of FF are working on getting things like offline gmail. I think web apps are the future, there easy to prototype and some of the frameworks out there today give you just about as much control as a real native app with about the same speed. As long as you're not looking for some sort of 3d engine in a browser, there king of data entry and searching.
    13. Re:Ugh by misleb · · Score: 1

      Oh, it can. Maybe not for "real", but there are toolkits that build entire "windows managers" in javascript. Works amazingly well.


      People say things like that as if they'd never actually run a native desktop application with a real window manager before. I've used a couple of the "window manager" type browser toolkits, and there is nothing "amazing" about them other than the fact that someone was able to push Javascript and HTML so far beyond their reasonable limits. The only decent browser based, desktop-like GUIs i've ever used are done in Flash. And, well, you might as well just write Java applets at that point.

      Now that depends where we stop the line of "web app". If we count it as HTML/CSS/Javascript/Whathaveyou, you're right. But there are things coming out to bridge the gap. For example, WPF/XAML, which is fairly amazing, though nothing a slashdotter would be interested in for obvious reasons. I'm sure there are cross platform equivalents in the work or already out.


      Unfortunately, cross-platform in browsers means "lowest common denominator" which means "slow and clunky Javascript/HTML." Even outside of browsers, cross-platform usually means Java which, well, sucks on the desktop IMO. Generally speaking, there is no shortage of native applicaitons on my platform of choice (OS X), so i don't really care about the next browser based fad. Go ahead and write an image manipulation tool inside a browser if you think that is cool, it'll never be as good as Photoshop or even Gimp.

      -matthew

      --
      "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
    14. Re:Ugh by Anonymous Coward · · Score: 0

      Can these toolkits allow me to select a different windows from the taskbar, or using expose, or allow me to alt-tab to them?

    15. Re:Ugh by rucs_hack · · Score: 1

      "(note, this is at a -HUGE- corp that spent millions developing this web-app; not something that was coded by a high school student on their own time---or maybe it was!)"

      Given the unbeleivably poor quality of most code sold to companies that I've seen, I am not surprised that they would buy crap. The first time I saw the source to an app that sold for thousands I was pretty stunned how bad it was.

      Thing is, what they are buying is often not the program as such, but the accountability. If it were just the code then most people would go open source for their needs. Nope, they want to have someone they are paying who can come and fix it.

      Yup, this is also available via open source from some places, but there is a huge marketting monster that tries to stand between companies and these alternatives.

    16. Re:Ugh by pjt33 · · Score: 4, Informative

      The only solution is to write a new internet protocol (not HTTP) designed specifically to run apps from a server...
      You mean like X?
    17. Re:Ugh by tom's+a-cold · · Score: 2

      Even if you have the best web-app in the universe, it still can't accept drag&drop files from the desktop,

      Not true. There are drag-and-drop Javascript controls for the usual platforms, though I don't know of any that are platform-independent. I've used them on Windows and Linux and they work.

      nor can it safely open multiple windows,

      I'm guessing as to what you mean by "safely" in this context, but it's possible (and I've done it) to open multiple windows, and to then maintain state in such a way that related windows are kept in sync and closed together when need be. I used closures, but there are other ways. It's non-trivial, but in a fat client you'd need to solve the same problems.

      nor can it interact with any other application on the system (i.e. by using AppleScript on Mac for example),

      Indeed. Integration with other desktop apps should generally be distinct from the presentation layer. But it can be done, and web interfaces can drive that. However, that's a situation where you can get into very nasty deployment, integration and proprietary lock-in situations.

      nor can it use any OS widget other than the most basic few,

      It would be helpful if you could give examples of the "non-basic" widgets that cannot be used, and the reason anyone in their right mind would want to use them in a real application. I have worked on a number of projects that produced enterprise apps, and that were well-adopted and worked. When I do design, I always start from what the UI will do. Note that I didn't say "GUI" since it's not a foregone conclusion that a GUI is needed in every case, and even if it is a GUI, I never assume it has to be a web client: I force an explicit decision as part of the design process. The higher deployment costs, upgrade delays, difficulty of customization, and other downsides of fat clients must be part of that consideration just as much as any real (as opposed to assumed) deficiencies of the web-based implementation.

      it'll never be as responsive as a desktop app, and will never have any of the graphical capabilities of a desktop app.

      I started many years ago writing real-time code in very large systems. Whenever I hear performance assertions, I don't believe them until I know the real requirement, I know the use case, and I test the alternatives. The reason for this is because I have found that even very clever people are not good at predicting what "acceptable" performance is, and what design decisions deliver it. You need to take a very disciplined approach to this, or you will optimize the wrong things. I see this often in good coders, who will burn hours shaving a few milliseconds off an interaction that is run once a year and triggers a process such as year-end-close that takes days or weeks to complete. Without prototyping and rigorous user observation, you'll never know where the real hot spots are. And my experience of complex widgets is that the users like them less than the developers do. The users are trying to get their job done in the most effective way. And they're generally already familiar with the way a web UI works. Anything different requires training, which is an ongoing cost. I've often run into arguments like yours, and I've resolved it by a simple expedient: I do web-based UI prototypes because (for my team, mileage might vary) the turnaround time is much faster. When performance problems are observed in that early stage, we consider fat clients. If performance is still a problem, we distribute even more and have a full-on desktop-resident app. In my experience, the "prototype" ends up exceeding performance expectations in almost every case and the pro-fat-client folklore is unsupported by facts. The few examples I've seen where that's not the case involve industrial-control systems, air traffic control, and some scenarios where you've got some extremely heavy analytics running against

      --
      Get your teeth into a small slice: the cake of liberty
    18. Re:Ugh by jalefkowit · · Score: 1

      Even if you have the best web-app in the universe, it still can't accept drag&drop files from the desktop, nor can it safely open multiple windows, nor can it interact with any other application on the system (i.e. by using AppleScript on Mac for example), nor can it use any OS widget other than the most basic few...

      None of which most general users care about. Drag 'n drop? I've dealt with very smart people who were completely amazed when I grabbed some cells from Excel and dragged them into Word.

      Web apps do provide a more limited set of interactions than desktop apps do, but in a whole lot of cases that limited set is all you need -- anything richer just sails over the average user's head.

    19. Re:Ugh by BrokenBeta · · Score: 0

      I've had to support a lot of web-apps, and I can say a web browser is *never* a better interface than a GUI application. What about your modem settings? Which would you rather do:

      a) ModemSettings.exe
      b) http://10.0.0.2/

      Obviously you'd do (b). Option (a) would break Linux support, it would force the developers to make a custom GUI, and generally lower the standards of the product.

      Not to disagree entirely with your point since there are terrible examples of webapps out there, but to say never is not quite true.
    20. Re:Ugh by Aladrin · · Score: 0, Redundant

      Oh c'mon, how did this not get modded insightful yet?

      --
      "If you make people think they're thinking, they'll love you; But if you really make them think, they'll hate you." - DM
    21. Re:Ugh by Anonymous Coward · · Score: 0

      You're talking about supporting giant behemoths that other companies have written, which has little to do with what the author is talking about here.

      If you have to whip up a billing system for 30 users, it makes way more sense to write a CGI in C or Perl that runs only on your web/database server than it does to write anything that has to be installed and periodically updates on all the client PCs. If you keep things simple and avoid javascript and CSS ridiculousness, it'll function on any browser,
      and any client's OS for that matter.

    22. Re:Ugh by dingDaShan · · Score: 1

      Everyone hates Flash, but couldn't Flash be used to make an easily transportable web app. Perhaps a lot of server time, but that is negligible on an intranet.

    23. Re:Ugh by mcrbids · · Score: 1

      If you think back, way back when Windows 95 was out people were making the same prediction that web-apps would replace OSes and in the future the only OS would be the web-browser. It didn't happen then, and it won't happen now-- because web-apps suck. The only solution is to write a new internet protocol (not HTTP) designed specifically to run apps from a server... but by that point, you might as well just run the Windows app over a fileshare because it's the same thing.

      Don't confuse "didn't" with "shouldn't" or "couldn't", as in "Web apps didn't obviate the need for an Operating System".

      I write applications in PHP-GTK. The PHP-GTK libraries are (in package form) about 15 MB. The application code for the program I work on takes about 1.5 MB total. With DSL speeds making this download trivial, why wouldn't this be a perfectly good platform for web-app development?

      Java came close with a similar model. It can happen - but the environment needs to be better standardized to make this happen. Methinks this is inevitable, just a question of time.

      --
      I have no problem with your religion until you decide it's reason to deprive others of the truth.
    24. Re:Ugh by Blakey+Rat · · Score: 1

      No, I just had to support some nightmarish hell of a Siemens web-app. Unfortunately, in the healthcare field, IBM and Siemens are like the twin Gods of IT even though neither of them can make a decent piece of software to save their life.

    25. Re:Ugh by Blakey+Rat · · Score: 1

      I'm not *using* any of this technology, not by choice anyway. I worked for a company that chose to purchase this technology, and I had to support it on people's desktops.

      It's great that you're telling me to not use Java for web-apps, but I already knew that. Tell it to the huge companies out there that are using Java all over the place in their bloated, awful web-apps and giving all web-apps a horrible name. (Personally, the only decent web-app I've used is Gmail by Google, I've never seen one in a corporation as nice.)

    26. Re:Ugh by Blakey+Rat · · Score: 1

      If you wrote a webmail client in "PHP-GTK", could I drag&drop a file into the email window to attach it to the email? Until you can, web-apps will never be of the same quality as regular applications. If I'm writing an email in your hypothetical "PHP-GTK" client, and I correct a misspelled word by saying "Add to Dictionary," will it add it to the OS X system-wide dictionary?

      Outlook/Exchange has a nice online webmail client, but do you know anybody who uses it instead of Outlook when sitting at their desk at work? No, because actual Outlook is quicker, more integrated with the OS, can pop up reminders in the system tray when your meeting is coming up, etc... it does more than a web-app does, and it does it faster and easier.

    27. Re:Ugh by Blakey+Rat · · Score: 1

      Not true. There are drag-and-drop Javascript controls for the usual platforms, though I don't know of any that are platform-independent. I've used them on Windows and Linux and they work.

      I've never seen one before... can you point me to a sample page? If someone's gotten this to work, it would be a huge boon to webmail sites and forums. Attaching files to a website is always such a huge pain in the rear-end... it's about the only thing I ever see the "Open" dialog for in OS X.

    28. Re:Ugh by mcrbids · · Score: 2, Insightful

      If you wrote a webmail client in "PHP-GTK", could I drag&drop a file into the email window to attach it to the email?

      Yes.

      Until you can, web-apps will never be of the same quality as regular applications.

      PHP-GTK apps are not "web" apps. They are scripts that can be downloaded. They don't need to be compiled - they are scripts. PHP is usually used for server-sided website processing. But it also works very well as a shell or client script, comparable to Java or Python in many ways.

      If I'm writing an email in your hypothetical "PHP-GTK" client, and I correct a misspelled word by saying "Add to Dictionary," will it add it to the OS X system-wide dictionary?

      Can - but you have to be careful. Is your application going to focus on being cross-platform, or on being tightly integrated? There's a new saw at work: A) cross-platform, B) cheaply developed, or C) tightly integrated with the O/S. Pick any two.

      Outlook/Exchange has a nice online webmail client, but do you know anybody who uses it instead of Outlook when sitting at their desk at work? No, because actual Outlook is quicker, more integrated with the OS, can pop up reminders in the system tray when your meeting is coming up, etc... it does more than a web-app does, and it does it faster and easier.

      Except that, increasingly, software, especially web-based software, is being used to coordinate the enterprise organization cohesively. In this environment, the advantage gained by this coordination can quickly and easily outweight the advantages of drag and drop or having a dictionary that integrates with the O/S.

      And don't think that "enterprise organization" means some megacorp. "Enterprise" today can mean your local school district, fire department, or your local newspaper. All of these have numerous and consistent requirements for coordination, and all of these can benefit from the appropriate use of centralized information technology.

      You don't use a hammer to drive screws, and a drill is worthless with nails. Each has their set of advantages and disadvantages. We'll continue to see the evolution of both technologies.

      I won't expect a web-based first-person shooter anymore than I expect a client-side auction site.

      --
      I have no problem with your religion until you decide it's reason to deprive others of the truth.
    29. Re:Ugh by Anonymous Coward · · Score: 0

      mmm no, more like "Blocks eXtensible eXchange Protocol Framework" (BEEP)

      http://xml.coverpages.org/beep.html

    30. Re:Ugh by Antique+Geekmeister · · Score: 1

      I've seen what you describe: the easy way to avoid it is to test with a text-based browser. I've refused to sign a contractor's paycheck until he stopped using Javascript for everything and wrote it as cleaner, standard pop-ups because the Javascript ws simply not reliable for oddball display settings. Every time he tried it in Javascript, I could break it within 5 minutes with a configuration already in use in the same workgroup for a product.

      We lost some prettiness of the application that way, but gained incredibly in reliability.

    31. Re:Ugh by Blakey+Rat · · Score: 1

      There's a new saw at work: A) cross-platform, B) cheaply developed, or C) tightly integrated with the O/S. Pick any two.

      Unless you use a tool like RealBasic, which compiles for Mac OS X, Windows and Linux from the same codebase and supports pretty much every OS feature of each of those OSes.

      I'm not shilling for them, but tools like that *do* exist right now.

    32. Re:Ugh by Muramasa · · Score: 1

      PHP-GTK would be the PHP bindings to the C user interface library. Gnome uses it. Nothing to do with web applications actually.

      Why on earth you would use PHP to write actual desktop applications is beyond me. Especially when GTK+ has good quality bindings in a ton of languages (python, ruby, C#, C++).

    33. Re:Ugh by m50d · · Score: 1

      The trouble is that X sucks at it; it requires far too many round trips to do anything useful (seriously, try running mozilla on another machine over the internet. It's not pretty). I honestly think a better X-like protocol for applications would be the best thing that could happen.

      --
      I am trolling
    34. Re:Ugh by poot_rootbeer · · Score: 1

      None of those are problems with web apps, they're problems with the decisions the companies made in developing said web apps.

      If they require client-side Java code or any ActiveX controls beyond XMLHttpRequest*, I wouldn't even call them web apps; they are client applications which are distributed via HTTP.

      (* What's with the irregular capitalization, Microsoft? Why not "XmlHttpRequest" or "XMLHTTPRequest"?)

    35. Re:Ugh by Anonymous Coward · · Score: 0

      X is just too slow on anything less than gigabit. And don't even think about encrypting it...

  5. why not use Tk? by Anonymous Coward · · Score: 0

    In the author scenario, you are developing GUI utility apps for your own machine and don't plan to allow network access (there are lots of security risks with hosting a web server on a desktop machine, but most of them probably go away if you disallow external connections as the author suggests). Wouldn't it be more straightforward to write the thing in Perl/Tk or similar instead of hassling with transferring state over multiple HTTP requests?

  6. Re:descover? by Goaway · · Score: 1

    The "editors" do not "edit" articles. This make Slashdot "more real", according to CmdrTaco.

  7. When the web apps are taking over ... by Gopal.V · · Score: 4, Interesting

    A lot of people are replacing client-server apps with browser based apps, with zero install hassles - which this particular example doesn't really have. But learning to build html apps in CGI mode is easier than re-learning event loops for GTK land (even in perl).

    Of course, debugging in-browser apps is getting easier with firebug and other developer oriented firefox bits. Now, whether the app is built using perl-CGI, mod_perl, php, ruby on rails, even servlets doesn't matter - the UI can actually work very well. For instance my sudoku, in fact looks better in HTML than if I (let me repeat, if *I*) had done it with GTK or MFC.

    And CGI still hasn't lost its edge totally. There are places when you *have* to use CGI to do what you want. I ran into one case when I couldn't use php when I wanted to server pushes on a live connection. Instead of firing multiple requests to the server, I hold the connection and push data when it comes available - sort of stateful connections reinvented for HTTP. Which has definite promise when you're building mashups, which fetch data from elsewhere without cross-user leakage (heh, if he can hijack TCP, I don't know what...) - flockr for instance uses such a script in the backend to feed it data (except I'll be an idiot to post a live CGI script to slashdot).

    CGI ain't quite dead yet ...

  8. Another issue by fyngyrz · · Score: 4, Insightful

    One of the issues that concerns me is what essentially amounts to hijacking of my processing resources. One example is animated ads. It takes CPU power to continually flip a large ad's frames; that's *my* CPU power. So I don't let flash or animated GIFs run unless I make an exception. Same thing applies, for instance, to the difference between slashdot and digg. Slashdot provides a static page. I can load it, and the fact that it is loaded costs me nothing in particular. If I flip away from the browser, it doesn't chew CPU time. But if I load a digg page, my CPU is pegged for a while, especially with large pages, because digg is bloated, slow-as-hell pigware that uses *my* CPU to display and organize its content. Guess how much time I spend there. :)

    As I generally have other things going in the background, I don't take kindly to profligate use of my resources; animations, pigware, etc. I keep my eyes open, and I tend to spend time on places that more resemble slashdot than digg in this regard. I *will* bite if the site offers something that overcomes my urge to keep my cycles for myself, but that is a conscious value judgement, not an accident.

    Generally speaking, there's another advantage for sites that produce HTML and CGI forms, and do not depend upon the user's computing environment, and that is broad compatibility. If you stick to the basics, then the broadest set of browsers will function with your "stuff." No Java, no PDF, no flash... just the basics. You can make beautiful, functional websites (assuming you've the art skills) with the basics. I see no need for more; the value is in the content, and it isn't like you can't make a good presentation. The first thing I think when I run into a morass of Java, etc., is "incompetent."

    But that's just me. :)

    --
    I've fallen off your lawn, and I can't get up.
    1. Re:Another issue by istartedi · · Score: 1

      The first thing I think when I run into a morass of Java, etc., is "incompetent." But that's just me. :)

      Well, of course it's not just you. It's amazing how close some "professional" pages come to being Homer Simpson's web page.

      --
      For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
    2. Re:Another issue by XO · · Score: 1

      Perhaps it's time you upgraded the 486 to something a little more reasonable with today's computing needs?

      What the Hell are you talking about? I just flipped through digg, and there's no indication whatsoever of what you were talking about in it.

      Java, PDF, and Flash support depend on the environment just as much as your browser does ..

      --
      "Champagne for my real friends - and real pain for my sham friends!" http://ericblade.postalboard.com/
    3. Re:Another issue by Blakey+Rat · · Score: 1

      Yeah, and I recently hired a private eye ($500 a day, plus expenses) to track down that nickel I dropped last saturday. I know I dropped it near the bus stop... I hope he finds the bastard soon and recovers my penny! It's been 4 days, and no sign of him yet.

      Seriously, if Digg or an animated .gif is actually a drain on any of your computer resources, you should buy a computer made in this millennium. Please. The processing cycles used to animate that ad about mortgage rates is worth about $0.001. If you're actually worried about it, your time must be worthless to an amazing degree.

    4. Re:Another issue by fyngyrz · · Score: 1

      See my other reply in this thread if you're actually interested in the situation, I mean as opposed to just throwing out 100% incorrect assumptions to see yourself type.

      --
      I've fallen off your lawn, and I can't get up.
    5. Re:Another issue by fyngyrz · · Score: 1
      Perhaps it's time you upgraded the 486 to something a little more reasonable with today's computing needs?

      It is a 1.42 GHz PPC, 512k L2 cache, with a gig of ram and a Radeon 9200 display engine. Very roughly equivalent to a 1.5 GHz Pentium of some flavor. For most things, it zips right along. So perhaps you ought to upgrade your presumptuousness with the optional rational consideration module. I hear the price has come down; you only have to pay 2% of your ego to get the improvement installed.

      I just flipped through digg, and there's no indication whatsoever of what you were talking about in it.

      I see the CPU tasking rise inside digg posts with comments. The more comments there are above, say, two hundred, the longer the CPU stays pegged. A 600+ comment story will peg the CPU for as much as 45 seconds beyond the time that the download of the page completes. Compared to slashdot, where pages are complete and the CPU use falls back to the usual 4% or so as soon as the download of the page ends. This of course assumes there is no huge banner displayed on the page with animation, in which case the CPU utilization goes up and stays up until you scroll past the animation.

      Java, PDF, and Flash support depend on the environment just as much as your browser does ..

      Look, I understand how things work perfectly well. I've designed computers, written compilers and one of the earliest hypertext browsers (ApAssist on the Amiga), designed graphics boards and so forth. I'm an engineer, and a decent one. The fact is that animation requires something to flip the data around. This takes some attention by either the CPU (in my case, that is what is being used) or the GPU. If the engine (flash, Java, etc) isn't particularly efficient about it (and clearly, it isn't) that can result in a lot of cycles being burned. And again, in my case, this is happening. It's not an illusion, it's a fact. This fact is contrasted by the other fact that once static HTML representing text or still images is loaded, it doesn't take any horsepower for it to sit there on anyone's monitor. With regard to digg, the difference between my machine having to work out all the comment structuring (such as it is) and so forth based on which comments are collapsed by dig-downs or blocked out or whatever it is doing is quite a different approach than just handing me basic HTML that says "render the page thusly." That could be the result of any of a number of design decisions, find its main villain in the browser, the Java implementation, or something going on in the OS, but regardless, the fact remains - Slash is efficient, and digg is not.

      --
      I've fallen off your lawn, and I can't get up.
    6. Re:Another issue by XO · · Score: 1

      Well, I don't know, load up a page 1 of a 2 page Slashdot comment listing, and my browser will go out to lunch, and stay out to lunch for several minutes.

      I've never read a Digg comments thread, I was just looking at the main page.

      --
      "Champagne for my real friends - and real pain for my sham friends!" http://ericblade.postalboard.com/
    7. Re:Another issue by fyngyrz · · Score: 1
      Well, I don't know, load up a page 1 of a 2 page Slashdot comment listing, and my browser will go out to lunch, and stay out to lunch for several minutes.

      That's actually very interesting. I don't see that behavior. What browser are you using, and what is the base description of your system and OS? I use OmniWeb here, I left that out above, obviously it is a critical factor in this type of thing. Duh.

      --
      I've fallen off your lawn, and I can't get up.
  9. Re:descover? by Anonymous Coward · · Score: 0

    The "editors" do not "edit" articles.

    Ok, then...

    from the the-answers-is-always dept.

    Answers is?

  10. Re:descover? by LiquidCoooled · · Score: 1

    Sorry, there must be an error in the script.
    Taco had everyone replaced with very short scripts sometime in 1999.

    The file cowboyneal.sh takes up 47.3 TB!

    --
    liqbase :: faster than paper
  11. Re:descover? by Goaway · · Score: 1

    Maybe there is some kind of reason for them not editing, I dunno!

  12. Well, sort of, Yeah -- maybe by vtcodger · · Score: 2, Insightful
    The article isn't exactly wrong, but ...

    First of all, writing a simple GUI application using say Python and TKinter is probably easier than writing a web application. I'm sure the same is true of Ruby, Perl, etc. Or Visual Basic for that matter although VB's database interface (at least in VB3) was so obtuse that I decided to find another language. All of those languages will handle the Event interfaces relatively gracefully.

    Second even the localhost (127.0.0.1) interface is likely to be a bit jerky.

    Third, No two browsers will render HTML beyond the "hello world" level consistently. Conceptually, that shouldn't matter, but if your input boxes don't appear or line up with inappropriate material in the page display, you can end up tinkering with your application well beyond what you originally envisioned.

    Fourth, Browsers cache web pages. They don't always figure out that the page you have requested has changed. It looks to me like NOCACHE statements in HTML pretty much don't work. They may work when used in the HTTP (1.0 or later, right?) header, but getting them there may be non-trivial. This is not a big deal if you are the only user and understand caching since all browsers allow you to force a page reread. But it is not going to work out well with ordinary users.

    I'd say that there is a place for simple web applications. But there are a lot of situations where alternative solutions are probably going to be more usable or simpler than a web browser, server, and CGI.

    So, CGI is a perfectly OK tool, and maybe it belongs in the toolkit. But it's by no means universally the best solution.

    --
    You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
    1. Re:Well, sort of, Yeah -- maybe by Anonymous Coward · · Score: 2, Insightful

      First of all, writing a simple GUI application using say Python and TKinter is probably easier than writing a web application.
      Think about scaling that GUI to multiple vendors with countless permutations on GUI requirements. Web apps are far more easier to maintain and implement.

      but if your input boxes don't appear or line up with inappropriate material in the page display, you can end up tinkering with your application well beyond what you originally envisioned.
      Tables? Frame containers? Fixed width browser dimensions?
    2. Re:Well, sort of, Yeah -- maybe by seebs · · Score: 1

      I based the comparison on real-world cases of seeing people trying to develop applications in various languages.

      The input boxes lining up are easy enough; that's what tables are FOR, presenting things in a tabular format.

      FWIW, I agree that it's not universally the best solution; I just think it's very often the best choice, especially for fast prototyping.

      --
      My blog: http://www.seebs.net/log/ --- My iPhone/iPad app: http://www.seebs.net/seebsfrac/
  13. The Screen is The Interface by SEWilco · · Score: 3, Insightful
    A web browser is a GUI.

    Yes, I often do use a web browser as a script GUI. A web browser changes a few HTML text strings into a pretty display.

    1. Re:The Screen is The Interface by dvice_null · · Score: 2, Interesting

      > A web browser is a GUI.

      GUI = Graphical User Interface
      Lynx = Text based web browser

      You were saying... ?

    2. Re:The Screen is The Interface by misleb · · Score: 2, Interesting

      Yes, I often do use a web browser as a script GUI. A web browser changes a few HTML text strings into a pretty display.


      If it is only a few lines, it probably isn't 'pretty.' It is probably just a plain, small form centered in an oversized browser window. Personally I find things like PerlTk to be much "prettier" if only because the window is taylored to the app. And also the box model of Tk is MUCH easier to work with than HTML/CSS. I find reliably placing elements on the screen with HTML/CSS to be a huge pain in the ass.... and I'm primarily a web developer! ;-P

      -matthew
      --
      "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
    3. Re:The Screen is The Interface by Geoffreyerffoeg · · Score: 1

      Sorry, what? Lynx is a GUI. A console text-mode GUI as opposed to a bitmap-based GUI, but a GUI nonetheless.

  14. OMG by Anonymous Coward · · Score: 0

    I love Firebug.

  15. Re:SCRIPT? Do it in C++! by eneville · · Score: 1

    ...
    For those of you who don't know, a CGI in Apache (minus any special persistence) is a simple executable that receives it's input in stdin stream as formatted text, and writes it's HTML (or JPEG or whatever) result to stdout. When writing the output, it appends a few extra lines at the start to tell Apache if the result is HTML, JPEG, text or a page redirect or whatever. That would be the "Content-Type: text/html\r\n\r\n" output yes. CGI isn't always going to be faster than using a framework. sometimes the framework can achieve better results simply by providing memory resident information. Establishing a DB connection many times in CGI can cause pages to perform worse than using a connection pool provided by a framework.
  16. Re:I've been wondering... by Anonymous Coward · · Score: 0

    I hate to feed the trolls, but you are seriously on-topic for this article: Look at the picture: Peter Seebach: male? female? I don't know.

  17. You web developers... by pong · · Score: 0, Troll

    .. are such a sick and twisted bunch. Unfortunately for you, you never learned real programming, so now you think a hyper-text system on speed (that's what a modern web browser is) is the only true platform for developing applications. Next problem is that you jump on each and every new fad as if it's christs second coming.

    Desktop in your browser? OS in your browser? Sad and stupid - makes me angry.

    1. Re:You web developers... by mabu · · Score: 4, Insightful

      Real programming basically died in the mid 1990s.

    2. Re:You web developers... by skrolle2 · · Score: 5, Funny

      You're just jealous because our stuff actually is used by a lot of people, whereas your toaster-controller, written in C, with a user-interface noone understands only got five downloads from Tucows. And one of them was your cat jumping up on your keyboard.

    3. Re:You web developers... by Nicolay77 · · Score: 1

      Where you see problems I see a business opportunity.

      I'm sure the Flash/Flex people see things the same way, but they are making stuff to get into the RIA framework industry to tackle that business. May be even creating that industry.

      About the OS in your browser, and the excess of XML praise, well those practices will not get that far. So I see no problem there. At all.

      --
      We are Turing O-Machines. The Oracle is out there.
    4. Re:You web developers... by mstahl · · Score: 1

      Unfortunately for you, you never learned real programming

      Genuine bona fide web developer, right over here, with a bachelor's in theoretical computer science. Judging by the prejudice in your comment, I'd wager that I've learned a lot more *real* programming than you have, and I practice it both in my web applications and also in my side projects.

      The fact of the matter is that web applications are a pretty good idea if what you're trying to do is simple enough that a browser makes sense as a GUI, or is likely to change often enough that you need to constantly update it. And if you've got something where users edit information that has to be publicly available right away (read: CMS systems, calendars, various news sites *cough*slashdot*coughcough*), your publishing is just about as simple as it possibly could be.

      For things like desktop applications (read: document preparation software—particularly when the documents should be private—and video games) the web interface thing doesn't make a whole lot of sense. Google's spreadsheet apps are pretty neat but I'm not sure I'd use them for anything really involved, but there are advantages too that even someone like yourself should be able to see. The documents I write on Writely don't disappear if my computer crashes, and I can get to them and edit them from my work machine then go home and keep working on them.

      Before you go and diss a huge and growing population of the IT community, you should remember that, out there, there are people like me that just do this for a living and we're every bit as elite as you. Some of us are just a lot more polite.

    5. Re:You web developers... by powera · · Score: 1

      ... thank goodness there is somebody still on Slashdot who can still write an intelligent comment.

    6. Re:You web developers... by hyperstation · · Score: 0

      i disagree. to prove you wrong, i'm going to go learn how to write gui apps.

    7. Re:You web developers... by Durandal64 · · Score: 1

      The sad part is that, for every one of you (a person with formal education and credentials in computer science), there are ten other guys out there who got into web development from a designing web sites. These people write terrible code and have no notion of good software engineering practices. And how would they know? They never went to school for computer science or software engineering.

      One of my co-workers is a truly brilliant CS guy, and he does a ton of work in scripting languages and web development. When you let someone like that loose on web development, you can get some truly amazing results. Sadly, it's not the norm.

    8. Re:You web developers... by Kjella · · Score: 1

      Real programming basically died in the mid 1990s.

      Programming is dead, long live programming. Make it stable, secure, simple and standard. Forget optimization and various cut-corner logic, incomprehensible spaghetti code, inlining and assembler and pointer magic. Use standard libraries, proper encapsulation and modularity. Validate input both from the user and internally in your code. Nake the logic of the code clear both in naming and comments. If something sounds like a common operation it's probably a library function, do not reinvent the wheel.

      I don't know if that's "real" enough for you, but I know there's certainly many programmers that can't live up to that. Some of them are the type that's always been useless. So too are the "real" programmers, who seem to suffer psychological trauma every time they see a long long do a short int's work, or an object passed needlessly by value.

      --
      Live today, because you never know what tomorrow brings
  18. go learn a real GUI framework... by Anonymous Coward · · Score: 0

    once a "web developer" sits down and learns a proper GUI framework in a non scripting language then they will appreciate the simple (yet complex when you want to do advanced work) WSIWYG style work.

  19. Distribution is a biggie for Linux by Anonymous Coward · · Score: 0

    Distributing applications can be a real pita for Linux. You write something that runs in Ubuntu and then you have to port it to Windows for your cow-irkers, then you take it home to work on and find out that Suse is missing a dependency and when you fix that, it breaks another dependency ... etc. With a web-based program, all it has to do is run on the computer it was written for. As another poster points out it also means you have to fix bugs on only one computer. You don't have to re-distribute copies of the program every time you fix a bug.

  20. perl? by mabu · · Score: 0, Troll

    I agree, a simple cgi script can serve needs well, but it's really ironic IBM uses as an example, a Perl script... no doubt a clever way to encourage sales of their next bigger, faster server, because if you used Perl CGI scripts in a real-time web application that got any significant amount of traffic, you'd need 100 times the processing power of a comparable script written in C or PHP to perform the same task.

    I know Slashdot is running in Perl, and their system is cool, but even with mod_perl, there's a lot more overhead in a perl-based application than other languages that are a lot more suitable for the web.

    1. Re:perl? by cxreg · · Score: 4, Interesting

      "even with mod_perl"? as opposed to what? mod_perl is the most flexible web server technology available on *nix, balancing good performance with a good set of functionality (who can beat CPAN?) it's faster and more scalable than Tomcat, and PHP is simply a joke. about the only true downside is that it's a total memory hog.

      perl CGI, however, is crap as you said

    2. Re:perl? by Anonymous Coward · · Score: 0

      I agree, a simple cgi script can serve needs well, but it's really ironic IBM uses as an example, a Perl script... no doubt a clever way to encourage sales of their next bigger, faster server, because if you used Perl CGI scripts in a real-time web application that got any significant amount of traffic, you'd need 100 times the processing power of a comparable script written in C or PHP to perform the same task.

      Frankly your comment about Perl needing 100 times the power of a C or PHP script shows that you know very, very little about Perl or C or PHP for that matter. Heck, the comment is open-ended enough that it could either be a clever troll or indeed, you know little about interpreted, compiled, and in-between languages.

    3. Re:perl? by Anonymous Coward · · Score: 0

      real-time web application? ahahaha.

    4. Re:perl? by mabu · · Score: 1

      Wow, I offended the sensitive Perl-ophants... too bad.

      As for my knowledge of CGI and Perl and C, I am co-author of a best-selling book on the issue. I also have received "Editor's Choice" in PC Magazine for software I wrote. I'm also the architect of an advanced online system that is probably one of the top 200 web sites. Who the hell are you guys? I know what I'm talking about. I design mission critical web applications. I work in Perl, C and everything in between.

      Man, every day Slashdot is starting to look more like Digg, with lots of accusations and very little conversations.

  21. photo example by twitter · · Score: 1

    Why not just use the command line? I didn't see anything in this article that would exclude its usage.

    An example he cites but does not provide, is a photo browser. You could use a combination of image magic and curses to do the same thing, but cli input could be tedious for more than simple viewing and the author's approach could save effort.

    I'm doing a lot of cli image manipulation and I'm interested in this technique. I've got an ugly imaging device and a pile of c code to interpret it's output and make images of it. Having some simple feedback would be nice. It would be even nicer if I could serve that output to others in my group in a platform independent way.

    --

    Friends don't help friends install M$ junk.

    1. Re:photo example by XO · · Score: 1

      Also don't forget that probably upwards of 90% of computer users are incapable of operating a command line.

      --
      "Champagne for my real friends - and real pain for my sham friends!" http://ericblade.postalboard.com/
  22. I don't understand! Help me? by Anonymous Coward · · Score: 5, Insightful

    I don't understand either the problem space, or the solution. I've read the article twice -- though it is apparent by most of the comments that people have not read the article.

    It sounds like the author is recommending a single instance web server application running on a local machine that uses a file store instead of a database and CGI as the programming interface. (In other words, this is NOT an intranet application for multiple users!) Doesn't sound that simple at all. In order to do this, you must:

    - Know at least one programming language for CGI.
    - Know HTML including forms, postback and session.
    - Understand the limitations of web browser UI elements. (There are many.)
    - Install and maintain a webserver on your local machine.
    - Build a robust file store interface. (Even loading / saving / parsing XML files with backups takes time...)
    - Install and maintain permissions for the file store.
    - And more...

    Sounds like all of the disadvantages of the web with none of the advantages.

    Why would you not use PERL and CSV IN/OUT files for simple (or complex) command line processing -- and if you needed a really simple UI, then Excel with Visual Basic. (This isn't easy, but it's a lot less technology to learn and maintain.) Anything more complex: Java, the free version of Microsoft VS or xcode. Anything worth doing is worth doing well.

  23. Here is a good example. by Anonymous Coward · · Score: 0

    Who here really prefers a web based email client over there native client?

    Both have there place and time but thin clients just aren't there yet and that is a simple internet based example. Lets try like autocad or something if you want to get serious.

  24. Sleight of hand involved in this article.... by midnighttoadstool · · Score: 1
    "Experienced Web developers sometimes find themselves struggling to learn a GUI toolkit when a simple CGI script would serve their needs perfectly well."

    But an experienced GUI developer is another matter. I can't really speak for other GUI frameworks but for Delphi and it seems for .Net (same architect - got filched from Borland by MS) dev time is hugely faster than WEB developement. It is totally out of proportion. Businesses that favour WEB dev for in-house work are strealing from themselves UNLESS they only have a developer experienced in WEB programming and not GUI programming in which case they have less choice in the matter.

    It is true that with GUI developement there is a temptation to do a slick and clever interface and then dev time starts to slow significantly, and it is easier to produce a non-standard interface that annoys everyone. Sticking to something simple or within the normal confines of the framework and it beats WEB/CGI/PHP etc hands down in every category that I can think of (ie. time and performance, network traffic, user satisfaction etc). Interestingly a slick web interface however is another matter since unlike GUI's there is only the DOM and javascript so toolkits have standardised nicely and dev time isn't significantly slower for a slicker WEB interface (ie. the Prototype library). But a slick WEB interface doesn't really compare to a slick GUI interface (flash is GUI, in my opinion) since GUI's are only limited by the system not the browser (think of flash as a system in itself).

    RAILS and Django (ruby, Python respectively) may be real contenders but not for performance. Both have dire performance, and limited concurrency. However both languages may be moving to VMs and may get proper threading as well, even Ruby. Currently Python uses a giant concurrency-crunching lock - but at least it allows non-blocking IO (I believe), and Ruby doesn't support native threads at all - all IO blocks - yikes!!!!!!!.

    1. Re:Sleight of hand involved in this article.... by nuzak · · Score: 1

      > Currently Python uses a giant concurrency-crunching lock - but at least it allows non-blocking IO (I believe)

      Well sure, you can use select() or something that abstracts it like medusa or twisted ... of course only one python thread can ever run at a time in order to run the select() loop. It certainly has nothing like asynchronous futures or notifications built into the runtime -- but fair enough, nor do most of these high level languages.

      --
      Done with slashdot, done with nerds, getting a life.
    2. Re:Sleight of hand involved in this article.... by alienmole · · Score: 1

      Businesses that favour WEB dev for in-house work are strealing from themselves UNLESS they only have a developer experienced in WEB programming and not GUI programming in which case they have less choice in the matter.
      There's more to applications than GUI forms, though. Reports are one thing that tend to be easier as web pages, since the GUI-oriented report writers tend to be too obsessed with exact layouts even when it's not important. Also, in cases where the output is highly dynamic, so that form builders break down and you have to code to the widgets using an API, web can have an advantage. Finally, if you're using good web toolkits, the capabilities and development time can come pretty close to those of traditional GUIs.

      I have clients who do both kinds of development, and I don't think it's nearly as one-sided as you make out, except possibly in certain specific scenarios. I recently replaced a GUI application with a web application to very positive reviews from users, because we were able to do some things with complex, dynamic multi-form pages that would have been a real pain to code as a GUI. In one area, the GUI app had eight logically independent forms, of which a maximum of three were ever on the screen at the same time, so the user had to navigate between three different screens to do the job. In the web version, it was easy to turn this into a single page, using Ajax-style techniques to show and hide the relevant pieces as necessary. The browser's ability to redraw the page dynamically without being told exactly where to put what is very useful here.

      As for performance, GUI apps that hit the database directly are a pain to administer in a large environment, and web apps can win on that basis alone. Ruby and Python aren't even players in some of these applications. Server-side is typically Java, where automatic database persistence, object caching, and distribution across a server farm is the norm, supported by a number of very good libraries.
    3. Re:Sleight of hand involved in this article.... by midnighttoadstool · · Score: 1
      As I said, I can't speak for other GUI toolkits than Delphi or .Net.

      I agree with much of what you say but it's all applies both ways - you can hit a database directly with a web app as well. Plus your multiple forms example just sounds like bad design/implementation, something I addressed indirectly. The contraints of the webbed world is what solved that problem for you, not the removal of GUI toolkits.

      Sure, you can take ten times longer producing a GUI app than a web app.

  25. Re:SCRIPT? Do it in C++! by MemoryDragon · · Score: 1

    I would even to so far that cgi in most cases is way slower, it does not provide advanced caching algorithms for dynamic content, no connection pooling, it relies on a process per request while most app servers rely on a thread per request model etc... there is almost no reason at all to use cgi.

  26. Easier than ASP! by Anonymous Coward · · Score: 0

    The advantages of the thin-client:server paradigm without going all the way. ASP-lite as it were.

  27. I didn't mention a DB by Anonymous Coward · · Score: 0

    "Establishing a DB connection many times in CGI can cause pages to perform worse than using a connection pool provided by a framework."

    True, but a few points.
    I didn't mention a DB (generic database indexing is unsuitable for the search task, and the performance is too slow since the index is a generic rather than specifically designed for the task). Hence the script+database was not a viable solution.
    In the original article the author was doing light simple stuff, where the dbconnect time is unimportant anyway.
    You can of course run your c++ daemon like any other piece of server software, the range of persistence options in C++ is more than those of scripting languages.

    The point is clear, CGIs are a doddle, you really don't need to use a scripting language and any c++ programmer would be completely at home writing them.

  28. Hey, 1999 called by jfz · · Score: 1

    And they want their multi-paradigm shifting, leveraging by XYZJSDHTML web based content management system solutions back

  29. Those who fail to understand GUI apps.. by Junta · · Score: 4, Insightful

    Are doomed to reinvent them, poorly, in a web browser.

    The premise of the article is that a local application written to target a local server with web browser client is better, but then goes on to say essentially 'ok, here are all the pain in the ass things to overcome when trying to scale it down to a single user compared to typical web server environments'. In his article, he is trading one perceived pain in the ass set of things for another. The unstated stuff is you are requiring the unmentioned user to first have a webserver and CGI environment set up correctly before even beginning to run your app (since the aim is to be standalone on a box, the user's system is the server). He mentions some shortcuts you can take by assuming some network security things and no DB, but in the end the shortcuts are still more work than simple GUI apps for the equivalent task.

    As to his fear of GUI toolkits, it's actually mostly silly. He sums it up by saying web browsers don't make you deal with 'resize events, window expose events, or menu events', but the truth is for a GUI application of the complexity he speaks of, GUI toolkits largely don't *make* you, they *let* you. If your application is as simple as what he prescribes, you can ignore that whole functionality of the toolkit. Sure you have to connect events to widgets of interest (i.e. buttons), but you have to do the exact same thing on webapps, but with different wording. If your application has some reason to start messing with the sort of stuff he fears dealing with and is implemented in a browser, a whole lot of pain is in store for you with obscure, platform specific javascript aplenty. Similarly, he mentions file opening/saving, and font management, but again, the toolkit usually has user-wide settings you can ignore the existence of just like a browser for font and style, and evoking the Toolkit standard filebrowser is usually exceedingly simple (along the lines of filename=Chooser() (not a specific language/toolkit)).

    I have dealt with quite a few 'webapp-for-everything' people, generally they make web apps with an exceptionally clunky interface that responds poorly (I actually dislike Gmail's interface, but Zimbra was impressive, but still sluggish). If I find myself using it frequently and I can find out what it is frontending (usually a database for general apps, imap for mail, etc), then I write a quick GUI application or use a standard standalone app to do the same thing. I end up with a smoother interface that lets me be more productive, and often things run faster (webapp deployments are frequently the bottleneck, the backend could service far more than the webapp can push through for whatever reason). Whenever I do that and someone glances me interfacing with a system notoriously annoying in interface, they always want my application. Again, good Webapps can be on par with GUI apps, but for all the reasons the guy mentions, webapp developers mostly think implementing everything as simple forms is the way to go and that sucks for a lot of usage. GUI apps of course can be written piss-poor as well, but the typical GUI toolkit primitives are richer than simple HTML forms.

    The only potential thing depending on how the app manages data and how it could be useful is the issue of scaling out/up. With a standalone GUI app, the barrier to running it remotely and having all your data in one place is higher than webapps (if running it remotely, must have X/RDP/VNC client installed on your random client which is less likely than a browser, if just having the data remote, still have to get the data accessible via some means and your client must have your software). This is a hard thing to define concretely, but the implementor should be able to make this determination fairly easily.

    --
    XML is like violence. If it doesn't solve the problem, use more.
    1. Re:Those who fail to understand GUI apps.. by pavera · · Score: 1

      In his defense he specifically mentions writing *SIMPLE* applications this way. I've written quite a few one off perl and php CGI "applications" that are a simple 1 or 2 web pages to do something very simple. One such "app" is for turning on and off the "answering" machine in Asterisk (IE the office is closed outside of their normal open/closed hours and the receptionist needs to make all calls go to voicemail).

      If I wrote this application as a thick client GUI app, it would have taken at least 30-40 hours (GUI app itself, xml-rpc daemon on the asterisk server to handle the on/off request, code in the gui to get status from the database, debugging communication problems from each machine to the asterisk server) then I'd have to install it on everyone's system, and every time I found a bug I'd have to go through and upgrade 25+ systems. Not fun at all. As a webapp, it took less than 2 hours to write, when problems crop up, I make a change in one place everyone's updated, and as a bonus the receptionist can turn it on/off from any computer in the office and any computer with an internet connect (ssl vpn).

      This is where I disagree with his approach, if you are writing an application that you are going to install on every machine (or even 2 or 3 machines) you would be an idiot to take his approach and install a web server on each machine, a db server, and the rest of the architectural stuff you need for a webapp. Unless you build all that stuff into a nice little install package, its going to be a nightmare. But for alot of one off little things like this, it is much easier to just throw a web server on the file server or whatever server they are using and build a webapp for need xyz. Now if you are building a huge, distributed, application for forex yeah you'll probably want to do a thick client app. The article wasn't suggesting to try to do that in a browser though. He specifically mentioned small one off things.

    2. Re:Those who fail to understand GUI apps.. by ArmorFiend · · Score: 3, Insightful

      Web apps are the way to go for a lot of things.

      The original post was solely about CGI, and not at all about client side javascript. This being slashdot, however, almost nobody bothered to notice.

      Yes, compared to a "real" gui, html forms don't have the same richness of user interaction possible. Guess what? For 90% of applications, that's a GOOD THING. Forms have evolved the way they have because they're reasonable and reasonably secure for networked UIs. There's always temptation to use some shady "experimental" ui technique, but it turns out that developing good UIs is tricksy, and that these are failures most of the time. Stick to Forms unless you know the reason why not.

      There are other advantages as well. Is the best language to solve the problem something wierd and non-deployed, ala Common Lisp? CGI lets you use the language of your choice, without having to do security audits on all the machines envolved.

      CGI also enforces a fairly strict seperation between application guts and UI. Even in this day and age, many people still manage to mix these, to their sorrow.

      Unlike GUI platform of your choice, CGI has not changed specification since, what, 1994? A script written then will still run today. The same can not be said of GTK or KDE or Mac apps, and I'm not so sure about Windows 3.1 to Windows Vista compatiblity either.

      I'm mystified as to why Parent thinks enabling CGI is a "pain in the ass". For me it was a 1-line change in apache.conf for the first script, and then a 0-line change for each additional script. What's so hard about that?

    3. Re:Those who fail to understand GUI apps.. by VGPowerlord · · Score: 1

      CGI also enforces a fairly strict seperation between application guts and UI. Even in this day and age, many people still manage to mix these, to their sorrow.

      Unless, that is, you have a CGI script generating the form dynamically. Something that you need to do if you want form fields to persist.

      Just because HTML is separate from CGI doesn't mean that CGI didn't generate the HTML for the form.
      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
    4. Re:Those who fail to understand GUI apps.. by ArmorFiend · · Score: 1

      I guess so, though I usually just have the program copy a ".html" file, or html fragments stored in files.

      Actually, for a fair number of programs I output "content-type: text/plain". Might as well be command-line, I know. Some people hate command-line.

    5. Re:Those who fail to understand GUI apps.. by jasenj1 · · Score: 1

      Yes, compared to a "real" gui, html forms don't have the same richness of user interaction possible. Guess what? For 90% of applications, that's a GOOD THING. Exactly. One nice thing about the web browser is that it provides a UI that users are very familiar with. All the UI elements have a standard look and behavior - that changes from browser to browser, but for each user, THEIR browser is consistent. And (hopefully) if you develop a web app you follow the established conventions - and users intuitively understand those conventions, like menu bars on the side, title stuff at the top, submit buttons at the bottom.

      By developing in a web app you put the user in a context that they can easily understand. If you develop a desktop app, the "rules" are much looser and the user may spend more effort trying to understand how the app works, and you as the developer may spend more time writing "clever" UI rather than constraining yourself to those provided by HTML.

        I'm developing a Java application using JMX (Java Management Extensions) and MX4J to expose the UI as web pages. I've been pretty happy with the way things have gone. I can write my classes, then expose methods and functionality via MBeans, and do the UI with some XSLT. All of those are technologies and tools _I'm_ familiar with. And I get the added bonus that the app can either be deployed locally on a user's machine or they can access it remotely.

      - Jasen.
    6. Re:Those who fail to understand GUI apps.. by Junta · · Score: 1

      Yes, compared to a "real" gui, html forms don't have the same richness of user interaction possible. Guess what? For 90% of applications, that's a GOOD THING.

      There are a few instances of basic GUI niceties that are often overlooked in webapps (because they are hard) that are trivially implemented in GUI. I'll give two prominent examples that are more than 20 years old (hardly "experimental") that are typically problematic for web development.

      Drag and drop is a shining example of something 99.9% of webapps don't make any provision for that is *extremely* convenient (i.e. organize mail into folders, webmail interfaces frequently have a tree view on the left, and then for the mail move operation have a dropdown where you have to find your target even if it stares you in the face in the left pane, standalone mail apps have you drag and drop the message). This sort of data manipulation is not such a small part of most applications, and the fact that most web-based mail implementations don't do this (Zimbra does, to its credit) shows how simple webapps can be more painful than simple GUI (drag-and-drop for most all web dev architectures is still not easily acheived). Even when implemented internal to a webapp, forget entirely about using drag-and-drop as a means to relay a piece of information from one standalone application to another.

      Another frequent thing that you *cannot* win in a webapp is the deal with context menus. Yes, some can and do override the context menu, but then it may or may not successfully suppress the browsers native context menu, if done right and always suppresses it, users will get pissed that their browsers menu is unusable. Either you implement your own context menu to break consistency with the rest of the browsing experience, or you have no context menu that may be crucial for easily using the application. The solution for webapp developers here is to clutter the screen with a lot of controls to eliminate the need for a context menu, but it is very cluttered, generally less well organized, and harder to tie to the context of what the user is doing.

      CGI also enforces a fairly strict seperation between application guts and UI. Even in this day and age, many people still manage to mix these, to their sorrow.

      Same is true of both standalone apps and webapps, developers can always shoot themselves in the foot regardless of the chosen technology. Neither web frameworks or GUIs in this day and age really foster the separation more than another. Most GUI frameworks if using any fancy IDE naturally establish separate files for presentation vs implementation.

      Unlike GUI platform of your choice, CGI has not changed specification since, what, 1994? A script written then will still run today. The same can not be said of GTK or KDE or Mac apps, and I'm not so sure about Windows 3.1 to Windows Vista compatiblity either.

      For a webapp, that is such a small part of the battle of a moderately useful application. The true test comes as to whether your outputted html will render as expected from 94 and if the javascript you wrote back then still runs exactly the way you say it do then. Add to that most functionality that has prevented the mass uptake of webapps has only in the past few years appeared in the browsers in a usable fashion (lots of Javascript and misc). Your script on the server side may run correctly (but likely not, in 94 you probably would have written a CGI application in C, and it may not run without a recompile on a modern platform, if some scripting language along the way, those too have changed). Your moving target is *not* the fundamental network protocol/communication format, the moving target is the server environment and the client web browsers. Firefox for a while has been fairly steady in terms of a good set of functionality (but so has GTK since GTK2), IE had a fairly hefty cleanup in IE7, whether future IE will change or not is yet to be seen. Declaring victory because CGI/HTTP/Ba

      --
      XML is like violence. If it doesn't solve the problem, use more.
    7. Re:Those who fail to understand GUI apps.. by ArmorFiend · · Score: 1

      I think context menus and drag'n'drop are good examples of 2nd-tier UI functionality that simple applications should do without on their first cut. If a analysis later reveals that the functionality is necessary (and I think your MUA example is a good one), then by all means graduate to Ajax hell or better yet a GUI program! There's a continuum between a static page and complicated app with custom controls. Nobody's suggesting that 3D Studio Max should be implemented in a web browser! : )

      If I write my backend in Perl, then I'll not be shocked when Perl changes. Its a language with no specification! That's not a CGI versus GUI issue, that's simply a stability issue. ANSI C code written in 1994 compiles and runs most excellently in 2007. ANSI Common Lisp written in 1994 and run in interpreted mode doesn't even need a recompile. Of the programs I wrote in the mid 90s, the only ones I still use are in ANSI C. The fanciest of them uses Xlib to ring the system bell, but it never opens a window. In the meantime, my gui program from 2002 languishes, having been "mostly" ported from GTK to GTK2, it still has strange bugs. :(

      Unfortunately modern web browsers are way way too good at rendering ancient dialects of HTML. Hopefully in a decade or so your point about HTML changing will be more valid. :)

  30. Web apps: They're not just for business anymore by Paulrothrock · · Score: 1

    I wrote a little Ruby on Rails app that does nothing more than help me record and calculate my fuel mileage. It took me about 20 minutes start to finish and it's exactly what I needed. Doing the same thing on a spreadsheet would have taken me the same amount of time, but now I can expand it in the future to let me send text messages to it to record mileage when I'm out and about.

    --
    I'm in the hole of the broadband donut.
  31. Here's what happens a month later... by kahei · · Score: 3, Insightful

    And then users say, and they're right to say this:

    "Okay, can we have a basic real-time price chart on that?"
    "Can you pick up the settings for my main thick-client work application and use those?"
    "This is OK for offline work but now that we're using it seriously it has to respond to clicks right away."
    "Ok, when we enter the currency pair, the visual display of the curves should update immediately before we enter the price, just as a sanity check."

    Of course you can always reply:

    "Well, I decided to do this as a CGI script. That meant a bit of a tradeoff whereby it was easy to develop at the time, but we can't really extend it with rich client-side functionality like that."

    To which the correct answer is:

    "Looks like YOU have a problem!"

    Okay, that doesn't ALWAYS happen. But it certainly happens a lot -- if there's any chance that that the solution will be compared to thick-client apps, it's really not a good idea to start with the web. When everyone's lucky, the result is that work starts on a proper client application. When everyone's NOT lucky, the Java applets and DHTML wizardry come out, and you're left supporting and justifying an increasingly complicated solution that's heavy on scripting and net traffic and that's competing with solid (usually C#) client/server apps. Which is a pain.

    --
    Whence? Hence. Whither? Thither.
    1. Re:Here's what happens a month later... by Anonymous Coward · · Score: 0


      "Okay, can we have a basic real-time price chart on that?"
      "Can you pick up the settings for my main thick-client work application and use those?"
      "This is OK for offline work but now that we're using it seriously it has to respond to clicks right away."
      "Ok, when we enter the currency pair, the visual display of the curves should update immediately before we enter the price, just as a sanity check."


      And if you write it using IBM's WebSphere Portal, you could answer yes to all those questions.

    2. Re:Here's what happens a month later... by Anonymous Coward · · Score: 5, Funny

      ...and then you would be right to say,

      if (you == inHouseProgrammer)

      "Well you cocksuckers should have told me all this shit up front so I didn't waste my weekend writing a useless web app. If you want it fixed, do it yourself"

      else if (you == consultant && you == chargingTimeAndMaterials)

      "I'll be happy to add those new requirements for you, but I'm afraid that's going to impact the schedule."

      else if (you == consultant && you == chargingFixedFee)

      "Thanks for the feedback, bit I'm afraid we will have to address those new requirements in a follow-on contract."

    3. Re:Here's what happens a month later... by Anonymous Coward · · Score: 0

      I agree 99.9% with that, just wanted to say that you appear to have misspelled Java.

    4. Re:Here's what happens a month later... by plopez · · Score: 1

      "Looks like YOU have a problem!"

      And the correct reply to that is "How much money do you want to spen and how much time do you want to spend?"

      --
      putting the 'B' in LGBTQ+
    5. Re:Here's what happens a month later... by Viceroy+Potatohead · · Score: 1

      else if (you == consultant && you == chargingFixedFee && you == madeBlunderOnReadingSmallPointInSpec) "Fsck! I'll get right on that, sir."

    6. Re:Here's what happens a month later... by Lord+Ender · · Score: 1

      Make friends with AJAX and make your users happy.

      --
      A slashdotter who didn't build his own computer is like a Jedi who didn't build his own lightsaber.
    7. Re:Here's what happens a month later... by Geoffreyerffoeg · · Score: 1

      Ever heard of AJAX?

      Scratch that. Ever used any Google website other than their search engine? Ever posted on someone's Facebook wall? Ever used Meebo (real-time IM as a web app)?

      It's very simple to write web applications that easily handle all the situations you mentioned - except for possibly the "Can you have this interface with a local app?" setting, which isn't all that hard to do with a bit of Java and its JavaScript, or perhaps a native-code stub that loads the settings and sends them to the server.

      AJAX is pretty fast, if you have a decent server and your scripts are written efficiently. You should try it sometime.

    8. Re:Here's what happens a month later... by Anonymous Coward · · Score: 0

      else if (you == consultant && you == workingForMyCompany)

      "You mean you didn't analyze the requirements to understand that these were OBVIOUS extensions to the application?!? Go F&*!K yourself. You're never working here again. We'll get a consultant who understands how to develop software to do this."

      Too many developers want all the requirements handed to them on a silver plate...if you're a consultant it's YOUR job to get those requirements. And to figure out the one's that the user didn't tell you but that the company will need.

      Sound unfair?...too freakin bad. Go back to being an in-house data herder, and leave the consulting work to those who are capable. My company has had to clean up after so many high-paid "consultants" who could not do even basic business analysis, that it makes me fear that this whole industry is being taken over semi-compitent code pushers who could't determine a customer requirement if it fell on them.

    9. Re:Here's what happens a month later... by derago · · Score: 0

      else if (you == consultant && you == chargingTimeAndMaterials)
      else if (you == consultant && you == chargingFixedFee)

      I'd be happy to know how both statements can evaluate to true.
      Last time I checked 'you' can only have one value.
    10. Re:Here's what happens a month later... by Anonymous Coward · · Score: 0

      #DEFINE consultant 1
      #DEFINE chargingTimeAndMaterials 1
      #DEFINE chargingFixedFee 1

      int you = 1;

  32. It can work by skroll82 · · Score: 2, Insightful

    I work for a company who uses almost exclusively web apps inside the company. It works because having a small programming staff means it would be hard to constantly troubleshoot every user's machine. Lets face it, the average user is usually clueless on to how a new application will work, and putting it into a web page means that it's fairly simple for them to pick up. None of the apps use Java or anything besides CSS and HTML, and while CSS can be a bit finicky on different browsers, it's at least still usable. However, I spend most of my time on the job fixing back end code that is absolutely horrendous. This is however, a product of 10 year old code, as well as the initial project having almost zero direction when the coding started. That's a problem that happens all across the board, not only on Web Applications.

  33. Re:SCRIPT? Do it in C++! by Anonymous Coward · · Score: 0

    "I would even to so far that cgi in most cases is way slower, it does not provide advanced caching algorithms for dynamic content, no connection pooling, it relies on a process per request while most app servers rely on a thread per request model etc... there is almost no reason at all to use cgi."

    Clean, efficient, small, simple, stable, not restricted to database hence no need to connect to database, hence no need to use connection pool to fix up DB connect problem, hence no need for extra complexity, processes more secure, can be killed separately and independent of one another, all OS caching still works.

    There's a lot to be said from bypassing the framework and since it's very trivial to do so, the first question any programmer should ask is if they actually gain anything from the framework.

  34. Have a look at SWILL by Diomidis+Spinellis · · Score: 2, Informative
    If you plan to expose your application's GUI through a web browser, have a look at SWILL, the Simple Web Interface Link Library. With a couple of function calls you can add a web front-end to any C/C++ application. I've used it for adding a front end to the CScout source code analyzer and refactoring browser, and for implementing a wizard-like front-end for a stochastic production line optimization toolkit; I also supervised a student who worked on a SWILL-based gdb front end (unfortunatelly he didn't finish it).

    SWILL is great for adding an interface to legacy code, because its impact on the application can be minimal. I wouldn't recommend its use if your GUI requirements are above what can be implemented in a dozen web pages.

    1. Re:Have a look at SWILL by Anonymous Coward · · Score: 0

      Thank you for the link to SWILL!

  35. Re:SCRIPT? Do it in C++! by achacha · · Score: 1

    As a CGI library (freeCGI++) and an app server (AsynchObjectServer) developer, I can tell you that CGIs are extremely inefficent (but rather a quick and dirty way to build server side apps); there is so much you cannot do well with CGIs, like caching the executable/library (although FastCGI fixes this a bit), caching of static/global/app data, database connection pooling, HTTP pipelining (for all except IE), pre-parsing of data, templating, etc. I can write two simple apps (and I have actually) that do nothing but send back to the browser a simple XML doc . Both CGI and app server is in C++ and with CGI the execution takes 70-80ms and with an app server 5-8ms (on the same machine, albeit an old slow one but it's a relative test). There is a lot that needs to be built up with CGI execution (environment hooks, loading on executable, capturing of stdin/stdout, unloading), meanwhile the app servers (frameworks) can have it all pre-built and cached and only connection/request specific info needs to be built up.

    The reason I wrote the app server and framework was to overcome the shortcoming of CGI (yet I still support the CGI library the same, it's great for quick app development as a proof of concept or prototype). I would never use CGI for any large scale development (maybe that's just me).

  36. Re:descover? by 1u3hr · · Score: 4, Funny

    Their main function is to think of the "from the ... dept." line. Doing a spellcheck or other mundane editing tasks would distract them from that.

  37. CGI a la Usotsuki.info by dosius · · Score: 1

    I use CGI for simple dynamically-generated stuff, like want-lists based on numbers (e.g., missing episode lists), Now Playing, and random-image stuff. It's mostly bash/ksh scripts, sometimes with a sprig of C, and the HTML output is very rudimentary (if there is indeed any - some output pngs).

    -uso.

    --
    What you hear in the ear, preach from the rooftop Matthew 10.27b
  38. VB6 by DogDude · · Score: 1

    I know, I know, it's "unsupported", but if I need a quick and dirty app, I usually end up doing it in VB6. I've never seen a framework that allows for such quick development, and such flexibility. If I need a web browser for displaying info, you just click and drag a web browser into the environment. And of course, you have instant access to all other Win32 objects as well. It's great for tying together disparate systems, and you need a GUI.

    --
    I don't respond to AC's.
    1. Re:VB6 by praseodym · · Score: 1

      VB6 is generally quite weak at performing system administration tasks (e.g. service management) and database access (maybe a bit less with MS OLEDB components), though.

    2. Re:VB6 by DogDude · · Score: 1

      VB6, in and of itself, doesn't do a whole lot. The strength is in the ability to very, very easily be able to glue different components together. It can do all kinds of sysadmin stuff, *if* you have the right COM object to drop into it. It can use any kind of data access you want. OLEDB replaced ODBC for a good reason, but there's no reason that you have to use OLEDB if you need better performance, either, although I will say that I've used OLEDB to access multi-terabyte databases with pretty good results. Also, VB6 has hands-down, the best way to do RAD GUI stuff.

      --
      I don't respond to AC's.
  39. Re:descover? by Anonymous Coward · · Score: 0

    Their main function is to think of the "from the ... dept." line. Doing a spellcheck or other mundane editing tasks would distract them from that.

    ...and yet they still screwed it up, and wrote "answers is".

  40. Re:descover? by ebuck · · Score: 1

    Perhaps it's the new all-covering encryption.

  41. Re:SCRIPT? Do it in C++! by Anonymous Coward · · Score: 0

    "Both CGI and app server is in C++ and with CGI the execution takes 70-80ms and with an app server 5-8ms (on the same machine, albeit an old slow one but it's a relative test)."

    You may wish to tune your OS file cache if you're getting that performance, the file cache alone fixes the load time for the CGI code itself. I got 500 queries/second from the lowest spec server I could find, which is way beyond any requirement we're talking about here. Thats only about 10 simultaneous processes taking 20ms to do the (very complex) query. Obviously a much simpler process would take a lot less and a lot beefier server would run more simultaneous processes, but 500 is 15 BILLION queries a year so it's not small change.

    It's a tradeoff, if you use a database then a dbconnect is expensive and persistence is more useful, but the slowness comes from the database it's not inherent in the CGI. Worse if the database is over the network, you have the network latency ontop of that aswell and persistance starts to become essential.
    The down side is that you have shared process space and one thread can bring down the rest. There is a reason that Apache chose to load the CGIs as processes afterall.

  42. Proof-of-concept & fast-prototyping by PatPending · · Score: 2, Interesting

    I use Perl/CGI/Apache2/MySQL for proof-of-concept/fast-prototyping--which usually takes one to two days (or weeks). Once the functionality, testing, and etc. is done, I send the specifications and the URL to another department. Then I wait for one to two months for them to come back with a Windows .NET program (usually written in C# or VB) using MS SQL Server. During that time my co-workers continue to use my web-based stuff. (BTW, this is in a corporate environment with annual revenues of about four billion dollars and 5,000 employees.)

    --
    What one fool can do, another can. (Ancient Simian Proverb)
  43. So write your CGI in C. Duh. by deaconB · · Score: 1

    CGI is NOT a language. It's an interface specification. Thomas Boutell has a wonderful library for writing CGI in C.

  44. The same can be said... by Brandybuck · · Score: 1

    The same arguments can be used for command line apps. Just get rid of the GUI completely. Seriously. If you don't need a GUI, then use a freaking command line tool. But if you DO need a GUI, then use a GUI! A webapp is only going to subject the user to a nasty user interface.

    --
    Don't blame me, I didn't vote for either of them!
  45. Not for huge apps by pavera · · Score: 1

    I see a hundred posts here flaming the guy because "You can't write an enterprise realtime xyz app in a browser". Luckily that isn't at all what he recommended or said in his article. He stated quite clearly that in certain limited cases, when users need xyz FEATURE (not necessarily a whole app) it is easier, faster, and less error prone to throw up a quick CGI script to do the job.

    I've done this tons of times for clients that just want a feature, not an app. Maybe 1-3 forms with a database backend and a search bar. That is not an application, maybe they want to track some arcane bit of data about their clients for a couple months, maybe they want to see how an advertising campaign is going, so they tell the receptionist to always ask where the customer heard of them and she keeps track on the little web form. Yes this data would normally be tracked in some sort of CRM app, but a lot of small businesses don't have CRM apps and even Sugar CRM is way to complex and involved for a 15 person firm to learn and use effectively.

    The customer doesn't need a CRM/ERP SAP type system, they aren't going to pay me to develop an application that will be installed on all 25 machines and then maintained. But if I can throw something up on their file server in 2 hours they are totally happy.

    Granted, this guy goes a little crazy and suggests actually installing web server/db server/cgi environment on every client machine, which to me seems retarded. But he isn't recommending replacing a companies entire business process management system with a browser either.

    1. Re:Not for huge apps by ScaryTall · · Score: 1

      Good post, pavera. There are a lot of people arguing with what the article is not saying.

      The article says that SOME developers find it useful in SOME situations to use HTML/CGI, while much of this discussion is about why it won't work for ALL developers in ALL situations.

      Some go on to say that those who do basic Web coding (I won't call it "programming") aren't real developers and that the solution is for them to become real developers. That's great and all, but I still have a job to do.

      I use Perl or Python, depending on the job, to process large amounts of data from a number of different sources, and have neither the time nor really the interest to develop full-fledged desktop apps. I appreciate the need for such apps and the people who code them, but in my experience I end up with a few hundred lines of code that determine what color the buttons should be and a few dozen lines that actually do anything useful. I need to spend my time on code that does stuff. [Someone is bound to reply that if I were a better GUI programmer that I wouldn't have this problem. That's great and all, but I still have a job to do.]

      To the article's point, most of my scripts stay on the command line because I think GUIs are a waste of time. However, I do occasionally have others who rely on my little apps. These people are not command line savvy, and I am not interested in going around and making sure they have correctly installed the Perl or Python interpreters. In these cases, I could port the script to VB or VBS (not gonna happen) or C# or C++ and put a GUI on it (which yes, I could do if I decided I wanted to --- I don't code in Perl because I don't know C), or I could slap together a quick Web page that uses my script as-is.

      In my world, the latter option is the most elegant. It gets others the information they need and me on with my day the fastest and easiest. I am therefore part of the SOME developers for whom HTML/CGI is useful SOME of the time. I'm quite confident that if we needed a more complex application with a broader user base that we would opt for a more robust solution. In such a case the extra time and effort might be worth it. (The article even speaks to this, by the way, as it discusses the danger of unforeseen upscaling.)

  46. A common thread in all these... by AmazingRuss · · Score: 1

    ...rebuttals is "most of the time" and "with the following restrictions" and "if I target only IE6".

    Which basically means you are tied to a given platform...so cross platform compatibility is out the window. I would argue compatibility with any platform is out the window with those restrictions, given the recent forced IE7 upgrade. Even something as simple as users twiddling their browser setting can break your app.

    "Most of the time" and "we think it should work" aren't phrases you want to hear from someone developing a mission critical app for you.

    1. Re:A common thread in all these... by Ash+Vince · · Score: 1

      Care to explain that to the people who pay my wages? And yes, IE7 was a complete pain the arse for us but it hasn't helped.

      --
      I dont read /. to RTFA, I read /. to offend people in ignorance.
  47. What about PHP? by praseodym · · Score: 1, Interesting

    PHP is a very simple language as well and not overkill for simple tasks. How can it be compared to CGI? Does it have any real disadvantages? Advantages are clear: many developers are better at writing PHP than at writing Perl and PHP is nowadays more widespread on servers than CGI.

    1. Re:What about PHP? by TeknoHog · · Score: 1

      The spirit of TFA seemed to be that sometimes a simple web app is better than a standalone application. The choice of server-side scripting tools wasn't discussed at all.

      --
      Escher was the first MC and Giger invented the HR department.
    2. Re:What about PHP? by smoker2 · · Score: 3, Insightful

      Do you know what CGI is ? It is not a specific language, so stating that PHP is "more widespread on servers" is bollocks.
      Common Gateway Interface.
      PHP is just another language that can be used for a CGI script.

    3. Re:What about PHP? by praseodym · · Score: 1

      I meant PHP as in mod_php. Many servers do not have CGI (nor a possibility of executing perl scripts) but do have mod_php or any other way of executing PHP scripts.

    4. Re:What about PHP? by VGPowerlord · · Score: 3, Informative

      As another user stated, CGI is a specification. One that PHP uses if it's compiled as a CGI binary or emulates if it's installed as a web server module. $_SERVER, for instance, is populated mostly with CGI Environment variables. $_GET is a processed version of the CGI QUERY_STRING variable. $_COOKIE is a processed version of the the CGI $COOKIE (and possibly $COOKIE2) variables. The $_FILES array is filled with the parts of a multipart/form-data input that have a filename= section. This comes from a POSTed form (which uses STDIN as per the HTML and CGI specs).

      Need I go on?

      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
    5. Re:What about PHP? by llefler · · Score: 2, Informative

      Many servers do not have CGI

      Why would a server NOT have CGI? Unless what you really mean is the developer doesn't have CGI access on the server. I'm not sure you're understanding what CGI is. It is NOT perl. It is NOT PHP. Although both can be used. My cgi-bin is full of custom EXEs.

      In simple terms, here is how CGI works; dynamic information from the client is passed to a process launched by the web server through environment variables and command line. An application runs natively on the machine, such as a script processor like perl/PHP or any appropriately written executable. The output of the application is sent to stdout and that is redirected to the client.

      --
      It is amazing what you can accomplish if you do not care who gets the credit. -- Harry Truman
  48. AJAX? by tepples · · Score: 1

    BrowserShots is a free service for this. It takes awhile, but it works. Does it work with script-heavy interactive sites that use a lot of HTTP requests back to the server? Or is it just static?
    1. Re:AJAX? by MattPat · · Score: 1

      Sort of. Basically, it sends the URL of your site out to a bunch of different machines, renders it in a variety of web browsers, takes pictures, and posts them online. You can't interact with it, but you can at least spot some basic malfunctions. (And yes, it does wait a few seconds before taking the pictures so Ajax calls, etc. will have time to process).

  49. Re:SCRIPT? Do it in C++! by bytesex · · Score: 1

    ]] I would never use CGI for any large scale development (maybe that's just me).

    I do. And it works. Let me spell out the reasons why:

    - code is extremely maintainable because every point of entry (script) is a separate entity on the filesystem. You always know where to start to trace a call.
    - library structures (control model view) can be used in CGI just as anywhere else, and my apps do just that.
    - code is executed extremely safely because of process isolation and privilege degradation; I don't have dangling database connections, other threads fucking up my heap, or re-entrancy issues. When my CGI process terminates abnormally, I'm pretty sure the rest of the appserver is undamaged.

    On top of that I find it funny when people will smile when I explain to them how my CGI apps have to fork, execute an interpreter, load up resources and state and are only then good to go, and say: 'but you'll be slow, you'll need a lot of resources'. And then they'll fondly talk about their java webservers which are so fast, but unfortunately won't run unless you multiply the dimensions of my CGI's hardware by a thousand.

    --
    Religion is what happens when nature strikes and groupthink goes wrong.
  50. One-offs + CGI = success by Anonymous Coward · · Score: 0

    I once wrote a tool that had a command line interface. I saw the way a few people worked with it and realized that 99% of it was copy-paste part of something into a text file, feed that text file into the tool + some flags and then spit out the results.

    So I turned it into a (.py) CGI that had a simple text area + submit and checkboxes for the flags.

    The tool was mostly one-off (written in 3 man-weeks with a scant 23 bugs+feature requests) but combined with this simple CGI interface has resulted in unprecedented improvements in productivity. Updating the tool behind the GUI was the main benefit. I thought of doing Java Web Start but decided against it once I had prototyped the CGI.

    I will never discount the usefulness of CGI again***.

    *** Well except the one time that someone pasted *a lot* of information and clicked submit 20 times which eventually brought down the server. I fixed that one!

  51. I don't do UIs at all by Omnifarious · · Score: 1

    At least, not most of the time. I don't want to have to learn several different toolkits in order to make the program work OK on several different platforms. So a nice CGI fits the bill.

    And in Python, it doesn't really matter that I don't have a web server running. I just use the pure Python web-server that ships as part of Python's standard library. It's not really up to a load of more than a few requests per second, but if things ever get that busy it should be easy to convince someone to give me the time to upgrade things to a structure that will work. And with WSGI I won't have to change any of my web app.

  52. Re:SCRIPT? Do it in C++! by speculatrix · · Score: 1

    you can write a trivial web server in bash, using inetd to handle the networking side. horrendously inefficient BUT very quick and dirty, and you can do a surprising amount to parse headers using awk and sed!

    I used this technique to create a snapshot of a website and add a searchable index using namazu; the web pages are accessed using FILE:///, but the search engine uses http://localhost/namazu. Since you're only doing one cgi invocation on an occasional basis, who needs scalability?

  53. Re:I've been wondering... by linvir · · Score: 1

    Mac users

    Internet disease is the single most common disease afflicting teenage girls in North America.

  54. Re:SCRIPT? Do it in C++! by eneville · · Score: 1

    you can write a trivial web server in bash, using inetd to handle the networking side. horrendously inefficient BUT very quick and dirty, and you can do a surprising amount to parse headers using awk and sed!

    I used this technique to create a snapshot of a website and add a searchable index using namazu; the web pages are accessed using FILE:///, but the search engine uses http://localhost/namazu. Since you're only doing one cgi invocation on an occasional basis, who needs scalability? you could use djb's tcpserver, which is preferable over inetd. apache 1.3 can read/write stdin/stdout the way you're talking. it is inefficient as each request is another fork(), but for modifying headers in a particular way it's useful.
  55. True.. by Junta · · Score: 1

    Your general description (a quick remote access thing for something) falls very much in the category of what a webapp would work well for, remote resource management for untrained personnel, ubiquitously available.

    I will say your GUI app development time is exagerrated (GUI app, ok, not that big a deal, but an xml-rpc daemon to handle on/off? Just because xml-rpc is a buzzword doesn't mean you have to use it for every little thing, a daemon to this thing would be easy. Querying a database? Why in the world would you make it more difficult than it has to be (unless asterisk publishes it's info through a DB only) If your asterisk server is running a daemon specifically for this task, the amount of network debug should be minimal (you have three basic strings to get through, 'off' 'on' 'status, with a handful of response strings, add on for authentication almost nothing if using SSL and certificate authentication, a little more for anything else). If not over-engineered (which your high level design sounds to be), there isn't much for a client to screw up for this. Of course a single GUI app for 'on/off/status' is silly, and a single web page to do the same thing is less silly.

    On distribution of your client app and the sheer sanity of having so many one-off applications from doing a single app for every little thing, the webapp has benefit (at least on Windows systems where you want to provide a visual queue for each app, hiding an app in /usr/bin isn't that big a deal on *nix systems). On managing shared resources (asterisk server status/shared files/etc) and having untrained people able to use the interface webapp is good (I have written one off daemons for experts that either simply interacted via telnet, or in more security minded scenarios used SSL and made them use openssl s_client to talk to the daemon, perhaps using certificates for authentication), or just had people ssh in and run the utility in the shell, but getting a receptionist to do all that is asking a bit much..) Of course, aside from ssh/otherwise remotely accessing the application, the webserver provides for authentication, which is good as implementing their own auth scheme can be a large exposure for a developer to screw up if they go to reinvent the wheel.

    --
    XML is like violence. If it doesn't solve the problem, use more.
  56. Re:I've been wondering... by dosquatch · · Score: 1

    Ummmm.... awww, fuck it.

    --
    "Hey, the third matrix movie would have been good except for the plot,story, and acting." --AC
  57. Re:SCRIPT? Do it in C++! by achacha · · Score: 1

    This was relative test on a very slow outdated machine, so the absolute numbers are not relevant, the relative ratio is. While I am not saying that CGI is bad, I am saying that there are ways to do better.

  58. Re:I've been wondering... by __aaclcg7560 · · Score: 0

    Neither. A John Romero wanna be.

  59. Re:SCRIPT? Do it in C++! by achacha · · Score: 1

    What does java have anything to do with this? My CGI and app server are both in C++. Yeah you can look at websphere with a 2GB footprint running HelloWorld and wonder wtf is going on, but a C++ app server will take maybe 20MB to do the same, java app servers are a bloated mess (this includes tomcat, jboss, websphere and weblogic; use/used them all and very very disappointed, but maybe when 32GB is considered a low number for server memory will it not matter anymore).

    Anyhow, CGI is so 1995, it has its place. Every point you made above, can be made about pretty much anything, so it's not saying that CGI is a benefit, just says that you did your due diligence and wrote maintainable/structured code; I am sure you would do the same if you were working with an app server. The only benefit inherent to CGI is process/thread isolation; which is a trade off since process creation is a bit heavy but affords you the isolation. Well written applications running on an app server can do the same. If you expect your code to do horrible things to the process space, then yes, CGI is the way to go, otherwise I would pick efficiency over it any day. Personal choice maybe.

  60. Re:I've been wondering... by Wonko+the+Sane · · Score: 1

    Daikatana

    It's funny, laugh

  61. Re:I've been wondering... by Anonymous Coward · · Score: 0

    By "ugly dweebs" I assume you mean completely ordinary looking people, and by "Mac users" I assume you also mean completely ordinary looking people. Why are you a pretentious git in comparison to everyone else here? Is it because you're projecting your friendless, sexless nerdiness onto the rest of us from your mother's basement?

  62. Re:SCRIPT? Do it in C++! by totally+bogus+dude · · Score: 2, Interesting

    If you're going C++ for performance reasons, take a look at tntnet. It's a web application framework in C++, and provides sessions, thread-safe operations, and things like database connection pooling. You can even create web pages with C++ embedded right in, similar to e.g. PHP or ASP. And it's fast.

  63. yeah, but... by oohshiny · · Score: 1

    CGI scripts are nice and easy to code, but for heaven's sake, use PHP or Python.

    1. Re:yeah, but... by FooAtWFU · · Score: 1

      CGI scripts are nice and easy to code, but for heaven's sake, use PHP or Python.
      Python I'm cool with, but I've worked with PHP for several years, both good and bad, and have come to the conclusion that, with apologies to the Grinch: PHP is an abominable junk-heap overflowing with the most disgraceful assortment of rubbish imaginable... mangled up in tangled up knots!
      --
      The World Wide Web is dying. Soon, we shall have only the Internet.
  64. Re:I don't understand! Help me? by Carcass666 · · Score: 1

    Thanks for posting this. I thought I was the only one crazy enough to seem that this was a solution looking for a problem. I can imagine going to my server/security group:

    Hey guys! I have a great new app. It's going to make everything simpler. All we have to do is load Apache on everybody's machine (because we sure as hell don't want IIS running on workstations), put Perl on, and we'll have an application looks like crap is but is really easy for me to work on.

    By the time we get done setting up Apache permissions to deal with reading/writing files, locking down port 80 properly, and managing multiple applications in the same Apache configuration file, I can't see how this works anywhere other than an engineer's workstation.

    What is the point of limiting ourselves to HTML's crappy GUI toolkit, inherent lack of session state, etc. for more administrative overhead? Seriously, the only reason this article got any attention because it its inherent anti-M$ substance (again, there is no way anybody in their right mind would ever role out IIS on individual workstations).

  65. You should really blame your OS maker by patio11 · · Score: 1

    They included a bit of bloatware with your OS called the System Idle Process. If you think Digg is thirsty for resources, wait until you see that bastard. On my 3 GHz development machine it regularly is chewing up 99% of the CPU, and I can't figure out how to disable it! ...

    SERIOUSLY. The marginal cost of the time you have spent worrying about this is already more than the marginal cost of extra eye candy, which is zero because your computer *will* burn those cycles or consume that RAM whether you want it to or not. (I can't understand why folks get upset about RAM usage. Oh no, IE/Firefox chews up 40MB as soon as you turn it on... out of the 1GB on my machine! Thats too much, I want to keep my memory free so I can look at the process monitor and be happy while waiting an age and a half for the stuff to load from disk.) Unless you routinely have your computer pegged at 100% utilization of some limiting resource, and if you are using a modern machine I can almost guarantee that you don't, saving a few hundred KB by not displaying the technological marvel that is a rotating GIF will not cause your machine to suddenly suffer a massive decrease in performance.

    1. Re:You should really blame your OS maker by fyngyrz · · Score: 1
      They included a bit of bloatware with your OS called the System Idle Process.

      No, they didn't. My system is a Mac. The CPU is pretty much all mine except early in the morning, when maintenance tasks are scheduled.

      The marginal cost of the time you have spent worrying about this is already more than the marginal cost of extra eye candy, which is zero because your computer *will* burn those cycles or consume that RAM whether you want it to or not.

      No, you're quite wrong on both issues. My daily driver, a mac (a PPC mini about a year old) idles at low power until it is called upon to do something other than just sit there; and with regard to displaying graphics, animations take a significant portion of the CPU. Digg's pages also do, exactly as I described; slashdot's don't. I'm just reporting the facts here — there's no point arguing with them.

      Faster machines and perhaps other Java implementations might make lighter work of Digg and animations both. However, that doesn't change my situation, which is that I experience a significant CPU tasking for some things that websites do, including flash animations, larger GIF animations (and I have broad experience here; our software makes them) and definitely digg and similarly Java-ized sites.

      Oh no, IE/Firefox chews up 40MB as soon as you turn it on...

      RAM use isn't a concern; I have plenty. I didn't mention it anyway - it is CPU power, which is a limited resource, that is the issue here.

      --
      I've fallen off your lawn, and I can't get up.
  66. Preach it, brutha by Almahtar · · Score: 1

    I recently visited an old colleague of mine and we talked tech a bit. He was getting into citrix, an amazing server-side application deployment method... all of the benefits of which have been covered by X for ages. It's sad that people don't know about such impressive technologies simply because they don't have a marketing budget to make it happen.

    X has been ahead of its time for quite a while. It's sad to see it still wallowing in obscurity while people reinvent the wheel, slap a fancy label on it, and charge exorbitant amounts of money for it.

    That's one of the reasons Linux still has such a small following, IMHO. It may not be a tiny following, but it's smaller than it could be if people really knew what they were missing. I just got hired on at a new place, slicked my workstation and put Ubuntu on it with Beryl. Everyone was so impressed with the usability and beauty of the interface, and they were all amazed that this is what Linux could look like. They'd never heard of it (but they'd heard of OS X and Vista) despite its superior features.

    1. Re:Preach it, brutha by Blakey+Rat · · Score: 3, Interesting

      The problem isn't one of marketing (well, ok, that's part of it), but of ease of use.

      Remember, if you have a feature that people can't figure out how to use, for all practical purposes that feature does not exist.

      If you want to make X popular, first of all give it a decent name. Secondly, write an extension to Firefox so that a specially-tagged HTML page can call an X application over the Internet to run it. Add in all the bells and whistles I described in the grandparent post, and bam, you have a winner... assuming you can make it work without requiring gobs of Linux knowledge like it does now. Now when I visit Gmail, Google can put up a highly interactive email client which lets me drag&drop a file into the email window to add an attachment, and I'm happier and Google's happier and Firefox has a huge selling point.

      From what I understand, though, X isn't suited for this for a couple reasons:
      1) It's designed to run an entire desktop over the network link, not just one single application. i.e. you define a rectangle as "the desktop" and all windows/etc that X opened would have to be contained in it... that's not ideal.
      2) It's bandwidth-heavy. Maybe not when competing with Citrix, but if Google started using it they would see their bandwidth bill skyrocket.
      3) X doesn't solve the problem of native widgets. X applications run in OS X look like crap because the widgets are simple greyscale things that look like they were rejected from Windows 95, and not the nice-looking OS X buttons and widgets. Additionally, X applications in OS X still can't accept drag&drop, or use the OS X spell checker, or communicate with other apps, etc etc.

      If it's going to happen, I think a new protocol needs to come forth. Perhaps something that transmits VB-like "forms" to the client on demand, and the "forms" can contain scripting in Python to accomplish the task, with a network protocol to stream-in new "forms" as needed and to interface with a remote ODBC connection through this psuedo-app. You could design the "forms" to take up minimal bandwidth and use native widgets by giving instructions like "draw a pushbutton with a label 'hello' at this coords" instead of sending bitmaps (like X does.) You'd also be able to script a form to modify itself to some extent, so you wouldn't need to make a round-trip to the server every time you hit a disclosure triangle.

      If anybody builds this, put my name in the credits. ;)

    2. Re:Preach it, brutha by Anonymous Coward · · Score: 0

      I guess you've never used Access.

    3. Re:Preach it, brutha by Anonymous Coward · · Score: 0

      The VB classic (from vb5 and vb6) had that... was called active documents (all the M$ Office documents are active documents. ej: the Access forms)

      What you describe is exactly how a intranet M$ Access app was

  67. Re:SCRIPT? Do it in C++! by Anonymous Coward · · Score: 0

    "I would even to so far that cgi in most cases is way slower, it does not provide advanced caching algorithms for dynamic content, no connection pooling, it relies on a process per request while most app servers rely on a thread per request model etc... there is almost no reason at all to use cgi."

    www.google.com/search?q=speedy_backend

  68. Re:SCRIPT? Do it in C++! by Anonymous Coward · · Score: 0

    So what?

    There are lots of embedded web-servers that can do exactly the same stuff.
    Take a look at Barracuda, which provides C/C++ Server Pages (CSP) and Lua Server Pages (LSP) for easy and convenient scripting. BTW, Lua is currently the fastest scripting language if you like to compare speed.

    It makes more sense to use an Embedded Web server for this kind of work as one can easily integrate such a server into any application -- i.e. extend any application with web and scripting support. A good web-server can also read directly from ZIP files as if it is a file system, thus making it even easier to deploy a GUI as the ZIP file can be integrated into the executable.

  69. Browser compatibility? Huh? by Anonymous Coward · · Score: 0

    "Then there is the joy of browser compatiblility. You start out saying, oh, we will only support browser X...but it never sticks...and your regression testing grows geometrically with each browser and version of browser you support."

    What are you talking about? You have to be exploring some obscure browser bugs or making very fragile pages for them to not work on all the modern browsers. I test on Firefox and IE 6 and I'm done. I don't use weirdo features or explore every last JavaScrpt hack possibility. If you're having to test for each specific browser version you are coding pages that are fragile.

    I would even say, if you're coding JavaScript by hand, what are you doing? These days you should be using some of the various JS toolkits. I write AJAX all the time and never write any JS myself.

  70. that's because they have never had a good one. by twitter · · Score: 1

    90% of computer users are incapable of operating a command line.

    That does not really matter for my project because it's just for me. I've documented the code I've written so others in the group can use it if they want to, but when I'm done the work is done and there will be little need for it.

    That most people can't use a command line is a sad M$ legacy. DOS was and still is both clumsy and lacking proper documentation. I'm told they finally got tab complete sort of working, but their paths are still foo-bar and there's no proper man or info commands. Without bash, proper paths and man, I would not know much either.

    --

    Friends don't help friends install M$ junk.

    1. Re:that's because they have never had a good one. by XO · · Score: 1

      Trust me, that is -far- more confusing to people.

      Guy #1: What's the command to find out if a net site is up?

      Guy #2: man ping!

      Guy #1: WTF?! I didn't ask for a chinese menu, d00d.

      --
      "Champagne for my real friends - and real pain for my sham friends!" http://ericblade.postalboard.com/
    2. Re:that's because they have never had a good one. by dedazo · · Score: 1

      Well monkey boy, where are the free-as-in-whatever mental interface drivers for GNU/Linux? Or at least some speech recognition that does not suck rocks? Where? Oh, that's right. Nothing remotely useful to replace the GUI or command line has come from outside of commercial software in twenty years. But hey, you're right - what was "M$" thinking when they got rid of the command line? Another personal insult to twitter!

      --
      Web2.0: I love when people Flickr my cuil and digg my boingboing until my google is reddit and I start to yahoo
  71. The real problem is - by DaveDerrick · · Score: 1

    "why experienced Web developers find themselves struggling to learn a GUI toolkit" You should be using engineers who understand what they are doing, some of us know GUI toolkits inside out & never touch web apps (unless we have to). Your coming at the problem from the "what we know" angle, not the "what we need to know" angle.

  72. Re:SCRIPT? Do it in C++! by MemoryDragon · · Score: 1

    The only usecase i see for cgi is a database less app, in an environment where you have an apache webserver only. As soon as you have a tomcat (or any other app server) lingering around or a scripting engine docked onto the webserver, which in almost 100% of all webserver installations it is the case, then forget CGI, you are faster with other methods. In case of java just drop in a servlet or jsp, this is very frameworkless in case of scripting engines drop in what the language provides. Once you hit the db level or or more than a few lines of code, forget cgi entirely.

  73. Re:SCRIPT? Do it in C++! by MemoryDragon · · Score: 1

    You talk about frameworks, it depends, in a typical webapp you have at least one framework, the one serving and consuming the http infrastructure, and that is pretty much the lowest level you can get unless you program even that yourself. This is also what every so called framework provides at its lowest level, in java for instance this is the servlet level. If you want you can stay there. Now if you mean with CGI c++, then lets talk about security, you omit security by using a language which allows buffer overruns in strings. And as soon as you hit more than a few lines of code, the db issues crops up like an evil ghost, then you are back to db access layers etc... There are only a handful of usecases outside of hello world where we need cgi only makes sense.

  74. Re:SCRIPT? Do it in C++! by bytesex · · Score: 1

    Java was just an example. If you write stuff in C++ to fit inside an appserver, then I wonder why you don't turn the order of things around. That is, write your application, and have a library on the side which runs a http server, publishing your app - but that's just a side-thought. With C++ I'd mainly have the reservation that the danger of heap-corruption by a neighbouring (different app-owned, even) thread is even bigger. I mean, in a java appserver I only run the risk that a badly programmed Servlet throws some element on a static Vector which each request, leaking memory until it can't run no more. With C++ I run the risk that some neighbouring thread causes a seqfault. With process isolation, I might spend time sucking up my state; with an app-server, how much time is spent inside locks ?

    No, I love process isolation; I can add, remove, debug a single element of my app, all the while the machine keeps on running. In my line of business, there are no static, 'finished' applications. Ever. That's why I go for CGI every time.

    --
    Religion is what happens when nature strikes and groupthink goes wrong.
  75. XUL? by Spaceman40 · · Score: 1

    What about XUL?

    --
    I [may] disapprove of what you say, but I will defend to the death your right to say it.
  76. Bondage and Domination interface! by AmazingRuss · · Score: 1

    Yes! I must! They have been bad little users, and must submit to their master!

  77. Re:SCRIPT? Do it in C++! by achacha · · Score: 1

    Any language in the hands of bad developers can cause problems. While C++ heap corruptions can be easily detected by number of tools (including MSDEV), good programming is not something a compiler can always help with. Java suffers from many other problems like resource leaks, circular refernces that prevent GC from cleaning up correctly, object bloat (objects for everything under the sun, I suppose pun intended), and oevrall code bloat. WebSpehere that I worked with would take 1.2 GB just to start up and we often hit the 2GB barrier, there is way too much stuff with java that you just don't need but it's there taking up resources and space.

    I have been writing CGIs since 1994 and often used the CGI as a test or proof of concept. The thing I do not like about them is to make them work you have to write additional "services" that manage things like persistence, database connection pooling, static content caching, XSLT processing (caching parsed stylesheets), etc.

    I can see when you have a highly changing environment, a CGI offers enough simplicity to make the needed changes without having a framework to rely on (heck, my CGI library was designed to let people write C++ objects that would inherit common functionality accross CGI calls to make life easy, and that was in 1995). Since mid 90s I have run across way too many complex problems that CGIs were not always ideal in solving (most revolve around database connectivity and session management), so I have been drifting more and more toward app servers (and not java kind, I have what happened to java, too many corporations with their pointless JSRs have made it into a bloated sack of lard).

    Your point for CGIs is valid, they offer great isolation, but I tend to lean to speed and efficiency when I can, so I have been drifting away from CGIs.

  78. Re:I don't understand! Help me? by Creepy · · Score: 1, Troll

    This is more from a perl programmer (or really any shell scripting language) perspective - if you don't know a scripting language then I agree- VB/Excel is probably easier. Installing a web server is trivial and usually installed already, but maybe not enabled. Writing HTML is practically a non-issue these days - download a WYSIWYG editor and write the page. Yes, there's a learning curve, but creating a simple form is fairly trivial (and if that fails, find something you like that's similar, use "View Page Source" and copy).

    I've done exactly this sort of interface before - the form basically got a list of machines and ports, a build, and a release level and kicked off a series of upgrades on those machines. As machines completed you would get Gray/Red/Yellow/Green indicators on the web results page (which just used a simple html update every 30 seconds). Gray meant not complete, Red meant it failed or the monitoring/processing script died on that machine, Yellow meant some oddity occurred but it reported successful (it was compared to a sample file), and Green meant successful. The perl scripts and web pages were really quite simple for all that and certainly didn't take a lot of processing power. For a password protected Intranet app, it worked great.

    I'd go one step further about networked apps, however - this is REALLY BAD for a networked app - I'd recommend only using it for an internal app (which is what the author seems to be implying, anyway).

    Why? Aside from the individual processes taking up a lot of CPU, because CGI (and perl especially) is notoriously easy to hack using carefully constructed form entries and needs to be parsed carefully (the one time I did this, my parser was longer than my code). Some of the earliest exploits used form hacks to gain root, which is why web servers typically don't run as root outside the parent process anymore (not sure about Windows servers, but if they run in admin mode they would be at risk).

    Hacker 101: hacking perl using form entries

    This is probably a bit technical if you're not versed in UNIX. The exploit is by no means limited to UNIX, but you need other commands to do what you want on other OSes.

    Take a Form entry - you expect to parse something like
    John Smith

    what the hacker might put in is something like this (which might have errors, example is for the gist):
    John Smith\n\";system(\"set DISPLAY=10.1.1.12:0.0; export DISPLAY; xterm &\");

    note that I used the "long" form of export - this was intentional because sh doesn't always support the single line export command (export DISPLAY=... - really a ksh feature added to bash which sometimes replaces sh).

    another note: spaces and some other chars get translated by the browser but are typically translated back in the perl program and there are some differences between GET and POST methods, but I'll ignore those since they really aren't relevant.

    the goal for a hacker is to get the text read into a perl variable like this:
    $var="John Smith";system("set DISPLAY=10.1.1.12:0.0;xterm &");

    if you then do anything to the data such as
    print $var

    Perl constructs this as
    print "John Smith";system("set DISPLAY=10.1.1.12:0.0;xterm &");

    and then interprets it. Since ; means end one command and begin another, you actually get
    print "John Smith";
    and
    system("set DISPLAY=10.1.1.12:0.0;xterm &");

    nitpickers will notice there are still a few issues here - xterm might need to be the full path to the xterm app (and you're assuming UNIX or UNIX work-alike) and some sort of a UNIX at the other end with xhost permissions turned on for that domain or machine (or even an xhost + for everyone) on the hacker's server. This is just an example - you could just send spam using sendmail, for instance.

    to be quite honest, when I used this exploit (a long time ago), I usually tried to attack the cgi directly on the address line whenever possible (bypassing line length limits from the browser).

  79. Some good ideas, some misconceptions by Almahtar · · Score: 1

    I really like your firefox extension idea - makes me want to develop it myself, but I know there's a mountain of knowlege I'm missing that I'd need to make it happen. Either way, great idea.

    A few misconceptions, though: X doesn't have to run with the desktop. Windows can float freely in your existing environment (it's a matter of configuration options or runtime arguments).

    Second, the look and feel of the widgets can depend entirely on the X server. I'm talking the "X server" that's running on your local workstation, not the server on which the X application resides. An X server could be customized to run on your OSX that would have all of the Aqua look and probably even many of its features (like spell check). Much of that stuff isn't there yet simply because it hasn't been implemented, but not because it's not permitted by the design of X.

  80. Nothing new, seriously by arkaino · · Score: 1

    Web browsers, one of the highest level of abstraction ever acquired for application development. Great, they've been here for a long time already.
    The article isn't anything else than a memory refresh.

  81. Re:I don't understand! Help me? by seebs · · Score: 1

    Many of us already know CGI, since it's a fairly common and fairly easy interface. Many of us already know HTML.

    The sample application that led me to this article is a document management system which associates scanned images with a database of material about them (phone numbers, company names, etcetera). The CGI and HTML part was fairly simple, certainly much simpler than comparable tasks in most GUI programming environments.

    The file store interface was just Berkeley DB with locking. Works great.

    --
    My blog: http://www.seebs.net/log/ --- My iPhone/iPad app: http://www.seebs.net/seebsfrac/