Here We Go Again

2

12-week scan

Available Again For Contract Work

0

Are you plagued by bad code smells?

Man frustrated at computer

Troubled by slow-running database queries and ETL routines?

Couple bored of waiting for computer

In need of some scalable and maintainable enterprise integration solutions?

Young guy tangled in cables

Look no further! As luck would have it, legendary Leeds-based freelance software developer Ian F. Nelson is now available again for contract opportunities. Fresh from a 42-week stint at the Health and Social Care Information Centre where he played a major part in developing a suite of distributed systems to facilitate the expansion of a national programme to calculate health gains after surgical treatment, Ian Nelson is on the market again, and available now to help your team deliver the system of your dreams!

Just take a look at the out-of-the-box features you can expect from an Ian Nelson:

  • Freelance Professional Software Developer with 14 years’ experience across the full product lifecycle.
  • Strong proven skills in database design, domain object modelling and enterprise integration techniques.
  • Hands-On Coder with a penchant for developing maintainable, loosely-coupled OO architectures.
  • Effective client-facing skills; has led analysis, design and development of successful high-profile projects.
  • Confirmed Agilist and exponent of test-driven development, continuous integration and deployment.
  • Microsoft Certified – Professional Developer (Enterprise Applications), Technology Specialised in SQL Server and Business Intelligence.

Languages, technologies and methodologies used will be subject to natural variance from project to project; however the core technical skills you can expect to see an Ian Nelson leveraging will include:

  • C# (1.0 – 4.0), including lashings of lovely LINQ.
  • .NET Framework (1.0 – 4.0)
  • ASP.NET, MVC, OpenRasta
  • REST, WCF, SOA, MSMQ
  • WPF, MVVM, Prism
  • Workflow Foundation
  • SQL Server (7.0 – 2008 R2)
  • ETL, SSIS, SSAS, SSRS
  • Oracle Database (8i – 10g)
  • NHibernate, Fluent NHibernate, NHProf
  • OOP, Design Patterns
  • DI / IoC (Castle Windsor)
  • Git, Subversion, Vault, TFS
  • TDD (NUnit, xUnit, MSTest, NCrunch)
  • BDD (MSpec, SpecFlow)
  • Mocking (Rhino Mocks, Moq)
  • Agile (SCRUM, Kanban, XP)
  • Continuous Integration and Deployment

Marvel! As user stories fly across the kanban board.

Shocked businessman can't believe his eyes

Cheer! As a test-driven approach results in an astoundingly low defect rate.

Cheerful businesspeople looking at the report

Party! As projects come in on time and on budget.

Business people raising champagne glasses

Don’t just take our word for it! Listen to the experiences of other satisfied customers:

Ian is one of the most hard working and professional individuals that I have had the pleasure to work with. His methodical approach allows him to digest the problem put before him prior to making a reasoned and rational suggestion. Ian’s development skills and knowledge were able to cope with every challenge, identifying one or more solutions for every scenario that I put forward as Product Owner. This then allowed me to then pick the best solution for the project.
Ian is a consummate team player and worked efficiently and effectively with the other members of the development team. He always made himself available for me to ask questions to help me understand the technical aspect of a story.
Ian’s expertise and problem solving skills have helped to drive the project forward and I am extremely grateful for the contribution that he has made. He will be greatly missed, not just by me, but by the whole of the team.

– Robin Hackshall, Senior Information Analyst, Health and Social Care Information Centre

Ian is able to take high-level business requirements and swiftly design and produce a set of solid, scalable, and efficient systems, and with meticulous attention to detail.
Ian’s grasp of agile tools, design patterns, and NHibernate in particular are masterful, and I would recommend him without hesitation.

– Ashfaq Hussain, Freelance Application Developer, Health and Social Care Information Centre

Impressed how quickly you’ve done this. Take the rest of the week off.
– Giles Foster, Principal Information Analyst, Health and Social Care Information Centre

Ian is a SSIS Magician!
– Paul Campbell, Director, Decorated World

Ian worked on a particularly troublesome project for me for eight months at NHS Choices without complaint. His development skills and knowledge are exemplary and his NHibernate knowledge is second to none. He worked well with all the members of the team and helped me to introduce pair programming and push the test driven development agenda. I will employ Ian whenever I have the chance.
– Nick Porthouse, Development Manager, NHS Choices

You’re good at solving problems, Daddy.
– Ben Nelson (aged 4)

More testimonials can be found at http://iannelsonsystems.com/testimonials

Every Ian Nelson arrives fully charged and ready to code, with no batteries or assembly required. Ian Nelson functions effectively in any agile development environment, integrating seamlessly with your existing team members, from the pickiest of testers to the prickliest of DBAs.

Ian F. Nelson - on a box!

But that’s not all!

Order today and your shiny new Ian Nelson will arrive complete with his own coffee, index cards, kanban avatar, Pukka pad and high-powered eight-core Dell Precision laptop, installed with fully licensed development software and ready to cut high quality test-driven code before you can say “how about a nice game of Planning Poker Dr Falken?”

