ASP.NET Just Became a Legacy Platform

One of the least surprising but more significant announcements to come out of Mix ‘09 last week was the general availability of ASP.NET MVC 1.0. The development process for this framework has been very transparent, with no fewer than eight previews, betas and release candidates made available over the past year or so. Microsoft are being careful to tout ASP.NET MVC as being “an alternative, not a replacement, for ASP.NET Web Forms”, but just look at their list of some of its benefits: ...

22 March 2009

Zero Interest Bug Arrives

So, base rates are now down to 1.0%, and the Zero Interest Bug is not just conjecture. From The Times: “About 1,500 customers who took out a tracker mortgages pegged at 1.01 points below the base rate with Cheltenham & Gloucester (C&G), owned by Lloyds Banking Group, will be paying no interest at all on their home loans from next month. It is the first time that a mortgage lender has been forced to reduce the interest on their home loans to zero. Lloyds Banking Group, now 43 per cent owned by the taxpayer and also the owner of C&G, said that there was a zero floor to the deal and that because its computer systems could not cope with zero, it would be temporarily charging 0.001 per cent, or 8p a month for a borrower with a £100,000 mortgage. However, that money will be refunded.” ...

5 February 2009

NDepend

OK, dear readers, today I’d like to talk about tools. Software development isn’t really so different from traditional skilled crafts in that it is important to have an understanding of the tools available to help you create a quality products in the least amount of time possible. For .NET developers, the Visual Studio IDE is usually just the starting point, and most of us will come to rely on some of the tools listed in Scott Hanselman’s famous tools list. Personally, I can’t imagine coding without first installing Refactor Pro, editing text files in anything other than TextPad, or working on a machine that doesn’t have Snag It installed. ...

4 February 2009

.NET Coding Standards

Sometimes, when you join a new team as a .NET developer, the team lead proudly points you in the direction of a Word document or wiki page detailing the team’s house coding standards. In my experience, these documents are invariably: Incomplete. Subjective. Not enforced. Largely copied from the interweb. Obsessed with the trivial (e.g. whitespace) while failing to mention the genuinely useful (e.g. boxing/unboxing, avoiding use of deprecated classes, Dispose pattern, etc). I know this because I’ve been involved in creating such documents in the past 🙂 ...

23 January 2009

SQL Server Point-in-Time Restore

One of the multiple hats that I’m currently wearing for a client is that of SQL Server DBA. In this guise, I have recently fielded a couple of email queries from users concerned about the data recovery options available to them, should application data be inadvertently deleted: “What kind of database backup and restore mechanism is in place for [application]? If someone deletes any data from [application] front end is it possible to restore it? Generally the way to recover data would be to restore the database from a database backup file, however this would restore all data held in the backup and would overwrite any changes made since the time of the backup.” ...

23 January 2009

On 64-bit TFS, Virtualization, and Conchango SCRUM

Earlier this week I picked up a hire car and headed over to deepest Cheshire to install an instance of Team Foundation Server 2008 for a client. Before setting off, I tried to make sure that all the prerequisites were in place – i.e. that there was a suitably-specced server available for use, which was connected to the domain, that all the necessary service accounts were created, and firewall ports opened, etc. ...

23 January 2009

Zero Interest Bug

I started my career in professional software development a decade or so ago by testing and fixing banking code that had fallen victim to the millennium bug. Could the prospect of zero percent interest rates create a similar boom in demand for software developers? From Contractor UK: Interest rates have plummeted from 5% to 2% since early October and are heading lower. Some analysts say 0% is not out of the question. ...

19 December 2008

MSB3247 – Dependent Assembly Conflicts

Earlier today a dev came over to ask me about a compiler warning he was getting when building a .NET solution: MSB3247: Found conflicts between different versions of the same dependent assembly. This is basically telling you that one project or dependency in your solution is referencing one version of an assembly, whilst another project or dependency is trying to reference a different version of the same assembly. Unhelpfully, the message and build output don’t tell you which dependent assembly is causing the problem! ...

4 December 2008

Performance of Loops on Collections

