Monday, December 22, 2008

Blogger Holiday Charity Challenge: All 2008 Ad Revenue to Charity

Folks typically aren't clicking on Google Ad links when traveling to my blog. That's ok. It's not a revenue experiment. As a result, there's not much (if any) revenue generated on Effective Thoughts. My other blog, generates a bit more...but not much more.

Regardless, I convinced my blog partner to participate in the Blogger Holiday Charity Challenge and donate our entire ad revenue for 2008 to charity. Here's a snippet of the post I wrote for my other blog, The Freestyle Entrepreneur (TFE):

...As an alternative, TFE will donate 100% of its ad revenue for 2008 to the V Foundation for cancer research. Folks aren’t able to focus on business-let alone their lives and families-if they’re fighting cancer. This nasty character affects people of all ages, socioeconomic statuses, and geographies. It’s past time we knock cancer down for the count. The V Foundation is a 4-star rated charity on Charity Navigator and uses very little of its funds for administrative costs.

We challenge all the friends of TFE to donate to their charity of choice and we wish everyone a safe and happy holiday season.

Sunday, December 21, 2008

TFS Branching Guidance II

Buck Hodges just announced the release of TFS Branching Guidance II.

Thursday, December 18, 2008

TFS Overview to OSU Student Life

On Tuesday of this week, I traveled down to campus with Jeff Blankenburg and delivered a TFS 2008 overview to the fine folks at OSU Student Life. Some follow-ups:

Thursday, December 11, 2008

COALMG January: Lap Around VSTS 2010

Update: Cardinal Solutions will be sponsoring this event with food and drinks.

Due to New Years Day and CodeMash, we rescheduled the next COALMG meeting to Tuesday Jan. 6th from 6PM to 8PM. Randy Pagels will be presenting on Visual Studio Team System (VSTS) 2010.

Tuesday, December 09, 2008

TFS SLG Deep Dive

Thanks for everyone who came out to our State and Local Government (SLG) deep dive on TFS 2008 today. Alexei and I enjoyed the great conversations that ensued. A few follow-ups from the meeting:

Looking forward to hosting a full SDLC in a Box on February 4-5 at the Microsoft MPR at Polaris!

Sunday, December 07, 2008

Code Analysis Invalid Settings Error When Invoked from within VSTS

This issue plagued me for several hours today so I'm posting my resolution. Executing Code Analysis from within Visual Studio Team System - Team Suite kept reporting:
"Invalid settings passed to CodeAnalysis task. See output window for details."
MSBuild is unable to locate the correct binaries to perform Code Analysis on managed binaries. Make sure that either Visual Studio Team System 2008 Development Edition or Visual Studio Team System 2008 Team Suite is installed with the Code Analysis feature. If MSBuild is being run from within the "Visual Studio Command Prompt", specify the path to your analysis binaries by setting the FXCOPDIR environment variable.
At first, after a search, I thought it was an Environment Variable issue regarding the path to FxCopCmd.exe. Very helpful post here. However, after adding the Environment Variable FxCopDir, I was closer but still getting an error.

Finally, I took the FxCopCmd.exe command line string into a command window and executed. It came back with:
Switch '/targetframeworkversion' is an unknown switch.
Microsoft (R) FxCop Command-Line Tool, Version 1.36 (9.0.21022.8)
Copyright (C) 2007 Microsoft Corporation. All rights reserved.
Ah ha. Now we're getting somewhere. Hypothesizing this was an old version of FxCop which didn't understand target frameworks, I downloaded the latest (which provides support for .Net 3.5 SP1) and installed it to %ProgramFiles%\Microsoft Visual Studio 9.0\Team Tools\Static Analysis Tools\FxCop (making a backup copy of the directory first).

After restarting VSTS, I received a successful code analysis result. Whew...back to my demo preparation.

Thursday, December 04, 2008

TFS Reports Out of Date

You may have noticed it takes a while for Team Foundation Server (TFS) reports to reflect changes you've made to work items or builds. Let me guess...about an hour, right? Out of the box, TFS is set to refresh the data warehouse from its transactional store every 60 minutes.

