<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Monkey See, Monkey Build by Clint Rutkas</title>
        <link>http://www.betterthaneveryone.com/Default.aspx</link>
        <description>A mix of hardware, C#, and a splash of self-indulgent ego</description>
        <language>en-US</language>
        <copyright>Clint Rutkas</copyright>
        <generator>Subtext Version 2.1.0.5</generator>
        <image>
            <title>Monkey See, Monkey Build by Clint Rutkas</title>
            <url>http://www.betterthaneveryone.com/images/RSS2Image.gif</url>
            <link>http://www.betterthaneveryone.com/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Improving a control&amp;ndash;Windows Phone 7 Wheel Control</title>
            <category>Coding</category>
            <category>Silverlight</category>
            <category>Windows Phone 7</category>
            <category>WP7</category>
            <link>http://www.betterthaneveryone.com/archive/2010/08/17/improving-a-controlndashwindows-phone-7-wheel-control.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://www.betterthaneveryone.com/images/ImprovingacontrolWindowsPhone7WheelContr_9C50/image.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="image" border="0" alt="image" align="right" src="http://www.betterthaneveryone.com/images/ImprovingacontrolWindowsPhone7WheelContr_9C50/image_thumb.png" width="261" height="480" /&gt;&lt;/a&gt;The wheel control, thanks to &lt;a href="http://kodierer.blogspot.com/"&gt;Rene Schulte&lt;/a&gt; for telling me what the term on the street was, is used in a few places in Windows Phone 7 (WP7) and Nick Randolph created a user control to mimic it.  It was great but needed a few little tweaks.  Nick did all the heavy lifting on this.&lt;/p&gt;  &lt;p&gt;Currently you can go to his blog entry on it here:  &lt;a title="Windows Phone7 Wheel Control – Updated" href="http://nicksnettravels.builttoroam.com/blogengine/post/2010/08/16/Windows-Phone7-Wheel-Control-e28093-Updated.aspx"&gt;Windows Phone7 Wheel Control – Updated&lt;/a&gt; to get the most up to date version.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What I did:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Enabled flick gestures &lt;/li&gt;    &lt;li&gt;Removed a flicker on press &lt;/li&gt;    &lt;li&gt;On lost focus, snap to grid &lt;/li&gt;    &lt;li&gt;Allowed for SelectedIndex to be set via XAML &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;What Nick was doing was levering the &lt;strong&gt;ManipulationCompleted &lt;/strong&gt;event on the scroller in the ListBox and then snapping to grid.  The problem is that when you flick, that event is fired the second your finger is removed from the screen.  The item should snap when it is done moving.  &lt;a href="http://blogs.msdn.com/b/ptorr/archive/2010/07/23/how-to-detect-when-a-list-is-scrolling-or-not.aspx"&gt;Peter Torr has a blog post on detecting if a list is scrolling or not&lt;/a&gt; so I leveraged that bit of code.&lt;/p&gt;  &lt;p&gt;I then changed how the &lt;strong&gt;CurrentStateChanging&lt;/strong&gt; event worked in Peter’s code to work with the wheel code.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:b6502eeb-8c57-4e91-b05c-8eec2356f9ad" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c"&gt;group.CurrentStateChanging += (s, args) =&amp;gt;
	{
			InvokeCurrentStateChanging(args);
			_currentState = args.NewState;
			if (_currentState.Name == "NotScrolling" &amp;amp;&amp;amp; !_userClickedOnItem)
				SnapToGrid();
	};&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Now to get this to work properly, there are lots of use cases you have to watch out for.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Flicking and click &lt;/li&gt;

  &lt;li&gt;Flicking and lost focus &lt;/li&gt;

  &lt;li&gt;Flicking and it stops scrolling &lt;/li&gt;

  &lt;li&gt;Clicking but not flicking &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fixing the flickering issue fixed and caused a few of the issues.&lt;/p&gt;

&lt;p&gt;The root cause of the flickering was how Nick was handling the LostFocus when you would select an item by clicking.  Flicking does not cause this behavior until it runs out of items / stops moving.  &lt;strong&gt;LostFocus&lt;/strong&gt; is fired before &lt;strong&gt;SelectionChanged&lt;/strong&gt; and he would hide everything then show update it.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;MouseEnter&lt;/strong&gt; event however happens before &lt;strong&gt;LostFocus&lt;/strong&gt; (the magic of breakpoints :-)) so with a simple Boolean to verify that they are clicking and on &lt;strong&gt;UpdateFocus&lt;/strong&gt;, only update if a click event is not in progress.   On &lt;strong&gt;MouseLeave&lt;/strong&gt; and on &lt;strong&gt;Scroller_ManipulationCompleted&lt;/strong&gt;, that boolean, _userClickedOnItem, is set to false.&lt;/p&gt;

