— Menu —


I'm Keir Whitaker — I work in the Offline Marketing team at Shopify. You can my read latest blog posts, find out more about me & listen to the web industry podcast I co–host. You'll also find me on Twitter and Instagram.

Latest Articles

Good Leadership, 3 Hour Startups, The Antonov An-225 and more

Good Leadership, 3 Hour Startups, The Antonov An-225 and more

Eschewing a further hiatus here’s issue 7 of my Weekly Miscellany featuring the worlds biggest plane, a startup in three hours and the gripes of restaurant critics

Read Weekly Miscellany Issue: 007 →

How to Create a "You Might Also Like" list in Jekyll

I recently added a simple “you might also like” list to the bottom of my Weekly Miscellany layout file and thought it might be worth sharing the code for other Jekyll users to use/make better.

My goal was to provide up to five links to the most recent “Weekly Miscellany” categorised posts but also ensure that if the currently viewed post was in that it wasn’t included. As with many scenarios in Liquid you have to change your way of tackling the problem, especially if you come regularly developing with server-side languages.

Read More →

Hotel Mementos, Transit Objects, The Starship and more

Hotel Mementos, Transit Objects, The Starship and more

Work-related travel and the holidays got the better of my intended publishing schedule in December but I’m back with the first Miscellany of 2018.

Read Weekly Miscellany Issue: 006 →

The One Adapter, Underground Maps, VW Buses and more

The One Adapter, Underground Maps, VW Buses and more

I’m back from my travels and a little late with this despatch. This week we look at a tasty travel adapter, a free Sketch library, and the reinvention of an automotive classic.

Read Weekly Miscellany Issue: 005 →

A Guest Editor, Wallets, Lessons Learned in Business, and more

A Guest Editor, Wallets, Lessons Learned in Business, and more

This week’s edition is guest curated by Gavin Ballard and features our mutual appreciation of fine leather wallets, advice on building a software consultancy and a familiar names lifestyle magazine.

Read Weekly Miscellany Issue: 004 →

Knives, The Prancing Horse, The Stasi and more

Knives, The Prancing Horse, The Stasi and more

This week’s edition features a short film on hand-crafted knives, a look at an upcoming Ferrari exhibition, another bag, and a mini-series recommendation for those intrigued by the Cold War.

Read Weekly Miscellany Issue: 003 →

Caine's Coat, Travel Tips, a new Podcast and more

Caine's Coat, Travel Tips, a new Podcast and more

This weeks edition features an epic coat, a new podcast for developers, travel tips from frequent flyers and possibly the best addition to your carry-on luggage kit.

Read Weekly Miscellany Issue: 002 →

IRL Conference Calls, The Pakt Bag, Bourdain and more

IRL Conference Calls, The Pakt Bag, Bourdain and more

The return of an old friend. Weekly Miscellany is a round up of links, images, recommendations, and to be honest anything that takes my fancy. I hope you find it interesting.

Read Weekly Miscellany Issue: 001 →

Keynote Countdown Timer

Keynote Countdown Timer
Keynote Countdown Timer

Recently I spent some time researching countdown timers. I’ll be the first to admit this isn’t the most exciting project I have ever undertaken but nevertheless, it was very worthwhile.

Since September I’ve been involved in the “A Day with Shopify” series of events and for this reason, wanted to ensure we had a solid countdown timer on the stage for the presenters to use.

I consulted good friend Marc and received a couple of app recommendations and eventually settled on using Presentime for both the New York and Vancouver legs of the series. It’s a great app and well worth the small fee. The ability to view the remaining time from a secondary device as well as reset the timer remotely without wi-fi are both great features. The only downside is that you need an iPad, preferably a big one, to make use of it.

It got me thinking — surely it would be pretty straightforward to make use of Keynote and create a countdown timer that we could have displayed on a laptop or piped to a comfort monitor (nice and big) on the stage.

A couple of hours later I ended up with a countdown timer that:

It’s not revolutionary but might be useful to anyone out there running an event. It’s on GitHub — feel free to download a copy for your own use.

Setting Development Variables in Jekyll

Over the last few months I’ve been making some minor adjustments to this site, and the Back to Front Show site, both of which run on Jekyll. One thing I have found really useful is having the ability to chain multiple config files together — especially when developing locally.

Using Variables

I currently use Cloudinary to serve blog post images. I plan on writing a bit more on the “why and how” of using Cloudinary in another post but essentially when developing locally the Cloudinary based URLs will only work if the original image has been made available online. Cloudinary uses an origin-pull method to add images to it’s own network and therefore has no knowledge of new images that aren’t available via a public URL.

