Web: More Lost than Ever

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!


I like this quote from the "Agile Web Development with Rails" book:

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]
metapundit.net said…
So... you're switching to Silverlight?


Anonymous said…
Amen brother!
Haha, very funny Simeon ;)

Darrin, nice to hear from you ;)
In all seriousness, I am tempted to give Flex a shot.
Wyatt said…
Man, I was thinking the same thing about Web dev recently and looking at Flex (and OpenLaszlo) too. They look nice (from the outside anyway), but it'd be hard-to-impossible to switch to one of those at work. But at least we're moving on from COBOL, PowerBuilder, and C toward more Java and even more Python.
You're coding in COBOL? Ok, you win. I'll stop complaining ;)
Wyatt said…
Not me personally, but we have at least one COBOL program that's being rewritten with Pylons/SQLAlchemy/Ext.
reedobrien said…
I think that building web applications is tedious due to all of the quirks of multiplatform globally available user interfaces. That may improve over time, but developing applications will always be hard, because it is an exercise in knowledge capture of a domain outside of the developers expertise. All of the tools in the world won't make learning simple. If you are a good developer then each project becomes more complex and harder. With that comes the feeling of being lost (and safe, for the books fans.).
metapundit.net said…
JJ said
>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...

Good comments.
Anonymous said…
We use Flex together with pyAMF and a python server (twisted).

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:
Noah Gift said…
One of the problems with the web is that is draws a certain amount of hype and bullshit. As a result, it is often hard to find people that are actually honest. That, to me, is the biggest problem with the web, web frameworks, etc, thick, thick bs, and thin engineering and truth.
Niki said…
Instead if flex check pyjamas
> We use Flex together with pyAMF and a python server (twisted).

Very helpful post, thanks.
> Instead if flex check pyjamas

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.
Dean said…
This comment has been removed by the author.
Matt said…
Unless you plan on purchasing Flex Builder (it's Eclipse based...how could they make it not run on Linux?), you're going to find Flex very verbose and tedious.

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.
j_king said…
I'm glad I'm not the only one.

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.
Jarrod said…
GWT is the way to go for any non-trivial "Rich" web gui!

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".
> 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.

Avoiding the huge mess is indeed hard.
Great comment, j_king.
Thanks, Jarrod. I wonder if your comments on GWT apply to Pyjamas too.
Justin said…
pyjamas is primarily server based, there are just additional projects that are using it to build 100% client side apps.

I've been meaning to do more with pyjamas+pylons+jsonrpc
> 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.
Brendan said…
That's a lot of experience with many different frameworks. Often it's hard to find good evaluations of web frameworks since there are dozens of them but most people have used only two or three.

Which one is your favorite?

Which one are you most productive in?
I really like Rails, although I wish it were written on top of Python--Ruby is a bit too lenient for my tastes. I'm also fairly productive in Pylons. I really liked my own framework, Aquarium, but it's more fun to be part of a larger community.