<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>Edward Thomson</title>
        <link>http://www.edwardthomson.com/blog/</link>
        <description></description>
        <language>en</language>
        <copyright>Copyright 2009</copyright>
        <lastBuildDate>Tue, 04 Aug 2009 20:25:56 -0600</lastBuildDate>
        <generator>http://www.sixapart.com/movabletype/</generator>
        <docs>http://www.rssboard.org/rss-specification</docs>
        
        <item>
            <title>Application Compatibility with TFS 2005 and TFS 2008</title>
            <description><![CDATA[<p>Although I usually blog about cross-platform aspects of Team Foundation Server, sometimes you run into interesting issues when writing third-party apps strictly against Microsoft's TFS SDK.  I thought I'd mention one of the problems we ran into writing Remote Accelerator<sup>[1]</sup> - working with both the TFS 2005 and TFS 2008 client assemblies.
</p>

<p>
When writing code against the TFS SDK, you need to specify the version of the SDK to bind to:  for TFS 2005, this you bind to version 8.0; for TFS 2008, you bind to version 9.0.  In theory, you're expected to compile one version of your tool to talk to TFS 2005 and another to talk to TFS 2008.  But if you happen to be calling simple methods<sup>[2]</sup> that have identical signatures between the versions, you can use a little loader trickery to bind against both.
</p>

<p>
When compiling your application, link against the version 9.0 SDK.  When those aren't found -- when the target platform only has the TFS 2005 client installed -- .NET will fire a library resolve event, giving you a second chance to load the DLLs.  Then you can simply load the 2005 libraries and keep running your application.
</p>

<p>
When your application starts, hook up an <code>AssemblyResolve</code> event handler:
</p>

<div class="block"><code class="block"><pre>AppDomain.CurrentDomain.AssemblyResolve +=
    new ResolveEventHandler(ResolveAssembly);</pre></code></div>

<p>
Your <code>ResolveAssembly</code> method should look like this:
</p>

<div class="block"><code class="block"><pre>public static Assembly ResolveAssembly(object sender,
    ResolveEventArgs args)
{
    String[] arguments = args.Name.Split(new string[] { ", ", "," }, 
        StringSplitOptions.RemoveEmptyEntries);

    if (arguments == null || arguments.Length == 0)
    {
        return null;
    }

    String assemblyName = arguments[0];
    String versionRequested = null;
    String cultureRequested = "neutral";
    String pkTokenRequested = "b03f5f7f11d50a3a";

    for (int i = 1; i < arguments.Length; i++)
    {
        if (arguments[i].StartsWith("Version=", 
            StringComparison.CurrentCultureIgnoreCase))
        {
            versionRequested = arguments[i].Substring(8);
        }
        else if (arguments[i].StartsWith("Culture=", 
            StringComparison.CurrentCultureIgnoreCase))
        {
            cultureRequested = arguments[i].Substring(8);
        }
        else if (arguments[i].StartsWith("PublicKeyToken=", 
            StringComparison.CurrentCultureIgnoreCase))
        {
            pkTokenRequested = arguments[i].Substring(15);
        }
    }

    if(
        assemblyName.StartsWith("Microsoft.TeamFoundation.", 
            StringComparison.CurrentCultureIgnoreCase) &&
        versionRequested.Equals("9.0.0.0")
    )
    {
        return Assembly.Load(assemblyName +
            ", Version=8.0.0.0, Culture=" + cultureRequested + 
            ", PublicKeyToken=" + pkTokenRequested);
    }

    return null;
}</pre></code></div>

<p>And with a few lines of code, you've got an application that works with either TFS 2005 or TFS 2008.</p>

<ol class="footnote">
<li> What's <a href="http://www.teamprise.com/products/accelerator/" target="_blank">Remote Accelerator</a> you ask?  It's a single-user version control proxy for Team Foundation Server.  It's perfect for branch offices and telecommuters who want faster access to TFS.
<li> It's important to remind you that this trickery will only work with methods that have identical signatures between the 2005 and 2008 assemblies.  Otherwise, you'll get some nasty class loading exceptions.
</ol>]]></description>
            <link>http://www.edwardthomson.com/blog/2009/08/application_compatibility_with_tfs_2005_and_tfs_2008.html</link>
            <guid>http://www.edwardthomson.com/blog/2009/08/application_compatibility_with_tfs_2005_and_tfs_2008.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">tfs</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">remote accelerator</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">team foundation server</category>
            
            <pubDate>Tue, 04 Aug 2009 20:25:56 -0600</pubDate>
        </item>
        
        <item>
            <title>Updated Teamprise SCM Bundle for Textmate</title>
            <description><![CDATA[<p>Teamprise has just updated our SCM Bundle for Textmate to version 1.4.  This new release provides significant bugfixes for TFS source control from within the Textmate editor.  A big thanks go out to a great customer, David, who was kind enough to report all these bugs and work with us to make sure they were fixed.</p>

<p>If you're using Teamprise on a Mac, the combination of the Textmate text editor and our SCM bundle is hard to beat for quick editing jobs.  You can pick up the updated bundle at <a href="http://labs.teamprise.com/textmate/" target="_blank">Teamprise Labs</a>.</p>

<p>(You do know about the new <a href="http://labs.teamprise.com/" target="_blank">labs.teamprise.com</a>, don't you?  We've published some cool Team Foundation Server tools there already, and we've got a lot more coming soon, so be sure to check it out.)</p>]]></description>
            <link>http://www.edwardthomson.com/blog/2009/07/updated_teamprise_scm_bundle_for_textmate.html</link>
            <guid>http://www.edwardthomson.com/blog/2009/07/updated_teamprise_scm_bundle_for_textmate.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">mac</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">teamprise</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">team foundation server</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">teamprise</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">textmate</category>
            
            <pubDate>Thu, 09 Jul 2009 14:32:00 -0600</pubDate>
        </item>
        
        <item>
            <title>Teamprise unveils &quot;Teamprise Labs&quot; at TechEd 2009</title>
            <description><![CDATA[<p>In case you weren't able to make it to Microsoft TechEd 2009 North America, you may have missed Teamprise's exciting announcement:  we've launched <a href="http://labs.teamprise.com/" target="_blank">labs.teamprise.com</a>, an exciting new site for Team Foundation Server tools.  Our labs site will contain a variety of Teamprise projects from free and open source tools for Team Foundation Server all the way to incubation projects that haven't quite found their way into the next release of our product lineup.</p>

<p>As of our launch, we have a variety of <a href="http://labs.teamprise.com/build/" target="_blank">build tools</a>, our <a href="http://labs.teamprise.com/policysdk/" target="_blank">check-in policy SDK</a> and a <a href="http://labs.teamprise.com/textmate/" target="_blank">source code management plugin to the popular TextMate text editor</a>.</p>

<p>But check back - we've got some more exciting projects in the works that we can't wait to share with you.</p>]]></description>
            <link>http://www.edwardthomson.com/blog/2009/05/teamprise_unveils_teamprise_labs.html</link>
            <guid>http://www.edwardthomson.com/blog/2009/05/teamprise_unveils_teamprise_labs.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">java</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">mac</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">teamprise</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">labs build ide textmate</category>
            
            <pubDate>Tue, 19 May 2009 13:18:04 -0600</pubDate>
        </item>
        
        <item>
            <title>Teamprise Releases Client Suite 3.2</title>
            <description><![CDATA[<p>We at Teamprise are very excited about the newest release of our flagship<br />
product, Teamprise Client Suite 3.2.  This new release adds a bunch of new customer-driven features.</p>

<p><b>Flexible Project Mappings in Eclipse</b><br />
Many customers - especially those moving from other version control systems - want more control over the import process in Eclipse.  In earlier versions of Teamprise Plug-in for Eclipse, we required that your Eclipse projects live beneath the Eclipse workspace root.  While this restriction was mostly sensible, many customers wanted to be able to keep a hierarchical project layout.  In Teamprise Plug-in for Eclipse 3.2, we allow you to set up your local project layout however you wish, then perform your Import from Team Foundation Server.</p>

<p>To take advantage of this new functionality, open up Team Explorer before<br />
performing your import and map your working folders manually before performing<br />
your input.  Let's say your projects look like this in Team Foundation Server:</p>

<blockquote><code><pre>$/BigProject
$/BigProject/Client
$/BigProject/Client/com.example.bigproject.client
$/BigProject/Client/com.example.bigproject.client.ui
$/BigProject/Client/com.example.bigproject.client.ui.win32
$/BigProject/Client/com.example.bigproject.client.ui.gtk
$/BigProject/Server
$/BigProject/Server/com.example.bigproject.server
$/BigProject/Server/com.example.bigproject.server.soap
$/BigProject/Server/com.example.bigproject.server.core</pre></code></blockquote>

<p>Now you can set a working folder mapping for <b>$/BigProject</b> - say to<br />
<b>C:\BigProject</b> - then open up the Teamprise Import Wizard and select all your<br />
projects.  They'll be imported relative to <b>C:\BigProject</b>:</p>

<blockquote><code><pre>C:\BigProject\Client\com.example.bigproject.client
C:\BigProject\Client\com.example.bigproject.client.ui
C:\BigProject\Client\com.example.bigproject.client.ui.win32
C:\BigProject\Client\com.example.bigproject.client.ui.gtk
C:\BigProject\Server\com.example.bigproject.server
C:\BigProject\Server\com.example.bigproject.server.soap
C:\BigProject\Server\com.example.bigproject.server.core</pre></code></blockquote>

<p>You can even do a Get Specific Version inside the Source Control Explorer:<br />
the Import Wizard won't overwrite the version you download, so you'll be<br />
able to import a historic version easily.</p>

<p>The only restriction is that you must map these projects outside of your<br />
Eclipse workspace root - projects inside your Eclipse workspace root must<br />
live in a flat listing.  (This is an Eclipse restriction, not a<br />
Teamprise-imposed one.  Sorry!)</p>

<p><b>Kerberos Authentication</b><br />
Teamprise clients now support passwordless authentication to the Team<br />
Foundation Server on Linux and Mac OS X platforms using a Kerberos ticket.<br />
This provides a convenient, and secure way to authenticate to your Team<br />
Foundation Server.</p>

<p><b>Switch to Branch</b><br />
This is a handy little feature that allows you to work with multiple branches more easy in Eclipse.  Want to work in a different branch?  Simply right click on a project, select "Switch to Branch" and select the TFS branch that you want to work in.  Then you can make whatever changes you want in that branch and switch back to your main branch.  </p>

<p><b>Command-Line Client Functionality</b><br />
The Teamprise Command-Line Client adds a lot of new functionality in 3.2, most notably full support for merging branches from the command line.  CLC also adds conflict resolution, diff support and improved navigational functionality.</p>

<p><b>Other New Stuff</b><br />
3.2 offers much better controls in work item tracking -- native controls for Areas and Iteration dropdowns, autocomplete for other work item dropdowns, and a better history control on most platforms.  Plus we've added support for a new IDE:  IBM RAD 7.5, as well as a new operating system:  HP-UX on Itanium processors.</p>

<p>Teamprise Client Suite 3.2 (and any of the component products) is a free<br />
upgrade for existing Teamprise Client Suite 3.x customers, as well as<br />
customers with a current maintenance agreement.  We recommend upgrading to<br />
get these great new features.</p>]]></description>
            <link>http://www.edwardthomson.com/blog/2009/03/teamprise_releases_client_suite_32.html</link>
            <guid>http://www.edwardthomson.com/blog/2009/03/teamprise_releases_client_suite_32.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">eclipse</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">teamprise</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">client suite</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">eclipse</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">teamprise</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">tfs</category>
            
            <pubDate>Tue, 03 Mar 2009 13:31:49 -0600</pubDate>
        </item>
        
        <item>
            <title>Thirsty Developer Interview</title>
            <description><![CDATA[<p><img align="right" style="padding-left: 10px; padding-bottom: 10px;" src="/blog/images/thirsty_developer.png" alt="Thirsty Developer" target="_blank" /> I had the honor of being interviewed for <a href="http://thirstydeveloper.com/2009/02/09/TheThirstyDeveloper51DanglingLinks.aspx">The Thirsty Developer</a>, a great little podcast by Larry Clarkin and Dave Bost.  I talk about what it's like to develop the Teamprise Client Suite and how we work with cross-platform development in Java.</p>

<p>If you're interested in hearing a little bit about some of the difficulties in writing cross-platform code in general (or a cross-platform Team Foundation Server client in particular), then I recommend you give it a listen.  It's an overview of the topic, and not a deep dive into some of the hairy monster you might encounter, but I have (and will continue to) blog about those topics more in depth.</p>]]></description>
            <link>http://www.edwardthomson.com/blog/2009/02/thirsty_developer_interview.html</link>
            <guid>http://www.edwardthomson.com/blog/2009/02/thirsty_developer_interview.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">potentially amusing</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">teamprise</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">interview</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">thirsty developer</category>
            
            <pubDate>Mon, 09 Feb 2009 22:29:07 -0600</pubDate>
        </item>
        
        <item>
            <title>A Teamprise Look Back at 2008</title>
            <description><![CDATA[<p>"So, Ed, do you have a blog?"</p>

<p>Ouch.  That's a question I didn't want to have to answer, since I haven't put up a post since last July, over <i>six months</i> ago.  So this is that blog post where I apologize and make some vague assertions that I've been really busy since then.</p>

<p>To be fair, I have been really busy:  let's not forget that Teamprise is a startup.  And while we're not the sort of startup where the developers have sleeping bags<sup>[1]</sup> under their desks and the owners crack the whips, let's make no bones about the fact that there are times when you're working frantically to hit your deadlines and you let the less important things slip.  Like writing in this blog.</p>

<p>And although I'm apologizing, we're both probably happier that I'm not blogging when I'm in the midst of the writing lots of code or this would actually end up as a cross between twitter and a trainwreck.  I can see it now:</p>

<blockquote>Day 42: It turns out that xstream 1.1.3 is totally incompatible with the IBM JRE that ships with RAD 7.5.  <i>Fascinating, huh?</i></blockquote>

<p>So keeping a little quietude on the blog front lets me get some perspective on what I'm working on, and I can write about the bigger picture instead of whatever tiny hunk of code has pissed me off that day.  And the bigger picture is that 2008 has been a whirlwind of development at Teamprise:</p>

<p><b>Teamprise Client Suite 3.0 - 3.1.3</b><br />
Client Suite 3.0 was released in March to complement Team Foundation Server 2008, and it included a lot of new features, big performance enhancements, and lots of little improvements<sup>[2]</sup>.  You can read more about 3.0 on <a href="http://www.woodwardweb.com/teamprise/000421.html" target="_blank">Martin Woodward's blog</a>, and more about 3.1 <a href="http://www.edwardthomson.com/blog/2008/07/teamprise_31.html">on mine</a>.</p>

<p><b>Teamprise Remote Accelerator</b><br />
I snuck away from working on Client Suite for a few months in the fall and focused on this handy application that provides developers a big speed boost when they're remote from their Team Foundation Server.  This was an internal tool that we "productized" and released at the Microsoft Professional Developers Conference in October.  I'll write more about it soon -- I really should have blogged about it back then, but instead I jumped right into...</p>

<p><b>Teamprise Client Suite 3.2</b><br />
We haven't released it yet, but I'm including 3.2 on our year-end retrospective since we've put a lot of effort into its development this year<sup>[3]</sup>.  As with all the point releases, it's a free upgrade for existing 3.0 customers (or customers who have purchased maintenance), and we think you'll be very happy with it.  We're really excited about 3.2, and I'll be writing more about it soon.</p>

<p>So that's my excuse, and while I feel like a guy who's turning in his homework late, there should be some potentially interesting stuff coming up.</p>

<ol class="footnote"><li> jwz, of course, has the <a href="http://www.jwz.org/gruntle/nscpdorm.html" target="_blank">canonical tale</a>.
<li> I keep being told not to say "bug fixes" since they're not "bugs", they're "features", right?  And "feature fixes" sounds really stupid, so I'll settle on "improvements".  And the fact that I footnoted this illustrates why I am horrible at marketing.
<li> Okay, well, me less so than most of the rest of the team, seeing as I snuck off to work on Remote Accelerator for a while.  Sorry, guys.</ol>]]></description>
            <link>http://www.edwardthomson.com/blog/2009/01/a_teamprise_look_back_at_2008.html</link>
            <guid>http://www.edwardthomson.com/blog/2009/01/a_teamprise_look_back_at_2008.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">teamprise</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">client suite</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">remote accelerator</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">teamprise</category>
            
            <pubDate>Fri, 30 Jan 2009 16:41:42 -0600</pubDate>
        </item>
        
        <item>
            <title>Teamprise 3.1: More Than Just Bugfixes</title>
            <description><![CDATA[<p>Earlier today we announced the release of Teamprise 3.1, and you might be wondering why you should upgrade.  Maybe you haven't run into any big bugs in Teamprise clients (and we hope you haven't.)  Or maybe you just don't feel like upgrading for "just a point release".  It's true that we only revved the minor version to 3.1, but it's more than just bugfixes:  we've also added a lot of good new features.</p>

<p>The biggest new feature in 3.1 is support for working offline in both our Teamprise Plug-in for Eclipse and our Teamprise Explorer clients.  Offline support is a big advantage for TFS users who have unreliable network connections - particularly telecommuters and road warriors, who might want to get some work done wherever they are, be it a coffeeshop or an airplane.</p>

<p>If you're an Eclipse user and wish to go offline from your Team Foundation Server (or if your network unfortunately takes you offline), just go to the Team menu and select "Work Offline".  You'll be disconnected from TFS, yet you'll still be able to perform all the file operations like you expect -- you can add, edit, move and delete files just like if you were online.  When your network connection returns, you can choose the "Return Online" menu option and pend all those changes to the server.</p>

<p>Working offline in Teamprise Explorer is even simpler, you don't need to specifically enter offline mode.  Simply make whatever changes you wish in your workspace, and click "Return Online" from the Source Control context menu.  Explorer will synchronize your local workspace with the server and pend any changes you made while you were offline.</p>

<p>The Command Line Client has had offline support since version 3.0, so that's nothing new, but it does get some cool features aside from that.  We've added an XML output option for many commands so that you can parse the results easily from a script.  The "brief" and even "detailed" formats tend to truncate output for easy interactive viewing, but this can be troublesome for scripts.  The new XML output should be perfect for getting all the information out of Team Foundation Server.</p>

<p>Those are a few of the bigger features, but there are many more.  And seeing as this is still a point release, there are a lot of bug fixes, too.  If you want to see all the details, check out the <a href="http://download-us.teamprise.com/cs/3.1.0.8392R/release-notes/release-notes.html" target="_blank">3.1 release notes</a>.</p>

<p>We've spent a lot of time on 3.1, and we think you'll enjoy it, even if you're not the type of person to upgrade for "just a point release".</p>]]></description>
            <link>http://www.edwardthomson.com/blog/2008/07/teamprise_31.html</link>
            <guid>http://www.edwardthomson.com/blog/2008/07/teamprise_31.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">teamprise</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">offline</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">team foundation server</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">teamprise</category>
            
            <pubDate>Wed, 09 Jul 2008 22:30:00 -0600</pubDate>
        </item>
        
        <item>
            <title>Visit Teamprise at TechEd 2008 Developer</title>
            <description><![CDATA[<p><img align="right" style="padding-left: 10px;" src="/blog/images/teched2008.jpg" alt="TechEd Developers 2008" /> Teamprise will be exhibiting at TechEd 2008 Developer in Orlando, June 3 - June 6.  If you're interested in Team Foundation Server or source control with Java, you should stop by booth 1426 and say hello.</p>

<p>We'll be giving demos of the new Teamprise 3 and all it's great new features.  Hope to see you there!</p>]]></description>
            <link>http://www.edwardthomson.com/blog/2008/05/visit_teamprise_at_teched_2008_developer.html</link>
            <guid>http://www.edwardthomson.com/blog/2008/05/visit_teamprise_at_teched_2008_developer.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">teamprise</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">teamprise</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">teched</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">tfs</category>
            
            <pubDate>Fri, 30 May 2008 13:32:08 -0600</pubDate>
        </item>
        
        <item>
            <title>Chicago: Java Development with Team System</title>
            <description><![CDATA[<p>It's been a long time since I updated my blog, in part because I'm lazy, but mostly because we were busy putting the finishing touches on <a href="http://www.teamprise.com/" target="_blank">Teamprise Client Suite 3.0</a>.  We're very proud of our 3.0 release, it's got <a href="http://www.woodwardweb.com/teamprise/000421.html" target="_blank">a lot of great new features</a>, and we think you'll be very happy with it.</p>

<p>If you're in the greater Chicagoland area next week, I've been invited to the <a href="http://vsts.sogeti-chicago.com/default.aspx" target="_blank">Chicago VSTS User Group</a> to give a tour of the new version of Teamprise.  If you're interested in how Team System can play nice with Java developers, I suggest you stop by and check it out:</p>

<p>The meeting begins at 5:30 PM at the Microsoft Chicago (Loop) Offices:<br />
<a href="http://maps.google.com/maps?f=q&hl=en&geocode=&q=77+w+wacker+dr,+chicago,+il&jsv=107&sll=41.91577,-87.688114&sspn=0.00867,0.011802&ie=UTF8&ll=41.88787,-87.630236&spn=0.008674,0.011802&t=h&z=16&iwloc=addr" target="_blank">77 W Wacker Dr, Suite 2300</a></p>

<p><a href="http://vsts.sogeti-chicago.com/Lists/Announcements/DispForm.aspx?ID=3&Source=http%3A%2F%2Fvsts%2Esogeti%2Dchicago%2Ecom%2Fdefault%2Easpx" target="_blank">Please RSVP</a> if you're going to attend.</p>

<p>Even if you can't make it next week, be sure to check out the <a href="http://vsts.sogeti-chicago.com/default.aspx" target="_blank">Chicago VSTS User Group</a>, or another user group near you.  It's a great resource if you're a VSTS or Team Foundation Server user!</p>]]></description>
            <link>http://www.edwardthomson.com/blog/2008/04/chicago_java_development_with_team_system.html</link>
            <guid>http://www.edwardthomson.com/blog/2008/04/chicago_java_development_with_team_system.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">eclipse</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">java</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">teamprise</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">chicago</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">chicago vsts users group</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">java</category>
            
            <pubDate>Tue, 15 Apr 2008 18:14:02 -0600</pubDate>
        </item>
        
        <item>
            <title>Heroes Happen Here: TFS 2008 Launch</title>
            <description><![CDATA[<p>Microsoft's currently launching the newest version of Team Foundation Server as part of Visual Studio 2008.  There are launch events all across the US (as well as in many other parts of the world), so if you're interested in the new features in TFS 2008, check out the events near you at Microsoft's<br />
"<a href="http://www.microsoft.com/heroeshappenhere/">Heroes Happen Here</a>" site.</p>

<p>Teamprise will be exhibiting at the Chicago launch event tomorrow, March 11.  We're in <b>booth 47</b> - stop by and say hi if you're attending.</p>

<p>Even better -- our very own <a href="http://www.woodwardweb.com/">Martin Woodward</a> will be presenting at the Dublin launch event tomorrow.  Be sure to check him out if you're attending out there.</p>

<p>Otherwise, there are still plenty of events in a city near you - be sure to go check out what's new in TFS 2008!</p>]]></description>
            <link>http://www.edwardthomson.com/blog/2008/03/heroes_happen_here_tfs_2008_launch.html</link>
            <guid>http://www.edwardthomson.com/blog/2008/03/heroes_happen_here_tfs_2008_launch.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">teamprise</category>
            
            
            <pubDate>Mon, 10 Mar 2008 16:29:32 -0600</pubDate>
        </item>
        
        <item>
            <title>What Would Turing Do?</title>
            <description><![CDATA[<p>I got a flyer in the mail for the RSA Conference 2008.  Since I enjoy cryptography - and despite the fact that I know next to nothing about it - I was interested.</p>

<p>But I'm not going to lie, I'm really put off by the advertising.  This year's theme for the conference is Alan Turing.  How this conference has been going on for 14 years and ignored him up to now is a mystery to me.  (They made a carrier pigeon the theme in 1997.  That's right, a carrier pigeon apparently did more for security than Turing.)</p>

<p>But now that RSA has finally decided to recognize the man, they're doing some stupid advertising around it:  What Would Turing Do?  Which, frankly, would make a cool bumper sticker, and I would have been impressed... if they had just asked the question and not tried to answer it.</p>

<p>Instead, they give some odd answers that show that their marketing department never bothered to talk to a developer - or even a read a Turing biography.  Their answers are frequently bizarre and have nothing to do with Turing:  he would "have a raging sushi addiction", "be a huge Dr. Who fan" and would "collect rare Phillip Glass vinyl".  (Yes, they also didn't bother to google "Phillip Glass" to realize that they misspelled his name.)</p>

<p>This is the company that was founded by three math PhDs who invented the RSA public key algorithm the RC block ciphers, and the MDx hash functions.  And they're suggesting that he would "recite the far reaches of imaginary numbers to pass the time"?  I'd like to think that would be beneath Turing...  hell, it would be beneath me.  (A googleplex times <i>i</i>.  A googleplex plus one times <i>i</i>.  See, not very satisfying is it?)</p>

<p>Very disappointing.</p>

<p>Especially since it's obvious that really, Turing wouldn't care about sushi or Bill Gates.  He'd be far too busy enjoying the liberal sexual mores of this fine time  we live in.</p>]]></description>
            <link>http://www.edwardthomson.com/blog/2007/12/what_would_turing_do.html</link>
            <guid>http://www.edwardthomson.com/blog/2007/12/what_would_turing_do.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">potentially amusing</category>
            
            
            <pubDate>Wed, 05 Dec 2007 18:36:50 -0600</pubDate>
        </item>
        
        <item>
            <title>Debugging JNI in VisualStudio</title>
            <description><![CDATA[<p>Gluing C and Java together isn't particularly difficult - <a href="http://en.wikipedia.org/wiki/Java_Native_Interface">JNI</a> is a well-designed bridge to the world of native code.  Simple tasks are straightforward, and more complex ones are still possible.  Surprisingly, it's quite easy to debug as well.</p>

<p>When working on native code, I tend to make all my code work in C first - debug it, write some native test cases, and ensure that everything works.  Then I write a little JNI glue to make it accessible from Java.  This has worked surprisingly well, and given few surprises.  But what happens when something goes wrong?</p>

<p>For example:  I was writing some ugly Win32 code to do some various things that can only be done in C.  Despite my aversion to programming in Windows, I whipped up some native code to access what I needed.  I wrote some test cases to confirm that everything worked, and I was pretty happy with myself, until I realized that all the work I had done was on ANSI C strings (ie, null-terminated char arrays.)</p>

<p>Regardless, I tied it up to my Java with some JNI code just to watch it fail when I passed in Unicode strings.</p>

<p>I'm not particularly well-versed in the intricacies of Unicode, and even less so Win32 programming with its <code>WCHAR</code>s and <code>PSEC_WCHAR</code>s and nasty habit of <code>#define</code>'ing function names to those that end in <code>W</code>.  So I wasn't real sure of exactly what I needed to change to make my native code Unicode friendly.  It sure would be nice if I could debug this in VisualStudio.</p>

<p>Attaching to a running process in <code>gdb</code> is easy - and it's easy to provide debugging symbols for that process.  VisualStudio is a little less straightforward, but just as easy.</p>

<p>First, make sure that your DLL is emitting debugging symbols.  Ensure that you're passing these flags to the compiler and linker:</p>

<blockquote>CFLAGS: <code>-Od -DDEBUG -D_DEBUG -Zi</code><br />
LFLAGS: <code>-DEBUG</code></blockquote>

<p>Build your native DLL and ensure that a <code>.PDB</code> file was created - this is the debugging information for your library.  Run your java application.</p>

<p>Open VisualStudio and setup your symbols.  Go to Tools -&gt; Options, and open the Debugging -&gt; Symbols pane.  Add a new PDB location which points to the PDB file that was created from your build.</p>

<p>Now you can attach to your java process by going Tools -&gt; Attach to Process.</p>

<p>Finally, you can load the source (ensure that this is the source you built from, in the same directory as your PDB file) and set breakpoints, etc.</p>]]></description>
            <link>http://www.edwardthomson.com/blog/2007/12/debugging_jni_in_visualstudio.html</link>
            <guid>http://www.edwardthomson.com/blog/2007/12/debugging_jni_in_visualstudio.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">java</category>
            
            
            <pubDate>Tue, 04 Dec 2007 16:06:19 -0600</pubDate>
        </item>
        
        <item>
            <title>BSOD Screensaver in OS X</title>
            <description><![CDATA[<p>Engadget has an article on <a href="http://www.engadget.com/2007/10/30/mini-how-to-remove-the-windows-bsod-icon-in-leopard-make-os-x-a-little-less-smug/" target="_blank">how to remove the Windows BSOD icon in 10.5</a>.  They seem to think that removing it is a good idea - since it's "so pompous and galling".</p>

<p>I call shenanigans.  Pompous?  Maybe.  Galling?  Give me a break.</p>

<p>It's true, Microsoft would never do something like this.  Mostly because Microsoft cares precious little about interoperability with other network filesystems.  CIFS is good enough for everybody - how's that for smug?</p>

<p>I suggest ignoring the whiners and embracing the BSOD icon.  And then take it a step further:  install <a href="http://www.jwz.org/xscreensaver/" target="_blank">xscreensaver</a> and use the BSOD screensaver.  Then smile when people tell you "there's something wrong with your computer!"</p>]]></description>
            <link>http://www.edwardthomson.com/blog/2007/10/bsod_screensaver_in_os_x.html</link>
            <guid>http://www.edwardthomson.com/blog/2007/10/bsod_screensaver_in_os_x.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">mac</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">potentially amusing</category>
            
            
            <pubDate>Tue, 30 Oct 2007 19:52:01 -0600</pubDate>
        </item>
        
        <item>
            <title>Learn about Teamprise in Chicago: Oct 10</title>
            <description><![CDATA[<p>Sorry for the late notice, but if you're free on Wednesday evening, this might be interesting.</p>

<p>Teamprise was invited to present at this month's <a href="http://vsts.sogeti-chicago.com/">Chicago VSTS Users Group</a> to discuss using TFS from within the Eclipse IDE and from non-Microsoft platforms.  I'm excited to make a fool of myself speaking in public (and excited to learn that a VSTS Users Group exists in Chicago.)</p>

<p>I'll be speaking with David Dugan who's a Senior Consultant for Sogeti.  David will be discussing accessing TFS from older versions of Visual Studio.</p>

<p>Maybe I'll see you there!</p>]]></description>
            <link>http://www.edwardthomson.com/blog/2007/10/learn_about_teamprise_in_chicago.html</link>
            <guid>http://www.edwardthomson.com/blog/2007/10/learn_about_teamprise_in_chicago.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">teamprise</category>
            
            
            <pubDate>Sun, 07 Oct 2007 13:56:08 -0600</pubDate>
        </item>
        
        <item>
            <title>Vista Frustrations</title>
            <description><![CDATA[<p>A lot's been made of the various frustrations that go along with running Windows Vista.  I won't rehash them, mostly because I'm not able to.  My frustration is with installing the damnable Operating System:</p>

<p><img src="/blog/images/vistainstall1.png" class="photo" /></p>

<p>Perhaps this dialog doesn't look particularly strange, until you realize that the install disc only included four CD images:</p>

<p><img src="/blog/images/vistainstall2.png" class="photo" /></p>

<p>(This was the MSDN install for Vista.)</p>]]></description>
            <link>http://www.edwardthomson.com/blog/2007/10/vista_frustrations.html</link>
            <guid>http://www.edwardthomson.com/blog/2007/10/vista_frustrations.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">windows</category>
            
            
            <pubDate>Sat, 06 Oct 2007 14:52:06 -0600</pubDate>
        </item>
        
    </channel>
</rss>