&lt;p&gt;As is, this control is not currently a Date or Time picker control.  With a bit of work however, it can easily become that.
  &lt;/p&gt;&lt;img src="http://www.betterthaneveryone.com/aggbug/896.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Clint Rutkas</dc:creator>
            <guid>http://www.betterthaneveryone.com/archive/2010/08/17/improving-a-controlndashwindows-phone-7-wheel-control.aspx</guid>
            <pubDate>Tue, 17 Aug 2010 17:34:47 GMT</pubDate>
            <wfw:comment>http://www.betterthaneveryone.com/comments/896.aspx</wfw:comment>
            <comments>http://www.betterthaneveryone.com/archive/2010/08/17/improving-a-controlndashwindows-phone-7-wheel-control.aspx#feedback</comments>
            <slash:comments>14</slash:comments>
            <wfw:commentRss>http://www.betterthaneveryone.com/comments/commentRss/896.aspx</wfw:commentRss>
        </item>
        <item>
            <title>My Microsoft TechEd talk!</title>
            <category>Silverlight</category>
            <category>Microsoft</category>
            <category>teched</category>
            <link>http://www.betterthaneveryone.com/archive/2010/06/13/my-microsoft-teched-talk.aspx</link>
            <description>&lt;object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="645" height="365"&gt; &lt;param name="source" value="http://www.msteched.com/ClientBin/players/VideoPlayer2009_03_27.xap" /&gt; &lt;param name="initParams" value="m=http://ecn.channel9.msdn.com/o9/te/NorthAmerica/2010/wmv/WPH314.wmv,autostart=false,autohide=true,showembed=true, thumbnail=http://www.msteched.com/Skins/TechEdOnline/Styles/images/DefaultPlayerBackground.png, postid=0" /&gt; &lt;param name="background" value="#00FFFFFF" /&gt; &lt;a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"&gt; &lt;img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /&gt; &lt;/a&gt; &lt;/object&gt;  &lt;p&gt;&lt;a href="http://www.msteched.com/2010/NorthAmerica/WPH314"&gt;Session WPH 314 – Coding4Fun: Learning Windows Phone 7 Development by creating a robotic t-shirt cannon!&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.betterthaneveryone.com/aggbug/895.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Clint Rutkas</dc:creator>
            <guid>http://www.betterthaneveryone.com/archive/2010/06/13/my-microsoft-teched-talk.aspx</guid>
            <pubDate>Sun, 13 Jun 2010 19:13:34 GMT</pubDate>
            <wfw:comment>http://www.betterthaneveryone.com/comments/895.aspx</wfw:comment>
            <comments>http://www.betterthaneveryone.com/archive/2010/06/13/my-microsoft-teched-talk.aspx#feedback</comments>
            <slash:comments>13</slash:comments>
            <wfw:commentRss>http://www.betterthaneveryone.com/comments/commentRss/895.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Coding4Fun T-Shirt Cannons</title>
            <category>DIY</category>
            <category>Channel 9</category>
            <category>Coding4Fun</category>
            <category>Cannon</category>
            <link>http://www.betterthaneveryone.com/archive/2010/03/28/coding4fun-t-shirt-cannons.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://betterthaneveryone.com/images/Coding4FunTShirtCannons_1095A/clip_image00225_thumb1.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002[25]_thumb[1]" border="0" alt="clip_image002[25]_thumb[1]" src="http://betterthaneveryone.com/images/Coding4FunTShirtCannons_1095A/clip_image00225_thumb1_thumb.jpg" width="500" height="333" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Been a tad quiet on the western front and that was due to working on a rather neat project.  I built two robotic t-shirt shooting cannons for the Mix 2010 conference powered by the Windows Phone 7 device.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/coding4fun/archive/2010/03/16/9979874.aspx"&gt;I’ve started a six-part series on Coding4Fun on how to build one of your own&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://www.betterthaneveryone.com/aggbug/894.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Clint Rutkas</dc:creator>
            <guid>http://www.betterthaneveryone.com/archive/2010/03/28/coding4fun-t-shirt-cannons.aspx</guid>
            <pubDate>Mon, 29 Mar 2010 00:52:19 GMT</pubDate>
            <wfw:comment>http://www.betterthaneveryone.com/comments/894.aspx</wfw:comment>
            <comments>http://www.betterthaneveryone.com/archive/2010/03/28/coding4fun-t-shirt-cannons.aspx#feedback</comments>
            <slash:comments>12</slash:comments>
            <wfw:commentRss>http://www.betterthaneveryone.com/comments/commentRss/894.aspx</wfw:commentRss>
        </item>
        <item>
            <title>WPF, Silverlight, XAML, and Dependency Properties</title>
            <category>Channel 9</category>
            <category>WPF</category>
            <category>XAML</category>
            <link>http://www.betterthaneveryone.com/archive/2010/01/24/wpf-silverlight-xaml-and-dependency-properties.aspx</link>
            <description>&lt;p&gt;In my opinion, XAML has a bit of a step learning curve.  I tend to jump head first into something and do my best to learn it.  For some stuff, my head strong, fly-by-the-seat-of-my-pants, style of learning works, XAML was a bit rougher.  I think part of it was I was expected it to work just like HTML which it doesn’t.  I’d pick up a book and play with Expression Blend to help see what does what.  Visual Studio 2010’s updated editor for WPF and Silverlight projects helps a lot as well.  &lt;/p&gt;  &lt;p&gt;So why even care about XAML?  This lets you abstract out your views which then lets you be able to update your UI with no repercussions to your data.  Do a &lt;a href="http://en.wikipedia.org/wiki/Model_View_ViewModel"&gt;Model View ViewModel&lt;/a&gt; style of work.  XAML had dependency properties that helps simplify your backend code.  Depending on how something is bound to a field on the page, it will update.  This is really powerful.  The amount of code I didn’t need to write in Drinktendr due to using XAML to manage this really did make a big difference.  With the new &lt;a href="http://channel9.msdn.com/"&gt;Channel9&lt;/a&gt; version coming out the door, &lt;a href="http://coding4fun.com"&gt;Coding4Fun&lt;/a&gt; is getting moved over there which means bringing 5 years worth of posts, comments, and source code examples over.  And I plan to do some additional work on the meta data for the posts.  So with modifying &lt;a href="http://blogml.codeplex.com/"&gt;BlogML&lt;/a&gt; and &lt;a href="http://metaweblogtoblogml.codeplex.com/"&gt;Meta Weblog To BlogML Converter&lt;/a&gt; projects, I created an application to get the data from the blogs.msdn.com platform, get it into blogml as a middle ground data format, then will port it to Channel9’s data format.&lt;/p&gt;  &lt;p&gt;So to do this, I created a horrid UI that only I care about.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://betterthaneveryone.com/images/WPFSilverlightXAMLandDependencyPropertie_F472/image.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://betterthaneveryone.com/images/WPFSilverlightXAMLandDependencyPropertie_F472/image_thumb.png" width="600" height="277" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So what is neat here is looking at the code.&lt;/p&gt;  &lt;p&gt;from my mainwindow.xaml:&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:8cb9923b-04d1-4572-9c6f-3c401f57b962" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="xml"&gt;&amp;lt;Controls:LoadAndSave Grid.Column="0" x:Name="loadAndSave"/&amp;gt;
