TFS Working On Wins!

My entry to the Coolest Team System Gadget Contest has been announced the winner! Many thanks to Mike Azocar for hosting the competition and the judges Martin Woodward and Ed Blankenship.

Version 1.1 is hopefully not too far away with many features and improvements slated. You can currently get an early installer of it from CodePlex which contains a User Activity Timeout feature. This automatically stops recording time when you get pulled away from your desk, and starts up again when you are back.

Technorati Tags:

DevSta Entry – Mobile Memory Speed

Recently, I entered the DevSta {Challenge 2008}. The Challenge Brief was release at 0808 EST on Monday 29 September. This was the start of 200 hours and 8 minutes to develop a Windows Client, Mobile or Silverlight application or a Vista Gadget based on the theme Old School / New Cool. Not only was the time very limited, since I do work full time and have a 3 month old son, but thinking of an idea to fit the theme, that would be exciting and able to be completed in time, was difficult. Asking many people the only responses for ideas I got, was games. That is fine, and there were some good suggestions, but the time constraints meant I would never get these finished.

My idea ended up being the simple game of Memory on a Windows Mobile device. The "new cool", was to make it Speed, in which matched pairs would turn back over after a time out. Not a very cool idea I understand, but it is additive to play nonetheless. Below is the description of my submission:

Mobile Memory Speed brings the classic ‘old school’ card game Memory to the Windows Mobile Platform with a new twist. As you match the pairs, if you don’t finish quick enough, the pairs will start to flip back. This game comes complete with Difficulty options up to 40 pairs, which is enough to challenge anybody. Game high scores and statistics are also recorded to ensure you have a goal to beat.

 

I was able to complete the application within 10 hours and am very happy with the result. It feels like a completed product, although I have had many more suggestions for features to mix up the game further. The winners have been announced and unfortunately my entry is not among them. All in all it was a good experience putting something together so quickly. It has given me more motivation to just get in there and write more applications. Thanks also to Microsoft, the sponsors, the judges and the guys that organised the competition, and congratulations to the winners! I look forward to participating next year. Until then, I have made an installer for Mobile Memory Speed if you would like to give it a go. Note that the Microsoft .NET Compact Framework 3.5 is required.

http://cid-ccb05a30bca0ff01.skydrive.live.com/embedrowdetail.aspx/Public/MobileMemorySpeed|_Setup.CAB

Team System Gadget Contest – TFS Working On

Since mid June, Mike Azocar has been running a team system gadget contest. Leaving it right up to the last minute, I have just submitted my entry, TFS Working On.

TFS Working is a simple system tray utility that makes it easier to record your time spent on TFS Work Items.

Immediately after installing, TFS Working On is ready to help you track your time. Simple specify your server and project, then search for your Work Item and you are tracking your time.

This will record your time in the history of the work item whenever you stop working on the item.

You can also specify your estimates against a work item so that you can record how you are going.

With some very simple configuration the estimates can be mapped to the TFS Work Item fields, per work item type, per project. This can be performed by one member of the team, most likely the one responsible for setting up the project, and then stored on the network share for all team members to reference.

This will now allow the estimates to automatically update the work item fields, making it easier to record time spent to help with TFS reporting and evidence based scheduling.

I will be putting the code up soon on CodePlex. This is just version 1, and I have many features I wish to add.

  • Activity monitoring – automatically stop recording when computer is inactive for given period of time.
  • Visual Studio integration – possibly to the extent that you cannot check out code for editing if you have not specified the work item you are working. This is for very strict scheduling scenarios.
  • Check that you are the assigned user for the selected work item
  • Bluetooth device linking – link to a Bluetooth device, like a phone, so that when you walk away recording stops (already got the code for this 🙂 )
  • Mapping Start and Finish dates
  • Possibly allow working on multiple items at once

 http://cid-ccb05a30bca0ff01.skydrive.live.com/embedrowdetail.aspx/Public/TfsWitWorkingOn.zip

Update: Project now on CodePlex: http://www.codeplex.com/TFSWorkingOn

Technorati Tags:

Demos Happen Here – State Finals

Last night I was fortunate enough to participate in the Queensland State Finals for the Demos Happen {Here} competition. Congratulations to David Apelt who did an excellent demo and will be representing Queensland at the national finals at Tech Ed in Sydney. I would also like to thank Andrew Coates and Roger Lawrence for running the competition and hosting the night.

Technorati Tags:

Demos Happen Here

Queensland VSTS User Group ran it’s demo fest last Friday. I participated. Here is my demo’s abstract:

Taking Command of Visual Studio

Visual Studio 2008 has become one very sharp tool. With all tools learning how and when to use it correctly can make life easier. In this demo I will be showing you how to increase efficiency and maximize productivity by utilizing Visual Studio 2008. I will be covering Tips & Tricks around File Management, Navigation, using the Editor, Debugging and Customisation. This will include a vast array of short cut keys which are worth learning and commands you didn’t know existed that will save you time. Going further onto customisation I will demonstrate Visual Studio Extensibility (VSX) with Microsoft PowerCommands for Visual Studio 2008 and other very useful extensions.