If you owe it to yourself, your project and your stakeholders to deliver the most effective, bug-free, performant, scalable and maintainable solution possible, then you need an Ian Nelson on your team. But remember – this offer is not available in the shops! Don’t delay – call today! Our trained operators are waiting to take your call…

07901 828483 - ian@iannelsonsystems.com - http://iannelsonsystems.com

A Personal Stack Overflow Milestone

2

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

0

Courtesy of Google Analytics, here are my top 10 most-read blog posts from 2011:

Posts published in 2011 only:

  1. Entity Framework Week Part 2: Conventions and Fluent Mappings (8 March)
  2. Entity Framework Week Part 1: Introduction, Configuration and Initialization (7 March)
  3. Entity Framework Week Part 4: Features and Further Investigations (10 March)
  4. Entity Framework Week Part 5: Concluding Thoughts (11 March)
  5. Entity Framework Week Part 3: Runtime Issues Encountered (9 March)
  6. Google+ – By Jove, I Do Believe They’ve Got It (7 July)
  7. It’s A Small World (9 April)
  8. Password Management for Mortals (28 August)
  9. American Express Statement Download Functionality (19 September)
  10. Schoolboy Error of the Day (17 August)

All Posts:

  1. Team Foundation Server – Sharing Binaries and Class Libraries Across Multiple Projects (17 March 2007, Last Year #1)
  2. A Serializable KeyValuePair Class (17 September 2006, Last Year #2)
  3. Entity Framework Week Part 2: Conventions and Fluent Mappings (8 March 2011)
  4. Spot The Misleading Graph (19 February 2007, Last Year #3)
  5. Is My String Empty? Some C# Performance Metrics (30 July 2004, Last Year #4)
  6. Postcode Validation (23 May 2007, Last Year #5)
  7. TFS: Using Alternative Diff/Merge Tools (19 May 2009, Last Year #8)
  8. MSB3247 – Dependent Assembly Conflicts (4 December 2008, Last Year #6)
  9. WCF – NHibernate Unit of Work Behavior (9 April 2010, Last Year #9)
  10. An MVC Gotcha and the PRG Pattern (9 April 2010, Last Year #14)

What I’ve Been Listening To In 2011

0

Courtesy of Last.fm, here’s what I’ve been mostly listening to during the last year:

Artists:

1. Mogwai
2. Manic Street Preachers
3. R.E.M.
4. Arcade Fire
5. British Sea Power
6. Belle and Sebastian
7. Morrissey
7. The National
9. The Beautiful South
10. Gene

Albums:

1. Arcade Fire – The Suburbs
2. Belle & Sebastian – Write About Love
3. R.E.M. – Collapse Into Now
4. The National – High Violet
5. Mogwai – Hardcore Will Never Die, But You Will
6. The Twilight Sad – Forget The Night Ahead
7. The Decemberists – The King Is Dead
8. Manic Street Preachers – Lipstick Traces
9. Britiish Sea Power – Valhalla Dancehall
10. Manic Street Preachers – Send Away The Tigers

Tracks:

1. The National – Conversation 16
1. Belle & Sebastian – I Can See Your Future
3. Håkan Hellström - En vän med en bil
4. Elliott Smith – Angeles
4. The Shins – Turn On Me
4. The Temper Trap – Down River
7. Benoît Pétré - Trouble Maker
7. The National – Anyone’s Ghost
9. Stephen Malkmus – Jenny and the Ess-Dog
9. Jack – Lolita Elle
9. Maxïmo Park - Questing, Not Coasting
9. The Decemberists – June Hymn

Some observations:

  1. The three artists I listened to most during the last year were also three of my favourite artists when I left university, fourteen years ago.
  2. The two albums I listened to most during 2011 are identical to those I listened to most during 2010.
  3. Perhaps I should make better use of my Spotify subscription to discover shiny new music, rather than simply listening to the same old stuff I’ve been enjoying for decades.
  4. The shiny new music that I have stumbled upon during the year has generally reached my ears via personal recommendation on Spotify/Twitter/FaceBook (thanks @rgarner, @johnconners!) or by computerised recommendation algorithms (thanks Spotify, Last.fm!) rather than through traditional sources (sorry, radio!)
  5. I do like my melancholy songs, and/or those that tell a story.
  6. Mogwai have still got it. With every record, they get better at being Mogwai.

American Express Statement Download Functionality

2

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.

Phonics

0

Hmm, so I see with interest that English five and six-year-olds are going to face a new reading test next summer. They will be asked to “read” a list of twenty made-up words “to check whether children can use their knowledge of phonics to de-code or work out words.”

I wonder if the list of pseudo-words will include ghoti?

Wacom Bamboo

1

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:

Wacom Bamboo

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.

Ben’s First Day At School

1

My little pumpkin started school today.

I couldn’t be more proud.

Isla, Rabbit, Daddy and Ben

Ben, Isla, Rabbit

Ben and Mummy

More photos are available via this Flickr Guest Pass. Feel free to add me as a Flickr contact to see thousands more.

Someone Send swiftcover.com’s Marketing Team a Calendar

0

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:

swiftcover

Page 1 of 8612345»102030...Last »