Notes on development

Articles and musings about web development, performance, internet security and general tech geekery

I'm @nottrobin on Twitter - Let me know what you think, or follow me to see when I post new articles.

How to use Linux Containers with LXD, and why you might want to February 05, 2019

Getting up and running with LXD containers - Quick usage; basic networking; sharing folders with write access

How to manage your Git history: Tips for keeping your commits tidy December 12, 2018

A number of techniques I use frequently for maintaining control over my Git commit history in my feature branches.

Command-line usability: A terminal user's thought process September 08, 2017

As a terminal user with a keen interest in usability, I explored my thought process when learning a new CLI tool, and made some basic UX recommendations.

Fix Docker's networking DNS config June 23, 2016

Within certain networks, docker is unable to resolve DNS correctly. When this happens, here's how to fix it.

Django HTTP headers: Controlling caching on February 25, 2016

As optimising web performance becomes more and more important, it's becoming essential to carefully manage your caching headers. But Django doesn't make it hat easy.

Creating a minimal Python application server for experimenting February 14, 2016

As a web developer, it can be incredibly useful to be able to spin up a quick server to inspect and manipulate raw requests. And if you're used to working in Python, this little script is just the ticket.

How to host your static site with HTTPS on GitHub Pages and CloudFlare February 13, 2016

The combination of the free services from CloudFlare and Github Pages make it incredibly easy to host a secure website.

Common Vagrant problems December 01, 2015

Some common issues that I've found with setting up Vagrant boxes

Python learnings from PyCon September 29, 2015

Interesting technical talks I heard at my first PyCon.

Prepare for when Ubuntu freezes September 26, 2015

I just discovered this one neat trick to free up RAM in Ubuntu even when my mouse and keyboard stop responding.

Keynotes from my first PyCon - friendly and inspiring September 24, 2015

A report on my experience of the keynote speeches at my first PyCon.

Getting Docker running on Ubuntu 14.04 April 02, 2015

There are more steps than there should be to get docker running on ubuntu 14.04. I outline them here.

A seachange in front-end best practice - but not for a while March 05, 2015

With the advent of HTTP/2, many front-end performance best practices will change. But we should only switch over when the browser support is there.

Converting projects between Git and Bazaar January 10, 2015

In my team, we often work in both git and bzr version control systems. This is a little guide about managing both together.

Some of my ideas for projects January 08, 2015

I often have ideas for digital projects or organisations, and I really see no point keeping them secret, so I'm going to start trying to share them here.

The importance of markup on the information superhighway September 18, 2014

A fairly informal piece about the importance of understanding markup and the internet.

Saving on download day: caching location specific pages August 29, 2014

How we significantly reduced the load on the servers by caching location-specific download pages.

Host your site with HTTPS for free August 26, 2014

How to get completely free HTTPS (SSL or TLS) encrypted website hosting with Redhat Openshift.

Agile philosophy: A summary January 10, 2014

This is a short description of what Agile philosophy is all about, distinct from any Agile methodologies (like Scrum or Kanban). I wrote this in September of 2012.

PHP best practices January 09, 2014

A bunch of best practices for PHP which I wrote back in 2012

Best-practice tips for programmers January 08, 2014

A bunch of useful tips for programming well (written in 2012)

A summary of python code style conventions January 05, 2014

Recently I've been learning Python. I just found out about PEP 8 and PEP 257, which are guidelines for how to write python code. To solidify them in my mind, I'm going to summarise them here.

Using a virtual environment with Python 3.4 December 26, 2013

I recently started learning Python and Django, and so I've been working out how to setup a good virtual environment. Here's how to do it the native way in Python 3.4.

Writing expressive code November 22, 2013

Reading some legacy code today reminded me of some general principles that programmers could follow to make code easier to manage for future developers. I may have got a bit carried away...

How to use unix linkchecker to thoroughly check any site October 03, 2013

