I've built Web apps in ASP, PHP, Perl (with mod_perl and Mason), Python, and Ruby. Just in the Python world, I've used Webware, Aquarium (which I wrote), Zope, Plone, Web.py, Pylons, and Django. I've also used ZPT, Cheetah, Myghty, Mako, Genshi, and Django templates. On the JavaScript side, I've used MochiKit, Dojo, and jQuery, and I've read the docs for YUI, Prototype, and Script.aculo.us. I've written Greasemonkey scripts, and read all the XUL documentation. I've used Apache, Nginx, IIS, and I've even written my own Web server. I've done ecommerce sites, configuration dashboards, XML-RPC services, RESTful Web services, and Ajax apps. I do everything from CSS to scalability. I'm even up to date with the latest books: I've read "JavaScript the Good Parts", "Building Scalable Web Sites", "RESTful Web Services", etc.
After a decade of working with the Web, you might think I'd know it like the back of my hand, but to tell you the truth, I feel more lost than ever. I still haven't found any Web technology that makes building Web apps anything other than a messy, complicated pain in the butt!
After a decade of working with the Web, you might think I'd know it like the back of my hand, but to tell you the truth, I feel more lost than ever. I still haven't found any Web technology that makes building Web apps anything other than a messy, complicated pain in the butt!
Comments
Rails does a great job of integrating Ajax into the regular development flow. It is no harder to make an Ajax link than a regular one, thanks to the wonders of the helpers. What is hard, and will remain hard for a very long time, is making Ajax work efficiently and safely. [p. 605]
:)
-Simeon
Darrin, nice to hear from you ;)
>In all seriousness, I am tempted to give Flex a shot.
I'm interested in Flex since Bruce Eckel seems to be singing its wonders full-time. The learning curve seems pretty high though if you're on Linux and not wanting to use the GUI Builder (which has been unsupported for Linux anyways... Last release was alpha4 in early 2008).
Switching to Flex would mean only one platform for the fiddly bits of a web app (presuming the flash plugin is identical across browsers). You still have server side languages and datastores to mess with and flex is using a different xml markup, a slightly different Javascript, and still CSS for styles. I don't think there's any getting away from the need to be a generalist using half a dozen different technologies in order to create non-trivial web apps...
-Simeon
Flex is certainly not perfect and it does have a non trivial learning curve but my goodness you can do some lovely/effective GUIs. We've got everything from radial menus to interactive scatter plots over large datasets (10K dots).
Biggest problem with Flex is having to program in AS3 which is slightly Java-esque and after years of python that's a bit hard to take but the benefits outweigh that problem. We've stuck with it.
For some flex/flash porn see http://flare.prefuse.org/
For the sake of balance, i would also point out (justified) rants like this:
http://dougmccune.com/blog/2009/02/08/analyzing-the-size-of-the-flex-framework-or-why-i-hate-the-advanceddatagrid/
Very helpful post, thanks.
Yep, I've been keeping a close eye on Pyjamas. I'm considering it. I'm not sure if I'm prepared to be a full client-side app. I'm so used to doing server-side apps.
I've been looking for a silver bullet for a while too, and there just isn't one. I, personally, felt ASP.net was on the right track with the event-driven model, though it's still quite easy to make a huge mess of things.
Web development is a tower of babel. You need to know at least three or four languages to get the stack running. You'll also need to know a few different configuration languages and the lingua-franca of your chosen OS. Any significantly sized application quickly becomes a nightmare.
The applications themselves are shambling giants waiting to fall apart. Stateless beings who have no hope of recovery. Data serialized back and forth several times during a single request. If any component along the line spurts out the wrong return or is missing all together, the whole beast falls apart. That it actually works somewhat reliably is actually amazing.
I'm not a huge fan of web development these days. It's boring work. It's stressful work. It also has the largest number of employers. Which makes me a web developer. It's hard to escape... but the other side is so much more beautiful.
The only framework I've found that makes things better is a Lisp based one called, Weblocks. Your entire application can be written in one language (Lisp) and it can have state by way of continuations. It's rather elegant, but sparse on documentation. Also, being written in Lisp, it's possible to update the application code without restarting anything... while its running. Pretty sweet stuff it is.
That said, I like Flex as well. ActionScript 3 is very much object oriented and more natural to Java and Python developers than the old V1 and V2 prototype based "classes".
Avoiding the huge mess is indeed hard.
I've been meaning to do more with pyjamas+pylons+jsonrpc
That sounds right up my alley. Back in the day, I did an app that used Zope + Jython / Swing + XML-RPC.
Which one is your favorite?
Which one are you most productive in?