How do I change the frequency of the data warehouse refresh?
  1. Browse to the TFS Controller Web Service on your TFS application tier server within IE at: http://localhost:8080/Warehouse/v1.0/warehousecontroller.asmx
  2. Select the ChangeSetting option
  3. Enter RunIntervalSeconds for the settingId and the desired number of seconds for newValue (300 for 5 minutes...5*60)
  4. Select Invoke

refresh-0

How do I force a data warehouse refresh?

Two methods here: either via the above web service or using SQL Server Management Studio.

Via the web service:

  1. Browse to the TFS Controller Web Service within IE at: http://localhost:8080/Warehouse/v1.0/warehousecontroller.asmx
  2. Select the Run option
  3. Click Invoke
  4. You should expect a new browser window opening along with an XML fragment with the element reporting true. If false, something went awry.
  5. Close the browser
  6. Click "Click here for a complete list of operations"
  7. Click GetWarehouseStatus
  8. Click Invoke
  9. You should see either idle (it completed) or running

Via SQL Server Management Studio:

  1. Open SQL Server Management Studio
  2. Authenticate with Analysis Services
  3. Drill into Databases to TfsWarehouse
  4. Right-mouse selecting Process
  5. Click Ok, and finally Close when processing completes

refresh-1

My reports still aren't refreshed and reflect an old refresh date. What gives?

For performance and scalability, SQL Server Reporting Services (SSRS) caches reports. By default, it's set to expire the cache every 30 minutes. On a per-report basis, you may change or even eliminate this caching behavior:

  1. Browse to SSRS using IE at: http://localhost/Reports/
  2. Select a report
  3. Click the Properties tab...Execution option
  4. In a production setting, you might dial back the sliding scale from 30 to 15 or 20 minutes. Because I frequently perform demos, I actually eliminate the caching.

refresh-2

Software Configuration Management for Developers

Coming out of my post on locking down merges, Tim Wingfield provided the following intriguing inquiry (paraphrased):

First, most of our clients don't delve into what our dev practices are, what source control we use, how we use it, or any of the specifics below feature/deliverable level. Am I being sheltered from a bigger problem out there?


Secondly, how can we as developers alleviate that issue? Source control, like the language something is written in, really shouldn't matter beyond that of a maintenance issue. A competent dev team is going to make use of all tools available. Removing merging from that list is like telling us to develop in Notepad!

These are great questions. First off, if your team is developing a product or a deliverable but not source, I feel the process and tools your team is using shouldn't be of much concern to the client. We should be leveraging 100% of our best practices and the optimal tools to deliver high quality software in the most efficient method possible. You should be leveraging tools for parallel development such as branching, merging, Test Driven Development (TDD), test plans, automated Continuous Integration (CI) builds, etc.

That said, this rarely happens (clients not caring about process, tools, and/or wanting source code). So, addressing Tim's second, following question, I think senior or lead developers must be well-versed in Software Configuration Management (SCM) and the software development process. Great developers should understand concepts such as:

  • Version control
  • Branching / merging
  • Test Driven Development (TDD) with test harnesses for class libraries
  • MSTest, NUnit, TestDriven.Net, Resharper, etc.
  • Continuous Integration (CI) builds
  • Automated deployment and promotion between environments
  • Automated execution and interpretation code analysis and code metrics/coverage
  • Well-versed in frameworks/methodologies: Scrum, Kanban, TDD, MDD, etc.

...and this is probably the short list. If you're an aspiring developer wanting to ascend to the next level, my advice to you: get great with SCM and the software development process. You will differentiate yourself significantly from other developers.

How about the situation where we're on site developing a solution the client will eventually maintain? As with most client situations, you're there to provide expertise and advice. If there's an existing SCM solution, certainly we should adhere to this--but seek to optimize! In an amicable and calm manner, gently make suggestions for improvement to your clients. "Hey, I've had great success and increases in quality through introducing test harnesses with continuous integration into the process. I could set up a demo in a day if you like."

System Integrators (SI), in my opinion, aren't hired to provide amazing development expertise. They're hired to solve problems. Typically, development shops have business problems but they also perpetuate software development issues due to shortcomings in SCM technique. You, as that trusted advisor, need to evangelize and lobby for optimal and proven processes and tools which increase the likelihood of quality and success in software development.

Go forth and optimize with SCM! To this end, here is my list of resources to aid your journey with SCM.