Wednesday, 06 June 2007

Tech Ed 2007 Day 2



# 

Tuesday started with a good conversation with a member of the SQL Server Replication Services team over breakfast.  I love sitting down at a table with someone in a blue Microsoft shirt and asking what they work on. 

I was too late to bother with the first session of the day, so I headed over to the Hands on Labs.  I started a session on the new Acropolis application framework.  This was a totally new technology to me, so I spent most my time reading the manual.  I saved my partial session for later resumption.

There were lots of great sessions to choose from, but I settled on Joel Semeniuk's "Best Practices for Team-Based Software Development."  Joel is an excellent speaker with lots of great insight to share on this topic.  The room was packed, and I sat on the floor, but it was worth it.  I'll be sharing the slides from this session as soon as I return to the office.

I grabbed my lunch in a take-out box, and headed to a Birds of a Feather sessions called "Exiting the Zone of Pain: Static Analysis with NDepend."  This was an interesting discussion on a topic I was familiar with, code profiling metrics, and a tool I was not familiar with. 

It was during this lunch session that I bumped into Cam Soper for, at least, the fourth time.  It's obvious that Cam has excellent taste in parties and sessions. :-)  This time, we finally exchanged business cards.

I tried to attend Joel's interactive discussion after lunch, but it was packed again.  My Acropolis session from the morning took too long to resume, so I took the opportunity to work on a Hands On Lab on WPF.  I completed a couple of exercises, and enjoyed getting more familiar with the new GUI coding model.  I'll do more later.

For my last session, I attended "Developing Data Driven Applications Using the New Dynamic Data Controls in ASP.NET", but I left just as it got started to deal with a weird technical difficulty.  I'll find out more about these new controls later.  They look very interesting.

Shortly after lunch, I ran into Ken Levy, who has changed teams once again.  He is now doing community development for Visual Studio extensibility.  I promised to stop by later in the week to show him some extensibility I've been doing to bring VS features into VFP, and get his feedback.

In thinking about doing this demo, I realized that I didn't have the Team Foundation Server client installed on my laptop.  While I was sitting in afternoon sessions, I downloaded the client from Codeplex, and grabbed an ISO extractor from a Google search.  I extracted the image and tried to install, but I kept running into missing files.  I downloaded the 180 trial of TFS and performed the same routine with similar results. 

After fighting the issue for half an hour, I realized that the people who wrote the installer were standing 50 feet away.  I went over and asked for help, and received lots of it.  In the end, it was Chris Menegay who determined that the ISO extractor I used, WinISO, was chocking on path lengths over a certain point, and couldn't even read the files to extract them. 

I felt humbled, but grateful to get back on track.  When I got back to my room, later that night, I downloaded WinRar, extracted and installed without problems.  Moral:  don't download unknown software you find on Google. 

Once Chris identified my problem, he and I headed off to meet up with the rest of the Central Region group for our party.  Drew Robbins put together a cool event at the Skyventure Orlando indoor skydiving attraction.  I had never done anything like this before, and it was a blast.  I couldn't stop grinning.

 

What will tomorrow bring?

++Alan

 Thursday, 14 September 2006

Cool new TFS Extension



# 

Bernardo Heynemann has put together the beginnings of what I'm  sure will turn into a popular extension to Team Foundation Server.

Project BHAL merges Windows Workflow Foundation with TFS work item tracking to allow an organization to define a custom workflow tuned to their particular environment.

I have had requests for similar functionality, and I have written custom webservices to fire on certain WIT events.  This approach is very attractive, because it allows for much more flexible configuration.

In a recent DotNetRocks episode, Joel Semeniuk was bemoaning the lack of exactly this sort of feature in the current version of TFS. 

Good on ya', Bernardo!  I hope I can contribute once I get my production process template deployed, and all the users happy. :-)

++Alan

 Wednesday, 06 September 2006

MSDN Chat with the TFS Team



# 

I enjoyed the chat with the TFS team today.  I was able to get some feedback.  It appears everything I want is slated for a future release. ;-)

Anyway, Heynemann was good enough to post a transcript for those of you that missed it:

http://manicprogrammer.com/cs/blogs/heynemann/arch...

++Alan

 Monday, 14 August 2006

Speaking at AFDUG



# 

I'll be speaking tomorrow, August 15, 2006, at the Asheville FoxPro Developer User Group on integration of Team Foundation Server and the Visual FoxPro IDE.

Meeting is at 6:00 PM at PowerChurch Software offices.

++Alan

VFP | VSTS    Comments [0]
 Saturday, 17 June 2006

Tech Ed 06 Day 5



# 
The last day of Tech Ed is different from all the others.  Many people have left already, and all the big announcments have been made.  They do schedule some excellent presentations for Friday, so it is worth hanging around for.

