More Psion User Scans

    Over Christmas, I managed to find the time to scan two more editions of Psion User. I've now cleaned up the first of these – Winter 1998/99 – and added it to

    This edition served to introduce the 'pearlescent' aqua green special edition Series 5, a device I coveted at the time. I finally satisfied that childhood desire by purchasing one on eBay late last year, adding to a growing collection of Psion palmtops.

    Unfortunately, Psion's interest in Psion User was already waning at this point and, at only 8 pages, it's significantly shorter than previous editions.

    You can find a direct download here.

    Adding Timestamps to Terminal Commands

    During certain stages of our software development cycle, I find myself wondering exactly when I ran a given command – did I start that UI process or task before, or after, I ran that command line utility?

    More often than not, I give up guessing and re-run both jobs just in case. Scroll-back helps to some extent, but it's infuriating to see that you ran a command, yet still not know when you ran it.

    In an attempt to improve on this, I've modified my prompt to include a right-aligned date, effectively adding a timestamp to the previous completed command:

    If you're interested in using this yourself, you can add all or some of the following to your ~/.bash_profile:

    function right_aligned_date {
        current_date=\[$( date )\]
        width=$( tput cols )
        echo "$( printf %${width}s "${current_date}" )"
    PS1="\[\033[0;37m\]\$( right_aligned_date )\[\033[0m\]\n\u@\h \W $ "

    Update: Some utilities – such as Python's virtualenv – will modify the $PS1 to add additional information about the current environment. This can break the date alignment used in the above example as it relies on spaces to position the date.

    The better solution is to explicitly set the column start position as follows:

    function right_aligned_date {
        current_date=$( date "+%H:%M:%S %Z" )
        column=$( expr $( tput cols ) - ${ #current_date } + 1 )
        printf "\e[${column}G${current_date}"

    Wedding Photos

    This Hyperlapse – from Ayelet and Aaron's wedding – captures some of the fun-and-games of the wedding photo shoot.

    Pager Codes

    Looking through some old files, I recently came across this fantastic selection of pager codes that came with the Swatch The Beep pager watch. Presumably they were going after a more trendy audience, but their choice of phrases seems somewhat strange: I love the idea of paging someone to tell them to, 'Take a break, will you', or perhaps, that you're, 'Going away for 2 days'.

    Family Codes

    Code Description
    801 Please go shopping
    802 Kids getting on my nerves
    803 Auntie's coming for tea
    804 Been to the shops
    805 Washed the car
    806 Cook up something yummy
    807 Visitors / bad atmosphere
    808 Visitors gone / coast clear
    809 Red wine's finished
    810 I'd like some flowers
    811 Holidays booked
    812 Don't tell a soul
    813 Will you be on time?
    814 Take the dog for a walk
    815 Going away for 2 days
    816 Take a break, will you
    817 Not at home
    818 Beer's in the fridge
    888 It's a girl
    889 It's a boy


    I have had the pleasure of working with my good friend Mike Rhodes on a number of projects over the years. A couple of weeks ago, I discovered and resurrected pdavision – one of the very first such projects we collaborated on.

    As we were somewhat younger at the time, pdavision lacks some of the spit and polish I'd like to think we've brought to recent ventures, but it foretells the direction each of us would take professionally: Mike to server-side infrastructure and client apps and libraries, and me to mobile operating systems and applications.

    I have done my best to reproduce the site as it was when we left it, conceding only a few structural changes to make templating and discovery easier. Unlike the original (which used ASP) the current version is built – much like this site – using Jekyll.