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 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 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

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 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: = "%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 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

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 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

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.


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