Saturday, May 20, 2006

It's a Good Life



# 

Nothing unique happening today. It's a kid weekend, and if you live your life according to a parenting plan, you know what I mean. For the rest of you, it means the kids are staying at my house this weekend, and I'm loving it.

We live in a terrific neighborhood with a park across the street and lots of playmates as neighbors.  I guess I'm feeling grateful that I can provide this environment for these amazing little humans.  They're doing great, and I'm doing better than I ever have in every aspect of my life.

++Alan

 Thursday, May 18, 2006

Real Hosting for Cave Markings



# 

I finally gave in and purchased hosting.  I hosted this site myself up until yesterday.  I have been intending to secure hosting for months.  This week, I sent a link for one of my posts to a Microsoft employee, and he couldn't access the site.  That was the motivation I needed.

Yesterday, I migrated everything to BoundGrid Technologies and turned off my web server.  This morning DNS appears to be sorted out.  I didn't move the DNS hosting, but just updated the A records. 

BoundGrid was recommended as being dasBlog friendly, and they certainly are.  I used their web file management tool to move my directories to their server, renamed index.html, and et voila!  Cave Markings was live.  I'll post some pictures of my previous "hosting" configuration soon.

++Alan

 Tuesday, May 16, 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]
 Monday, May 15, 2006

Atlanta Code Camp Followup



# 

I enjoyed presenting at the Atlanta Code Camp this weekend.  We had a speakers' dinner the night before, and I got to meet most of the other presenters.  The room was long and narrow, though, so I did not meet a few people at the other end of the room.

In particular, I enjoyed discussing LINQ with Jim Wooley and Wally.  I got a good introduction to Visual Studio extensebility from Vinay Ahuja.  I had a fun exchange with Charlie Arehart and Geoff Hiten about the impedance mismatch that occurs between developers and DBAs on where to put data access logic.

My father traveled with me, which was fun.  This was my first Code Camp, and I was surprised by the amount of organization and coordination required to pull it off smoothly.  Brendon, Matt and Doug as well as the rest of the volunteers deserve lots of credit for putting this together for the community.

My session was in the first time slot of the day, and was well attended.  The audience seemed engaged in the material, and I enjoyed presenting.  I had to high-tail it back to Knoxville immediately following my session in order to attend my daughter's ballet recital, so I didn't get to see any of the other sessions.

There was some discussion of another Atlanta Code Camp in February.  If it happens, I would love to present again.  In addition to more Team System talks, I would like to do a developer focused presentation on Windows PowerShell.  Most of the current material is slanted toward administrators.

Finally, I owe a HUGE "thank you" to Noah Subrin for loaning me his laptop power cord.  I left mine sitting on the desk in Knoxville, where I tested everything before packing for Atlanta.  What a typical rookie mistake.  Thank's Noah, you rock!

++Alan

 Thursday, May 11, 2006

Speed Up Your PowerShell



# 

I've been having fun with the latest drop of PoSh.  I'll be showing a demo of how to manage workitems on Team Foundation Server with a PoSh script at Saturday's CodeCamp.

One annoyance with the current RC is that it is slow to start.  I saw a thread on the newsgroup about performance and found this nugget:

set-alias ngen C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ngen.exe
ls $pshome/*.dll |%{ngen install $_.fullname }

The ngen utility compiles .NET assemblies to native code.  Without this step, the PoSh process was performing a JIT compile on all the PoSh assemblies.  Apparently, this is supposed to happen at the end of installation, but doesn't as a result of a bug.  For now, this makes my play... er, work with PoSh even more fun.

++Alan

PoSh | Tools    Comments [0]
 Wednesday, May 10, 2006

Google Juice



# 

I use a RSS aggregator to read the web.  This is a great way to organize and prioritize information.  Last week, however, I was surprised to see the following headline in my reader:

Alan Stevens from Knoxville

This was from a post on Wally McClure's blog.  Wally and I are both speaking this weekend at the Atlanta Code Camp, and in October at DevLink.  I thought it was cool of Wally to publish this post, and link back to Cave Markings.  In fact, Wally is generally a cool guy, and you should check out his podcast if you haven't already.

What is totally surprising to me, is that Wally's post is the #4 result for Alan Stevens on Google this evening.  Furthermore, this humble blog is the #5 result!  Wow, thanks for the love, Wally.

++Alan

 Tuesday, May 09, 2006

Behold the Fire Pit



# 

Two Saturdays ago, I embarked on a project that I had been contemplating all winter.  I restored  the remains of a fire pit I built in 1994.  It had seen lots of neglect.  The brick lining had been removed, and it had eroded to a large bowl shape.

I improved on my initial design by making it deeper, and lining the bottom with brick, as well as the sides.  The top ring is composed bricks with one rounded edge, which looks quite nice.

Here's a picture, but since a hole in the ground isn't terribly interesting, I chose one with a pretty lady in it.  <G>

++Alan

 Tuesday, May 02, 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, April 26, 2006

Everybody Lost in the Cartoon War



# 
Back in '93 I was one of the Sunday school teachers in a class called "Church Across the Street."  This was a terrific curriculum for Sixth Graders.  We would study a religion or denomination for a week or two, then we would attend a service.  It was extremely educational for the students and the teachers.  I began attending the Episcopal Church as a direct result of my involvement in this class.

When we studied Islam, we visited the local Mosque.  It was Awesome.  I didn't like that the girls had to use a separate entrance, and cover their heads.  Females also prayed in a separate room.  Aside from the gender issues, my experience was totally positive.  The reverence for God was palpable.  Multiculturalism is not just a PC term in a US mosque.  There were men of every color worshiping fervently together.  I was floored by the experience. 

We had an adolescent boy show us the customs for ritual cleansing and explain their symbolic and practical purposes.  This young man had a very strong sense of identity and belonging.  His life had value and meaning.  I don't have anything against Islam. 

What continues to irritate me is ignorance.  Fundamentalism of all kinds is ignorance.  There is no inerrant scripture. Even if there were, we each would have the choice if we wanted you use it to direct our choices.  I follow the premise of a Presbyterian minister that was quoted to me:  "I take the Bible seriously, not literally."

Nobody wins when we give in to hate, fear and ignorance, and the result of the Mohammed cartoon brouhaha is that we collectively gave in.

You can find a good post-mortem here.

++Alan