Concept First Blog

IT consultancy, web development, data analysis and application development

There Has Got to Be a Better Term Than Technical Debt

Technical Debt is a common term used in IT circles, and a useful metaphor when discussing planning and tradeoffs (although too often I fear management don’t understand the interest repayments side of it)

Want I want is a term that is more easily understood by non technical business users and management, something which says to them “Your half considered last minute must have change is going to leave the system in a right bloody mess, and its going to take lots of time and effort in the future to clean it up”, but in a nice punchy phrase.

Any ideas ? Some word to do with foundations, rotting, derelict, decay, structurally unsound, negleted, condemned ?

Windows Needs Docker

I’ve been using Docker a lot recently when setting up our Linux main server. If you’ve never used it is, I highly recommend it. It is a way of compartmentising your software. You run software in its own docker containers, they share the same machine, but are isolated from each other, can have different versions of common dependancies (like dlls).

Its like have lots of VMs running, without the massive overhead of running virtual machines.

It’s built on Linux kernel features that allow processes to be isolated from each other (having their own network stack, etc) and union file systems that isolate the file systems efficiently from each other.

Microsoft Windows really needs this. Every client I’ve worked with ends up having loads of Windows servers, all running at 1% utilisation, just so everything is isolated, and that one version of SQL Server won’t break another version, or that the latest version of the C++ runtime breaks a product you bought 3 years ago …

Unfortunately the Win32 API doesn’t have the features to implement it presently, and the Jobs API that looked like it could be the way to go, seems recently to have been depreciated and not fully supported in each version of the OS (just search stack overflow for all the problems).

Lets hope Microsoft feel the pressure from Linux on this, but they probably too busy relaunching Bing or rebranding Windows Phone 7.5 Embedded Mobile CE to notice.

Seriously It Depends!

I recently watched the discussions between Kent Beck, Martin Fowler and DHH, on Is TDD dead?.

The discussions are fine, but the problem is one that all analysts are familar with, It Depends. DHH writes relatively simple end project management SAAS tool, Fowler works in much more complex business environments, and Kent deals with infrastructure at Google. Is it really surprising that they have different opinions on how and when to apply to TDD, when their problem domains are so differernt ?

In most of my code, testing hasn’t been helpful, but in 2 situations its been an absolutely life saver. One is testing third party web services, one a CRM system, another a ERP, that were insulating by a SOAP/HTTP end-point for other systems to use. The tests allowed me to capture third party issues, but more importantly allowed aggressive refactoring without fear of breaking things.

The second was for an overtimes claims systems, with very complex payroll rules around which claims were valid, how much they were paid, etc. The rules had very complex interactions, and by testing them we were able to find inconsistency in their business rules, and again to support future changes without breaking existing systems.

Other development where I’ve done testing, it hasn’t helped, or it has been a hinderance. The value of experience is of course that ability to answer On What it depends.

Nobody expects doctors or engineers to give the same advice in every situation, so why does that have to be one set of rules for testing in software development ….

What Happens When You Squeeze a Graph Model Into a Relational Database

Microsoft CRM Dynamics is becoming a popular solution of CRM, case management, etc. It has reasonably complex data model, with support for Activities (e.g. Email, Phone calls) which are things the users need to do (email somebody, go to an appointment, etc.). These activities can be related to pretty much anything in the system, which makes sense, the Activities are the verbs of the system, with the other tables being the Nouns.


Don't Change the Name of Your CRM Server

Or rather if you do, be careful what you change the config in the MSRCRM_CONFIG table to.

One of our clients recently had an outage where nobody could login to CRM dynamics 2011 for most of the day. All users got the following useful message:


Luckily the Windows Event Log recorded: