Faculty Academy Web Site Unraveled: Using Free & Open Source Tools for a Conference Web Site

Over the next week or so, I’m planning on putting up a bunch of posts about the work I did this year on the Faculty Academy Web site. Every year, working on this site is a particularly fun project for me, starting four years ago when we first began to host the conference Web site at www.facultyacademy.org with a one-off WordPress install. And every year, I’ve tried to use the project as an opportunity to push myself to learn more about how to use WordPress as a site for an event/conference. I spend an awful lot of time barking up the wrong trees and generally getting myself in trouble, but I chalk it all up to a great learning experience. For example, what I learned this year will not only come in handy as we put together the site next year, I’m also imagining how I can use it to help with a regional instructional technology conference that we often participate in here in Virginia and how I can put my lessons to use in the revamped DTLT Web site that went on hold as FA ramped up.

To start with, I’ll run quickly through a number of the tools, plugins, etc. that I made use of this year. I’ll try to dig deeper into what worked and what didn’t work for each one in future posts:

WordPress/WPMU: The conference site “proper” has lived within WordPress for several years now. I toyed with the idea of using something different this year, but ended up settling on WP again for a couple of reasons. One thing different this year was the the site was actually a blog within a WPMU install that Jim Groom helped me set up. The plan is to migrate all of our past FA sites to this install so that we can more easily upgrade, maintain (and possibly link) them. Another reason I decided to go with WP/WPMU was that we were hoping to use BuddyPress as a way to solicit registrations and proposals this year. We thought we might be able to set up custom user fields for the information we ask for when people are registering or submiting a presentation. Then, everyone would have an accounts on the site and we could maybe use that  to build some kind of stronger online community presence for the conference. Bottom line, the BuddyPress experiment didn’t work out for a couple of reasons, but I’m still glad we went with WPMU. I think being able to migrate all of the conference sites to this platform — and build future conference sites within it — could pay off in the long run. Plus, it allowed me to get my feet wet with WPMU and to develop a deeper understanding of how that system works.

Google Docs/Spreadsheets: For the last three or four years, we’ve been using PhpSurveyor/LimeSurvey as the tool for soliciting registrations and proposals. It was a fine solution, but there were a couple of things about it that I wasn’t nuts about. For one, because it’s really a survey tool, the internal language in the application often confused people. I ended up hacking the core code so that there were no references to “survey” when people filled out the form. There was also no way to send people emails upon completion of the survey — which we got a few complaints about. Also, we had gotten to the point with that tool that we were making use of branching so that we could have one form for both registration and proposal submission. This seemed needlessly complicated. It was a pain to set up, and it was a pain to switch the forms mid-stream when the cfp would close but registration was still open. Finally, the output from PhpSurveyor  isn’t very pretty. I ended up doing a bunch of exports periodically to a .csv or .xls file, and then cutting and pasting things together. I was always paranoid that I would screw up the cut-and-paste, and I felt like I was juggling way too much.

As I mentioned above, we toyed with the idea briefly of going with BuddyPress for this purpose, but we weren’t thrilled with how that was going to play out. So, instead, I used a Google Form/Spreadsheet which I embedded into the conference site. I’m not sure I’d do it again: there was a fair amount of template hacking (because I wanted more control over the form styling), Patrick still had to write a custom script for me so that people could get emails when forms were submitted, we ended up separating the cfp and the registration process which WAS better for us but may have been more complicated for users. All that said, having the data in a spreadsheet was very cool.

Exhibit/Google Spreadsheet: We’ve never had a dynamic registrant list on the site before — there was never any easy way to feed registration data into a place where we could consume it. But this year, when I realized that all of our registration data was going to be in a Google spreadsheet, I also realized it would be very easy to set up an Exhibit to display the data. It actually took a fair amount of time to set this up — more template hacking and some issues with getting the data to feed out of Google docs properly. But once it was set up, it worked seamlessly.

Various WP Plugins: I used a whole slew of new WP plugins for the site. It’s always fun to have a project that allows you to experiment with new plugins, and FA is a great opportunity to try things on:

