Simon Griffee
Design consulting, art direction, photography.

Website Redesign

Published 2016 July 5

Ferns in Inwood Hill Park.

Ferns in spring in Inwood Hill Park, New York City, May 2016.

After eleven years apart, (design) and (photography) were combined into one — this — website. If you came here looking for photographs, don’t worry, those are not going away and regular entries depicting the streets of New York will resume shortly right here in the Notebook (the front page).

A mailing list is still available for my six faithful subscribers, as is an RSS syndication feed, and you can now browse content by keyword, time, location and the randomness of life thanks to Hugo’s wonderful Taxonomies system. Uh oh. Here comes technical talk.

Ready? Deep breath…Go:

I modified a Python script to convert posts living in the Django web application’s SQLite database to plain text files to be parsed by the Hugo static website generator. When it worked many students were startled by my jump off a chair while cheering in Columbia’s Science & Engineering Library.

Regular expressions (regexp) — one of my favorite ‘It’s like magic!’ programming tools — were then used to clean up YAML frontmatter dates and URLs. Here they are in the format I used in Textmate 2’s Find and Replace dialogue, making sure the Regular Expression option is checked:

To Convert: /notebook/2010/06/20/soccer-field-from-train/
Into: /notebook/soccer-field-from-train/

Find: (url: \/notebook)(.+?)(\/[a-z%\-])
Replace: $1$3

To Convert: /notebook/2011/11/15/GRS-20111025-113153/
Into: /notebook/GRS-20111025-113153/

Find: (url: \/notebook)(.+?)(\/GRS\-\d{8}\-\d{6}\/)
Replace: $1$3

To Convert: date: 2005-09-20 03:31:00
Into: `date: 2005-09-20T03:31:00Z 2005:

Find: (date: \d{4}\-\d{2}-\d{2})(.+?)(\d{2}\:\d{2}\:\d{2})
Replace: $1T$3Z

I don’t like Go’s syntax much and was bewildered by its time reference format for some time. But it’s fast. The site takes around 40 seconds to generate with twice the number of entries (both photography and design) compared to ~10 minutes with Jekyll and half the entries (only photography).

Google App Engine will soon be hosting these words once I figure out how to get shit secure there with Lets Encrypt1. A friend says its ‘overkill’ for hosting a small site, but I like to learn and am enjoying playing with Google’s infrastructure. Its also free for small sites. Not sure I’ll still be able to deploy with rsync, but Google’s command line SDK is quite nice. Lets see.

Having everything in one place with a fast publishing workflow with Hugo and version control with Git and GitHub GitLab feels good and makes buzzwords like continuous integration and continuous deployment real in my own little home on the net. I suspect I’ll always be an advanced beginner coding for the web — on the shore of an ocean, walking through forests of abstractions. That’s the fun of it: The journey never ends.2

Thanks, dearest visitor, as always, for visiting my website! You should consider publishing your own so that the big company with the blue logo doesn’t take over the internet, and I’ll be writing a guide and providing a Hugo theme to help you do just that, shortly.


  1. Think of SSL encryption as the glue on an envelope. With no glue, anyone could read letters addressed to you, or replace the letter inside with a different one. ↩︎

  2. Please excuse rough edges. Color and type need adjustment, CSS and markup need debugging, old entries need to be tagged and cleaned, links need fixing, and so on. By the way, I’ve named the yellow I chose in the pattern in the header ‘Golden Sunflower’ — HTML entity #ffe82f — for a brighter look that makes me, and hopefully you, feel happy and loose↩︎