(This is a reprint of what appears today as well at my Geocities page; in fact, starting today I will always be reprinting here what's found at the Geocities page, meaning that there is no longer a reason to go back there if you are now in the habit of coming here. Congratulations! Subscribe to the RSS feed and never worry about it again.)
So now that I've been interacting with MovableType (MT) this spring and summer for the first time, and getting to a point where I'm legitimately fluent in it, I'm realizing a surprising thing - that I'm going to be able to use my new relational database in a much more powerful way than I thought I was going to be able to. A little background and a few tech definitions, for those who need it...
Back in the dark ages of the internet (the mid-'90s, that is), when people like me wanted to do a content-heavy website like a personal journal (or what they now call a "blog"), the author used to have to actually hand-program each and every page of that blog - the entries, the archives, the archive menus, everything - and upload them one page at a time to the site every time there was an update. (This is how I'm still doing it at my Geocities page, believe it or not.) As such "blogging" became exponentially more popular, however, a couple of different companies came along and invented what they call "type engines," or software programs that automate this entire process for the author. Technically such software is also known as a Content Management System (CMS); the "type engine" phrase these companies coined comes from the fact that theirs were designed specifically for bloggers and other type-intensive content creators. A type engine, though, is the same thing as a CMS, just with a goofy name. (To explain this metaphor even further, I suppose technically you could call the software that runs Flickr a "photo engine.") All CMSs are founded on what's called a relational database - a simple text file, although a huge one, that has all the "meta" data of your entries (the body text, the title, the date published, etc) stored in a simple format, with certain fields of information known as being "related" to each other. So for example, the title you posted in your June 10th entry is related to the body text you posted in your June 10th entry, and when a visitor at your website wants to see your June 10th entry, the type engine knows that all these fields are related to it. The database, though, actually saves all these fields as their own separate elements, which is why you can display a list of titles on a page if you want (for a list of archived entries, for example), without the body text showing up as well.
This database, this giant text file, sits like an undigested matzah ball on the server of your website, and gets rewritten every time you add an entry or delete one or edit one or have someone comment on one or trackback to one. (That's what 'pinging' is - it's when an outside website adds a tiny little new piece of information to your database, like what happens when someone trackbacks to your entry from their own blog.) The website, then, also has an HTML page at its server as well, called a "template," which references special tags the company has invented in order to communicate with that database, designed in a simple format so that they're easy to learn and use. (For example, to display an entry's title in MovableType, you insert the tag <MTEntryTitle>. It ain't exactly rocket science.) That template is basically a blank shell; no creative content actually exists on that page, but rather a series of tags like the one you just saw, where you've told your website to display certain fields associated with a typical entry (the title, the body text, the date, etc). Then when your visitor requests a certain entry, by clicking on a link or typing something into the search bar, your website retrieves just the plain text of that entry from your database, pushing it into the special tags in the template where you told it to, and displaying it to your visitor as if it were its own unique HTML page. The genius of type engines, then, is that it takes all the programming onus off the author; all they have to design now is one simple template, and the type engine takes care of all the other 3,000 pages of content in your database or whatever it is, exactly as if you had sat down and actually hand-coded 3,000 separate HTML pages instead. And hell, if you don't want to design your own template, just use one that someone else has designed - most type engines come with a dozen premade templates for you, and there are course thousands of others floating all over the web.
Before starting to use MT, I had been thinking that this new database system was primarily going to be of benefit for just my journal, even though I technically have hundreds upon hundreds of other pages of content at my main website as well - all my old poetry pages, all my old essay pages, all my old erotica, etc. Not to mention, I've been posting hundreds of photos to my Flickr account since opening it in January, and it'd sure be nice to have that all integrated into my main database as well, although I thought that there wasn't going to be a way to do that. And not only that, but one of the features I have at my Blogger-powered site, [metafeed], is the ability to call a phone number here in the US and leave a voice recording through my cellphone, and have Blogger turn it into an MP3 file automatically and post it to my site not even 60 seconds later. And it'd sure be nice to integrate that into my main database as well, so I could have a running sorted list of them here instead of them just being buried in the [metafeed] archives, but I didn't think there was going to be a way to do that either.
The problem, I had figured, concerned presentation; namely, how do you present so much unrelated information in one database without making your visitor hopelessly confused? Like, your blog's main front page is technically going to recognize everything in your database as a "journal entry," no matter what the content actually is; so how do you prevent a recent import of an old poem from 1996 from accidentally being presented on the main front page as a brand-new blog entry? And jeez, how exactly do you present all this information in a logical way to your visitor in the first place? Seriously, you're talking in my case about some 400 or so old journal entries (each of them around 2,000 words apiece), around 400 photos, 700 pages of old literary content (poetry, essays and the like), two dozen audio files, a couple of video files, and a whole mess of .pdf, .pdb and .lit documents (the formats I use for my electronic books). And this is just the old content, mind you - this doesn't even begin to take into account the insane amount of new material I'll be adding now that I actually have all these abilities. And how in the hell do you possibly present all this information in one database to your reader in a way that simultaneously makes sense, covers the entirety of the database for those who want to browse, has the ability to zoom in for those who want to search for something specific, organizes it all in some basic way beforehand so that your visitor isn't hopelessly lost, and still doesn't officially produce 1,400 tiny little links all running in a vertical line down the gutter of your blog (a gigantic pet peeve of mine when it comes to personal blogs)?
As I've started understanding the way the MT system works, and how in particular the database stores and recalls its information, I've started realizing that there are in fact answers to all these questions (within MT in particular, anyway - I can't guarantee that everything talked about today will work in Blogspot, Typepad, LiveJournal and other competing companies). Like, the whole secret to having only journal entries show up on the main front page is simply to think smartly about how and when you actually post your entries. My page, for example, is set up to show only the absolutely newest entry my database has, with everything older than the newest entry now safely in the archives. So as long as I've got a new personal journal entry to post on any given day, and as long as I make sure it's the last thing that day I post, technically I can sit there and post any other supplementary material to the database that day that I want, and know that it's all going to be shuttled instantly into the archives and not appear on the main front page. It's as simple as could be, really - it's just a matter of thinking of the subject in the right way.
As far as presenting that information, this is where type engines like MT really shine - with the invention of such things as categories, keywords and folksonomy tags. MT, for example, has this killer category system as part of its software, where you can define an unlimited amount of them, give them any names you want, and also specify which are subheads of others. (In MT you can even write a summary of each category and let people ping directly to its archive page - for example, if you want to define certain subjects beforehand that you often talk about, that people can automatically add to their del.icio.us or Technorati watchlists with one click, and automatically get just the entries you write concerning that subject. Technically you can even assign a specific RSS feed to just one category as well, which is how it is that newspapers and others can have different feeds just for specific sections. You can find all the instructions over at SixApart Pronet, run by the company that owns MovableType.) So basically, I can set up a category for every possible thing I would ever want to store in my MT database, and then trick out each category's subheads in as nerdy and detailed a way as I wish to get in any particular case. (For example, I can set up a "Multimedia" category just to track anything that's not a basic text entry. Then within that I can have an "Audio" subcategory for MP3s, "Video" for MPEGs, "Photo" for JPEGs, "PDF" for Acrobat documents, etc. Then within my "Audio" subcategory I could have even further subcategories if I wanted - "Interviews," "Drunken conversations," "Slam poetry," etc.)
So basically, I do have a way to track every single file existing in my database, and to present it in this naturally elegant way to my readers that is already organized for them - in fact, MT automates the entire process for me, and all I have to learn is a couple of new tags to get this sorted information displayed in any way on any page I want, infinitely customizable via CSS classification. Unbelievable, man - the more I learn about MT, the harder it is for me to believe that it actually exists and that I'm actually using it as we speak. So on a boring Saturday, for example, I could sit around and upload 20 new photos to my website from my recent roadtrip to Joliet, and send them all straight into the archives assigned to a new category called "Multimedia | Photos | Trip to Joliet." Then if I want, I can have MT automatically generate a page that will show all those photos in thumbnail form, and that page will have its own URL that people can link to, just like you see with photosets at a place like Flickr. But then each photo is individually recognized by the database as well, which means that a person can sort them by subject, the date they were posted, what kind of camera was used, etc. Which again, is just like Flickr - but run at your own website, and fully integrated with your text-based journal entries, your podcast episodes, your .wmv files, etc.
And if this still isn't enough to sell you on the subject, consider this: you can assign as many different categories to an entry as you want. So when it comes time, for example, to upload all the photos from my trip last year to Germany, I'll be to tag them not only as belonging to a specific category called "Multimedia | Photos | 2004 Germany tour," but also as belonging to a more generalized category called "Travel | Germany." And then I can tag my audio files from that tour as belonging to that "Travel | Germany" category as well, and all the journal entries I wrote while over there, and all the journal entries I wrote beforehand about the planning process, and all the lessons on German history I shared with my readers as I was studying it, and all the links I posted to online tourism resources, etc., even as each of them have more specific categories they're simultaneously associated with at the same time ("History," "Audio," etc). So then if you in particular happen to get obsessively interested in Germany at some point in the future (like, if you're about to make your first trip there yourself), all you have to do is click on the "Travel | Germany" category link to get every single goddamn piece of data at my entire website concerning the subject. But then let's say you're at my site because you were Googling for amateur Chicago photographers, and are at the page that simply displays all the categories in my photo collection; then you might stumble across the photoset from the 2004 Germany tour by accident, without even knowing that I was a travel writer. And then of course at the bottom of that photoset page will be listed all the other categories those photos are assigned to, so if you then saw the "Travel | Germany" tag you might ask yourself, "Ah-hah, I wonder if this guy's a travel writer," and click on the link right that moment to be taken to the entire metacollection of everything related to the trip, without having to go back to the main page and hunt down the right link from all those maddening submenus.
Wow, wow WOW, wow wow. When taken in this context, your MT database is not just simply a categorized collection of blog entries at all, but rather a sophisticated and infinitely customizable repository of one's entire online life. Which, of course, is why I'm now referring to the categorized archives at my site as "The Jason Pettus Online Repository of Life Experiences™," as both a snarky little joke and a sincere acknowledgement of just how powerful these relational databases actually are. (And here's a link to the mobile version, for those on mobile devices who want to check it out.) If you're like me and have generated a multitude of online files over the years, your type engine's database can suprisingly deal with all of it - it's not just for your blog entries.









RSS 2.0 (summary only)