* Add Link and FeedWordPress: I knew from some recent posts by Jim that these two plugins were working really well together, but I couldn’t believe how easy they made it to add a “Live Blogging” feature to the site while the conference ran (and beyond). We had about 8-10 people add their blog address/feed, and we’re still featuring any posts they write that they put in a category called “umwfa09.”

* More Fields and Advanced Custom Field Widget: I had experimented a few months ago with a plugin called “Flutter” which makes it easier to add custom fields (and create custom write panels), but it had some bugs and didn’t really work properly on WPMU. This time around, I discovered “More Fields” which is dirt-simple to setup and use. Then I stumbled on “Advanced Custom Field Widget” which makes it even dirt-simpler to display the values of custom fields in the sidebar. Bottom line: I was able to use the combination of these two plugins to enter session data for each presentation (location, time slot, format, presenters, etc.) and display it in the sidebar for each presentation’s post.

* Advanced Category Excluder and More Privacy Options: One of the challenges of working on a site for a conference that is coming up/ongoing is that you’re working on a site that people are going to be hitting regularly. You don’t want to show them some of what you’re working on for the actual days leading up to/of the conference. I was able to use these two plugins to hide certain activity until I was ready to make it available.

* FeedBurner FeedSmith: I’d never used a FeedBurner feed for a WordPress site before, but I’m glad I did this time. Not only did it allow me to track subscriptions to the site feed, I was able to set up a way for people to receive updates via email — which was really important since the plugin we’ve used for this in the past — Subscribe2 — wasn’t playing nicely with WPMU.

* Flickr Photo Album and Quick Flickr Widget: I actually used two different Flickr plugins at different times in the life of the site to display photos from Flickr. Flickr Photo Album was ideal for the display I wanted leading up to the conference (and made it easy to embed previous FA photos in pages/posts), but when the conference was running live, I preferred the output of Quick Flickr Widget on the home page to show a live feed of photos.

* WPtouch iPhone Theme: I don’t know who else benefitted from this besides Andy :-), but it was very cool to be able to simply install a plugin and have an iPhone/iPod touch-ready conference site.

* Yet Another Related Post Plugin: I kind of threw this one in at the last minute as the program was going live, and I was very pleasently pleased with the results. Basically, it allowed to me suggest related conference presentations for each individual session. If you’ve got a community that is actively tagging conference content (which ours wasn’t–see below), I could see this being very dynamic.

* Matt’s Community Tags: So often when you’re working on a site like this you spend an inordinate amount of time on a feature that seems really important to YOU but no one else cares about. This was one of those. But I don’t care, because I still think it’s a neat feature and maybe we’ll use it in the future. Basically, it allowed anyone to suggest a tag for any conference post (including all of the presentation posts). The tags go into moderation (which isn’t necessarily ideal), and you can use this to grow your tag cloud and, ultimatley, your understanding of the ideas inspired at the conference.

There were a few other great plugins that helped with the basic content-management aspects of the site, but I won’t go into all of those here.

For those who care, the theme I used was a seriously hacked version of WordPress Magazine Theme. It had good bones for what I wanted to do.

The feature of the site that I was most proud of, though, really didn’t require any special plugins — just a pretty mild hack to index.php. I knew I wanted to have something on the conference home page that displayed what was going on right now as the conference was running. It occurred to me the weekend before the conference that all I needed to do was create a post for each conference time slot with links to the various presentations and then time them to publish at the time when the slot began (actually, Jerry suggested going with 15 minutes prior to the beginning of a session, and that worked better). I put all of these posts in a new category called “currently.” Then I put a custom Loop on the home page that just displayed the most-recent post in that category. Voila! Dyanmic conference program on the Web site. I have no idea if anyone cared that there was a dynamic program on the Web site, but, again, I learned something figuring it out.

So. That was a lot longer than I intended. Maybe I don’t need to do individual posts about different tools now, but I think I still will, if only to document the successes and challenges for myself.