Saturday, July 31, 2010

Cool use of the Expando object–working with JSON

Using the Expando object to work with JSON data leads to more readable code and here is how to do it:

Thursday, July 29, 2010

XAML, Developers and Designers

An interesting paper: The New Interation – “How XAML transforms the collaboration between designers and developers in Windows Presentation Foundation.

Wednesday, July 28, 2010

jQuery Code Snippets for Visual Studio 2010

List of shortcuts:


The End–Pearl Jam

What were all those dreams we shared
those many years ago?
What were all those plans we made now
left beside the road?
Behind us in the road
More than friends, I always pledged
cause friends they come and go
People change, as does everything
I wanted to grow old
I just want to grow old
Slide up next to me
I'm just a human being
I will take the blame
But just the same
this is not me
You see?
I'm better than this
Don't leave me so cold
I'm buried beneath the stones
I just want to hold on
I know I'm worth your love
I don't think
there's such a thing
It's my fault now
Having caught a sickness in my bones
How it pains to leave you here
With the kids on your own
Just don't let me go
Help me see myself
cause I can no longer tell
Looking out from the inside
of the bottom of a well
It's hell...
I yell...
But no one hears before I disappear
whisper in my ear
Give me something to echo
in my unknown future's ear
My dear...
The end
comes near...
I'm here...
But not much longer.

Sunday, July 25, 2010

Why Agile works?

