This website has gone through a number of rewrites over the years.

Version 1.0 HTML with SSI (Aug 25, 2007 - Nov 12, 2007)

I originally wanted to create a portfolio website to advertise my skills and help me get internships during college. Given my tenure at Google and Microsoft, I’d say I succeeded. :-)

This original website was maintained until around 2011 and is still referenced by parts of this site.


  • Server Side Includes (SSI)

Special Features

  • Compatible with Internet Explorer 61
  • Accessible design for screenreaders

Version 2.0 Drupal, PHP (Jun 14, 2010 - Sep 27, 2010)

Version 1.0 had a great fine-tuned layout but was difficult to modify, given the limited power of server side includes - the only dynamic rendering facility available.

This version was intended to make it easy to add new projects, and to provide blogging capabilities.


  • Drupal, PHP
  • limited HTML & CSS customizations

Special Features

  • Editable in the browser from any computer
  • Graphic design (professional)
  • First-class Projects, Project Languages, Project Categories, and Project Updates
  • Blog.
  • RSS feeds everywhere.

Version 3.0 Jekyll, Markdown, Liquid (Dec 17, 2012 - Ongoing)

Editing site content and structure in Drupal for version 2.0 was sufficiently annoying that I ended up doing less updates to the site than I wanted.

In particular articles weren’t getting written because the Markdown syntax in Drupal was getting munged by input filters and the CSS from the site theme. Since there were a lot of layers to Drupal’s processing, this was complicated to debug and fix.

So I decided to stop using Drupal and go with a simpler system: render all pages to static HTML which can then be deployed to any web host, including free ones. All dynamic behavior is farmed out to JavaScript and third party services (ex: Disqus).


  • Jekyll2, Liquid - generate pages
  • Markdown - author content
  • Bootstrap - base CSS
  • Disqus - comments
  • Google Analytics - basic analytics
  • HTML5 Shim - make IE play nice with HTML5
  • JQuery - trivial DOM manipulation in JavaScript
  • Git - version control, deployment

Special Features

  • Markdown for authoring everything.
    • Can author with great local tools like Mou or any good text editor3.
  • Easy deployment with git.
  • Deployable anywhere (since it’s just static HTML).
    • In particular, deployable to free services like GitHub Pages.
    • When deployed to free services, gains additional resilience against my death.4
  • Version control. For content and site structure.

Version 3.1 Mobile-Friendly (Apr 29, 2019)

At long last I upgraded the site to look reasonable on mobile devices. I also refreshed the overall typography.

  1. IE6 is surprisingly difficult to support. It doesn’t understand PNGs, has a different layout model than other browsers, and has lots of other quirks.

  2. It’s hard to learn Jekyll from its documentation, which is fairly poor (as of early 2013). Instead I learned Jekyll by forking the code for Jekyll-Bootstrap and modifying the code (significantly) to get today’s structure. If I were to do this site over again, I’d probably start with Octopress instead of Jekyll-Bootstrap.

  3. BBEdit and its free cousin TextWrangler are my favorite text editors. Sublime Text is also good if you need cross-platform support. Many new Mac users like TextMate, but it is less powerful than BBEdit.

  4. Given my hobbies of archival and digital preservation, I definitely think about how artifacts I create (such as this website) will operate after I am no longer alive to actively maintain them.