Job: immediate start, Fife: .NET 4, VB.NET / WebForms – Go live opportunity!

Via Twitter, I have been made aware of a software development opening with a firm in Fife. They have been working on an application that is very close to completion and thus go live. They are seeking a VB.NET / WebForms developer to take this .NET 4 project through to completion. This is a great opportunity to establish a relationship with an exciting and growing company.

If you have immediate availability (and are ideally based in Fife!), please get in touch with either Phil via Twitter or myself (my e-mail address is at the top right hand side of this page) and we’ll put you in touch!

Actual (real) developers only please, no agencies.

Job: Victoria, London – FT – Senior/Experienced Middle Tier Developer C# .NET

Senior / Experienced Middle Tier Developer, Full Time, immediate start

The UK’s leading online marketing company are currently recruiting for a (primarily) web based senior .Net developer to work within our social media development team.

The roll offers an exciting opportunity to integrate into our existing development team, working on both greenfield projects and integrating social media features to our existing key products.

We work in a fast paced, exciting and friendly environment, where you will have a valued constructive input and be able to see an immediate effect from the work you do. We are continuously pushing our technical boundaries, keeping up to date with the latest technologies and using any appropriate frameworks to our advantage.

You will be working within a well structured, ‘loosely’ agile development environment, within a team of developers who have a serious passion for their work.

The successful candidate will need to have a strong skill set spanning all stages of the software development & maintenance lifecycle, with a particular flare for extracting, understanding and delivering business functionalities based on requirements from internal teams.

Key responsibilities:

  • Take a technical lead role within a team and responsibility for the technical quality of the products produced.
  • Producing effective coded solutions to business requirements.
  • Work closely with the development manager, project manager and other internal teams to understand & deliver business functionalities which drive our core products.
  • Thorough analysis for a clear understanding of business requirements, making sure that test plans are effectively applied to all new features.
  • Ensure that each project adheres to our high standards of maintainability, stability & performance.
  • Quick turn-around and intelligent phasing of features to provide benefits and results to the business as quickly as possible.

You will need to have a proven track record in working with high traffic volume Microsoft based web solutions and SOLID design principles.

Essential for this role:

  • Experience in high traffic B2B web platforms
  • ASP.Net, C# 3.0 & .Net 4.0
  • ORM
  • SQL Server 2005
  • XML
  • MVC 3.0
  • unit testing (inc. Mocking)
  • WCF


  • Social media API experience
  • FBQL
  • OAuth
  • working in a load balanced environment
  • Distributed caching
  • Online Marketing experience
  • Continuous Integration
  • Design Patterns
  • Agile

For more information please contact Paul Stack

Santander: a bunch of stupid bankers, you suck

12.05.2011 – update
After being contacted by BBC Watchdog, Santander telephoned my wife to offer an apology and £100 (cheque) compensation. They accepted that things could have been done better and the complaint handled in a shorter time-frame. Whilst we had pretty much accepted an earlier offer of £20 credited to the account card, the apology and the extra £80 were in line with my request in the a letter of complaint to Santander in January 2011. Santander’s apology has been accepted.

Santander bank has made huge inroads into the UK finance sector. Abbey National, for example, suddenly became Santander…and from what I’ve heard from at least one customer, they’re not doing too good a job of it. Similarly, I’ve read an awful lot about how Santander are at the top of list of banks that consumers complain about. As you might expect, given the title of this blog post, I am about to “add one” to that pile of complaints.

Neither my wife or I have bank accounts with Santander, however my wife does/did have an Evans store card. In their “great buy up”, Santander acquired the Evans store card business along with Asda, BHS, Burton, Dorothy Perkins, Topshop, Miss Selfridge, Wallis and Outfit. It’s likely that they’ve got the store cards for those outlets too. Some evidence of this can be found over at Martin Lewis’ Money Saving Expert forums, here and here. And they’re not getting any better, as this post suggests.

Anyway, on to the problem that Santander created on my wife’s Evans card…and thus a problem that I have to work to solve.

During November 2010 my wife received her Evans card statement. It showed the previous balance and a payment received covering that same balance. It also showed a Late Payment Fee of £12. Naturally my wife was concerned and telephoned Nikita at Santander – Nikita assured my wife that it was their error and the £12 would be refunded. Here’s a copy of the statement:

