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.
A number of techniques I use frequently for maintaining control over my Git commit history in my feature branches.
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.
Within certain networks, docker is unable to resolve DNS correctly. When this happens, here's how to fix it.
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.
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.
The combination of the free services from CloudFlare and Github Pages make it incredibly easy to host a secure website.
Some common issues that I've found with setting up Vagrant boxes
Interesting technical talks I heard at my first PyCon.
I just discovered this one neat trick to free up RAM in Ubuntu even when my mouse and keyboard stop responding.
A report on my experience of the keynote speeches at my first PyCon.
There are more steps than there should be to get docker running on ubuntu 14.04. I outline them here.
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.
In my team, we often work in both git and bzr version control systems. This is a little guide about managing both together.
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.
A fairly informal piece about the importance of understanding markup and the internet.
How we significantly reduced the load on the ubuntu.com servers by caching location-specific download pages.
How to get completely free HTTPS (SSL or TLS) encrypted website hosting with Redhat Openshift.
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.
A bunch of best practices for PHP which I wrote back in 2012
A bunch of useful tips for programming well (written in 2012)
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.
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.
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...
I just discovered the unix linkchecker tool. It's a very useful and thorough tool for checking websites that more people should use.
Including your fonts inside your CSS files as Data URLs can help with performance
Why technically proficient editors, bloggers, and especially web developers, should all use static site generators for their own sites
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.
Why you shouldn't commit binary files to a distributed version control system - and how you can remove them completely if you do.
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.
How to fork the Symfony 2 standard PHP project and install dependencies locally using Composer on Ubuntu
A little brain-dump about my passions and how it all adds up to absolutely loving the internet and everything it stands for
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 ruined my day by introducing a serious breaking change in the update to v25. The HTML5 input date type is likely to display wrong.
How I discovered the Uservoice in-site feedback widget, and integrated it with Github Issues using Zapier
The arguments for dropping support for IE8 in your website
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?
... if I had the time (this list will grow)
A list of things I'd like to learn and achieve in technology.
Introduction to Marcello's code workshops at Session Digital, and the principles of BDD and Simple Design.
Now that Chrome Developer Tools and Firebug support Sass debugging, CSS pre-processors have a viable future.
If your Vagrant machine crashed and when you force kill it, vagrant forgets about its existence - here's how to fix that.
Many sites use Gill Sans. Here are some suggestions of how to use it for free.
The steps necessary to get TMUX ssh-agent correctly configured.
Vagrant installation on CentOS is a tad unreliable. Installing with Ruby Gems is the answer.
A link to my mirror of the PirateBay search engine, and a list of other such mirrors.
Introducing an open-source mailer script written in PHP and hosted on Github.
Some examples of how to mitigate issues with managing SVG icons in mark-up.
Some examples of responsive layouts
A simple PHP command-line script for importing data from a CSV file into a MySQL database.
Some (slightly contentious) general rules for writing good CSS.