This site runs on Web server software called AOLserver. Haven’t heard of it? A lot of people haven’t. But they’ve probably been served pages by it. Apple.netscape.com, the default page on Apple’s Safari Web browser, is served by AOLserver 3.5.5. You can tell it’s AOLserver from the “.adp” extensions in the URLs. Other sites using AOLserver: AOL.Com, Mapquest, Digital City, photo.net.
I learned how to work with AOLserver back at ArsDigita. Once upon a time, back when most of the world was programming in CGI, philg built his business on AOLserver because it had an embedded, multi-threaded script interpreter and database connection pooling. Reasons you might want these are covered here.
Since then I’ve tooled around in lots of other environments. And each time I come back to AOLserver I kind of fall in love again. Embedded scripting and connection pooling may be old hat today, but AOLserver still sets itself apart from the pack in a few notable ways.
For example, most Web environments still don’t ship with an embedded task scheduler. The OSes can do it, e.g. Windows Scheduled Tasks and *nix cron, but the scheduled jobs run outside the server and therefore don’t have access to its apis or memory. This tends to add overhead when you want to run regular tasks that clear internal caches or talk to an application database. Of course you can still accomplish these things but it’s overhead and everybody does it in different, non-standard ways. Yuk. AOLserver programmers use ns_schedule_proc, ns_schedule_daily and ns_schedule_weekly.
Another thing that’s just wonderfully simple is database connectivity. When you want to pull database data into a Web script, you typically have to: a) fetch a database connection, b) define a query, c) assign parameters to the query, d) issue the query, e) fetch a row result, f) assign column variables in the local environment. Each platform has its shortcuts, but with few exceptions they still require 2x to 10x more code than AOLserver-powered OpenACS:
set title "Late Night With Conan O'Brien"
The colon syntax in “:title”, btw, ensures that the single-quote in “Conan O’Brien” doesn’t look to the database like a SQL string boundary, a well-known source of syntax errors and security holes.
A final nugget is the “master template” capability that Karl Goldstein and team programmed into ACS a number of years ago. This lets you define a reusable template in a single file, using a placeholder for the page-specific embedded stuff. Sometimes when doing layout, you want a bird’s eye view of the whole page. Master templates give you this, separate header and footer files don’t. Many scripting environments can do master templates, but last time I checked this was close to impossible in ASP.NET.
So I discovered not too long ago that Frontier can do all of these things too: task scheduling, simple db connectivity and templating. Database connectivity with Frontier is superlatively easy because all variables are db-backed by default. As Emeril would put it, Bam! Frontier can do a lot of other amazing stuff as well, but that’s a subject for a different post.
Anyway, if you use AOLserver, give it a hug today. It was a fabulous piece of software when AOL bought it from NaviSoft back in 1994 (ten years ago!), and it still is.