&amp;lt;Controls:ListPosts Grid.Column="1" x:Name="listPosts"
	Posts="{Binding ElementName=loadAndSave, Path=Posts }"/&amp;gt;
&amp;lt;Controls:PostData Grid.Column="3"
	SelectedPost="{Binding ElementName=listPosts, Path=SelectedPost }"/&amp;gt;
&amp;lt;Controls:ListComments Grid.Column="5" 
	Comments="{Binding ElementName=listPosts, Path=SelectedPost.Comments }"/&amp;gt;
&amp;lt;Controls:WebData Grid.Column="7" 
	SelectedPost="{Binding ElementName=listPosts, Path=SelectedPost }"/&amp;gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;All I’m doing is passing around object references with data binding!  When something gets updated, it is automatically reflected back (* depending on how you have your binding set up).&lt;/p&gt;

&lt;p&gt;To create a dependency property, in your code behind, type “propdp” and hit tab twice.  This will be a snippet in Visual Studio that then you can type everything else out.  Here is what the base will look like.&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:0e4024cc-6564-457b-b002-1570f0aad525" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c#"&gt;public int MyProperty
{
	get { return (int)GetValue(MyPropertyProperty); }
	set { SetValue(MyPropertyProperty, value); }
}

// Using a DependencyProperty as the backing store for MyProperty.  This enables animation, styling, binding, etc...
public static readonly DependencyProperty MyPropertyProperty =
	DependencyProperty.Register("MyProperty", typeof(int), typeof(ownerclass), new UIPropertyMetadata(0));&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;So for the more complex example of me updating the WebData control with the Webbrowser controls, here is my XAML for that control and here is the code behind.  Since WebBrowser uses a method rather than a property to update the content in it, the backend view has a bit more code.&lt;/p&gt;

&lt;p&gt;XAML:&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:1d044403-1eef-47da-a73e-678e9d470edf" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="xml"&gt;&amp;lt;UserControl x:Class="c4fDataPort.Gui.Controls.WebData"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:Controls="clr-namespace:c4fDataPort.Gui.Controls"&amp;gt;
    &amp;lt;Grid&amp;gt;
        &amp;lt;Grid.ColumnDefinitions&amp;gt;
            &amp;lt;ColumnDefinition Width="*" /&amp;gt;
			&amp;lt;ColumnDefinition Width="Auto"/&amp;gt; &amp;lt;!-- 1 split --&amp;gt;
			&amp;lt;ColumnDefinition Width="*" /&amp;gt;
			&amp;lt;ColumnDefinition Width="Auto"/&amp;gt; &amp;lt;!-- 3 split --&amp;gt;
			&amp;lt;ColumnDefinition Width="*" /&amp;gt;
        &amp;lt;/Grid.ColumnDefinitions&amp;gt;
		&amp;lt;GridSplitter Grid.Column="1" Style="{DynamicResource gridSplit}" /&amp;gt;
		&amp;lt;GridSplitter Grid.Column="3" Style="{DynamicResource gridSplit}" /&amp;gt;
		&amp;lt;Grid Grid.Column="0"&amp;gt;
			&amp;lt;Grid.RowDefinitions&amp;gt;
				&amp;lt;RowDefinition Height="{Binding ElementName=menu, Path=Height}" /&amp;gt;
				&amp;lt;RowDefinition Height="*" /&amp;gt;
			&amp;lt;/Grid.RowDefinitions&amp;gt;
			&amp;lt;Label Name="menu" Style="{DynamicResource sectionTitles}"&amp;gt;Current Render:&amp;lt;/Label&amp;gt;
			&amp;lt;WebBrowser Name="initialWebBrowser"  Grid.Row="1"/&amp;gt;
        &amp;lt;/Grid&amp;gt;
		&amp;lt;Grid Grid.Column="2"&amp;gt;
			&amp;lt;Grid.RowDefinitions&amp;gt;
				&amp;lt;RowDefinition Height="{Binding ElementName=menu2, Path=Height}" /&amp;gt;
				&amp;lt;RowDefinition Height="*" /&amp;gt;
			&amp;lt;/Grid.RowDefinitions&amp;gt;
			&amp;lt;Label Name="menu2" Style="{DynamicResource sectionTitles}"&amp;gt;Edited HTML:&amp;lt;/Label&amp;gt;
			&amp;lt;TextBox Grid.Row="1" TextWrapping="WrapWithOverflow" VerticalScrollBarVisibility="Auto"
					 Text="{Binding Path=PostText, RelativeSource={RelativeSource AncestorType={x:Type Controls:WebData}}, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" /&amp;gt;
		&amp;lt;/Grid&amp;gt;
		&amp;lt;Grid Grid.Column="4"&amp;gt;
			&amp;lt;Grid.RowDefinitions&amp;gt;
				&amp;lt;RowDefinition Height="{Binding ElementName=menu3, Path=Height}" /&amp;gt;
				&amp;lt;RowDefinition Height="*" /&amp;gt;
			&amp;lt;/Grid.RowDefinitions&amp;gt;
			&amp;lt;Label Name="menu3" Style="{DynamicResource sectionTitles}"&amp;gt;Final Render:&amp;lt;/Label&amp;gt;
			&amp;lt;WebBrowser Name="finalWebBrowser" Grid.Row="1" /&amp;gt;
		&amp;lt;/Grid&amp;gt;
		
    &amp;lt;/Grid&amp;gt;