I just discovered the unix linkchecker tool. It's a very useful and thorough tool for checking websites that more people should use.

Loading fonts as Data URLs for performance June 20, 2013

Including your fonts inside your CSS files as Data URLs can help with performance

Blog like a pro with static site generators - it's easier than you think June 15, 2013

Why technically proficient editors, bloggers, and especially web developers, should all use static site generators for their own sites

Fixing missing Disqus comments though the URL map tool June 14, 2013

I spent a while working out why comments stopped showing up on my blog posts. I eventually discovered the cause and worked out how to fix it through the Disqus URL map tool.

Don't ever commit binary files to Git! Or what to do if you do. June 11, 2013

Why you shouldn't commit binary files to a distributed version control system - and how you can remove them completely if you do.

Using Github's API to create repositories from the command-line June 07, 2013

Here's a unix command to create a GitHub repository from the command-line. You can even set it to be a git alias, for even more convenience.

Installing Symfony 2 by creating a github fork May 31, 2013

How to fork the Symfony 2 standard PHP project and install dependencies locally using Composer on Ubuntu

Why I love the internet May 30, 2013

A little brain-dump about my passions and how it all adds up to absolutely loving the internet and everything it stands for

Ease Magento development with bootstrapped scripts May 29, 2013

Mini scripts are super-helpful in magento development. This will explain how to bootstrap them and give a simple example of how to select a category and get its children.

Chrome v25 breaks layout of date field March 05, 2013

Chrome ruined my day by introducing a serious breaking change in the update to v25. The HTML5 input date type is likely to display wrong.

An awesome in-site user feedback tool - with Github integration March 02, 2013

How I discovered the Uservoice in-site feedback widget, and integrated it with Github Issues using Zapier

What you can do if you stop supporting IE8 February 28, 2013

The arguments for dropping support for IE8 in your website

Where do I sign up for the Open Access Movement? January 18, 2013

Learning all about Aaron Swartz after he committed suicide has made me (like many others) want to do more for the Open Access movement. Where do I sign up?

OSS projects I'd love to get involved with... December 13, 2012

... if I had the time (this list will grow)

Note to self - technical aspirations December 12, 2012

A list of things I'd like to learn and achieve in technology.

Continuous Improvement and TDD/BDD December 07, 2012

Introduction to Marcello's code workshops at Session Digital, and the principles of BDD and Simple Design.

Sass just became feasible November 16, 2012

Now that Chrome Developer Tools and Firebug support Sass debugging, CSS pre-processors have a viable future.

What to do if your Vagrant VM crashes October 05, 2012

If your Vagrant machine crashed and when you force kill it, vagrant forgets about its existence - here's how to fix that.

Finding a free version of Gill Sans August 06, 2012

Many sites use Gill Sans. Here are some suggestions of how to use it for free.

TMUX and SSH auto-login with ssh-agent (finally!) July 20, 2012

The steps necessary to get TMUX ssh-agent correctly configured.

Installing Vagrant on CentOS - the more reliable way July 17, 2012

Vagrant installation on CentOS is a tad unreliable. Installing with Ruby Gems is the answer.

My piratebay mirror July 16, 2012

A link to my mirror of the PirateBay search engine, and a list of other such mirrors.

Sending emails individually to many people in PHP April 10, 2012

Introducing an open-source mailer script written in PHP and hosted on Github.

Learning to scale SVG icons April 10, 2012

Some examples of how to mitigate issues with managing SVG icons in mark-up.

Usable layout (responsive design) March 13, 2012

Some examples of responsive layouts

JavaScript closures : Passing an Object context to a callback function March 13, 2012

A useful application for JavaScript Closures - passing object context.

Importing a CSV file into MySQL March 13, 2012

A simple PHP command-line script for importing data from a CSV file into a MySQL database.

CSS best practice tips March 13, 2012

Some (slightly contentious) general rules for writing good CSS.