<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" version="2.0">

<channel>
	<title>dougv.com « Doug Vanderweide</title>
	
	<link>http://www.dougv.com/blog</link>
	<description>ASP.NET, PHP, Web Geekery, Entrepreneurship, Social Media</description>
	<lastBuildDate>Tue, 20 Jul 2010 05:09:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/dougvdotcom" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="dougvdotcom" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>44.344406</geo:lat><geo:long>-69.763457</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">dougvdotcom</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>A Completely Awesome 2600 Cover</title>
		<link>http://www.dougv.com/blog/2010/07/20/a-completely-awesome-2600-cover/</link>
		<comments>http://www.dougv.com/blog/2010/07/20/a-completely-awesome-2600-cover/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 04:27:05 +0000</pubDate>
		<dc:creator>Doug Vanderweide</dc:creator>
				<category><![CDATA[Musings]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Business Practices]]></category>
		<category><![CDATA[Copyright]]></category>
		<category><![CDATA[Culture and Society]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://www.dougv.com/blog/?p=3274</guid>
		<description><![CDATA[Check out the cover on the Summer 2010 edition of 2600, The Hacker Quarterly: I saw it at my local Barnes &#38; Noble bookstore and had to buy it for its complete awesomeness. The one thing 2600 has, every issue, is cool cover art. I don&#8217;t know the exact system to which these tape cartridges [...]]]></description>
			<content:encoded><![CDATA[<p>Check out the cover on the Summer 2010 edition of <a href="http://www.2600.com/" target="_blank">2600</a>, The Hacker Quarterly:</p>
<div class="wp-caption alignnone" style="width: 354px"><a href="http://www.2600.com/"><img title="Cover, Summer 2010 issue, 2600 magazine" src="http://www.2600.com/covers/su101.gif" alt="Cover, Summer 2010 issue, 2600 magazine" width="344" height="537" /></a><p class="wp-caption-text">Cover, Summer 2010 issue, 2600 magazine</p></div>
<p>I saw it at my local <a href="http://www.barnesandnoble.com/" target="_blank">Barnes &amp; Noble</a> bookstore and had to buy it for its complete awesomeness. The one thing 2600 has, every issue, is cool cover art.</p>
<p>I don&#8217;t know the exact system to which these tape cartridges belong, but I remember seeing very similar ones back in the late 1980s at the <a href="http://www.umaine.edu/it/" target="_blank">University of Maine&#8217;s computer lab</a>.</p>
<p>The labels are what make this cover so great:</p>
<ul>
<li>The coordinates on the top cartridge&#8217;s white label mark the epicenter of the Jan. 12, 2010 earthquake in Haiti. The &#8220;KH-5&#8243; label on the side refers, I assume, to a series of early 1960s mapping / spy satellites. There may be a more significant connection between the two labels that I don&#8217;t get.</li>
<li>I like the implicit message in the third tape&#8217;s label, that the <a href="http://www.loc.gov" target="_blank">Library of Congress</a> is retaining tweets.</li>
<li>I love the fifth tape&#8217;s label: If only such a tape existed, it would eliminate <a href="http://en.wikipedia.org/wiki/Barack_Obama_citizenship_conspiracy_theories#Claims_that_Obama_was_not_born_in_Hawaii" target="_blank">quite a bit of annoying political sideshow</a>. Then again, no; it probably wouldn&#8217;t.</li>
<li>The tapes from the seventh down are also quite amusing.</li>
</ul>
<p>And taken in context with the &#8220;DESTROY&#8221; label on the box in the background, and the placement of the entire stack atop tabloid personals ads, really adds to the entire presentation.</p>
<p><span id="more-3274"></span>I also like a recurring feature 2600 has of showing pictures and short descriptions of foreign payphones. While payphones &#8212; and, by implication, <a href="http://en.wikipedia.org/wiki/Phreaking" target="_blank">phreaking</a> &#8212; are endangered tech, even in developing countries, phones play an important role in hacking&#8217;s history, culture and community. Besides, it&#8217;s interesting to see the technology of other places.</p>
<div id="attachment_3275" class="wp-caption aligncenter" style="width: 660px"><a href="http://www.dougv.com/blog/wp-content/uploads/2010/07/payphones_summer_2010_2600.jpg"><img class="size-full wp-image-3275" title="Payphone images, Summer 2010 issue, 2600 magazine" src="http://www.dougv.com/blog/wp-content/uploads/2010/07/payphones_summer_2010_2600.jpg" alt="Payphone images, Summer 2010 issue, 2600 magazine" width="650" height="507" /></a><p class="wp-caption-text">A pair of payphone images from the Summer 2010 issue of 2600 magazine.</p></div>
<p><strong>Editorial Hubris</strong></p>
<p>I have mixed feelings about 2600 in general.</p>
<p>The editorials can be juvenile and sophomoric.</p>
<p>For example, I remember a long-winded diatribe, some years ago, about a new loss-control policy that Barnes &amp; Noble had imposed. Basically, the policy was, if copies were stolen or lost, that was too bad for 2600; B&amp;N would only pay for those issues their computers said were sold.</p>
<p>Extensive column inches were expended lamenting that policy as patently unfair to 2600. Which it was. But, 2600 wrote, they had little choice but to comply, as they needed the newsstand sales.</p>
<p>Apparently, the hubris involved in that editorial hasn&#8217;t affected 2600&#8242;s relationship with B&amp;N. But one has to wonder why 2600 would take that risk.</p>
<p>Then again, the Summer 2010 editorial is a reasonable, intelligent consideration of how hacking, and the subsequent political causes it has spawned, have influenced debate and reconsideration of copyright and similar issues in the digital age.</p>
<p>It overreaches at points, as editorials are wont to do. For example, it cites as cause for celebration Sweden&#8217;s Pirate Party gaining &#8220;over seven percent in recent (European Union) parliamentary elections.&#8221; That translates to two of Sweden&#8217;s 18 EU Parliament seats; the <a href="http://www.europarl.europa.eu/parliament/public/staticDisplay.do?id=146&amp;language=en" target="_blank">EU Parliament</a> has 736 members, so those two seats represent 0.27 percent of that body.</p>
<p>But overall, it makes its point responsibly and convincingly.</p>
<p>I disagree with 2600&#8242;s practice of replying to letters. If 2600&#8242;s editors don&#8217;t consider a letter cogent, fair or correct, they shouldn&#8217;t print it. But it is abusing a bully pulpit to reply to letters, especially in a quarterly publication.</p>
<p>It&#8217;s also largely unnecessary, as most of the letters survive on their own merit nicely, and as a rule are some of the most interesting and entertaining content.</p>
<p><strong>Cool Story, Bro</strong></p>
<p>The articles tend to be pedestrian; anyone with a basic understanding of computers or networking should either know about the subjects covered, or at least be able to figure out the hacks based on a single-sentence presentation. For example, in the Summer 2010 issue, the following hacks were exposed:</p>
<ul>
<li>Google Analytics can be exploited by adding the tracking code for a domain to a completely unrelated domain&#8217;s page. Additionally, one can turn off <a href="http://www.dougv.com/blog/tag/javascript/" class="st_tag internal_tag" rel="tag" title="Posts tagged with JavaScript">JavaScript</a> to disable Analytics tracking. The former point is by design, generally known to the Web development community and <a href="http://code.google.com/apis/analytics/docs/tracking/gaTrackingSite.html" target="_blank">described in the Analytics documentation</a>. The latter point is common sense.</li>
<li>One can create a sock puppet <a href="http://www.dougv.com/blog/tag/facebook/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Facebook">Facebook</a> account, use a Web-based campus directory to stock up on friends, then troll. Thanks for the tip.</li>
<li>You can set up a WiFi router as an open network, then route all requests to a scary Web page telling people they shouldn&#8217;t use open networks. Again, thanks for the tip.</li>
<li>You can print fake bar codes onto stickers, put those stickers onto products, then use a store&#8217;s self-checkout to steal. I&#8217;m sure the author would be willing to write your legal briefs for you when you&#8217;re sharing a jail cell.</li>
</ul>
<p>And so on.</p>
<p><strong>Epic Win</strong></p>
<p>Then again, there are a few articles that are interesting:</p>
<ul>
<li>One author tells the story about having a microphone implanted into his throat and Bluetooth-enabled speakers placed in his ears. <em>That</em> was interesting.</li>
<li>Another article explained that T-Mobile G3 service is wide-open for HTTPS connections, enabling prepaid / non-data-plan subscribers to have Web access for free (provided the sites they visit support SSL, of course). Because this is a quarterly, that hole has probably been closed, but I am sure it was fun while it lasted.</li>
<li>There&#8217;s a useful overview on setting up what the author calls a &#8220;darknet,&#8221; or as a less-1337 user would call it, a multi-service proxy server. It doesn&#8217;t get into details, but it does visit the realm of possibilities and point those who might be interested in the right direction.</li>
</ul>
<p>That&#8217;s 2600 for you, and I think it&#8217;s more than fitting as an allegory for digital &#8212; heck, for what that&#8217;s worth, real &#8212; life. Some of it is crap. Some of it is great. Mostly, it&#8217;s just there.</p>
<p>For those reasons, 2600 is like cotton candy to me: Largely fluff; barely nutritious; but fun to enjoy once or twice a year, when the mood is right.</p>
<p>All links in this post on delicious: <a href="http://delicious.com/dougvdotcom/a-completely-awesome-2600-cover" target="_blank">http://delicious.com/dougvdotcom/a-completely-awesome-2600-cover</a></p>

	Tags: <a href="http://www.dougv.com/blog/tag/business-practices/" title="Business Practices" rel="tag">Business Practices</a>, <a href="http://www.dougv.com/blog/tag/copyright/" title="Copyright" rel="tag">Copyright</a>, <a href="http://www.dougv.com/blog/tag/culture-and-society/" title="Culture and Society" rel="tag">Culture and Society</a>, <a href="http://www.dougv.com/blog/tag/facebook/" title="Facebook" rel="tag">Facebook</a>, <a href="http://www.dougv.com/blog/tag/google/" title="Google" rel="tag">Google</a>, <a href="http://www.dougv.com/blog/tag/hacking/" title="Hacking" rel="tag">Hacking</a>, <a href="http://www.dougv.com/blog/tag/html/" title="HTML" rel="tag">HTML</a>, <a href="http://www.dougv.com/blog/tag/javascript/" title="JavaScript" rel="tag">JavaScript</a>, <a href="http://www.dougv.com/blog/tag/mobile/" title="Mobile" rel="tag">Mobile</a><br />
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=oG9Brxg2jZk:ikhUMT_65wc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=oG9Brxg2jZk:ikhUMT_65wc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?i=oG9Brxg2jZk:ikhUMT_65wc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=oG9Brxg2jZk:ikhUMT_65wc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=oG9Brxg2jZk:ikhUMT_65wc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=oG9Brxg2jZk:ikhUMT_65wc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?i=oG9Brxg2jZk:ikhUMT_65wc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=oG9Brxg2jZk:ikhUMT_65wc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?i=oG9Brxg2jZk:ikhUMT_65wc:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/dougvdotcom/~4/oG9Brxg2jZk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dougv.com/blog/2010/07/20/a-completely-awesome-2600-cover/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Killing Tynt’s “Read More:” Clipboard Copy Hijacker With The Adblock Plus Plug-In For Firefox</title>
		<link>http://www.dougv.com/blog/2010/07/19/killing-tynts-read-more-clipboard-copy-hijacker-with-the-adblock-plus-plug-in-for-firefox/</link>
		<comments>http://www.dougv.com/blog/2010/07/19/killing-tynts-read-more-clipboard-copy-hijacker-with-the-adblock-plus-plug-in-for-firefox/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 23:07:12 +0000</pubDate>
		<dc:creator>Doug Vanderweide</dc:creator>
				<category><![CDATA[Musings]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Client Relationships]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[MySpace]]></category>
		<category><![CDATA[Objects And Classes]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.dougv.com/blog/?p=3255</guid>
		<description><![CDATA[I love Firefox. It&#8217;s pretty much the only Web browser I use. I hate Tynt. If you&#8217;ve ever copied text from a Web page, then pasted it, only to find a mysterious &#8220;Read More:&#8221; link inserted at the end of the text you copied, you just ran headfirst into Tynt. Each time a user pastes [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_3257" class="wp-caption alignright" style="width: 510px"><a href="http://www.dougv.com/blog/wp-content/uploads/2010/07/readmore.jpg"><img class="size-medium wp-image-3257" title="Tynt's annoying Read More clipboard jacking" src="http://www.dougv.com/blog/wp-content/uploads/2010/07/readmore-500x236.jpg" alt="Tynt's annoying Read More clipboard jacking" width="500" height="236" /></a><p class="wp-caption-text">Tynt&#39;s annoying Read More clipboard jacking: You can kill it with AdBlock Plus for <a href="http://www.dougv.com/blog/tag/firefox/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Firefox">Firefox</a>.</p></div>
<p>I love <a href="http://www.dougv.com/blog/tag/firefox/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Firefox">Firefox</a>. It&#8217;s pretty much the only Web browser I use.</p>
<p>I hate <a href="http://www.tynt.com/" target="_blank">Tynt</a>. If you&#8217;ve ever copied text from a Web page, then pasted it, only to find a mysterious &#8220;Read More:&#8221; link inserted at the end of the text you copied, you just ran headfirst into Tynt.</p>
<blockquote><p>Each time a user pastes content from your website into an email, blog or website, we automatically add a URL link back to your site’s original content. When someone clicks that URL, they are directed back to your site and see the original content. This drives incremental traffic to your site when your content is shared without your knowledge while maintaining a consistent user experience.</p></blockquote>
<p>It may well be a &#8220;consistent user experience&#8221; for me to have to hit the backspace key to delete the &#8220;Read more&#8221; link Tynt adds every time I copy a small block of text, but it&#8217;s a consistently annoying experience.</p>
<p>I appreciate the importance of reciprocal links. I understand the challenge to content publishers of having content lifted from their Web sites without attribution.</p>
<p>So before I get into details about this fix, let me be clear: If you copy  Web content, attribute it. It&#8217;s the right thing to do.</p>
<p>That said,  there&#8217;s a wrong way of getting people to do the right thing, and Tynt is  definitely the wrong way.</p>
<p>I find having my simple act of extracting a quote from a Web page turned into a link-spamming takeover of my local machine to be far more disturbing than a tracking cookie or layer ad.</p>
<p>Don&#8217;t be messing with my clipboard. It&#8217;s mine, not yours. I will put into it what I want there, not what you want.</p>
<p>Fortunately, I was able to put an immediate end to Tynt&#8217;s &#8220;Read More&#8221; clipboard copy highjacking in <a href="http://www.dougv.com/blog/tag/firefox/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Firefox">Firefox</a> with <a href="https://addons.mozilla.org/en-US/firefox/addon/1865/" target="_blank">Adblock Plus</a>, a highly popular add-in that does what its name suggests: Blocks advertisements, and other content, from displaying on a page.</p>
<p><span id="more-3255"></span><strong>How To Block Tynt In <a href="http://www.dougv.com/blog/tag/firefox/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Firefox">Firefox</a> Via Adblock Plus</strong></p>
<p>I don&#8217;t mind Web ads. In fact, on many sites, ads are quite useful. But I absolutely despise Tynt, so I went ahead and installed Adblock Plus specifically to deal with it:</p>
<ol>
<li>I installed AdBlock Plus from the link above.</li>
<li>After restarting <a href="http://www.dougv.com/blog/tag/firefox/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Firefox">Firefox</a>, I was asked to choose a &#8220;filter subscription,&#8221; which is basically a series of user-contributed rules that block various ads, scripts, images, etc.
<ol>
<li>Because I don&#8217;t mind Web ads, I chose &#8220;Cancel.&#8221; Adblock Plus warned me that without a subscription, I would need to add any filters manually; I clicked OK.</li>
<li>You can go ahead and add a filter subscription. The &#8220;EasyList&#8221; subscription is supposed to block Tynt&#8217;s functionality; however, I found that was not always the case. For example, the EasyList (English) subscription available at this writing did not block Tynt on <a href="http://myspace.com/dougvdotcom" target="_blank">MySpace</a>.</li>
</ol>
</li>
<li>I selected Tools &#8211;&gt; Add-ons, then clicked the Options button under Adblock Plus.</li>
<li> I clicked &#8220;Add Filter&#8221; at the bottom of the window that came up.</li>
<li>A &#8220;New filter&#8221; line opened.
<ol>
<li>In the text box beneath, I entered <code>*tynt*</code> and hit the Enter key.</li>
<li>A red exclamation point resulted, which indicated that the filter was a regular expression / too short to be optimized. I accepted that; the reason why appears below.</li>
</ol>
</li>
<li>I clicked OK on the filter editing window and Close on the add-ons dialog box.</li>
</ol>
<div id="attachment_3264" class="wp-caption alignleft" style="width: 369px"><a href="http://www.dougv.com/blog/wp-content/uploads/2010/07/abpscreens.jpg"><img class="size-medium wp-image-3264" title="Adblock Plus filter expression to turn off Tynt" src="http://www.dougv.com/blog/wp-content/uploads/2010/07/abpscreens-359x500.jpg" alt="Adblock Plus filter expression to turn off Tynt" width="359" height="500" /></a><p class="wp-caption-text">The dialog boxes for Adblock Plus that accommodate my Tynt killing filter.</p></div>
<p>And just like that, I have not been bothered since by Tynt&#8217;s annoying &#8220;Read More&#8221; hijacking.</p>
<p><strong>The Alternatives Didn&#8217;t Work</strong></p>
<p>There are a number of suggestions out there to put an end to Tynt&#8217;s activities. I tried most but found them wanting compared to my solution.</p>
<p><strong>Block tcr.tynt.com via your computer&#8217;s HOSTS file:</strong> This was <a href="http://daringfireball.net/2010/05/tynt_copy_paste_jerks" target="_blank">a popular suggestion</a>. Many claimed it worked fine for them. But some Web sites &#8212; again, <a href="http://www.dougv.com/blog/tag/myspace/" class="st_tag internal_tag" rel="tag" title="Posts tagged with MySpace">MySpace</a> serves as an excellent example &#8212; aren&#8217;t stopped by blocking that one domain.</p>
<p>Tynt actually uses a number of subdomains to deliver its services; in some cases, the Tynt scripts run off the Web server you&#8217;re visiting. Since you can&#8217;t use wildcards in a HOSTS file, that means adding dozens of entries to the HOSTS file; and again, even that won&#8217;t stop Tynt if it is running off the local Web server.</p>
<p><strong>Use the NoScript add-on for <a href="http://www.dougv.com/blog/tag/firefox/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Firefox">Firefox</a>:</strong> Another option is to employ <a href="https://addons.mozilla.org/en-US/firefox/addon/722/" target="_blank">NoScript</a>. But that is a nuclear solution; NoScript is pessimistic.</p>
<p>In other words, it blocks all Web sites from running <a href="http://www.dougv.com/blog/tag/javascript/" class="st_tag internal_tag" rel="tag" title="Posts tagged with JavaScript">JavaScript</a>, and allows you to whitelist sites. That might have been an acceptable approach to annoying scripts five years ago, but in this age, your Web experience is going to be seriously curtailed if you start by blocking scripts.</p>
<p><strong>Use the YesScript add-on for <a href="http://www.dougv.com/blog/tag/firefox/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Firefox">Firefox</a>:</strong> <a href="https://addons.mozilla.org/en-US/firefox/addon/4922/" target="_blank">YesScript</a> is a <a href="http://www.dougv.com/blog/tag/firefox/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Firefox">Firefox</a> add-on that takes an optimistic approach to <a href="http://www.dougv.com/blog/tag/javascript/" class="st_tag internal_tag" rel="tag" title="Posts tagged with JavaScript">JavaScript</a>. That is, you can blacklist sites, rather than having to whitelist them, as in NoScript.</p>
<p>Unfortunately, I did not see a way to use wildcards with YesScript, which pretty much made it the same as the HOSTS file option; and therefore, it did not work, for pretty much the same reasons.</p>
<p>And for the record, I looked for <a href="http://www.dougv.com/blog/tag/greasemonkey/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Greasemonkey">Greasemonkey</a> scripts (couldn&#8217;t find one), add-ons specific to Tynt (couldn&#8217;t find one), and even tried using <a href="http://www.tynt.com/support/opt-inout/" target="_blank">Tynt&#8217;s purported global opt-out button</a> (surprise: it didn&#8217;t work).</p>
<p><strong>About That Exclamation Point In Adblock Plus</strong></p>
<p>Which brings us to the warning Adblock Plus shows about the filter rule.</p>
<p>As previously noted, our filter uses <code>*tynt*</code> as its expression. This is basically an instruction to Adblock Plus to block all objects that contain the letter sequence <em>tynt</em>: scripts, images, cookies, HTML, whatever.</p>
<p>Adblock Plus is smart enough to know that this is a very broad stroke; it&#8217;s four characters long, and generally speaking, that&#8217;s a wide net to cast &#8212; a net that could well catch a lot of fish we don&#8217;t want to fry.</p>
<p>For example, suppose we used the expression <code>*ding*</code>, instead. That would catch <a href="http://www.morewords.com/contains/ding/" target="_blank">over 900 different dictionary words</a> alone, most likely removing content from the page that we actually want to see.</p>
<p>On the other hand, <code>*tynt*</code> <a href="http://www.morewords.com/contains/tynt/" target="_blank">catches zero dictionary words</a>. Because that combination of letters is so rare &#8212; it almost exclusively applies to content we intend to block &#8212; the chances it blocks something we want to see is infinitesimal.</p>
<p>But Adblock Plus doesn&#8217;t know that, so it warns us.</p>
<p>Finally, I used <code>*tynt*</code> as the filter expression because I want to block not only scripts and content emanating from tynt.com, but to also catch local implementations of Tynt&#8217;s scripts and objects.</p>
<p>In other words, the entire Tynt clipboard hijacking solution could be installed on the Web host I am visiting. But the objects those scripts use are going to have to invoke the term <em>tynt</em> in calling objects or sending requests to Tynt&#8217;s servers in order to work; I am catching every time that happens with this expression, and putting an end to it before it begins.</p>
<p>All links in this post on delicious: <a href="http://delicious.com/dougvdotcom/killing-tynts-read-more-clipboard-copy-hijacker-with-the-adblock-plus-plug-in-for-firefox" target="_blank">http://delicious.com/dougvdotcom/killing-tynts-read-more-clipboard-copy-hijacker-with-the-adblock-plus-plug-in-for-firefox</a></p>

	Tags: <a href="http://www.dougv.com/blog/tag/ajax/" title="AJAX" rel="tag">AJAX</a>, <a href="http://www.dougv.com/blog/tag/best-practices/" title="Best Practices" rel="tag">Best Practices</a>, <a href="http://www.dougv.com/blog/tag/client-relationships/" title="Client Relationships" rel="tag">Client Relationships</a>, <a href="http://www.dougv.com/blog/tag/firefox/" title="Firefox" rel="tag">Firefox</a>, <a href="http://www.dougv.com/blog/tag/javascript/" title="JavaScript" rel="tag">JavaScript</a>, <a href="http://www.dougv.com/blog/tag/myspace/" title="MySpace" rel="tag">MySpace</a>, <a href="http://www.dougv.com/blog/tag/objects-and-classes/" title="Objects And Classes" rel="tag">Objects And Classes</a>, <a href="http://www.dougv.com/blog/tag/privacy/" title="Privacy" rel="tag">Privacy</a>, <a href="http://www.dougv.com/blog/tag/security/" title="Security" rel="tag">Security</a><br />
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=steOlql3Q4Y:q8PS606j4GA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=steOlql3Q4Y:q8PS606j4GA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?i=steOlql3Q4Y:q8PS606j4GA:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=steOlql3Q4Y:q8PS606j4GA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=steOlql3Q4Y:q8PS606j4GA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=steOlql3Q4Y:q8PS606j4GA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?i=steOlql3Q4Y:q8PS606j4GA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=steOlql3Q4Y:q8PS606j4GA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?i=steOlql3Q4Y:q8PS606j4GA:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/dougvdotcom/~4/steOlql3Q4Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dougv.com/blog/2010/07/19/killing-tynts-read-more-clipboard-copy-hijacker-with-the-adblock-plus-plug-in-for-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LastPass: A Great Way To Protect Your Actual Internet Privacy</title>
		<link>http://www.dougv.com/blog/2010/07/10/lastpass-a-great-way-to-protect-your-actual-internet-privacy/</link>
		<comments>http://www.dougv.com/blog/2010/07/10/lastpass-a-great-way-to-protect-your-actual-internet-privacy/#comments</comments>
		<pubDate>Sat, 10 Jul 2010 04:46:52 +0000</pubDate>
		<dc:creator>Doug Vanderweide</dc:creator>
				<category><![CDATA[Musings]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Culture and Society]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Login]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Social Media]]></category>

		<guid isPermaLink="false">http://www.dougv.com/blog/?p=3247</guid>
		<description><![CDATA[It&#8217;s a trial for me to listen to people complain about privacy on Facebook or anonymity on the Web. Don&#8217;t get me wrong; you aren&#8217;t going to find a bigger defender of anonymous speech than me. The same way a secret ballot preserves the integrity of the plebiscite, anonymous political speech protects republicanism. But there&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s a trial for me to <a href="http://www.google.com/search?q=facebook+privacy&amp;tbs=blg:1" target="_blank">listen to people complain about privacy on Facebook</a> or anonymity on the Web.</p>
<p>Don&#8217;t get me wrong; you aren&#8217;t going to find a bigger defender of anonymous speech than me. The same way a secret ballot preserves the integrity of the <a href="http://dictionary.reference.com/browse/plebiscite" target="_blank">plebiscite</a>, anonymous political speech protects <a href="http://en.wikipedia.org/wiki/Republicanism_in_the_United_States" target="_blank">republicanism</a>.</p>
<p>But there&#8217;s a difference between standing up for the right of someone to publish an anonymous blog and listening to people carp about whether some stranger can see pictures of his kids.</p>
<p>In the case of the former, the author wants to be heard, but to protect himself from the repercussions of speaking. That&#8217;s a tradition as old as politics itself, albeit that in time, anyone who makes an impact with anonymous speech is exposed.</p>
<p>In the case of the average Joe bitching about his boss via a tweet, there&#8217;s a far simpler point to be made: If you put it on the Internet, it&#8217;s not private. Period.</p>
<p>When we waste time debating whether it&#8217;s right for some potential employer to use a five-year-old drunken tweet against you, we don&#8217;t focus on the real things people should be doing to protect their Internet identities. For example, using strong passwords.</p>
<p>I&#8217;ll bet a dollar to doughnuts that the average person who worries about <a href="http://www.dougv.com/blog/tag/facebook/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Facebook">Facebook</a> <a href="http://www.dougv.com/blog/tag/privacy/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Privacy">privacy</a> is using his dog&#8217;s name as his <a href="http://www.dougv.com/blog/tag/facebook/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Facebook">Facebook</a> password. And not only that, but using that same password for every Internet site he visits, including Amazon.com, online banking, travel sites, etc., etc. And not only that, but has been using the same password for years.</p>
<p>I&#8217;m willing to make that bet because that described my password strategy up to about a week ago. Until I discovered, and started using, <a href="https://lastpass.com/" target="_blank">LastPass</a>.</p>
<p><span id="more-3247"></span><div class="wp-caption alignleft" style="width: 490px"><img class=" " title="LastPass Password Vault - IE" src="https://lastpass.com/media/screenshots/ie_vault.png" alt="" width="480" height="360" /><p class="wp-caption-text">The LastPass password vault. All your logins are kept in a remote database; LastPass says everything is encrypted and conducted over SSL, so even if your information is compromised, it won&#39;t be of use to hackers.</p></div></p>
<p>&#8220;LastPass is a password manager that makes web browsing easier and more  secure,&#8221; says its inventors. What LastPass does is collect and store all the passwords you have for various Web sites; and, through Web browser add-ons, allows you to fill in those passwords without having to remember what they are.</p>
<p>What that means is, you can create a hard-to-remember, and thus more secure, password for each Web site you visit. LastPass stores that information on its servers, so you can access your <a href="http://www.dougv.com/blog/tag/login/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Login">login</a> information from anywhere and any device. You need only remember one &#8220;master&#8221; password in order to be able to access the service.</p>
<p><strong>Better Than The Alternatives</strong></p>
<p>Now, some people will likely take umbrage at my painting this as inherently secure.</p>
<p>After all, once you give your <a href="http://www.dougv.com/blog/tag/login/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Login">login</a> information to LastPass, you theoretically lose control of it; in theory, LastPass could collect, use or sell your information. Or allow it to be compromised by a third party. Or fail to properly protect its own systems and allow hackers to get that info.</p>
<p>All of that is true as far as it goes. The same is true, however, of the sites with which one has created a user account. What value would there be to LastPass in destroying its business model by compromising user information?</p>
<p>One might also note that the built-in password managers of modern Web browsers can allow the same flexibility of LastPass. If you only use one computer and one Web browser, then by all means, use its built-in password manager.</p>
<p>But I don&#8217;t know of many people who only access the Web from one device and browser; most people use at least a PC, and probably a cell ph0ne, and maybe a laptop, and probably two or more browsers. For most people, having a central password collection point makes sense.</p>
<p>Finally, <a href="https://lastpass.com/support_faqs.php#stolen" target="_blank">LastPass says</a> that every bit of information is encrypted with your master password, which they don&#8217;t store, and all traffic is conducted over SSL, meaning that even if hackers could compromise their systems and get your <a href="http://www.dougv.com/blog/tag/login/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Login">login</a> information, it wouldn&#8217;t be of any use to them.</p>
<p>I don&#8217;t know if that is 100 percent true, but I have no reason to doubt what they say, and if what they say is true &#8212; which appears to be the case &#8212; then they&#8217;re right: so long as you have a strong master password, there&#8217;s no chance hackers will get any use out of stolen data.</p>
<p>Anyway, the summary is, I understand Web <a href="http://www.dougv.com/blog/tag/security/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Security">security</a> pretty well, and I believe LastPass is secure. It&#8217;s certainly far more secure than using the same Web password for two different sites.</p>
<p><strong>The Good, The Bad And The Ugly</strong></p>
<p>The best things about LastPass, in addition to providing a central repository of Web site passwords that you can access from any place and any device, is:</p>
<ul>
<li>It is remarkably good at finding <a href="http://www.dougv.com/blog/tag/login/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Login">login</a> forms and properly filling them out.</li>
<li>It will generate secure passwords for you.</li>
<li>You can use it to fill out forms, such as order forms, with name, address and other information; you can even have multiple profiles, to fill out forms for business, personal, kids, etc. Again, all this is stored securely.</li>
</ul>
<p>The things I don&#8217;t like about LastPass are:</p>
<ul>
<li>It sometimes doesn&#8217;t properly record passwords, especially if you are changing a password. I highly recommend that you copy the password for a site, and test logging in for every site you add to LastPass. Trust me, I learned this the hard way. Copy your password, test logging in with LastPass, and make sure it works before you discard the password.</li>
<li>Its AutoLogin feature &#8212; which, as it suggests, will log you in automatically to a Web site, if you opt to set up a site to use it &#8212; works well some places, but wreaks havoc on others. For <a href="http://www.dougv.com/blog/tag/facebook/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Facebook">Facebook</a>, Twitter and most Web forums, AutoLogin works great. For shopping sites or other places with lots of forms, it&#8217;s a major pain in the butt, and you should opt against using it.</li>
</ul>
<p>Some hard-to-use / hard-to-understand parts of LastPass are:</p>
<ul>
<li>The vault, where passwords are stored, is a bit cumbersome. While I like the ability to group passwords together, there are so many settings and so many things you can do with a password that it can be overwhelming to manage them.</li>
<li>Using LastPass with a mobile device requires a $12 per year premium service. Actually, I&#8217;m OK with that; others might not be, but I like and support the freemium model, especially when the free services work so well.</li>
</ul>
<p>It took me the better part of a day to visit all the Web sites for which I have <a href="http://www.dougv.com/blog/tag/login/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Login">login</a> information, generate, record and test new passwords.</p>
<p>But I know now that my online identity is far more secure than it had been; if somehow, the <a href="http://www.dougv.com/blog/tag/login/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Login">login</a> information I have on a site is compromised, I know that the trouble probably can&#8217;t extend past that site, whereas before, a compromise of one site was pretty much an open invitation to compromise everything.</p>

	Tags: <a href="http://www.dougv.com/blog/tag/best-practices/" title="Best Practices" rel="tag">Best Practices</a>, <a href="http://www.dougv.com/blog/tag/culture-and-society/" title="Culture and Society" rel="tag">Culture and Society</a>, <a href="http://www.dougv.com/blog/tag/facebook/" title="Facebook" rel="tag">Facebook</a>, <a href="http://www.dougv.com/blog/tag/google/" title="Google" rel="tag">Google</a>, <a href="http://www.dougv.com/blog/tag/hacking/" title="Hacking" rel="tag">Hacking</a>, <a href="http://www.dougv.com/blog/tag/login/" title="Login" rel="tag">Login</a>, <a href="http://www.dougv.com/blog/tag/privacy/" title="Privacy" rel="tag">Privacy</a>, <a href="http://www.dougv.com/blog/tag/security/" title="Security" rel="tag">Security</a>, <a href="http://www.dougv.com/blog/tag/social-media/" title="Social Media" rel="tag">Social Media</a><br />
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=0hB6oNQ-VQk:gTtLm_WxjII:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=0hB6oNQ-VQk:gTtLm_WxjII:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?i=0hB6oNQ-VQk:gTtLm_WxjII:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=0hB6oNQ-VQk:gTtLm_WxjII:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=0hB6oNQ-VQk:gTtLm_WxjII:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=0hB6oNQ-VQk:gTtLm_WxjII:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?i=0hB6oNQ-VQk:gTtLm_WxjII:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=0hB6oNQ-VQk:gTtLm_WxjII:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?i=0hB6oNQ-VQk:gTtLm_WxjII:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/dougvdotcom/~4/0hB6oNQ-VQk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dougv.com/blog/2010/07/10/lastpass-a-great-way-to-protect-your-actual-internet-privacy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New England GiveCamp 2010: What A Great Experience</title>
		<link>http://www.dougv.com/blog/2010/06/16/new-england-givecamp-2010-what-a-great-experience/</link>
		<comments>http://www.dougv.com/blog/2010/06/16/new-england-givecamp-2010-what-a-great-experience/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 21:05:47 +0000</pubDate>
		<dc:creator>Doug Vanderweide</dc:creator>
				<category><![CDATA[Musings]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Business Practices]]></category>
		<category><![CDATA[Client Relationships]]></category>
		<category><![CDATA[Culture and Society]]></category>
		<category><![CDATA[Elegance]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[GiveCamp]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Jim O'Neil]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[MSDN]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[Quickbooks]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[Visual Basic]]></category>
		<category><![CDATA[Web Services]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XSLT]]></category>

		<guid isPermaLink="false">http://www.dougv.com/blog/?p=3216</guid>
		<description><![CDATA[The first New England GiveCamp was this weekend at Microsoft&#8217;s Northeast Research and Development building in Cambridge, MA, and it was, by far, one of the most rewarding experiences I&#8217;ve had in the 15 years I have been professionally coding. About 100 technical and non-technical volunteers spent the weekend of June 11-13 writing code for [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.newenglandgivecamp.org" target="_blank"><img class="alignleft" title="New England GiveCamp 2010" src="http://eventbrite-s3.s3.amazonaws.com/eventlogos/3133703/658584845.png" alt="New England GiveCamp 2010" width="305" height="200" /></a>The first <a href="http://www.newenglandgivecamp.org" target="_blank">New England GiveCamp</a> was this weekend at <a href="http://microsoftcambridge.com/Default.aspx" target="_blank">Microsoft&#8217;s Northeast Research and Development</a> building in Cambridge, MA, and it was, by far, one of the most rewarding experiences I&#8217;ve had in the 15 years I have been professionally coding.</p>
<p>About 100 technical and non-technical volunteers spent the weekend of June 11-13 writing code for charities. Most projects were Web site upgrades &#8212; either installing a content management system, or extending that system to do something it didn&#8217;t do before, such as collecting very specific data, integrating with a customer relationship management tool, etc.</p>
<p>Other projects were more complex. For example, my project was data normalization and version control.</p>
<p>I was assigned to the <a href="http://www.goshenlandtrust.org/Site/Home.html" target="_blank">Goshen Land Trust</a>, a charity that protects open and green space in Goshen, CT. My team members were Kriss Aho and Pat Tormey, both from the Boston area; and Chris Craig, the president of GLT.</p>
<p>Prior to last weekend, GLT tracked all its customer relationships in <a href="http://www.dougv.com/blog/tag/excel/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Excel">Excel</a> spreadsheets. They do their accounting in Quickbooks.</p>
<p>If someone was a volunteer, his name went into the volunteer spreadsheet. If he owned land, his name was in the landowner spreadsheet. If he was a land or money donor, his name went into another spreadsheet. And so on, and so on; this story has been told a thousand times before, we all know it by heart.</p>
<p>And, of course, there were several versions of each of these spreadsheets out there: They were exchanged back and forth via e-mail, meaning no two copies of the same spreadsheet were alike. Again, stop me if you&#8217;ve heard this one before.</p>
<p>Finally, donor payments are managed entirely separate from the spreadsheets, via entries into Quickbooks. So there&#8217;s a completely different store of around 800 mostly duplicate names in Quickbooks, too, which isn&#8217;t easily compared to a spreadsheet of about 2,000 names.</p>
<p>So we had to figure out a way to impose some version control on these sheets; we had to create a master data store, so we could have an authoritative source of customer relationship information; and we had to sync customer information in Quickbooks to match the master data store.</p>
<p>Sounds like fun, I know. It actually was, after it stopped being awful.</p>
<p><span id="more-3216"></span><strong>If It&#8217;s Half-Broke, Fix The Half That&#8217;s Broke</strong></p>
<div class="wp-caption alignright" style="width: 250px"><a href="http://www.flickr.com/photos/dougvdotcom/4704256370/" target="_blank"><img title="Kriss Aho and Chris Craig, Goshen Land Trust, at New England GiveCamp 2010" src="http://farm5.static.flickr.com/4035/4704256370_dbcc1b084e_m.jpg" alt="Kriss Aho and Chris Craig, Goshen Land Trust, at New England GiveCamp 2010" width="240" height="179" /></a><p class="wp-caption-text">Kriss Aho and Chris Craig, Goshen Land Trust, at New England <a href="http://www.dougv.com/blog/tag/givecamp/" class="st_tag internal_tag" rel="tag" title="Posts tagged with GiveCamp">GiveCamp</a> 2010.</p></div>
<p>We wound up doing the real scoping for this project on Friday night, where the initial project parameters changed from a simple training exercise to the data normalization project we wound up doing.</p>
<p>My immediate thought, as we were discussing how to tame these spreadsheets, turned to <a href="http://civicrm.org/" target="_blank">CiviCRM</a>. It&#8217;s an open-source, Web-based customer relationship management tool that is designed specifically for nonprofits, and that would have fit Goshen Land Trust&#8217;s needs nicely.</p>
<p>But that idea suffered a few significant flaws. The biggest problem was, none of the end users have any experience with CRM software in the first place, nonetheless CiviCRM, and we didn&#8217;t want to force a solution on to people who hadn&#8217;t bought in to the solution beforehand.</p>
<p>In other words, if <a href="http://www.dougv.com/blog/tag/excel/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Excel">Excel</a> was getting the job done, except for the fact that none of the data jived among the sheets, then let&#8217;s stick with <a href="http://www.dougv.com/blog/tag/excel/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Excel">Excel</a>, or at least spreadsheets, since everyone is comfortable with that.</p>
<p>We would simply combine all the current sheets into one &#8220;master&#8221; spreadsheet. Every person would be a row; every conceivable relationship and bit of information about that person would be a column.</p>
<p>Was this the cleanest, most elegant solution to the problem? No. But  it&#8217;s one that meets the client&#8217;s needs and expectations, and it&#8217;s  something we could do over the weekend. Or, to be more specific, that Kriss could do over the weekend. I got a different assignment; more on that in a moment.</p>
<p>In a perfect world, we would have discussed the project sooner and given  the Goshen Land Trust a chance to check out CiviCRM. But again, Chris said he was OK with sticking with <a href="http://www.dougv.com/blog/tag/excel/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Excel">Excel</a>, so long as the versioning issue was fixed; and Kriss could combine the sheets with minimal data mangling and need for cleanup by hand.</p>
<p>So the master data store problem was fixed. Now we needed to address version control. The answer to that was Google Docs.</p>
<p>Since the spreadsheet in question is &#8220;flat&#8221; &#8212; that is, one sheet, with many columns reflecting every relationship &#8212; we didn&#8217;t have to worry about macros, <a href="http://www.dougv.com/blog/tag/vba/" class="st_tag internal_tag" rel="tag" title="Posts tagged with VBA">VBA</a> scripts or other <a href="http://www.dougv.com/blog/tag/excel/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Excel">Excel</a>-only attributes.</p>
<p>We also didn&#8217;t need complex user permissions: One guy owns the sheet, a few people need to be able to edit it and a few more need to be able to look at it. Google Docs has that built-in.</p>
<p>So we could just pop our master sheet into the cloud, set up some Google accounts and everyone would have access to one copy of one thing. Problem No. 2 solved.</p>
<p><strong>Quickbooks, How Do I Hate Thee? Let Me Count The Ways &#8230;</strong></p>
<div class="wp-caption alignleft" style="width: 510px"><a href="http://www.flickr.com/photos/42485399@N08/4699898271/" target="_blank"><img title="Kriss Aho, Doug Vanderweide, Chris Craig, Pat Tormey: The Goshen Land Trust team for New England GiveCamp 2010 " src="http://farm2.static.flickr.com/1275/4699898271_845b18f2e7_d.jpg" alt="Kriss Aho, Doug Vanderweide, Chris Craig, Pat Tormey: The Goshen Land Trust team for New England GiveCamp 2010 " width="500" height="333" /></a><p class="wp-caption-text">I&#39;m smiling here, but by the time this photo was taken -- aroud 4:30 pm on Saturday -- the Quickbooks SDK had shattered all my hopes and dreams. Kriss Aho, me, Chris Craig of Goshen Land Trust and Pat Tormey, our project leader. Via jflinskey on Flickr.</p></div>
<p>Problem No. 3 fell to me: How do we synchronize the contact information being kept in the spreadsheet with the customer data being stored in Quickbooks?</p>
<p>My kingdom for a unique key, is the answer.</p>
<p>Because syncing records in two data stores was never a consideration before, GLT&#8217;s roughly 800 Quickbooks customers were recorded in ways that generally weren&#8217;t easy to match against the spreadsheets they maintained. I tried <a href="http://support.quickbooks.intuit.com/Support/Pages/InProductHelp/Core/QB2K5/pro/excel_p/task_import_Excel_file.html" target="_blank">a mapped Excel import into Quickbooks</a> of data in the spreadsheets, and came up with what was at least a 70 percent match failure rate.</p>
<p>It quickly became apparent I was going to need a unique key. The question was, how could I get a key other than Customer Name out of Quickbooks, since customer name is the only unique key exposed by built-in import / export functions, and clearly that wasn&#8217;t going to work?</p>
<p>The answer was the <a href="http://qbsdk.developer.intuit.com/sdk/qb" target="_blank">Quickbooks SDK</a>, one of the sorriest, worst-documented excuses for a programming tool I&#8217;ve ever encountered. The only way to get access to Quickbooks&#8217; internal unique identifier for customer objects is via the SDK.</p>
<p>My suggestion: If you ever need to do a Quickbooks SDK project in a weekend, and you haven&#8217;t used the Quickbooks SDK before, don&#8217;t bother.</p>
<p>The Quickbooks SDK provides, at the desktop level, two ways to get data.</p>
<p>The first, oldest and the one I chose was qbXML, which is basically <a href="http://en.wikipedia.org/wiki/SOAP" target="_blank">SOAP</a>: You present an <a href="http://www.dougv.com/blog/tag/xml/" class="st_tag internal_tag" rel="tag" title="Posts tagged with XML">XML</a> request, you get an <a href="http://www.dougv.com/blog/tag/xml/" class="st_tag internal_tag" rel="tag" title="Posts tagged with XML">XML</a> response. I have experience working with <a href="http://www.dougv.com/blog/tag/xml/" class="st_tag internal_tag" rel="tag" title="Posts tagged with XML">XML</a>-RPC, <a href="http://www.dougv.com/blog/tag/web-services/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Web Services">Web services</a> and <a href="http://www.dougv.com/blog/tag/xml/" class="st_tag internal_tag" rel="tag" title="Posts tagged with XML">XML</a> in general, so this seemed the smart way to go.</p>
<p>The other is QBFC, which is more like writing a traditional object-based program using classes, methods and properties. This is the way I would have preferred to go, had the Quickbooks SDK&#8217;s documentation made that an option.</p>
<p>When I call the Quickbooks SDK &#8220;poorly documented,&#8221; what I mean is that it completely lacks object or entity references. As in, don&#8217;t bother trying to look up what classes, methods, properties or <a href="http://www.dougv.com/blog/tag/xml/" class="st_tag internal_tag" rel="tag" title="Posts tagged with XML">XML</a> markup you should use, or what arguments any of them take. It isn&#8217;t written down anywhere. Not in the SDK documentation, not on <a href="http://developer.intuit.com/" target="_blank">Intuit&#8217;s Web site</a>, not on the Interweb. Apparently, the <a href="http://www.conspiracyarchive.com/" target="_blank">Illuminati</a> are keeping it a secret.</p>
<p>To figure out what you should do for a Quickbooks SDK project, you need to reverse-engineer a bunch of sample projects that come in the SDK. There is a &#8220;jump start&#8221; PDF that explains the basics of making requests and handling responses, but they&#8217;re written in <a href="http://msdn.microsoft.com/en-us/vbasic/ms788229.aspx" target="_blank">Visual Basic 6</a>, apparently by some junior-college student who&#8217;s being way too verbose in order to show his work to the professor.</p>
<p>(And yes, you guessed it: The Quickbooks SDK is straight-up <a href="http://msdn.microsoft.com/en-us/vbasic/ms788229.aspx" target="_blank">COM+</a>. You must install at least one DLL on each machine that wants to run an SDK application.)</p>
<p>Thankfully, there are plenty of <a href="http://www.dougv.com/blog/tag/xml/" class="st_tag internal_tag" rel="tag" title="Posts tagged with XML">XML</a>, <a href="http://www.dougv.com/blog/tag/xslt/" class="st_tag internal_tag" rel="tag" title="Posts tagged with XSLT">XSLT</a> and similar sample files in the SDK for both qbXML and QBFC, covering virtually anything you could want or do; so one can hammer out a solution that&#8217;s a mashup of a provided sample.</p>
<p>Unless time and experience with the SDK aren&#8217;t luxuries you enjoy. Which was certainly the case for me this weekend.</p>
<p>My original goal was to create, in Quickbooks itself, a macro that would directly grab the online spreadsheet (via <a href="http://www.json.org/" target="_blank">JSON</a> requests to the <a href="http://code.google.com/apis/spreadsheets/data/3.0/developers_guide.html" target="_blank">Google Spreadsheets Data API</a>), match up my records, correct any customer contact info that is wrong in Quickbooks with information from the online spreadsheet, and report results.</p>
<p><a href="http://en.wikipedia.org/wiki/To_a_Mouse" target="_blank">Cue Robert Burns</a>.</p>
<p>It was everything I could do over the weekend to get Quickbooks to give me the customer list as an <a href="http://www.dougv.com/blog/tag/xml/" class="st_tag internal_tag" rel="tag" title="Posts tagged with XML">XML</a> file. And that <a href="http://www.dougv.com/blog/tag/xml/" class="st_tag internal_tag" rel="tag" title="Posts tagged with XML">XML</a> file has multiple object levels, but no schema definition or namespace declaration available anyplace, either. Again: Worst. SDK. Ever.</p>
<p>So now I need to apply <a href="http://www.w3schools.com/xsl/" target="_blank">XSL</a> to flatten it out, for purposes of comparing it to the online spreadsheet.</p>
<p>Needless to say, I&#8217;m still working on the project. My new plan:</p>
<ol>
<li>Create my record-flattening XSL.</li>
<li>Have my program run standalone.</li>
<li>Compare whatever is in the Quickbooks Customer List against the online spreadsheet.
<ol>
<li>Any unique ID that is in the Quickbooks Customer List, but not in the online spreadsheet, is listed in a new <a href="http://www.dougv.com/blog/tag/excel/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Excel">Excel</a> sheet, for manual updating.</li>
<li>Any unique ID that is in Quickbooks, but has address / contact information that doesn&#8217;t match the online spreadsheet, is reported to a new <a href="http://www.dougv.com/blog/tag/excel/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Excel">Excel</a> sheet, for manual updating.</li>
</ol>
</li>
</ol>
<p>I figure I&#8217;m about six hours out from being done. And I will deliver this. Because <em>now, it&#8217;s personal. </em>And when I&#8217;m done, I&#8217;m going to blog about it, so the next poor soul has a head start.</p>
<p><strong>The Experience Was Amazing</strong></p>
<div class="wp-caption alignleft" style="width: 510px"><a href="http://www.flickr.com/photos/dougvdotcom/4703617151/" target="_blank"><img class=" " title="Pat Tormey, my project leader, at New England GiveCamp 2010" src="http://farm5.static.flickr.com/4042/4703617151_bedcb02bbc.jpg" alt="Pat Tormey, my project leader, at New England GiveCamp 2010" width="500" height="374" /></a><p class="wp-caption-text">Pat Tormey, my project leader, at New England <a href="http://www.dougv.com/blog/tag/givecamp/" class="st_tag internal_tag" rel="tag" title="Posts tagged with GiveCamp">GiveCamp</a> 2010. Taken about two hours before the event&#39;s end on Sunday, he&#39;s pretty relaxed for a guy who was just told the project wouldn&#39;t be done in time. Just another in a long list of reasons to like him.</p></div>
<p>OK, I admit I&#8217;m being overly dramatic about the Quickbooks SDK. But it was such an intense experience, being part of New England <a href="http://www.dougv.com/blog/tag/givecamp/" class="st_tag internal_tag" rel="tag" title="Posts tagged with GiveCamp">GiveCamp</a>, that you will have to grant me some poetic license.</p>
<p>Cambridge, MA, the <a href="http://web.mit.edu/visit/" target="_blank">MIT campus</a> and the NERD building are completely awesome.</p>
<p>The entire city is a visual feast: architecture, art, people, happenings; you name it, there&#8217;s something interesting to look at anywhere you go, at all hours.</p>
<p>The Charles River has become quite a centerpiece, too. On Friday and Saturday nights I opted to walk from NERD to the <a href="http://cambridge.hyatt.com/hyatt/hotels/index.jsp" target="_blank">Hyatt Regency Cambridge</a> hotel, where I was staying, which are about two miles apart on Memorial Drive.</p>
<p>That walk could not have been more pleasant. The Boston skyline at night is beautiful, and the buildings I passed on the way were all alive with the sounds of music and conversation and celebration.</p>
<p>Every morning, I took a cab in to prevent getting sweaty; on Saturday morning, I passed <a href="http://www.hcs.harvard.edu/~harvcrew/" target="_blank">Harvard crew practice</a>. (Memo to them: Time for a Web site redesign.)</p>
<p>I know, I should have taken pictures. The entire weekend, I kept saying, &#8220;next time.&#8221; Until I ran out of next times. So, next time.</p>
<p>The Hyatt is a very nice hotel, too. The glass elevators are kind of cool; the bed was completely awesome, and the room was more than sufficient in size for one person.</p>
<p>I did give the restaurant / lounge a try on Saturday night; they charged me $17 for 32 oz. of beer, served in a mimosa glass and milk pitcher, which I thought was pretty silly. They also messed up my hamburger order, but gave it to me for free as a result.</p>
<p>I made the mistake of reserving a room at the last minute &#8212; <a href="http://www.priceline.com" target="_blank">priceline.com</a> completely came up short on reasonable, affordable alternatives &#8212; so it was hard to get the <a href="http://www.dougv.com/blog/tag/microsoft/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Microsoft">Microsoft</a> corporate rate, but after a series of phone and e-mail exchanges, I managed to get in at the last minute.</p>
<p>So I would happily recommend the Hyatt Regency if you&#8217;re staying in the Boston area. They were very accommodating, no pun intended.</p>
<p><strong>Such Interesting People And Causes, Too</strong></p>
<p>The people at <a href="http://www.dougv.com/blog/tag/givecamp/" class="st_tag internal_tag" rel="tag" title="Posts tagged with GiveCamp">GiveCamp</a> were pretty interesting, too: Both the developers and the charities.</p>
<p>I reconnected with Greg Howe, who I went to college with and who co-manages the <a href="http://www.bangordevelopers.com/" target="_blank">Bangor Area .NET Development</a> group. Greg is exceptionally well-versed in Web <a href="http://www.dougv.com/blog/tag/security/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Security">security</a> and gave a talk during the event.</p>
<p>I met Alexander Lee, whose charity, <a href="http://www.laundrylist.org/" target="_blank">Project Laundry List</a>, advocates line-drying clothes as a green technology; it sounds silly to a country boy like me, but in many places in the world, a clothes line is a practical, or political, impossibility.</p>
<p>I wanted to meet, but couldn&#8217;t manage it, <a href="http://sparechangenews.net/" target="_blank">Spare Change News</a>, a newspaper produced and distributed by the homeless, which I thought was probably one of the most interesting ideas I&#8217;ve heard in a while; rather than trying to get the homeless to not be homeless, it aims to provide the homeless with the information and financial support to meet their needs.</p>
<p>The event was full of incredible people doing incredible things. You couldn&#8217;t help but be inspired and driven to give your best.</p>
<p>I figured that at worst, the <a href="http://www.dougv.com/blog/tag/givecamp/" class="st_tag internal_tag" rel="tag" title="Posts tagged with GiveCamp">GiveCamp</a> experience would be an opportunity to help out some people who needed it and to jabber with some like-minded souls. Turns out it was that and more.</p>
<p>It plain feels good to have made a difference to someone else. It plain feels good to have been in the company of unselfish people for a weekend. It plain feels good to have been in a beautiful place for a weekend. And it plain feels good to have been thanked by people doing largely thankless work.</p>
<p>Count on me for New England <a href="http://www.dougv.com/blog/tag/givecamp/" class="st_tag internal_tag" rel="tag" title="Posts tagged with GiveCamp">GiveCamp</a> 2011 and beyond.</p>
<p>All links in this post on delicious: <a href="http://delicious.com/dougvdotcom/new-england-givecamp-2010-what-a-great-experience" target="_blank">http://delicious.com/dougvdotcom/new-england-givecamp-2010-what-a-great-experience</a></p>

	Tags: <a href="http://www.dougv.com/blog/tag/api/" title="API" rel="tag">API</a>, <a href="http://www.dougv.com/blog/tag/best-practices/" title="Best Practices" rel="tag">Best Practices</a>, <a href="http://www.dougv.com/blog/tag/business-practices/" title="Business Practices" rel="tag">Business Practices</a>, <a href="http://www.dougv.com/blog/tag/client-relationships/" title="Client Relationships" rel="tag">Client Relationships</a>, <a href="http://www.dougv.com/blog/tag/culture-and-society/" title="Culture and Society" rel="tag">Culture and Society</a>, <a href="http://www.dougv.com/blog/tag/elegance/" title="Elegance" rel="tag">Elegance</a>, <a href="http://www.dougv.com/blog/tag/excel/" title="Excel" rel="tag">Excel</a>, <a href="http://www.dougv.com/blog/tag/givecamp/" title="GiveCamp" rel="tag">GiveCamp</a>, <a href="http://www.dougv.com/blog/tag/google/" title="Google" rel="tag">Google</a>, <a href="http://www.dougv.com/blog/tag/html/" title="HTML" rel="tag">HTML</a>, <a href="http://www.dougv.com/blog/tag/jim-oneil/" title="Jim O&#039;Neil" rel="tag">Jim O&#039;Neil</a>, <a href="http://www.dougv.com/blog/tag/microsoft/" title="Microsoft" rel="tag">Microsoft</a>, <a href="http://www.dougv.com/blog/tag/msdn/" title="MSDN" rel="tag">MSDN</a>, <a href="http://www.dougv.com/blog/tag/music/" title="Music" rel="tag">Music</a>, <a href="http://www.dougv.com/blog/tag/quickbooks/" title="Quickbooks" rel="tag">Quickbooks</a>, <a href="http://www.dougv.com/blog/tag/rest/" title="REST" rel="tag">REST</a>, <a href="http://www.dougv.com/blog/tag/security/" title="Security" rel="tag">Security</a>, <a href="http://www.dougv.com/blog/tag/soap/" title="SOAP" rel="tag">SOAP</a>, <a href="http://www.dougv.com/blog/tag/vba/" title="VBA" rel="tag">VBA</a>, <a href="http://www.dougv.com/blog/tag/visual-basic/" title="Visual Basic" rel="tag">Visual Basic</a>, <a href="http://www.dougv.com/blog/tag/web-services/" title="Web Services" rel="tag">Web Services</a>, <a href="http://www.dougv.com/blog/tag/xml/" title="XML" rel="tag">XML</a>, <a href="http://www.dougv.com/blog/tag/xslt/" title="XSLT" rel="tag">XSLT</a><br />
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=0HrQUXkznhg:7xNjf6ez5Rg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=0HrQUXkznhg:7xNjf6ez5Rg:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?i=0HrQUXkznhg:7xNjf6ez5Rg:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=0HrQUXkznhg:7xNjf6ez5Rg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=0HrQUXkznhg:7xNjf6ez5Rg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=0HrQUXkznhg:7xNjf6ez5Rg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?i=0HrQUXkznhg:7xNjf6ez5Rg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=0HrQUXkznhg:7xNjf6ez5Rg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?i=0HrQUXkznhg:7xNjf6ez5Rg:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/dougvdotcom/~4/0HrQUXkznhg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dougv.com/blog/2010/06/16/new-england-givecamp-2010-what-a-great-experience/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>At New England GiveCamp This Weekend</title>
		<link>http://www.dougv.com/blog/2010/06/10/at-new-england-givecamp-this-weekend/</link>
		<comments>http://www.dougv.com/blog/2010/06/10/at-new-england-givecamp-this-weekend/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 01:13:01 +0000</pubDate>
		<dc:creator>Doug Vanderweide</dc:creator>
				<category><![CDATA[Musings]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[GiveCamp]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Jim O'Neil]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://www.dougv.com/blog/?p=3211</guid>
		<description><![CDATA[So I&#8217;ve got my assignment for New England GiveCamp, and by this time Friday I&#8217;ll be clacking away on my laptop, alongside some 100 other computer programmers, graphic designers and other volunteers at Microsoft&#8217;s New England Research &#38; Development Center. That&#8217;s right, NERD. Silly acronym, absolutely awesome building right on the MIT campus in Cambridge, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.newenglandgivecamp.org/" target="_blank"><img class="alignleft" title="New England GiveCamp 2010" src="http://eventbrite-s3.s3.amazonaws.com/eventlogos/3133703/658584845.png" alt="New England GiveCamp 2010" width="305" height="200" /></a>So I&#8217;ve got my assignment for New England <a href="http://www.dougv.com/blog/tag/givecamp/" class="st_tag internal_tag" rel="tag" title="Posts tagged with GiveCamp">GiveCamp</a>, and by this time Friday I&#8217;ll be clacking away on my laptop, alongside some 100 other computer programmers, graphic designers and other volunteers at <a href="http://microsoftcambridge.com/Default.aspx" target="_blank">Microsoft&#8217;s New England Research &amp; Development Center</a>.</p>
<p>That&#8217;s right, NERD. Silly acronym, absolutely awesome building right on the MIT campus in Cambridge, at Memorial Drive and Main Street.</p>
<p>According to the coordinators, I&#8217;ll be working on a project for the <a href="http://www.goshenlandtrust.org/Site/Home.html" target="_blank">Goshen Land Trust</a>, helping them integrate Quickbooks, <a href="http://www.missionresearch.com/index.html" target="_blank">Giftworks</a> and <a href="http://www.dougv.com/blog/tag/excel/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Excel">Excel</a>. They also want to talk about <a href="http://www.dougv.com/blog/tag/social-media/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Social Media">social media</a>.</p>
<p>This charity is after my own heart: They preserve open and green spaces in <a href="http://www.goshenct.gov/Pages/index" target="_blank">Goshen, Conn</a>. I am a sincere believer in open space / <a href="http://en.wikipedia.org/wiki/Green_belt" target="_blank">green belt</a> concept &#8212; that is, ensuring every community has fields, woods and otherwise undeveloped land &#8212; is valuable; the bigger the community, the more important open space becomes.</p>
<p>Of course, one would expect that; I do live in Maine and I was <a href="http://www.mainesportsman.com/site/" target="_blank">raised on hunting and fishing</a>.</p>
<p>I also live next to a playground that is essentially a pool, basketball court, swing set and large, open field; and every day, from the first time the thermometer tops 50° to the first snowfall, that playground is full of people from all walks of life, enjoying fresh air and exercise.</p>
<p>Is this project the most exciting thing I&#8217;ve ever been asked to do? No, it is not. Is it the most challenging thing I&#8217;ve ever been asked to do? Again, no. And I&#8217;m not entirely sure it&#8217;s going to take all weekend to do it. I&#8217;m not even sure it&#8217;s going to take past lunch on Saturday.</p>
<p>But I was reminded by my project leader that the object of the camp is to help out people who need it, even if what they need isn&#8217;t the next <a href="http://www.facebook.com/dougvdotcom" target="_blank">Facebook</a>. And I&#8217;ve also been promised that there will be plenty for me to do, even if we finish early.</p>
<p>I was planning on staying at NERD this weekend, since they offered, and they have showers, and hotels anywhere in or near Cambridge aren&#8217;t exactly cheap.</p>
<p>But then I found out they have three showers for guys, and there are 50+ people planning on staying at NERD, almost all of them men.</p>
<p>Believe me, I&#8217;ve roughed it. I&#8217;ve spent several nights camping with others during winter, when washing wasn&#8217;t an option. I&#8217;ve been elbow-deep in ruptured game-animal entrails on many occasions. Stench and grime isn&#8217;t a problem for me.</p>
<p>But there is no way I am getting into a shower that&#8217;s been immediately used by at least 10 people before me. That&#8217;s simply unsanitary. I don&#8217;t care how clean and healthy everyone at this thing is; showering like that is begging to get ill.</p>
<p>Anyway, time and circumstances allowing, I plan to blog, or at least tweet, over the weekend. Stay tuned.</p>
<p>All links in this post on delicious: <a href="http://delicious.com/dougvdotcom/at-new-england-givecamp-this-weekend" target="_blank">http://delicious.com/dougvdotcom/at-new-england-givecamp-this-weekend</a></p>

	Tags: <a href="http://www.dougv.com/blog/tag/facebook/" title="Facebook" rel="tag">Facebook</a>, <a href="http://www.dougv.com/blog/tag/givecamp/" title="GiveCamp" rel="tag">GiveCamp</a>, <a href="http://www.dougv.com/blog/tag/html/" title="HTML" rel="tag">HTML</a>, <a href="http://www.dougv.com/blog/tag/jim-oneil/" title="Jim O&#039;Neil" rel="tag">Jim O&#039;Neil</a>, <a href="http://www.dougv.com/blog/tag/microsoft/" title="Microsoft" rel="tag">Microsoft</a><br />
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=B55IUTR5IcA:lz7Ke-fabqs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=B55IUTR5IcA:lz7Ke-fabqs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?i=B55IUTR5IcA:lz7Ke-fabqs:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=B55IUTR5IcA:lz7Ke-fabqs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=B55IUTR5IcA:lz7Ke-fabqs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=B55IUTR5IcA:lz7Ke-fabqs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?i=B55IUTR5IcA:lz7Ke-fabqs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=B55IUTR5IcA:lz7Ke-fabqs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?i=B55IUTR5IcA:lz7Ke-fabqs:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/dougvdotcom/~4/B55IUTR5IcA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dougv.com/blog/2010/06/10/at-new-england-givecamp-this-weekend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>It’s All Chinese To Me: Reader Has Google Translate Built-In</title>
		<link>http://www.dougv.com/blog/2010/06/10/its-all-chinese-to-me-reader-has-google-translate-built-in/</link>
		<comments>http://www.dougv.com/blog/2010/06/10/its-all-chinese-to-me-reader-has-google-translate-built-in/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 14:43:13 +0000</pubDate>
		<dc:creator>Doug Vanderweide</dc:creator>
				<category><![CDATA[Musings]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Reader]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.dougv.com/blog/?p=3195</guid>
		<description><![CDATA[I really like Google Reader; one of its great features is its recommendations. As long as you choose to &#8220;like&#8221; articles and media on a fairly consistent basis, Reader can do a very good job of finding new content and sources (provided, that is, they come from a Feedburner RSS feed). Because Google expected me [...]]]></description>
			<content:encoded><![CDATA[<p>I really like <a href="http://www.google.com/reader" target="_blank">Google Reader</a>; one of its great features is its recommendations. As long as you choose to &#8220;like&#8221; articles and media on a fairly consistent basis, Reader can do a very good job of finding new content and sources (provided, that is, they come from a <a href="http://feeds.feedburner.com/dougvdotcom" target="_blank">Feedburner RSS feed</a>).</p>
<p>Because Google expected me to have at least a modicum of Internet savvy &#8212; perhaps from the nature of the things I &#8220;like&#8221; and share &#8212; Reader occasionally sends along to me tweets written in Chinese.</p>
<div id="attachment_3197" class="wp-caption alignnone" style="width: 748px"><a href="http://www.dougv.com/blog/wp-content/uploads/2010/06/chinese_tweet.jpg"><img class="size-large wp-image-3197   " title="A tweet written in Chinese" src="http://www.dougv.com/blog/wp-content/uploads/2010/06/chinese_tweet-1024x225.jpg" alt="A tweet written in Chinese" width="738" height="162" /></a><p class="wp-caption-text">Google Reader suggests a tweet, but it&#39;s all Chinese to me. Note the &quot;not interested&quot; tick is checked. That&#39;s because I failed to RTFM.</p></div>
<p>According to Google Translate, the tweet above reads:</p>
<blockquote><p>RT @ aiww: Ha, yes. RT @ luanmazi: Republic of the  &#8220;unsung heroes&#8221; bei RT @  june197433: &#8220;China&#8217;s Internet status&#8221;  throughout the White Paper did not  mention GFW, Fang Bin-Xing Academy  of Engineering uncomfortable it?  Http://aa.cx/r85 @ aiww</p></blockquote>
<p>That&#8217;s clear enough: China doesn&#8217;t mention, in <a href="http://www.scio.gov.cn/zxbd/tt/jd/201006/t660840.htm" target="_blank">its recent statement on the Internet</a>, the school  where China&#8217;s infamous firewall was developed.</p>
<p>As the &#8220;not interested&#8221; tick indicates, previously I had been marking these Chinese tweets to disappear, but I&#8217;ve been getting 2-3 per week, despite my attempt to indicate I can&#8217;t read Chinese. It&#8217;s time-consuming to copy and paste these tweets into Translate; I already waste enough time on <a href="http://www.google.com/reader/shared/dougvanderweide" target="_blank">Reader</a>, <a href="http://twitter.com/dougvdotcom" target="_blank">Twitter</a> and <a href="http://www.facebook.com/dougvdotcom" target="_blank">Facebook</a>.</p>
<p>Which sent me on a quest to find a way to translate Reader posts inline.</p>
<p>Being a typical programmer, my initial thought was a $10 solution to a 50-cent problem: I could use the <a href="http://code.google.com/p/pyrfeed/wiki/GoogleReaderAPI" target="_blank">Reader</a> and <a href="http://code.google.com/intl/en/apis/ajaxlanguage/" target="_blank">Translate</a> APIs to do on-the-fly translations. That, however, was quickly dismissed as a gross impracticality.</p>
<p>I could find, or write, a <a href="https://addons.mozilla.org/en-US/firefox/addon/748/" target="_blank">Greasemonkey</a> script to do the translation. I did find <a href="http://userscripts.org/scripts/show/43115" target="_blank">a Greasemonkey script that translates tweets</a> on the Twitter Web page itself. I installed that and it works great, from a technical standpoint; but the Engrish it generates is, shall we say, rough.</p>
<div id="attachment_3198" class="wp-caption alignnone" style="width: 515px"><img class="size-full wp-image-3198" title="A Twitter translation by Google: Wait, what?" src="http://www.dougv.com/blog/wp-content/uploads/2010/06/engrish_tweet.jpg" alt="A Twitter translation by Google: Wait, what?" width="505" height="275" /><p class="wp-caption-text">A Twitter translation by Google, from Japanese to English: Wait, what?</p></div>
<p>So I was resigned to having to live with a choice between no translation or bad translations. Until I decided to <a href="http://en.wikipedia.org/wiki/RTFM" target="_blank">STFW</a> one more time, and found the solution: Google has already handled translation for me. As in, <a href="http://googlesystem.blogspot.com/2008/11/translate-feeds-in-google-reader.html" target="_blank">translation is just a button click away</a>.</p>
<div id="attachment_3204" class="wp-caption alignnone" style="width: 742px"><img class="size-full wp-image-3204 " title="Google Reader translation option" src="http://www.dougv.com/blog/wp-content/uploads/2010/06/translate_option.jpg" alt="Google Reader translation option" width="732" height="208" /><p class="wp-caption-text">Oh, you mean I should click *that* button. Why didn&#39;t you say so?</p></div>
<p>Proving, once again, it&#8217;s important to read the manual.</p>
<p>All links in this post on delicious: <a href="http://delicious.com/dougvdotcom/its-all-chinese-to-me-reader-has-google-translate-built-in" target="_blank">http://delicious.com/dougvdotcom/its-all-chinese-to-me-reader-has-google-translate-built-in</a></p>

	Tags: <a href="http://www.dougv.com/blog/tag/ajax/" title="AJAX" rel="tag">AJAX</a>, <a href="http://www.dougv.com/blog/tag/api/" title="API" rel="tag">API</a>, <a href="http://www.dougv.com/blog/tag/facebook/" title="Facebook" rel="tag">Facebook</a>, <a href="http://www.dougv.com/blog/tag/google/" title="Google" rel="tag">Google</a>, <a href="http://www.dougv.com/blog/tag/greasemonkey/" title="Greasemonkey" rel="tag">Greasemonkey</a>, <a href="http://www.dougv.com/blog/tag/html/" title="HTML" rel="tag">HTML</a>, <a href="http://www.dougv.com/blog/tag/reader/" title="Reader" rel="tag">Reader</a>, <a href="http://www.dougv.com/blog/tag/social-media/" title="Social Media" rel="tag">Social Media</a>, <a href="http://www.dougv.com/blog/tag/twitter/" title="Twitter" rel="tag">Twitter</a><br />
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=UAUdOF5wJZ8:Jld1CuAEiCE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=UAUdOF5wJZ8:Jld1CuAEiCE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?i=UAUdOF5wJZ8:Jld1CuAEiCE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=UAUdOF5wJZ8:Jld1CuAEiCE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=UAUdOF5wJZ8:Jld1CuAEiCE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=UAUdOF5wJZ8:Jld1CuAEiCE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?i=UAUdOF5wJZ8:Jld1CuAEiCE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dougvdotcom?a=UAUdOF5wJZ8:Jld1CuAEiCE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/dougvdotcom?i=UAUdOF5wJZ8:Jld1CuAEiCE:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/dougvdotcom/~4/UAUdOF5wJZ8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dougv.com/blog/2010/06/10/its-all-chinese-to-me-reader-has-google-translate-built-in/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic page generated in 2.557 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-07-26 05:42:05 --><!-- Compression = gzip -->
