2016: My Year in Running

#2016 in running bibs and bling. More trails than road - didn't see that coming a year ago. A couple 10k & 21.1k PBs amongst this lot, too.

A post shared by Ross Poulton (@ross_poulton) on

At the start of 2016, I set myself some running goals. Although 2016 finished almost a half year ago, I thought I should revisit them and set some new goals. Most of this, particularly the goals, was written early this year however I didn't get around to hitting 'Publish' until the end of May. Oh bene.

In short, I kept running. Lots. Overall my year was pretty different to my assumptions at the start of the year - and I'm sure glad it did. The general theme of my goals for 2016 was "do what you did last year, but farther and/or faster". The reality was much more fun: I started running on trails, started to enjoy running up hills, and embraced the longer slower run.

So how'd I go?

2016 Goals

I hit most of my targets for 2016. Here, in bold, are the goals I set for myself a year ago - followed by my progress through the year.

  • Continue running. Check. In 2015 I ran 98 times for a total of 512km; in 2016 I ran 155 times and covered 1,242km.
  • Finish three half-marathons, with at least one under 1:40:00. I did do three half-marathons: Westerfolds Park Half Marathon in March (1h58m), Great Ocean Road Marathon Festival Half Marathon (1h52m half marathon; 2h03m total); Run Melbourne Half Marathon (1h49m). By the time I ran Run Melbourne I had changed my priorities and put less emphasis on massive PBs, as I had done 20km trail races in the 2 weeks before and 2 weeks after.
  • Get my 10K pace to below 50 minutes Check. 49:50 is below 50 minutes right?. This was on the hilly Beechworth Fun Run, which I'll revisit in 2017. I also went around 49min as part of the 10.6km Run for the Firies. I think these were the only two 10km races I ran in 2016.
  • Great Ocean Road half marathon, Run Melbourne Half Marathon, and Melbourne Marathon Half Marathon events are on my calendar. I did the first two of these; instead of running at Melbourne Mara I ran up some steep hills in Kinglake. It was free and it was much more fun, but I didn't get a medal.

The year I discovered Trail Running

Been a while since I've bought an event t-shirt... couldn't go past this one. 🏃🏼🌈🦄

A post shared by Ross Poulton (@ross_poulton) on

2016 was the year I discovered trail running. I've always enjoyed bushwalking and hiking, but for some reason had never really run through the bush. I live on the suburban fringe of Melbourne, and there are great trails right on my doorstep - including some epic technical mountain bike trails (which are on public land, ready to run!) and many fire access tracks otherwise closed to vehicular traffic.

I ran a couple of the Hoka One One Trail Running Series at Plenty Gorge and Silvan Reservoir and had a fantastic time.

Later in the year I ran the nighttime Afterglow Trail Half Marathon, starting a bit before dusk and finishing on the beach well after dark. The awesome Trail Running Rainbow Unicorn t-shirt in the above picture was from this run and I wear it regularly with pride.

Aside from trails, I also set a new parkrun personal best of 21:45 in August - going for a fastest time at the peak of event training is a great way to test where I'm at compared to previous training cycles.

2017 Goals

I'm going to cheat a little bit here since we're already half way through the year...

  • Smash the trails.
  • Get a road half marathon time under 1h45m.
  • Finish a bunch of trail half marathons
  • Get a 10km time under 45 minutes
  • Get a parkrun time below 21 minutes
  • Run something longer than a half marathon

Why I Hate Running (Hint: Pizza)

Why I Hate Running by Brendan Leonard at Semi-Rad.com:

I hate running, three to four times a week if I have time. I hated it yesterday for a little over an hour.

Maybe the sickest thing about the whole idea of running is when you sign up for an organized run, like an ultramarathon, and in order to run 50 or 62 or 100 miles in one day, you basically have to spend about six months running all the time just so you can run that far in one day. You get to the finish line of a 50-mile race and people are like, “Congratulations, you just ran 50 miles.” And you’re like, “Fuck that, I just ran 750 miles—you just saw the last 50. Anyway, let’s go get a pizza.” And then you hate yourself and make strange noises every time you stand up from a seated position for about five days and then you start thinking, “That race was so fun, I should do that again soon.” Sometimes I like to say, “I’ve done dumber things for worse reasons.”

Most of the time I really enjoy running. But there are plenty of times I'm happy to go for a run just to justify stuffing my face with pizza. Or beer. Or steaks. Or burgers.

Using Strava to plan your trail run, and hopefully not get too lost

Using Strava to plan your trail run, and hopefully not get too lost

Since starting to run a few years ago, nearly all of my mileage has been on paved roads. My local parkrun course is on concrete, and most big running races are on the road.

A few months ago, on a whim, I ventured out to Plenty Gorge Park and had a great time exploring the bushland. I returned with a group from Diamond Creek Runners and had a fantastic time, and since then have slowly built up my trail kilometers including two races of 18 and 20km. Whew!

One of the more challenging things I've found with trail running is finding my way. Particularly somewhere like Plenty Gorge where there are dozens of intersecting mountain bike trails that are tricky to tell apart, having a preplanned route can be very useful.

Some in my running club have taken to using Suunto watches and the inbuilt navigation. I have no such luxury so rely on my iPhone. Here's how I plan and follow a map on unfamiliar trails!

Warning: Trail running can be dangerous. You're in (relatively) remote areas, on uneven land, in places that other humans seem to infrequently visit because they don't know what they're missing out on. Serious injuries can happen. Don't run by yourself. Don't rely on Google Maps - because it just doesn't include the level of detail trail runners need (ie most of Plenty Gorge is completely unmapped on Google and Apple maps - you need sport-specific info). Let somebody know where you are and when you expect to be home.


If you want the quick version, follow these easy steps. If you want to learn more, read on...

  1. On your computer, use the Strava route builder, plan your run, and save it.
  2. On your iPhone, install the Strava iPhone app
  3. Open the Strava app. Navigate to Profile, then Routes. Tap the "Use Route" button.
  4. Start, you know, actually running. Left foot first, then right. Left, right.
  5. When you get lost, look at your phone. Follow the light blue line - the orange line is where you've been already.
  6. Get home safely and get intimate with your foam roller.

Plan the run

If I just drive to the park and start running, I often find I am back at the carpark sooner than expected because I've accidentally chosen short trails. If I want to make sure I'm out for a specific distance or time, I plan the route in advance so I know I'm going to cover enough ground.

I do this using Strava's routes feature. You don't have to use Strava to record your runs but their planner is really useful.

Once logged into Strava on your computer, navigate to the route builder. Do a search in the top left (ie I have searched for "yellowgum park" in this example) and the map will take you to that area. Just like Google Maps you can scroll around, zoom in and out, etc.

Clicking once on the map will set your starting spot, and a green dot appears (my starting point is next to the last car park on the road in). Continue to click at points along the trails to build your route. Each click adds a white dot, which you can move around if you want to alter things a bit. Don't worry too much if the line doesn't exactly follow the line.

Keep going until you have built a good run - I can see at the bottom of the screen this should be approx 2.2km with 75m of climbing (click the "Elevation Off" button at the bottom right to see a rough elevation profile if that interests you - but I've found it isn't 100% accurate).

If you mis-click or change your mind, you can use the Undo and Clear buttons at the top to start over.

Once done, hit the red Save button at the top right, give the route a name, optionally make it "private" so nobody else can see it, and click Save. You'll be shown a grey "View Route" button after saving - click it and you'll be complete.

Go and run

There are three ways you can use your newly planned route once you hit the trails.

  1. Print
  2. Use the Strava phone app
  3. Use the myTracks phone app

Printing your map

The first is self explanatory and quite possibly the most reliable - however you will need to know how to read a map, know how to find your current location, and be aware that if you stray too far you'll be off the edge of your printed map. This is, however, useful for long trail runs that are relatively defined (perhaps Two Bays Trail or something).

To print your route, just hit the "Print" button on the Strava page - it'll give you approximate waypoints and a copy of the map.

