Let’s Encrypt & iTunes podcasts

Update (April 2018): Apple appear to have fixed this in late 2016 - see this article from feed.press. Two podcasts I run have disappeared from the iTunes podcast store. After a few baffling evenings spent debugging a rather frustrating "Can't read feed" error, it turns out the problem is fairly simple.

Managing nginx configuration files

I run quite a few websites now, and I decided it was probably time I stopped editing nginx configuration files on the server, reloading nginx, and seeing what happened. I came across a post from Tyler Gaw, which explained a setup fairly close to what I wanted. My setup's a little different, so I thought I'd write about how I got it working.

nginx & letsencrypt.sh

I've started using Let's Encrypt a lot, for all my domains in fact. Previously, I've been using letsencrypt-auto, and stopping my webserver every time I want to renew a certificate. This is probably fine (all the sites and domains I run are low traffic, and can afford to be down for 30s or so when certificates need renewing every few months), except a flaw in my process for renewing certificates meant I took my webserver down for 12 hours or so. Twice.

Setting up Digital Ocean to run WordPress

I've recently started launching WordPress sites - starting with Talitha, and now this site. In my haste to move a few sites that seemed like they'd work better as WordPress sites, I appear to have over-loaded my single Digital Ocean droplet, so it's time to spin up a new one.

Moving away from Cloudflare

I was a very happy user of Cloudflare for a year or so, primarily after hearing about Universal SSL, following a failed attempt to get an SSL setup which SSL Labs approved of. I felt uneasy about it - it seemed like I was intentionally MITM'ing all my sites by passing them through Cloudflare's network.

Travis and tox revisited

Two years on, and I still love the combination of tox and Travis. I still write changes to my tox.ini and .travis.yml files separately, despite having written a tool for this. It occurred to me yesterday that there was a better way of writing this now - since tox now has a command for listing out what environments are set up (something which I think didn't exist when I wrote the original Python script).

Prototyping with staticjinja

I've started building a website for a friend of mine, who works for an organisation called Talitha. I wanted to get something up and running quickly (since I figured a website was better than no website), so I just started playing with Bootstrap. From there, I had an idea of what I wanted the site to look like, and all was well. I threw up a single page site that introduced the organisation a little bit. Problem is, then I had to make a second page.

Firefox & Bootstrap 3 Glyphicons

I'm currently working on a site which uses Bootstrap 3, and makes significant use of glyphicons. As of Bootstrap 3, glyphicons are back to being web-font based. They look fine in Chrome (which is my main desktop browser), and in Safari on iOS, but I recently noticed they didn't work on my Android phone.

Easy testing with Travis and tox

I love tox - it's a great tool for checking that your Python packages are installable, and that you support all the various configurations of Python versions and other package versions that you think you do.

Using code coverage to find bugs

Yesterday, I found two bugs whilst looking at a code coverage report. I tend to think that shooting for 100% code coverage adds unnecessary overheard - often the last few percent doesn't give you much benefit, and takes a disproportionate amount of time to reach, but it's useful to at least understand why particular lines of code aren't hit by your tests. Perhaps those lines are dead code, or perhaps - as was the case for me yesterday - it's because your code is broken.