Indeed, Nikita’s information was confirmed by Santander’s Tim Woods (Head of Santander Contact Centers) when he wrote to my wife on the 23rd of November 2010:

Sounded good. Sounded like Santander might have been proactive and sorted it out themselves. Great. Mr Woods works for Geoban – “Geoban is an internal company to Banco Santander, providing Operational Excellence to the Group Companies”. Operational Excellence, can’t get better than that, we’re in good hands.

At the end of November another Evans card statement arrived. It showed that the £12 late payment fee had been refunded as promised. However, it also showed another late payment fee had been applied. My wife telephoned Santander on the 13th of December and spoke with Shiraz. Shiraz did exactly what Nikita did, assured my wife that it was their error and the £12 would be refunded. Here a copy of that statement:

Further communication from Santander resulted in my wife asking Maddie on the 31st of December 2010 to close the account. Maddie assured my wife that the £12 late payment fee and this new amount of £4 were both Santander errors and that she would sort things out. Santander’s Andrew Hall wrote to my wife. Mr Hall is the Head of Collections Contact Centre at Santander Cards UK, he’s “a highly motivated, results focused Senior Manager with extensive Consumer Finance experience. Proven skill set in people management and process and performance improvement within Collections and Bad Debt functions”. Mr Hall, you might be highly motivated, but my wife is highly demotivated…I think you could do better, don’t you?

In between Christmas and New Year, things took a turn for the worse. Santander had the cheek to send out a Notice of Sums in Arrears letter. Of course, my wife was upset enough at the first two mistakes made by Santander, this pushed her over the edge, there were tears. How can a bank be allowed to do this? And for the measly sum of £4, created by their own error. Here’s that letter:

However, early in the New Year, we received an automated telephone call at 0820 on the 2nd of January 2011 reminding us of the “debt”. I myself spoke to some Santander guy called Kirt, who said “I can’t do nothing because of the Data Protection Act” in what I believe to be a Liverpool accent…double negatives, they suck too. So clearly Maddie hadn’t closed the account as requested a few days earlier. Kirt told me that the “telephone system” can take a few days to update itself and that we weren’t to worry about it. Incredible – the 2nd of January was a Sunday. What sort of company telephones its customers at that sort of time on a Sunday?

It seems that the Late Payment Fee is something that just gets refunded and reapplied. It won’t go away until somebody at Santander pulls their finger(s) out and accepts that there is a problem they need to sort out.

All of the telephone calls that my wife made to Santander were to their 0871 number…at a cost of 10p per minute. After a little bit of searching, it turns out that 020 8181 0000 should also work, as will 0113 280 7080. I’ll be looking to recover the cost of calls from Santander -they can’t expect us to cover the cost for their mistakes.

I was planning to switch my current account over to Santander in order to take advantage of the £100 switching fee. This made sense as my current account is with a Royal Bank of Scotland (RBS) branch in England. Santander are taking over many of the English branches of RBS – I figured I would switch, collect the £100 and be in the same boat. However, this incident has taught me a lot about Santander, they’re not a bank I want anything to do with. As such, I have instigated an intra-bank switch, from my RBS branch in England, to one north of the border here in Scotland.

What’s next? Well, I hope that this blog post kicks Santander where it hurts – their stupidity and inability to rectify a simple self-made error frankly astounds me. If we make a tiny error, perhaps by going overdrawn by a single penny, the banks are the first to hit us hard. I’ve already had a short e-mail exchange with ‘’, who rather amazingly said “we don’t deal with the cards”! So now I’ve included ‘’ in the loop.

Santander has most likely cost Evans my wife’s custom. It might not have been much, however in today’s climate, all custom is good. It seems that if Santander are to improve, it will take the likes of Evans, etc. to tell them. However, the damage has been done…

Moral of this post: avoid Santander bank. If your RBS account is with a branch that is about to be taken over by Santander, start thinking about switching – use uSwitch to help you if necessary.

Survey: 3-D Secure, Verified by Visa, MasterCard SecureCode

I would like to draw your attention to a “5 click” survey that will help Anthony Bouch progress with his MSc in Information Security. You would be doing Anthony a huge favour by completing his anonymous survey!

