Jeremiah Rogers

About Subscribe Gallery

Tech: How this site is produced

When I decided to take a trip around the world I wanted to document it properly. I could have posted the whole trip to Facebook but I wanted to try owning my own website again.

This site is a bit unusual for a blog. It’s statically generated into HTML and written in Markdown with customizations to make my photos pull directly from Lightroom. Below are some thoughts about why I did this and then the technical details of how it was implemented.

Creating your own medium

I’m a firm believer in the statement “The Medium is the Message.”1 It means that the method you use to communicate determines the message you are able to send.

As an example here are how some mediums influence messages2:

  1. Facebook status updates seem to perform best when they’re succinct, easy to consume, and uplifting.
  2. Books are best at 100-300 pages.
  3. Magazine article are best at several thousand words.
  4. In general the photos that do best on 500px and Instagram are the photos that would hang well in a hotel room, not the photos that change the world.

I want my site to be perfect for sharing stories built around photos. I want the writing to complement the photos and build them into a story. Each image can stand well on it’s own but their impact is stronger when used in a story and arranged with accompanying text. No existing tool seemed perfect for the job I wanted to do so I built my own medium for the kind of message that I want to send3.

So far this has gone well, my story Tokyo in Motion would not be possible on Facebook because it interleaves animated GIFs and images with text, something that Facebook doesn’t support. Another example storiy full of imagee is my Travelogue from Japan.

Identity

A smaller concern for the site was owning my own identity. Google search results are a valuable asset that grows over time. I didn’t want to find myself stuck in several years with someone else acting as a gatekeeper between me and the content I have created. Each photo on this site has a permalink with descriptive text that will show up in Google results.

In the short term the content is getting less traffic than it would if posted directly to Facebook or Twitter. In exchange I get more meaningful engagement from people I’ve never met who found my site through Google or links from other blogs.

Criteria for the site

  1. Customizable to the content I want to share
  2. Hosted on my own domain
  3. Incredibly secure and fast
  4. Easy to share high volumes of photos
  5. Easy to edit offline or with slow connections

To be secure and fast I decided on having a static site. Each page on jeremiahtakespictures.com is compiled from source files into static HTML and images. This makes the site fast. Since there are no exposed services and minimal code running on the server the site is also incredibly secure.

The site is built using Pelican with a few custom scripts.

**Script 1: ** Photos are exported as full resolution high quality JPEGs into a folder called “originals”. Afterward a script I wrote uses the Mac OS X sips command to resize images. In my experience sips gives higher quality and smaller sized images much faster than ImageMagic.

Script 2: A custom Pelican reader class which crawls all the JPEGs on the site and gives them a permalink with a title and description. The permalink is based on the image filename and stays the same forever.

Script 3: This is not really a script, but I have macros img and img-small that autocomplete into properly sized images to be included in a story.

Summary and Future Changes

Overall I’m very happy with this setup. Using Pelican and Lightroom I edit my photos to look the way I want, export them to a folder, and then they are immediately pushed to my site. Today there are around 350 images accessible on the site out of my catalog of 7,994 photos.

Amazon S3 has worked well as a host but I may soon move to DigitalOcean so that the static site can be generated on the server. The right navigation rail on each article permalink gets updated whenever a new post is created. This means a simple blog update pushes 50-100 files to Amazon S3 which takes 20 minutes from Southeast Asia.


  1. Coined by Marshall McLuhan. I never read the book. [return]
  2. Of course these are simplifications. [return]
  3. I started working on it before Storehouse came out. Even then I think Storehouse is too pretty and not as functional as what I’ve built. [return]