Website build log: It goes to 11!

ATCv11 build log

This post chronicles the epic epicness of transitioning a multi-blog Movable Type 4 website (that happens to be a webcomic) to a single WordPress site with custom post types (that doesn’t use comicpress). As documentation it’s a buildup to the website version 11 release notes.

Preamble

2013.10.06 – Post water -22- and announce that the next ATC thing is a migration from Movable Type to WordPress. Finish backup and export of ATCv10 Movable Type blogs and content.

2013.10.07 – 2013.10.20 – Migration of deadcityradio.org domains from MT to WP, customization of the Twenty Eleven theme into five different websites. Project serves as an R&D testbed for future ATC development.

2013.10.21 – Eric mentions something about rolling on server upgrades. ATC is archived; database is shut off. As MT generates static files this passes effectively unnoticed.

2013.10.22 – Tag search on ATCv10 404s. As it should, as that’s the only bit that hits the database for anything. This serves as a reminder that I need to actually, you know, start working on the damned website.

  • ATC Regular is updated to include the new “365” sigil.
  • “365” sigil is made into a favicon.
  • ATVv11 is mocked up. Though I proceed to spend many hours on dozens of minor tweaks the core of the site visual concept effectively “appears” out of the ether. Only it hasn’t really, as it’s a combination of design concepts used in the Lords of Chaos and PISSPOWERASSCHRIST WordPress sites.
  • With the above facts in hand, ATCv11 can be built via thorough customization of Twenty Eleven.

2013.10.23 – Morning. The V11 photoshop mockup is still nifty. While I haven’t hashed out the FNPC block, the body text or the footer as yet, I know basically what they’re going to look like. I also know I have about forty other things that need to get done, and at least one of them involves money. Todays priorities are basically “not ATC.” Though man does v11 look nifty!

I guess this means the transition to WordPress is now an active project… which means I should finish my current illustration gig and the transition of deadcityradio.org from MT to WP as quickly as possible. That migration is almost complete – the data is on the server, the database has been read in, the wordpress config has been edited. Just gotta take it live and straighten out the database, then I can clean house locally. I intend to decommission the MAMP instance I used to build the DCRN and then switch back over to DesktopServer for ATC…. and I intend to make sure the DCRN is working on the live server first. I want absolutely every aspect of ATCv11 to have been developed or practiced elsewhere first. This is not a learning exercise, this is an application exercise.

2013.10.24, 23:34 – No work on ATC today. I rolled out the Dead City Radio Network and spent the evening stomping bugs and messing around with features of Jetpack, the WordPress equivalent of a mod comp in that it rolls a bunch of apparently-commonly-used plugins together. I initially grabbed it for stats, but there are tons of other bits that I’m likely to use with the ATC website. In the meantime I’ve tested a couple of functions elsewhere, so I don’t make a mess out of the blog or other planned sections of the site.

2013.10.25, 14:57 – Mothballed the local DCRN .dev instance and spent a chunk of the early afternoon cleaning up the mess left by building five sites in two weeks. I’m about to reinstall DesktopServer and start setup work on ATC. I’m torn between keeping a running build log of moderate and nearly unusable detail AS PER USUAL and documenting the fuck out of this process from the ground up.

Groundwork

It’s probably worth noting at this point that the ATC wordpress site – ATC website version 11 or simply ATCv11 – has been a paper design for many weeks now, with many elements derived from the custom post type and custom taxonomy work I did on Arabian Rock Art Heritage in September. The design works on paper and will require a fairly extensive amount of template work to set up correctly before I get silly with the CSS. The CSS should be fairly minimal for this build of the site – the real heavy lifting will be done by simply sorting the data correctly during the build process. I’ve done a lot of work to make sure that this site build has as few “learning moments” and as little R&D as possible. Arabian Rock Art Heritage was rebuilt by importing the existing site into a fresh WordPress install, then redeveloping and sorting the data into nine custom post types that are cross-indexed via two taxonomies. Several of the custom post types have custom meta boxes, and several of the CPTs do specific, atypical-compared-to-the-rest things with that data inside their respective single-$CPT.php files.

Which is a very long-winded way of saying that I’m ready for this.

After rolling out the last page of Water and the announce blog post I performed both an Export and a Backup of every blog in the system. “The system” in this case is the Movable Type 4.X install that powered ATC and deadcityradio.org from October of 2008 to October of 2013. I then commenced a renovation of deadcityradio.org domains as a combination of practice, dry run, and R&D in preparation for the ATC migration. deadcityradio.org was backed up the same way – Exports and Backups, so I could check out the various import options and see how well they worked.