Use the Strava phone app

This is what I normally do.

If you're going to have mobile phone coverage this works really well. First, install the Strava app on your phone. It's available for both Android and iOS.

Once logged in to the Strava app, tap on Profile at the bottom of the screen. From the profile screen is a link to "Routes" - right down the bottom of the list. Tapping on routes will show you any routes you have set up, including the one you created in the steps above.

Clicking "Use Route" will load up the route and map on your phone. Click on the "Record" button and start running, and the screen will be replaced with your time/distance/pace - just click the map pin to return to the map.

On the map will be a blue line. This shows your planned route. The orange line is where you have already been - so you can use this to help find your way back to the blue line.

After returning to a place a few times I find I can make my way around much of it pretty easily, and just rely on the phone when I reach an unfamiliar or confusing intersection. It only takes a moment to figure out which turn to take, then I put the phone away and keep running.

Use the myTracks app

If you are running somewhere without mobile phone coverage, the Strava maps won't be able to show. To work around this I have used an app called myTracks - I'm sure there are others available too.

Using this is a little more complex and not really necessary in most places but here's a high level summary of what I do. I can walk through it with you if needed.

  1. On the Strava Route page, click the "Export" button then click "Download GPX"
  2. Install myTracks on your phone
  3. Open myTracks and use it's "Download map" function to get offline maps
  4. Transfer the .gpx file from Strava onto your iPhone. Open it with myTracks
  5. Put your phone in you rpocket and run go for a run - keep the dot on the blue line just like with Strava.

I wouldn't recommend the fuss that myTracks needs unless you know you'll be running somewhere without mobile phone coverage. Strava does a great job.

Beer time

You just ran along a trail, saw some awesome scenery, probably got your feet dirty, climbed a hill, and got scared by a kangaroo.

Have a hot shower and a cold beer. At the same time, even. You earned it.

Although the above notes are verbose it's only because I'm great at typing and poor at editing! I usually spend 10 minutes planning a run I haven't done before, mostly to adjust it to get the distance or elevation close to what I want to run. Getting it open in Strava is a real piece of cake.

I'm sure there are other ways to do this with different apps too - please let me know if you have any so that I can share them further :)

If all of the above sounds too difficult, just hit me up and I'll come and join you on the trails. Diamond Creek Runners are doing a group run at Yellowgum Park this weekend (September 18th 2016, see the DCR timetable for other runs) if you want to meet great like minded people - guests welcome.

If you're looking for some routes I've already created, these might be useful. I'm sure there's a way to take a copy of these for your own use - that's left as an exercise for the reader.

  1. Hoka One One Series: Race #2 Plenty Gorge (Long Circuit, 19km)
  2. Hoka One One Series: Race #2 Plenty Gorge (Medium Circuit, 12km)
  3. Hoka One One Series: Race #3 Silvan Reservoir (Medium course, 15km)
  4. Sugarloaf Reservoir Circuit (15km: 3km road, remainder trails)

Happy running!

2015 In Review

2015 In Review

It doesn't seem that long ago that I wrote up my 2014 list - but it's obviously far enough in the past that I don't really remember what I was trying to achieve this year, but it's worth a review - even if we are already six weeks into the new year!

The big stuff in my life in 2014 - death, birth, and home renovations - were, relatively speaking, out of mind in 2015. I had no big personal or career changes, but lots of little things.

Here's my notes to my future self on what I did in 2015, and what I want to do in 2016. None of the following is overly exciting, but I want them recorded for my own future reference.

General stuff

  • Got out in the Campervan. Not as much as we wanted, but spent a total of 14 nights away from home in it. Installed a water pump so we have water without manually pumping like the dark ages. Included two trips of 4 nights each, completely off-grid, without drama.
  • Pilates has kept me away from the physiotherapist - except for when I busted my knee over-training for the half marathon
  • Built a bigger vegetable patch and got some chickens.
  • Bought a 4x4 to tow our campervan - does a much better job than my Subaru!


Gosh they change quickly, every week brings Below are a couple of stand-out memories for me from the past year:

  • Watched our 3 (now 4) year old move into swimming lessons by himself rather than swimming with Lauren or I. Incredibly satisfying to watch him swim laps of the little swim school pool
  • Played video games (on a TV, rather than his iPad educational stuff) with Mr 4 and had a ball. Super Nintendo classics from my childhood (on my original SNES console, not an emulator!) including Donkey Kong Country and Mario Kart as well as Apple TV newcomers like Crossy Road were a real hit.



Since mid-2014 I've been entrenched in two of Melbourne's horse racing clubs working on CRM projects for managing their members and raceday events. It's been interesting, but I'd be lying if I didn't look forward to a project in a new industry.

Both of those clubs "went live" with their new CRM systems with relative success, and both provided their own challenges: most of our projects tend to be back-office systems that don't directly interact with the public at large, so having the pressure of thousands of members of the public trying to scan tickets into a racecourse was a new experience for me.

Due to re-prioritisation of my time I've done pretty much no open-source work, nor have I spent much time on WhisperGifts. Both continue to tick along.

2015 Goals

Based on what I hoped at this time last year I've done OK, but missed a couple of targets.

  • Run twice a week, including three parkruns a month: I ran 90 days in 2015 (including an 11-day streak in December), so not quite twice a week. I've also only done 9 parkruns, not even once a month. I think my overall running is acceptable, though.
  • Complete a 10km run. Smashed it, multiple times - and then went on to run 21.1km!
  • Spend 30 nights in the Campervan, including 5+ nights off the grid in one trip We did half of these nights - and two 4-nighters. Needs work.
  • Meditate Daily, or at least twice a week. Fail. Didn't meditate even once.

2016 goals

  • Spend much, much more time with my wife and kids.
  • Build another vegetable patch, and finish re-landscaping the front yard
  • Continue running.
    • Finish three half-marathons, with at least one under 1:40:00.
    • Get my 10K pace to below 50 minutes (hopefully this "just happens" by focussing on the 21.1k distance)
    • Great Ocean Road half marathon, Run Melbourne Half Marathon, and Melbourne Marathon Half Marathon events are on my calendar.
  • Spend 30+ nights in the campervan, most of them off-grid, with a 5+ night off-grid trip

Photo: Morning mist at Sheepyard Flat campground, in October 2015

Run Melbourne 2015 - My First Half Marathon

Run Melbourne 2015 - My First Half Marathon

Half Marathon is a pretty stupid name for an event. Those in the know are suitably impressed at the ability of the athlete1 to run for 21.1km (13.1 freedom kilometers2), but everyone else wants to know why you're only running half a race.

I started running early in 2014 after 30 years of a pretty sedentary lifestyle. It only took a couple of months but a friend and I got to the point where we could regularly run 4-5km without any serious side effects. I finished Run For the Kids 5.4km in March 2014 and again in March 2015, but not much else. Something spurred me on to run the Beechworth Fun Run, a hilly 10k held over the Easter weekend in April 2015. It was the farthest I'd even run, and I finished in 57 minutes (with a couple of stints of walking - I got a bit enthusiastic running up out of the scenic Beechworth Gorge).

That led to my sister suggesting that if I could do a hilly 10k run, I could do a flat 21.1k "easily"... It turns out that while it wasn't overly easy, it's certainly possible: Two weeks ago I finished the Run Melbourne Half Marathon in 1 hour, 59 minutes, 40 seconds. 20 seconds shy of my target pace.

The run wasn't only about proving to myself that I could run that far.

After the shocking earthquake in Nepal in April 2015, my wife and I had wanted to organise a fundraising ball to raise money to help out how we could. We chose the Australian Himalayan Foundation as our charity of choice, found a venue, and built a website - but unfortunately circumstances dictated that we couldn't push ahead with the event in the timeframe where it would have been most useful.

