In Dec 2018, I switched from a heavily modified version of the Hyde theme, to the Minimal Mistakes theme.


This site was originally managed using Blogger and hosted at a domain. In August 2014, I converted it to a static site generated using Jekyll hosted on GitHub Pages at a custom domain registered at Hover. Images continue to be stored on Flickr, and video content on YouTube.


Since January 2015, photos are taken on a smartphone, first a Sony Xperia Z3, then a Google Pixel. If I have time and care enough, I mount the phone on a GorillaPod. Prior to that, I used various Canon point and shoots, e.g. PowerShot S110, PowerShot S90, PowerShot A520. Most of the time, I take photos of food near a window or outside, but I’ve recently acquired a Foldio2, a portable lightbox.

If the photos need post-processing, I fix simple stuff like white balance or exposure using Mac OS X’s Preview or on Google Photos. For montages, I use ImageMagick.

Migration from Blogger

Here is a very detailed list of things I did to move my content out of Blogger:

  1. Purchased a domain name (from Hover).
  2. Created a repository on GitHub, and set up GitHub Pages to use Jekyll and a custom domain
  3. Installed Jekyll locally so that I could make use of plugins, which GitHub Pages doesn’t support
  4. Copied and customized the Hyde theme
  5. Installed some Jekyll plugins
  6. Forked blogger2jekyll, a tool written in Node.js to ease migrating from Blogger to Jekyll. I extended the tool to include a few more things in the YAML front matter:
    • Generate array of tags from labels
    • Generate post excerpt
    • Extract Flickr thumbnail from first image
    • Added a redirect_from to handle domain migration (see below)
  7. There were a number of existing HTML problems I had to fix in the Blogger-hosted content:
    • A few links were absolute, pointing to a hosting provider I’ve long since abandoned.
    • Some of the embedded Flickr images were using a very old URL path that has since changed.
    • Most of the internal links were absolute, rather than relative. These were cleaned up after importing the posts into Jekyll.
  8. Created a Disqus account for comments
    • Included the Universal Code in my post template
    • Imported my old Blogger comments into Disqus
  9. Created a Google Custom Search Engine to provide site search
  10. To redirect users from the old pages hosted at Blogger to the new site, I had to jump through some hoops.
    1. These two pages were of immense help:
    2. Blogger does not provide the ability to automatically set up a 301 redirect. Nor does it provide a template variable that has just the permalink path, only the complete URL. Otherwise, redirection would have been easy, as the pages migrated over to Jekyll use the same permalink structure.
    3. To workaround this, I first modified the migration tool to generate a redirect_from key and a relative path value containing the Blogger post ID (UUID).
    4. Next, I added <meta> entries in my Blogger classic template to redirect users to the new domain, as well as redirect individual posts to the path containing the post ID.
    5. This approach isn’t perfect, as search pages (/search?q=term) and archives (/2014/08/) can’t be redirected.
    6. Even though the classic template is required to add the <meta> fields and to provide redirection, the mobile version in the upgraded template interferes with redirection. That is, Blogger appends a ?m=1 query when the user agent is detected to be mobile. To disable this, you need to switch to the upgraded template, disable the mobile version, then switch back to classic.
    7. Once I verified the redirection was working in desktop and mobile browsers, I deleted the sidebar, post body and footer in the classic Blogger template which should speed load times.