Steve Jobs, 1955-2011

I never met Steve Jobs, but it still feels like someone I knew has died. An inspiration.

Thanks Steve.

Using Git for Deployment

I’ve been using Git for deployment now for some time, and I thought it might be helpful to others if I document how I did it. Partly this is because I can’t find the original guide that I used, so if you recognise the method I use here and you did it first, let me know and I’ll attribute you!

Update: This is the original article: Thanks to Tim for the link in his comment!

For the purposes of this guide I’m going to assume that you have your website live already, and that it is not already in a Git repository. If your situation is different you will have to adapt the steps accordingly.

Apple In-Ear Headphones

One of my favourite albums is Marillion’s “Misplaced Childhood”. I wore out the cassette tape (remember them?) listening to it and I knew the album inside out. When I first listened to it on CD I noticed things I hadn’t heard before, particularly the singers wail as the guitar solo started, so I had to go back and listen to the tape again to see if it was there which, of course, it was.

iPhone 4 Revisited

Well, I’ve had the iPhone 4 for about 3 weeks now, so I can write a bit more about my first impressions with it.


AeroFS is a decentralised file syncing system, similar to Dropbox but without the online storage. Looks very interesting!

AeroFS is designed to let you go beyond simple file syncing and collaboration. You own devices with vast amounts of storage available (e.g. laptops, desktops), yet you are forced to rely on third party cloud technologies to sync and share files between them. Cloud-based syncing and sharing works well for small personal documents and limited media, but breaks down when we talk about use cases such as:

  • Businesses sharing and collaborating on sensitive contracts and documents, where control over your data is truly important
  • Sharing vast amounts of rich media (think hundreds of gigabytes), where cloud storage costs grow rapidly

To address these issues, we’ve designed AeroFS to be completely decentralized. You can sync files between any two (or more!) devices with or without Internet access, over a LAN, and behind a firewall. Your files do not need to be uploaded to the cloud, so you will retain full control of your data.

iPhone 4

So on Thursday 24th June I decided to go and join the queue for the iPhone 4. Thankfully I was early enough and, after waiting for about 3 and a half hours they finally let me into the o2 shop to buy one.

PostgreSQL & PHP on Snow Leopard

I recently had to install PostgreSQL on Snow Leopard with PHP support for development. It took some fiddling and a re-install when I screwed up a dependency but I eventually managed to do it! I thought I’d document the process here for anybody else in the same boat.

One Line Fix for

Anybody that uses on Mac OS to regularly connect to Linux servers – particularly those that use screen – will be aware of the issues with backspace. The following terminal one liner seems to resolve the issues:

$ defaults write TermCapString xterm

Move to Linode

I’ve just moved this website over to a Linode VPS. The experience so far has been brilliant. The Linode control panel is excellent and provides all the facilities you could possibly need. I’d decided to move from shared hosting as I felt I was beginning to outgrow it. I needed more flexibility and what better way to get that flexibility than with a virtual machine!

Automatic Screen for SSH Login

Add the following to the end of your ~/.bashrc file and you’ll always be in a screen session when you SSH into your box.

# Auto-screen invocation. see:
# if we're coming from a remote SSH connection, in an interactive session
# then automatically put us into a screen(1) session.   Only try once
# -- if $STARTED_SCREEN is set, don't try it again, to avoid looping
# if screen fails for some reason.
if [ "$PS1" != "" -a "${STARTED_SCREEN:-x}" = x -a "${SSH_TTY:-x}" != x ]
  [ -d $HOME/lib/screen-logs ] || mkdir -p $HOME/lib/screen-logs
  sleep 1
  screen -x && clear && exit 0
  if [ "$?" != "0" ]; then
    screen && clear && exit 0
  # normally, execution of this rc script ends here...
  echo "Screen failed! continuing with normal bash startup"
# [end of auto-screen snippet]
# ======================================================================

Replace screen with byobu if you use that.

Remember to use ^a-d to disconnect from your SSH session.