To continue to do my bit for the people of Nepal, I decided to fundraise for the AHF as part of my Run Melbourne campaign. Using the ubiquitous Everyday Hero I set up a fundraising page named Ross Runs For Nepal and solicited donations from friends and family using Facebook and in-person guilting. Everyday Hero and their ilk have done a good job of simplifying this process, and I was able to raise $469 for the AHF by the time I started my run - funds boosted nicely by my promise to personally match every donation received before the run. Some generous donations afterwards brings my total at time of publishing to $626.50, which I'm incredibly happy with.

My training hadn't been ideal. I suffered a batch of episodes of Benign positional vertigo about 6 weeks before the race, followed by a headcold. We then got a bout of unseasonally cold weather that made me, a big softie, stay inside. All up I missed 3 of my long runs and a handful of speedwork / quality runs.

Regardless, I was mentally ready to run - until I went out with the Ballarat parkrun crew for a comfy (but cold, being Ballarat in July) 5k run while we were staying in town with some friends of ours. The run went great 3 but then I started getting pain - a lot of pain - on the outside of my knee. A trip to the physio quickly diagnosed Iliotibial band syndrome, a relatively common disorder in runners. In my case it's caused by weak legs - so there will be plenty of squats, lunges, and leg presses in my future.

A Pilates session, some acupuncture, some smart taping, and fistfuls of ibuprofen got me to the start line and, somehow, to the finish line. I walked for a total of maybe 300 meters, I managed to change my shirt4 whilst running, and I even managed to show some excitement when my wife took a photo at the 20.5km mark.