It’s a very short survey, you don’t even have to enter any text if you don’t want to, here’s a snapshot of it:

You could use that last question to mention the fact that Amazon currently does not implement 3-D Secure, Verified by Visa or MasterCard SecureCode and that you believe they should!

It’s one thing clearing your tracks, but make sure you clear out index.dat too

Readers who are sensitive to shocking content should stop reading now – the following screenshot contains text that might offend!

I am asked on a rather regular basis to “fix” laptops and desktop. Typically they’ve started running slower or have started to automatically run applications that perform untoward actions. “Internet Security 20xx”-type of applications seem to be more common; certainly the last 5-6 laptops that I’ve been asked to fix have had some variation installed. If you’re running good anti-virus software, you don’t need anything else. If you’re browsing the web and are suddenly told “your computer is infected, click here to fix it”…it’s probably a hoax.

Today, I was invited to deal with a blue screen of death on a friend’s laptop. On the surface, it looked like it was a driver issue stemming from Nero. However further inspection revealed a sordid history!

I use CCleaner as part of my regular Windows maintenance. It’s a great application that will remove unwanted files from your PC, without actually breaking it. Fewer files on your hard drive mean that anti-virus, malware scanners, etc. can run a little faster – they’ve got fewer files to scan.

By default, CCleaner will clear any temporary internet files left behind by your browser of choice. My friend was using Internet Explorer…whilst the temporary files had been cleaned up, the index.dat file had not. If you are using Windows 7, the index.dat file can be found here: C:\Users\<>\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5 Essentially, it contains a list of the sites you’ve visited, even if you’ve cleared out your temporary internet files.

Upon inspection of the index.dat file, it was soon clear why the laptop was experiencing problems!

Busted. Next time, my friend will remember to check the index.dat box in CCleaner! I should note that this isn’t the most offensive list of sites that I’ve discovered whilst cleaning up a PC – I couldn’t bring myself to take a screenshot from that PC!

Further reading:

Browser history can help determine rebuild vs clean up, but can be revealing…
“It wasnae me” – browser history, real world example 2

DDD9 – Agenda and Session Abstracts #DDD9

DeveloperDeveloperDeveloper 9 is being held on the 29th of January 2011 at Microsoft’s Thames Valley Park campus in Reading, UK. Registrations filled up within 12 minutes – I think the only way we could better that is by throwing more hardware at it.

Thanks to everybody who submitted sessions, voted and took part in the registration process. It is worth getting on the waitlist as it’s actively managed – folks that cancel free up their place for others, there’s a queuing system in place so you can keep track of your position.

I am pleased to see a mix of new and old (as in spoken at previous DDD events!) speakers! DDD is all about community, it’s about sharing your learning experiences with your peers. New speakers are the life-blood not just of DDD events, but of user groups. DDD audiences are tend to be forgiving, new speakers are given the break they need to hone their skills and go on to delivery that second killer presentation!

There are some great topics, including a some from respected authors. A few of the sessions have been run elsewhere, which tells us how good the speaker is and how topical the session is too.