Interesting article from Patrick Smacchia (the NDepend guy) in which he runs some benchmarks on the cost of looping in different ways over different constructs and comes to the conclusion that: “looping on array using for is 5 times cheaper than looping on List<T> using foreach (which I believe, is what we all do)” Well worth a read, although I suspect that in my solutions the bottlenecks will remain the out-of-process calls, i.e. database access and web service calls. Still, a 5x gain is not to be sniffed at. ...

28 November 2008

12 Reasons Why I Love Unit Tests

On my continuing journey through this thrilling world of professional software development, I frequently encounter teams who hold no truck with this crazy new-fangled concept of unit testing. Heck, truth be told, I sometimes come across teams who don’t use source control, but that’s by the bye. In these situations, I try my best to lead by example, continuing to practise TDD on any new code that I cut, and insisting on covering with unit tests any pre-existing code which I have to modify. Sooner or later, this prompts someone to ask why I am doing this (often insinuating that I am wasting my time, and by implication the client’s money). At that point, flustered, I invariably struggle to remember or adequately articulate the many and various ways in which unit testing makes me a better developer. So, consider this blog post a personal aide-mémoire to help me the next time this occurs (as well as being a homage to Jake Shillingford’s second-best song). ...

11 November 2008

A Keyboard Makes A Hell Of A Difference

It occurred to me recently that I’m not getting any younger, and that sitting hunched over a keyboard for a dozen hours a day will probably lead to some form of RSI sooner or later. So I started looking for ways to improve my daily working environment. Unlike John, I can’t afford a Herman Miller chair, and even if I could, I’m a freelancer rather than a telecommuter1 so I would have to regularly carry the chair on the train to client sites, where they would probably ostracise me for being a weirdo who brings his own chair to the office. So I looked for something a little more portable, and decided that perhaps it was finally time for me to try one of those fancy split ergonomic keyboards that I’ve always scoffed at. After reading a few review on Amazon, I plumped for the Microsoft Natural Ergonomic Keyboard 4000. ...

1 August 2008

Database Design – Still Important In These ORM-Obsessed Days

Tobin blogged earlier this week about how quality ORM tools like NHibernate make it easier to code to normalized schemas. Here’s a corollary for you: The use of ORM tools doesn’t absolve the need to maintain good database design principles, and even NHibernate won’t save you from your own stupidity. Following an application upgrade release last night, I’ve spent a disproportionate amount of today trying to debug the following exception, which appeared to originate in an area of the codebase which I personally had heavily modified: ...

29 July 2008

Remember The Milk

In response to a blog post that I’d shared in Google Reader, Jez emailed me to ask: “Do you use RTM? It’s always been one of those web apps that seem really useful, but I’ve never made the leap to actually using it in anger. I suppose you need to adopt it in tandem with the five-point GTD philosophy to get real benefit?” My response: “Yes, I do use RTM, and I love it. I’ve been looking for a decent way of managing my to-do lists effectively for years, and RTM really scratches that itch! I now have the web app permanently open in a Firefox tab, and use “MilkSync” to synchronize with my Pocket PC every half hour. ...

26 June 2008

On the Joys of Object-Relational Mapping

My name is Ian Nelson. I’m a recovering SQL addict. It’s been four weeks since my last stored procedure. One of my reasons for leaving my cosy permanent job and entering the scary cut-throat world of freelancing was to get a broader exposure to different tools, technologies and methodologies, while remaining with my feet planted firmly in the .NET universe. So, when I got offered a position in a team who were using Subversion, Monorail, Ext.JS, NUnit, Oracle and NHibernate, I jumped at the opportunity. ...

9 April 2008

Inside Microsoft SQL Server 2005: The Storage Engine

During 2007, I unexpectedly achieved a long-held ambition by increasing the number of books I regularly read (as opposed to merely buying, then leaving them to languish on the bookcase!). I read plenty of techie books of course, but also made use of local libraries and devoured plenty of books on other subjects, and even found time for some fiction. I think having a young baby in the house was partially responsible for this achievement – not much else to do of an evening any more! ...

5 January 2008