Tuesday, August 02, 2005

The space shuttle in trouble again

Not wanting to annoy any Americans out there, but the latest episode in the Space shuttle saga, is evidence if we needed it that complexity should be avoided.

Space travel, like software development is inherently risky. So why compound that risk, by devising a space vehicle miles more complex than it needs to be?

The Russians seem able to put people into space, a lot more reliably and at a fraction of the cost. So what is their secret? Well a simple rocket design, inherited from the Germans after World War II, is still used by the Russians today.

This simple design has its' advantages, the dangerous fuel tank, that makes up the bulk of the vehicle, is behind the capsule where the astronauts reside. The cockpit capsule can be ejected from the rest of the vehicle, protecting lives in a catastrophe. In contrast, the space shuttle design, has the astronauts sitting on top of a massive fuel tank and adjacent to two solid rocket boosters, with no escape route.

From a safety view point, the space shuttle design is ludicrous. In terms of complexity, the shuttle is significantly more complex then the rockets the Russians use so successfully.

So why? Oh yes, the space shuttle comes back to earth, this as got to be an advantage. Well no, the Russians manage to travel to space at a fraction of the cost, even though they have no reusable parts.

So what is the real reason? Well if I was to hazard a guess, I would say ego. The same reason why so much software is much more complicated than it needs to be. Having a space vehicle that looks like it came out of a "Buck Rogers" movie is more flattering to the ego, than a plain old rocket as depicted in a bugs bunny cartoon.

I'm sure that national ego, will keep the shuttle program going, when all involved must know that the basic design is fundamentally flawed. I've seen this type of "group think" before, often in companies. Compound a bad decision, by ignoring it, glossing over the facts, and pouring good money after bad. After all we don't want to admit that we got it wrong, do we?

I've been learning Ruby lately, and I've taken a look at Rails. I find Ruby an elegant and productive language (when compared to Java), and for most web apps I've built, I'm sure that Rails would have done the job in a fraction of the time (and cost).

So why are people still building web applications using EJBs, JNDI, XML, JSP, CSS, JavaScript etc, etc? For some, mastering this soup of TLAs is an ends in itself. Being able to do this stuff just makes them feel good. It plays to their ego.

As for me, I get my kicks by knowing that I've produced something useful. Something, that will make someones life easier, better, less stressed etc. So with all this press about the space shuttle, I like to think of the Russians - brushing the dust off their 1945 designs, and knocking rockets together with bits of old metal. Its' not glamourous, but they are still luanching multi-million dollar satelites into space.


Luke said...

Heh.. I do agree completely. Bloat is the root of all evil :P

Although I do think that stuff like XML and javascript are very usefull. I maintain alot of "legacy" web pages which wer originally made by undergrads armed with frontpage. So for me separation of content and presentation layer is not only an ego thing, but also a way to keep my sanity. Fully compliant XHTML with CSS takes seconds to modify - while standard HTML with dynamic elements can be a hooror to change.

Also javascript can make very usefull tool if used well. Have you seen the new ajax stuff that lets you make dragable boxes and all kinds of nice things? Javascript is a presentation layer tool - and as long as it fails gracefully if the client doens not support it, I'm all for it.

When it comes to server side scripting I'm a perl/php guy myself. I'm planning to take a closer look at ruby when I have some time. I can't figure out why people love JSP and ASP so much.

I guess these things can be usefull if you are working with some insane computational algoritms, where using fully object oriented, strogngly typed language is actually beneficial.

But for simple, all purpose web design nothing beats the simplicity of LAMP (or WAMP if you are locked into a windows platform) combination.

Paul said...


Interesting to hear a view point from someone form a Perl background. I've allways had a suspicion that Perl/CGI could be better then Java for most web applications.

Never done Perl/CGI myself. I agree that JSP, JSTL etc are a horrible nightmare.

I take your point that XML, javascript, CSS are good for there intended use, namely web design.

Unfortunately in the Java world these things are used to build pseudo rich client interfaces.

For rich GUIs over the web, I like the look of Java Web Start:


Never looked at LAMP. I'll take a look. Thanxs.

BTW: Would you recommend Perl/PHP? Where would I go for a primer?

Luke said...

LAMP = Linux + Apache + MySQL + PHP

I'm sure you have seen it in action many times :) WAMP is - as you might have guessed, Windows + the rest of the stuff. I have also saw people talking about WIMP (Windows + IIS) :P

XML is actually very flexible. I have seen it used in Database applications as well. Ideally you can export any DB into an XML structure, and then import it into another DB. It doesn't work the other way though - XML open ended tree does not translate well into relational model. Nevertheless - very usefull in DB applications.

I really havent done any extensive GUI XML work. I know that XUL - the framework used in Firefox and other Mozilla products is XML driven. But I'm not a XUL developer so I can't say how this stacks up against other models. Java also has similar approach it seems.

XML is also good for web services and such. My friend was showing me web based software a he designed which would query the DB via web-service that would send the response as XML. The web client would then apply css over the XML for nice display. It looked very neat.

Oh, and yeah - RSS is XML based. When I first heard about XML I couldn't figure out what was the big deal about it - but ever since I'm learning about it's new applications. Do not underestimate the power of the for... er... XML.

As for PHP - best place to learn is http://www.php.net/manual/en/ - that's how I learned it.

I haven't seen a really, really good perl site that would cover all the bases (probably cause perl is so complex). I would probably suggest grabbing one of the Oreily books first :)

Java Web Start is cool, but it's kinda heavy. I guess it's good for complex applications but for online shop (like in your example) it seems an overkill. Web shob is essentially a database back end + any avaliable server side scripting language + SSL. Making a feature rich GUI for a store seems little silly - but I guess that's why this is just an example :P

Paul said...

Yeah, Web Start is kind of heavy. I come from a corporate IT background, where end users have gotten use to client/server applications, with thick clients written in languages like VB and Delphi.

With the move to intranet web applications, many users still what the rich client useablility features they've gotten use to.

Developers have taken to using DXHTML to try and imitate rich client functionality inside a web browser. It's sort of like a clash of cultures.

IMO, as a (sensible) developer, you've got two choices, either try and convince your users to accept a simpler interface, more appropriate to web technology or build a rich (heavy) client using something like Java Web Start (push technology).

Unfortunately, a lot of time and money gets spent on trying to build rich client UIs using DXHTML.

In the commercial internet space, I don't believe this is a problem. Web apps like Amazon.com have been simple from day one, so user expectations aren't an issue.

Like I say, it's a clash of cultures.

BTW you can probably tell that I'm not big on XML - not that it's bad, but it does tend to get over used, that all.