&amp;lt;/UserControl&amp;gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;CodeBehind:&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:8a27b148-e4fd-4362-8460-998e5eb369d7" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c#"&gt;using System.Windows;
using System.Windows.Controls;

using BlogML.Xml;

namespace c4fDataPort.Gui.Controls
{
	/// &amp;lt;summary&amp;gt;
	/// Interaction logic for WebData.xaml
	/// &amp;lt;/summary&amp;gt;
	public partial class WebData : UserControl
	{
		public WebData()
		{
			InitializeComponent();
		}


		private string PostId;
		public string PostText
		{
			get { return (string)GetValue(PostTextProperty); }
			set { SetValue(PostTextProperty, value); }
		}
			
		// Using a DependencyProperty as the backing store for PostText.  This enables animation, styling, binding, etc...
		public static readonly DependencyProperty PostTextProperty =
			DependencyProperty.Register("PostText", typeof(string), typeof(WebData), new UIPropertyMetadata("", HtmlChanged));

		public BlogMLPost SelectedPost
		{
			get { return (BlogMLPost)GetValue(SelectedPostProperty); }
			set { SetValue(SelectedPostProperty, value); }
		}

		// Using a DependencyProperty as the backing store for SelectedPost.  This enables animation, styling, binding, etc...
		public static readonly DependencyProperty SelectedPostProperty =
			DependencyProperty.Register("SelectedPost", typeof(BlogMLPost), typeof(WebData), new UIPropertyMetadata(new BlogMLPost(), PostChanged));

		private static void PostChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
		{
			var typedSender = sender as WebData;
			if (typedSender == null)
				return;

			typedSender.SetInitalPanel();
		}

		private static void HtmlChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
		{
			var typedSender = sender as WebData;
			if (typedSender == null)
				return;

			typedSender.SetFinalPanel();
		}

		private void SetInitalPanel()
		{
			if (SelectedPost.ID == PostId)
				return;

			if (!string.IsNullOrEmpty(SelectedPost.Content.Text))
				initialWebBrowser.NavigateToString(SelectedPost.Content.Text);

			PostText = SelectedPost.Content.Text;
			PostId = SelectedPost.ID;
		}

		private void SetFinalPanel()
		{
			if (!string.IsNullOrEmpty(PostText))
				finalWebBrowser.NavigateToString(PostText);

			SelectedPost.Content.Text = PostText;
		}
	}
}
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Then based on certain values, you can do more complex stuff like change the background color or hide stuff.&lt;/p&gt;

&lt;p&gt;In this project, if a post is marked “Clean”, the post item is green.  Also based on the post type, additional data will be shown.  Here is how I did that:&lt;/p&gt;

&lt;p&gt;XAML:&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:f93c3913-d62e-42cd-baa6-7183cf8f8318" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="xml"&gt;&amp;lt;UserControl.Resources&amp;gt;
	&amp;lt;Controls:BoolToColorConverter x:Key="backgroundColorConverter" /&amp;gt;
&amp;lt;/UserControl.Resources&amp;gt;
&amp;lt;StackPanel Background="{Binding Path=SelectedPost.IsDataCleaned, RelativeSource={RelativeSource AncestorType={x:Type Controls:ListPostItem}}, Converter={StaticResource backgroundColorConverter}}" &amp;gt;
	&amp;lt;!-- more stuff --&amp;gt;
&amp;lt;/StackPanel&amp;gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;CodeBehind:&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:7c384553-f1f4-4c61-a9ff-3f9bac97177d" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c#"&gt;[ValueConversion(typeof(bool), typeof(SolidColorBrush))]
public class BoolToColorConverter : IValueConverter
{
	public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
	{
		return ((bool)value) ? new SolidColorBrush(Color.FromRgb(239, 255, 220)) : new SolidColorBrush(Color.FromRgb(255, 204, 204));
	}