LoC and Noise were rebuilt from imported Backups; the DCRSA was rebuilt from an imported Export. The DCRN import did not convert paragraph breaks. The import of the export used an importer and the import of the backup used a backup importer. The backup importer did not bring the MT Pages into PPAC, nor were any attached Pages brought into the pile of blogs that were shoveled into Noise. Having worked the DCRSA with the importer and Noise, LoC and PPAC with the backup importer, I’m choosing to import data into ATC with the latter method. I’ll have to reconstruct pages and assets by hand but that’s fine – the pages in question shouldn’t be that much work to reconstitute. Roger Dudler‘s backup importer brings in posts, categories, users, comments, tags… the whole nine yards. It also brings in local mt-linked pages and assets, populating an Import directory with downloads from the original server if it’s still running. Links and so forth are updated, assets are added to the media library, and everything basically just Works. If you have a large body of MT posts that you want to exist as a large body of WP posts and don’t care about the details a straight Backup Import will pull the site over almost instantly.

For the DCRN and for ATC I don’t want the asset import. With the DCRN I wanted a clean surgical date-sorted media directory, and I want that with ATC as well. As I’m not much of a plugin programmer I did this the old fashioned way on the DCRN – after the import, I gutted the import directory and deleted the media references. I then went through every single post of every single blog, manually re-constituting assets. While this was extremely time consuming the end result is that I now have a modern wordpress dataset instead of a ten year movable type dataset imported into a wordpress dataset, and that was the desired outcome. Despite being a webcomic, ATC’s visual needs are actually a hell of a lot less complex than those of Noise – though they are much more consistent.

The ATC migration is starting with a live archived Movable Type site. The MT database has been renamed and the MT backend is neutered – the next live CMS-powered update will be from WordPress. The comic pages are easily accessed. I plan to save the cast work for later in the build cycle as I’d like to standardize mugshot sizes and take new headshots for everyone; ditto the glossary. The data is available in the desired format (or damned well should be), so the next step is to actually fire up a local development environment and get started.

Before I do that…

Plugins

One important thing I learned while working on the DCRN is that populating a plugins directory sucks. One of the great joys of WordPress MultiSite is that as admin you can, for example, insist that all sites will have the Link Manager installed. Or google analytics or twitter or follow buttons or whatever else. You download once and run everywhere, basically. Since I’m starting the ATC migration with a fresh local install that means I’m technically starting with a clean plugins directory… but not for long. Fortunately, wordpress plugins are fairly malleable and can just be copied and pasted between installs. Here’s what ATC will be starting with:

  • Admin Post Navigation : Have you ever had to manually check over the details of several hundred posts? Try it on a dozen and you’ll be glad for this – try it on a thousand and you’re just not doing the job without it. I really wish this was build into the backend.
  • AJAX Thumbnail Rebuild : Critical during the prototyping phase. After custom image sizes have been properly defined and everything is humming along it isn’t really necessary, but I use it enough that it gets installed on every site I work on.
  • Codepress Admin Columns : I found this to be essential for properly organizing and quickly sorting data on Arabian Rock Art Heritage. I didn’t feel the need for it at all on most of the DCRN – for a standard blog-shaped blog it may not be terribly useful but if you’re working with custom post types and taxonomies it’s supergood. You can technically do a lot of what CAC does yourself, though I never went further than realizing just how much work I could avoid doing by using it. :)
  • Convert Post Types : Allows for bulk conversion of categories, tags, posts, etc. Potentially lethal and a massive time-saver. Once vetted, all comic pages can be dumped into the Comic custom post type with a single action.
  • Google Analytics for WordPress : Does what it says on the tin.
  • Infinite Scroll : Worked a treat on the DCRSA, will be trying it out with the Cast and Glossary and maybe in other areas as well.
  • Link Manager : I might not use it. But then again, I might.
  • Movable Type Backup Importer : This job is totally not getting done at all without this plugin.
  • Jetpack – I don’t activate this until the site is live. At this point I have very little experience with what can be done with Jetpack beyond the local site stats, which is the primary reason I’ve installed it on the DCRN and client sites. ATC will make use of other included components. Jetpack is basically a mod comp, or a plugin comp in this case, as it’s a single route to a ton of different bits of functionality – some of which I like, some of which I’m looking to play with, some of which I ignore or turn off.
  • PHP Text Widget : I use this for Yearly archives in the sidebar on LoC and Noise. I’ve used it for other things as well, but that’s the big effort-save.
  • Post Type Switcher : For switching a post between CPTs. May not be necessary, but it’s a nice complement to Convert Post Types and I’ll probably use it to pull the Covers out of the Comic.
  • Remove Double Space : I’m never not going to hit the space bar twice between sentences. Ever. It’s ingrained. MT dropped the extra space, WordPress actually renders it as an non-breaking space point. This undoes that and “properly” spaces everything. Basically, I get to keep writing the way that I write and you get to keep reading the way you always have. Saves on regular find/replace and prevents possible spacing inconsistencies.
  • WordPress SEO by Yoast : Does what it says on the tin, I think. I don’t honestly know yet – I did SEO on the DCRN and I’ll do SEO while I’m vetting ATC posts after import and down the road we’ll see if it’s had any real impact on traffic or not.
  • WordPress Database Backup : I’ve never found a compelling reason to use any other backup/export solution. This usually goes in during the same leg of setup as AJAX Thumbnail Rebuild.
  • WP User Avatar : Because I don’t have a Gravatar and shouldn’t have to go off-domain to set an avatar for a local user.

