<?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>Dev&#039;s Advocate</title>
	<atom:link href="http://devsadvocate.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://devsadvocate.com</link>
	<description>Fueled by Mountain Dew and a love of technology</description>
	<lastBuildDate>Mon, 10 Sep 2012 14:59:55 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Crunchyroll</title>
		<link>http://devsadvocate.com/20120909/crunchyroll/</link>
		<comments>http://devsadvocate.com/20120909/crunchyroll/#comments</comments>
		<pubDate>Sun, 09 Sep 2012 14:38:25 +0000</pubDate>
		<dc:creator>Kevin Fairchild</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://devsadvocate.com/?p=319</guid>
		<description><![CDATA[Crunchyroll is, according to their About page, &#8220;the leading global video service for Japanese Anime and Asian media.&#8221; With that in mind, I really had much higher expectations for their service. Their content is great and &#8230; <a class="more-link" href="http://devsadvocate.com/20120909/crunchyroll/">More<span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><center><img src="http://devsadvocate.com/wp-content/uploads/2012/09/frustrated.jpg" alt="" title="frustrated" width="500" height="281" class="aligncenter size-full wp-image-320" /></center></p>
<p><a href="http://www.crunchyroll.com" title="Crunchyroll" rel="nofollow">Crunchyroll</a> is, according to their <a href="http://www.crunchyroll.com/about" title="About" rel="nofollow">About</a> page, &#8220;the leading global video service for Japanese Anime and Asian media.&#8221;</p>
<p>With that in mind, I really had much higher expectations for their service.</p>
<p>Their content is great and they have made some nice deals with the various big-name media companies, giving them the ability to simulcast content and make it available earlier than anyone else.</p>
<p>But they need to start putting some of their money into usability testing and developers!</p>
<p>I&#8217;ve been using CR for a couple weeks now, both via the web and their Roku channel. It has made me absolutely loathe their queue system.</p>
<p>It feels like you have a poor understanding of how people actually use their product&#8230;</p>
<p>The only things in my queue should be episodes that I haven&#8217;t yet watched. I don&#8217;t see why it should be a difficult concept.</p>
<p>There are industry-standard ways to address these problems (see also: Hulu, Netflix, Amazon, etc.)</p>
<p>Reading back in old threads, it seems like they initially were trying to kill two birds with one stone&#8230; but making the queue serve the purpose of letting people manage a list of shows they like and also shows they are currently watching just sort of dilutes both goals.</p>
<p>Do. Not. Like.</p>
]]></content:encoded>
			<wfw:commentRss>http://devsadvocate.com/20120909/crunchyroll/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C#</title>
		<link>http://devsadvocate.com/20120429/c/</link>
		<comments>http://devsadvocate.com/20120429/c/#comments</comments>
		<pubDate>Sun, 29 Apr 2012 20:30:55 +0000</pubDate>
		<dc:creator>Kevin Fairchild</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://devsadvocate.com/?p=312</guid>
		<description><![CDATA[I&#8217;m teaching myself C# (again). Learning another language can get frustrating sometimes. Going from the &#8220;Well, I know how to do it in the other language!&#8221; stage to &#8220;Oh, that&#8217;s right&#8230; I remember&#8221; part still takes &#8230; <a class="more-link" href="http://devsadvocate.com/20120429/c/">More<span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m teaching myself C# (again).  Learning another language can get frustrating sometimes.</p>
<p><img src="http://devsadvocate.com/wp-content/uploads/2012/04/htmlforbabies.jpg" alt="" title="HTML For Babies" width="504" height="509" class="aligncenter size-full wp-image-316" /></p>
<p>Going from the &#8220;Well, I know how to do it in the other language!&#8221; stage to &#8220;Oh, that&#8217;s right&#8230; I remember&#8221; part still takes a bit of time, but at least I&#8217;m going from VB.NET to C#.NET, so it wasn&#8217;t that <em>different</em>.</p>
<p>Having a goal in mind definitely helped.</p>
<p>My motivation behind picking up C# was pretty straight-forward&#8230;  There was a poorly written plugin for PlayOn for Roku that I wanted to make my own version of.  I mean, if an app&#8217;s going to scrape a website for free episodes of tv shows, it should at least do a good job of it! <img src='http://devsadvocate.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />   All of the examples I found were in C#&#8230; so I just sort of went with it&#8230;</p>
<p>I made a lot of progress with my plugin and got over a lot of the initial hurdles that held me back last time.  Most of it just required my getting used to the syntax differences from VB.NET.  I can&#8217;t say I&#8217;m in love with the language, but I certainly don&#8217;t hate it anymore.</p>
<p>The plugin is still a work in progress, mostly due to copyright protected media streams&#8230; but I like a challenge.  I&#8217;ve decided to hold off until the next API release is pushed out (currently in Beta) because it should have better support for what I want to do.</p>
<p>While the plugin is on hold, I&#8217;m teaching someone who has never do ANY programming to make some simple apps in C#.  I&#8217;m looking forward to seeing how that goes.  </p>
<p>Not only does it help give me an excuse to brush up on my understanding of C#, but it&#8217;s fun being there to see those &#8220;<em>Ah-hah!</em>&#8221; moments when the person realizes that pretty much anything can be built (within reason, of course) and all it takes is effort and a bit of ingenuity.</p>
]]></content:encoded>
			<wfw:commentRss>http://devsadvocate.com/20120429/c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sometimes They Get It Right</title>
		<link>http://devsadvocate.com/20111128/sometimes-they-get-it-right/</link>
		<comments>http://devsadvocate.com/20111128/sometimes-they-get-it-right/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 17:33:00 +0000</pubDate>
		<dc:creator>Kevin Fairchild</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://devsadvocate.com/?p=307</guid>
		<description><![CDATA[As much as a complain about companies who are constantly getting it wrong, I have to say that Delta actually did it right with their Twitter support team. It started out with me doing my usual &#8230; <a class="more-link" href="http://devsadvocate.com/20111128/sometimes-they-get-it-right/">More<span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>As much as a complain about companies who are constantly getting it wrong, I have to say that Delta actually did it right with their Twitter support team.</p>
<p><img src="http://devsadvocate.com/wp-content/uploads/2011/11/a_plus.jpg" alt="" title="A+" width="540" height="360" class="aligncenter size-full wp-image-308" /></p>
<p>It started out with me doing my usual <a href="http://twitter.com/#!/disemvowel/status/141195225979822080" target="_blank">shout into the dark</a>&#8230;</p>
<p>Some companies monitor Twitter actively and some don&#8217;t.</p>
<p>Within a minute or so of posting my question, I <a href="http://twitter.com/#!/DeltaAssist/status/141195595426701312" target="_blank">received a helpful response</a> from @DeltaAssist, letting me know the situation and giving me an option to address my issue.</p>
<p>I sent them a direct message with the information and they took care of the rest.</p>
<p>Beautiful.</p>
<p>Now, yes, I can certainly fault Delta for not giving me the option to do that functionality myself via the website&#8230; I mean, if all that&#8217;s needed is a SkyMiles account number and a confirmation number, what&#8217;s the issue&#8230;?  But at least there was a &#8220;Plan B&#8221; that worked.</p>
<p>Using Twitter to quickly solve customer issues is awesome.  I just wish more companies used it like that.</p>
]]></content:encoded>
			<wfw:commentRss>http://devsadvocate.com/20111128/sometimes-they-get-it-right/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chunked Up</title>
		<link>http://devsadvocate.com/20111026/chunked-up/</link>
		<comments>http://devsadvocate.com/20111026/chunked-up/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 20:42:37 +0000</pubDate>
		<dc:creator>Kevin Fairchild</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://devsadvocate.com/?p=301</guid>
		<description><![CDATA[OMG. I want to strangle someone! For the past week or so, I&#8217;ve been dealing with an issue where a simple UploadValues call to the WebClient object was taking 10-30 seconds instead of the nearly-instance response &#8230; <a class="more-link" href="http://devsadvocate.com/20111026/chunked-up/">More<span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>OMG. I want to strangle someone!</p>
<p><img src="http://devsadvocate.com/wp-content/uploads/2011/10/strangle.gif" alt="" title="Strangle" width="341" height="341" class="aligncenter size-full wp-image-304" /></p>
<p>For the past week or so, I&#8217;ve been dealing with an issue where a simple UploadValues call to the WebClient object was taking 10-30 seconds instead of the nearly-instance response time I was expecting.</p>
<p>I&#8217;ve tried going at it from different angles.</p>
<p>I&#8217;ve done everything I could possibly think of.  I tried using HttpWebRequest/HttpWebResponse.  I tried explicitly turning off the proxy check.  You name it and there&#8217;s a good chance I attempted it.</p>
<p>Today, though, I finally had a breakthrough.</p>
<p>I was looking at a TCP trace from the connection and noticed the responses being returned from the site were &#8216;chunked&#8217;.</p>
<p>Even though it&#8217;s something I&#8217;m sure .NET has handlers for, I figured it was worth looking into.  It&#8217;s not a feature my client can tell the server not to use, <em>per se</em>, but since it was functionality added to the HTTP 1.1 protocol, I decided to find a way to force the request to use HTTP 1.0.</p>
<p>Unbelievably, that did it.</p>
<p>The response time went from roughly 20-sec to 1-sec.   I was ecstatic and &#8212; at the same time &#8212; I was also pretty ticked-off.</p>
<p>Was it the chunking that was the issue or another HTTP 1.1 feature? Was the site misconfigured somehow? Is it a known issue?</p>
<p>I still have a lot of questions remaining&#8230; and some more research to do.  At least I have a workaround now.</p>
]]></content:encoded>
			<wfw:commentRss>http://devsadvocate.com/20111026/chunked-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Not-So-Bright House</title>
		<link>http://devsadvocate.com/20110606/not-so-bright-house/</link>
		<comments>http://devsadvocate.com/20110606/not-so-bright-house/#comments</comments>
		<pubDate>Mon, 06 Jun 2011 15:46:45 +0000</pubDate>
		<dc:creator>Kevin Fairchild</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://devsadvocate.com/?p=296</guid>
		<description><![CDATA[This is an email I get from Bright House each month&#8230; Dear KEVIN FAIRCHILD, Your Bright House Networks online statement is now available. Michigan customers, view your statement online at http://webcare.michigan.brighthouse.com For immediate closed captioning concerns, &#8230; <a class="more-link" href="http://devsadvocate.com/20110606/not-so-bright-house/">More<span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><center><img src="http://devsadvocate.com/wp-content/uploads/2011/06/SadHouse.jpg" alt="" title="SadHouse" width="200" height="176" class="aligncenter size-full wp-image-298" /></center></p>
<p>This is an email I get from Bright House each month&#8230;</p>
<blockquote><p>
Dear KEVIN FAIRCHILD,</p>
<p>Your Bright House Networks online statement is now available.</p>
<p>Michigan customers, view your statement online at http://webcare.michigan.brighthouse.com<br />
For immediate closed captioning concerns, please call 1-866-898-9101.  Written complaints may be mailed to L. Byrd, Closed Captioning Coordinator, Bright House Networks, 14525 Farmington Rd., Livonia, MI 48154 or by Fax (734)437-3338 or email to <a  rel="nofollow" id="sto_emailShroud2" href="http://www.somethinkodd.com/emailshroud/emailaddress.php?domainName=mybrighthouse.com&amp;userName=Michigan.ClosedCaptioning&amp;ver=2.2.0" >Michigan.ClosedCaptioning</a>.</p>
<p>Tampa Bay customers, view your statement online at http://webcare.tampabay.brighthouse.com<br />
For immediate closed captioning concerns, please call 1-888-289-8988.  Written concerns may be mailed to D. Morgan, Closed Captioning Coordinator, Bright House Networks, 1004 U.S. Highway 92 West, Auburndale, FL, 33823 or by Fax (863)288-2229 or email to <a  rel="nofollow" id="sto_emailShroud3" href="http://www.somethinkodd.com/emailshroud/emailaddress.php?domainName=mybrighthouse.com&amp;userName=tampabay.closedcaptioning&amp;ver=2.2.0" >tampabay.closedcaptioning</a>.
</p></blockquote>
<p>I can almost forgive the whole putting-the-name-all-in-uppercase thing&#8230; but it cracks me up that they include information for two very different areas like this.</p>
<p>A few immediate questions come to mind&#8230;</p>
<p>First, they KNOW where I am.  They know I&#8217;m served by their Tampa offices, so why not just provide me with relevant contact information?  If I ever needed to look up the number for their Michigan office, I&#8217;d Google it.</p>
<p>Secondly, are they really only in two markets &#8212; Michigan and Tampa? That doesn&#8217;t exactly make me feel like I&#8217;m dealing with a large trustworthy company&#8230;  Even if they are limited to those two areas, they should at least give the impression of having broader coverage.  Besides, why is one a city and the other a state&#8230;?</p>
<p>Lastly, assuming they are in only those markets, what are they going to do if they expand?  What&#8217;s next, including contact information for Hoboken and Timbuktu customers?</p>
<p>It&#8217;s even weirder when I go to the main Bright House Networks website.  When I click &#8220;Pay My Bill&#8221;, I have to enter my zipcode &#8212; to see if service is available in my area.  Wait, what&#8230;?  If someone is paying a bill you sent them, I sure as heck hope there is service in their area&#8230;  And, again, if I&#8217;m going to be logging in anyhow, it should be able to determine my location based off of that, anyhow&#8230;</p>
<p>Once I am logged in and ready to pay my bill, the sidebar on the left shows &#8220;michigan &#8211; contact us&#8221; and &#8220;tampa bay &#8211; contact us&#8221;.  Ouch.  Looks like they went from capitalizing everything in my name to leaving everything on their menu lowercase.  How often does a Tampa Bay customer need to contact Michigan or vice-versa?  Why is this even here???</p>
<p>As I navigated around the site a bit, I did find something that answered my question about service areas.  According to the site, they serve the following markets:</p>
<blockquote><p>Tampa Bay and Orlando, Florida; Bakersfield, California; Indianapolis, Indiana; Detroit, Michigan; and Birmingham, Alabama; along with several other smaller regions in Alabama and the Florida Panhandle</p></blockquote>
<p>Now I&#8217;m even more confused.  What does someone in Birmingham see when they get emailed from Bright House&#8230;?  Do they see a listing for Tampa Bay and Michigan like I do or do they see, Birmingham and &#8212; say &#8212; Indiana.  And now that I&#8217;m thinking of it, why don&#8217;t I get something a bit more realistic, like maybe Tampa Bay and Orlando?</p>
<p>This just seems like one big &#8220;developer fail&#8221;&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://devsadvocate.com/20110606/not-so-bright-house/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How not to run a website</title>
		<link>http://devsadvocate.com/20110602/how-not-to-run-a-website/</link>
		<comments>http://devsadvocate.com/20110602/how-not-to-run-a-website/#comments</comments>
		<pubDate>Thu, 02 Jun 2011 14:14:55 +0000</pubDate>
		<dc:creator>Kevin Fairchild</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://devsadvocate.com/?p=268</guid>
		<description><![CDATA[I try to give websites the benefit of the doubt &#8212; really, I do. Recently, though, there was a site that left a really bad taste in my mouth. First, a little background&#8230; In early-to-mid April, &#8230; <a class="more-link" href="http://devsadvocate.com/20110602/how-not-to-run-a-website/">More<span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I try to give websites the benefit of the doubt &#8212; really, I do.</p>
<p>Recently, though, there was a site that left a really bad taste in my mouth.</p>
<p>First, a little background&#8230;</p>
<p>In early-to-mid April, I got into the &#8220;pen-pal&#8221; scene.  Like my interest in ham radio, beekeeping, or geocaching, it&#8217;s just something to do in my free time.</p>
<p>Neither having stamps, envelopes, nor a printer &#8212; and being a bit impulsive &#8212; I started looking for online services that would let me compose letters online and they could handle the printing and mailing of it.</p>
<p>That&#8217;s where I found 1HRMail.com</p>
<p><center><img src="http://devsadvocate.com/wp-content/uploads/2011/06/1hrmail_scam.jpg" alt="" title="1hrmail_scam" width="300" height="292" class="aligncenter size-full wp-image-288" /></center></p>
<p>At first, it seemed decent.  You create an account, buy postage, and send letters.  Pretty simple stuff.</p>
<p>After creating my account and buying postage, however, I found what I thought was a bug in the website.  After I logging in, I could see my postage balance, could create contacts, etc.  As soon as I tried to send a letter, though, I was told I needed to login.  I tried repeatedly to get this to work on multiple computers from Internet Explorer, Chrome, and Firefox.  Same behavior each time.</p>
<p>I contacted the website through their Customer Service form to let them know of the issue.  I also told them that if the site wasn&#8217;t usable, I would like my $10 postage credited back, since the way the site was working didn&#8217;t let me send out any messages.  No response.</p>
<p>I kept digging, though&#8230; I found their Facebook page, their Twitter account, etc., but it was all just self-promotion and marketing attempts. There was no way to interact with them other than the contact page on their site.  I did find a few posts on the Facebook page about the site not working, not being able to use the service, etc., but these posts were quickly deleted.  &#8230;uh-oh.</p>
<p>I went back and starting reading more details on the site.  Apparently, they start you out on a 14-day trial and if you don&#8217;t cancel within that time, you start getting billed at $15.99 per month.</p>
<p>Since only a few days had passed since I signed up, I assumed I&#8217;d be fine.  Boy, was I wrong.  After logging in, I was greeted with a message that said the site was undergoing temporary maintenance and to try back soon.  That message remained for two weeks &#8212; coincidentally, just long enough for me to not be able to cancel my trial.</p>
<p>During this time, I tried to get someone to cancel my account via the Contact Us page.</p>
<p>I didn&#8217;t seem to be getting any monthly charges from the site, so I assumed it had been taken care of.  On May 28, though, I received a $15.99 charge from them.  I immediately notified my bank and let them know I wanted to dispute the charge.  As of today, the charge has been disputed.  Now, a second charge has been made (currently in &#8220;Pending&#8221; status) that I&#8217;ll also be disputing if/when that clears.</p>
<p>I logged into the site today, just to make sure I didn&#8217;t overlook any options to cancel my subscription.</p>
<p>This was what I saw when I logged in:</p>
<p><center><a href="http://devsadvocate.com/wp-content/uploads/2011/06/Billing.jpg"><img src="http://devsadvocate.com/wp-content/uploads/2011/06/Billing-1024x811.jpg" alt="" title="Billing" width="662" height="524" class="aligncenter size-large wp-image-270" /></a></center></p>
<p>My only options are &#8220;Help&#8221; and &#8220;Sign Out&#8221;.   While the page mentioned I can cancel my membership, there aren&#8217;t actually any options for that on the site.</p>
<p>I will be working with my bank on this issue, obviously, but I&#8217;ll also bring plenty of attention to their site &#8212; and not in a good way.</p>
<p>They aren&#8217;t registered with the Better Business Bureau (naturally), but I went ahead and added them to the database and filed a complaint.</p>
<p>In the meantime, I guess my only option is to report the card usage as fraudulent and get a new card.</p>
<p>It&#8217;s one thing to have a crappy website, but it&#8217;s another to be a flat-out scam&#8230;</p>
<p>If you need to fill out a complaint against them, here is some business information to get you started&#8230;</p>
<p>Though the domain&#8217;s Whois information is hidden, it looks to be a California-based operation.</p>
<p>I stumbled upon a couple guys who seem to have some connection to the business, but lacking any contact information for the site, it&#8217;s tough to tell who&#8217;s an employee and who is just a marketing-shill.</p>
<p>Like I said&#8230;. I like having hobbies for my free time.  At least until the charges stop (and are credited back), I&#8217;m going to have fun doing some campaigning of my own <img src='http://devsadvocate.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />   Though it probably won&#8217;t help me get my money back, maybe it&#8217;ll at least help others from getting scammed.</p>
<p><big><b>UPDATE:</b></big><br />
<strong>06/02/11 @ 11:30am:</strong> I received an email from <a   rel="nofollow" id="sto_emailShroud5" href="http://www.somethinkodd.com/emailshroud/emailaddress.php?domainName=1hrmail.com&amp;userName=help&amp;ver=2.2.0" >help&#64;1hrmail.com</a> in response to my &#8220;Contact Us&#8221; request.  I was told they would close my account and refund any fees charged including any postage remaining in the account.  While this doesn&#8217;t necessarily make me feel all warm-and-fuzzy about the site, I do think it goes a long way towards changing my opinion of them.<br />
<strong>06/08/11 @ 04:05pm:</strong> Another response from the same email address: &#8220;We&#8217;re sorry, it seems like there&#8217;s a glitch in our billing system. We&#8217;ll manually cancel your account, refund those charges and make sure you&#8217;re not charged again. We apologize for the inconvenience.&#8221;<br />
<strong>Currently:</strong> Still no credits, except for what has been disputed with MasterCard.</p>
]]></content:encoded>
			<wfw:commentRss>http://devsadvocate.com/20110602/how-not-to-run-a-website/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Same Difference</title>
		<link>http://devsadvocate.com/20110309/same-difference/</link>
		<comments>http://devsadvocate.com/20110309/same-difference/#comments</comments>
		<pubDate>Wed, 09 Mar 2011 12:38:08 +0000</pubDate>
		<dc:creator>Kevin Fairchild</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://devsadvocate.com/?p=263</guid>
		<description><![CDATA[In my previous post, I mentioned how I began to write a query against a list of people and identify potential duplicates. In my case, I didn&#8217;t want to just stop at comparing details for &#8220;Rose &#8230; <a class="more-link" href="http://devsadvocate.com/20110309/same-difference/">More<span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>In my <a href="http://devsadvocate.com/?p=259">previous post</a>, I mentioned how I began to write a query against a list of people and identify potential duplicates.</p>
<p>In my case, I didn&#8217;t want to just stop at comparing details for &#8220;Rose Jones&#8221; against that of &#8220;Rosie Jones&#8221;.</p>
<p>Though it doesn&#8217;t happen often when people are filling out forms on their own, when information is added on behalf of someone else, careless mistakes can happen.  If the person&#8217;s name is &#8220;James Scott&#8221;, maybe it would get entered incorrectly as &#8220;Scott James&#8221; because someone wrote it down as &#8220;Scott, James&#8221; and the comma wasn&#8217;t easy to see. Whatever. Mistakes happen. I&#8217;m sure you&#8217;ve seen it before.</p>
<p>I also feel like it is important to bring in any records that might not share the same name but do share some key piece of unique data.  Depending on the app, how truly  unique your data is might be different&#8230;  It could be something as unique as a Social Security Number all the way down to an email address or phone number that, while not truly unique, is typically limited to a small subset of people.</p>
<p>Here&#8217;s the gist of what I&#8217;ve done so far:</p>
<p>1.  Make &#8220;groups&#8221; based on the individual first name and last name combinations &#8212; being careful to weed out extra name information that probably doesn&#8217;t need factored in &#8212; middle names, punctuation, etc.</p>
<p>2. Create all of my name variations &#8212; keeping the ID of the original record and bring those in as members of the group belonging to the original record</p>
<p>3. Any records with the reversed name matching records in existing groups get brought in (allowing &#8220;Scott James&#8221; to be brought into the &#8220;James Scott&#8221; group)</p>
<p>4. Any records where unique data overlaps with members of existing groups, add them in, too.</p>
<p>5. Last but not least, if there are any groups with the same members, delete all but one of them (takes care of scenario where &#8220;Bob Smith&#8221; and &#8220;Bobby Smith&#8221; are the only members in Group &#8216;X&#8217; and &#8220;Bobby Smith&#8221; and &#8220;Bob Smith&#8221; are the only members of Group &#8216;Y&#8217; due to the name reversals)</p>
<p>So far, it&#8217;s been working like a champ.  Even with about 70-100k worth of data, the entire process takes about 3-minutes, which is acceptable in this case, since it&#8217;s for a scheduled report.  The main slow down in my case is the bringing in of some additional shared data between people, which creates a large many-to-many dataset.  Without the extra level of checking, it only takes about 20-seconds.  For basic name-only checking, you could probably skip Step 4 and have a pretty fast query.</p>
<p>Total execution time will also depend a lot on how many name variations you have.  For reference, I currently have just under 1400 records in my &#8220;Names&#8221; table.</p>
<p>By utilizing the groups, I&#8217;m able to look at the records in chunks and quickly weed out the records that are likely duplicates and skip over ones that just happened to share similar names.</p>
]]></content:encoded>
			<wfw:commentRss>http://devsadvocate.com/20110309/same-difference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Rose By Any Other Name</title>
		<link>http://devsadvocate.com/20110307/a-rose-by-any-other-name/</link>
		<comments>http://devsadvocate.com/20110307/a-rose-by-any-other-name/#comments</comments>
		<pubDate>Tue, 08 Mar 2011 04:20:25 +0000</pubDate>
		<dc:creator>Kevin Fairchild</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://devsadvocate.com/?p=259</guid>
		<description><![CDATA[Whether you&#8217;re dealing with an online form that users fill out or an application that internal staff enter data into, names can get a bit tricky. Not only are there the usual issues with data accuracy &#8230; <a class="more-link" href="http://devsadvocate.com/20110307/a-rose-by-any-other-name/">More<span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Whether you&#8217;re dealing with an online form that users fill out or an application that internal staff enter data into, names can get a bit tricky.</p>
<p>Not only are there the usual issues with data accuracy due to accidental typos, but also from things as simple as variations of the person&#8217;s first name.</p>
<p>I&#8217;ve had a lot of fun trying to tackle this recently&#8230;</p>
<p>At first, I started with the <a target="_blank" href="http://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance">Jaro–Winkler distance</a>.  This worked surprisingly well for typos, especially on fairly short names, but the downside was the amount of false-positives it gave as well as the overall performance cost of evaluating scores on fairly large datasets.</p>
<p>Next, I began learning what I could about diminutive/short forms of common names. I came across a <a target="_blank" href="http://code.google.com/p/nickname-and-diminutive-names-lookup/">few projects</a> that I was able to use as a starting point.</p>
<p>Most of what I found either had too few examples or far too many.  Eventually, I ended up just compiling a master list and applied my own &#8220;sniff test&#8221; to it.</p>
<p>After weeding out the names that I didn&#8217;t feel were worth the extra bloat, I added in a few of my own.  Most of these came from census data or other sources.  I mostly just looked for the top 10 or so popular names for the past couple years &#8212; both in the U.S. as well as Latin America.  Not only did this help me add alternate spellings for some of the names popular in other countries, but it also helped me take into consideration &#8220;Americanized&#8221; names.</p>
<p>I obviously want the ability to see if &#8220;John Smith&#8221; is already in the system as &#8220;Jon Smith&#8221;, but I&#8217;d also like to have that same capability for &#8220;Juan Smith&#8221;</p>
<p>My lookup table ended up having a thousand or so rows of name data.  To keep things simple, there are only two fields, &#8220;Name&#8221; and &#8220;ParentName&#8221;.  Realistically, ParentName could&#8217;ve been an ID field or whatever.  It really serves no purpose other than to link, &#8220;Bob&#8221; and &#8220;Robert&#8221; together, for instance. With the way my <a href="http://cpansearch.perl.org/src/BRIANL/Lingua-EN-Nickname-1.16/nicknames.txt">original data</a> came in, though, it was just more practical to skip that.</p>
<p>It didn&#8217;t matter so much when it was all coming from external sources, but now that I&#8217;m maintaining my own list, perhaps I&#8217;ll switch to something a little more neutral.  While &#8220;Robert&#8221; might be considered the root name for &#8220;Bob&#8221;, what about &#8220;George&#8221; and &#8220;Jorge&#8221;? It would probably make the most sense to keep things in groupings instead of an implied hierarchy.</p>
]]></content:encoded>
			<wfw:commentRss>http://devsadvocate.com/20110307/a-rose-by-any-other-name/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CodePlex</title>
		<link>http://devsadvocate.com/20101127/codeplex/</link>
		<comments>http://devsadvocate.com/20101127/codeplex/#comments</comments>
		<pubDate>Sun, 28 Nov 2010 03:21:00 +0000</pubDate>
		<dc:creator>Kevin Fairchild</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[codeplex]]></category>
		<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://devsadvocate.com/?p=251</guid>
		<description><![CDATA[I&#8217;ve been monitoring CodePlex for a while now &#8212; looking out for VB.NET projects seeking additional help. Most of them were either not to my liking (too much reliance on third-party library files, too far outside &#8230; <a class="more-link" href="http://devsadvocate.com/20101127/codeplex/">More<span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been monitoring <a href="http://codeplex.com">CodePlex</a> for a while now &#8212; looking out for VB.NET projects seeking additional help.</p>
<p>Most of them were either not to my liking (too much reliance on third-party library files, too far outside of my interests, etc.), but I did stumble upon one that I felt like I could help out with.</p>
<p>I decided to help out with <a href="http://gotranslateit.codeplex.com/" target="_blank">goTranslateIt</a>.  It&#8217;s not the most complex project out there, but I saw enough of the code to see opportunities for improvement.</p>
<p>It was fun to work on.</p>
<p>Realistically, I&#8217;m not sure how practical the application is in terms of real-world usage.  For me, if I need to translate something, I typically just load up a web-based translator, get the translation, and I&#8217;m done.</p>
<p>There aren&#8217;t many situations I can think of where people need to do enough translations where they&#8217;d want a winform-based application installed on their system.</p>
<p>I like doing fine-tuning of GUI functionality or coming up with ways to make things a bit more efficient.  I had a lot of opportunities for that.</p>
<p>Also enjoyable was closing out the only open issue of the app &#8212; a bug that seemed to only affect translations for Simplified Chinese, Traditional Chinese, and Cajun Creole when using the Bing translation API.  The problem was easy to identify and thanks to other changes I made during my initial code cleanup, the fix was pretty simple.</p>
<p>Going forward, the biggest improvements I could see for it would be to make a more generic Translation Provider class and implement the Google and Bing methods within that.  Hopefully this would help simplify things a bit and make it easier to add additional translators later on&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://devsadvocate.com/20101127/codeplex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DNA &amp; You</title>
		<link>http://devsadvocate.com/20101124/dna-and-you/</link>
		<comments>http://devsadvocate.com/20101124/dna-and-you/#comments</comments>
		<pubDate>Wed, 24 Nov 2010 17:33:47 +0000</pubDate>
		<dc:creator>Kevin Fairchild</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://devsadvocate.com/?p=236</guid>
		<description><![CDATA[23AndMe is doing another holiday promotion. The good news is that their complete kit is on sale from the usual $499 price to only $99 The bad news is that it looks like they are switching &#8230; <a class="more-link" href="http://devsadvocate.com/20101124/dna-and-you/">More<span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://23AndMe.com" target="_blank">23AndMe</a> is doing another holiday promotion.</p>
<p>The good news is that their complete kit is on sale from the usual $499 price to only $99</p>
<p>The bad news is that it looks like they are switching to a subscription model&#8230;  They want you to pay $5/month if you want to keep getting updates&#8230;  </p>
<p>Previously, just having the &#8220;complete package&#8221; would give you free ongoing updates as new discoveries are made.</p>
<p>You can opt not to do it beyond the first year, but when you buy it, you&#8217;re agreeing to a year&#8217;s worth of monthly updates, so you&#8217;ll have to pay for it either way initially.</p>
<p>That means that the $99 discounted rate with the mandatory year&#8217;s worth of updates (at $5/month) comes out to $159.</p>
<p>Not as good of a deal as before, but still decent&#8230; and I&#8217;m sure it&#8217;s probably a better business model for them in the long-run.</p>
<p>For those of you who already use the service, like me, we&#8217;ll be grandfathered in and not have to pay for the updates.  Sweet!</p>
<p>Also, they are making changes to allow customers of these packages to get a discounted upgrade later on once the company switches from basic geno-typing to full-sequencing.  That is pretty cool, I have to admit&#8230;</p>
<p>The current genetic testing package includes Health &#038; Ancestry reports.</p>
<p>The Health reports are interesting for learning about health risks you might not realize you have or bad genes you might be passing down to kids in the future. It covers carrier status, disease risk, and drug response information.</p>
<p>The second report is a bit different.  It can help show you, based on genetic markers, where your ancestors likely came from.  The newest feature is their &#8220;Relative Finder&#8221; service, which can help identify potential relatives.  Also included are global similarity matching and a maternal/paternal lineage mapping</p>
<p>If you&#8217;re interested in stuff like this, it&#8217;s definitely worth checking out.  At $99 (even with the extra $60 for updates), it&#8217;s definitely worth the money.</p>
<hr />
<p>Website: <a href="https://www.23andme.com/store">https://www.23andme.com/store</a><br />
Promo Code (to use at checkout): <strong>8YGK7C</strong><br />
Valid: 11/24 at 10am PST through 11/26 at 12am PST</p>
]]></content:encoded>
			<wfw:commentRss>http://devsadvocate.com/20101124/dna-and-you/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
