asynchronous javascript in 1995

I did asynchronous javascript in 1995. I didn't know about AJAX yet, because it wasn't invented, but I also didn't know that it was significant until after AJAX was invented. It's a weird feeling being a few years early for a party.

It was one of my first professional programming jobs, and it was for a company who operated in the (adult) entertainment industry. Because of my age, my employer and myself worked out a polite fiction and I would not be working on those projects.

I worked on a chat program.

Input area, history window, and some images that can be updated dynamically. Login was done by cookie, and payment was handled by a separate server. I only had to do the actual client, but I ended up "architecting" the server as well.

I did the network layer with a tiny Java applet which spoke LiveConnect to the rest of the page: The input field was wired to call the CW() Java callback, and any input from the server came in on CR() javascript callback. JavaScript did all the heavy lifting: It managed the text areas, udpated the <img src= placeholders that sat to the right, and so on.

The applet took a pixel at the top. I could change its background color to let the user know whether we were connected or not, and draw a line to show lag. The applet only knew to connect to report TCP port 6667 on a specific DNS name, and that the protocol was line-based. This allowed me to use IRC as the backend which was advantagous: The "entertainer interface" was mIRC, we used bots to handle accounting, and it got me a nice bonus. I didn't know about CGI or how slow CERN httpd was.

I didn't think very much of it though because I left to work for another company shortly after it was done, and I didn't do web stuff again for a few years. Then one day I saw a blog article because someone forwarded it to me (Didn't we do this ten years ago? Hi Dave!). I don't think I fully understood how revolutionary people thought this was, because I was more focused on this part:

XMLHttpRequest is the technical component that makes the asynchronous server communication possible

This is something a lot of people believe, even though it was easy to demonstrate that it was false!

Then I started telling this story to new hires and people I would find other reasons to mentor, about how my ignorance led me to think about the problem instead of other people's solutions. Spending time on people's blogs is interesting, but it distracts from thinking, which I think is the most important tool that a programmer can bring to the table.

We need things that help us think about problems, and this is an area that I think has not been well-explored by the programming industry.