All of these have either been pulled from archived installs or freshly downloaded, and are sitting in a “plugs” directory on my desktop. They’ll get installed into the local development environment right after WordPress itself, via drag-and-drop. While some will be activated right off, the rest will be activated or deactivated as needed or unneeded. Analytics stays off until the site is deployed – there’s no point in firing it up until then, and that’s when I install and configure elements of Jetpack as well.

My general philosophy on WordPress plugins is to try and keep them restricted to things I either can’t do myself, or really don’t want to do myself. One of the great strengths of WordPress is there’s a plugin for just about everything, and one of the great frustrations of WordPress is plugin conflicts and searching for a plugin that does exactly what you want in the way that you want it done. A lot of these plugins are utility – stuff that makes getting around WP easier, stuff the reader will never see. Some of them are cosmetic – Remove Double Space, for example – I could strip ’em out with a giant find and replace but then I’d have to do that with every single new post and I’d have to remember to do that with comments and it just makes work to keep doing that so INSTALL, ACTIVATE, IGNORE.

The next logical step in what is shaping up to be an absolutely epic piece of documentation is to fire up the local environment. Before I do that I’m going to take my afternoon walk. If I’m still waxing verbose when I get back I’ll document the hell out of that part of the process – otherwise I’ll wade in and get to work.

Setup

In which documentation switches from Essay back to kinda-sorta-Liveblogging.

20131025, 17:36 – This version of ATC will be built locally using DesktopServer and Chrome running on a 2007 Mac Mini with OS X 10.6. I have prior experience. I could have continued development inside the local MAMP/WP-MultiSite I just decommissioned but that would entail making modifications to the exported database after completion. I’d like to make development and roll-out as easy as possible, and now that the DCRN is live I want the development instance decommissioned, if only to ease confusion on my end – the sooner Chrome autocomplete gets trained for .org over .dev, the better!

I’m starting this process by archiving the existing MAMP instance in place. If I ever roll MAMP out again I’d sooner not have to remember the tweaks I made to its PHP config. MAMP and DesktopServer – both being built from (or with?) XAMPP – allegedly do not play well together. I say allegedly as I haven’t bothered to experience it for myself, but it stands to reason that they don’t/won’t co-exist and I’d sooner go back to DS for this leg of migration ANYWAY, SO.

17:48 – amongthechosen-dot-dev set up, plugins copied over, slug twentyeleven theme copied over. Now for initial configuration – plugin activation, setting date and time and so forth. Preparing the site to receive data, applying updates. The DesktopServer package I grabbed a couple of weeks ago installs WP 3.6.1; 3.7 came out yesterday and I’ll be developing ATC for that and hopefully using some of the new features if I can find an application for them – I’m thinking specifically of date_query.

Media note: I’m provisionally setting Thumbnail for 500×75 and Medium for 800×225. Large is 0x0. I’ve had display issues with Large and don’t particularly need it anyway, at least at this point – Thumbnails are the existing sidebar and FPNC sizes, Medium is the height of comic pages on thumbnail sheets in ATCv10 and will work nicely for laying in the First Edition and Script stuff for DCR and The Dualist. I’d prefer to keep custom thumbnail sizes to a minimum and use them only where necessary, and not roll them out until I need them. I used to use them for everything but the WP hooks for S/M/L/Actual are already there and are just easier to remember.

Ugh, permalinks. One nice thing about MT having each site component in its own blog is there was no dicking around with that mess. While I’d like for the Blog (posts) to be YYYY/MM/POST, I want everything *else* to be either CATEGORY/POST or just /POST (we’ll see which soon enough – depends a bit on how custom post types and custom taxonomies shake out in this instance).

User Avatar – I’ll upload that last. I had to reset the danged thing several times over the course of developing LoC – in that case it was one of the first images uploaded, then I uploaded the rest of the media, and then my avatar went all avatard on me.

Ready for import of MT blogs, which means it’s time for a burrito and an overdue phone call to a friend. And Land of the Lost at 7!