On Social Customer Support

Through my work with Automattic, I’ve had the privilege of working with the guys over at Intense Debate. I’ve been helping them improve their WordPress plugin and get it ready for some new features. Along the way I made the blunder of releasing a version that had a pretty serious bug in it, and that triggered a lot of customer support issues/cases.

In the “old days” (or in a lot of big corporates today), those support cases would have been handled behind a corporate “veil of secrecy”, tucked in a back end system somewhere, responded to by anonymous “Customer Service Representatives” via a generic email account like “support@intensedebate.com”. While we’re also making use of a generic email address, the similarities between our approach and that of big corporates ends there. End to end, the differences are pretty stark.

Keep Reading about Social Customer Support

The All-New LiveJournal Importer for WordPress

Over the past few weeks, I have been working on a new importer for people who use LiveJournal, but would like to switch over to WordPress. With LiveJournal laying off a bunch of employees, it seemed like some people might prefer to move to a platform where they had a bit more control over their own content, rather than relying on another company to handle it for them. I decided that my measure of success would be that it needed to be capable of importing Guav’s entire journal — comments and all, without error.

As it turns out, it’s been quite a project. LiveJournal’s API is, shall we say, “challenging” to work with, and the sheer size of Guav’s journal (over 3,700 posts and nearly 200,000 comments) meant that I kept running into time, memory and database limits that would crash the importer. After a lot of back and forth with Guav though, I’m happy to present the new importer (find it under Tools > Import > LiveJournal), sporting the following features:

  • Just enter your LiveJournal username and password and you’re ready to go
  • Via the API, it connects directly to LiveJournal and imports all of your posts,
    • Posts marked as “Friends Only” are assigned a password within WordPress,
    • Posts marked as “Private (you only)” are marked as Private within WordPress, which means that only authors on your new blog can read them,
    • lj-cut tags are converted to the WordPress equivalent, the <! — more — > tag,
    • lj-user tags are converted to normal links, and have class=”lj-user” attached to them to make it easier to style them if you like,
    • Tags are imported properly,
    • If you closed the comments on a post in LiveJournal, then they’ll be closed in WordPress as well,
    • Lots of the “meta” information related to posts is also imported using WordPress’ Custom Fields feature. You could then use these values to reproduce some of LiveJournal’s functionality within your new theme if you like. The fields imported are:
      • If your post contains adult content (lj_adult_content),
      • Your current co-ordinates and location (lj_current_coords and lj_current_location),
      • Your current mood (lj_current_mood),
      • Current music (lj_current_music),
      • Your userpic keyword (lj_picture_keyword)
  • Next up, all of your comments are also imported,
    • Threading is preserved, so replies to other comments show up successfully (provided you enable that feature in WordPress),
    • The “subject” of each comment is included as the first line of the comment itself, because WordPress doesn’t have a comment title/subject value,
    • LiveJournal users get links back to their LiveJournals,
    • Your own comments are linked to your WordPress account, and are linked back to your new WordPress blog,
    • Anonymous users are labeled as “Anonymous”,
    • “Screened” comments on LiveJournal are imported as “Unapproved” within WordPress, so you can decide what to do with them

So there you have it, a brand new, shiny LiveJournal importer. This should be bundled with the 2.8 release of WordPress (it’s available right now on WordPress.com), and will be available for everyone. As I mentioned, it’s been tested with one single, very large blog (and a few smaller test ones), but if you find anything wrong with it, please file a bug on the WordPress Trac!

Huge thanks again to Guav for helping with the testing of this thing (maybe now he can migrate over to WordPress as well)!

HOWTO: Implement Facebook Connect on WordPress (in reality)

2008-12-23: There were a number of problems with the code samples in this post previously due to some WordPress formatting problems. They are all corrected now, and you should be able to follow through this post and get this working on your own blog quite easily.

2008-12-26: Fixed a bug that caused the JS to overwrite details on a non-FB Connect comment as well. Also changed the fake email address that’s stored to include the user’s FB user ID.

In case you’ve been living under a no-technology-news rock for the last few weeks, you’ll know that Facebook Connect was released recently. I had been seeing/hearing a lot about it, including this video at Mashable, showing how to implement FB Connect in 8 minutes. So when my friend Morgan from BlownMortgage asked me if I’d be able to help him implement it on his new resume-editing site ResumeDonkey.com, I figured “how hard could it be” and said yes. Although it definitely didn’t take 8 minutes, I got it done, so I thought I’d post some details on the specific approach I used for ResumeDonkey.com.


symfony “not” Validator

One of the projects that I’m currently working on for a client is being built in symfony, the PHP5 framework. I am working in version 1.1 of the framework, which has a new Forms handling system that uses the concept of widgets and validators to handle interacting with most form elements. I had a need to ensure that certain fields did not contain certain values. Although this could be done with the regular expression validator that comes bundled with symfony (sfValidatorRegex), I decided to write my own validator specifically for this purpose. (more…)


That’s annoying — last week I got a call from DOLA, asking if I would be able to come in early next week (this week) to talk to them about doing some IA work for them.

I had to turn them down, because I am now working at AdultShop.com, which is taking up nearly all of my time, and I simply wouldn’t have had time to dedicate to the job. I asked them what they were doing anyway, and apparently they wanted me to work on the information architecture of their entire suite of websites and online applications – bugger!