When adding a new post I create images locally and add them to a folder within my Jekyll site — which are then available locally for preview. Once the post is complete I push the images and markdown file to GitHub which regenerates the site. However, given that my figure element include file (below) references Cloudinary I am unable to preview the images during a local preview as Cloudinary has no concept of the image stored on my local machine. Previewing locally only results in a 404 error on any image referencing the Cloudinary URL.

<img sizes="100vw" src="https://res.cloudinary.com/keirwhitaker/w_auto:250:400,f_auto/remote/posts/{{ include.url }}" alt="{{ include.alt }}" />
<figcaption class="{{ include.class }}">{{ include.caption }}</figcaption>

After some head scratching I came across the option of chaining multiple config files together. This option allowed me to make use of a single config variable that is loaded in for local development and can be used to change the logic within the templates to load the images locally.

Read More →

The Back to Front Show — Episode 47

Kieran’s Big Red Button — Episode 047
Kieran’s Big Red Button — Episode 047

A week ago Kieran and I dusted off the microphones for another Back to Front Show episode. You can listen to it here or subscribe on iTunes.

In this episode we catch up on what’s happened in our lives since the last recording, discuss the latest goings on at Medium, ponder why the Guardian doesn’t write listicles and end on probably the best API in the world!

You can find the full show notes on Back to Front Show web site.

A Day with Shopify Birmingham — 2017

Last week I headed to Birmingham for the first edition of the Shopify Partners 2017 A Day with Shopify event series. While being the first in 2017 it’s actually an iteration of the event Cat and I put together in Bristol last year. We learnt a lot from our “trial” event and have added some new features for this year’s series.

Kicking off A Day with Shopify UK
Kicking off A Day with Shopify UK

The day was a great opportunity for Partners to come together and chat through the challenges they face, share lessons they have learned, and build new friendships and business relationships. One of the main pieces of feedback we get after these events is that they represent a great touchpoint for people to meet and bring their online relationships into the real world.

Read More →

Host and Path in Shopify Themes

Recently I’ve been looking into some new Shopify and Liquid features that were recently announced.

One thing that caught my eye, and quietly slipped into the platform is the request object. If you are using the same theme over multiple storefronts then this might come in very handy.

Both request.host and request.path allow you to access both the domain and the full path being requested. Fair enough but why is this useful?

Often store owners will prefer a local domain for their store — this may be due to using different currencies or offering different stock. In effect everything but the theme files are different. Each theme might also require subtle differences — for example, different shipping notifications or regional offers.

While there were ways to achieve this prior to the introduction of the request object this now makes it much simpler. Here’s an example:

{% if request.host == 'myshop.co.uk' %}
Welcome UK!
{% elsif request.host == 'myshop.ca' %}
Welcome Canada!
{% else %}
Welcome!{% end %}

This simple switch means it’s not possible to include domain specific logic and only maintain one theme for use across multiple storefronts.

I haven’t come up with the perfect use case for request.path yet but potentially it could be used to do an absolute check for a particular product in a particular context — i.e.


as opposed to:


You can find out more about these new features in the Shopify docs.

The Definitive Guide to Shopify Themes

Web Agency Bootcamp Bristol
New book by Gavin Ballard

Earlier this year I was asked if I would be willing to be the “tech reviewer” on an upcoming Apress publication on Shopify themes. Given that Louise was at the helm and Gavin was the author I jumped at the chance.

Despite being involved with content for many years it’s the first time I’ve worked with a “traditional” publisher. It’s amazing to see how much goes into a book, especially a book of this nature. Many times Gavin had to revisit completed chapters as new features, and a whole new look and feel to the Shopify admin, were announced and launched.

Gavin’s done an amazing job of guiding the reader through building a theme from concept to launch and, while I am biased, I think this book will be a fantastic addition to anyone working in the Shopify ecosystem. The book also will be accompanied by all the source code examples.

Read More →

The Remarkable Business Show with Jon Moss

At the tail end of 2016, I was invited to appear on a soon to be released podcast called The Remarkable Business Show hosted by Jon Moss. Jon and I met many years ago through a mutual friend so it was a very quick yes from me.

Jon’s been working on a bunch of episodes and I am delighted to say that the show we recorded is now live on the show’s site and below.

During the episode we discuss:

I think it turned out pretty well, but I am biased.

You can also listen to the episode on the Remarkable Business Show site and subscribe to the show in iTunes.

A full list of articles is available in the blog archives. You can also subscribe to RSS updates, and see a full list of my contributions to third-party publications. Selected articles are also availabe on Medium.