Deleting all RSS feeds in Outlook 2007

October 29, 2006 at 9:04 am | In Resources | 1 Comment

I’ve been using the new RSS reader in Outlook 2007 for the past month or so. It’s been great having posts sitting there waiting to be read in ‘Unread Mail’. The other feature I love is being able to simply hit ‘forward’ on a post and send it to a colleague who might be interested.

I’m a former Bloglines user but I found that I would sit there all day and press refresh to feed my addiction. Squeet is a free service that downloads your feeds for you and sends them by email. Mitch has always used Squeet and swears by it, so I thought it’s worth a try. I agree with Geoff that being able to email a comment to a post would be a killer feature!

Having the feeds delivered directly to Outlook is great, as it allows me to take them offline and read and respond. I found using online aggregators, I would read the information and not absorb it. I wouldn’t take the time to respond or comment.

So my first step of moving to Squeet was to delete all my subscriptions from the RSS platform and then delete all the folders off my work’s Exchange server. Easy task? Not really.

Fortunately my feeds were imported in folders and I was able to use IE7 to recursively delete the folders and the feeds contained.

Removing the special “RSS Feeds” folder in Outlook was a little more difficult because Outlook 2007 treats it as a ‘special folder’ and the ‘delete’ option does not exist.

One way is to use this trick from Daniel Moth’s blog: Deleting all RSS feeds in Outlook 2007 as well as using the RSS API to delete all RSS feeds in IE7.

The easy way: Outlook Web Access

If you’re fortunate enough to have Outlook Web Access enabled, then it’s just a simple right-click on the “RSS Feeds” folder and “Delete”.

Anagram for Outlook

October 28, 2006 at 12:33 pm | In Resources | No Comments

Ask yourself these two simple questions:

How many times have you copy and pasted first name, last name, business phone, business mobile out of somebody’s email signature block into an Outlook Contact?

How many times have you created a new appointment and transposed the start/end date/time, location and details into an Outlook Appointment?

I’ve been using this plug-in for Outlook called ‘anagram’. Possibly the best USD$30 I’ve ever spent.

How does it work?

  • Select the text that you want to use (a signature block, a sentence, any format)
  • Press a hotkey or tray icon
  • It detects whether it looks like a Contact or an Appointment and opens up the ‘New Contact’ dialog in Outlook with all the information populated.
  • Hit save and you’re done!

I’ve been getting into the personal productivity lately. My favorite tools this week are anagram and OneNote 2007. More on how I use OneNote later.

TFS: Stop all Team Builds

October 25, 2006 at 1:03 pm | In Team Foundation Server | No Comments

I’ve been mucking about developing a build solution for a client at the moment. It currently involves TFS Team Build and Readify’s own TfsIntegrator for the continuous integration.

In one of my team build types, a custom msbuild task seemed to be ‘hanging’. So instead of waiting for it to timeout, I wrote this command-line utility that stops all the running builds.

It is possible to use the TfsBuild.exe command provided with Team Explorer, but it is tedious typing out the BuildNumber all the time. Just in case you wanted to stop a build in progress, this is the command line:

TfsBuild stop http://tfsserver:8080/ TeamProject BuildNumber

TfsStopAllTeamBuilds.exe

This command stops all running Team Builds on a TFS server.

It connects to the specified server, enumerates all the team projects, enumerates all the team build types and then sends an async stop command to the running ones.

Usage:

TfsStopAllTeamBuilds <server url>

Example:

TfsStopAllTeamBuilds http://tfsserver:8080/

Download v1.0 Source and Binaries from the ProjectDistributor group.

TFS InstanceId, ServerMap.xml and havoc

October 18, 2006 at 10:33 pm | In Team Foundation Server | 6 Comments

Yesterday I had quite a big “oops” moment with a client that I’m working with. It involves communicating with two different TFS servers that have the same InstanceId GUID. The client has a production installation of TFS catering for around 200 developers. To help us test things like check-in policies, process templates and other addons we created a development installation of TFS.

To create the development server we did complete backup of the production server SQL databases and restored them onto the development server, following the instructions from MSDN How to: Restore TFS Data to a different server. Using Team Explorer and connecting to the new server, everything looked fine. To help us distinguish one server from the other we created a team project by the name of “AAA Development TFS” so that it would show up in the “Connect to TFS” dialog. To prevent any “accidents” happening, a HOSTS file was created on the development TFS that mapped the production app-tier and data-tier hostnames to 192.168.0.1 (a host that doesn’t exist, thus any requests time out).