Below is the video that was taken on the day. This is also available from the Demo’s Happen Here site.

I’ve talked about PowerCommands before, and here is where to get RockScroll.

Anthony posted the results of the mornings sessions. Of course I was a little disappointed to be one point behind winning. But the result is also encouraging and I did have a lot of fun. I hope to do some more presentations soon at some upcoming user groups.

Thank you to Anthony Borton for putting the morning together, and use of his laptop for my presentation. Thank you to John O’Brien for recording the video.

Circle of Interest

Recently, Steve Nagy nominated me to continue on with the circle of interest started by Paul Stovell stating the technology areas where I will be focusing my efforts. So here it is:

Core – Green
This area consists of things which I already know fairly well, but I know I can learn a whole lot more. They also fall directly what I am working on at the moment, so I have a good opportunity to make good on doing these things better.

Non-Core – Blue
I am quite interested in these and will get to use them this year, but I will not get a deep level of understanding, or a great deal of experience, as I will with the core items.

No More Time – Red
I’m overly curious. I like technology. But with the whole point of the circle, is to ensure I’m not a jack of all trades, and master of none. These items just get pushed out.

There are things that I didn’t fit on my list, like Expression Studio, Windows Home Server and Windows Media Center. These are things I tinker with, but it is something that I won’t get much time, but I like to be able to get by. For example, I used Expression Design to draw the circle. Other technologies, like Windows Server 2008, SQL Server 2008, IIS 7, and other environmental and system administration tasks I am able to get familiar with, due to my work in WiX, MSI and deployment. But I need to utilise others expertise in these areas, because I don’t have time to learn it all myself, but again, like to be able to get by.

Another interesting thing, is that putting the items in a graphic, just made things so much easier to see. When I began drafting, I wrote the items in lists, and it just was not clear. I guess that is a testament to Mind Maps

Technorati Tags:

Must have for any Visual Studio 2008 developer

PowerCommands for Visual Studio 2008. Install it. Nothing else really needs to be said, but I want to highlight a few things.

This is a free Microsoft built VSX (Visual Studio Extensibility) extension. It adds extremely useful yet simple menu commands that are integrated as if Visual Studio shipped with them already there. I will not go into the detail of the commands there is a comprehensive yet brief document here for that. It is definitely worth the installation and Visual Studio just does not feel the same without it anymore.

I have been using version 1 for a couple of months now and have just found version 1.1 was released a month ago which adds a host of new handy features. It gets better, the source code is available. This provides a great example on how to code seamless add-ins to Visual Studio. Before you can build the source you need to install the Visual Studio SDK. I have a list of simple refactoring commands that I intend to write as a learning exercise that will also make common coding tasks easier.

If PowerCommands has convinced you that free first party VSX extensions are a good thing, be sure to check out other releases from Microsoft on the Visual Studio Gallery. The Resource Refactoring Tool is another very good must have.

Technorati Tags: ,

Finding the Assembly location

Finding the location of the running application is a task that is often hit. This is usually required to locate resources relative to the application, such as application settings or deployed files. There are many locations that can be used outside of the assemblies location that are often more appropriate, such as the Users’ Application Data directory, temporary directory or a database.

One example that I hit recently where those locations just didn’t fit the requirement was for an installation deployed configuration file, which is configured by the installer for application wide settings, and was not to be modified once deployed. This method had to be consistent as it would be used in a shared library by WinForms, Web applications and Office Add-ins. Environment.CurrentDirectory, is usually set to the directory the application was started in, so I skipped that and went straight to the method I’ve used before:

System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);

From a WinForms application it returned, as expected:

C:\Users\Matthew\Documents\Visual Studio 2008\Projects\FindAssemblyLocation\Application1\bin\Debug

However, when I was running it in a web application it returned a directory that was not very helpful:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\website1\ecf8f52a\3c164603\assembly\dl3\7948a1a3\8eb04ec1_9e9fc801

And within an Excel Add-in it returned:

C:\Users\Matthew\AppData\Local\assembly\dl3\3LGRT984.R33\JL6TAD7L.4OV\1e7fb3b7\b3a2d91c_55a0c801

My colleague mentioned another method, so I gave that one a whirl: (Note _Default is the name of a class in the assembly)

Directory.GetParent(typeof(_Default).Assembly.Location).FullName;

Unfortunately it returned the same as above in all instances.

After a little searching I found another:

Uri assemblyUri = new Uri(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase));
assemblyUri.LocalPath;

From a WinForm application it returned the same as above. From a Web application hosted by IIS it returned:

C:\Users\Matthew\Documents\Visual Studio 2008\Projects\WebSite1\PrecompiledWeb\WebSite1\bin

