Category Archive for: ‘Online Life’
A Personal Stack Overflow Milestone
In the grand scheme of things, ’tis but a minor achievement, but I was quite chuffed with myself this evening when my Stack Overflow reputation finally reached the 10,000 mark:
My girls made me a special “10K” cake to celebrate
Kudos to Jeff, Joel and the team for creating a site that I have found engaging, entertaining and very useful for the last 3 years and 4 months.
Most-Read Posts 2011
Courtesy of Google Analytics, here are my top 10 most-read blog posts from 2011:
Posts published in 2011 only:
- Entity Framework Week Part 2: Conventions and Fluent Mappings (8 March)
- Entity Framework Week Part 1: Introduction, Configuration and Initialization (7 March)
- Entity Framework Week Part 4: Features and Further Investigations (10 March)
- Entity Framework Week Part 5: Concluding Thoughts (11 March)
- Entity Framework Week Part 3: Runtime Issues Encountered (9 March)
- Google+ – By Jove, I Do Believe They’ve Got It (7 July)
- It’s A Small World (9 April)
- Password Management for Mortals (28 August)
- American Express Statement Download Functionality (19 September)
- Schoolboy Error of the Day (17 August)
All Posts:
- Team Foundation Server – Sharing Binaries and Class Libraries Across Multiple Projects (17 March 2007, Last Year #1)
- A Serializable KeyValuePair Class (17 September 2006, Last Year #2)
- Entity Framework Week Part 2: Conventions and Fluent Mappings (8 March 2011)
- Spot The Misleading Graph (19 February 2007, Last Year #3)
- Is My String Empty? Some C# Performance Metrics (30 July 2004, Last Year #4)
- Postcode Validation (23 May 2007, Last Year #5)
- TFS: Using Alternative Diff/Merge Tools (19 May 2009, Last Year #8)
- MSB3247 – Dependent Assembly Conflicts (4 December 2008, Last Year #6)
- WCF – NHibernate Unit of Work Behavior (9 April 2010, Last Year #9)
- An MVC Gotcha and the PRG Pattern (9 April 2010, Last Year #14)
American Express Statement Download Functionality
I’ve just been trying to download all my old credit card statements from the American Express website. That’s the kind of exciting life I lead.
I had hoped that this would be a fairly straightforward task, but every step of the process seemed designed to frustrate and annoy me, leading me to pen this quick list of a number of suggestions for how the functionality could be improved.
Here’s what the “Download PDF Statement” page on the Amex website looks like. Click for a larger version:
The first thing that irks me is learning that only my last six months’ worth of statements are immediately available for download – the rest must be requested and will be available 24 hours after ordering, for 14 days. Bear in mind that these monthly PDFs weigh in at about 30 kilobytes apiece. Is online storage really such a scarce resource these days? If Google can make up to 7622 Mb available for anyone who wants a GMail account, surely a company the size of American Express could find a couple of megabytes for each paying customer?
OK, so I have to request the statements. How do I do that?
You can order any of the statements listed below. To order, please check the appropriate box and submit your order.
Well, I want them all. But there are no bulk-selection options. I have to check each checkbox individually. Would it have been so difficult to add a control which toggled the state of every checkbox? Or maybe a checkbox next to each year which toggled the state of each statement within that calendar year?
Having carefully selected each of 61 checkboxes, I click “Order Now” and am presented with the following dialog box:

Woah, who said there was a limit of twelve months?! There’s nothing about this in the explanatory blurb inviting me to order “any of the statements listed below”. If such a restriction existed, it would have been nice to know about it before I checked 61 checkboxes.
Even if I had been forewarned about this limit – the American Express developers clearly understand the capabilities of client-side JavaScript, so it would have been polite to have prevented me from selecting more than twelve checkboxes, by prompting me and/or disabling the unselected checkboxes after I selected my twelfth checkbox.
By this time I’m pretty frustrated at the whole experience. I have discovered (the hard way) that it isn’t possible to download all my old statements, just the last six months’ worth, plus any other twelve of my choice. That seems a very strange business rule. Oh well. Twelve it is. I reload the page, select the most recent twelve statements, and click “Order Now”. A familiar dialog box appears:

What the?! But I have limited my selection to twelve months. I recount – yep, definitely twelve checkboxes selected – before resorting to viewing source and searching for “please limit”, which reveals the following function:

Yowza, an off-by-one error on the website of a financial services provider. That’s reassuring.
I give another sigh, uncheck one of my twelve checkboxes, and submit a request for the most recent eleven statements. The following confirmation message appears:
Notice anything odd? I almost didn’t – I was just about to navigate elsewhere when I noticed the text on the button on the left:
Request Another Statement
But I thought I was limited to selecting only eleven or twelve statements? It seems not – and indeed, the website lets me go round the bend loop another five times, picking no more than 11 statements on each iteration until I’ve eventually ordered all the statements.
Let’s think about this for a moment. There is no business policy preventing the customer from requesting more than eleven historical statements, and there are certainly no web/HTTP issues with POSTing a form containing more than eleven selected fields. Presumably then, there is some technical limitation deeper within Amex’s offline systems restricting processing to batches of no more than eleven statements. Why expose that technical limitation to the customer and force them to mentally perform the batching? Why not allow the customer to simply click a few buttons requesting all of their statements, and have some server-side code batch this request into multiple commands to downstream systems, if that is what is required? Shouldn’t web front ends be all about façades and anti-corruption layers?
24 Hours Later…
If you thought that would have been the end of my little rant, then I’m sorry to disappoint. But the usability of this functionality didn’t improve much when I returned the following day to download the statements that I had ordered.
Sure enough, the page listed individual hyperlinks to each statement that had been ordered:

Requiring 61 clicks, and 61 downloads of individual PDF files. Why so hard? Again, I turn my attention to how the mighty GMail works – when I receive a message containing multiple attachments I have the option of opening/downloading them individually or downloading a single ZIP file containing all attachments. It is the little touches like this that make GMail so enjoyable to use, and serve to embarrass other sites which omit the same niceties.
But hey, I finally got all my statements downloaded:
…and now I just need to write a quick little script to rename the files into a more useful format, say YYYY-MM! I don’t know about you, but I’ve never seen a benefit in sorting alphabetically by the name of the month.
On the face of it, then, the American Express website has provided exactly the functionality that I wanted – to be able to download PDF copies of all my historical statements. But the functionality has been designed and developed in such an ill-conceived way as to be unpleasant and time-consuming to use at every step of the unnecessarily long process.
Wacom Bamboo
Almost everyone who has wandered past the various desks that I’ve occupied over the last year has passed comment on my Wacom Bamboo Pen Graphics Tablet:
So, let me say a few words about my experiences with that.
For the longest time, I had been perfectly content to use various Logitech VX / MX mouses as my secondary input device, occasionally using a Microsoft Arc Mouse (very convenient to carry around in my rucksack).
But in the Spring of 2010, I developed a nagging pain in my right forefinger. It sounds silly and trivial, but over the course of a couple of months it developed from a barely-susceptible twinge to something that was genuinely impacting my life – I struggled to open Coke bottles or turn the key in our garage door’s stiff lock.
I turned for advice to Joe Steele, my personal guru of alternative input devices, and someone who I knew had previously suffered with RSI. Dr Steele confirmed that my symptoms mirrored those that he had experienced some years previously, and prescribed a course of two tablets – one for home use and one for client sites.
The Wacom Bamboo is an excellent piece of kit, and reasonably priced compared to other tablets and decent mouses. But it does take quite some getting used to. There is a knack to moving the pen around just above the surface of the tablet – a gap small enough that the movement is perceived by the tablet (and the mouse cursor moves), but without actually touching the tablet (which leads to dragging-and-dropping). This is particularly problematic if you venture anywhere near Visual Studio’s Solution Explorer – it was quite embarrassing how many times I checked strange folder/file moves into source control in the early days of my Bamboo usage. This acted as a good lesson to steer clear of Solution Explorer and get into the habit of navigating using ReSharper instead!
Overall, it took me a good few months before I was as fast and accurate using the Bamboo as I was using a traditional mouse. This could be quite frustrating when I just wanted to get something done, and on a number of occasions The Wife snuck into my office and caught me of an evening, guiltily risking my health with an old VX Revolution. As with many things, perseverance is the key – having Bamboos at both home and work certainly helped. Over time the pain in my finger subsided and has now disappeared altogether.
Two specific tips if you’re thinking of giving the Wacom Bamboo a try for day-to-day computing use:
Firstly, be sure to configure the device to use “Mouse Mode” rather than the default “Pen Mode”. Mouse mode “moves the screen cursor with a ‘pick up and slide’ motion similar to using a traditional mouse”, whilst Pen mode “sets the cursor so that its movement corresponds with the position of your Bamboo pen on the tablet – wherever you place your pen on the tablet, the cursor will jump to a corresponding point on the screen.” In my experience, Pen mode led to the cursor jumping wildly around the screen unless I gave consideration to where on the tablet I was placing the pen – a very unnatural experience after many years of using a “traditional” mouse.
Secondly, I suggest mapping the lower button on the barrel of the pen to the “double-click” action, as trying to emulate a double-click by tapping the pen nib on the tablet twice in quick succession is awkward – a problem which compounds if you need to perform many double-clicks, such as navigating around a file hierarchy in Windows Explorer.
I mentioned a few years ago that a keyboard makes a hell of a difference – well, it turns out that selection of secondary input devices can also make a huge difference to the long-term viability of a career, if you can invest the time to become proficient in their use.
Someone Send swiftcover.com’s Marketing Team a Calendar
So yesterday was the last Bank Holiday before Christmas, the kids go back to school in the next few days, and across the nation you can hear the sound of central heating systems creaking back into life. It’s all a bit depressing – unless you happen to be working for the slightly delusional Autumn-deniers in swiftcover.com’s marketing department:

Password Management for Mortals
This is a quick post aimed at my non-technical friends and family which I’ve been meaning to publish for some time. I am reminded of my intentions every time I hear someone lament that they have too many passwords to remember, or reveal that they use the same handful of passwords for all sites that they frequent (usually incorporating the names and birthdates of their nearest and dearest).
Do I need to recap why password reuse is a very bad thing?
(and it’s not just the black-hats you have to worry about, it’s the incompetent service providers too, as the recent well-publicised hacks of Gawker and the PlayStation Network have shown).
So, what is my suggested solution to this problem of the modern age?
I have long since given up trying to memorise passwords, or indeed racking my brain devising suitably strong passwords for each site I visit. There are many fine password management applications out there which excel at both these tasks – I use and endorse KeePass Password Safe, a free and open-source application which is available for many platforms, including Windows, Linux and Mac OS.
By saving my KeePass password file to my DropBox, I have all my credentials easily available from all the machines I use at home and on client sites. Both DropBox and KeePass have apps available on Android (and iPhone), so my credential management solution neatly extends into my mobile life (and means I always have a copy of my passwords to hand – useful for when evil clients choose to block DropBox).
Yes, I still need to memorise at least one password (to protect the actual KeePass file) – this is a lengthy pass phrase chosen using techniques similar to those described in this XKCD comic.
If you’re still relying on your grey matter to retain an ever-expanding list of passwords, I strongly recommend you consider offloading the burden to some dedicated software such as KeePass. Then take the time to visit all the sites you frequent and change your weak, oft-used passwords for unique high-entropy ones.
Amazon Recommendation Of The Day
I’m not saying that I wouldn’t enjoy watching Birdy the Mighty: Decode 2, you understand; it’s just that I’m uncertain how Amazon came to this conclusion based solely on my choice of secondary input device.
Of course, now that I’ve clicked on the DVD out of curiosity, Amazon’s homepage has me pegged as a veritable manga fiend…
See also – Amazon’s Uncannilly Accurate Recommendation Algorithm
Google+ – By Jove, I Do Believe They’ve Got It!
So last week Google, in keeping with their modus operandi when launching major new properties, started trickling out public invitations for Google + – their latest attempt at capturing some of the lucrative social-networking market share from the likes of Twitter and Facebook.
Yes, yes, I know what you’re thinking – another social networking site? Another place to maintain a social graph? Another URL to check during my lunch hour?Another profile demanding upkeep with details of my top 10 favourite episodes of Buffy and frequent whimsical status updates? Do I really have the time and inclination for this? Can I, to put it bluntly, be arsed?
If this is your reaction to the G+ launch then I understand where you’re coming from. I felt the same way back in April 2007 when I blogged about experiencing social networking fatigue. And having seen the piss-poor attempts at networking that were Buzz and Wave, I too adopted a sneering, sceptical demeanour when confronted with my first view of Google+.
And yet, and yet… despite all those misgivings, I have to say that Google+ is really rather magnificent.
There’s obviously no first-mover advantage here, and while some of the peripheral functionality (huddles, hangouts, background uploading of photos from smartphones) is innovative, much of the core of the site is evidently influenced by the standard FaceBook layout. This is simply social networking done well. Really well. All the best ideas from Facebook and Twitter, implemented beautifully, without the downsides. Let me stop rambling and try to enumerate some concrete examples.
As a consumer of information, one of things I love about Twitter is the asymmetrical relationship model – I am free to follow the public thoughts of Paul Daniels, Bill Gates, The Queen and (of course) Stephen Fry without (fortunately) requiring them to reciprocate. But as a creator of information, sometimes I wish to post status updates which are shared only with close friends and family, which is where Facebook comes into its own.
But this is an imperfect separation of concerns – Twitter posts from genuine friends can get lost amidst the chaff, the 140-character restriction on Tweets can stifle debate or lead to misinterpretations, whilst posting to Facebook can feel like pointlessly cultivating a walled garden with no chance of one’s musings reaching a wider audience.
G+ succeeds in squaring this circle by introducing the concept of, well, circles! That is, people can be grouped into arbitrary sets – friends, family, acquaintances, crushes, colleagues, folks from your badminton club, people to diligently ignore, whatever. People are told that you’re now following them in some way, but are not told the name of the circle(s) into which you’ve chosen to place them.
From a consumption point of view this is admittedly similar to Twitter’s Lists. But G+ Circles also have a bearing when posting – you can specify which of your Circles may view each post (or indeed choose to make the post public). Crucially, the maintenance of Circles is simplicity itself, executed through an impressive UI that is a joy to use. You’re also prompted to add people to Circles when first choosing to follow them – privacy by default.
On the face of it, G+ might appear to be Yet Another site to check, but the enhanced Google Bar now adorning the top of sites I already check habitually (GMail, Google Reader, Google News, Google Finance…) means I’m unlikely to ever stray far from rich G+ notifications or indeed a way of sharing and publishing posts to G+. I’ve already disabled the majority of the email and mobile G+ notifications as I find them redundant given the amount of time I spend in front of a web browser.
There is no app platform on G+, which means that streams are, for now, mercifully free of incessant and vacuous messages along the lines of “Bob just fed his goat in Farmville!”. The downside is that neither is there an API, which limits the integration possibilities. I’m led to believe this is currently under development.
It’s too early yet to predict whether G+ will reach a sufficiently critical mass to be a "FaceBook killer". I suspect that whilst G+ might instinctively appeal to geeks, the migration of the broader population could take some time. But I hope that happens, and I look forward to logging onto FaceBook less frequently in the future.
Two of My Earliest “Blog Posts”
Unfortunately the author is not cited, but I’m almost certain that I wrote these two entries for the BBC’s 1986 Domesday Project:
Happy memories.
For some background see The Story of Domesday.


















