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:

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='';
for(x=0;x<ims.length;x++){
    var xDim=parseFloat(ims[x].width)*parseFloat(ims[x].height);
    if((xDim>imsMxD)&&(ims[x].src)){
        imsMxD=xDim;
        im=ims[x].src;
    }
}

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.

API

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.

Trousers

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.

More...

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