Since none of the workspace definitions on the development server were valid I decided to delete them. After checking with a colleague that I had indeed specified the development server, I ran the command. Within about 2 minutes I then had developers coming up to me with questions like “It says my workspace doesn’t exist” and “all my mappings are gone” – oh oh.

Fearing the worst, I ran the following command against the production server:

tf.exe workspaces /owner:* /server:http://productiontfs:8080/

and then the same command against the development server:

tf.exe workspaces /owner:* /server:http://devtfs:8080/

The output was exactly the same. Empty. (Well almost, except for the ones that people had recreated in the past 5 minutes)

So after sheepishly apologising to everybody I set out to find what could cause this. Even on the off chance that I had specified the wrong server - that doesn’t explain why the output of both commands is the same!

The story thickens when a colleague runs those two commands from his machine – different results. Thinking it was something specific to MY machine, I rebooted (just to be sure) and checked my HOSTS file for any weirdness. Pinging each TFS server yields expected results. Then we tried a different user on my machine to see if it was something to do with my profile.

They fired up Team Explorer then went to “Connect to TFS”, entered the production server address and then the “AAA Development TFS” team project showed up in the list. Weird! So then we started trying other computers and we were getting similar strange results.

How the problem happened

In your “%userprofile%\Local Settings\Application Data\Microsoft\Team Foundation\1.0\Cache” directory there is a file called ServerMap.xml.

In this file is a TFS server definition like this:

<Entry>
   <Key xsi:type=”xsd:string”>http://vpc2003:8080/Services/v1.0/Registration.asmx</Key>
  <Value xsi:type=”xsd:string”>73490110-828B-4E1F-B1A1-9EFA5C2FBAAF</Value>
</Entry>

After running a dumping the HTTP traffic between my client and the servers, I discovered that anytime you talk to TFS the first thing it does is requests the Registration.asmx web service. In the output of this web service is an InstanceId field with a GUID.

<RegistrationExtendedAttribute>
   <Name>InstanceId</Name>
   <Value>73490110-828B-4E1F-B1A1-9EFA5C2FBAAF</Value>
</RegistrationExtendedAttribute>

This InstanceId uniquely identifies a TFS server. What happens next is the problem. Because I had been working against the production TFS server, I had an entry in ServerMap.xml with a GUID and the production URL. What my client did when I executed against the development instance was have a look at Registration.asmx, match up the InstanceId then start using the cached URL – which happened to be the production server

There’s not much docco I could find supporting this, however I did find a post on the forums from Buck “Just copying the db is dangerous, because having two servers with the same guid will wreak havoc.” However he recommends that you follow the MSDN instructions (which we did). The instructions seem correct, because if you are restoring a backup you probably don’t want to change the InstanceId. Otherwise you will break all your client’s workspaces.

Recommendations for setting up a development TFS server

So now, we’re rethinking our strategy for a development TFS server. How can this be prevented in the future? This is what we’re thinking about doing:

  • Run the development server in a different domain
  • Run the development server with a different service account (wish we’d done this one earlier!)
  • Execute commands against the development server with different credentials
  • Change the InstanceId – if we can find out how.

So the lesson to be learnt here is – Be very careful when working with restored TFS databases!

[Update 19/10/2006] Changing the InstanceId GUID

Buck and James have kindly pointed out that there is actually a tool installed with the Application  Tier. It’s called InstanceInfo.exe and it is designed exactly for doing this. It’s just not documented anywhere except for this post on the forums.

After making this change it should be safe to connect a client to both the original server and the cloned server.  Here are the instructions (please replace the variables with your own settings).

REM ** Clear the instance info
“%TFSInstallDir%\Tools\InstanceInfo.exe” stamp /setup /install /rollback /d TFSWorkItemTracking,TFSBuild,TFSVersionControl,TFSIntegration /s %DATATIER%
REM ** re-stamp it with a new instance id
“% TFSInstallDir %\Tools\InstanceInfo.exe” stamp /d TFSWorkItemTracking,TFSBuild,TFSVersionControl,TFSIntegration /s %DATATIER%

Next Page »

Blog at WordPress.com. | Theme: Pool by Borja Fernandez.
Entries and comments feeds.