Month: December 2012

Lately it occurs to me…

Markup pure-ists are dead

There used to be a lot of posts in the blogoshpere arguing for pure html functionality. According to the pure-ists, a site was supposed to work fine with just html, and nothing else. The rest (css + javascript) was supposed to “progressively enhance” the site.

I don’t see those posts anymore.  I think they were killed off by jQuery. Seriously. I think a lot of designer-turned-htmlers were freaked out at the prospect of learning javascript. Javascript is, after all, a Turing-complete programming language. You may as well have asked them to learn Java.

jQuery hides all the parts of javascript that scare people. I am embedded among Java programmers, and even they feel good about jQuery. (Dear Java friends: you can learn javascript, you just choose not too. I get it.)

A big tip-off that javascript was secretly the problem: those earlier posts never inveighed against CSS. They seemed to assume, somehow, that CSS was not part of the problem.


CSS sux, but pre-processing will make it okay

Much as jQuery made javascript approachable to the masses, CSS pre-processors like LESS and SASS will make CSS fun. But we’re not there yet. It will be another three years, I think.

When I say that CSS sux, I am not talking about the flaws in the language. Every language has flaws. I refer, instead, to the current notion that true web developers must master all the intricacies of CSS. That includes browser-specific directives, plus the mathematically-inclined properties of gradients and transitions. And they must never, ever, use a table.

LESS and SASS have already covered the obvious blemishes in CSS. I think they will eventually go farther, as jQuery did for javascript libraries, and make complicated things easy.


Java is dead, long-live Java

I am forced to work with Java again, and I find that a sound language is now strained to the breaking point. Java, itself, is still fine, I guess. I’m suspicious of annotations and generics, but whatever. The problem is that working programmers have to gird themselves with a cluster of java technologies: ant, maven, spring, jboss, eclipse, hibernate, ehcache, junit, and more. It does not surprise me that when recent college graduates found startups, they choose Ruby or PHP instead. (And now, javascript on node.js.)

Java has peered over this cliff before. That’s when the POJO movement, Java’s punk rock moment, won back mindshare for a kinder, simpler java. It could happen again.

Obviously, there are a lot of high-volume sites, and enterprise back-ends, that rely on Java. And they aren’t going to change. But that just makes Java a legacy language. There were lots of COBOL jobs through the 1990s. But we knew which way the wind was blowing.

Also, Java is the official (and only) language of Android. That should keep it relevant for a long time.


The fate of javascript is unclear

Now that I’ve trolled my java friends, let me throw them a bone: I’m also worried about the fate of my beloved javascript. Javascript could rise and become the dominant language of the next 20 years. Or it could be gone in 10.


There are 4 dominant browsers, and they will never collectively agree to embed a new language runtime. So javascript will forever remain the common denominator of web development.

Native apps for devices are selling well these days. But I have to believe that developers are unhappy about: 30% tax on sales, lack of ubiquity, and potential gating. They will constantly strive to move users to web apps, which can only be written in javascript.

Node.js is a super attractive environment. Server-side development will increasingly flock there, which means javascript everywhere.

Javascript is evolving. The Ecmascript standards effort is adding language features. And there is vigorous work on libraries and frameworks.


Coffeescript, Typescript, Dart, and others prove that: 1) there is a demand for alternatives; and 2) “compiling” to javascript may actually work. I am unpleasantly surprised at how popular Coffeescript has become in the startup community. I don’t think it’s poised for a breakout of its own. But I acknowledge that it demonstrates a deep current of dissatisfaction inside the javascript community’s cognoscenti.

Ecmascript evolution is proving to be both a blessing, and a curse. There are a number of proposed or planned language “enhancements” that, IMHO, make javascript even less approachable. This is not going to help adoption of the language.

It’s possible, though increasingly unlikely, that another language will emerge. Dart seems to be hitting the right marks: classical inheritance, optional type declaration, compiles to javascript, has own runtime. But I don’t see any uptake.


On language wars

A decade ago, I was a hardcore TCL programmer, looking for the next language to hitch my wagon to. In the end, I split the difference: javascript and PHP. It looks like those choices are going to play out in the long haul.

Actionscript, JavaFX, Python, Ruby, and Scala all gave me a scare a some point. But nothing ever crossed the chasm. I ride with the herd, and my herd is still strong.