<?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>UltraNurdage &#187; Code Projects</title>
	<atom:link href="http://blog.ultranurd.net/category/computers/code-projects/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ultranurd.net</link>
	<description>Collected Commentary</description>
	<lastBuildDate>Wed, 01 Feb 2012 18:59:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>BackSnapper &#8211; My First Chrome Extension</title>
		<link>http://blog.ultranurd.net/2009/11/25/backsnapper-my-first-chrome-extension/</link>
		<comments>http://blog.ultranurd.net/2009/11/25/backsnapper-my-first-chrome-extension/#comments</comments>
		<pubDate>Thu, 26 Nov 2009 03:54:28 +0000</pubDate>
		<dc:creator>Nicolas Ward</dc:creator>
				<category><![CDATA[Code Projects]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[chrome extension]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google chrome]]></category>
		<category><![CDATA[web navigation]]></category>

		<guid isPermaLink="false">http://blog.ultranurd.net/?p=734</guid>
		<description><![CDATA[BackSnapper On a whim tonight, I whipped up my first Google Chrome extension in about 2 hours. A non-trivial amount of time was spent writing it up and making the icons. It&#8217;s obviously very simple, but it replicates one of my favorite features of Safari 3: SnapBack (the feature got eviscerated in Safari 4). Basically [...]]]></description>
			<content:encoded><![CDATA[<h2>BackSnapper</h2>
<p>On a whim tonight, I whipped up my first Google Chrome extension in about 2 hours. A non-trivial amount of time was spent writing it up and making the icons. It&#8217;s obviously very simple, but it replicates one of my favorite features of Safari 3: SnapBack (the feature got eviscerated in Safari 4).</p>
<p>Basically all this extension does is add a button to the Chrome toolbar that you can click to jump back to the first page in a tab&#8217;s history. I realize the button and icons are ugly; I am not a design-type person.</p>
<div class="wp-caption aligncenter" style="width: 225px"><img title="BackSnapper Example" src="http://www.ultranurd.net/code/chrome/backsnapper.png" alt="The BackSnapper button once installed in Chrome 4" width="215" height="125" /><p class="wp-caption-text">The BackSnapper button once installed in Chrome 4</p></div>
<p>You can <a title="Nurd Central - Code Projects - Chrome Extensions" href="http://www.ultranurd.net/code/chrome/index.html">read a bit more</a> about my BackSnapper extension, <a title="BackSnapper zip file" href="http://www.ultranurd.net/code/chrome/BackSnapper.zip">download it</a> if you&#8217;re using the developer edition of Google Chrome (currently version 4), or <a title="BackSnapper on github" href="http://github.com/UltraNurd/chrome-extension-backsnapper">view the code</a> on <a title="github" href="http://github.com/">github</a>.</p>
<p>As Chrome rolls out the Extensions Gallery, I&#8217;ll deploy the extension out there. It could probably use some better options, and some smarter heuristics for determining where the beginning is, but for my purposes it gives me the magic button I want.</p>
<h2>Installation</h2>
<p>You can install the BackSnapper extension from the .zip file more or less by following <a title="Google Chrome Extensions - Getting Started Tutorial" href="http://code.google.com/chrome/extensions/getstarted.html#load">Step 4 in these instructions</a>. Note that at present this only works for the dev channel (version 4) of Google Chrome.</p>
<ol>
<li>Download and unpack the .zip file</li>
<li>Select Extensions from the Tools menu.</li>
<li>Click &#8220;Developer Mode&#8221; on the right in the Extensions display.</li>
<li>Click &#8220;Load unpacked extension&#8230;&#8221; and select the unpacked BackSnapper folder</li>
</ol>
<h2>Development Tips</h2>
<p>There were a few things I learned getting this working that weren&#8217;t immediately obvious from the documentation:</p>
<ul>
<li>The debug console is per tab</li>
<li>You may need to select your injected content Javascript in the debug console to view logged messages</li>
<li>For simple calls into content scripts, chrome.tabs.sendRequest() is sufficient, you don&#8217;t need to use the more complicated connect() message passing calls.</li>
</ul>
<p>There were also a few things I couldn&#8217;t figure out:</p>
<ul>
<li>Why won&#8217;t the current developers-only Extensions Gallery accept my unsigned zip file?</li>
<li>Why can&#8217;t I determine the current URL in the history after having called history.go()? location.href remains unchanged, and history.current is undefined.</li>
</ul>
<div class='wb_fb_bottom'><div style="float:right;"></div></div>]]></content:encoded>
			<wfw:commentRss>http://blog.ultranurd.net/2009/11/25/backsnapper-my-first-chrome-extension/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tweetworks Python API</title>
		<link>http://blog.ultranurd.net/2009/07/06/tweetworks-python-api/</link>
		<comments>http://blog.ultranurd.net/2009/07/06/tweetworks-python-api/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 01:28:48 +0000</pubDate>
		<dc:creator>Nicolas Ward</dc:creator>
				<category><![CDATA[Code Projects]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[tweetworks]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://blog.ultranurd.net/?p=665</guid>
		<description><![CDATA[Tweetworks Python API Version 1.0.0b1 of the tweetworks package for Python 2.6 is now available. This package implements the web service API for Tweetworks, a Web 2.0 service that facilitates threaded conversations on top of Twitter. This is definitely a beta, because while I&#8217;ve tested everything I can think of, I haven&#8217;t tried writing anything [...]]]></description>
			<content:encoded><![CDATA[<h2>Tweetworks Python API</h2>
<p>Version 1.0.0b1 of the tweetworks package for Python 2.6 is now available. This package implements the web service API for <a title="Tweetworks Home" href="http://www.tweetworks.com/">Tweetworks</a>, a Web 2.0 service that facilitates threaded conversations on top of <a title="Twitter Home" href="http://www.twitter.com/">Twitter</a>.</p>
<p>This is definitely a beta, because while I&#8217;ve tested everything I can think of, I haven&#8217;t tried writing anything seriously complicated with it, although I certainly plan to. Comments and questions are welcome here, or find me in the <a title="TweetworksDevelopers on Tweetworks" href="http://www.tweetworks.com/groups/view/TweetworksDevelopers">Tweetworks Developers</a> group or as <a title="UltraNurd on Twitter" href="http://www.twitter.com/UltraNurd">@UltraNurd</a>. I admit that the <a href="http://www.ultranurd.net/code/tweetworks/doc.html">documentation</a> is a little light at the moment.</p>
<p>If you&#8217;re interested in using Tweetworks programmatically from Python, or want to know more about the service, read on.</p>
<p><span id="more-665"></span></p>
<h2>What is Tweetworks?</h2>
<p><a title="Tweetworks Home" href="http://www.tweetworks.com/">Tweetworks</a> is a service and site built on top of Twitter allowing a user to create public and private groups (instead of hashtags) with threaded conversations <a title="About Tweetworks" href="http://www.tweetworks.com/pages/about">and more</a>.</p>
<p>Tweetworks is a Boston-area startup created by <a title="Mike Langford on Twitter" href="http://www.twitter.com/MikeLangford">@MikeLangford</a>. I first heard about it at a <a title="WBUR Homepage" href="http://www.wbur.org/">WBUR</a> <a title="The Converstation Blog" href="http://theconverstation.org/">tweet-up</a> hosted by <a title="Ken George on Twitter" href="http://www.twitter.com/KenGeorge">@KenGeorge</a>. Mike was there, promoting his then-brand-new site, and handing out wearable plastic toucan beaks (part of the Tweetworks logo).</p>
<p>Naturally, I checked it out right away, and ended up becoming Tweetworks user #15! I would not call myself a heavy user of the site, and this is not a review thereof, but it is a useful place to have Twitter-based discussions with threading and without having to rely on the sometimes unreliable Twitter hashtag searches.</p>
<h2>Why did I make this?</h2>
<p>As Tweetworks&#8217; usage increased, my computational linguist side became interested in the threaded data about short-form online conversations that the site was accumulating. I was therefore very excited when they released a public <a title="Tweetworks API Documentation" href="http://www.tweetworks.com/pages/api">API</a>.</p>
<p>It&#8217;s my hope that creating this library will help other developers get started playing with Tweetworks from a service perspective, as well as facilitating my own site mash-up ideas.</p>
<p>Finally, there is also the totally selfish reason that I like coming up with small projects like this one to hone my programming skills, both in terms of design and learning new best practices for interacting with different systems and built-in libraries. In this case, I learned a lot about Python&#8217;s <a title="Python urllib Documentation" href="http://docs.python.org/library/urllib.html">urllib</a>, as well as setuptools.</p>
<h2>Getting the Package</h2>
<p>The easiest way to obtain the tweetworks package is using setuptools to grab it from PyPI. Assuming you have Python, with <a title="Python EasyInstall Installation Instructions" href="http://peak.telecommunity.com/DevCenter/EasyInstall#installation-instructions">setuptools</a> installed, you should just be able to run this command in your shell:</p>
<p><code>easy_install tweetworks</code></p>
<p>For alternative methods, or if you&#8217;re interested in contributing to the development of the API package, check out <a title="Nurd Central - Code Projects - Tweetworks" href="http://www.ultranurd.net/code/tweetworks/">my Tweetworks page</a>.</p>
<p>This software is released under the <a title="The GNU General Public License" href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</a>.</p>
<div class='wb_fb_bottom'><div style="float:right;"></div></div>]]></content:encoded>
			<wfw:commentRss>http://blog.ultranurd.net/2009/07/06/tweetworks-python-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
