Jamie's Blog

Ruby developer. CTO. Swimmer. Always trying to write more

Cloudflare Tunnels for Local Development

Sometimes you need to open up your local dev machine to the internet to show some WIP or receive a webhook. Here’s a way to do that using Cloudflare Tunnels that works with subdomains, allows you to test Cloudflare headers, and doesn’t cost anything...

What you don't know if you don't have a CompSci degree

If you didn’t study computer science at university, there’s quite a lot you probably don’t know. Even more, you don’t know what you don’t know—so I hope this post will be somewhat enlightening.

Here’s a selection of things I learnt between 1995-1998...

The Manager's Stack

As my job has changed from developer to manager, so Sublime Text and iTerm have become less important to me. I’ve substituted my old toolset for a new bunch of tools that help me to manage the dev team at Podia.

Podia is a fully-remote company so...

Hard problems are valuable problems

I’m sitting in the faraday cage of the climbing centre, with no Internet access to distract me, so I’m watching the kids attempt the different walls. Some are starting on a slightly angled wall, then progressing to a vertical wall with lots of hand...

Communication > Coding

Communication is more important than coding.

ok, ok, I’m being provocative. We’re not all talk and no action…but good communication is a core principle of the team and is critical to the health of your project and the overall team.

What do I mean...

Managing windows on macOS with Amethyst

This is how I use the Amethyst window manager on macOS. 

I like to fill a screen with windows. If you’re happy with a desktop that looks like this, then you probably won’t enjoy any of these suggestions

Lots of windows everywhere!

Last year I bought myself a 32" monitor to...

Tools of Podia (2020 edition)

Here’s a quick list of the main tools and technologies we use at Podia. It’s especially skewed towards tools in use by the dev team, since that’s what I’m most qualified to talk about. We use other tools in support, marketing, and accounting but I...

How I read books in 2020

This year I started reading books a little differently.

Firstly, let’s talk about fiction. It puts me to sleep, literally. Total snooze-fest, in the best possible way. I read a fiction book, usually sci-fi, every night on my Kindle and I manage 10...

Technical debt smells like money

Ah, I just love the smell of technical debt! Do you know what it smells like? No, no, not old socks and the festering corpses of bad decisions.

Technical debt smells like money.

What?! Yes, money. At least, it smells like money if you’re doing it...

Podia's engineering culture

Back in March I asked the Podia dev team these questions:

  1. If someone asked you to describe the Podia dev team, how would you describe us?
  2. What do we do that other teams don’t (or what don’t we do!)?
  3. What principles do we hold but rarely discuss?

Use these “unfair advantages” when applying for a job

Sometimes you might be lucky enough to be in such high demand that you don’t need any unfair advantages when applying for a job—but even if you’re well qualified, it’s worth making sure you do all you can to get the job you want.

This is especially...


Here’s a list of all the things we “should” do at Podia

  • We should be more mobile-focused
  • We should make our web app accessible
  • We should make our course editor work on iPads
  • We should add more validations around forms
  • We should make sure all validations...

Boredom Envelopes

— projects for kids when you’re working at home

Although I’ve been working at home for the last few years, 2019 was the first year both myself and Hilary were working full-time jobs at home while the kids were on summer holidays.

How did we cope...

Implementing Impersonation

The ability to log in as one of your users is one of the highest value features you can develop to support your customers.

The ability to log in as one of your users is one of the most dangerous features you can develop to support your customers.

Restoring my Humanscale Liberty

Sidenote: I ❤️ my Liberty chair

I love my Humanscale Liberty chair for it’s comfort and unrivalled simplicity. I’ve used ridiculously complex chairs like the Herman Miller Aeron but the Liberty has by far the best sit-and-play experience. No faffing...

Add Deprecation Warnings to your Rails App

You’ve probably seen deprecation warnings in Rails, especially if you made the jump to 5.2 recently, but did you know you can use them in your own app?

I suspected so but hadn’t done it before. Here’s a Rails model with a url attribute.

# == Schema...

The one thing

I reached the end of the pool, finishing another 200m interval, and was taking a quick breather and a drink, before setting off again.

“Hi”, said the girl in the other lane. “Do you mind if I ask you a question?”


“What’s the one thing someone...

Querying CSV files in SQL

I had a need to query a CSV file this morning. It was an export of users in Intercom and I wanted to find all the users with duplicate email addresses.


You can kinda do this in Numbers by creating a new column with the formula


Moving from Wordpress to Middleman

I’ve been unhappy running Wordpress for a few years, particularly the effort required to keep the server, the Wordpress instances, plugins, and themes updated. Of course, you don’t have to do this, and most of the internet doesn’t, which is why we...

Page 1 of 4