Tuesday, June 13, 2006

Tech Ed 06 Day 2



# 

The first session I tried to attend was full!  I can usually walk into a session late and sit on the front row.   Apparantly, LINQ is a popular topic.  I'll catch the replay on the DVD.

I did attend a session on "Evolving to Patterns" which was actually refactoring to patterns.  I discovered that something I've been doing for years is called Dependency Injection.  It's nice to be assured I'm on the right track. 

The speaker recommended Working Effectively with Legacy Code, which looks like a useful text for my current job.  He also liked Refactoring to Patterns.  I plan to check them both out.

++Alan

[Update] I met Josh Holmes at breakfast this morning.  I also got the skinny from Steve about a cool cigar bar here in Boston. ;-)  Steve is actually blogging again, so check it out.

I had a good, long talk with two members of the SQL Everywhere team this morning.  They were very interested in my concerns about FoxPro interoperability.  I had to take some time to explain the VFP development model, but they listened carefully.  The biggest roadblock I see at this point, is the lack of ODBC connections in SQL Everywhere.  They do support OLEDB connections, but the native SQLCONNNECT() function uses ODBC.  I will download the CTP and play with it when I get home.  I promised to post my feedback to the forum for their benefit.

The BCEC is enourmous and attractive, but it is difficult to navigate.  It is sometimes impossible to get from A to B.  Furthermore, the bathrooms are totally inadequate.  This is a modern building, and I expect an abundance of facilities!

[Update2] I got some time in with Ken Levy, and I was blown away.  It turns out that Live is another case of lousy branding by Microsoft.  Live is actually a collection of Web APIs that the team is attempting to normalize.  They will all eventually have common programming models.  In addition, they are implementing javascript libraries with similar programming models, so that a developer can program against a client side javascript object and allow that to converse with the web services.  I was very excited by this demo.

During lunch, I attended a session on managing requirements with Team Foundation Server and MindManager.  Michael Scherotter put together a tool that provides bi-directional interaction with TFS work item tracking.  This is very exciting for visualizing requirement/task dependencies at various levels in the task hierarchy.

[Update3] I just spoke with Steve Lasker about SQL Everywhere and Visual FoxPro.  He is a former VFP developer, and understood my concerns.  He mentioned that he is in regular contact with Calvin Hsia, which put my mind at ease.  Steve also pointed me to this recent blog entry where Calvin demonstrates working with SQL Everywhere.

[Update4] I just finished the first Birds of a Feather session this evening.  Joel Semeniuk led an informative discussion about project management with Team Foundation Server.  I picked up some tricks about configuring MS Project to work properly with TFS.  I'll share the details once I have tried them out.  More BOF sessions to come.

 Monday, June 12, 2006

Tech Ed06 Day 1



# 

Today was the first "real" day of the conference.  I planned to do too much, and now I'm exhausted. 

Initial impressions: 

Travel:  Boston's airport is bigger than any airport has a right to be. 

The Silver Line is freaking cool!  The articulated bus runs by the airport, then stops at a station where it connects to overhead cables, and the engine shuts off.  Next the bus/trolley travels into its own tunnel.  

Lodging:  Hotel Marlowe in Cambridge is as cool as it looks on the website.  I have no regrets about choosing this funky establishment. 

Food:  There's too damn much of it.  My genetic code tells me to eat when food is available.  Unfortunately, there is always food available.  Breakfast and Lunch were excellent, and the evening reception with free "refreshments" was equally tasty.

People:  I had the opportunity to hang with Eric Sink, Martin Woodward and Don Demask.  I also ran into Matt and Brendan.  I saw Ken Levy, but he was busy pitching Windows Live.  I'll bend his ear tomorrow.  I also ran into Steve Loethen and Drewby.  Steve is my Developer Evangelist, and Drew is the DE in the district north of me.  I hope to get in on some code camps in Drew's district in the coming year.

Technology:  SQL Everywhere looks like a great migration path for users of Jet or Visual FoxPro.  My other sessions where about Team System, and my passions there are well documented.   I'm looking forward to a PowerShell session tomorrow.

I'm off to the jam session. 

++Alan

[Update] No jam session for me. :'(   I went to the hotel to drop off my bag, and the leopard print robe and faux-fur throw looked soooooo comfy.  I was exhausted, and knew that I wouldn't get the most out of Tuesday if I pushed myself too hard.

 Tuesday, May 30, 2006

Atlanta Code Camp Feedback



# 

I got my feedback from the Atlanta Code Camp today.  I admit, I am terrible about providing feedback at events such as this.  Not until today, did I realize how useful those little forms are to the presenter.  So, as a sign of thanks to the people who took the time to provide this data, I want to share it with the world along with my responses.

Score Comments My Response
3 more evangelist than teacher This is possibly accurate, but I could use some examples to back it up.  I'm sorry you didn't get more benefit from your time.
5 (5 lines of comments were blacked out) Pity, those five lines may have been very helpful.
5
5 very passionate, however demo unorganized, started slowly.  Took 15 minutes to introduce - could have done it in 1. Accurate. I blew the demo despite my rehearsal. I get excited, then I rush, then I make mistakes. Unfortunately, what the commenter calls the intro was intended to be half the material.
6 A little disappointed because the presenter didn't touch the team system from Architecture point of view.  I think the introduction could have been smaller Fair. I intentionally ignored the system architecture, and focused on the development process.
7
7 1.  very knowledgeable  2.  as individual programmer/consultant, was not aimed at me Useful. I work in a team environment, and intended to focus my comments on development teams.
7
7 needed to scroll some of the scripts being shown to the top of the screen so we could see over the heads of those in front Very helpful. I will definitely keep these comments in mind at my next presentation.
7 well prepared, new insite [sic] on new technology.  Really helpful Thanks.
7 lots of good information, very applicable Thank you.
7 wandered a bit. Demo could have been planned better Useful.  There is a theme here about focus and precise demos.
7 too much generalization Hmmm… My intent was to back up from the tool, and focus on how it fits into a developer’s work life.
8 good speaker and good intro to the "team" aspects of the team system Thanks, that’s what I was going for.
9 very good, detail Much appreciated
9 great speaker, good overview and content Wow, thank you.
9
9 excellent combination of VS team systems and GTD.  Very informative Glad you enjoyed it.

My reading of this table is that I need to make sure my demos are bulletproof, and insure visibility for the back rows when showing code.  The most important trend I see here is a need to set clear expectations.

What is fascinating to me, is that I spent a good deal of time at the beginning setting the tone of the presentation, and multiple commenters felt I was wasting time.  My intention was to clearly separate this discussion from a purely technical overview of the tool.  I will be more explicit about this point at my next presentation of this material.

If you attended my session in Atlanta, I would love to hear your comments and suggestions in the comments to this post.  I would also like to hear if anyone thinks I am misreading this data.

This was my first presentation "in the wild."  I've given two talks at the local user group, and many inside my corporate mother ship.  I'm sure that my next presentation will be better as a result of these comments.  I'm equally sure that I will take the time to offer feedback to the speakers at Tech Ed next month.

++Alan

 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