Note however, that this also returned a Local Temporary ASP.NET Files location when running under the Visual Studio ASP.NET Development Server, but this is to be expected. From an Excel Add-in it returned:

C:\Users\Matthew\Documents\Visual Studio 2008\Projects\FindAssemblyLocation\ExcelAddin1\bin\Debug

This method appears to work in WinForm applications, Console applications, Office Add-ins, and Web applications hosted in IIS.

Technorati Tags: ,,

Vista Media Center cannot consume Media Sharing

After a rebuild of my desktop PC to Windows Vista and a shuffle of my hard drives to give more capacity to my Windows Home Server, all the content for my Vista Media Center had moved. This required a rebuild of my Media Center library but this time I wanted to be smarter about it so that I would not have this same issue later. Windows Home Server has the well promoted Windows Home Server Media Sharing feature which states,

Windows® Home Server Media Sharing enables you to view, listen, and watch your
favorite media stored on your home server by using digital media receivers and playback
devices, such as the Microsoft® Xbox 360™.

After you have enabled Media Sharing in Windows Home Server, you can simultaneously
share photos, music, and videos to your home computers and various devices that
support Windows Media Connect.

Before I enabled it on my Home Server, due to the potential file copy performance issues that can be aggravated, I decided to test it first hosting from my main desktop PC. Enabling Media Sharing is very easy. Under the library menu of Windows Media Player is Media Sharing…

On the Media Center under Networking in Explorer the Media Sharing from desktop is shown as a network device. Clicking on this opens up media player and the shared media library is available as a separate library and works just like the local library.

The nice advantage of this is that the you only need to maintain your library is one place and all the updates are immediately available on by the media consuming machine or devices. Opening up Media Center however, the picture was not so bright. Since the shared media is attached in Media Player as another library, the fact the Media Center and Media Player use the same library is void, and the shared media does not come through to Media Center. I found this thread on The Green Button which covers the issue and Noah Spitzer-Williams, Program Manager for Media Center, entered the discussion and cleared things up,

Just to set the story straight:
– No, Media Center in Vista does not look for shared libraries even though they appear in WMP.
– Yes, this is something we are seriously considering for our next release.  Stay tuned.
– The best workaround today is to share your music out on a network share and have WMP grovel it.  However, like others have said, the groveling process can be slow over a network and the best method is to manually add the shared music to your library.

Hope that helps!

Noah

Ok, so no Media Sharing consuming for Media Center. At least they are aware of the issue. Looking closer at the Windows Home Server Media Sharing documentation there is a section on Streaming Music to devices and Media Center is included. The recommendation is to enable the Home Server guest account and add the shared folders to the folder watch list. I already have the Media Center user a user in the Home Server, so I do not need to activate the Guest account. I am cautious that if the user has write access to anything, which is useful to update media information, the current home server corruption bug may appear.

Disappointed with Media Center, I then went for a last ditch effort to make use of this Media Sharing. My wife uses exclusively my old laptop. It is running Windows XP Professional with Media Player 11. Immediately the Media Sharing menus did not work the way they did in Vista so I was suspicious. Very quickly I found the Media Sharing FAQ which nicely told me XP could share the media library, but not consume one! What good is that? I can see the usefulness of Media Sharing, but unfortunately at the moment it can only be used if you have an Xbox 360, which if you have a Media Center alternately could be used as a Media Center extender anyway.

Windows Photo Gallery background color bleeding through pictures

I’ve been running Vista on my development computer for several months now. On the whole I have been quite happy with it. Things have worked well, stability has been equal to XP, speed (once I got more RAM) has been better. One strange thing I had though was that pictures in the Windows Photo Gallery looked a little strange.

After a little searching for how to change the background color, I found other people with this symptom describing it as an off color, yellow tint, orange or yellowish tinge, beige, cream colored background which, shows through the picture itself, distorts the colours, or bleeds through pictures. In most situations the problem went away in slide show mode. This was an annoying issue, making me avoid looking at pictures whatsoever in Windows Photo Gallery. This wasn’t that much of an issue because I do not use photos or pictures often on my development machine. But before I was going to install Vista on my other computer where I view photos constantly, I needed to ensure that I would not have this issue.

The solution is found here.

The problem ended up being the incorrect usage of a color profile set by a Windows Update for the monitor driver. This commonly occurs on Samsung monitors. My monitors are Samsung’s. The monitors on my other computer are LG’s and this issue did not occur. Fortunately, the fix is very simple. Just remove the color profiles for the monitors.

Since I have dual screen setup I did one monitor at a time to see if it worked. The article said you must restart your computer. I did not find this the case. Simply restarting Windows Photo Gallery was enough. The difference was quite obvious when I put the picture split across the two screens.

Adjusting the other monitor color profile fixed it completely.

Below is the color management dialog with the color profile set for the monitor. This needs to be removed. To get to the color management, right click the desktop, select Personalize > Display Settings > Advanced Settings… > Color Management tab > Color Management…