	public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
	{
		throw new NotImplementedException();
	}
}&lt;/pre&gt;&lt;/div&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p&gt;The more I play with XAML, the more I really do appreciate the power even though there were days were I did hate it.  Also after playing with VS 2010, I do think a lot of my learning issues were solved with additional intellisense features.&lt;/p&gt;&lt;img src="http://www.betterthaneveryone.com/aggbug/893.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Clint Rutkas</dc:creator>
            <guid>http://www.betterthaneveryone.com/archive/2010/01/24/wpf-silverlight-xaml-and-dependency-properties.aspx</guid>
            <pubDate>Mon, 25 Jan 2010 00:25:31 GMT</pubDate>
            <wfw:comment>http://www.betterthaneveryone.com/comments/893.aspx</wfw:comment>
            <comments>http://www.betterthaneveryone.com/archive/2010/01/24/wpf-silverlight-xaml-and-dependency-properties.aspx#feedback</comments>
            <slash:comments>10</slash:comments>
            <wfw:commentRss>http://www.betterthaneveryone.com/comments/commentRss/893.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Drinktendr Bartending and PDC goodness</title>
            <category>Drunktender</category>
            <link>http://www.betterthaneveryone.com/archive/2010/01/02/drinktendr-bartending-and-pdc-goodness.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://channel9.msdn.com/posts/Clint/Coding4Fun-at-PDC-2009/"&gt;Overall Recap of each project&lt;/a&gt;     &lt;br /&gt;&lt;object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="512" height="384"&gt; &lt;param name="source" value="http://channel9.msdn.com/App_Themes/default/vp09_11_30.xap" /&gt; &lt;param name="initParams" value="deferredLoad=true,duration=0,m=http://ecn.channel9.msdn.com/o9/ch9/4/4/0/8/0/5/coding4funAtPdc_ch9.wmv,autostart=false,autohide=true,showembed=true, postid=508044, thumbnail=http://ecn.channel9.msdn.com/o9/ch9/4/4/0/8/0/5/coding4funAtPdc_512_ch9.png" /&gt; &lt;param name="background" value="#00FFFFFF" /&gt; &lt;a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"&gt; &lt;img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /&gt; &lt;/a&gt; &lt;/object&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://channel9.msdn.com/posts/LauraFoy/Coding4Fun-DrinkTendr/"&gt;Iron Bartender!&lt;/a&gt;     &lt;br /&gt;&lt;object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="512" height="384"&gt; &lt;param name="source" value="http://channel9.msdn.com/App_Themes/default/vp09_11_30.xap" /&gt; &lt;param name="initParams" value="deferredLoad=true,duration=0,m=http://ecn.channel9.msdn.com/o9/ch9/9/4/1/0/1/5/DrinkTendr_ch9.wmv,autostart=false,autohide=true,showembed=true, postid=510149, thumbnail=http://ecn.channel9.msdn.com/o9/ch9/9/4/1/0/1/5/DrinkTendr_512_ch9.png&amp;#xD;&amp;#xA;" /&gt; &lt;param name="background" value="#00FFFFFF" /&gt; &lt;a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"&gt; &lt;img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /&gt; &lt;/a&gt; &lt;/object&gt;&lt;/p&gt;&lt;img src="http://www.betterthaneveryone.com/aggbug/892.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Clint Rutkas</dc:creator>
            <guid>http://www.betterthaneveryone.com/archive/2010/01/02/drinktendr-bartending-and-pdc-goodness.aspx</guid>
            <pubDate>Sun, 03 Jan 2010 04:35:06 GMT</pubDate>
            <wfw:comment>http://www.betterthaneveryone.com/comments/892.aspx</wfw:comment>
            <comments>http://www.betterthaneveryone.com/archive/2010/01/02/drinktendr-bartending-and-pdc-goodness.aspx#feedback</comments>
            <slash:comments>10</slash:comments>
            <wfw:commentRss>http://www.betterthaneveryone.com/comments/commentRss/892.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Creating more complex buttons in XAML</title>
            <category>XAML</category>
            <category>WPF</category>
            <category>Silverlight</category>
            <category>Coding</category>
            <category>User Interface</category>
            <link>http://www.betterthaneveryone.com/archive/2009/11/20/891.aspx</link>
            <description>&lt;p&gt;Ever look at a project and wonder how they got a epic button instead of the every day average one?&lt;/p&gt;  &lt;p&gt;There is an extremely easy way to do this in Expression Blend.  I’m also going to show the XAML on how to do it by hand however.&lt;/p&gt;  &lt;p&gt;Here is a normal button and an ellipse.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.betterthaneveryone.com/images/CreatingmorecomplexbuttonsinXAML_CFB4/image.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.betterthaneveryone.com/images/CreatingmorecomplexbuttonsinXAML_CFB4/image_thumb.png" width="274" height="141" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;XAML:&lt;/strong&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:998eaba7-ca59-4ce1-a45c-5655f693a468" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="xml"&gt;&amp;lt;Ellipse Fill="White" Stroke="Black" Margin="139,68,0,0" 
   HorizontalAlignment="Left" VerticalAlignment="Top" Width="105" Height="105"/&amp;gt;
&amp;lt;Button Margin="248,68,238,0" Content="Button" 
   VerticalAlignment="Top" Height="105"/&amp;gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p /&gt;

&lt;p&gt;The button acts like a button but I want the ellipse to act like a button.  In Expression Blend, just right click on the Ellipse (or the most outer container element you want to encapsulate), and go to “Make Into Control”&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.betterthaneveryone.com/images/CreatingmorecomplexbuttonsinXAML_CFB4/image_3.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.betterthaneveryone.com/images/CreatingmorecomplexbuttonsinXAML_CFB4/image_thumb_3.png" width="219" height="296" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;You’ll see a new prompt, click Button, and now you have a full blow button that you can style!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.betterthaneveryone.com/images/CreatingmorecomplexbuttonsinXAML_CFB4/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.betterthaneveryone.com/images/CreatingmorecomplexbuttonsinXAML_CFB4/image_thumb_4.png" width="521" height="610" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;What Expression Blend did in the background was the following.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;XAML:&lt;/strong&gt;&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:567329ed-632c-4294-a639-5e0b9ec0ca5a" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="xml"&gt;&amp;lt;Window.Resources&amp;gt;
	&amp;lt;Style x:Key="ButtonStyle1" TargetType="{x:Type Button}"&amp;gt;
		&amp;lt;Setter Property="Template"&amp;gt;
			&amp;lt;Setter.Value&amp;gt;
				&amp;lt;ControlTemplate TargetType="{x:Type Button}"&amp;gt;
					&amp;lt;Grid&amp;gt;
						&amp;lt;Ellipse Fill="White" Stroke="Black"/&amp;gt;
						&amp;lt;ContentPresenter 
							HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
							VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
							SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" 
							RecognizesAccessKey="True"/&amp;gt;
					&amp;lt;/Grid&amp;gt;
					&amp;lt;ControlTemplate.Triggers&amp;gt;
						&amp;lt;Trigger Property="IsFocused" 
							Value="True"/&amp;gt;
						&amp;lt;Trigger Property="IsDefaulted" 
							Value="True"/&amp;gt;
						&amp;lt;Trigger Property="IsMouseOver" 
							Value="True"/&amp;gt;
						&amp;lt;Trigger Property="IsPressed" 
							Value="True"/&amp;gt;
						&amp;lt;Trigger Property="IsEnabled" 
							Value="False"/&amp;gt;
					&amp;lt;/ControlTemplate.Triggers&amp;gt;
				&amp;lt;/ControlTemplate&amp;gt;
			&amp;lt;/Setter.Value&amp;gt;
		&amp;lt;/Setter&amp;gt;
	&amp;lt;/Style&amp;gt;
