I’ve had a web presence since 1995.
In those 15 years, many things about the World Wide Web have changed tremendously, but one thing has remained the same: my web pages have been almost entirely static. Except for a few minor cgi-bin applications (including the Oracle of Notre Dame in a previous form), all my web content was edited on my desktop, uploaded, and served as-is.
Well, I’ve finally jumped on the dynamic content bandwagon. Welcome to my new blog. Like any respectable web app, it stores content in a database and retrieves it upon request.
So what pushed me over? Well, it’s mostly a matter of the right technologies coming together and getting support from inexpensive web hosts. Until recently (last few years), most inexpensive web hosts only supported dynamic content with PHP (which I will never touch) and cgi-bin scripts. CGI is terrible for anything more than trivial apps. But lately web hosts are supporting a wider variety of web frameworks (largely due to the success of Ruby on Rails, I think).
With that development I began considering to implement my own dynamic content in Python. There are now tons of libraries one can leverage to take care of the gory details (and that’s all I wanted—which is why I didn’t go with a framework like Django). I found CherryPy to be especially helpful to take care of all the HTTP aspects, while not being overly formulaic to use. The major libraries that came together for my blog are:
- CherryPy manages the HTTP aspects
- Mako manages the HTML templating
- Docutils converts user input to HTML
- SQLAlchemy manages the database
- Elixir set up the SQLAlchemy’s ORM classes
I threw together a couple small apps with CherryPy and SQLAlchemy, and then decided I was ready to try for a blog, and here it is.