Coming back around to JavaScript
The first real application that I developed under my own direction was largely in JavaScript. There was a significant portion in SQL and Tcl, but the bulk of it was in the very first release of JavaScript that the world had ever seen, in Netscape Navigator 2.0. I was trying to help my employer recover from a horribly-botched job by a breathtakingly expensive consultant. His solution of Excel with enormous Visual Basic extensions and broken ODBC middleware not only failed to meet our customer’s requirements but also utterly overloaded their Mac IIs, and nobody was happy.

I had been playing around with using JavaScript to make dynamic web applications, and it occurred to me that the most of the work being done by Excel could be shifted off to the over-powered and under-utilized database server and the user interface could be provided by Navigator with JavaScript and lots of document.writes to render the data coming from the server.

Given that this all happened before the DOM and XmlHttpRequest were part of the browser, it was somewhat remarkable that I was able to make it all work. The client loved it, and it looked like a smooth recovery from an awkward stumble.

Even though JavaScript had been at the heart of my first big individual achievement as a software engineer, I disregarded it after that project wrapped up. It didn’t seem like a real language. Working with it was difficult; the documentation was sparse and incomplete, and there was no real debugging support. I moved on to writing high-throughput data processing code in C, creating PalmOS applications in C, and then I found .NET and C#, and I have been creating Windows desktop applications for the most part since then.

During all of those years, JavaScript became one of the most important programming languages of the past two decades. Along with the DOM and the XmlHttpRequest object, it made ubiquitous something that I had struggled so mightily to realize: dynamic web applications. Increasingly-capable browsers became platforms for smooth, beautiful and powerful applications that give up very little to their desktop counterparts.

I believe that trend is accelerating. With the emergence of HTML 5, it is now only a matter of time until web applications and desktop applications are nearly indistinguishable, with browser-based apps having the advantage of being largely (if not, in fact wholly) hardware and operating system independent.

There are signs that the other end of the pipe may be significantly changed as well. The Node.JS project -- still in its relative infancy -- is demonstrating a performance profile that may make it a serious player in the server realm.

And it all revolves around JavaScript. How did this happen? How did the universally-criticized, browser-only language become ubiquitous yet still-increasing in importance? I don’t know, but I do know that I am aggressively relearning JavaScript. I am planning for a world in which being a JavaScript expert is a prerequisite for doing new application development.