New Trends In Front Ends

Man, my blogging pace has slowed right down. Not doing anything particularly exciting will do that to you. So, I thought I'd take a break from trying to diagnose a production-only bug (you know, the type of bug where the code runs perfectly in dev but doesn't work properly in production) that is mocking me, and taunting me while I feel the burn from starting the 100 pushups challenge (damn you Twitter for the peer pressure!). In case you're wondering, I am starting at rank 1 because I think I have the upper body strength of a man twice my age.

Last week I wrote more Javascript code than PHP code, which is an interesting trend so it has me thinking about front end development a little more. I still suck at interfaces (Rallyhat's UI is giving me analysis paralysis) but recent developments make me feel a little better.

In a previous post (not gonna self link, so search for it) I talked about why can't I have an all-Javascript back-end talking to an Erlang server. Well, other than the fact that I don't know any Erlang I mean. This is why projects like Sproutcore have me excited. Never mind the whole "Cocoa on the web angle" that a lot of people are talking up when describing it. It's exciting because it is promoting a "back-end neutral" philosophy and emphasizing that people who ignore Javascript are turning their backs on a lot of good functionality.

Javascript + any back end that can spit out JSON is really what a Sproutcore application is. I know the word paradigm shift is thrown out there a lot and is really overused, but I think the fact that something like Sproutcore is out there shows that web development itself is undergoing a shift. I know that there are lots of examples of advanced Javascript + some back end in use (GMail, anyone?) but the fact that Sproutcore is getting some backing from Apple should tell you how important some people feel this type of application architecture could be.

It also simply reinforces my thoughts that knowing one language is no longer enough. Just think of what you would need to understand in order to build something in Sproutcore using, say, CakePHP as the back-end:

  • HTML
  • CSS (can't have those pages looking ugly, right?)
  • Javascript (although I'm wondering if jQuery and Sproutcore can co-exist)
  • PHP
  • SQL (have to be able to understand the queries being generated)
  • JSON (does that really count as a language or is it just encoding really?)

The funny thing is that I now use this stuff without really considering that they are separate. I just use 'em all, and abuse my relationships with people who are smarter than me to fill in the gaps. It's the only way, really. :)

I believe Sproutcore is just the first of many Javascript application frameworks that will come out, so keep an eye peeled for the copycats and the "I did this because my problem is so unique that I could not use an existing solution" crowd. The signal-to-noise ratio will be low, but worth wading through.