I did manage to attend another session Thursday afternoon.  Steve Lasker gave a presentation about occasionally connected systems.  This talk covered the current and future technologies available from Microsoft to deal with moving data offline, then syncronizing with the server when after returning online.  Good session on a very relevant topic.

Thursday night's party was great fun.  I skipped the ball park food, and went to the upper levels where they had a buffet, and beer options beyond Budweiser products.  I met up with my buddy Jim Topp, and we took in the concert, as well as a significant number of Samual Adams Boston Lagers, together.

The opening act was fine, but not inspiring.  Train was excellent.  They are definately a party band.  Along with all their own songs, they did two Zepplin covers, and closed with Aerosmith's "Dream On".  I would definately pay to see them again.

By Friday morning, I had answered, or at least addressed all of my TFS issues.  Before leaving for the party on Thursday, I brought Randy Miller a printout of CMMi KPAs not fullfilled by the MSF Guidance that my CMMi manager put together.  Randy's response was, "You rock!"  I'm looking forward to working with Randy, and Kevin Kelly as we move forward.  One member of the team with whom I didn't get to talk to enough was Noah Coad.  Noah was at the BOF sessions on Tuesday, but we only spoke briefly Wednesday morning. 

My first session on Friday was Architecting Your Own Enterprise Framework with Brian Button.  Brian shared the lessons he learned working on the Enterprise framework in the Patterns and Practices group.  I plan to download the slides when I return to my office, so I can review the wisdom contained therein.  Brian shared what worked for his team, and what didn't.  The most prominent idea that I left with was the "Rule of 3".  If you see a solution implemented three times, then it should go into a framework, but not before.  According to Brian, frameworks are not developed in the heads of designers, but should be extracted from working code.  This guidance basically follows the YAGNI principle.

During a half-hour break, I caught up with /\/\o\/\/ again to ask him about PowerShell resources for developers.  He pointed me to  Windows PowerShell Programmer's Guide  Unfortunately, it is not currently available in a printable format, but this is an exciting find. 

My next session was Rapid Development of Data End-to-End Solutions and How They Work in an N-Tier Model given by Jay Schmelzer. This was the most code-intensive session I saw all week.  Jay dispensed with slides, and built a data access compenent and windows form to connect with Northwind.  Next he migrated his DAL to a webservice, and showed the changes required to maintain full functionality in the application.  Jay is very energetic, and this was a fantastic session.

My final session after lunch was Architecting Applications for a Service-Oriented World.  Beat Schwegler did an admirable job making SOA appear to be a real technology/architecture.  In contrast to the previous session, Beat used slides exclusively to walk us through a conceptual scenario focusing on maintaining existing IT systems investments, while adding additional value by connecting legacy systems through service contracts.  This is the first time someone has convinced me that SOA is more than just a marketing term from Microsoft.

Throughout the conference, the continuous themes were quality and value.  Microsoft is providing tools to insure quality in the software I produce, while it is up to me to insure that I am producing the right software.  If I build a quality product that doesn't meet the needs of the user, then I have not added any value.

++Alan
 Thursday, 15 June 2006

Tech Ed 06 Day 4



# 

Rain this morning. :'(  I hope this clears up before the concert at Fenway tonight.  I'm jazzed about seeing Train perform.

Yesterday afternoon was increadably productive.  I attended a session on Developing Custom Process Templates, Work Item Types and Policies by Kevin Kelly.  This session was similar to the presentation by Dennis Minium at Tech Ed 05, but Kevin had some new content when he got the the demos.

Next, I attended a BOF called "Enhance Your Business and Professional Life By Getting The Most Out of the Local Developer Community".  This session totally exceeded my expectations.  The facilitators did an excellent job of correcting my thinking about my user group.  The take-away quote was "running a user group has nothing to do with coding."  The moderators had plenty of tips about how to get people involved in the group, how to vary the agenda, and how to focus on the community building aspects first with technology placing a far second.

My final session of the day was the best so far, and that is saying a lot.  I have found my guru for deploying Team Foundation Server and his name is Sam Guckenheimer.  Sam refers to himself as a coach, but I will be following his sage nuggets of wisdom like a devotee to his master. ;-)

Sam gave me a copy of his book, and I read the first 20 pages last night.  This is the guide I intend to use for our road ahead.  The key piece of wisdom he gave me at the end of his session on "Using Metrics to Manage and Troubleshoot Your Projects" was this:  "The heart of CMMi is process improvement."  Sam totally understood the dissonance between developers trying to implement functionality in an iterative manner, and auditors focused on building to spec.

One of the biggest additions to my understanding of TFS at this conference has been the clarifying the difference between the map and the territory.  The spec is a map.  The MS Project file is a map.  These are maps of where we want to go, but the model needs to reflect reality.  With all the rich access to metrics provided by TFS, we can get a clear picture of the territory and adjust our maps to reflect reality.

