Making a personal site more dynamic

Thumbnail of krisnelson.orgAs part of a recent attempt to update my per­sonal infor­ma­tion online, I decided to update my per­sonal site to bet­ter reflect my cur­rent activ­i­ties and back­ground. (Keeping your online pro­files updated is an impor­tant part of man­ag­ing your Web pres­ence, and I com­bined this effort with an update to Linkedin, Plaxo, my Google Profile, and so on).

As part of my con­tent update, I ide­ally wanted my site to be more dynamic, so that I did not need to touch it very often, yet to still have it be more up-​​to-​​date and fresh. My idea was to rely on updates I would make to other sites any­way, and to lever­age those updates to drive my per­sonal site too. While I could have relied on wid­gets and sim­ple Javascript, this kind of mate­r­ial is not picked up by search engines, and did not allow enough design flex­i­bil­ity for my taste. Thus, I chose to switch to PHP and code things by hand, but stick­ing to sim­ple approaches (RSS, for exam­ple, or straight­for­ward APIs — I may once have been a pro­fes­sional coder, but these days I’m look­ing for sim­plic­ity first).

Here are the areas I focused on first on my main page:

About

krisnelson.org - AboutThis sec­tion I main­tain locally for now, because the kind of lan­guage I’m using is adapted specif­i­cally for this com­bi­na­tion of per­sonal and pro­fes­sional site. I con­sid­ered pulling it from other pro­file sites, such as Linkedin or my Google Profile, but the APIs were either too com­plex (for my pur­poses) or non-​​existent. On the other hand, the minia­ture about sec­tion at the bottom-​​right of the page is pulled dynam­i­cally from an unex­pected source: Goodreads, which has a sim­ple and effec­tive API that makes this easy. (You’ll need to cre­ate an account with Goodreads, and request a key.)

To accom­plish this with PHP, look at SimpleXML. Use it some­thing like this:

$data = file_get_contents($url);
$profile = simplexml_load_string($data);
<?php echo $profile->user->about ?>

My Updates

I pull these from Twitter, using a sim­pli­fied ver­sion of the Twitter-​​provided Javascript wid­get (although the API is quite straight­for­ward too).

<script src="http://twitter.com/javascripts/blogger.js" type="text/javascript"></script>
<script src="http://twitter.com/statuses/user_timeline/YOURTWITTERNAME.json?callback=twitterCallback2&count=6" type="text/javascript"></script>

krisnelson.org - Featured PostsFeatured Posts

These come from the most recent posts on in pro­pria per­sona, and are pulled in via RSS feeds (using PHP and SimplePie). Other high­lighted sto­ries on my main page are put on there man­u­ally for now, although I have con­sid­ered pulling from the RSS feed that SSRN pro­vides on arti­cles I put there. The basic code for RSS pro­cess­ing looks like this:

$feed = new SimplePie('http://www.inpropriapersona.com/feed/');
$feed->handle_content_type();
<?php foreach ($feed->get_items() as $item): ?>
<li><a href="<?php echo $item->get_permalink(); ?>"><?php echo $item->get_title(); ?></a></li>
<?php endforeach; ?>

My Comments

BackType scours the Web for com­ments I make on blogs, and pro­vides them to me in an easy-​​to-​​use RSS feed. You’ll need to cre­ate an account there, then use the RSS feed they pro­vide just like I used the RSS feed to dis­play arti­cles from my blog.

Reading

krisnelson.org - ReadingGoodreads pro­vides a a nice, and sim­ple, RSS feed to show the books on a par­tic­u­lar “shelf” (Goodreads was far eas­ier to pull from than any other sim­i­lar site) — the links go to Google Books in order to access the “pre­view” func­tion­al­ity Google offers. The code is sim­i­lar to this:

$goodreads = new SimplePie('GOODREADS RSS URL');
$goodreads->handle_content_type();
foreach ($goodreads->get_items() as $item):
$image = $item->get_item_tags('', 'book_small_image_url'); $image = $image[0]['data'];

Publications

My pub­li­ca­tions page has a few of the same sec­tions that my main page has, but empha­sizes the list of arti­cles and mate­ri­als I’ve pub­lished (either online or in print jour­nals). This list — the core of the page — is pulled from an RSS feed that orig­i­nates with RefWorks, an online cita­tion man­age­ment ser­vice from ProQuest. The man­age­ment inter­face isn’t pretty, but the ser­vice works well for cre­at­ing and man­ag­ing bib­li­ogra­phies for aca­d­e­mic papers. Thus, since I’ll use the ser­vice any­way, why not lever­age it for this pur­pose too?

Final Thoughts

View my FriendFeed

The spe­cific approach I’ve taken here obvi­ously requires some tech­ni­cal knowl­edge. Still, the idea of keep­ing your site more dynamic and up-​​to-​​date can be incor­po­rated into vir­tu­ally any site, using tools like Google Gadgets or wid­gets from sites like Twitter or FriendFeed. Even more sim­ply, you may choose to sim­ple update your site in small ways on a reg­u­lar basis. Alternatively, some peo­ple have cho­sen to use sites like Posterous or Tumblr to cen­tral­ize their per­sonal site in a easy-​​to-​​update, minia­ture blog.

The goal is to give your per­sonal site a more active, engag­ing feel that encour­ages vis­i­tors seek­ing infor­ma­tion about you to respond pos­i­tively to your Web pres­ence.

Related articles