There will be two guests making appearances: Barry Dorrans (author of Beginning ASP.NET Security) and Jon Skeet (author of C# In Depth and Real World Functional Programming)

In the interests of saving the planet and keeping costs down, it’s unlikely that we’ll have copies of the session abstracts available. If you need to, please print this information and take it with you to DDD9!

I will print the abstracts out and will stick copies on the doors to the respective rooms.

09:30 – 10:30
Go Asynchronous With C# 5.0 – Liam Westley
Anders Hejlsberg announced the Visual Studio Async CTP at PDC 2010.

This CTP means you don’t need to create callback functions anymore and can write code in the same way as if it were synchronous. The compiler will do all of the heavy lifting for you.

public async void GetDDD9Sessions()
var ddd = “”;

var sessions = await new WebClient().GetSessionsAsync(new Uri(ddd));

In this session we’ll see how the GetDDD9Sessions method works and why it allows you to make a pot of tea while it runs.

More info on the Visual Studio Async CTP, including download details at:

.Net Collections Deep Dive – Gary Short
The .Net framework provides a rich set of collection classes, but how much do you really know about them? In this presentation we’ll take a deep dive into the .Net 4.0 collection classes and examine which are best for what scenario and why. By the end of the presentation, you’ll no longer be happy just reaching for the same old collection you always had before. Instead, you’ll be armed with the information required to pick the best collection for your needs.

Functional Programming in C# – Oliver Sturm
C# introduced a number of language features that finally make it very easy to employ a functional style of programming. However, from the perspective of an imperative programmer, there are lots of questions surrounding functional programming. Why would I want to do it at all? Should I drop all state information in my apps? What useful functional patterns are applicable to C#? This session uses many practical examples and some theory to answer these questions, and it requires a good understanding of C# 3.0 language features.

AJAX with jQuery – George Adamson
Getting started on AJAX with jQuery:
We’ll hurtle straight into using jQuery to handle your AJAX; Rummage about in code, ‘hijaxing’ links and doing fashionable things like Progressive Enhancement; JSON and JSONP; solutions to get around the ‘Same Domain Policy’. We’ll work through a bunch of examples to POST and GET data from various sources. If there’s time we’ll explore more of jQuery’s AJAX methods and events and maybe even look at live ajax event handling in large single-page apps.

George’s presentation style is entertaining and leaps along at quite a rate. (If you’ve attended George’s Get Going with JQuery session then you have an idea what you’re in for.) There will be a few minutes’ refresher on jQuery basics then it’s non-stop AJAX. Some experience with JavaScript will help but if your world is C# and curly brackets then I’m sure you’ll be as happy as a pig in, er, shift+]

10:40 – 11:40
Monads! What are they and why should I care? – Mike Hadlow
Or: How to bend Linq syntax to your will.

These days, monads are the “celebrities of programming language theory”. But they also inspire fear in the hearts of lowly imperative programmers like myself. However they are a very useful and powerful abstraction and they pop up everywhere. C#’s Linq syntax is Monadic, for example. Having an understanding of Monads will give you the conceptual tools to greatly simplify many programming challenges, from dealing with nulls and managing state, to asynchronous programming and parsing. This talk will be mostly C#, but I will also be introducing a little F# and even some Haskell.

Real World Application Development with NHibernate, FluentNHibernate and Castle Windsor – Chris Canal
In this session we will look at how we can use a number of popular .Net OSS projects to develop a real world application. Based on production code, we will look at how using a combination of NHibernate, FluentNHibernate, Castle Windsor and a number of other OSS (AutoMapper, MvcContrib, FluentMvc) to reduce the friction of application development and remove a lot of infrastructural concerns. We will explore how we can leverage these tools to drive a convention based development experience and make it easier for ourselves and team mates to write applications and deliver what the client wants.

CQRS, Fad or Future? – Ian Cooper
Command-Query-Responsibility-Seperation (CQRS) is the new ‘hotness’ but beyond a desire to use the latest ‘fad’ what might actually lead you to adopt this approach over a conventional layered architecture. We will look at the business drivers behind command and query separation as well as a technique known as event sourcing. We will also look at steps to begin moving your application to CQRS

Rewriting software is the single worst mistake you can make – apparently – Phil Collins
Joel Spolsky once said that rewriting software from scratch is the single worst strategic mistake a software development company can ever make.[1] We all know of the Netscape story and the never-released v5.0. So as a developer how do you react when you’re faced with the fact that there is little other choice than do exactly what you’re told you should never do.

During this session I will describe how as a team we are managing to beat the odds and rewrite our main flagship product from a legacy platform into; as well as describing the decisions behind the choice of language, the choice of development methodology, how we built the project plan, how we learnt from our mistakes and our successes, how working with Bournemouth University and their study of our rewrite has helped us, and whether or not we still think it’s something you should never do.

[1] Joel Spolsky, Things You Should Never Do, Part I

12:00 – 13:00
A Primer to RavenDB – Rob Ashton
RavenDB is a relatively new document database written by Ayende Rahien as an open source .NET project.

This is quite exciting as it means a focus on being able to talk to a document database with your chosen .NET language and support for writing custom map/reduce functions in your chosen .NET language too.

This means up front queries written using familiar LINQ syntax, and the ability to write plug-ins for RavenDB in a familiar environment.

In this session, I aim to give an introduction as to what RavenDB is, how to use it, and give a brief comparison to the other popular NoSQL projects that have appeared on the .NET scene in recent times.

Functional Alchemy: Tricks to keep your C# DRY – Mark Rendle
C# 3.0 and LINQ have made anonymous delegates and closures a hot topic. C# 4.0 improves on them. But these “functional” features have applications beyond messing about with IEnumerable. In this session I’ll present 10 simple and not-so-simple uses of first-class functions to help cut down on repeated code and improve maintainability; hopefully you’ll discover a new and exciting way of approaching coding problems.

The main thrust of it is that F# is cool and groovy but there’s a lot of mileage in functional-style programming in C#, which people are using every day, so let’s look at some cool examples there.

Learning from the HTML5 Boilerplate – Dan Maharry
The best place to start your development is on solid foundations and in the web world, that means with a sound knowledge and understanding of HTML and script and those little browser quirks and tweaks which mean you can wrestle the best performance once server-side code has done its job. This session looks at the HTML5 Boilerplate project, the tips and tricks we can learn from it (cross-browser normalization, performance optimizations, even optional features like cross-domain Ajax and Flash) and suggests some additions we can add to it on the server-side.

Writing Maintainable Tests for Selenium – David Burns
Selenium is one of the most widely used testing frameworks in the world. It has great support for driving a wide range of browsers and writing tests for it is extremely easy. People with little to no Selenium experience can write/record tests with little to no effort.

It can be very easy to write brittle or hard to maintain tests – simple UI changes can require large amounts of work on the tests.

Imagine that you have 1000 tests and all your tests require you to login before completing a bit of work.

If someone on your team changes the ID of the username text box and all your tests will start failing.

Updating 1000 tests is going to be a lengthy, tedious process – something that you would want to avoid!

This talk will show how to create maintainable Selenium tests using the Page Object Model, with the goal of allowing even non-technical members of the team to be able to write new tests.

14:00 – 15:00
What’s New In ASP.NET MVC 2.0 and 3.0 – Andy Gibson
ASP.NET MVC has been making waves over the past 2 years within the ASP.NET community and quite rightly so with features such as promoting separation of concerns, strongly typed views and a great routing system but it doesn’t stop there. ASP.NET MVC 2.0 is now publicly available and is also being shipped with Visual Studio 2010 and hot on its heels is version 3.0 which adds Microsoft’s new Razor view engine to the mix. But what new features have been brought to the table? What has changed? And most importantly, how will you be affected by upgrading from 1.0 or even 2.0?

This session will bring you up to speed with all the information you need to know delivered through slides and more interestingly, live demos. Topics covered include (but not limited to)
– Razor
– Model-Validator Providers
– Optional URL Parameters
– Template / HTML Helper improvements
– Improved Dependency Injection / Inversion of Control integration
– NuGet Package Manager
– Additions and updates to MVC Attributes
– Visual Studio integration improvements
– Breaking changes from MVC 1.0/2.0
– Pros and cons to MVC
– To upgrade or not to upgrade (or simply, Advice)

We will look at features brought in by both v2.0 and v3.0 of the MVC framework and provides a good source of information for those looking to learn more or to upgrade existing projects.

Is your code S.O.L.I.D ? – Nathan Gloyn
Everybody keeps on about SOLID priniciples but what are they? and why should you care?

In this session I’ll aim to walk through each prinicple telling you about that prinicple and examing why you should use it.

Once we’ve talked about the principle in theory we’ll look to how we can put it into practice.

Behavioural Driven Development (BDD) with F# – Phillip Trelford
BDD is an Agile methodology that aims to get business and development folks collaborating.
F# is the powerful new programming language from Microsoft bundled with Visual Studio 2010.
Use both to test your .Net code for fun and profit!

Scenario: Deliver customer value
Given collobaration with customers to produce user stories and acceptance tests
And some awesome .Net code
When a BDD framework that executes plain text specifications like SpecFlow or TickSpec
And F# to write the tests
Then profit!

Writing tests with F# is a great way to learn the language, this talk will take you through common steps with live code examples.

Computer, earl grey tea, hot – John Price
Ok, so this is a little more difficult to arrange with home automation, but controlling lights, heating, curtains and just about every other device in your house just by talking to it, is actually Science Fact. Take a tour around our automated house and see whats possible with a little effort.

15:10 – 16:10
CSS is code, how do we avoid the usual code problems? – Helen Emerson
CSS has a lot of the same problems that application code has but none of the language features that help us keep out of trouble. Start writing anything complicated and you end up with problems like dependencies, cohesiveness and creating the right abstractions. It’s pretty easy to end up with CSS that is impossible to predict unless you understand it all. I’m going to tell the tale of my team’s journey to write CSS that is flexible, easy to understand and easy to change.

From .NET to Rails, A Developer’s Story – Colin Gemmell
In May 2010 I changed jobs, leaving the land of .NET to the world of Ruby on Rails. In this talk I will go over what I found easy, hard or just completely misunderstood when starting with Ruby and Rails. While focusing on my experiences we will also look at the differences between .NET development and Ruby development.

Expression Blend for WPF and Silverlight Developers- Sam Bourton
Not many WPF/Silverlight developers are using Expression Blend yet; but those that are, couldn’t do without it…

In this fast-paced talk and demonstration I will be showing how to use Blend in your everyday design and development tasks to rapidly create visually engaging User Interfaces and controls, and dramatically increase your productivity in building WPF/Silverlight front-ends.

We will cover real-world practical tasks such as: How to use the Blend environment, access key functionality, and use the different types of controls; Create and manage Resources and resource dictionaries within Blend; Create, edit, and apply Styles and Control Templates to different controls; Bind controls to sample and runtime ViewModel data and Commands; Make your applications stand out with Animations, Visual States, Effects, Fluid Layouts, and Behaviors; and some random tips and techniques I’ve learnt along the way.

While the presentation is targeted at developers with WPF/Silverlight experience who have not yet gotten to grips with Blend, if you’re new to WPF/SL it will be a great introduction, and if you’re familiar with Blend already then hopefully you will pick up something new.

Enforcing Code ‘Beauty’ With StyleCop – Guy Smith-Ferrier
n May 2008 Microsoft released StyleCop. StyleCop does for C# source code what FxCop does for assemblies – it applies ‘good practice’ rules to your source code. This means all those controversial code beauty issues like spaces, where to put curly braces, how and when to use blank lines and over 150 similar rules. This session gets you started using StyleCop, investigates a selection of rules, shows how to integrate StyleCop into Visual Studio and your build process and finally shows how to write your own custom rules. This is a low tech session on an essential tool that all C# developers should be using.

16:20 – 17:20
Beginners Guide To Continuous Integration – Paul Stack
As developers who work in a team, we need to continually make sure that code we check in to source control works integrates with our existing code. In order to do this we need to get feedback from user check ins. If we don’t test code integration how do we know that our code still works?
CI processes and CI tools can help us to do this in an effective way. In this session I will cover

  • Benefits of CI
  • Different types of CI tools
  • Tips on choosing the right CI tool
  • CI as a form of feedback to development teams
  • CI as a tool for release preparation

Developing Windows Phone 7 Applications using Silverlight – Kris Athi
This session will look at using Silverlight as your weapon of choice to target the Windows Phone 7 platform. This session will focus more on the platform specifics including:

  • Theming
  • Input & Navigation
  • Push Notifications
  • Location Service
  • Connected Apps (WCF)
  • Lifecycle (Tombstoning etc)
  • Launchers, Choosers

We will also take a look at how to architect an application using the MVVM design pattern.

Introduction to PowerShell – James Boother
So you’ve heard SysAdmins and DBAs discuss PowerShell but you’re not sure what it is or how to use it. Powershell is a powerful scripting engine that can be used to automate admin tasks making more efficient use of your time. This session will introduce Powershell so that you can add it to your toolbelt. I’ll discuss some general admin tasks that can easily be automated with PowerShell and look at some developer specific tasks that can benefit from PowerShell knowledge.

Mobile Panel – From iPhone to HTML 5 to Windows Phone 7 to Android – Chris Hardy
A mobile panel featuring some of the top mobile application developers in the UK. Should create some interesting discussions!