++Alan

[Update]  The rain has cleared off, so the concert should be lots of fun. 

My first session today was with Rocky Lhotka.  Rocky was actually very kind to datasets, and didn't harp on the lack of encapsulation.  He showed the advantages of isolating code in partial classes in .NET 2.0.  Of course, this being a Rocky Lhotka session, the ultimate solution was shown to be CSLA.NET.  I asked Rocky if his objects implemented the correct behavior when the user presses the escape key, and he responded that they do.  When he pressed the escape key, the expected behavior didn't happen.  I'm glad to know that these situations still happen to someone of Rocky's stature and experience.

I ate lunch with members of the MOM team, and asked them many questions about connecting MOM and TFS.  They pointed me to AVIcode.  I found the AVIcode booth, and talked with them.  I'll be exploring the resources on their website more upon my return.

I have been haunting the PowerShell booth trying to catch up with /\/\o\/\/.  I went to talk to members of the Visual Studio team about the possiblity of a PowerShell add-in for VS.  They've never heard of PowerShell!  They gave me some good tips on how to follow up through the forums and the feedback site.

While I was talking to a member of the VS team, I asked him about the future of Windows Forms, and he introduced me to CrossBow.  This is exactly the kind of solution I like to see Microsoft producing.  My existing code is not made obsolute by a new presentation technology.  Windows Forms lives!

Probably my last session for today was "Visual Studio 2005 Team System and Microsoft Solution Framework: Implementing an Agile or CMMI Process" with Randy Miller.  This was one of my "must attend" sessions.  My challenges in deploying TFS at this point all revolve around how to make use of the MSF guidance and templates.  Randy gave us the model behind MSF, and offered to email chapters of his MSF book as he writes them.  This was an important session for me.

Upon returning to the Technical Learning Center, I made another stab at talking to someone on the Visual Studio team about PowerShell.  I spoke to Kit George, a Program Manager on the CLR Team, and he had never heard of PowerShell!  He gave me his card, and told me he would follow up on this if I eamil him.

The capstone of the day (so far) was some quality time with Sam Guckenheimer.  I sat down with Sam and reviewed a workflow diagram I made after gathering requirements from my QA department.  Sam had some excellent feedback, and thought through the problem fully.  I made notes to share with my team upon my return.  Sam rocks!

I would be remiss if I did not mention the embarassing situation I went through trying to demo problems I was having with notifications to a member of the VSTS team.  He let me use his laptop to remote into my work desktop and demonstrate the problem.  The real problem turned out to be that the problem no longer exists!  I apparantly had not tried the subscription feature since Beta 3.  When it didn't work, I filed it as an issue in need of further investigation.  The Microsoftie (I didn't get his name) was very gracious, and I was very red faced.  In the end, I'm just happy it works.

 Tuesday, 16 May 2006

Requirements Authoring Starter Kit



# 

Last November, I attended the Visual Studio 2005 launch event in Atlanta.  At the event, I spent some quality time discussing issues I was having with Team Foundation Server with Bindia Hallauer, a Senior Product Manager for Visual Studio Team System.  When I expressed my frustration with the limited requirements management in TFS, she counseled patience.  Bindia said that Microsoft would be releasing a starter kit very soon, that would allow me to manage requirements linked to workitems.

Yesterday, 167 days after my conversation with Ms. Hallauer, Microsoft announced the release of the Visual Studio Tools for Office 2005 Starter Kit: Requirements Authoring Starter Kit.  This looks like an interesting solution.  I like the architecture of the solution, and  I'm sure Softagon did an excellent job developing this tool. 

My problems began with step 2 of the download instructions:

Double-click the RASK.msi program file on your hard disk to start the setup program.

RASKinstallThere is no rask.msi, but there is a VSTO2005RASK.exe file.  Double click it, accept the license and you get the following very confusing dialog: 

Don't even try to decipher it.  I've tried both options.  I can't figure out what the first option does, or if it does anything.  The second option at least creates some files for me to play with.  It also completely dispenses with the folder hierarchy of the original projects and solutions, so nothing compiles. 

I had hoped to demo this solution tomorrow at a requirements workflow meeting, but I have given up.  Didn't anybody at Microsoft even try to install this mess before posting it to the web?  After waiting 167 days for this junk, I'm more than a little disappointed.

There is a video showing how it is supposed to work here.

++Alan

PowerShell Script to Create a WorkItem



# 

Here is the PoSh script I demonstrated at the Atlanta Code Camp for creating a workitem in Team Foundation Server.  It is quite possible that there is a better way to load private assemblies into a PoSh session, but this works.

I did not run the script in my presentation, but pasted sections into the shell, to demonstrate how PoSh allows you to create objects from .NET types and interact with them at the command prompt.

