What Replaced CGI Scripts?
WorldWideMart’s article “What Replaced CGI Scripts?” is ~~an enjoyable read~~ potentially inaccurate AI slop, but it reminded me that my own experience with web got me thinking about my experience with web development (and infrastructure management) and how much it parallels the progression of the tech industry. To wit:
2001-2003: Perl
There’s a whole story about how I almost flunked out of high school and then got an associate’s degree in computer science instead, but that’s not what this post is about. By the end of 2001 I was done with school for the time being, and was trying to figure out what to do with myself. I scored a full-time job doing tech support for archaeologists, and in my spare time I was trying to make a new website. Web development was a hobby I’d been tinkering with since high school, but I hadn’t quite figured out how to make dynamic content – partly because most free web hosting services didn’t support CGI scripting, and partly because I hadn’t learned programming yet.
Fortunately my CS classes had taught me C, and while very little of that knowledge actually stuck, it did make the Perl book on my bookshelf a lot easier to read. I also had a 35mm photography habit at the time, and I wanted a way to make online galleries to show off the ones I liked the most. Somehow I found a web host that supported +ExecCGI via .htaccess directives, and I wrote a little Perl script that would read a table of filenames and titles from a text document. It worked well and I was pretty happy with it.
Around 2 years later Flickr launched, and I started posting there instead. I think I kept most of the gallery pages around for a while, but the web host eventually died and I didn’t bother to migrate most of the content. A decade or so later I cleaned up and modernized the gallery of Embarrassing Baby Pictures, and it still runs via Perl and CGI to this day.
2004-2006: ASP & PHP
I forget who, but one of my classmates at Emerson convinced me I should try to host a radio show. So I applied for a spot at WERS, and didn’t get it. (They asked me if I listened to the station, and I said “not really.” Oops.) Later I heard through the grapevine that they needed some help with their website, so I offered to be their webmaster, and that got me a spot on the air.
The old WERS website was still stuck in the late 90s, and the shared server that hosted it was very limited. It also ran Windows, so the only available scripting tool was Microsoft’s ASP. But after lots of fiddling, and with the help of Macromedia Dreamweaver, I launched a redesign that carried the station through most of my college years. Eventually we lobbied the Emerson IT department to set up a dedicated server with PHP support, and that yielded a more ambitious blog-style site that stuck around for a couple years after I graduated. I don’t remember much about the PHP site, except that I was much less willing to work with PHP after I was done with the project.
2006-2018: Ruby & Python (and CFEngine)
Toward the end of college I got an internship at a local ad agency, which then become a job doing IT and occasional development work. Ruby on Rails was ALL THE RAGE around this time, so I joined a few others from the development team in attending some classes run by I-Forget-Who in a suburban office park. The idea of bootstrapping a project and having it mostly work out of the box was amazing, and I used it to build a few internal tools for my employer over the years. Eventually the IT part of my job took most of my focus, and I stopped doing web development work for a living.
By 2012 I had burned out hard on running an IT department and needed something new to focus on. A former colleague at the ad agency had left to start a content-recommendation-service-turned-marketing product, and he reached out asking if I knew anyone who could do “devops”. I said maybe I could help out, and a few months later I found writing CFEngine configuration to automate management of a Django application and a fleet of Celery workers. CFEngine was a dinosaur even then, but it taught me to love declarative infrastructure management. And being surrounded by Python enthusiasts ultimately rubbed off on me.
2019-Now: Static, Serverless, Containerized
Infrastructure management and automation is still my primary focus, for which OpenTofu and Ansible are my tools of choice. For hosting personal stuff I mostly use Pelican and write Markdown instead of code. I’ve experimented with some JavaScript/TypeScript frameworks, but it’s not my favorite thing to do. In the world of systems administration, code is glue, and Python is the glue I typically reach for.
The next project in my personal web development journey will probably be to replace an old Ansible-managed VPS with a Kubernetes cluster, just for the heck of it. But you can bet that within that cluster there will be a container running Apache2 with mod_cgi, forking processes on request to serve a gallery of baby pictures, running code that was written in 2002.