Thursday, April 3, 2008

Beyond Assembly Language Web Development

Many years ago, as I was finishing my last year of college (OK, maybe it wasn't that long ago ;), I worked for a game company...err...entertainment software company. I was hired in conjunction with two other junior programmers and handed a shiny, new, smoking-fast Pentium 120MHz computer, the best computer in the company.

At this time, PC games were written for DOS. There was little to no standardization between hardware drivers and getting little things like network game play working was a serious challenge. If you didn't have a SoundBlaster audio card, you likely would be hearing the game, either.

That same year, Microsoft released Windows 95 (OK, maybe it was that long ago...). Microsoft made a strategic decision that they wanted to be the best operating system to write games for, so they released the DirectDraw, DirectAudio, and DirectPlay APIs, to give developers a standard to write to, regardless of the underlying hardware.

With my spanking, new machine and the two other junior programmers, I was given the task of trying to port a DOS game (WWF Wrestlemania, if memory serves) to Windows and DirectX. The game had started life as an arcade game written completely in assembly (68000 processor, I believe). That assembly was converted to i386 assembly by a tool. Our job was to find the graphics hooks and replace them. In the end, we determined the combination of game (too much assembly to digest) and DirectX (immaturity, primarily) were too much and decided against the port.

Two years later, I was working for a company that produced 3D models for just about every purpose imaginable, from car commercials to major movies. We partnered with Microsoft, who was interested in models for the fairly new Direct3D API. At that time, I got to play around with the latest DirectX as well as attend a few game development conferences. The difference those two years had made was astounding. PC games were now exclusively built on DirectX and most work was done in higher level languages.

Aside from a nice stroll down memory lane, what is the point of this story? The point is that between around 1995 and 1998, the game industry made a significant switch out of its "assembly" days and into its "higher level" days. By assembly, I don't mean just coding in op-codes, but also needing to worry about the bare metal, the hardware underneath, from graphics and sound cards to network protocols. As it moved up to its higher level days, game developers, for the most part, were able to worry more about making a great game and not so much about the particular behavior of a piece of silicon.

I've been doing web development of some form or another since 1994. I've watched HTML grow and mature, I've seen tables turn into divs through CSS, and watched JavaScript make that which was static dance. At any given point, to build a significant web application, I have to be proficient in multiple languages and technologies, including HTML, CSS, JavaScript, XML, JSON, HTTP, PHP, JSP, Java, Python, and others. I have to understand the Web at what I consider the "assembly" level.

We are seeing tools like Intel's Mash Maker, JackBe's JackBuilder, Dapper, and others are making it easier to pull together various content sources. That's a start, but it still leaves the majority of the heavy lifting to be done at the assembly code level.

Thankfully, that is changing. One of the most interesting technologies I've seen in the past few years is in beta now. In my opinion, it takes us up above the assembly level for the first time on the Web. Instead of worrying about how to connect things, various pieces of the web are all parts of your object model. Connectivity with them is part of the platform.

Bungee Labs is providing a Platform-as-a-Service (PaaS) offering that is quite amazing in its ability to be both a general purpose framework as well as be a core integration technology. In the process, they've successfully abstracted the developer from the assembly code of the Web, just like Microsoft did for game developers a decade ago.

PaaS is still a fairly new concept. Perhaps the most notable example is Salesforce.com's Force.com, which provides an extension platform for Salesforce.com. Bungee Lab's offering is significantly more interesting, not just for its thoroughness, but also for its generality. Bungee Lab's WideLens calendar application is a great example of the flexibility and strength of the platform.

Anyway, moving on from my sales pitch here, the point being that we are at a very exciting time on the web. Cloud services, PaaS, and very smart people are taking us to a higher level of development on the web. That means we, as developers, will gain the benefits of being both more productive, building more business value, and of being able to build cooler apps.

Technology is cool!

2 comments:

DaveB said...

Bungee is the new C.

Natalie said...
This comment has been removed by a blog administrator.