Sunday, July 26, 2009

A Call to Action: Please help.

Hi, I just dedicated a page to my Family Member Annie McNeill at LIVESTRONG Action.

This page is a part of the world's largest dedication book that LIVESTRONG Action will use to pressure world leaders to do more to fight cancer. Can you add your name to my dedication page? It'll only take a second, and you can help me reach my target of 25 dedications. Please click here, it only takes a second:

http://www.livestrongaction.org/dedication/annie-mcneill

Right now, Lance Armstrong is dedicating his ride in the Tour de France to the fight against cancer. And after the race, he'll send this dedication book with your signature to world leaders and pressure them to make cancer a priority in their own countries. It's our best chance to push for better treatment, more funding for cancer research and access to care for everyone around the world. But if people like us don't stand up, these leaders won't pay attention. Will you check out my dedication page?

Annie McNeill inspired me to take action - hopefully they'll inspire you to do the same:

http://www.livestrongaction.org/dedication/annie-mcneill

Transparency in Software Projects

Status and health reporting of a project are paramount at all times, earlier the better in order to ascertain that a project is on track.

When stakeholders have full visibility of the efforts on a project and the results of that project then they are more able to have confidence that the project is on track.

The converse of this is a project that is not healthy but organizational pressures cause overly optimistic status reporting which masks the issues that need to be addressed. Management should look for transparency and accept that all may not be well but ensure that care is taken to address the issue at hand. An unrealistic deadline cannot be able more realistic by throwing additional resources at it.

When project health is not as it should be it’s important to identify the resources that are effective, and seek to identify those that have a negative impact on productivity and address this issue accordingly.

The full suite of tools in Visual Studio Team System when used properly can ease the burden of status reporting and provide transparency as to the health of the project. The Scrum for Team System can provide several useful metrics which can help ascertain the health of the project.

First and foremost the sprint burn down chart should be used as an early warning indicator that productivity is not as it should be. There are 2 reasons for a flat lining burn down chart. No status from developers or no developer progress. Either of these when it happens is easily address.

The build health reports can provide status as to the quality of the software being produced. Lack of good builds, coupled with poor unit test results should raise alarm bells as to the quality of the software. Stakeholders should expect to see a good amount of early testing and for this to continue as the project develops. These tests should be able to provide assurance as changes are made to the software throughout its development.

An additional report that can be useful is the code churn report. This describes to the view the amount of lines of code that have been changed in the time period specified. If on a larger project this does not tail of it’s reasonable to assume that there are large amounts of new development going on late in the day. This means that large portions of the solution have not either been written or is in a large state of flux which is not good late in the day as it would suggest that defect counts aren’t going to tail off.

Transparency of all these aspects should allow key decision makers to make early decisions around scope or delivery dates which will allow expectations to be managed and avoid situations where teams not set up for success.

Monday, July 06, 2009

IIS6 – Network Service username under impersonation

Had a problem on trying to configure IIS6 to run a website under a specified service account.

Setting the account to use the service account as the anonymous credentials and identity impersonate to true in the web.config didn’t get rid of the symptom of the network service account being passed through to a remote SQL Server.

The trick is to set the App Pool to use the service account and adding the service account to the IIS_WPG group on the web server.

Not quite sure how I avoided hitting this problem before but delighted to suss it out!

Scot ALT.NET – ORM Evening

I had the pleasure of attending my first meeting of the Scottish ALT.NET community last Thursday.

It was an interesting and informative experience around the use of ORMs to assist with .NET development. NHibernate and Fluent NHibernate were presented, then subsequently we were treated to a smackdown of NHibernate vs Microsoft Entity Framework.

Although the comparison of the two frameworks was more geared around the features and usability, I myself can’t get away from the database first approach that stems from being taught Codd’s rules at university. Why would we use a relational database if we’re going to be primarily concerned with making our data model map to our object model? I feel a good software system is born of a good data model.

Tooling should be used to take away any repetitive tasks, which are both boring and error prone but it should not take away the need to have a good working knowledge of all the components of your technology stack.

