<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Garrett Patterson</title>
	<atom:link href="http://www.garrettpatterson.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.garrettpatterson.com</link>
	<description>check out my picture of a road v</description>
	<lastBuildDate>Thu, 29 Dec 2011 03:38:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>“@crashpaddesign: This is looking to be a serious contender to Shopify: http://t.co/iKL7oRh9 #woocommerce #ecommerce @Pirnke</title>
		<link>http://www.garrettpatterson.com/2011/12/29/%e2%80%9ccrashpaddesign-this-is-looking-to-be-a-serious-contender-to-shopify-httpt-coikl7orh9-woocommerce-ecommerce-pirnke/</link>
		<comments>http://www.garrettpatterson.com/2011/12/29/%e2%80%9ccrashpaddesign-this-is-looking-to-be-a-serious-contender-to-shopify-httpt-coikl7orh9-woocommerce-ecommerce-pirnke/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 03:38:01 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.garrettpatterson.com/2011/12/29/%e2%80%9ccrashpaddesign-this-is-looking-to-be-a-serious-contender-to-shopify-httpt-coikl7orh9-woocommerce-ecommerce-pirnke/</guid>
		<description><![CDATA[“@crashpaddesign: This is looking to be a serious contender to Shopify: http://t.co/iKL7oRh9 #woocommerce #ecommerce @PirnkeView on Twitter Not everything I say on Twitter is important, but I thought this was. You should follow me @thegarrettp]]></description>
			<content:encoded><![CDATA[<blockquote>
<p>“@crashpaddesign: This is looking to be a serious contender to Shopify: http://t.co/iKL7oRh9 #woocommerce #ecommerce  @Pirnke<br /><a href="http://twitter.com/thegarrettp/status/152228178583236608" target="_blank">View on Twitter</a></p>
</blockquote>
<p>Not everything I say on Twitter is important, but I thought this was. You should follow me <a href="http://twitter.com/#!/thegarrettp" target="_blank">@thegarrettp</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.garrettpatterson.com/2011/12/29/%e2%80%9ccrashpaddesign-this-is-looking-to-be-a-serious-contender-to-shopify-httpt-coikl7orh9-woocommerce-ecommerce-pirnke/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sticky/Squealing Ratchet Starter Briggs and Stratton</title>
		<link>http://www.garrettpatterson.com/2011/11/24/sticky-squealing-ratchet-starter-briggs-and-stratton/</link>
		<comments>http://www.garrettpatterson.com/2011/11/24/sticky-squealing-ratchet-starter-briggs-and-stratton/#comments</comments>
		<pubDate>Wed, 23 Nov 2011 21:03:13 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[DIY]]></category>
		<category><![CDATA[Home]]></category>
		<category><![CDATA[Briggs and Stratton]]></category>
		<category><![CDATA[McLane edger]]></category>
		<category><![CDATA[ratchet starter]]></category>

		<guid isPermaLink="false">http://www.garrettpatterson.com/?p=144</guid>
		<description><![CDATA[It&#8217;s taken me far longer than it should, but I&#8217;ve finally gotten my McLane Edger craigslist score in a proper working order. The original issue had always been an awful squealing noise that would totally un-wind the pull cord in &#8230; <a href="http://www.garrettpatterson.com/2011/11/24/sticky-squealing-ratchet-starter-briggs-and-stratton/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s taken me far longer than it should, but I&#8217;ve finally gotten my McLane Edger craigslist score in a proper working order.  The original issue had always been an awful squealing noise that would totally un-wind the pull cord in disastrous fashion.  A secondary issue was that the cutter arm was totally frozen, would not turn, rotate or telescope.  I thought maybe the cutter arm was the issue as it seemed to happen as soon as I put pressure on the engine pulley.  Turns out they were un-related, after failed attemps to free the cutter arm I ended up just replacing it with a new one &#8211; best $75 spent.</p>
<p>I knew then it had something to do with the starter pulley, which is a hard thing to google if you have no idea what it&#8217;s called.  Common official terms appear to be &#8220;Ratchet Starter&#8221;, or &#8220;Ratchet Clutch&#8221;.  What also makes it hard are the specs for this engine; a 2hp Briggs and Stratton horizontal shaft 4-stroke, I think they haven&#8217;t made them since the mid 90&#8242;s but they are bulletproof little engines used in everything from snow blowers to a favorite for go-karters.  If I knew something about engines, probably wouldn&#8217;t have needed to google anything&#8230;</p>
<p>The best resources I found we&#8217;re Canadians or upper mid-west folk&#8217;s youtube videos on repairing their snow blowers/reel mowers, this was by far at the top:<br />
<a href="http://www.youtube.com/watch?v=S2Kn6RiTA7U">http://www.youtube.com/watch?v=S2Kn6RiTA7U</a></p>
<p>And this guy has nothing but time to dink with small engines:<br />
<a href="http://www.youtube.com/user/pimpinpenz#p/u/39/Fz7RUU_-YSc">http://www.youtube.com/user/pimpinpenz#p/u/39/Fz7RUU_-YSc</a></p>
<p>To repair:</p>
<div id="attachment_162" class="wp-caption alignleft" style="width: 310px"><a href="http://www.garrettpatterson.com/wp-content/uploads/2011/11/edger1.jpg"><img class="size-medium wp-image-162" title="Edger" src="http://www.garrettpatterson.com/wp-content/uploads/2011/11/edger1-300x179.jpg" alt="" width="300" height="179" /></a><p class="wp-caption-text">Edger with pull starter housing on, you&#39;ll pull this off to get to the ratchet starter.</p></div>
<p>This is also an example of how to change the oil, plus stuff on blocks looks cool no matter what it is.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div id="attachment_163" class="wp-caption alignleft" style="width: 310px"><a href="http://www.garrettpatterson.com/wp-content/uploads/2011/11/edger2.jpg"><img class="size-medium wp-image-163" title="Ratchet starter assembly" src="http://www.garrettpatterson.com/wp-content/uploads/2011/11/edger2-300x179.jpg" alt="" width="300" height="179" /></a><p class="wp-caption-text">Ratchet starter assembly after removing pull-cord housing</p></div>
<p>This picture shows the ratchet assembly in the center after removing the pull-cord housing.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div id="attachment_164" class="wp-caption alignleft" style="width: 310px"><a href="http://www.garrettpatterson.com/wp-content/uploads/2011/11/edger3.jpg"><img class="size-medium wp-image-164" title="Inside of ratchet starter" src="http://www.garrettpatterson.com/wp-content/uploads/2011/11/edger3-300x179.jpg" alt="" width="300" height="179" /></a><p class="wp-caption-text">Inside of ratchet starter</p></div>
<p>This shows the inside of the ratchet starter.  I&#8217;d actually been to this point about three times, oiled and cleaned all of the ball bearings with no luck solving my problem.  Wasn&#8217;t until I watched that youtube video I realized that inner shaft was the problem.  I took that off, was able to clean the entire inside of the ball-bearing housing, and cleaned and lubricated the engine shaft and ratchet-post thing.</p>
<p>Now it runs like a champ, along with my new cutter arm it&#8217;s like new.  And yes, my yard looks better than yours.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.garrettpatterson.com/2011/11/24/sticky-squealing-ratchet-starter-briggs-and-stratton/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Install OTA HD Antenna &#8211; cut the Comcast Cord</title>
		<link>http://www.garrettpatterson.com/2011/11/23/install-ota-hd-antenna-cut-the-comcast-cord/</link>
		<comments>http://www.garrettpatterson.com/2011/11/23/install-ota-hd-antenna-cut-the-comcast-cord/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 20:58:34 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[DIY]]></category>
		<category><![CDATA[Home]]></category>
		<category><![CDATA[Comcast]]></category>
		<category><![CDATA[DTV Transition]]></category>
		<category><![CDATA[HD Antenna Install]]></category>
		<category><![CDATA[OTA HD]]></category>

		<guid isPermaLink="false">http://www.garrettpatterson.com/?p=167</guid>
		<description><![CDATA[I won&#8217;t rant for too long about the great Sham that is Comcast, but remember the big HD TV transition?  With Comcast you &#8220;didn&#8217;t need to do anything&#8221;, right &#8211; nothing except get some set top boxes for each TV &#8230; <a href="http://www.garrettpatterson.com/2011/11/23/install-ota-hd-antenna-cut-the-comcast-cord/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I won&#8217;t rant for too long about the great Sham that is Comcast, but remember the big HD TV transition?  With Comcast you &#8220;didn&#8217;t need to do anything&#8221;, right &#8211; nothing except get some set top boxes for each TV in your home if you wanted to retain the same programming.  Oh &#8211; and you only get one for free with most cable plans.</p>
<p>Long story short, I found out with this set top box I didn&#8217;t get HD channels, yet my other tv with no set top box did get HD channels.  THE COMCAST BOXES BLOCK HD CHANNELS BY DEFAULT!  Why?  So they can up-charge you $$$ to upgrade, essentially, pay extra money to <em>remove</em> a filter on their boxes.</p>
<p>As an irate customer, I bought an HD antenna and let it sit in my garage for about 18 months, then I decided to install it:</p>
<p><a href="https://lh4.googleusercontent.com/-z_4HVToKEMM/Tsv7htv-JTI/AAAAAAAAKtg/lYNgwypuYEs/s800/IMAG0012.jpg" target="_blank"><img src="https://lh4.googleusercontent.com/-z_4HVToKEMM/Tsv7htv-JTI/AAAAAAAAKtg/lYNgwypuYEs/s400/IMAG0012.jpg" alt="Installed HD Antenna" /></a></p>
<p>Parts:</p>
<ul>
<li><a title="Philips MANT940 HD Antenna" href="http://www.amazon.com/gp/product/B000VL1QF6/ref=oh_o04_s00_i00_details" target="_blank">Philips MANT940 HD Antenna</a></li>
<li>10&#8242; 1 1/2&#8243; EMT Conduit (~$12 at Home Depot)</li>
<li>25&#8242; 14 AWG Bare Copper Ground Wire</li>
<li><a href="http://www.amazon.com/WINEGARD-GB-8200-Dual-Grounding-Block/dp/B0029U2XIG/ref=sr_1_3?ie=UTF8&amp;qid=1321994152&amp;sr=8-3" target="_blank">Coax Grounding Block (Single or Dual)</a></li>
<li>RG-6 Quad Shield Coaxial Cable</li>
<li><a href="http://www.amazon.com/gp/product/B0009G6RXY/ref=oh_o02_s00_i00_details" target="_blank">(Optional) Pro Cable Tools (just like the Comcast Man)</a></li>
</ul>
<p><span style="font-size: small;"><span style="line-height: 24px;">The Antenna I bought was cheap, outdoor, and had a nice swivel mount for direct mounting to the side of a house, on top of something, or pole mounting.  Turns out 1 1/2&#8243; EMT conduit is really cheap, light, and sturdy.  I decided to go big and get it just above my power service mast.  Location was chosen based on the existing cable entering the house at that location, easy to mount by getting onto the garage roof, and it will be with all the other tall stuff attached to my house.  As soon as you try to home run your own cable more than once, you&#8217;ll desire good tools, so you can be slick like the Comcast man.  That Paladin set has been worth every penny, because did you know you can use Coax for signal cable too? Now you&#8217;re a home theater master.</span></span></p>
<p><span style="font-size: small;"><span style="line-height: 24px;"> </span></span></p>
<div id="attachment_168" class="wp-caption alignleft" style="width: 189px"><a href="http://www.garrettpatterson.com/wp-content/uploads/2011/11/hdant1.jpg"><img class="size-medium wp-image-168" title="Home entry point with Comcast service line" src="http://www.garrettpatterson.com/wp-content/uploads/2011/11/hdant1-179x300.jpg" alt="" width="179" height="300" /></a><p class="wp-caption-text">Home entry point with Comcast service line</p></div>
<p>&nbsp;</p>
<p>In a passing conversation about HD Antennas, someone at work clued me into the fact I want to make sure I ground it properly.  Something I figured the coax cable would take care of, but once you bolt a 8&#8242; pole to your house that is now the highest point of your roof, its a good, easy idea.  I just bought a length of 14AWG bare copper wire that runs from the top of the pole with the cable to the house, then takes the most direct route to my existing home electrical ground conveniently placed near where my cable enters the house.</p>
<p>The Comcast cable already had a single ground block for the coax, which had a ground wire also connected to the home ground.  This was an easy swap out for a dual ground block.  From there the cable enters the garage to where it gets Amped and distributed through the house.</p>
<p><a href="http://www.garrettpatterson.com/wp-content/uploads/2011/11/IMAG0016.jpg"><img class="alignleft size-medium wp-image-170" title="Garage entry point" src="http://www.garrettpatterson.com/wp-content/uploads/2011/11/IMAG0016-179x300.jpg" alt="Cable entering the garage" width="179" height="300" /></a>Comcast also installed a signal amp to help with my internet and TV signal.  This is also helpful and usually recommended for HD Antenna installs.  So now in the garage, I have a Comcast line, and my Antenna line coming in the same spot.  This makes it really easy to plug and play between the two for troubleshooting, and whenever else in the future.</p>
<p>&nbsp;</p>
<p style="clear: both;">The results were OK, most channels come in fine, however a few don&#8217;t come in well at all.  I have a feeling some alignment is probably necessary, that and getting my wife sold on the nuances of OTA cable.  Overall, its a success and if I had more time id figure out the alignment, or buy a better antenna.  Also, <a href="http://www.antennaweb.org/">http://www.antennaweb.org/</a> is actually an awesome resource with the information you&#8217;d need and want about OTA Stations, strengths, and locations in order to determine optimal antenna, placement, and alignment.</p>
<p style="clear: both;">&nbsp;</p>
<div id="attachment_172" class="wp-caption alignleft" style="width: 189px"><a href="http://www.garrettpatterson.com/wp-content/uploads/2011/11/IMAG0018.jpg"><img class="size-medium wp-image-172" title="View from backyard" src="http://www.garrettpatterson.com/wp-content/uploads/2011/11/IMAG0018-179x300.jpg" alt="" width="179" height="300" /></a><p class="wp-caption-text">Flying high and proud, like a symbol of freedom from Comcast</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.garrettpatterson.com/2011/11/23/install-ota-hd-antenna-cut-the-comcast-cord/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Get current domain from NAnt</title>
		<link>http://www.garrettpatterson.com/2011/11/02/get-current-domain-from-nant/</link>
		<comments>http://www.garrettpatterson.com/2011/11/02/get-current-domain-from-nant/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 04:13:29 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[get windows domain from command line]]></category>
		<category><![CDATA[NAnt]]></category>

		<guid isPermaLink="false">http://www.garrettpatterson.com/?p=160</guid>
		<description><![CDATA[I use NAnt for a build and deployment tool for databases and OLAP. I wanted to be able to add only the accounts needed per-environment to certain objects on the fly through the script, as they are run on whatever &#8230; <a href="http://www.garrettpatterson.com/2011/11/02/get-current-domain-from-nant/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I use NAnt for a build and deployment tool for databases and OLAP.  I wanted to be able to add only the accounts needed per-environment to certain objects on the fly through the script, as they are run on whatever workstation they are being run from.</p>
<p>I&#8217;m using the &#8220;Primary Dns Suffix&#8221; of the machine &#8211; which for me indicates the domain we&#8217;re running in. (Dev/Test/Prod).  I&#8217;m accessing this using ipconfig /all, saving the output to text, getting the value I want as a property for use later in the script.</p>
<pre class="brush: xml" lang="xml">&lt;exec program="ipconfig" output="ipconfig.all.txt"&gt;
    &lt;arg value="/all" /&gt;
&lt;/exec&gt;
&lt;loadfile file="ipconfig.all.txt" property="ipconfig.all" /&gt;
&lt;delete file="ipconfig.all.txt" /&gt;
&lt;property name="envrionment" value="dev" /&gt;
&lt;regex pattern="(?&lt;=Primary Dns Suffix\s(\s\.){1,7}\s\:\s)(?&lt;environment&gt;\w{1,})" input="${ipconfig.all}"/&gt;
&lt;echo message="CURRENT ENvIrONmENT: ${environment}" /&gt;</pre>
<p>Regex Master.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.garrettpatterson.com/2011/11/02/get-current-domain-from-nant/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Analysis Services Add role members programmatically in C#</title>
		<link>http://www.garrettpatterson.com/2011/11/02/analysis-services-add-role-members-programmatically-in-c/</link>
		<comments>http://www.garrettpatterson.com/2011/11/02/analysis-services-add-role-members-programmatically-in-c/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 03:03:49 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Analysis Services]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OLAP]]></category>

		<guid isPermaLink="false">http://www.garrettpatterson.com/?p=149</guid>
		<description><![CDATA[First, I don&#8217;t know why; but it seems like as soon as you add in the word OLAP or Analysis Services to your problem things just stop working as you would normally expect. Problem: I&#8217;m using NAnt as a deployment &#8230; <a href="http://www.garrettpatterson.com/2011/11/02/analysis-services-add-role-members-programmatically-in-c/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>First, I don&#8217;t know why; but it seems like as soon as you add in the word OLAP or Analysis Services to your problem things just <em>stop working</em> as you would normally expect.</p>
<p>Problem:</p>
<ul>
<li>I&#8217;m using NAnt as a deployment tool for Database versioning and MS OLAP deployment in multiple environments.</li>
<li>My service accounts aren&#8217;t standardized across environments (<em>don&#8217;t get me started with THAT one&#8230;)</em></li>
<li>I want to apply different accounts, and ONLY the accounts for those environments to my cube roles.</li>
</ul>
<p><span style="font-size: small;"><span style="line-height: 24px;">The &#8220;should work out of the box solution&#8221;:</span></span></p>
<p><span style="font-size: small;"><span style="line-height: 24px;"><br />
</span></span></p>
<pre class="brush: csharp" lang="csharp">Server server = new Server();
server.Connect("mah-olap-server");
Database db = server.Databases.FindByName("MahOLAPDB");
Role role = db.Roles.GetByName("Role");

RoleMember r= new RoleMember("Domain\\Account");
role.Members.Add(r);
role.Update();</pre>
<p>What&#8217;s the big deal right? Well, there are a few problems:</p>
<ul>
<li>Adding it this way un-like through the GUI does not map the user account to an SID</li>
<li>Even after you&#8217;ve mapped it to an SID it will still add a duplicate role member.</li>
</ul>
<p>First:</p>
<pre class="brush: csharp" lang="csharp">Server server = new Server();
server.Connect("mah-olap-server");
Database db = server.Databases.FindByName("MahOLAPDB");
Role role = db.Roles.GetByName("Role");
RoleMember r= new RoleMember("Domain\\Account");
if(!role.Members.Contains(r)){
    role.Members.Add(r);
    role.Update();
}</pre>
<p>That is hopeless, I thought at first because of the SID thing &#8211; but NO&#8230; After the next solution, Role.Members.Contains() does not work very well even though in debugger I have the EXACT same role member I&#8217;m adding, and exists in the role.  Not only was it not finding it, but it was still adding a duplicate.  This along with the not mapping to proper SID &#8211; I deemed to be a future-issue I should avoid now.  So&#8230;</p>
<pre class="brush: csharp" lang="csharp">List members = new List(); // I fill this with all the members I need to add
Server server = new Server();
server.Connect("mah-olap-server");
Database db = server.Databases.FindByName("MahOLAPDB");
Role role = db.Roles.GetByName("Role");
//oh wtf, I can't seem to Linq to the role.Members so I'll do it this way, plus case insensitivity on .Remove() doesn't exist
foreach(RoleMember rm in role.Members){
   string er = (from m in members
   where m.Equals(rm.Name, StringComparison.InvariantCultureIgnoreCase)
   select m).FirstOrDefault();

   if(er!=null){
       members.Remove(er);
    }
}

foreach(string m in members){
    //you'll want to wrap in try catch in case the account doesn't exist, you'll get a IdentityNotMappedException
    NTAccount acct = new NTAccount(m);
    //conver it to SID - check if its even real
    SecurityIdentifier sid =   (SecurityIdentifier)acct.Translate(typeof(SecurityIdentifier));
    //convert it back from SID  - this will get us proper account Name format/casing
    acct = (NTAccount)sid.Translate(typeof(NTAccount));
    //create my wholesome role
    //already done my "contains" magic, add that monkey
    role.Members.Add(r);
    role.Update();
    }
}</pre>
<p>That final solution actually works out pretty well, and accomplishes a lot of items I would have skipped had the first one just &#8220;worked&#8221;:</p>
<ul>
<li>Does the mapping of user accounts prior to adding to the role.  Make sure name format, and SID is added.</li>
<li>Creates the same behavior as when you add it through VS or SSMS GUI (if you add one that exists it does nothing)</li>
<li>Wasted countless hours</li>
<li>No over-engineered minute step of my deployment</li>
</ul>
<p>And it did solve several problems along the way:</p>
<ul>
<li>Creating RoleMembers with just the name does not map it to AD or a proper SID</li>
<li>Using the Role.Members.Contains() doesn&#8217;t seem to work well</li>
<li>You can&#8217;t make .Remove() on a List&lt;string&gt; case insensitive</li>
</ul>
<p>
I will try to write a follow up soon regarding how to determine what environment (primary domain your machine is connecting to) you&#8217;re in from NAnt</p>
]]></content:encoded>
			<wfw:commentRss>http://www.garrettpatterson.com/2011/11/02/analysis-services-add-role-members-programmatically-in-c/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Because LAWS were optional until now? McGinn orders police to enforce rules at protesters&#8217; encampment http://t.co/Hvndggix @SeattlePI</title>
		<link>http://www.garrettpatterson.com/2011/10/13/because-laws-were-optional-until-now-mcginn-orders-police-to-enforce-rules-at-protesters-encampment-httpt-cohvndggix-seattlepi/</link>
		<comments>http://www.garrettpatterson.com/2011/10/13/because-laws-were-optional-until-now-mcginn-orders-police-to-enforce-rules-at-protesters-encampment-httpt-cohvndggix-seattlepi/#comments</comments>
		<pubDate>Wed, 12 Oct 2011 16:23:27 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.garrettpatterson.com/2011/10/13/because-laws-were-optional-until-now-mcginn-orders-police-to-enforce-rules-at-protesters-encampment-httpt-cohvndggix-seattlepi/</guid>
		<description><![CDATA[Because LAWS were optional until now? McGinn orders police to enforce rules at protesters&#8217; encampment http://t.co/Hvndggix @SeattlePI View on Twitter Not everything I say on Twitter is important, but I thought this was. You should follow me @thegarrettp]]></description>
			<content:encoded><![CDATA[<blockquote>
<p>Because LAWS were optional until now? McGinn orders police to enforce rules at protesters&#8217; encampment http://t.co/Hvndggix @SeattlePI <br /><a href="http://twitter.com/thegarrettp/status/124157602803363840" target="_blank">View on Twitter</a></p>
</blockquote>
<p>Not everything I say on Twitter is important, but I thought this was. You should follow me <a href="http://twitter.com/#!/thegarrettp" target="_blank">@thegarrettp</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.garrettpatterson.com/2011/10/13/because-laws-were-optional-until-now-mcginn-orders-police-to-enforce-rules-at-protesters-encampment-httpt-cohvndggix-seattlepi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bus rule #1: if you enter via back door, you must not sit ahead of articulated section until all front-boarding riders have had a chance</title>
		<link>http://www.garrettpatterson.com/2011/10/12/bus-rule-1-if-you-enter-via-back-door-you-must-not-sit-ahead-of-articulated-section-until-all-front-boarding-riders-have-had-a-chance/</link>
		<comments>http://www.garrettpatterson.com/2011/10/12/bus-rule-1-if-you-enter-via-back-door-you-must-not-sit-ahead-of-articulated-section-until-all-front-boarding-riders-have-had-a-chance/#comments</comments>
		<pubDate>Wed, 12 Oct 2011 01:08:32 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.garrettpatterson.com/2011/10/12/bus-rule-1-if-you-enter-via-back-door-you-must-not-sit-ahead-of-articulated-section-until-all-front-boarding-riders-have-had-a-chance/</guid>
		<description><![CDATA[Not everything I say on Twitter is important, but I thought this was. You should follow me @thegarrettp Bus rule #1: if you enter via back door, you must not sit ahead of articulated section until all front-boarding riders have &#8230; <a href="http://www.garrettpatterson.com/2011/10/12/bus-rule-1-if-you-enter-via-back-door-you-must-not-sit-ahead-of-articulated-section-until-all-front-boarding-riders-have-had-a-chance/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Not everything I say on Twitter is important, but I thought this was. You should follow me <a href="http://twitter.com/#!/thegarrettp" target="_blank">@thegarrettp</a> <a href="http://twitter.com/thegarrettp/status/123926116175069185" target="_blank" style="display: none;">Bus rule #1: if you enter via back door, you must not sit ahead of articulated section until all front-boarding riders have had a chance #wp</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.garrettpatterson.com/2011/10/12/bus-rule-1-if-you-enter-via-back-door-you-must-not-sit-ahead-of-articulated-section-until-all-front-boarding-riders-have-had-a-chance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ifttt.com is really slick 3 http://t.co/3ha12Wpr, testing some social integration</title>
		<link>http://www.garrettpatterson.com/2011/09/29/ifttt-com-is-really-slick-3-httpt-co3ha12wpr-testing-some-social-integration/</link>
		<comments>http://www.garrettpatterson.com/2011/09/29/ifttt-com-is-really-slick-3-httpt-co3ha12wpr-testing-some-social-integration/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 19:18:52 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.garrettpatterson.com/2011/09/29/ifttt-com-is-really-slick-3-httpt-co3ha12wpr-testing-some-social-integration/</guid>
		<description><![CDATA[Not everything I say on Twitter is important, but I thought this was. You should follow me @thegarrettp ifttt.com is really slick 3 http://t.co/3ha12Wpr, testing some social integration #wp]]></description>
			<content:encoded><![CDATA[<p>Not everything I say on Twitter is important, but I thought this was. You should follow me <a href="http://twitter.com/#!/thegarrettp" target="_blank">@thegarrettp</a> <a href="http://twitter.com/thegarrettp/status/119128922322518016" target="_blank" style="display: none;">ifttt.com is really slick 3 http://t.co/3ha12Wpr, testing some social integration #wp</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.garrettpatterson.com/2011/09/29/ifttt-com-is-really-slick-3-httpt-co3ha12wpr-testing-some-social-integration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SimpleDB: non printable charachters</title>
		<link>http://www.garrettpatterson.com/2011/08/29/simpledb-non-printable-charachters/</link>
		<comments>http://www.garrettpatterson.com/2011/08/29/simpledb-non-printable-charachters/#comments</comments>
		<pubDate>Mon, 29 Aug 2011 01:35:36 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[ascii]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[invalid xml charachters]]></category>
		<category><![CDATA[simple db]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://www.garrettpatterson.com/?p=102</guid>
		<description><![CDATA[&#8220;this is my sweet string&#8221; == &#8220;dGhpcyBpcyBteSBzd2VldCBzdHJpbmcZ&#8221;? Those two are actually equivalent, as proven by Amazon SimpleDB.  We started seeing these mysterious strings in our SimpleDB data which is supposed to be  a direct upload of SQL data for use &#8230; <a href="http://www.garrettpatterson.com/2011/08/29/simpledb-non-printable-charachters/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>&#8220;this is my sweet string&#8221; == &#8220;dGhpcyBpcyBteSBzd2VldCBzdHJpbmcZ&#8221;?</p>
<p>Those two are actually equivalent, as proven by Amazon SimpleDB.  We started seeing these mysterious strings in our SimpleDB data which is supposed to be  a direct upload of SQL data for use in a UI.  I automatically assumed it had something to do with special characters and proper encoding, as we have seen in our processes before.  But this case was more unique because instead of just mangling the special character, it has managed to blow out the entire string&#8230; WTF</p>
<p>The culprit was an &#8220;End of medium&#8221; ASCII control charachter.  These ASCII control charachters are all <em>non printable</em>.  Once I had this figured out some more googling led me to the answer of why the whole string was unrecognizeable, base64 encoding:</p>
<p>What&#8217;s happening/changed: <a href="http://www.dibonafide.com/?p=25">http://www.dibonafide.com/?p=25</a></p>
<p>The official documentation: <a href="http://docs.amazonwebservices.com/AmazonSimpleDB/latest/DeveloperGuide/index.html?InvalidCharacters.html">http://docs.amazonwebservices.com/AmazonSimpleDB/latest/DeveloperGuide/index.html?InvalidCharacters.html</a></p>
<p>In my case the charachters were more of an anomaly and I just wanted to be rid of them.  I had some options of taking care of it during the upload to SimpleDB or at the DB level.  What worked easier was just throwing this handy function on my DB, and converting in the view I&#8217;m using to get data to upload:</p>
<p><a href="http://iso30-sql.blogspot.com/2010/10/remove-non-printable-unicode-characters.html">http://iso30-sql.blogspot.com/2010/10/remove-non-printable-unicode-characters.html</a></p>
<p>Per the official documentation above the response object for the item will actually indicate what type of encoding it&#8217;s using.  A few sites have mentioned they just base64 encoded on upload, and then decoded when its being used for display.  I think with it specified in the item itself, you can probably just design your UI or whatever is consuming the data to check for base64 encoded strings, then decode, and remove any invalid characters there.</p>
<p>Now if I could just get WordPress to stop using invalid XML characters in its markup&#8230; that&#8217;s a topic for another day!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.garrettpatterson.com/2011/08/29/simpledb-non-printable-charachters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usability: Degraded</title>
		<link>http://www.garrettpatterson.com/2011/08/25/usability-degraded/</link>
		<comments>http://www.garrettpatterson.com/2011/08/25/usability-degraded/#comments</comments>
		<pubDate>Wed, 24 Aug 2011 22:25:40 +0000</pubDate>
		<dc:creator>Garrett</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[accessbility]]></category>
		<category><![CDATA[copyjacking]]></category>
		<category><![CDATA[hijacking down arrow]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[ux]]></category>
		<category><![CDATA[write a letter]]></category>

		<guid isPermaLink="false">http://www.garrettpatterson.com/?p=98</guid>
		<description><![CDATA[Recently I&#8217;ve come across two cases where it appears in the interest of usability, we&#8217;ve gone too far and invaded what I thought used to be &#8220;boundaries&#8221; for UX, and proper accessibility practice. 1. Google Hijacking My Down Arrow Have &#8230; <a href="http://www.garrettpatterson.com/2011/08/25/usability-degraded/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Recently I&#8217;ve come across two cases where it appears in the interest of usability, we&#8217;ve gone too far and invaded what I thought used to be &#8220;boundaries&#8221; for UX, and proper accessibility practice.</p>
<p><strong>1. Google Hijacking My Down Arrow</strong></p>
<p>Have you ever gone to a google search result page and tried to use your down arrow on the keyboard to bump down your scroll?  AND NOTHING HAPPENS?  They&#8217;ve hijacked your down arrow and given you what&#8217;s been affectionately named (by the internets) &#8220;little blue arrow&#8221; which is a cursor for each search result.  Each press of your down arrow will move this cursor to the next result.  Before: One keypress of down arrow would show roughly 10-20% more page &#8220;below the fold&#8221;. Now: I have to press my down arrow as many times as there are results showing &#8220;above the fold&#8221; to see more of the page&#8230;</p>
<p>I don&#8217;t know if this is some kind of conspiracy to increase views of top ranking search terms or just a bad attempt to &#8220;improve&#8221; usability, I&#8217;d rather it be the former in my book.</p>
<p><a href="http://www.google.com/#sclient=psy&amp;hl=en&amp;source=hp&amp;q=google+hijacking+down+arrow&amp;pbx=1&amp;oq=google+hijacking+down+arrow&amp;aq=f&amp;aqi=q-n1&amp;aql=&amp;gs_sm=e&amp;gs_upl=2001l6244l0l6343l30l18l1l4l4l0l267l1988l4.5.4l13l0&amp;bav=on.2,or.r_gc.r_pw.&amp;fp=996a5a2e91f3c54d&amp;biw=1086&amp;bih=723">http://www.google.com/#sclient=psy&amp;hl=en&amp;source=hp&amp;q=google+hijacking+down+arrow&amp;pbx=1&amp;oq=google+hijacking+down+arrow&amp;aq=f&amp;aqi=q-n1&amp;aql=&amp;gs_sm=e&amp;gs_upl=2001l6244l0l6343l30l18l1l4l4l0l267l1988l4.5.4l13l0&amp;bav=on.2,or.r_gc.r_pw.&amp;fp=996a5a2e91f3c54d&amp;biw=1086&amp;bih=723</a></p>
<p><a href="http://www.garrettpatterson.com/wp-content/uploads/2011/08/googlehijack.png"><img class="alignnone size-medium wp-image-110" title="Google usability hijack" src="http://www.garrettpatterson.com/wp-content/uploads/2011/08/googlehijack-300x201.png" alt="" width="300" height="201" /></a></p>
<p><strong>2. Sites are copy-jacking me</strong></p>
<p>Yes it appears the current definition of &#8220;copyjacking&#8221; has something to do with copyright stuff, but that&#8217;s stupid.  So I&#8217;m on a news article, and I copy a line of text:</p>
<blockquote><p>The vote had no legal bearing on the state&#8217;s mega-project</p></blockquote>
<p>I paste it in order to tweet something and this is what I get:</p>
<blockquote><p>The vote had no legal bearing on the state&#8217;s mega-project<br />
Read more: http://www.seattlepi.com/local/transportation/article/On-Ref-1-Seattle-says-build-the-tunnel-2076294.php#ixzz1VIzuHvAE</p></blockquote>
<p>Not just text that I <em>didn&#8217;t</em> copy, but its got two whole line breaks, blowing up my little tweet window&#8230;  Even worse than Seattle City Council wasting our time on votes and referendums that have &#8220;no legal bearing&#8221;</p>
<p>Based on my scientific Google research the practice seems fairly new, and the culprit on the site I was viewing was <a href="http://www.tynt.com" target="_blank">Tynt</a>, as noted in the post below:</p>
<p><a href="http://stackoverflow.com/questions/1203082/injecting-text-when-content-is-copied-from-web-page">http://stackoverflow.com/questions/1203082/injecting-text-when-content-is-copied-from-web-page</a></p>
<p>I haven&#8217;t had time to crack open the js, but if they were also tracking <em>what</em> I copied it would be a great opportunity for a little #writealetter hacking to tell them what I think.  Maybe this atrocity will warrant general analytics-spamming, we&#8217;ll see who else is on my list.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.garrettpatterson.com/2011/08/25/usability-degraded/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