Best of all I've shown myself that I can do this, even with an injured leg. I'm going to recover properly (as I write I'm about to head to the physiotherapist. Again.) and get back into training for another half marathon, sometime before the end of the year.

And by then, I'll have figured out the right answer to "Why are you only running half a race?".

Photos: The pre-dawn starting line at The Age Run Melbourne, Sunday 26th July 2015, by Ross Poulton. Ross shows medal and hides pain, by Lauren Poulton

  1. Yeah, athlete is a pretty loose term when you're talking about a guy who runs a just-sub-2-hour half marathon. Sounds better than "runner", though. 

  2. Known to North Americans as "miles", for some reason 

  3. I almost set a 5k PB! That's not meant to happen a week before a big race... it speaks volumes about the dead-flat Ballarat course versus our slightly-undulating course at home in Diamond Creek 

  4. Yep. I'd misjudged the weather forecast and started with a long-sleeved running shirt and my race shirt on... by the 5km mark I was too warm, so whilst running removed my race shirt, removed my long shirt, and put my race shirt back on. I dumped the long-sleeve shirt at the next kilometer flag, to be donated to charity. I hope they can wash it first. 

Nice UX Touch from Dropbox

Nice UX Touch from Dropbox

This afternoon I tidied up my Dropbox account a little bit - I removed a folder with 80gb of photos I no longer needed stored there (they're backed up in a few other locations) and disconnected some old computers and phones that should no longer have access to my Dropbox.

When I later visited their Help page, I was prompted with two warnings. One, shown above, asks if I need help re-linking a computer I've recently unlinked. The other message said that I'd recently deleted over 500 files - would I like help un-deleting them?

What a nice touch, and a great way to deal with support issues before they arise. Dropbox is easily one of my favourite bits of software — I use it all day, every day, without even thinking about it.

(If you want to sign up to Dropbox, you should use my referral link. You'll get an extra 500mb of storage, and I'll get an extra gig)

Song Exploder: The story of "The Commander Thinks Aloud", by The Long Winters

Song Exploder: The story of "The Commander Thinks Aloud", by The Long Winters

From Episode 28 of the Song Exploder podcast - The Commander Thinks Aloud by The Long Winters:

On February 1st, 2003, the Space Shuttle Columbia broke apart while reentering the earth’s atmosphere. John Roderick, singer and songwriter of The Long Winters, wrote “The Commander Thinks Aloud” about that fateful moment.

Even after listening to numerous Roderick on the Line episodes I hadn't heard of The Long Winters until recently, and I've really enjoyed listening to their back catalogue.

This particular track, though, I came across by accident thanks to the Song Exploder podcast. It's helped, I think, by Roderick's fantastic storytelling, but hearing that almost magical drum track in isolation makes my inner music nerd (no matter how small said nerd is) rather happy.

Just wait for the lump in your throat - was that something in my eye? - when you hear that crew compartment line over and over again.



I've been using the Moves app for a little while to have a bit of fun with recording where I visit, when, and how I get around. At this stage I don't know exactly what I'll do with the data, but I've just come accross the Hello-O-Scope, a project of Halftone, that takes the Moves data and nicely maps it. Transit, running, and cycling lines show with higher intensity when they're more regularly used.

The image above is taken from my last few weeks of activity - I can't wait to see what this looks like after a few months or even a year.

The Benefits of a Lunch Hour Walk

The Benefits of a Lunch Hour Walk

The New York Times, on The Benefits of a Lunch Hour Walk:

A new study finds that even gentle lunchtime strolls can perceptibly — and immediately — buoy people’s moods and ability to handle stress at work.


On the afternoons after a lunchtime stroll, walkers said they felt considerably more enthusiastic, less tense, and generally more relaxed and able to cope than on afternoons when they hadn’t walked and even compared with their own moods from a morning before a walk.

I've been a long-term fan of the lunchtime walk. Sometimes it's as simple as walking 10 minutes to get a sandwich, and when time permits it's 30-45 minutes with a brief lunch stop along the way.

My mid-afternoon productivity is severely lacking if I don't get even a short walk at lunchtime - and my back pain during the week becomes unbearable if I miss a few walks.

A short lunchtime walk is a critical part of my being able to contribute to society.

Self-Hosted Server Status Page with Uptime Robot, S3, and Upscuits

For quite a while I've had a public "Status" page online for WhisperGifts via Pingdom. It basically just shows uptime over the past few days, but given my site is relatively low-volume and not ovely critical to my customers, the $10/month for Pingdom was actually one of my largest expenses after hosting.

So, I started looking for an alternative.

Today I re-deployed the WhisperGifts Status Page using a combination of Uptime Robot, Upscuits and Amazon S3.

In short, I have Uptime Robot checking the uptime of my site (including it's subsites, such as the admin and user pages). The statistics are gathered and presented by Upscuits, which is entirely client-side JavaScript hosted on S3.

My basic todo list for next time:

  1. Sign up for Uptime Robot. I'd been using them for ages on their Free plan as a backup to Pingdom; this gives 5-minute checks. Their paid plan gives 1-minute resolution.
  2. Add your sites, make sure they're being monitored correct.
  3. On the Uptime Robot dashboard, click My Settings. Open the section labelled Monitor-Specific API Keys and search for your Monitor. Copy the API key to a text file for later; repeat this step for subsequent monitors you want to include on your status page.
  4. Download the latest Upscuits release to your PC.
  5. In the public folder of the upscuits package, rename config.example.js to config.js. Paste your API key(s) inside it.
  6. Create an AWS bucket called eg status.mysite.com and enable website mode. Setup your DNS etc to point to this bucket.
  7. Upload the contents of public/ to your AWS bucket
  8. Visit your new status page and view your last 12 months of Uptime Robot statistics
  9. Close your Pingdom account saving $10 a month Profit!

For a small site like mine this has a couple of obvious benefits. It's free (or $4.50/month if you want higher resolution - still half the price of the most basic Pingdom plan); it uses a tiny amount of S3 storage which is as good as free, and doesn't involve running any server-side code. The included index.html is also easily customisable if you like, since it's just plain HTML (using the Bootstrap framework, by default). This is a big win over hosted solutions, IMO.

How I use HuffDuffer as "Instapaper for Audio"

I like to listen to podcasts. There's the big names I listen to such as This American Life, their spinoff Serial, and Radiolab - but I also like listening to ad-hoc pieces of audio that I come across without subscribing to a whole podcast feed.

For a while now I've been doing this with Huffduffer. Huffduffer lets me have my own personal "podcast" feed made of individual audio files. In a way it's like Instapaper (another favourite of mine for collecting articles to read) but for listening.

I use the official Huffduffer Chrome extension. Whenever I come across a page with a link to an MP3 I want to listen to later, I hit the little Huffduffer 'hand' and the details are saved to my Huffduffer feed.

In my Podcast player (I use and like Overcast) I manually subscribe to my feed. It's at https://huffduffer.com/username/rss. Then, whenever I 'Huffduff' some audio, it appears as a podcast episode in Overcast.

A few places I've used this recently:

I've no idea if this is how Huffduffer is intended to be used, but it's bloody useful.

2014 In Review

What a year 2014 was. I know we're already a week into the new year, but there's a few things I wanted to list out - however terse some items are - so at least I can tell in the future what happened, when.

I won't go into details for most of these items, but it's safe to say I had a busy year.


  • In March, our second son was born. At four, our family is now complete.
  • Spent much of the early part of 2014 coming to grips with the loss of my father
  • On the last day of 2014, my uncle lost his battle with brain cancer.
  • Bought a Campervan, and enjoyed a bunch of fun trips away with my family. It's like camping, but with a fridge.
  • Took up running and improved my 5K time from almost 7 minutes per Km to around 5:25 per Km. We have a parkrun near home which I've only managed to get to once. I entered my first big event, the Run Melbourne and had a very respectible 5km time.
  • Did a better job with my diet and dropped 5 kilograms and two inches off my waist.
  • Renovated our house and made it a much nicer place for us to spend time
    • Replaced the entire kitchen, plus laundry cabinets
    • Re-tiled the floor
    • Painted everywhere
    • Block-out blinds to all bedrooms
    • Other minor stuff
  • Became Zoo Members and visited on two consecutive Christmases
  • Built my first Lego kit with my eldest son (he loves Duplo, and got some Lego for Christmas. His 3 year old patience isn't quite ready yet)
  • Tried meditating a bunch of times, particularly when I was struggling with various issues. It was peaceful and satisfying, and I'm not sure why I haven't done it more.
  • Took up Pilates to help deal with ongoing back pain. It's working bloody well.


2014 was a good year for projects at work. I've been fully booked and had a couple of nice milestones.

My day job is going well and I'm really enjoying it. Client relationships are better than previously and I'm getting really good feedback. That really makes work more enjoyable!

  • January: Completed a large project; the first I'd been pretty much solely responsible for from start to finish.
  • Mid-year: Worked with a large Charity, again solo from start to finish.
  • Since July: Things are going very well with one of Melbourne's racing clubs. The client is very happy and my co-workers have been fantastic, although being on-site by myself gets lonely after a while.

Work outside "work" was quiet this year and wasn't a major focus of mine. My open source contributions are way down, but projects like django-helpdesk continue to get good community input.

WhisperGifts is doing well. We've done some minor redesign work and added nice new features. It isn't making me rich, but people get real value from it and I see more paid users than free users (excluding those who sign up for free but don't go on to use it)


Right now my 2015 goals are relatively simple. The work on our house is pretty much complete and I need to spend more time with my kids and focusing on my mental and physical health. So I have just four things I will push hard to achieve:

  • Get back into running. At least 2 runs a week, including a 5K Parkrun at least three Saturdays a month.
  • Complete a 10km run.
  • Spend at least 30 nights away from home in the Campervan, including a trip with 5+ nights off the grid.
  • Meditate. Daily would be nice but I'll be very happy with 10 minutes twice a week.

I'm excited. Early 2014 was somewhat tumultuous, but things have settled down now and I'm ready for a happy and peaceful year ahead.

Being a Problem Solver

David Cramer, in Be a Problem Solver

For me the best thing that happened to our generation was Google. Not necessarily Google itself, but the idea of search. The Internet is a sprawling amount of unstructured information, and products like Google Search empower people like myself to solve problems they have little to no experience in.

My days are split into two kinds of categories: ones where I know what I need to do, and ones where everything is burning to the ground. Tools like search allow me to deal with that rain of fire.

Do you remember how to configure HSTS in Nginx off the top of your head? I intentionally don’t. A quick Google will give me a link to Stack Overflow or some random blog post, both of which will happily give me the answer. I don’t need to maintain that knowledge, because the Internet is doing it for me.


In the past I've under appreciated people who are willing to answer questions themselves [...] most notably how someone with context and knowledge can be fairly effective until they hit an issue in unexplored territory.

Spend a few extra minutes looking for an answer. Be open to asking questions on various mediums (Stack Overflow, Twitter, IRC). Literally type in “How do I [X]” into Google. Be surprised at how easy things get.

I couldn't agree more. Here's the first line of my bio, at rossp.org:

My name is Ross Poulton. I'm 30-something, and I'm a problem solver.

If you know how to troubleshoot, and you know how to be a problem solver, then your product-specific training quickly becomes less relevant.

Having an awareness of how something works - understanding the broad pieces that you are working with and their relationships, as opposed to knowing exactly how it works - makes it so much easier to know what to search for when something goes wrong. There's nothing wrong with Googling your way out of situations that are rare or unexpected.

It's one of the reasons I want my kids to grow up knowing how to do basic computer programming and how to build things with their own hands. When they come across something that doesn't work, even if they don't know exactly what's wrong they'll have the knowledge to perform some troubleshooting or testing (be it on a computer, in their car, or fixing a cabinet hinge in the kitchen), they'll be able to search the web for answers with confidence, and be more likely to fix it themselves.

Serial: We're listeners, not detectives

I love listening to Serial, the podcast you've already heard about where This American Life journalist Sarah Koenig revisits the 15-year-old murder case of Hae Min Lee, uncovering details week by week. Today in The Guardian, Jon Ronson, published an exclusive interview with the family of Adnan Syed, the man convicted of Lee's murder.

Serial: The Syed family on their pain and the ‘five million detectives trying to work out if Adnan is a psychopath’*:

Then came the conviction, and the family fell apart. Tanveer vanished to Philadelphia, becoming totally estranged from the family. “Imagine having a family one day, and the next day you wake up and it’s completely broken,” Yusuf says. “It’s all gone.”

And then came the Serial podcast. And suddenly people have started running up to the family with tears in their eyes.

People listening to the podcast are trying to crack the case themselves.

This article (both the article and the behaviour it talks about) make me uncomfortable. We must take Serial as the entertainment that it is. Koenig is doing a spectacular job of telling the story to us, the listener, but we need to remember that our job is as listeners. We're listening to Koenig's perspective on this story (albeit a very thoroughly researched perspective), and we have never been invited to get involved and start doing our own interviews with the people close to the crime.

When the general public or the press start contacting the family of Lee, a murder victim, or the Syed family (reminder: Adnan Syed is still a convicted murderer, no matter your opinion based on Serial), a line has been crossed. These families have been trying to rebuild their lives for the past decade and a half, and having every news outlet and amateur sleuth on the internet knocking on their door is not going to help their personal circumstances.

“I haven’t told Sarah this,” Yusuf [Syed] says, “but we feel Serial has brought us all back together. My older brother Tanveer – who was estranged for 15 years – he came home. When he heard my brother’s voice, it brought back all the memories. He’s visited us three or four times already.”

Hidden towards the end of Ronson's article in The Guardian, this snippet gave me a glimmer of hope that Serial isn't entirely bad for those close to the horrific events of 1999. However this is only one family; based on a verified posting on Reddit, Hae Min Lee's family aren't so happy with their new-found fame - and I'm sure the public sympathy towards the man convicted of their daughters' murder doesn't help.

If Syed is innocent, or if the podcast raises enough doubt in the minds of the US justice system that a retrial or appeal occurs, then it's pretty easy to justify the additional press coverage of these families... and I'd hope that nobody would begrudge a retrial, if there was sufficient evidence that Syed might be innocent.

Until then, the friends and family of Hae Min Lee and Adnan Syed need to be left alone. Enjoy the show, but don't do further harm to those who have already suffered enough.

Please Offer An Excel Export Option

Evan Miller, writing in Please Offer An Excel Export Option:

Data is ultimately meant to be consumed by people. This may come as a shock, but most people are not computer programmers. They are not going to read your CSV with Python and process it with Pandas or Numpy. They are not versed in the libcsv API, nor do they possess ambitions to convert your CSV to JSON in order to build a web mashup. Of the grammar of graphics, they know nothing.

In all likelihood they are going to open your CSV file in Microsoft Excel 2004, or if you're lucky Microsoft Excel 2007, and they are going to spend hours building pixelated pie charts, bar charts, and 3D line graphs. You might not use Excel to analyze data, but they almost certainly will. So why not accommodate their intentions as well as you can? Isn't programming fundamentally about helping users achieve their goals?

But it isn't just human-readable files that can benefit from being in Excel over CSV. Over the last few years I've come to loathe the CSV format. Sure, they're "portable", but there are so many flaws that I never feel I can truly trust the data coming out of them. A list that nicely sums up a bunch of the challenges I regularly face with CSV files (or poorly built spreadsheets) can be found in Releasing data or statistics in spreadsheets, including these gems:

5 . Numbers should just be numbers. Don’t put commas in them, or stars after them, or anything else.

7 . Don’t use colour or other stylistic cues to encode information

Much of my day job involves migrating data from one line-of-business application to another. If the data is available in a raw SQL database I know I'm going to have a relatively easy time — but much of the migration tasks I work on involve exporting data to CSV files then trying to import them at the other end. The problem is, every system has it's own crappy definition of things like line-breaks inside cells, relational data, writing or reading numbers, and handling of non-ASCII characters.

For better or worse, I often print very small subsets of data when I'm trying to determine how to best process and manipulate it. I do this in table form, often on an A3 page, and then scribble all over it to identify what goes where. It's amazing how many carefully-prepared spreadsheets fail the simple black-and-white printer test due to important information being encoded in coloured text or varying shades of background fill.

I'll read the data directly from the source database whenever I can, but for all other cases an Excel file is a great deal nicer than CSV files - which should be used for only the simplest and tightly-defined of datasets.

Kano - Make a Computer


Kano is a computer you build and code yourself. Lego simple, Raspberry Pi powerful, and hugely fun.

US$149.99, free shipping worldwide.

I really wish my kids were a bit older - this is exactly the sort of thing I cannot wait to use to introduce them to computers. Not just "computers", as such, but computing. How they work, what the components are, what can be changed, how you make them work, and how you fix them when they break.

(Found via a passing comment in Turning This Car Around - the podcast I pretend to listen to for parenting chat, but it's this nerdy shit that really gets me)

What's New With WhisperGifts

In the past couple of months I've done some fun and interesting stuff over at WhisperGifts, my side project that lets couples put their bridal gift registry online. It's all built with Django, so I thought I'd share a few neat things I've come across along the way.

Bookmarket and image detection

For a while I've had a bookmarklet to add any item to your registry, which basically took the page title, selected text (or meta description), and URL and pre-filled the Add Item form. Recently, I updated it to also find the largest image on the page, and add that as the default image for the item you selected.

This makes it pretty quick to add an item from, for example, an Amazon page or a manufacturer's website. The code to do it was surprisingly simple. Apologies for the short variable names; this is taken directly from my bookmarklet code so brevity is a plus in that scenario.

var ims=document.getElementsByTagName('img');
var imsMxD=0;
var im='';
    var xDim=parseFloat(ims[x].width)*parseFloat(ims[x].height);

This will give me a variable, im, which contains the URL of the largest image on the page. I then pass this to the form to pre-populate the image field. It's a really easy way to find the largest image on the page (in this case, taken as the largest surface area) and then do something useful with it.

Updated HTML and Pricing

I rebuilt WhisperGifts marketing site and dashboard using Bootstrap. The visual design is identical to the previous design, but it's now responsive. Making this change only took a few hours of effort, and saved me from trying to retrofit responsive utilities into my existing layout. It also gave me a chance to clean up my Django templates a bit.

At the same time, I changed the default template that my customers get to be much nicer than the black and white default I previously used. Pricing also got simplified; I took out both the cheap and expensive paid options and kept a single paid plan for $29. The pricing page is much simpler as a result.


For something a bit different, I installed and set up restless to get a REST API for some parts of the WhisperGifts site. For a while I've wanted to play around with some mobile client development, and a proper API will make that a bit easier. It's only just been announced and given the site's audience I am not expecting a huge amount of use, but it was an interesting project to undertake regardless.

This might also lead me to mess around with a single-page JavaScript app that can consume the API (specifically for the user dashboard side of things) but who knows when!

Weather lookups

If a WhisperGifts user has added the address of their wedding to their registry page, I use that address to do hyperlocal weather lookups using Forecast.io. I'm using python-forecastio, which makes the interesting part of this only a few lines of code:

forecast_result = forecastio.load_forecast(settings.FORECASTIO_API_KEY, lat, lng, time=registry.weddingdate)
weather = forecast_result.currently()
w_temp = weather.d.get('temperature', None)
w_summ = weather.d.get('summary', None)

if w_temp is not None and w_summ is not None:
    registry.weather = "%s, %s&deg;" % (w_summ, w_temp) # Results in "Partly cloudy, 19°".

I can then show this on the couple's registry page and use it in reminder emails sent to guests. At the moment I do these lookups daily for any registry that's within the next month; so far Forecast.io has weather details for 30 days out for most locations which is rather amazing.

None of these are specific to the wedding business, but it's been a fun way to play around with a few pieces of tech that haven't really fit into any other project so far.

Clothes For Tall Men

I'm a tall guy. I don't have great fashion sense, but I'm aware that most mens clothes in most stores do not fit me at all. Over the years I have struggled to find clothes that fit me well, so I thought I'd chronicle some recent discoveries in the hope that other tall gents find clothes that better fit them, too.

To give you an idea of what I am looking for with clothes: By day I am customer facing in a professional services role. This means a suit and shirt (or, at the very least, a shirt and nice trousers) five days a week, with jeans & t-shirts the rest of the time.

I'm taller than most, at 6'4" (193cm), and I weigh approx 85kg (195lbs)1. My arms and legs are longer than usual. Most "L" size clothes here in Australia fit around my body OK (occasionally being a little tight) but are always too short in the arms and legs.

I'm a 34" (86cm) waist, recently down from a 36" (91.5cm). Most brands have the same leg length for these two waist sizes, which is also too short for me.2 It's safe to say that buying any clothes off the rack without trying them on first will be unsuccessful.

So there you go. You've got my details. What clothes fit?

Casual Clothes

I find that most short-sleeved shirts and t-shirts fit me OK. For long-sleeved tshirts I've had particular luck with:

  • XXL Merino T-Shirts from Kathmandu. These are slim fitting, hence the XXL. As usual with Kathmandu, retail price is extortionate but then things suddenly become $20 on sale. Kathmandu have ruined the Australian outdoor clothing marketplace, but I can't walk past $20 merino.
  • XXL Cotton T-Shirts from Sherpa Adventure Gear, including a long-sleeved version of their Hero tee which I wear quite a bit. The Sherpa people are small, so again I need a larger size. These are difficult to find in Australia, I recommend the $2500 option which includes a flight to Nepal from Melbourne, and a two-week trek. The Sherpa Adventure Gear store in Namche Bazzar is great. It's also a rough mountain flight and two-day walk from the nearest city.
  • Element, being a skater brand, has a bunch of styles that are longer or baggier than usual. A Large will therefore fit OK; mileage varies drastically though.

I've had success with some Sportscraft and Esprit long-sleeved shirts, but most "casual" shirt styles just don't fit me.

Casual Pants and Jeans

  • Industrie pants seem to be slightly longer than usual, as are Sportscraft. Try them on first, expect to pay $100 per pair.
  • Jeans West are magical. They sell Standard, Long, and Extra-Long jeans in most styles. Their Extra-Long come unhemmed with an absurdly long 38" leg length; take them to your favourite aunt or alteration shop to get them finished to the perfect length. I actually find their "Long" jeans usually fit me alright, and they're available in-store without needing adjustment. Bonus points: Jeans West sell "half sizes", such as 33 & 35 inch waist. Typically $70 per pair.
  • ASOS sell some styles of their house brand jeans in Long and Extra Long. They're a pretty slim cut; their Long "Straight" leg in a 34" waist is just long enough but I'd call it a skinny style. On special these are under $40.

Business Shirts

I used to wear Van Heussen shirts pretty much every day. Their Classic shirts come in multiple sleeve lengths, so for ages I wore a 41" neck with extra-long sleeves. It turns out I looked like a circus tent for a few years.

These days I've only found two nice shirts that fit me pefectly.

  • TM Lewin are based out of London and have a good online store, plus stores in some Australian cities. In Australia their shirts are also available at Myer, if you can face the worst of the worst of old-style retail. Check their sizing tables; I find their fully fitted (the slimmest style) in a 16.5" collar and 36" sleeve to fit well. The same shirt in a 16" collar is way too short in the arms; the additional shoulder width in the slightly larger size makes a world of difference. Available colours & styles change regularly. Prices are approx $90 each, however multibuy pricing is impressive and they often have sales where you can get four shirts for $40 each (join the email list for regular discount coupons). Tip: their pure cotton shirts (the cheapest) are a pain the ass to iron. Spend the extra on the "non iron" shirts: the label lies, but they need significantly less ironing than usual.
  • Charles Tyrwhitt are also London-based, with a decent online store. They seem to have identical sizing to TM Lewin; their Extra Slim Fit in a 42cm collar and 36" sleeve is fine on my body shape and the sleeves are long enough. Prices are $50-$99 AUD; again non-iron is the way to go.

Both of the above online retailers have very fair return policies. I suggest an initial order of 4x different sized shirts: You'll take advantage of the packaged pricing, you get to find the perfect fit, then exchnage the three shirts that don't fit for your newly found size and style.

It's not really a shirt, but I've recently bought a wollen jumper from Stafford Direct at a local DFO Outlet; size XL fits nicely in the body and sleeves over a business shirt.


Until recently, I would put off buying work trousers for as long as possible. I'd then go to a Myer store and try every brand on, with increasing frustration and very little retailer assistance, until I found a pair that fit OK in the waist and had enough excess fabric in the hem to be able to be taken down.

Most expensive suitors and tailors will sell unhemmed trousers; I don't spend thousands on a suit though and have little interest in paying $400+ for a pair of pants.

As of this week I've found a single lone retailer who sell unhemmed trousers at suitable prices: Charles Tyrwhitt sell multiple styles in both Slim and Classic cuts with an unhemmed 97cm inseam. For $15 and a ten-minute wait I can have these hemmed to suit me at the local shopping centre; the trousers themselves are $99-$149 plus delivery.

Until I find someone else selling unhemmed trousers, all my work pants will come from Charles Tyrwhitt.

I hope that fellow tall guys get some use out of this little list. If you're not overweight, most clothes for tall guys are just too hard to find. If you've got other tips, I'd love to hear them.

1. Yes, I'm using imperial height and metric weight measurements. It's not just me, the world is fucked. Australians measure nothing in imperial measurements except for the height of adults and the weight of babies.

2. Why do trouser manufacturers sell "Regular" and "Short" leg lengths? Surely "Long" and "Regular" makes more sense. After all, it's much easier to cut fabric off and re-hem pants than it is to magically make the fabric *longer* for us tall folk.

Payments for Australian Startups: Update regarding Pin Payments requirements

In October last year I put together a summary of payment processing options for Australian startups, as it was at that point in time.

One of my favourite providers was Pin Payments, who were the only Australian company in the lineup, however they had two requirements that bugged me: They required the billing address of my customers, and they emailed a receipt directly to my customers upon payment.

For WhisperGifts I really don't want either of those things, so I implemented payments with Stripe.

Recently, Chris from Pin Payments reached out to me with an update. I've posted it over on the original post but with his permission have included the email below.

Pin Payments are able to switch off the e-mail receipt sent to customers, and set the billing address fields to be optional. At the moment you just need to e-mail the team at support@pin.net.au

Something else that's worth noting when comparing is the multi-currency support we provide. Currently you can bill in 6 currencies. This is seriously powerful for Australian companies looking to go global, or even being able to tap adjacent markets like NZ.

For me, these changes put Pin back at the top of my preference list. Being local is a big deal for support purposes, so when time permits I'll be switching WhisperGifts over to Pin.

Thanks to Chris from Pin for reaching out and for allowing me to post this.

Djangosites Open Sourced

Back in 2008 I started djangosites.org as a listing of websites powered by Django. Prior to that, we relied on a wiki page to see who was using Django, so an image-based website felt like a big improvement.

Since day one I've promised to release the source code that I use for the site. It's relatively simple, so I never stressed much about making it a high priority - but I continue to be asked and politely berated for not getting it published.

Today that's changed. I think it's too late for me to say I've come good on my promise, but the Djangosites source code is now available on GitHub.

The README has more details, but in short this is a dump of the code currently running the site. I'll continue to use this repository as changes are made to the live site, however I'm not actively working on djangosites at this point in time (other than reviewing & approving submissions)

There's a few pieces of this that might be useful for people new to Django, but otherwise this is really a collection of generic views. The useful bits might be:

Suggestions and pull requests are welcome, but I'm not actively soliciting changes. I should probably clean things up a bit given that this codebase hasn't changed materially since Django 0.96, other than slight refactors to allow upgrades to work - so I'm certainly not yet taking advantage of new functionality that's been made available in recent Django versions. Perhaps now you can see how bad the code is, I'll have more of an incentive to fix it :)

The source code is available right now from GitHub under a mixed licence: the Python code is MIT-licenced, and the rest (HTML etc) is not open source but included in the repository for completeness and as an example.

Payment processing options for Australian startups - 2013 Edition

Not that long ago, startups and hobby businesses had very few options for accepting online payments here in Australia. We could sign up with a merchant facility with a bank (with minimum fees over $100/month) and then pay to use eWay or similar gateways (again, for a few hundred bucks a year), or we could use PayPal.

As services such as Stripe launched in the US, us Aussies felt a bit left out. Our tightly regulated banking industry didn't seem welcoming to new players, or so it seemed.

Throughout 2013, a number of new players have become available in Australia.

Since launching WhisperGifts we've begrudgingly accepted PayPal payments. Although PayPal is pretty ubiquitous, the user experience leaves a lot to be desired - sending your ready-to-buy customers to an external website for payment looks amateurish, regardless of how much custom design that external party lets you do.

The three key players as of today are Braintree, Pin Payments, and Stripe. Having tried each of them for WhisperGifts, I'm ready to write up my thoughts and recommendations.

Common Features

As far as I'm concerned, all three services cost pretty much the same. All have no monthly fee, a 30c per transaction base fee, and a small percentage per transaction (ranging from 2.4% for Braintree to 3% for Pin). I do pretty low transaction turnover, so at this stage I'd rather pay a slightly higher per-transaction fee than a monthly fee.

All provide Javascript-based payment processing libraries, allowing you to put a form on your own website that POSTs encrypted credit card details to your server for processing. None of them require a customer redirect for payment.

Lastly, all three have similar functions for storing credit cards for future or recurring use. Braintree and Stripe have explicit recurring billing functionality built in (ie they handle the recurring billing themselves), and Pin Payments has a relationship with Spreedly to manage this, albeit at extra cost. If you do your recurring billing yourself against a pre-saved customer token, all three are sufficient.


Braintree Payments are an American company, who launched in Australia in late 2012. The service is solid, having had a few years to mature in the US market, although their initial Australian offering had a minimum monthly fee of $50. These days, there's no monthly fees.

Their web console is also quite useful, although after getting started with them I had a major gripe: The underlying banking relationships are just too messy. It sometimes feels like Braintree are an old-style bells-and-whistles gateway, who have cut fees to appeal to startups and small businesses.

When you sign up for Braintree in Australia, you're actually opening a merchant facility with the National Australia Bank. This isn't made clear during the initial process, however it's abundantly obvious when you come across any issues: My first settlement from Braintree took over a month to arrive, due to the NAB refusing to pay proceeds to my personal bank account (I run as a sole trader; my legal entity name doesn't match my trading name. This is normal.)

This led to a long process of opening a new business bank account in my trading name, simply to get paid by Braintree. But it wasn't pretty - after I started interacting directly with the NAB, I began to be charged all sorts of fees that Braintree must normally abstract / negotiate away. Every interaction with the NAB seemed to cause a regression, and the NAB business bankers really don't understand the relationship with Braintree.

Not all of this is directly Braintree's fault, of course - but it still soured my experience. Regardless, this banking relationship has it's benefits: Braintree do settlements within a couple of days.

Braintree is now owned by PayPal, however the public messaging is that they'll remain as-is for now. Support times were somewhat slow, as it appeared to be done out of the United States (despite an Australian office). This meant multi-day to-and-fro email conversations to get issues resolved.

Pin Payments

The first Australian payment provider (that I know of!) to launch was Pin Payments, who hit the scene with a public beta in early 2013. I joined up pretty quickly, as their beta participants received a no-monthly-fee account. After their public launch, the fee jumped to $30 however there is again, as of October 2013, no monthly fee.

Transaction fees are pretty normal, at $0.30 + 3%. Some foreign payments attract conversion fees, which you should be aware of.

Pin's API is fantastic, as is their web console. I released an open-source Pin Payments library for Django which is easy to use.

The relationships with banks are abstracted away to become almost invisible, however the signup process asks questions typical of a merchant facility. This suggests to me that they're doing a lot of work under the covers to hide that bank relationship, which is fine by me.

There's two things, however, that I don't like about Pin at the moment.

Firstly, your payment form must collect the full address of your customers, rather than just their credit card details. As I'm selling an online service, I don't need these details for any other purpose and would rather not collect them. I can appreciate the fraud management use of this data, however if I can get away with keeping it off my signup form then I'd prefer to do so.

The second irritation is that Pin will email your customer a payment receipt. This means that you must share your customer contact details with Pin, and the customer begins to see the plumbing of your payment system as the Pin email includes their logo and contact details. When I contacted Pin about this, they mentioned that there might be an option to disable it in the future if you agree to email a receipt yourself - although this is still in the pipeline.

Settlements take seven days, which might be an issue if you rely on the cashflow - however they don't hold any balance other than this. Support was fantastic, with quick responses. This is the joy of having a vendor in your own timezone!

Update January 2014: Chris from Pin Payments was nice enough to reach out to me after this blog post to address my points above. With his permission, here's the meaty bit of of his email:

Pin Payments are able to switch off the e-mail receipt sent to customers, and set the billing address fields to be optional. At the moment you just need to e-mail the team at support@pin.net.au

Something else that's worth noting when comparing is the multi-currency support we provide. Currently you can bill in 6 currencies. This is seriously powerful for Australian companies looking to go global, or even being able to tap adjacent markets like NZ.

Changing the e-mail receipt and billing address were a big deal for me, so I'm likely to switch back to this Australian-based provider. Now, back to the original post! End update


Stripe were the first company since PayPal that I remember seeing turn the payments industry upside down. For a long time, foreigners looked at websites using Stripe with awe, thinking "If only we could do that!".

In August 2013, Stripe launched in Australia. They're still in Beta, but it's easy to apply.

In my opinion, Stripe is the benchmark in simple payment processing and it's clear that Pin have somewhat modelled themselves on Stripe. I can't blame them.

The signup process is incredibly simple, and there's no multi-day account setup or validation (you do, however, have to provide copies of your drivers licence or passport to meet Australian banking laws). There are many, many third party libraries for Stripe - they are very well supported. The only fields you are required to have on your site are the credit card number, expiry, and verification code - no address or e-mail address.

Like Pin, payments are settled after 7 days.

I haven't yet needed to contact Stripe support, however I wouldn't be surprised if I saw similar wait times to Braintree.

Final Thoughts and Recommendations

Since none of these services have signup or monthly fees, I'd highly suggest signing up for yourself to try them out. The barrier to integration is pretty low (especially compared to PayPal) and all have mature APIs and third party libraries.

For my use, I'm currently sticking with Stripe. It ticks all the boxes for me, is easy to use, and doesn't have any quirks that impact me. If Pin end up simplifying requirements for payment forms to only collect payment card info, and stop sending my customers an email, I'd prefer to use them due to their being Australian owned and operated - something I have major respect for.

The online payments industry in Australia is currently undergoing quite a bit of a transition. In less than a year we've seen two major foreign players launch locally, and have seen a home-grown company get off the ground with quite a bit of success. The next year or two are going to be really exciting, as it finally seems that we can launch a small startup in Australia without the long and expensive process of applying to accept credit cards. I'll drink to that.

Eulogy for my father

Three weeks ago, on September 4th, my father Phillip Harry Poulton passed away at age 58 after a brief battle with cancer of the gall bladder. The toughest thing I've ever done was read part of his eulogy along with my siblings, mum, and Dad's friends.

I'm very proud of my Dad, and I'm happy with the stories about my time with him that I was able to squeeze into the few short minutes that I spoke.

Below is one of my earlier drafts, which has more detail than what I read at his funeral on September 11th 2013. At the bottom is a video that was recorded - I've included this for friends and family who weren't able to make the service - I assume it isn't fascinating viewing for anybody else.

A number of newspaper notices were placed for my Dad, from friends, family, and his colleagues. You can read tributes to Phil Poulton on the Herald Sun website.

Like most people, I learned a heck of a lot from my Dad. Chatting to my siblings it was clear that we all saw Dad in much the same way - he was genuine to everybody he met, and didn't filter his personality to suit the audience.

Dad married my mother, his first wife, and they renovated their home together in Ringwood. I was their eldest child, but not their first pregnancy - Dad helped mum through a miscarriage in an earlier pregnancy, setting the scene for the strong role he'd play for the rest of his family life. The fernery in their Ringwood home was expanded as a small memorial for their unborn baby.

We moved to Mitcham before I started school, into a house that was continually being worked on.

Before Benn started school, Mum and Dad showed us the world. We moved temporarily to the UK for a working holiday, to a small town outside Cambridge called Royston. My memories are foggy but fond, and seemed to involve more time driving our little Ford hatchback around Europe than we did at school or work.

Whilst in Royston, Mum discovered a lump - she was diagnosed with breast cancer. The UK jaunt was cut short, and we returned home for treatment.

In 1992, Mum passed away. Benn was 6, and I was 9.

When I look back on my hero father, it's from this point forward that he really deserved that badge. He was a widowed father of two young boys, working full time, running regularly, but he couldn't cook to save himself. For a short while, Benn and my diet consisted of sausages in bread and "fruit cake" - but I use both words loosely. Sue recently reminded me of the recipe, which was a grand total of 5 ingredients: flour, bran, milk, dried fruit, and sugar. You'll notice a distinct lack of eggs.

Apparently such a loaf is fantastic for endurance runners, but Benn was lucky enough to get one for his birthday one year. It seems to be one of the few things for which he hasn't forgiven Dad.

Even through this grief, the accountant in Dad kicked in. Although he was working hard at Heritage Seeds, and trying to keep up with Benn and I, Dad made sure mum's teachers superannuation was shared between Benn and I - a forethought that gave both of us a huge help to buy our first homes.

Alice and Bill, my maternal grandparents, were and still are a huge part of our lives. They often lived with us, and us with them. Dad still called grandpa "Dad", even though there they were inlaws.

A while after Mum died, new neighbours moved in, so Dad went over to introduce himself to the lovely blonde who had started making a new home with her two kids.

My memory is hazy, but I'm told that it was Ben and Benn who became great friends and knocked a hole in the fence. Something tells me that's only part of the story, since I doubt Dad would have let a primary school kid loose on his fence with a powersaw - but soon after, we were a regular fixture for dinner at Lesley's house.

I'm sure Dad would have hosted Lesley, Ben, and Tash for dinner, but he was trying to make an impression - and sausages and cake wasn't going to help his cause.

Soon after, we found ourselves living together as one family here in Eltham. Dad always seemed to have a love for Eltham, especially for places such as Montsalvat where we are today - lots of trees, lots of timber, and other eclectic building materials. Many of you will know of our first house in Eltham, a timber and mud brick house that was always being extended upon. This theme of always improving was one of the biggest that rubbed off on me, as evidenced by the number of half-finished jobs around home.

My time in Eltham was my true formative years: I started high school, made lifelong friends, and really got to know Dad's own lifelong friends. As time went on, I learned more and more about the world, much of it from Dad's viewpoint. I was learning from Dad until the day he passed away.

Dad got me my first job, doing work experience with the company who looked after the computers at Heritage Seeds. As a result, through a series of buyouts and cross-training, I've never had to interview for a new job - yet I've ended up working somewhere I love with a fantastic group of people.

We often spoke politics at the dinner table, although we rarely saw eye to eye. The weekly dinner table was where we bought our own growing families, to talk with and learn from Pa. It was also the scene for the infamous "Sonos Battles".

Us four kids had always considered Dad a bit of a ... let's just say he was an Accountant. Fads, trends, and new stuff wasn't his cup of tea, and as he held the cash we weren't likely to be sporting new video games or the latest Nikes.

When he moved to the new house at Wombat Drive, something seemed to change. Maybe it was because we weren't in his back pocket all the time, but suddenly there was a huge TV. Then two more, just in case.

The old record player was put on the nature strip, and a top of the range surround sound system found it's way into the living room, along with a remote-controlled music system.

It became a bit of a game at Sunday dinner to see who could choose a song that would actually get played through to the end. One of us kids would chose something contemporary, and we'd all happily hear the first half of the song. Dad would then decide that he'd like to hear Aretha Franklin, so he would pull out his phone and queue up an Aretha Franklin song. Well, he tried to - but every time, without fail, we ended up with the entire Aretha Franklin back catalogue, including live versions, cover songs, and interviews. And he didn't just queue them up to play after our one song - he stopped the song hard halfway through, and we'd hear the opening bars of "R.E.S.P.E.C.T", followed by her rendition, as lovely as it was, of "Bridge over Troubled Water".

Dad was a pretty non-technical person, who still did his banking with bits of paper. To watch a new guest arrive for the first time was amusing, as they tried to deal with Dad's excited demonstrations of wireless music selection. Who would have thought that after a life of collecting 8-tracks and then records, that he'd be most enthusiastic about music over the internet.

Watching him in the last few years I learned a few other useful lessons. It turns out, that a caravan cannot be too large. It also cannot have too many gadgets. Once the gadget-laden caravan arrives, there's no reason not to go out and buy more gadgets to go in it.

It turns out it's also OK to wear shorts. Dad was particularly rapt one night after going shopping on his way to running, having had a stranger at the supermarket yell out "Nice legs!".

Even when we landed in Nepal, our Sherpa guide, Lhakpa, asked with a concerned face, "Mr Phil, do you know you are in Lukla?". Dad was doing us proud, surrounded by the permanently ice-capped Himalayas - wearing his shorts.

Dad also taught us that coffee is a great way to catch up with friends and family. Meeting for Saturday coffee was as important as Sunday dinner, as Ollie sat on Pa's lap to eat his muffin while we slowly started our weekends. More recently, we'd started bumping into each other at the coffee shop before work. It was a nice coincidence that we started going out of our way to foster a few days a week, even if it was only a 2 minute chat while getting a take away coffee.

But above all, Dad was all about family and friends, tied together by music - and he used it to make us laugh at the saddest of times.

Last Wednesday afternoon, with friends and family sitting in the sun at home, we put on a playlist Dad had built called "Phil's Favourites". Of course the first 5 hours was everything the Rolling Stones have ever had a part in, but the music kept going, and going, and going. I guess that's the advantage to adding entire discographies to your playlist.

As the evening wore on, we knew what the outcome would be. With twenty of us surrounding Dad's bed in tears, we kept talking to him and listening to the music he queued up.

Then, some of the worst music interviewing I've heard came onto the stereo and filled the room. I have no idea who it was, or why an interview was even on Spotify, but his living room was filled with noise we didn't want to listen to. We reached for Dad's iPad, to try to get back to the music - but it refused to work for us. His horrid music management made us all laugh, both with him and at him, at a time when we should have been in tears.

Luckily we fixed the music, and soon after Elton John's "Candle in the Wind" came on. It was quite possibly the last music he ever heard.

The messages and support I've received from everybody around me has been simply amazing, for which I'm eternally grateful. Good friendships make tough times that little bit easier.

Dad's gall bladder cancer was rare and aggressive. In his memory, we've been raising some funds for the Forgotten Cancers Project at the Cancer Council of Victoria. More research into this cancer might help extend the lives of future patients, so that they may spend more time with their families than the three months we got with my dad.

Tracking CPC Results in Django

Like many startups, I use CPC ads to attract attention to WhisperGifts. I bid a set fee per click for particular search words on Google, and for ads shown to my target demographic on Facebook. I wanted to track an individual signup to their source CPC campaign, so put together a really quick bit of Django middleware to help me out.

All I do is stash the value of utm_campaign (set by Google or Facebook) into a cookie called wgcookie.

class CampaignMiddleware(object):
    def process_response(self, request, response):
        from registry.models import Campaign
        if 'utm_campaign' in request.GET.keys():
            if 'wgcampaign' not in request.COOKIES.keys():
                # add campaign cookie
                c = request.GET.get('utm_campaign', None)
                response.set_signed_cookie('wgcampaign', c, max_age=31536000, httponly=True)
        return response

At signup time, I read out the cookie into the users table:

    campaign_code = request.get_signed_cookie('wgcampaign', None)
    campaign_code = None

user.campaign_code = campaign_code

Simple! I've now got the capability to track actual revenue by campaign source - a very handy tool to identify which campaigns might warrant higher or lower spending.

I'm aware this isn't rocket science, but I figured it's worthwhile sharing - it makes more sense to me to track these things directly in my own database, than to try and match data from the AdWords panel with various analytics services.

Happy CPC bidding!

Moving to FastMail

I've been a long-time FastMail user, and they make me happy. For various reasons I never liked using Gmail, although I never tried Google Apps for Domains. Max Masnick recently wrote a post on his move from Gmail to FastMail and experience is close to mine - and his migration tips are useful for all, not just Gmail users.

If you're looking for a fast, sturdy, secure, easy-to-use third party mail service for yourself, your family, or your business, I can highly recommend FastMail.

New Podcast: Django Roundup

Lincoln Loop are one of the earlier Django-based development shops, and their various employees contribute in many ways to the open-source community. One new addition they've just made is the launch of Django Round-Up, a podcast covering the news in the Django community.

This is a podcast hosted by @kennethlove and @bkonkle from @lincolnloop that highlights recent articles and projects in the Django community. We love talking about web development, so our podcast focuses on casual conversations as we cover the latest blog posts and project releases.

I was surprised to hear my name coming through my headphones, only a minute into their first episode - with a quick review of my recently-published django-readonly-site package.

As a result of their comments I've made some minor updates to address questions and suggestions from the podcast team.

I want to publicly thank them for including my item in their inaugural episode, and suggest that anybody in the Django community goes out and checks out this valuable new resource!


Want to see more? Check out the yearly archives below.