Making a personal site more dynamic

By Kristopher A. Nelson
in December 2009

800 words / 4 min.
Tweet Share
As part of a recent attempt to update my personal information online, I decided to update my personal site to better reflect my current activities and background. As part of my content update, I ideally 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 anyway, and to leverage those updates to drive my personal site too.

Please note that this post is from 2009. Evaluate with care and in light of later events.

As part of a recent attempt to update my personal information online, I decided to update my personal site to better reflect my current activities and background. (Keeping your online profiles updated is an important part of managing your Web presence, and I combined this effort with an update to Linkedin, Plaxo, my Google Profile, and so on).

As part of my content update, I ideally 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 anyway, and to leverage those updates to drive my personal site too. While I could have relied on widgets and simple Javascript, this kind of material is not picked up by search engines, and did not allow enough design flexibility for my taste. Thus, I chose to switch to PHP and code things by hand, but sticking to simple approaches (RSS, for example, or straightforward APIs — I may once have been a professional coder, but these days I’m looking for simplicity first).

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

About

This section I maintain locally for now, because the kind of language I’m using is adapted specifically for this combination of personal and professional site. I considered pulling it from other profile sites, such as Linkedin or my Google Profile, but the APIs were either too complex (for my purposes) or non-existent. On the other hand, the miniature about section at the bottom-right of the page is pulled dynamically from an unexpected source: Goodreads, which has a simple and effective API that makes this easy. (You’ll need to create an account with Goodreads, and request a key.)

To accomplish this with PHP, look at SimpleXML. Use it something like this:

[sourcecode language=”php”]
$data = file_get_contents($url);
$profile = simplexml_load_string($data);
php echo $profile->user->about ?>
[/sourcecode]

My Updates

I pull these from Twitter, using a simplified version of the Twitter-provided Javascript widget (although the API is quite straightforward too).

[sourcecode language=”html”]


[/sourcecode]

Featured Posts

These come from the most recent posts on in propria persona, and are pulled in via RSS feeds (using PHP and SimplePie). Other highlighted stories on my main page are put on there manually for now, although I have considered pulling from the RSS feed that SSRN provides on articles I put there. The basic code for RSS processing looks like this:

[sourcecode language=”php”]
$feed = new SimplePie(‘/feed/’);
$feed->handle_content_type();
php foreach ($feed->get_items() as $item): ?>

endforeach; ?>
[/sourcecode]

My Comments

BackType scours the Web for comments I make on blogs, and provides them to me in an easy-to-use RSS feed. You’ll need to create an account there, then use the RSS feed they provide just like I used the RSS feed to display articles from my blog.

Reading

Goodreads provides a a nice, and simple, RSS feed to show the books on a particular “shelf” (Goodreads was far easier to pull from than any other similar site) — the links go to Google Books in order to access the “preview” functionality Google offers. The code is similar to this:

[sourcecode language=”php”]
$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’];
[/sourcecode]

Publications

My publications page has a few of the same sections that my main page has, but emphasizes the list of articles and materials I’ve published (either online or in print journals). This list — the core of the page — is pulled from an RSS feed that originates with RefWorks, an online citation management service from ProQuest. The management interface isn’t pretty, but the service works well for creating and managing bibliographies for academic papers. Thus, since I’ll use the service anyway, why not leverage it for this purpose too?

Final Thoughts

View my FriendFeed

The specific approach I’ve taken here obviously requires some technical knowledge. Still, the idea of keeping your site more dynamic and up-to-date can be incorporated into virtually any site, using tools like Google Gadgets or widgets from sites like Twitter or FriendFeed. Even more simply, you may choose to simple update your site in small ways on a regular basis. Alternatively, some people have chosen to use sites like Posterous or Tumblr to centralize their personal site in a easy-to-update, miniature blog.

The goal is to give your personal site a more active, engaging feel that encourages visitors seeking information about you to respond positively to your Web presence.