Richard Banks' Blog

Software Development and Agility

One Year of Podcasting

When I announced the Talking Shop Down Under podcast back in February earlier this year I wasn’t really sure what would happen.  I didn’t know if I’d be able to find enough people to talk to, wether I could keep up an (almost) weekly broadcast schedule and do it on a shoe-string budget, or even if... Read more

A (not so serious) C# 5.0 Language Suggestion

Occasionally I run across less then optimal code as part of my day-to-day work, as do most people who deal with legacy code bases.  Even if your code is pure as the driven snow, if you’ve ever spent any time looking at the Code Snippet of The Day on the Daily WTF then you’ll have seen... Read more

Udi Dahan at Sydney Alt.Net

Last night at the Sydney Alt.Net group we had Udi Dahan for an open Q&A session where he talked about systems design and NServiceBus.  The session was live streamed at the time, and the now the recording is available for posterity. Watch live streaming video from rbanks54 at livestream.com Enjoy! And don’t forget to subscribe to... Read more

Needless If Statements

I was looking through some code today and came across this: context.HttpContext.Response.Clear();if (ImageFormat.Equals(ImageFormat.Bmp)) context.HttpContext.Response.ContentType = "image/bmp";if (ImageFormat.Equals(ImageFormat.Gif)) context.HttpContext.Response.ContentType = "image/gif";if (ImageFormat.Equals(ImageFormat.Icon)) context.HttpContext.Response.ContentType = "image/vnd.microsoft.icon";if (ImageFormat.Equals(ImageFormat.Jpeg)) context.HttpContext.Response.ContentType = "image/jpeg";if (ImageFormat.Equals(ImageFormat.Png)) context.HttpContext.Response.ContentType = "image/png";if (ImageFormat.Equals(ImageFormat.Tiff)) context.HttpContext.Response.ContentType = "image/tiff";if (ImageFormat.Equals(ImageFormat.Wmf)) context.HttpContext.Response.ContentType = "image/wmf";You’ve all seen this sort of thing before, right? And no doubt it’s cousin, the switch statement,... Read more

How to Build Linux Code with TFS 2010 Team Build

With the release of Team Foundation Server 2010 and Team Explorer Everywhere Microsoft extended the reach of TFS beyond just the Microsoft ecosystem and provided a way for people doing Linux and Mac development to use TFS to meet their Application Lifecycle Management (ALM) needs. Whilst TFS works great for source control and work items for... Read more

How to Use CodedUI Tests, Watin and MTM Together

A customer I’m working with has placed a heavy investment in Watin testing over the years and with a recent move to TFS2010 they also wanted to take advantage of the new Microsoft Test Manager (MTM) feature and the ability to associate automated tests to test cases in MTM.  Here’s a quick how-to for those of... Read more

How To Stop Users Creating Work Items In TFS

I regularly get asked if there is any way to prevent users creating certain types of work item in TFS – the most common scenario being stopping people who are using the work item only view from creating anything other than bugs. TFS still doesn’t let me hide blocked work item types from the users in... Read more

Why does Git Merge Work Better than TFS Merge

The question came up during a discussion on our internal mailing list as to why Git’s merge is seen as better than the TFS merge.  What better way to explain it than via a worked example: TFS Example Consider the following solution in TFS: Now let’s branch it for two different teams.  Team A and Team... Read more

Visual Studio and Deja Vu

This a post about fonts, not echoes of memories, just in case you’re wondering.  Now, let me say from the outset that I like Consolas and think it’s a great font, but almost everyone I know who uses Visual Studio does so using either it or one of the other fixed width fonts supplied with windows.... Read more

Is The Way Hiring Happens Changing?

For those who don’t know (or just plain forgot) I run a weekly podcast for developers at http://www.talkingshopdownunder.com and in one of the episodes I talked with Matthew Wills about an idea I blogged about – the Developer Experience Index and wether we need one or not to improve the way we find and hire talent... Read more

How To Fix Branches After Migration to TFS2010

Let’s say you’ve just migrated your code from another version control system to TFS2010 by grabbing the old code, copying it into your workspace as is, and then checking it in to TFS as a single massive import.  It’s a really easy and common way to do tip migration. When you do this, you will notice... Read more

Aw, Snap! (or How I got Hacked)

So there I am surfing the web and catching up on some blogs and news when I notice my Skype icon blinking away at me in the windows taskbar.  Hmm, someone’s sent me an IM, thinks I only to discover that Skype logged me out. That’s weird I say to myself.  I guess I’ll just log... Read more

TechEd Australia 2010

I’ve been quiet the last few weeks due to TechEd Australia coming up and my need to actually put together a session that flowed nicely, as well as getting through all the usual client work and so forth that was needed.  Well, actually I was quiet on the blogging front, my tweeting continued as per usual... Read more

The Developer Experience Index

I’ve been musing on developer skills, certification rorts, hiring, and a whole lot more recently and I’ve been thinking that it’s about time we had something akin to the Windows Experience Index, but for developers – what I’ve whimsically titled the Developer Experience Index.  A representation of a persons skills and abilities in various areas of... Read more

How to Build VB6 Apps with TFS Team Build 2010

So you’ve got yourself a nice, shiny, new TFS 2010 server and you’re using its build automation features to build your .NET code but you also have some, shall we say it, “legacy” VB6 code laying around that you have to keep alive.  You’ve retired source safe and installed the MSSCCI provider TFS 2010 so TFS... Read more

Mocking Comparison – Part 12: The UnMockables

The frameworks we’ve been looking at in previous parts only work well when they can override the properties of the classes you wish to mock, or when you use interfaces. So what happens when you need to deal with a test that is time dependant, or if you want to verify data being written to the... Read more

Mocking Comparison – Part 11: Multiple Interfaces

Continuing with our comparison of Rhino Mocks, Moq and NSubstitute we have a look at a little used feature in mocking being the ability to generate mocks that implement multiple interfaces. Why would you do this though? Well, that’s a good question.  Simple example would be when your class under test expects and object to implement... Read more

Mocking Comparison – Part 10: Events

So far in our comparison we’ve been looking at mock objects as if they were much like any other object, but what happens when we want our mocks to either raise or subscribe to events? If you’re testing how your class under test reacts when it receives an event, or want to know if it raises... Read more

Technical Debt in Scrum Teams

On a mailing list I’m on there was a thread recently about dealing with technical debt in a scrum team.  One of the responses went something along these lines (paraphrasing a bit here) For delivering functionality you should use stories, but for technical debt don’t.  All teams accumulate technical debt and dealing with it doesn’t fit... Read more

Viemu and Visual Studio 2010

If you’ve been keeping your ears open over the last few months you’ll have heard noises from a number of folks who have been talking vim up as a replacement editor. On the other hand there have been people like Yehuda Katz claiming that it’s all hype and everyone should go back to their homes and... Read more