&amp;lt;/Window.Resources&amp;gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;And to reference it in the project, put the style on a button.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;XAML:&lt;/strong&gt;&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:1cfd9e35-15e6-49b1-84d8-bb4e85c5c603" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="xml"&gt;&amp;lt;Button Style="{DynamicResource ButtonStyle1}" Width="105" Height="105" /&amp;gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p&gt;To add content changes like a glow on a mouse over or if it is disabled, add a &lt;strong&gt;Setter &lt;/strong&gt;in the Trigger!&lt;/p&gt;

&lt;p&gt;For a quick recap here, to do this by hand, you need the following bit of code.  You can also do this at the Application and User Control level as well.&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:cc04813c-13fd-4383-87eb-575697761001" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="xml"&gt;&amp;lt;Window.Resources&amp;gt;
	&amp;lt;Style x:Key="myStyleName" TargetType="{x:Type Button}"&amp;gt;
		&amp;lt;Setter Property="Template"&amp;gt;
			&amp;lt;Setter.Value&amp;gt;
				&amp;lt;ControlTemplate TargetType="{x:Type Button}"&amp;gt;
					&amp;lt;Grid&amp;gt;
						&amp;lt;!-- your XAML goodness --&amp;gt;
					&amp;lt;/Grid&amp;gt;
					&amp;lt;ControlTemplate.Triggers&amp;gt;
						&amp;lt;Trigger Property="IsFocused" 
							Value="True"/&amp;gt;
						&amp;lt;Trigger Property="IsDefaulted" 
							Value="True"/&amp;gt;
						&amp;lt;Trigger Property="IsMouseOver" 
							Value="True"/&amp;gt;
						&amp;lt;Trigger Property="IsPressed" 
							Value="True"/&amp;gt;
						&amp;lt;Trigger Property="IsEnabled" 
							Value="False"/&amp;gt;
					&amp;lt;/ControlTemplate.Triggers&amp;gt;
				&amp;lt;/ControlTemplate&amp;gt;
			&amp;lt;/Setter.Value&amp;gt;
		&amp;lt;/Setter&amp;gt;
	&amp;lt;/Style&amp;gt;
&amp;lt;/Window.Resources&amp;gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The button is only clickable when you are on the actual ellipse.  Now we can create more complex things like the back button I created for drinktendr:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.betterthaneveryone.com/images/CreatingmorecomplexbuttonsinXAML_CFB4/image_5.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.betterthaneveryone.com/images/CreatingmorecomplexbuttonsinXAML_CFB4/image_thumb_5.png" width="80" height="78" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:1919c533-c0ef-49c2-8bd6-9b8ad967496f" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="xml"&gt;&amp;lt;Button x:Class="drinktendr.Wpf.Controls.BackButton"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
		Style="{DynamicResource arrowBack}" SnapsToDevicePixels="True"&amp;gt;
	&amp;lt;Button.Resources&amp;gt;
		&amp;lt;Style x:Key="arrowBack" TargetType="{x:Type Button}"&amp;gt;
			&amp;lt;Setter Property="Template"&amp;gt;
				&amp;lt;Setter.Value&amp;gt;
					&amp;lt;ControlTemplate TargetType="{x:Type Button}"&amp;gt;
						&amp;lt;Grid Background="Black"&amp;gt;
							&amp;lt;Viewbox&amp;gt;
								&amp;lt;Grid&amp;gt;
									
									&amp;lt;Path x:Name="arrowTop" Width="262" Height="198" Canvas.Left="45" Canvas.Top="70" 
										Stretch="Fill" StrokeThickness="6" StrokeStartLineCap="Round" StrokeEndLineCap="Round" 
										StrokeLineJoin="Round" Stroke="#FFFF" Fill="#FFF" 
										Data="F1 M 48.5143,170L 144.514,73.9999L 195.514,74L 121.515,150L 304.514,150L 304.514,190L 121.514,190L 195.514,266L 144.514,266L 48.5143,170 Z " RenderTransformOrigin="0.5,0.5"&amp;gt;
										&amp;lt;Path.RenderTransform&amp;gt;
											&amp;lt;TransformGroup&amp;gt;
												&amp;lt;ScaleTransform ScaleX="0.7" ScaleY="0.7"/&amp;gt;
												&amp;lt;SkewTransform/&amp;gt;
												&amp;lt;RotateTransform/&amp;gt;
												&amp;lt;TranslateTransform/&amp;gt;
											&amp;lt;/TransformGroup&amp;gt;
										&amp;lt;/Path.RenderTransform&amp;gt;
									&amp;lt;/Path&amp;gt;
									&amp;lt;Path x:Name="arrow" Width="262" Height="198" Canvas.Left="45" Canvas.Top="70" 
										Stretch="Fill" StrokeThickness="6" StrokeStartLineCap="Round" StrokeEndLineCap="Round" 
										StrokeLineJoin="Round" Stroke="#FFFF" Fill="#FFF" 
										Data="F1 M 48.5143,170L 144.514,73.9999L 195.514,74L 121.515,150L 304.514,150L 304.514,190L 121.514,190L 195.514,266L 144.514,266L 48.5143,170 Z " RenderTransformOrigin="0.5,0.5"&amp;gt;
										&amp;lt;Path.RenderTransform&amp;gt;
											&amp;lt;TransformGroup&amp;gt;
												&amp;lt;ScaleTransform ScaleX="0.7" ScaleY="0.7"/&amp;gt;
												&amp;lt;SkewTransform/&amp;gt;
												&amp;lt;RotateTransform/&amp;gt;
												&amp;lt;TranslateTransform/&amp;gt;
											&amp;lt;/TransformGroup&amp;gt;
										&amp;lt;/Path.RenderTransform&amp;gt;
									&amp;lt;/Path&amp;gt;
									&amp;lt;Ellipse x:Name="ellipse" Width="340" Height="340" Canvas.Left="0" Canvas.Top="0" Stretch="Fill" StrokeThickness="15" StrokeLineJoin="Round" Opacity=".6" Stroke="#FFFFFF" Fill="#00000000" /&amp;gt;
								&amp;lt;/Grid&amp;gt;
							&amp;lt;/Viewbox&amp;gt;
							&amp;lt;ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" RecognizesAccessKey="True"/&amp;gt;
						&amp;lt;/Grid&amp;gt;
						&amp;lt;ControlTemplate.Triggers&amp;gt;
							&amp;lt;Trigger Property="IsFocused" Value="True"/&amp;gt;
							&amp;lt;Trigger Property="IsDefaulted" Value="True"/&amp;gt;
							&amp;lt;Trigger Property="IsMouseOver" Value="True"&amp;gt;
								&amp;lt;Setter TargetName="ellipse" Property="Opacity" Value="1" /&amp;gt;
							&amp;lt;/Trigger&amp;gt;
							&amp;lt;Trigger Property="IsPressed" Value="True"&amp;gt;
								&amp;lt;Setter TargetName="ellipse" Property="Effect"&amp;gt;
									&amp;lt;Setter.Value&amp;gt;
										&amp;lt;DropShadowEffect BlurRadius="50" ShadowDepth="0" RenderingBias="Performance" Color="White" Opacity=".75" /&amp;gt;
									&amp;lt;/Setter.Value&amp;gt;
								&amp;lt;/Setter&amp;gt;
								&amp;lt;Setter TargetName="arrow" Property="Effect"&amp;gt;
									&amp;lt;Setter.Value&amp;gt;
										&amp;lt;BlurEffect Radius="30" RenderingBias="Performance" /&amp;gt;
									&amp;lt;/Setter.Value&amp;gt;
								&amp;lt;/Setter&amp;gt;
							&amp;lt;/Trigger&amp;gt;
							&amp;lt;Trigger Property="IsEnabled" Value="False"/&amp;gt;
						&amp;lt;/ControlTemplate.Triggers&amp;gt;
					&amp;lt;/ControlTemplate&amp;gt;
				&amp;lt;/Setter.Value&amp;gt;
			&amp;lt;/Setter&amp;gt;
		&amp;lt;/Style&amp;gt;
	&amp;lt;/Button.Resources&amp;gt;