##############################################################################
##
## Create-Workitem.ps1
##
## This script is converted from the C# Work Item Edit sample in the Visual
## Studio 2005 SDK.  I have ignored error checking, so you must have a valid server,
## with at least one team project.
##
## The purpose of this script is to demonstrate how a developer can use the Windows 
## PowerShell to automate tasks using private .NET assemblies.
## 
## In order to run this or any other PowerShell script, you will need to configure
## your PoSh environment to run scripts.  Type Help Set-ExecutionPolicy at a PoSh
## prompt to learn more.
## 
##############################################################################

$key = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\VisualStudio\8.0

$dir = [string] (Get-ItemProperty $key.InstallDir)

$dir += "PrivateAssemblies\"

$lib = $dir + "Microsoft.TeamFoundation.WorkItemTracking.Client.dll"

[Reflection.Assembly]::LoadFrom($lib)

$lib = $dir + "Microsoft.TeamFoundation.Client.dll"

[Reflection.Assembly]::LoadFrom($lib)

"Please enter your Team Foundation Server Name:"
$server = [Console]::ReadLine()
$server = $server.Trim()

"Connecting to " + $server + "..."
$tfs = [Microsoft.TeamFoundation.Client.TeamFoundationServerFactory]::GetServer($server)

$type = [Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore]

$store = [Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore] $tfs.GetService($type)

$workItem = new-object Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItem($store.Projects[0].WorkItemTypes[0])

"Created a new work item of type " + $workItem.Type.Name

$workItem.Title = "Created by Windows PowerShell!"

$workItem.Save()

++Alan

PoSh | VSTS    Comments [0]
 Tuesday, 02 May 2006

I'm Speaking at DevLink 2006



# 
devLink Technical Conference 2006This is going to be lots of fun. 

Already they have Eric Sink and Kevin McNeish on the schedule.  I'll be busy trying to act cool.  You know, I hang out with these guys all the time.  They're not my heroes or anything.  No really, I'm cool.

++Alan

 Wednesday, 26 April 2006

Windows PowerShell



# 

According to this, PowerShell nee MSH nee Monad is on the verge of release.

This is exciting news for me because I spent this week learning the tool. I have had requests to make bulk updates to work items in Team Foundation Server. I decided to investigate MSH as a platform for creating custom scripts to fulfill this request.

Now that it is on the verge of release, I won't have to overcome resistance to deploying pre-release tools. Life is good.

++Alan

[UPDATE] Keith Hill suggests some new acronyms for the Windows PowerShell.  I vote for POSH.

"Oh the posh posh traveling life, the traveling life for me..."

PoSh | Programming | Tools | VSTS    Comments [0]
 Monday, 24 April 2006

Atlanta Code Camp



# 
Atlanta Code CampLooks like I may get the chance to present my session on Getting Software Done with Visual Studio Team System at the Atlanta Code Camp.  They say that a listing on the speakers page is no guarantee that I'll be on the final schedule, but at least I'm on the speakers page now.  Go here, select speakers, and scroll waaaaaaaayyyyy down to read the summary.

++Alan
 Wednesday, 22 March 2006

Speaking at FoxForward



# 
I just got my confirmation that my presentation on integrating Visual Studio Team System and Visual FoxPro was accepted for the FoxForward conference in Atlanta.  I love sharing my enthusiasm about these tools.  This is going to be lots of fun!

Mark your calendars now:

Fox Forward 2006 - Alpharetta, GA USA - September 15th-17th

++Alan
 Wednesday, 14 December 2005

VSTS Virtual Labs



# 

Register Now!

I got this link from our Microsoft Regional Developer Evangelist.  It looks interesting, but I haven't had a chance to try it out.  If you complete one of the labs, please let me know what you think in the comments.

++Alan
Tools | VSTS    Comments [0]
 Wednesday, 09 November 2005

Today's Story...



# 

In which our hero becomes a shameless media whore:

Microsoft's Visual Studio Team Server enters the arena

Microsft's approach is broad, said Alan Stevens, and leaves room for other vendors. Stevens, a Visual Studio developer who helped co found NTeam, an open-source alternative to VSTS, said "The best of breed components was not the priority; it was the best of breed across the whole development lifecycle. For example, they don't have the best source control or bug tracking, but they were not trying to. What they are selling is the integration of the various pieces so there is no context switch."

Stevens pointed out that other tools used by Visual Studio developers would require developers to switch contexts in order to communicate programming progress. That puts extra overhead on already beleaguered developers. VSTS integration, he said, "provides a kind of automatic tracking so they don't have to manually tell the tester when [something is] complete."

"With Team System, I check in the code and get a list of work items. When that check item is resolved, it immediately e-mails the tester and they can begin testing," said Stevens.

++Alan