It’s also plainly clear that right now, the Entity Framework cannot be taken seriously. Maybe v4.0 with VS2010 will change this, but I remain to be convinced.

To this end, I will be sticking with technologies such as Linq to SQL or CRUD stored procedures coupled with template based code generation.

Sunday, June 07, 2009

T4 Templates

Recently been investigating T4 templates. Been doing a lot of work using TDD, with the assistance of Rhino Mocks which is great, but in order to embrace SOLID principles, in particular the Single Responsibility Principle and the Interface Segregation principle I’ve found a lot of coding repetition.

Working with Linq, it takes a responsible attitude towards design to allow proper unit testing. This can be mitigated using technologies such as Type Mock but when tools such as this are not available, you need to ensure you design for testability rather than use tools to provide testability.

To this end I’ve been working with Fowler’s Table Data Gateway pattern, to separate out the actual data access from any business logic associated with it. This leads to a lot of gateway code in itself, DTO code and access code up at the provider level. This provides great testability, working with IoC but does require quite a lot of boilerplate code.

To this end, I want to use T4 Templates to automate some of this work, allowing testability and to maintain adherence to the aforementioned principles.

So, started learning by looking at the following:

Linq To SQL Code Generate with T4

Advanced code generation patterns with T4 and DSL tools

Text Template Transformation Toolkit

I’ll post back here my experiences in using T4 to tackle this issue.

Tuesday, June 02, 2009

When Agile gets Fragile

Agile methodologies have represented a great move forward from in delivering real value in software development. It’s principles are defined by a simple manifesto from the Agile Alliance:

“We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

That is, while there is value in the items on
the right, we value the items on the left more.”

To be Agile, so many things need to come together, when they don’t you end up with a terrible pot-pouri methodology or lack there of which sabotages a project right from the start.

I state here some things in my experience that have made the process of being agile less than effective:

  • Fixed set of deliverable to be delivered in a fixed short timeframe, without heed to the teachings in  The Mythical Man Month
  • Lack of application of agile software techniques. Including but not limited to code reviews, unit testing, refactoring.
  • Resources being added to team late on in projects. See first point. With tight deadlines, it is most defiantly to stick with the staff on board at kick off and let them do their utmost to meet that goal.

It is true that each of these issues stated here effectively break the software development process, Agile or not. What can we take from this? Maybe this one statement:

“In software development, all stakeholders must make a commitment to a process, and stick with that commitment regardless of external pressures.”

We should stop looking to processes to solve our issues when we don’t commit to those processes.

Sunday, March 22, 2009

iPod touch problem – crashing iTunes

Problem I had with my iPod touch which wasn’t documented anywhere I could find it, so is now documented here.

Symptom:

On connection iPod Touch 2g to computer and attempting to run iTunes, it would crash with the error “Shut down unexpectedly”

Fix:

In order to fix this I first did a factory reset on the iPod. This is done by holding both buttons and then switching off. Then switch it back on holding the home button.

After a moment you should get the “Connect to iTunes” message on the iPod. Follow this instruction.

Once connected iTunes will recover the iPod then you can restore one of your backups. At that point it’s just a case of re-syncing and then you’re ready to go.

Tuesday, January 20, 2009

Digging StackOverflow

It’s not often that something comes along that’s a true game changer in terms of technology. Occasionally something new comes along and it moves the paradigm along to the next stage.

Usenet was one such thing, and it still lingers on today, although not so sure how much use it sees through contemporary news readers and how much is cross aggregated with websites.

Another such thing is google. I’ve been on the web since it started and I can categorically say that it’s usefulness has somewhat increased due to search, and lets face it, search is google. The likes of Lycos and Altavista that came before were not a patch on it.

In terms of usefulness in the domain it seeks to address, StackOverflow is up there with these shifts. Previously to find technical programming information you had to trudge through a swathe of newsgroups or websites.

Of the questions I’ve asked, most have quickly had very high quality answers. That’s a testament to the usefulness of this site. I recommend that any software professional get over to Stack Overflow and see what all the hype is about!

Thursday, October 11, 2007

Think there should be a general election?

Sign here please!!!

http://petitions.pm.gov.uk/Election-year/