Oh internet gurus, what's your advice?

Believe it or not, there is the remote possibility that I may get to have some influence in getting a web application built, that I can use in teaching, that will do something that I want.

Unfortunately, I know very little about the relative merits of AJAX/JavaScript vs. Flash vs. a custom C++ plug-in, that does something with WX Windows or QT.

What do you think?

More like this

We've been running a search to fill a tenure-track faculty position for next year, and I've spent more time than I care to recall reading folders and interviewing candidates. Now that the process is nearing completion, I'd like to do a quick post offering advice for those thinking about applying…
Purty, innit? I got the raspberry one pictured above. Disclaimer: This is not a corporate product review. I purchased my Kodak Zi8 for full retail price two months ago for $179.95. However, you can get it now for $129.95 at Kodak and everywhere else on the web. It was a fantastic deal at the old…
A question for the Firefox users: How do I make Firefox on a PC use something other than Adobe Acrobat to read PDF files? Background: Opera is my browser of choice for web surfing, but I use Firefox for accessing GMail, Movable Type, and a few other sites that don't play well with Opera, and…
Both my desktop and my laptop started working more slowly a few weeks ago. This indicated that something about the operating system (some version of Ubuntu Linux) changed in a bad way. Or, perhaps, since the slowness was mostly noticed in the web browser, the newer version of Firefox was somehow…

Very roughly, AJAX/Javascript will work everyhere, for anyone, using any moderately recent browser. It also tends to work reasonably well for visually impaired users, and it accomodates people's wishes regarding text size and other interface elements quite well.

Flash too, will tend to work in many places, but it is pretty bad for anyone with bad vision, or anybody that simply wants bigger or clearer text for any reason.

Anything requiring a custom plugin will be very restrictive; you're limiting yourself to a subset of operating systems and a subset of browsers on those systems, and to the subset of people that accept installing a custom application (which is what a plugin is) on their computer just for the functionality you want to offer.

In fact, a custom plugin will have all the drawbacks of an off-line application, without the benefits. If you decide to go that route, then take the consequences and simply develop a real application and leave the browser out of it altogether.

Hi Sandra,
It is difficult to answer this question without knowing what kind of application you would like to write. But, in general, I would start with ajax/javascript:
- javascript/ajax is open, multi-platform.
- There are a lot of examples everywhere on the web.
- You can create a great interface: http://code.google.com/webtoolkit/examples/
- You could also use the XUL engine from mozilla/firefox to create your web application.( http://developer.mozilla.org/en/docs/XUL_Tutorial http://developer.mozilla.org/en/docs/Getting_started_with_XULRunner ) or your firefox plugin.
- you can start on coding your application without buying another tool. AFAIK, you can code your flash/flex from scratch but most users will use http://www.adobe.com/products/flex/features/flex_builder/. I tried to learn flash/flex but there is not much free documentation and I had the feeling to learn another javascript-like language whereas I didn't fully know javascript.
- you could also think bout a java applet or a webstart application instead of QT/C++
http://www.java.com/en/download/faq/5000070700.xml

Pierre

I second Janne in that a custom plugin is definitely not a good choice. It would be limited to one browser and requires the user to install it. I'm not very knowledgeable on Flash, but it appears to be significantly more versatile than often kludgy AJAX solutions. However AJAX integrates better with conventional web content, i.e. Flash is kind of like an application inside a browser, while AJAX applications are basically dynamic websites. Also, AJAX works on more platforms (e.g. some mobile phone web browsers don't have Flash, but do support AJAX).

Ultimately it depends on what kind of an application it's going to be. The people who end up designing and doing the application really should know the best. If they don't, it's not a very promising sign and you'll be lucky to see any sort of working application at all.

Is it something that's going to be blog based? That might provide an obvious answer. Frinstance, on Wordpress, you'd want to create a php plugin and/or php widget.

db

What are you trying to do and what resources do you have available?

All of the things you mention can work, as would perl, ruby on rails, php, and a host of other tools. But as with any tool, picking the right tool depends on what you need it to do. You can put a screw in with a hammer, but it won't work as well as if you used a screw driver.

It really depends on what you want the tool to do. A simple flash card tool to help memorize terms would be just javascript and maybe not even a db back end for the terms and definitions. Interacting with students and tracking their responses over time? Definitely a database backend. Lot's of graphics or more interactivity? I'd probably recommend flash and Adobe Flex.

Who will be doing the work, and what skill sets do they bring to the table? If you have someone who is already using ajax and javascript, you may not have time for her to learn a new language. On the other hand, if you have someone who is looking for a project to help learn a new language and you have time, that can be good as well.

I work in IT and have been down this road a few times, so feel free to email me if you have more details and want suggestions.

Bob

I agree with the other two, stay away from the custom plugin route with web applications.

the major decision to make between AJAX and flash are sort of based on where you want to put the logic. current flex/flash implementations, can do pretty much anything that a custom plug-in might do, with the advantage that most people already have the plug-in. a downside is that the language, actionscript 3, is an annoyingly idiosyncratic language that occasionally places truly idiotic inconsistencies in your way. of course compared to browser incompatibilites and multiplatform testing it's a walk in the park. some other added advantages to flash are being able to set up offline applications and the built in multimedia libraries. also see Adobe AIR for the offline runtime. (disclaimer, I work there, but in a different department)

the bigger question in making a web app is the size of the data store that you are using. basically if you have immense piles of data, most of the computation and manipulation should probably be happening on the server, and at that point it doesn't really matter what the front end is made out of. In fact if you make the communication API simple enough, you could have both the AJAX and Flash front ends.

the complaint about flash not having clear text is more of a complaint about most flash designers rather than flash itself. as with many design technologies Flash enables a lot of bad design. flex sdk is free and leaves out much of the graphical end of things that gets most app in trouble.

that said, I would say that unless I were doing something very complicated in the UI and needed to hide proprietary code stick with AJAX. but in either case be very careful of the server security.

one last thing to consider, for the most part, every time you load a webpage with a flash movie in it, you have to start from the beginning again. a web app has the possibility (if you don't rely exclusively on AJAX) of being linked to somewhere in the middle. flash is very good about forcing a route, but at times that can be a real pain in the ass.

In order of what I perceive to be most desirable to least desirable:

"AJAX", roughly speaking, is a trick using ordinary javascript and HTML to simulate a live application. HTML is normally "stateless" - you load the web page and that's what you get. The "AJAX" trick involves having a theoretically standards-compliant but hidden frame in the displayed web content which is used to send data back to the web server as needed, and then re-update the display on the fly using more theoretically-standards-compliant javascript. The upshot is that you can use completely standards-compliant HTML and Javascript to create something that works as though it were a real local application.

A fully web-based "AJAX"-type of approach is almost certainly going to be the most portable and easiest to update method to handle.

Macromedia flash currently still requires a proprietary binary-only plugin, which acts as a sort of browser-within-a-browser. It works on most platforms, but there are still a few that Adobe doesn't want to bother supporting (native 64-bit OS's, for example - though at least on AMD64 linux there is a workaround). I'm under the impression that a lot of Flash works under-the-hood a bit like AJAX - flash applications can use queries to websites to change themselves on the fly. Also, Macromedia Flash is almost certainly the best way currently to display video content for people (Quicktime, Real, and Windows Media all have proprietary platform issues), and admittedly seems pretty good for graphic-intensive uses. Oh, and it is possible to download and play flash applications and videos locally, though it's not necessarily intuitive how to do so.

Not mentioned but worth at least keeping in mind is Java. It's less ubiquitous and more prone to platform-specific quirks, but web-based Java applets or local applications are probably easier for a wide range of people to run - many people already have a Java "virtual machine" system installed and so wouldn't need to download Wx, QT, or GTK+. Otherwise, I'd call it about the same as your third option.

With a custom C++ and QT/Wx/GTK+/whatever application you have to deal with people needing to find and install the extra support libraries and the software itself. This isn't necessarily difficult if one knows what one is doing (and has enough administrator-power on their respective system to be allowed to install software) but after 15+ years of doing tech support I realize that the proportion of people who use computers and "know what they are doing" is disturbingly low. Also, you'll need to provide versions compiled for each platform you want to support - hypothetically this shouldn't be a big problem when using a cross-platform compiler like GCC, but it does mean more work and more support. As much as I like using QT applications, I'd leave this (and client-side Java applications) at the bottom of the preference list, though I wouldn't rule it out entirely.

In short:

Most desirable for most uses: standards-compliant AJAX (HTML/Javascript).

For non-interactive video or minimally-interactive graphic-intensive display: Macromedia flash

For interactive applications that for some reason couldn't be done with AJAX or Flash: Web-based Java applets

For offline use: Flash for less-interactive applications, client-side Java applets for complex ones if necessary.

Last choice: Custom client-side application in a compiled language (e.g. C++)

My opinion as someone chronically aware of cross-platform issues over the last 10+ years.

GWT (Google Web Toolkit) is, on the whole, a pretty solid choice for web apps that are starting fresh:

It abstracts away most of the the Javascript/HTML messiness behind Java - and this is the important bit - allows you to debug the application as a Java application.

http://code.google.com/webtoolkit/

Have a look at http://code.google.com/webtoolkit/examples/

There are some downsides - the base library that solves the 'work on any browser' is quite big, some of the AJAX toolkits out there have more fancy widgets available, the benefit of the abstraction will be less if you have access to a really good, really experienced AJAX developer.

By Idlethought (not verified) on 20 Mar 2008 #permalink

web application ... that will do something that I want ... AJAX/JavaScript vs. Flash vs. a custom C++ plug-in, that does something with WX Windows or QT.

You sort of left out the important bits whilst including little more than flame bait. Like, for example, "which is better equipment for the lab, a laser, a triple-beam balance, an electron microscope or a set of test tubes?"

Seriously, you can do better than that, and we, in turn, could produce suggestions that go beyond 'Flash sux and Java roolz!'.

A "web application". Does it have an offline mode for when we're counting those hard-to-find bendable bacteria in the forest? Will the user interface utilize a spellchecker so the scribe doesn't mis-categorize my brand new bacterium as "anthrobacter boringus"? A web application is often implemented in the client-server arrangement of responsibilities, but will your app make use of peer-to-peer communication? Indeed, can researchers enter data by cellphone or other hand-held device? Et cetera.

In short, the journalist's five W's (who, what, when, where, why) and how.

/disappointed that Python didn't make the short list of languages

By Matt Platte (not verified) on 20 Mar 2008 #permalink

Matt's right that more specific requirements will result in better suggestions.

What also matters - and can matter more - is who is likely to be creating such a thing, how long have they got and what do they already know how to do?

By Idlethought (not verified) on 20 Mar 2008 #permalink

I second (and third) the comments above that ask for more info on what you're trying to do. But I was also wondering do you still have contacts at SCCC? If so, they might be a good resource. Upper-level IT students might be interested in a real-world project and I'm willing to bet their instructor(s) would too. I can see it now:
CS-203 - The Sandra Porter Project
But that's starting to sound like an ensemble jazz-fusion group! ;)