&amp;lt;/Button&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;img src="http://www.betterthaneveryone.com/aggbug/891.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Clint Rutkas</dc:creator>
            <guid>http://www.betterthaneveryone.com/archive/2009/11/20/891.aspx</guid>
            <pubDate>Fri, 20 Nov 2009 21:46:50 GMT</pubDate>
            <wfw:comment>http://www.betterthaneveryone.com/comments/891.aspx</wfw:comment>
            <comments>http://www.betterthaneveryone.com/archive/2009/11/20/891.aspx#feedback</comments>
            <slash:comments>14</slash:comments>
            <wfw:commentRss>http://www.betterthaneveryone.com/comments/commentRss/891.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Near complete wiring harness</title>
            <category>Building</category>
            <category>Drunktender</category>
            <category>wiring</category>
            <link>http://www.betterthaneveryone.com/archive/2009/10/26/890.aspx</link>
            <description>&lt;a title="near complete wiring harness by BetterThanEveryone, on Flickr" href="http://www.flickr.com/photos/betterthaneveryone/4048154110/"&gt;&lt;img alt="near complete wiring harness" src="http://farm3.static.flickr.com/2435/4048154110_ea23204742.jpg" width="500" height="488" /&gt;&lt;/a&gt;   &lt;p&gt;Remember, this use to look like this:&lt;/p&gt; &lt;a title="Final wiring for v3 drunktender hardware by BetterThanEveryone, on Flickr" href="http://www.flickr.com/photos/betterthaneveryone/3607511119/"&gt;&lt;img alt="Final wiring for v3 drunktender hardware" src="http://farm4.static.flickr.com/3376/3607511119_0d4093cb9a.jpg" width="333" height="500" /&gt;&lt;/a&gt;&lt;img src="http://www.betterthaneveryone.com/aggbug/890.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Clint Rutkas</dc:creator>
            <guid>http://www.betterthaneveryone.com/archive/2009/10/26/890.aspx</guid>
            <pubDate>Mon, 26 Oct 2009 21:03:17 GMT</pubDate>
            <wfw:comment>http://www.betterthaneveryone.com/comments/890.aspx</wfw:comment>
            <comments>http://www.betterthaneveryone.com/archive/2009/10/26/890.aspx#feedback</comments>
            <slash:comments>10</slash:comments>
            <wfw:commentRss>http://www.betterthaneveryone.com/comments/commentRss/890.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Quick mounting to show off look / feel</title>
            <category>Drunktender</category>
            <category>Building</category>
            <category>wiring</category>
            <link>http://www.betterthaneveryone.com/archive/2009/10/24/889.aspx</link>
            <description>&lt;a title="mounted on acrylic by BetterThanEveryone, on Flickr" href="http://www.flickr.com/photos/betterthaneveryone/4041381722/"&gt;&lt;img alt="mounted on acrylic" src="http://farm3.static.flickr.com/2775/4041381722_b20781f654.jpg" width="492" height="500" /&gt;&lt;/a&gt;  &lt;p&gt;I have to say, I’m rather happy how these turned out.  This will be mounted between the two legs protected by yet another sheet of acrylic for PDC.  I’m using hex head screws also to mount these since they just look so dang nice.  I had &lt;a href="http://tapplastics.com/"&gt;TAP plastics&lt;/a&gt; in Seattle do the holes and bends for me.  Chances are there is a plastic place near you that can do this for you.  With the bends and holes, it cost about $40 and they did two of them for me in an hour on a Saturday.  The blue plastic is just protective as I still need to make a few extra holes in them.&lt;/p&gt;&lt;img src="http://www.betterthaneveryone.com/aggbug/889.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Clint Rutkas</dc:creator>
            <guid>http://www.betterthaneveryone.com/archive/2009/10/24/889.aspx</guid>
            <pubDate>Sun, 25 Oct 2009 00:17:32 GMT</pubDate>
            <wfw:comment>http://www.betterthaneveryone.com/comments/889.aspx</wfw:comment>
            <comments>http://www.betterthaneveryone.com/archive/2009/10/24/889.aspx#feedback</comments>
            <slash:comments>12</slash:comments>
            <wfw:commentRss>http://www.betterthaneveryone.com/comments/commentRss/889.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Back plane and inductor PCBs soldered up</title>
            <category>Building</category>
            <category>Drunktender</category>
            <category>Solder</category>
            <category>wiring</category>
            <link>http://www.betterthaneveryone.com/archive/2009/10/23/888.aspx</link>
            <description>&lt;p&gt;Small and reduces the rat’s nest of wiring by creating these little puppies.  Everything has a little LED on it to show when it is on too.&lt;/p&gt;  &lt;p&gt;&lt;a title="back plane PCB by BetterThanEveryone, on Flickr" href="http://www.flickr.com/photos/betterthaneveryone/4037932909/"&gt;&lt;img alt="back plane PCB" src="http://farm3.static.flickr.com/2756/4037932909_3b52b8737c_m.jpg" width="240" height="160" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;a title="load induction suppression PCB by BetterThanEveryone, on Flickr" href="http://www.flickr.com/photos/betterthaneveryone/4038507848/"&gt;&lt;img alt="load induction suppression PCB" src="http://farm3.static.flickr.com/2802/4038507848_70b080fc6e_m.jpg" width="240" height="160" /&gt;&lt;/a&gt; &lt;a title="load induction suppression PCB by BetterThanEveryone, on Flickr" href="http://www.flickr.com/photos/betterthaneveryone/4038507534/"&gt;&lt;img alt="load induction suppression PCB" src="http://farm3.static.flickr.com/2708/4038507534_848b010012_m.jpg" width="240" height="160" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.betterthaneveryone.com/aggbug/888.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Clint Rutkas</dc:creator>
            <guid>http://www.betterthaneveryone.com/archive/2009/10/23/888.aspx</guid>
            <pubDate>Fri, 23 Oct 2009 23:32:12 GMT</pubDate>
            <wfw:comment>http://www.betterthaneveryone.com/comments/888.aspx</wfw:comment>
            <comments>http://www.betterthaneveryone.com/archive/2009/10/23/888.aspx#feedback</comments>
            <slash:comments>12</slash:comments>
            <wfw:commentRss>http://www.betterthaneveryone.com/comments/commentRss/888.aspx</wfw:commentRss>
        </item>
        <item>
            <title>drinktendr progress</title>
            <category>Drunktender</category>
            <category>Solder</category>
            <category>Building</category>
            <link>http://www.betterthaneveryone.com/archive/2009/10/23/887.aspx</link>
            <description>&lt;p&gt;If there is one thing I love, it is getting stuff done.  Here are all the parts for Drinktendr v3.5 and the new PCBs I had created to help aid in wire management.  One is just pure wire management (bottom left) and the other is to help aid in the load induction (bottom right).  The load induction suppressor PCB is designed to directly hook into the valve.&lt;/p&gt; &lt;a title="PDC bits by BetterThanEveryone, on Flickr" href="http://www.flickr.com/photos/betterthaneveryone/4009131069/"&gt;&lt;img alt="PDC bits" src="http://farm4.static.flickr.com/3503/4009131069_e718d556b3_m.jpg" width="240" height="160" /&gt;&lt;/a&gt;  &lt;a title="Drinktendr PCBs by BetterThanEveryone, on Flickr" href="http://www.flickr.com/photos/betterthaneveryone/4037683023/"&gt;&lt;img alt="Drinktendr PCBs" src="http://farm3.static.flickr.com/2719/4037683023_d5b7bbe8af_m.jpg" width="240" height="160" /&gt;&lt;/a&gt;  &lt;br /&gt;&lt;a title="Drinktendr PCBs by BetterThanEveryone, on Flickr" href="http://www.flickr.com/photos/betterthaneveryone/4038431798/"&gt;&lt;img alt="Drinktendr PCBs" src="http://farm3.static.flickr.com/2434/4038431798_d0c0316e0d_m.jpg" width="240" height="160" /&gt;&lt;/a&gt; &lt;a title="Drinktendr PCBs by BetterThanEveryone, on Flickr" href="http://www.flickr.com/photos/betterthaneveryone/4038432404/"&gt;&lt;img alt="Drinktendr PCBs" src="http://farm3.static.flickr.com/2535/4038432404_39fd81311c_m.jpg" width="240" height="160" /&gt;&lt;/a&gt;&lt;img src="http://www.betterthaneveryone.com/aggbug/887.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Clint Rutkas</dc:creator>
            <guid>http://www.betterthaneveryone.com/archive/2009/10/23/887.aspx</guid>
            <pubDate>Fri, 23 Oct 2009 21:09:05 GMT</pubDate>
            <wfw:comment>http://www.betterthaneveryone.com/comments/887.aspx</wfw:comment>
            <comments>http://www.betterthaneveryone.com/archive/2009/10/23/887.aspx#feedback</comments>
            <slash:comments>11</slash:comments>
            <wfw:commentRss>http://www.betterthaneveryone.com/comments/commentRss/887.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>