<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Life as a Developer</title><subtitle type="html">This blog is about my experiences "starting" out as a developer.</subtitle><id>http://blogs.msdn.com/tom_mathews/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/tom_mathews/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/tom_mathews/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2006-03-13T20:25:00Z</updated><entry><title>Binding a ToolTip in XAML</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/tom_mathews/archive/2006/11/06/binding-a-tooltip-in-xaml.aspx" /><id>http://blogs.msdn.com/tom_mathews/archive/2006/11/06/binding-a-tooltip-in-xaml.aspx</id><published>2006-11-06T21:16:00Z</published><updated>2006-11-06T21:16:00Z</updated><content type="html">&lt;P&gt;So, I'm ramping up on XAML. In the smart client version of CMS, we'll allow the users to modify the content metadata on a two-column display (description on the left, text/check/combo box on the right). If the value is changed, a tooltip will show the previous value.&lt;/P&gt;
&lt;P&gt;But there's a problem. According to the docs, ToolTips can't have a Parent; they're a brand new window without the hierarchy. So how do you bind it?&lt;/P&gt;
&lt;P&gt;I posed the question to our internal Avalon Discussion alias, and recieved several replys. Figuring I'm not the only person to have experienced this problem (and having a known propensity towards tooltips), I thought I'd share them. But first, the setup:&lt;/P&gt;
&lt;P&gt;I have a UserControl that wraps the behavior of description/___Box/Tooltip, so that the main page just drops one of these controls whenever it has a new textbox. This control is named "SGT", which has a dependency property OriginalValue.&amp;nbsp;Here's what it looks like when I started out (note that it doesn't work-- ToolTip will not have access to SGT):&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;UserControl&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;x:Class&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;"&lt;SPAN style="COLOR: blue"&gt;CMS_Client.Controls.SubmissionGridText&lt;/SPAN&gt;"&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;"&lt;SPAN style="COLOR: blue"&gt;&lt;A href="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&gt;&lt;FONT color=#0000ff&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;xmlns:x&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;"&lt;SPAN style="COLOR: blue"&gt;&lt;A href="http://schemas.microsoft.com/winfx/2006/xaml"&gt;&lt;FONT color=#0000ff&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;x:Name&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;"&lt;SPAN style="COLOR: blue"&gt;SGT&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;Grid&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;Grid.ColumnDefinitions&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;ColumnDefinition&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;SharedSizeGroup&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;"&lt;SPAN style="COLOR: blue"&gt;Col0SizeGroup&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;ColumnDefinition&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;ColumnDefinition&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;SharedSizeGroup&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;"&lt;SPAN style="COLOR: blue"&gt;Col1SizeGroup&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;ColumnDefinition&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;Grid.ColumnDefinitions&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;Grid.RowDefinitions&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;RowDefinition&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;RowDefinition&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;Grid.RowDefinitions&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;TextBlock&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;"&lt;SPAN style="COLOR: blue"&gt;Descriptn&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Grid.Column&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Grid.Row&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Text&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;{Binding Description,ElementName=SGT}&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;TextBlock&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;TextBox&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;"&lt;SPAN style="COLOR: blue"&gt;ValueTextBox&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Grid.Column&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;1&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Grid.Row&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Text&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;{Binding Value,ElementName=SGT}&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ToolTipService.InitialShowDelay&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;500&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ToolTipService.ShowDuration&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;60000&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;TextBox.ToolTip&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;ToolTip&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;"&lt;SPAN style="COLOR: blue"&gt;PreviousValue&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Placement&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Right&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;TextBlock&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;Text&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;"&lt;SPAN style="COLOR: blue"&gt;{Binding OriginalValue,ElementName=SGT}&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;ToolTip&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;TextBox.ToolTip&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;TextBox&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;Grid&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;UserControl&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;The first suggestion (Neil Kronlage) was to set the DataContext on the UserControl to be itself, and then the ToolTip would inherit that context:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;UserControl&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;x:Class&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;"&lt;SPAN style="COLOR: blue"&gt;CMS_Client.Controls.SubmissionGridText&lt;/SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;"&lt;SPAN style="COLOR: blue"&gt;&lt;A href="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&gt;&lt;FONT color=#0000ff&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;xmlns:x&lt;/SPAN&gt;&lt;SPAN&gt;="&lt;SPAN style="COLOR: blue"&gt;&lt;A href="http://schemas.microsoft.com/winfx/2006/xaml"&gt;&lt;FONT color=#0000ff&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;"&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;x:Name&lt;/SPAN&gt;&lt;SPAN&gt;="&lt;SPAN style="COLOR: blue"&gt;SGT&lt;/SPAN&gt;"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataContext=”{Binding ElementName=SGT}”&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;…&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;TextBox.ToolTip&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;ToolTip&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;Name&lt;/SPAN&gt;&lt;SPAN&gt;="&lt;SPAN style="COLOR: blue"&gt;PreviousValue&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Placement&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Right&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextBlock Text="&lt;SPAN style="COLOR: blue"&gt;{Binding OriginalValue}&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&amp;nbsp; &amp;lt;!--this uses the datacontext --&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN&gt;A second suggestion (Neil and Adam Smith) was that we could use PlacementTarget in the binding. This is nice, as I am actually inheriting the DataContext already from the page that hosts the DataControl, and this would allow the ToolTip to gain access back to the origial control. As Adam noted, though, you have to be aware of the parent/child structure off your markup:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ToolTip Name="PreviousValue" Placement="Right"&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;SPAN style="COLOR: red"&gt;DataContext=”{Binding RelativeSource={RelativeSource Self},Path=PlacementTarget.Parent.Parent}”&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextBlock Text="{Binding OriginalValue&lt;/FONT&gt;&lt;S&gt;&lt;SPAN style="COLOR: red"&gt;,ElementName=SGT&lt;/SPAN&gt;&lt;/S&gt;&lt;FONT color=#000000&gt;}"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/SPAN&gt;Hope that helps someone out there. Appologies if the formatting comes out odd; I pasted snippets right out of the emails.&lt;/P&gt;&lt;/SPAN&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=934109" width="1" height="1"&gt;</content><author><name>Tom Mathews</name><uri>http://blogs.msdn.com/members/Tom+Mathews.aspx</uri></author></entry><entry><title>Back to the land of the living</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/tom_mathews/archive/2006/11/02/back-to-the-land-of-the-living.aspx" /><id>http://blogs.msdn.com/tom_mathews/archive/2006/11/02/back-to-the-land-of-the-living.aspx</id><published>2006-11-02T19:48:00Z</published><updated>2006-11-02T19:48:00Z</updated><content type="html">&lt;P&gt;Well, it's been a few months. I haven't forgotten you guys! Just been busy. Here's a recap:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;August&lt;BR&gt;&lt;/STRONG&gt;Mark and&amp;nbsp;I spent the end of August wrapping up work on CMS v2 (the internal Content Management System that coordinates everything that goes into the Vista SDK). The front end was finished pretty much on time, while the back end (based on &lt;A class="" title="Windows Workflow Foundation" href="http://wf.netfx3.com/" target=_blank mce_href="http://wf.netfx3.com/"&gt;Windows Workflow Foundation&lt;/A&gt;) ran a little long. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;September&lt;BR&gt;&lt;/STRONG&gt;A lot of testing on the front end, while work on the back end wrapped up. Mid-to-late-September a new PM was assigned to manage the project (Barry). CMS v2 was put on hold while he talked with various contributors and users of CMS v1, and created new specs for the work we'd already done.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;October&lt;/STRONG&gt;&lt;BR&gt;Barry continued working with our users, and started to add new features to the specs, based on that feedback. Most of these will be required before we roll out (now slated for November). There's some tension that's been forming here; I'll think about exploring those dynamics in another post. Or not. :P&lt;/P&gt;
&lt;P&gt;The Windows DDK group started talking with our group; they'd like to leverage CMS, as they currently don't have an integrated&amp;nbsp;workflow/change tracking system. We setup a server for them to bang on to see how CMS works and determine if they want to use it. Not only would it be cool to have my work be used by more than just this team, cross-group collaboration is an important review goal within Microsoft. :)&lt;/P&gt;
&lt;P&gt;Since August was spent testing the front end as much as possible, I've spent October looking into &lt;A class="" href="http://wpf.netfx3.com/" target=_blank mce_href="http://wpf.netfx3.com/"&gt;Windows Presentation Foundation&lt;/A&gt;. I'm going to be working on a &lt;A class="" href="http://www.zdnet.com.au/insight/software/soa/Investigating_Windows_Vista_s_breadcrumb_bar_/0,139023769,139218189,00.htm" mce_href="http://www.zdnet.com.au/insight/software/soa/Investigating_Windows_Vista_s_breadcrumb_bar_/0,139023769,139218189,00.htm"&gt;Breadcrumb Bar&lt;/A&gt; sample, as well as possibly a Windows client to CMS (v1 and v2 were implemented in ASP.Net). I have to admit that creating properly databound applications in WPF/Avalon/XAML has been... challenging. I'll post more about that later.&lt;/P&gt;
&lt;P&gt;In my spare time I've been picking up &lt;A class="" href="http://msdn.microsoft.com/vstudio/extend/" mce_href="http://msdn.microsoft.com/vstudio/extend/"&gt;VSIP&lt;/A&gt; and &lt;A class="" href="http://msdn.microsoft.com/directx/XNA/default.aspx" mce_href="http://msdn.microsoft.com/directx/XNA/default.aspx"&gt;XNA&lt;/A&gt;. I tell you, there just isn't enough time in the day to play with all these cool technologies.&lt;/P&gt;
&lt;P&gt;And now we're up to date!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=933871" width="1" height="1"&gt;</content><author><name>Tom Mathews</name><uri>http://blogs.msdn.com/members/Tom+Mathews.aspx</uri></author></entry><entry><title>Microsoft Gamefest 2006</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/tom_mathews/archive/2006/08/17/704915.aspx" /><id>http://blogs.msdn.com/tom_mathews/archive/2006/08/17/704915.aspx</id><published>2006-08-18T02:08:00Z</published><updated>2006-08-18T02:08:00Z</updated><content type="html">&lt;P&gt;I made my way over to &lt;A href="https://www.microsoftgamefest.com/"&gt;&lt;FONT color=#669966&gt;Gamefest&lt;/FONT&gt;&lt;/A&gt; was this week, a conference geared to game industry professionals (developers/testers/marketers). I was rather hoping that my manager would agree to cover it as a training expense, but that was a no-go. Fortunately, I was hooked up with a Microsoft discount code by a fellow employee.&lt;/P&gt;
&lt;P&gt;What an amazing event. The catering was fantastic. The party on Monday was great (complete with a Segway slalom course). But the true excellence was the content of the conference itself. Sessions covered designing multi-core applications, managed code performance tricks, Direct3D 10 analysis, &lt;A href="http://www.microsoft.com/xna/"&gt;&lt;FONT color=#669966&gt;XNA&lt;/FONT&gt;&lt;/A&gt; (&lt;A href="http://msdn.microsoft.com/directx/xna/gamestudio/"&gt;&lt;FONT color=#669966&gt;wow&lt;/FONT&gt;&lt;/A&gt;!), and over a hundred more distinct talks.&lt;/P&gt;
&lt;P&gt;One of the best sessions for me was Taming the CLR: How to Write Really Fast Managed Code by &lt;A href="http://blogs.msdn.com/ricom"&gt;&lt;FONT color=#669966&gt;Rico Mariani&lt;/FONT&gt;&lt;/A&gt;. I understand he has covered a lot of what he presented in his blog, and can't wait to check it out. I also found out he's in the same building as I am... I plan to chat with him about the talk when he gets back from vacation.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=704915" width="1" height="1"&gt;</content><author><name>Tom Mathews</name><uri>http://blogs.msdn.com/members/Tom+Mathews.aspx</uri></author></entry><entry><title>Microsoft Picnic '06</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/tom_mathews/archive/2006/07/27/680795.aspx" /><id>http://blogs.msdn.com/tom_mathews/archive/2006/07/27/680795.aspx</id><published>2006-07-28T00:14:00Z</published><updated>2006-07-28T00:14:00Z</updated><content type="html">&lt;P&gt;Every year, Microsoft schedules a weekend or the company picnic. I've never remembered to go before this year, so it was my first time there.&lt;/P&gt;
&lt;P&gt;Several dozen busses showed up at the campus, and ferried everyone to a huge field an hour away. They handed out around five sheets of text, covered with activities that could be gone to, including RC racing, performance artists, rock climbing, bungee jumping, casinos, mystics tents, volleyball, Bingo, raffles, and loads more. Overall a very family friendly day of fun.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/photos/tom_mathews/MS_Picnic_Food_Courts.aspx" target=_blank&gt;&lt;IMG src="http://blogs.msdn.com/photos/tom_mathews/images/680680/640x142.aspx" border=0&gt;&lt;/A&gt;&lt;BR&gt;The food court was insane. Above you see something like 20+ locations you could pick up ice cream, burgers, chicken sandwiches, ribs, brownies, watermelon, etc. The picture covers probably 1/5th of the venue.&lt;/P&gt;
&lt;P&gt;Of course, there was plenty of refreshments, too:&lt;BR&gt;&lt;A href="http://blogs.msdn.com/photos/tom_mathews/picture680701.aspx" target=_blank&gt;&lt;IMG src="http://blogs.msdn.com/photos/tom_mathews/images/680701/640x250.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;All set in the midst of an incredible view...&lt;BR&gt;&lt;A href="http://blogs.msdn.com/photos/tom_mathews/picture680682.aspx" target=_blank&gt;&lt;IMG src="http://blogs.msdn.com/photos/tom_mathews/images/680682/640x236.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=680795" width="1" height="1"&gt;</content><author><name>Tom Mathews</name><uri>http://blogs.msdn.com/members/Tom+Mathews.aspx</uri></author></entry><entry><title>Developing a game for the Motorola Q</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/tom_mathews/archive/2006/07/24/677307.aspx" /><id>http://blogs.msdn.com/tom_mathews/archive/2006/07/24/677307.aspx</id><published>2006-07-25T02:19:00Z</published><updated>2006-07-25T02:19:00Z</updated><content type="html">&lt;P&gt;Just before I went on vacation, I picked up the &lt;A href="http://www.motorola.com/q"&gt;Motorola Q&lt;/A&gt;, which runs &lt;A href="http://www.microsoft.com/windowsmobile/5/default.mspx"&gt;Windows Mobile 5&lt;/A&gt; Smartphone. Microsoft is working with Verizon Mobile to offer a pretty hefty employee discount, both on the hardware as well as the service plans.&lt;/P&gt;
&lt;P&gt;I downloaded the 900MB &lt;A href="http://msdn.microsoft.com/mobility/windowsmobile/howto/resourcekit/default.aspx"&gt;Windows Mobile 5.0 Developer Resource Kit&lt;/A&gt;, the &lt;A href="http://www.microsoft.com/downloads/info.aspx?na=47&amp;amp;p=2&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=3baa5b7d-04c1-4ec2-83dc-61b21ec5fe57&amp;amp;u=details.aspx%3ffamilyid%3dDC6C00CB-738A-4B97-8910-5CD29AB5F8D9%26displaylang%3den"&gt;Windows Mobile 5.0 SDK for Smartphones&lt;/A&gt;&amp;nbsp;(possibly not necessary), &lt;A href="http://www.microsoft.com/downloads/info.aspx?na=47&amp;amp;p=3&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=3baa5b7d-04c1-4ec2-83dc-61b21ec5fe57&amp;amp;u=details.aspx%3ffamilyid%3d7269173A-28BF-4CAC-A682-58D3233EFB4C%26displaylang%3den"&gt;ActiveSync 4.2&lt;/A&gt;, the &lt;A href="http://developer.motorola.com/?path=1.2.7.37.497"&gt;Motorola Q Developer Guide&lt;/A&gt;, and the &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=eb580a44-cb40-4be1-9ff3-e224bf669cd0&amp;amp;DisplayLang=en"&gt;Emulator Image for the Q&lt;/A&gt;&amp;nbsp;(makes the smartphone emulator look just like a Q).&lt;/P&gt;
&lt;P&gt;The first thing I did, of course, was try my hand at writing a game. I threw together something on my first day in Oregon, loosely based on geometry wars and implemented using GDI. A square is moved around on the screen, chased by circles that must be shot down. &lt;/P&gt;
&lt;P&gt;I implemented it with techniques from a Design Patterns course I took earlier in the month. Shape objects have behavior objects (Decorator pattern) that can modify the owner (such as a Sin/Cos behavior, which alters the parent's course in an elliptical pattern, or a MoveToShip pattern that moves the shape towards the ship). The Shape object itself is an abstract class, with a GDI-specific implementation (Strategy pattern). Factories and adapters, oh my!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;A testament to patterns&lt;BR&gt;&lt;/STRONG&gt;Later that week I got around to adding a&amp;nbsp;Managed DirectX implementation of the various objects, and it only took a couple of hours. This week I added black hole, which modifies all other objects on the screen to move towards the owner; it took less than 30 minutes to implement the new Behavior and add the code to instantiate it. &lt;A href="http://www.amazon.com/gp/product/0321126971/103-6708476-8979831?v=glance&amp;amp;n=283155"&gt;Design patterns &lt;/A&gt;rock. :)&lt;/P&gt;
&lt;P&gt;There will be a post soon about a couple odd problems I ran into.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=677307" width="1" height="1"&gt;</content><author><name>Tom Mathews</name><uri>http://blogs.msdn.com/members/Tom+Mathews.aspx</uri></author></entry><entry><title>Vacation</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/tom_mathews/archive/2006/07/21/677270.aspx" /><id>http://blogs.msdn.com/tom_mathews/archive/2006/07/21/677270.aspx</id><published>2006-07-22T00:12:00Z</published><updated>2006-07-22T00:12:00Z</updated><content type="html">&lt;P&gt;Wow, it's been a month. Sorry for not posting recently, I was on vacation in Oregon for part of the time. There's a lot I want to blog about. So I'll be taking some time out today to compose several posts and schedule them to go out.&lt;/P&gt;
&lt;P&gt;Work/Life balance is pretty important at Microsoft. Managers schedule morale events for the team, the group has morale events, the division has holiday parties, and you get a fair amount of vacation time. It's not like Europe, or so I hear. But it's pretty good from a USA perspective.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=677270" width="1" height="1"&gt;</content><author><name>Tom Mathews</name><uri>http://blogs.msdn.com/members/Tom+Mathews.aspx</uri></author></entry><entry><title>MAKE: Magazine lecture</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/tom_mathews/archive/2006/06/16/634739.aspx" /><id>http://blogs.msdn.com/tom_mathews/archive/2006/06/16/634739.aspx</id><published>2006-06-17T01:58:00Z</published><updated>2006-06-17T01:58:00Z</updated><content type="html">&lt;P&gt;Today I went over to the conference center and watched a presentation put on by &lt;A href="http://www.oreillynet.com/pub/au/26"&gt;Dale Dougherty&lt;/A&gt;, Editor and Publisher of Make, and &lt;A href="http://www.lifehacker.com/software/how-i-work/how-i-work-phillip-torrone-173456.php"&gt;Phillip Torrone&lt;/A&gt;, Associate Editor of &lt;A href="http://www.makezine.com/"&gt;Make Magazine&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;It was a pretty interesting show. They had shirts and free magazines (gone by the time I got there), and a lot of sample made stuff. The presentation itself went into the reasons why they thought there was a maker resurgence, and the thinking behind what they did. Tidbits like: The trim size of Make was based off the 1959 Popular Science magazine, and the prescience of the &lt;A href="http://ullamaaria.typepad.com/hobbyprincess/2005/03/draft_craft_man.html"&gt;Craft Manifesto&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;He also brought his &lt;A href="http://www.makezine.com/blog/archive/2005/06/portable_rotary.html"&gt;portable rotary phone&lt;/A&gt;. The first caller to ring his number (206-355-1XXX) received a gift. It was pretty odd hearing the old-school phone ring wirelessly. Over and over again as different callers made it through.&lt;/P&gt;
&lt;P&gt;At the end, Microsofties had the opportunity to tell what they were making. Personal projects ranged from robots, to 30' working pirate ships with the kids for the back yard (complete with 50-calliber canons), to a compass that always shows the direction to the &lt;A href="http://seattlepi.nwsource.com/business/261390_msfttechfest02.html"&gt;nearest starbucks&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Finally, a few links I picked up:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.phidgetsusa.com/"&gt;Phidgets USA&lt;/A&gt;, providers of lots of project parts.&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.sparkfun.com"&gt;Spark Fun Electronics&lt;/A&gt;, "Where most of my disposable income goes." -- Torrone&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.instructables.com/"&gt;Instructables&lt;/A&gt;, step-by-step project recipes and collaboration&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;"The best way to predict the future is to build it." &lt;/P&gt;
&lt;P&gt;When I got back, I was telling Lance about the presentation. In the course of the dialog, he mentioned that he wanted to pick up C#. I pulled out one of the better C# books, &lt;A href="http://www.microsoft.com/mspress/books/5861.asp"&gt;Inside C#&lt;/A&gt;... and he said, "Doesn't that name look familiar?&amp;nbsp;&amp;nbsp; You sit next to him." Sure enough, &lt;A href="http://blogs.msdn.com/tomarcher"&gt;Tom Archer&lt;/A&gt; joined our team a few weeks ago, and sits in the office next to mine. I just hadn't made the connection yet. Small world!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=634739" width="1" height="1"&gt;</content><author><name>Tom Mathews</name><uri>http://blogs.msdn.com/members/Tom+Mathews.aspx</uri></author></entry><entry><title>XBox 360 System Update Beta</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/tom_mathews/archive/2006/05/30/611184.aspx" /><id>http://blogs.msdn.com/tom_mathews/archive/2006/05/30/611184.aspx</id><published>2006-05-31T02:09:00Z</published><updated>2006-05-31T02:09:00Z</updated><content type="html">&lt;P&gt;Yet another perk to working at Microsoft. :)&lt;/P&gt;
&lt;P&gt;I can't go into details, but I can say&amp;nbsp; that I was "invited to a Beta of an upcoming System Update, the same one disclosed in &lt;A href="http://gamerscoreblog.com/team/archive/2006/05/26/535032.aspx"&gt;Gamerscoreblog.com&lt;/A&gt; and &lt;A href="http://www.pixelgamers.com/xbox360/news/1000658/33/a-new-tab-is-coming-to-xbox-live-dashboard,-but-what-is-it.html"&gt;other&lt;/A&gt; sites. The beta is not open to more participants – we are not receiving applications."&lt;/P&gt;
&lt;P&gt;It is very, very cool getting a chance to help out the XBox guys make sure their upcoming update is as solid as possible. And... it's amazing stuff they have coming. Good times.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=611184" width="1" height="1"&gt;</content><author><name>Tom Mathews</name><uri>http://blogs.msdn.com/members/Tom+Mathews.aspx</uri></author></entry><entry><title>Performance Engineering, Training, and Town Halls</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/tom_mathews/archive/2006/05/18/601410.aspx" /><id>http://blogs.msdn.com/tom_mathews/archive/2006/05/18/601410.aspx</id><published>2006-05-19T02:47:00Z</published><updated>2006-05-19T02:47:00Z</updated><content type="html">&lt;P&gt;Last week I attended a two-day course on performance engineering. It was really high-level, and covered a lot of common-sense items, but it was still rather interesting. It looks like the "free ride" of processor speed improvements is coming to an end, and Microsoft is embracing the need to focus on performant features. This is a heartening decision, one that I hope sticks.&lt;/P&gt;
&lt;P&gt;I took more than five pages of notes in Word, but a few takeaways were:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;• You will be wrong more often that when you are right on your first guesses as to performance problems. The secret to greatness is weeding out the bad guesses as fast as possible.&lt;BR&gt;• An L1 cache miss is now as expensive as what a page miss used to cost to go to disk. -- If a register access took a second, a disk access would be a couple of weeks, and the internet would take most of a year.&lt;BR&gt;• Inefficiencies can happen in the app, but others can be in the OS or Hardware. Almost all of these can be reduced by changes in the application.&lt;BR&gt;• Amdahl’s Law: The performance that can be gained by using a faster mode of execution is limited by the fraction of time that does not execute faster.&lt;BR&gt;In other words: Focus on where the application is spending the most time.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Training&lt;/STRONG&gt;&lt;BR&gt;Speaking of training, there is a lot of it available. For example, just one of the several training websites available&amp;nbsp;internally&amp;nbsp;has 20 events coming up next week, ranging on topics from Secure Software and Developing with Design Patterns to ITIL Essentials and Designing for Performance on SQL Server 2005. And this doesn't include the hundreds of courses that were recorded and available as a webcast.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Town Hall&lt;/STRONG&gt;&lt;BR&gt;I started this post while waiting for the Employee Town Hall webcast to start, which is also being broadcast to nine of the Cafe's. There was a &lt;EM&gt;lot&lt;/EM&gt; of good stuff in it.&amp;nbsp;The first&amp;nbsp;1.5 hours&amp;nbsp;brought us up to speed&amp;nbsp;on what the different divisions were doing; the last half hour was the best, though, discussing&amp;nbsp;changes to the review system.&amp;nbsp;It is mostly moving away from the curve-based highly competitive ranking that existed before into the realm of individual performance-based rewards. This, in combination with the on-site/home-based perks announced (&lt;A href="http://search.msn.com/results.aspx?q=Microsoft+%22towel+service%22&amp;amp;FORM=QBHP"&gt;towels are back&lt;/A&gt;!), is very good news indeed.&lt;BR&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=601410" width="1" height="1"&gt;</content><author><name>Tom Mathews</name><uri>http://blogs.msdn.com/members/Tom+Mathews.aspx</uri></author></entry><entry><title>Windows SDK now has a blog</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/tom_mathews/archive/2006/05/10/591175.aspx" /><id>http://blogs.msdn.com/tom_mathews/archive/2006/05/10/591175.aspx</id><published>2006-05-11T02:13:00Z</published><updated>2006-05-11T02:13:00Z</updated><content type="html">I forgot to mention it last month, but the group I'm in now has a blog: the&amp;nbsp;&lt;A HREF="/windowssdk/default.aspx"&gt;&lt;FONT color=#0033cc&gt;Microsoft Windows SDK Team Blog&lt;/FONT&gt;&lt;/A&gt;. It's giving the PMs the opportunity to chat with you guys, as well as point out efforts such as the &lt;A href="http://msdn.microsoft.com/windowsvista/downloads/developerstory/"&gt;Vista Developer Story&lt;/A&gt;, which details the changes and opportunities that Vista will be bringing.&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=591175" width="1" height="1"&gt;</content><author><name>Tom Mathews</name><uri>http://blogs.msdn.com/members/Tom+Mathews.aspx</uri></author></entry><entry><title>Morale Event and a  Mini Reorg</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/tom_mathews/archive/2006/05/05/591132.aspx" /><id>http://blogs.msdn.com/tom_mathews/archive/2006/05/05/591132.aspx</id><published>2006-05-06T01:06:00Z</published><updated>2006-05-06T01:06:00Z</updated><content type="html">&lt;P&gt;The website that I coded has been holding up well; I'm still waiting for people to review the latest changes before I can roll them out. In the interim I've added a few feature requests, and spent most of my time studying. It's &lt;EM&gt;very&lt;/EM&gt; nice to have the time to keep your skills up-to-date. &lt;/P&gt;
&lt;P&gt;Every quarter or so the team goes on a morale event. This time out we went miniature golfing. I haven't been to a miniature golf course in probably 8 years. This one was at the Willows Run golf course (&lt;A href="http://local.live.com/default.aspx?v=2&amp;amp;cp=47.689902~-122.148235&amp;amp;style=o&amp;amp;lvl=2&amp;amp;scene=3710406"&gt;aerial pic&lt;/A&gt;), and didn't have all the props that I grew up expecting (windmills and the like). Even though I was quite bad at it, it was still a lot of fun to hang out with the guys.&lt;/P&gt;
&lt;P&gt;In this group there have been two developer managers. One is moving on to another position in Microsoft, and my current boss (Mike M.) will be managing all of the developers. In my experience here, reorganizations happen at least yearly, though they rarely have a direct impact on the project you’re working on.&lt;BR&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=591132" width="1" height="1"&gt;</content><author><name>Tom Mathews</name><uri>http://blogs.msdn.com/members/Tom+Mathews.aspx</uri></author></entry><entry><title>Xbox Roundtable</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/tom_mathews/archive/2006/04/18/576461.aspx" /><id>http://blogs.msdn.com/tom_mathews/archive/2006/04/18/576461.aspx</id><published>2006-04-18T18:24:00Z</published><updated>2006-04-18T18:24:00Z</updated><content type="html">&lt;P&gt;Last week I was also invited to an Xbox roundtable, in which we got to ask the really tough questions&amp;nbsp;to a bunch of Xbox 'softies (&lt;A href="http://www.majornelson.com/"&gt;Major Nelson&lt;/A&gt;, &lt;A href="http://www.xbox.com/en-US/community/personality/elle/default.htm"&gt;elle&lt;/A&gt;, and others). Now, none of us can talk about the answers, or even the questions asked&amp;nbsp;(this is hush-hush stuff they couldn't even answer in email— even the location of the event was kept secret until the last minute), but it was an awesome opportunity to get the lowdown on what's going on. Yet another opportunity to interact with some great people at Microsoft.&lt;/P&gt;
&lt;P&gt;Oh, and they handed out some really cool Halo 2 headsets at the end, and XBox 360 keychains. You can see them in yesterday’s picture of tournament winnings.&lt;BR&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=576461" width="1" height="1"&gt;</content><author><name>Tom Mathews</name><uri>http://blogs.msdn.com/members/Tom+Mathews.aspx</uri></author></entry><entry><title>Dev Div Halo Tournament Champions</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/tom_mathews/archive/2006/04/13/576075.aspx" /><id>http://blogs.msdn.com/tom_mathews/archive/2006/04/13/576075.aspx</id><published>2006-04-14T00:19:00Z</published><updated>2006-04-14T00:19:00Z</updated><content type="html">&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A HREF="/photos/tom_mathews/picture576054.aspx" target=_blank&gt;&lt;FONT size=3&gt;&lt;IMG src="/photos/tom_mathews/images/576054/300x240.aspx" border=0&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial&gt;We won! It was a Swiss-style championship, 12 teams facing off with another team with a similar record for seven rounds. We started out with five wins in a row... the last two got tough. The sixth game was a tie with a very good team (neutral bomb assault on Sanctuary). With a tie there, we had to win the last match or would face a tie breaker. We started out Slayer Pro on Burial Mounds, and our team kind of fell apart. At around 21-30 we started to turn it around and coordinate better. We won 50-39. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A HREF="/photos/tom_mathews/picture576053.aspx" target=_blank&gt;&lt;FONT face=Arial&gt;&lt;IMG src="/photos/tom_mathews/images/576053/640x199.aspx" border=0&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial&gt;The fastest match was the 5th round (3-flags to win CTF Classic on Elongation). It took us three minutes to cap all three flags against a team with only one loss.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial&gt;Loot for winning: Kameo Pen, Lanyard, XBox 360 button, a gift certificate... and a 360 faceplate signed by J. Allard. Not to mention bragging rights having taken on all the Developer Division's finest. And we keep the trophy for 6 months. :)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;A HREF="/photos/tom_mathews/picture576055.aspx" target=_blank&gt;&lt;FONT face=Arial&gt;&lt;IMG src="/photos/tom_mathews/images/576055/400x267.aspx" border=0&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;&lt;STRONG&gt;Stair Climb Challenge&lt;BR&gt;&lt;/STRONG&gt;Less interesting to most, but I did win the challenge. I climbed the equivalent of 2+ Sears Towers in the last week, 130 flights Friday night alone. I was extremely sore, but ended up winning by 25 flights. Loot for winning: A cheap exercise radio. Could have used that a week earlier. :)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;and.... &lt;STRONG&gt;Work&lt;BR&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;Much more work than play these last few weeks. We shipped the first version of the Content Management System on Monday. It's been a long four months, but contributors are finally using it. There's been a lot of feedback, and some of the pain points I expected to have time to address this week are already cropping up. But once the early-adopter kinks get worked out, it should really improve the process.&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=576075" width="1" height="1"&gt;</content><author><name>Tom Mathews</name><uri>http://blogs.msdn.com/members/Tom+Mathews.aspx</uri></author></entry><entry><title>Flights of Stairs</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/tom_mathews/archive/2006/03/28/564407.aspx" /><id>http://blogs.msdn.com/tom_mathews/archive/2006/03/28/564407.aspx</id><published>2006-03-28T22:16:00Z</published><updated>2006-03-28T22:16:00Z</updated><content type="html">&lt;P&gt;Well, I had some personal problems to take care of late last week, and the PM told me to go home, not worry about our internal release&amp;nbsp;dates, and to take care of them (again, awesome company to work for--work/life balance isn't just a slogan. For&amp;nbsp;&lt;EM&gt;most&lt;/EM&gt; managers I've worked for). The project didn't sufer over my two day absence, and we only recieved a few more change requests. This week the system has been pretty stable, so it looks like we're good for a group-wide preview release Friday!&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Stairs&lt;BR&gt;&lt;/STRONG&gt;When we moved here last month, to the top (6th) floor of one of the tallest Microsoft buildings on campus, management (Steven?) put up a friendly competitive worksheet near both stairwells. The person that climbed the most flights in a month would win a minor prize. I've been climbing both stairwells, so as to minimize the visible impact of my numbers and reduce the percieved threat of my position. However, I did a quick tally, and I'm behind by 175 flights! I knocked off 50 today (I am SO out of shape), which means 60 flights Thu &amp;amp; Fri.&amp;nbsp;Have I mentioned I'm competitive? I'm gunnin' for you, Mike L.! :)&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Halo Tournament&lt;BR&gt;&lt;/STRONG&gt;In a week or two our team will be competing against 11 others in the DevDiv organization at the all-hands meeting. I haven't played on the original XBox in so long that I'm quite rusty. Add to that they're loosing a great player (Hi Hari!) to some sort of MIT degree program, and we're up against some of the best... well, I really hope we can pull it off. &lt;/P&gt;
&lt;P&gt;[Edit: Hmm, looks like &lt;A href="http://www.bungie.net/Stats/ClanMembers.aspx?clan=crew116"&gt;some of those guys &lt;/A&gt;haven't been playing either. Our odds have improved! Maybe!]&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Managers&lt;BR&gt;&lt;/STRONG&gt;I just want to add a dose of reality to my happy-happy talk. Just like anywhere, your manager has an amazing amount of control over your work environment. When you interview, make sure you ask the tough questions to make sure the position is a good fit for both of you. Just because this isn't a great place to work doesn't mean that every manager or team will be a good fit for you.&amp;nbsp;:)&lt;BR&gt;&lt;BR&gt;Keep in mind, too: Reorganizations are frequent here. I've had 6 or so managers in 6 years. Some were better than others, and I've had managers at both ends of the extreme. But if you do come aboard, drop me a line. It's a great place to be, and I hope you and your team are a great match.&lt;BR&gt;&lt;BR&gt;&amp;lt;All of this is in my opinion, of course.&amp;gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=564407" width="1" height="1"&gt;</content><author><name>Tom Mathews</name><uri>http://blogs.msdn.com/members/Tom+Mathews.aspx</uri></author></entry><entry><title>There is no spec, long live the spec!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/tom_mathews/archive/2006/03/13/550945.aspx" /><id>http://blogs.msdn.com/tom_mathews/archive/2006/03/13/550945.aspx</id><published>2006-03-14T06:25:00Z</published><updated>2006-03-14T06:25:00Z</updated><content type="html">&lt;P&gt;Oy. It's been a crazy few weeks. First there was the big push to get everything done while the manager was out, and ready for an internal preview release.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;The website was fully functional, and had been for a week or so. I was planning to spend the remaining time incorporating user feedback and wrapping up some edge-case bugs. What I didn't count on was that the other developers needed changes. A lot of them.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;So, I spent most of my time working on those. No worries, we're a team, and I was happy to provide support for our efforts. I would have liked to have been more finished with the front end, so that I could help them out with the back end and workflow stuff, but I didn't mind having my hands full keeping the front end operational as the back end shifted around.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;Well, Mike got back last Monday, and the software wasn't ready for an internal preview release. It was disappointing to have put in the extra effort and have the call be made to delay the release a week, but we understood.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;I took the extra time to talk with the PMs that would be using the software/coordinated the users of the software. In these one-on-one walkthroughs I had quite the eye opener! Now, granted... some of the comments they filed were duplicates (the ones that I had planned to incorporate earlier); but I ended up with a list of over &lt;EM&gt;55&lt;/EM&gt; changes. This necessitated yet &lt;EM&gt;another&lt;/EM&gt; product slip, only a few days after Mike had to announce the earlier slip to our group... this time on my side.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;We had a big triage meeting late last week to cover these change requests, in which we broke the single dialog that supported file addition into &lt;EM&gt;six&lt;/EM&gt; different dialogs, dependent on the user need. It's a lot of work in a short amount of time, but I really do think that the changes will be for the best. The users will have a much more intuitive interface, and the PMs will receive higher-quality submissions. &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;A few takeaways:&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;OL type=1&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;Schedule one-on-one time with your stakeholders. Don't assume that they have the time to review the product on their own whenever you send out update mails; walk through it with them. Keep notes, especially whenever they ask questions for clarification: If they don't know what something does, the users won't either.&lt;o:p&gt;&lt;/o:p&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;There is a reason for specifications. Now, this particular project was undertaken with full knowledge of the potential pitfalls of spec-as-you-go... but I think we actually hit most of them.&lt;o:p&gt;&lt;/o:p&gt;&lt;/LI&gt;
&lt;UL type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in"&gt;Client &amp;amp; Server side developers had requirements that were not apparent to each other during initial development.&lt;o:p&gt;&lt;/o:p&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in"&gt;Late-breaking changes required much more time to rework than if they had been made at the beginning.&lt;o:p&gt;&lt;/o:p&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in"&gt;Late-breaking changes necessitated less clean code. Rather than completely refactor a component and introduce instabilities, I made the decision to have slightly less maintainable (and consequently much more commented) code.&lt;o:p&gt;&lt;/o:p&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in"&gt;Customers are (usually negatively) surprised when their vision of the product doesn't conform to what was implemented. &lt;o:p&gt;&lt;/o:p&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in"&gt;Due to the number of stakeholders, there were often conflicting feature requests. Working with stakeholders one-on-one prevented group resolution.&lt;o:p&gt;&lt;/o:p&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;There are advantages, time-to-release being the main reason for choosing this method of development:&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/LI&gt;
&lt;UL type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in"&gt;We've been able to create a product from scratch that will heavily automate a massive amount of workload in around three months. It would have probably taken than long just to finalize specifications and create the first mockup.&lt;o:p&gt;&lt;/o:p&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in"&gt;The ability to create mockups on-the-fly provided for very fast feedback.&lt;o:p&gt;&lt;/o:p&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in"&gt;Whenever problems were discovered with the design, the small number of developers involved could quickly meet, discuss alternatives, and make a choice. This resulted in very little time spent in blocking&amp;nbsp;issues.&lt;o:p&gt;&lt;/o:p&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;Having professional coworkers really makes a huge difference (i.e. I work with some great guys and gals). It's amazing to be able to discuss technical problems and solutions without having politics or ineptness get in the way. Though some of the things we have to do for our legal people can be quite demanding. :)&lt;/LI&gt;
&lt;UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;For example: We have to store every bit of information about the files, and who can be contacted if there are&amp;nbsp;problems with the files, even after they are "deleted." And this information must be quickly accessible.&lt;/LI&gt;&lt;/UL&gt;&lt;/OL&gt;
&lt;P&gt;There's probably more I should put in here, but I'm working late and coming down with one of those achy colds. So... good night, and see you next week. Hopefully I'll tell you how the first roll-out went.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=550945" width="1" height="1"&gt;</content><author><name>Tom Mathews</name><uri>http://blogs.msdn.com/members/Tom+Mathews.aspx</uri></author></entry></feed>