Here are some notes that I made from a Martin Fowler presentation on why Agile works (

  • First, when do traditional methodologies, like waterfall, work?
    They work when you have stable, complete and clear requirements (which is almost never). The reason for needing stable and clear requirements is that the waterfall methodology is based on predictive planning: you predict the course of the project and you plan accordingly.
  • What do you do when you have requirements that are not clear, incomplete and are not stable?
    The above statement describes probably 90% of all software development projects (and it describes 100% of all projects that I have worked on). Agile methodologies are perfect for such circumstances. The reason for this is that it is based on adaptive planning: You iterate many times over the cycle of planning, implementing, observing measuring, adapting, thus making it easier to change the path of your project as the requirements change or new ones come in while old ones get taken out.
  • Traditional methodologies are process centric.
  • Agile methodologies are people centric. It works only when you have a really good team that work well together. It is communications heavy.
  • In an Agile methodology, everyone involved in a project understands and contributes to the project plan. (Its not just maintained and understood by the project manager).
  • Agile methodologies rely heavily on feedback. At the end of every iteration, you perform a retrospective of what you did well and what you didn’t and you adapt your process to make the next iteration better. Being able to track and measure work being done during an iteration is extremely important, because this information is what is used during the retrospective. (The retrospective is a unique part to the agile methodology and one of the reasons for why it works).
    Ken Beck’s statement is extremely pertinent to this aspect of Agile: ”Perfect, is a verb and not an adjective”. (Its not something we are trying to achieve, but something we are constantly doing).
  • Agile measures success by measuring the amount of software that is in a “production ready” state.

“Unit tests can prove the presence of a defect, but cannot prove the absence of defects” – Dijkstra.

“A bad process will beat a good person everytime”. – Edward Demings.

If your process is the same as one year before, then you are not using an Agile methodology – Martin Fowler.

Software development is unique as a profession, because it is a combination of engineering as well as creativity.

Cubicles make you dumber. – Neal Ford.

The Agile Manifesto:

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

Interesting comments in the video about Pair Programming: (36 minutes into the video)
The person working on the computer is the driver, the person working with the driver is the navigator.
Typically, the driver is thinking of the HOW, whereas the navigator is thinking of the WHY. (Each is using a different half of the brain). (left side is more logic oriented, the right side is more romantically oriented)
Its not about using 2 developers to get the work done, but getting one full brain to get the work done right.

Sunday, July 18, 2010

16 Enterprise Architecture Strategies Learned The Hard Way

via Cio Dashboard:
  1. An exhaustive enterprise level blueprint is virtually impossible to build – it’s too big and no one will buy-in
  2. The best strategy blends a direction-setting enterprise blueprint and business unit and domain blueprints
  3. Centralized accountability for the EA function is a predictor of success
  4. A centralized team of architects is critical in driving EA standards and approaches
  5. Architects must be assigned to projects as core team members (60%+ of total EA FTEs) rather than “advisors”
  6. EA should be measured in 2 ways: business capabilities delivered and costs of core services
  7. Measure EA as an asset – what does it cost to provide the service and what return does the business get from the business capabilities delivered?
  8. Architecture leadership requires strong management, business operations and technology skills, most likely in 3 different types of people; don’t expect your chief architect to run the EA function
  9. Methods and governance must be integrated into existing work processes (eg, project approvals, SDLC) rather than a new overlay
  10. Enterprise Architecture is not always the best name for communicating; maybe Strategy & Planning or Enterprise Transformation is better
  11. The best large companies have “business architecture” teams reporting to the business (or dual reporting to business and IT)
  12. Leading companies have reference architectures in place for 90% of the technical domains
  13. Your senior enterprise architects must have the right cultural skills and awareness to integrate well with upstream business partners and downstream technical users
  14. High performance groups maintain consistent, formalized EA involvement in the SDLC to translate blueprints into sufficiently detailed starting architectures for each project as well as accurate cost and resource estimates
  15. Mature organizations target 40% EA resource time for strategic planning and 60% on SDLC tasks, and typically err on spending more time on SDLC tasks
  16. Strong credibility and trust amongst Business and IT partners is a predictor of EA success. Credibility has typically been gained via joint strategic planning efforts, one project at a time.

Saturday, July 17, 2010

TFS – Setting up a Team Project Collection

Team Project Collections are a great new feature in TFS 2010, that allow you to organize all your team projects into groups.

Here is what you need to do to create a new team project collection (TPC)

1. Log in to your TFS server.

2. Bring up your TFS Administration Console

3. Click on “Team Projection Collections” under the “Application Tier” node

4. Click on “Create Collection” and go through the wizard of setting up the TPC. (I have never had to modify the default settings while going through this process).

5. Important: Users that will be in-charge of creating team projects within the TPC, need to be added to the “Site Collection Administrators” list. (instructions can be found at the following post: TFS – Unable to create a team project due to Sharepoint permissions)

TFS – Unable to create a team project due to Sharepoint permissions

If you setup TFS with a service account and then attempt to create a Team Project within a Team Project Collection (TPC), you might come across the following error:

TF218017: A SharePoint site could not be created for use as the team project portal. The following error occurred: TF250044: A SharePoint site cannot be created at the following location: http://tfs01/sites/TestCollection/Test. The following user account does not have the required permissions in SharePoint Products to create a site at that location: AD\user. The user account must have sufficient permissions to create a sub-site on the following site: http://tfs01/sites/TestCollection/Test. For more information, see the Microsoft Web site (

The privilege to create a team project should not be handed to everyone (especially in a large organization). Users who should be able to create a team project within a team project collection need to be added to the “Site Collection Administrators” list.

To do this:

Go to the TPC site. (typically : http://{tfsServer}/sites/{TeamProjectCollectionName}/)

Click “Site Actions”

Under “Users and Permissions”, Click on “Site Collection Administrators”

Add the users that need the privilege of being able to create Team Projects.

Things to note:

You cannot add groups. I am not sure why Microsoft did this, because in a large organization, this certainly makes it a pain to administer TFS.

Friday, July 16, 2010

WCF Error - This collection already contains an address with scheme http.

If you get the following error with WCF:

This collection already contains an address with scheme http.  There can be at most one address per scheme in this collection.
Parameter name: item

The most probable reason for this is that you have multiple identities setup in IIS.


The easy solution is to remove one of the entries.

But in case you cant remove the other identities for the web-site, then you could look at creating a CustomServiceFactory, that filters out the entries that are not to be mapped to the WCF service endpoint.

Still looking for a better config based solution.

Update: If you are using .Net 3.5 or above, you can use the “BaseAddressPrefixFilters” attribute in the config file. More info:

Tuesday, July 06, 2010

Are you tired of Cassini?

Fret not, finally there is going to be a replacement for the Visual Studio developer web server cassini. Scott Gu blogged that Microsoft is preparing to release “IIS Developer Express” which will be fully compatible with IIS 7.5. For those of you who have developed with Cassini, you know the biggest issue in using it is the fact that is only a reduced functionality web-server and moving to IIS would invariably unearth problems that didn’t show up with Cassini. (Another major issue was the fact that Cassini did not support SSL – which made it hard to test transport security with WCF). IIS Developer Express will be compatible with VS 2010 and will work with all versions of Windows. Another cool feature is that it will run without any admin privileges being needed to install on the computer. Read more: IIS Developer Express.

Another new application that Microsoft is getting ready to release is a new Compact Edition of Sql Server. This version will allow you to create a database for your website without requiring to install any files. This will make it extremely easy to create a database for your website in shared hosting scenarios. Read more: SQL Server Compact Edition.

Personally, the news about IIS Developer Express is extremely exciting to me and I cant wait for it to be released.

GMail Filters–multiple from addresses criteria


The vertical bar “|” is the or operator when you need to create a filter that is based on multiple email addresses.

iPhone App - Babylonian Twins

iPhone Screenshot 1

Today’s free iPhone app…. and its pretty good

Friday, July 02, 2010

iPhone App–Location Business Analysis

ESRI has submitted its Business Analysis application for approval to the Apple App store.

With the free BAO for iOS application, you will be able to perform site screening in the field on your iPhone, iPad, and iPod touch.

Visiting a potential new site? BAO for iOS gives you the demographic and market information you need to instantly evaluate the area on-site.

BAO for iOS helps you to easily answer three key questions about a location:

  • What types of people live there?
    Get a quick demographic and market snapshot of your location (e.g., age, income, education, or spending).
  • How do they differ from the people in another location?
    Compare the demographic and market data for two locations or one location vs. the entire U.S.
  • Is this a good location based on your needs?
    Set your desired criteria and find out how your location matches up.

BAO subscribers can also access the full set of BAO Reports from within the iOS application.

BAO for iOS will be available for download from the Apple App Store in July.

More info: