An injustice

I went out and met a bunch of people over the farewell of a good friend and past colleague over a really fun project I was on.

Over drinks I heard a really disheartening story of what's been happening since I left.

 

In the beginning, when I was still there...

We had a new CEO for this public listed company.  He's really big on agile development.  Agile was billed as the next biggest thing throughout the organization.  From the top down, processes were reviewed to be more agile.  Both development and business.

Agile was preached to the shareholders.  It was going to save costs and make the company so much money in the long run.

To this end, the new CEO hired his old buddies (let's just starting naming names: Thoughtworks) to help steer the processes in the company to be more agile.

 

Then gradually after I left...

Now, this existing team still had plenty of very clever guys, and while the process that was followed wasn't by any means an agile process to start with, a lot of the processes changed over time to accommodate agile methodologies - we had frequent releases, we already had unit testing anyway, we had tasks on cards that we stick on a board, we had a continuous build server, and we even had a build server with an USB build light that goes red or green (now name how many agile teams that actually had something like this).

Apparently, the way the team used SVN wasn't agile enough.  Even though they were branching and merging with some really clever scripts, and there was major conflict with Thoughtwork's people over this.

 

The bad...

So, with 90% code complete, with 1 month remaining on the project, the project is rock solid and ready to go.  The word came down from above:

This .NET project isn't agile.  It can not be considered an agile success.  We're canning the project.

Thoughtworks now owns the project, they will re-implement it in Java.  They will deliver it next April (6 months).

A few weeks later, Thoughtworks asked for all the .NET code to be handed over so they can, I guess, translate them to Java.

 

The sadness.

I've never heard such an evil story related to "agile".  It is pure politics.  I bled inside when I heard what happened to these guys.

Secretly I wondered that since the entire organization is turning into a Java shop, perhaps all .NET projects were in trouble to start with, and they were looking for a smoking gun to kill the project.  Thoughtworks was never hired to assist with the project processes.  They were hired to fire the .NET guys.

 

This story has no good ending:

Of this original dream team:

All the contractors either left for other opportunities, staying around for a bit longer, or had stopped their contracts, everyone is still keeping in touch, I'm sure when a big project happens the those that remained will leave and join the others.

All the permanent employees were put onto support roles, because .NET is now a legacy system.  Quite a surprising number of them are on career leave.  Many of them may probably not return from overseas.  When you've worked with a dream team and worked on some really challenging cutting edge .NET stuff, you just can't go back and fix support issues anymore.

 

So, there's my little rant.  To the guys who are probably very bitter over the whole thing, my heart bled for you guys.  You guys rocked, and deserved much better than this.

System.Runtime.InteropServices.COMException when opening a visual studio web project

I'm in the middle of installing everything to get my new laptop (still not working right) , and came across a problem where I couldn't open a particular web project in the solution.

"System.Runtime.InteropServices.COMException"

First thing I did was opening the project file in notepad and grab the project type guid:

{349c5851-65df-11da-9384-00065b846f21} - Ah ha!  Web Application Project

There's a few things you need to open this project on Vista:

1. You'll need IIS with IE6 Metabase and IIS 6 configuration compatibility

image

2. Run VS.NET as administrator

3. Find out the project's

Alternatively, you can install VS.NET 2008 SP1 and the messages will be a bit more friendlier.

image

 

jliu

jQuery + Microsoft

 

I had the opportunity to work a lot with jQuery at a project during 2007-2008.  Back in those days, we were mixing a lot of the jQuery code with ASP.NET controls.

Some things worked well, other bits were hard.  Sometimes there were a lot of head scratching.

One thing remained true:
jQuery made working with JavaScript fun.

I hesitated a bit on recommending jQuery on my next project, but once you've done jQuery it's hard to not work with jQuery - secretly I lamented having to write JavaScript the old way.

Over the weekend, ScottGu and Scott Hanselman both announced Microsoft will be making jQuery part of the official dev platform.  With stronger support for VS.NET, and will be shipping with ASP.NET MVC

I was reminded of my post earlier in the year.

Writing XML docs for JavaScript

Looks like MS will be doing one of my todo's for me :-)

Cheating Live ads

I try to use Live Search (people think I'm crazy).  I figure if I use it enough it'll learn and become a better search engine.

I was looking for Flight Centre today - and this came up in the ads.

flightcentre

I clicked the second one - thinking that was the right address.  Turns out that was a trick and I was sent to EscapeTravel.com.au

/slap

  1. The advertising should NEVER had allowed the ad to have a subject of a different company's URL
  2. The advertiser should have the decency to not to impersonate someone else's URL

Bad Live search.
Bad Overture.
Bad Escape Travel.

Sharing a little gem - ASP.NET Javascript String.format

When you are working with ASP.NET 2.0, Microsoft injects quite a bit of Javascript framework stuff.  Most ASP.NET developers don't dive into these libraries and thus never know the gems that Microsoft has added in their Javascript framework.

I'm just going to share a little gem today, Microsoft has implemented a full version of the String.format in Javascript - in the same style as the .NET counterpart.

So in Javascript, you can do:

 

String.format( "{0:d}", new Date() );

or

String.format( "{0:c}", 100 );

Do watch out these values are localized to your current culture - whether it's [en] or [en-us] or [en-au], these are set in your browser's settings.

Have fun!

jliu