Skip to main content

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!

Comments

jjinux said…
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?

:)

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

Darrin, nice to hear from you ;)
jjinux said…
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.
jjinux said…
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...

-Simeon
jjinux said…
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:
http://dougmccune.com/blog/2009/02/08/analyzing-the-size-of-the-flex-framework-or-why-i-hate-the-advanceddatagrid/
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
jjinux said…
> We use Flex together with pyAMF and a python server (twisted).

Very helpful post, thanks.
jjinux said…
> 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.
Orly 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".
jjinux said…
> 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.
jjinux said…
Great comment, j_king.
jjinux said…
Thanks, Jarrod. I wonder if your comments on GWT apply to Pyjamas too.
Justin A 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
jjinux said…
> 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.
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?
jjinux said…
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.

Popular posts from this blog

Drawing Sierpinski's Triangle in Minecraft Using Python

In his keynote at PyCon, Eben Upton, the Executive Director of the Rasberry Pi Foundation, mentioned that not only has Minecraft been ported to the Rasberry Pi, but you can even control it with Python . Since four of my kids are avid Minecraft fans, I figured this might be a good time to teach them to program using Python. So I started yesterday with the goal of programming something cool for Minecraft and then showing it off at the San Francisco Python Meetup in the evening. The first problem that I faced was that I didn't have a Rasberry Pi. You can't hack Minecraft by just installing the Minecraft client. Speaking of which, I didn't have the Minecraft client installed either ;) My kids always play it on their Nexus 7s. I found an open source Minecraft server called Bukkit that "provides the means to extend the popular Minecraft multiplayer server." Then I found a plugin called RaspberryJuice that implements a subset of the Minecraft Pi modding API for B

Ubuntu 20.04 on a 2015 15" MacBook Pro

I decided to give Ubuntu 20.04 a try on my 2015 15" MacBook Pro. I didn't actually install it; I just live booted from a USB thumb drive which was enough to try out everything I wanted. In summary, it's not perfect, and issues with my camera would prevent me from switching, but given the right hardware, I think it's a really viable option. The first thing I wanted to try was what would happen if I plugged in a non-HiDPI screen given that my laptop has a HiDPI screen. Without sub-pixel scaling, whatever scale rate I picked for one screen would apply to the other. However, once I turned on sub-pixel scaling, I was able to pick different scale rates for the internal and external displays. That looked ok. I tried plugging in and unplugging multiple times, and it didn't crash. I doubt it'd work with my Thunderbolt display at work, but it worked fine for my HDMI displays at home. I even plugged it into my TV, and it stuck to the 100% scaling I picked for the othe

Creating Windows 10 Boot Media for a Lenovo Thinkpad T410 Using Only a Mac and a Linux Machine

TL;DR: Giovanni and I struggled trying to get Windows 10 installed on the Lenovo Thinkpad T410. We struggled a lot trying to create the installation media because we only had a Mac and a Linux machine to work with. Everytime we tried to boot the USB thumb drive, it just showed us a blinking cursor. At the end, we finally realized that Windows 10 wasn't supported on this laptop :-/ I've heard that it took Thomas Edison 100 tries to figure out the right material to use as a lightbulb filament. Well, I'm no Thomas Edison, but I thought it might be noteworthy to document our attempts at getting it to boot off a USB thumb drive: Download the ISO. Attempt 1: Use Etcher. Etcher says it doesn't work for Windows. Attempt 2: Use Boot Camp Assistant. It doesn't have that feature anymore. Attempt 3: Use Disk Utility on a Mac. Erase a USB thumb drive: Format: ExFAT Scheme: GUID Partition Map Mount the ISO. Copy everything from