<?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>Scott Robbin &#187; Programming</title>
	<atom:link href="http://srobbin.com/blog/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://srobbin.com/blog</link>
	<description>A variety of articles, projects and by web developer, Scott Robbin.</description>
	<lastBuildDate>Wed, 07 Dec 2011 17:05:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Sharing aliases and other bash configurations using Dropbox</title>
		<link>http://srobbin.com/blog/sharing-aliases-and-other-bash-configurations-using-dropbox/</link>
		<comments>http://srobbin.com/blog/sharing-aliases-and-other-bash-configurations-using-dropbox/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 19:59:06 +0000</pubDate>
		<dc:creator>Scott Robbin</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://srobbin.com/blog/?p=915</guid>
		<description><![CDATA[I have two computers: one at work and one at home. Dropbox has been a fantastic way for me to effortlessly share files between the two. I often setup aliases, and other bash configurations, in my .bash_profile to make life easier. Though, sometimes I&#8217;m not so careful; I&#8217;ll set something up on one computer, but [...]]]></description>
			<content:encoded><![CDATA[<p>I have two computers: one at work and one at home. Dropbox has been a fantastic way for me to effortlessly share files between the two.</p>
<p>I often setup aliases, and other bash configurations, in my <code>.bash_profile</code> to make life easier. Though, sometimes I&#8217;m not so careful; I&#8217;ll set something up on one computer, but forget to do it on the other.</p>
<p>Sharing configurations across two computers is easy thanks to Dropbox. Here&#8217;s how:</p>
<ol>
<li>Create a file in your Dropbox. I called mine <code>.bash_profile_shared</code>, and stored it in the root Dropbox folder, for consistency&#8217;s sake, but you can call whatever you like, and store it anywhere on Dropbox.</li>
<li>Edit your local <code>.bash_profile</code> file, and add this as the first line of your script: <code>source ~/Dropbox/.bash_profile_shared</code>, or whatever you named your shared Dropbox file.</li>
<li>Reload your Terminal, or <code>source ~/.bash_profile</code></li>
</ol>
<p>And, that&#8217;s it. Anytime you&#8217;d like to share a config, just add it the <code>.bash_profile_shared</code> file in Dropbox (and wait for it to sync).</p>
]]></content:encoded>
			<wfw:commentRss>http://srobbin.com/blog/sharing-aliases-and-other-bash-configurations-using-dropbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Django 1.1 on the Google App Engine SDK</title>
		<link>http://srobbin.com/blog/django-1-1-on-the-google-app-engine-sdk/</link>
		<comments>http://srobbin.com/blog/django-1-1-on-the-google-app-engine-sdk/#comments</comments>
		<pubDate>Mon, 06 Sep 2010 16:36:59 +0000</pubDate>
		<dc:creator>Scott Robbin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[app engine]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://srobbin.com/blog/?p=848</guid>
		<description><![CDATA[If you&#8217;ve used Django 1.1 App Engine, or are trying to, then you&#8217;ve probably read the instructions on how replace Django 0.96 with 1.1. That all fine an dandy in a production environment, but what about local development? Perhaps you&#8217;ve seen the following error message? UnacceptableVersionError: django 1.1 was requested, but 1.2.1.final.0 is already in [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve used Django 1.1 App Engine, or are trying to, then you&#8217;ve probably read the i<a title="Django 1.1 on Google App Engine" href="http://code.google.com/appengine/docs/python/tools/libraries.html#Django">nstructions on how replace Django 0.96 with 1.1</a>. That all fine an dandy in a production environment, but what about local development? Perhaps you&#8217;ve seen the following error message?</p>
<blockquote><p>
<code>UnacceptableVersionError: django 1.1 was requested, but 1.2.1.final.0 is already in use<br />
</code>
</p></blockquote>
<p></p>
<p>Me too. After mucking around a bit, I&#8217;ve figured out an acceptable workaround:</p>
<p>First, <a href="http://www.djangoproject.com/download/1.1.1/tarball/">download Django 1.1.1</a> and place it somewhere on your hard drive (I put mine on <a href="http://www.dropbox.com/referrals/NTUxNTA0Njk">Dropbox</a>, so that I could use this fix across multiple computers).</p>
<p>Then, modify your <code>main.py</code> from this:</p>
<blockquote>
<pre>
import os, sys,logging
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

from google.appengine.dist import use_library
use_library('django', '1.1')
</pre>
</blockquote>
<p></p>
<p>To look like this:</p>
<blockquote>
<pre>
import os, sys,logging
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

if os.environ.get('SERVER_SOFTWARE','').startswith('Devel'):
    sys.path.insert(0, "/your/local/path/to/Django-1.1.1/")

from google.appengine.dist import use_library
use_library('django', '1.1')
</pre>
</blockquote>
<p></p>
<p>Essentially, you&#8217;re telling App Engine that, when it&#8217;s in the Development environment (running on your local computer), it should prepend Django 1.1.1 to the system path. Then, a few lines down, when the App Engine SDK looks for Django, it will see that version first.</p>
]]></content:encoded>
			<wfw:commentRss>http://srobbin.com/blog/django-1-1-on-the-google-app-engine-sdk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy Birthday, @timer!</title>
		<link>http://srobbin.com/blog/happy-birthday-timer/</link>
		<comments>http://srobbin.com/blog/happy-birthday-timer/#comments</comments>
		<pubDate>Sat, 03 Jul 2010 18:17:07 +0000</pubDate>
		<dc:creator>Scott Robbin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[timer]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://srobbin.com/blog/?p=767</guid>
		<description><![CDATA[Back in the spring of 2007, I was introduced to Twitter and soon thereafter their API. At the time, I had little programming experience with third-party APIs, but was immediately taken by the simplicity and robustness of what Alex was building, and tutored by the growing community of Twitter developers. For my first project, I [...]]]></description>
			<content:encoded><![CDATA[<p>Back in the spring of 2007, I was introduced to Twitter and soon thereafter their <a href="http://dev.twitter.com/doc" title="Twitter API">API</a>. At the time, I had little programming experience with third-party APIs, but was immediately taken by the simplicity and robustness of what <a href="http://al3x.net" title="Alex Payne">Alex</a> was building, and tutored by the growing community of Twitter developers.</p>
<p>For my first project, I decided to play with Twitter&#8217;s direct message feature. The idea was simple: send me a direct message that included a time (number of minutes) and a message, and I would reply with a direct message when the specified time had expired. It was a sort of alarm clock&#8230;an egg timer&#8230;a timer. In May 2007, <a href="http://twitter.com/timer" title="Twitter Timer">@timer</a> was born.</p>
<p>Three years later, @timer is still actively used, with over 16,000 followers (you have to follow in order to direct message). Happy belated birthday, lil&#8217; buddy.</p>
<p>On a related note, I&#8217;ve updated @timer to use OAuth (as of August 16th, <a href="http://www.countdowntooauth.com/">Twitter will be shutting of basic authentication</a>). I suppose this is a the real reason for the post, but the birthday wishes seemed overdue and appropriate. So, enjoy the new and improved @timer&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://srobbin.com/blog/happy-birthday-timer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobile Browsers: More Than Just WebKit</title>
		<link>http://srobbin.com/blog/mobile-browsers-more-than-just-webkit/</link>
		<comments>http://srobbin.com/blog/mobile-browsers-more-than-just-webkit/#comments</comments>
		<pubDate>Tue, 04 May 2010 15:27:20 +0000</pubDate>
		<dc:creator>Scott Robbin</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://srobbin.com/blog/?p=726</guid>
		<description><![CDATA[In the past couple of years, when we think of developing for the mobile web, we think of Mobile WebKit. And rightfully so. iPhone, Android, webOS and recently BlackBerry have all thrown their muscle behind the increasingly ubiquitous browser. But, what other kinds of mobile devices are people using to access the web? A lot. [...]]]></description>
			<content:encoded><![CDATA[<p>In the past couple of years, when we think of developing for the mobile web, we think of Mobile WebKit. And rightfully so. iPhone, Android, webOS and recently BlackBerry have all <a href="http://alex.dojotoolkit.org/2009/01/webkit-mobile/">thrown their muscle behind the increasingly ubiquitous browser</a>. But, what other kinds of mobile devices are people using to access the web?</p>
<p>A lot.</p>
<p>In 2007, <a href="http://twitter.com/jskin">Jeff Skinner</a> and I launched the now-defunct <a href="http://tappity.com">Tappity</a>, a site which helped people discover mobile-friendly websites. The other day, I was perusing the Tappity innards and came across something interesting: a database table filled with unique User Agent strings from devices that had visited our site. For those not familiar with User-Agent Strings, they are a sort of <a href="http://whatsmyuseragent.com/WhatsAUserAgent.asp">fingerprint which helps identify a browser</a>, so the database table represents a large sample of mobile browsers which have accessed Tappity.</p>
<p>The list doesn&#8217;t represent every device, nor are the strings exclusively mobile, but it does give you an idea of the diversity that exists in the mobile universe. For example, here are some top manufacturers alongside the number of browser applications/version. Note: Minor version numbers are counted as unique:</p>
<p>Motorola: 357<br />
SonyEricsson: 351<br />
Samsung: 341<br />
Nokia: 300<br />
LG: 169<br />
BlackBerry: 125<br />
HTC: 45</p>
<p>The <a href="http://spreadsheets.google.com/pub?key=tVqBRuc25m5Affx4D4zwbew&amp;output=html">full list of User-Agents</a> can be viewed on Google Docs. Note: There are two worksheets: one with the raw strings from the database table, and another containing my attempt to identify unique application/version numbers.</p>
]]></content:encoded>
			<wfw:commentRss>http://srobbin.com/blog/mobile-browsers-more-than-just-webkit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Should You Develop an App or Mobile Website?</title>
		<link>http://srobbin.com/blog/should-you-develop-an-app-or-mobile-website/</link>
		<comments>http://srobbin.com/blog/should-you-develop-an-app-or-mobile-website/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 15:21:08 +0000</pubDate>
		<dc:creator>Scott Robbin</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[notanapp]]></category>

		<guid isPermaLink="false">http://srobbin.com/blog/?p=708</guid>
		<description><![CDATA[Before opening XCode or hiring a developer to build an iPhone/Android app, there are a few questions that you should ask yourself: Will my product require use of the camera, microphone or other device-specific hardware? Will it access the address book, media library or common user data? Will I charge for my product, using an [...]]]></description>
			<content:encoded><![CDATA[<p>Before opening XCode or hiring a developer to build an iPhone/Android app, there are a few questions that you should ask yourself:</p>
<ol>
<li>Will my product require use of the camera, microphone or other device-specific hardware?</li>
<li>Will it access the address book, media library or common user data?</li>
<li>Will I charge for my product, using an app store as the payment processor?</li>
<li>Will I send push notifications or need background processes?</li>
</ol>
<p>If the answer to any of the above is &#8216;yes,&#8217; then an iPhone/Android app may be right for you. If the answer is &#8216;no,&#8217; you may want to consider building an HTML5 mobile website instead.</p>
<p>Mobile websites:</p>
<ul>
<li>Can access <a title="Geolocation in the Browser" href="http://blog.mozilla.com/webdev/2009/05/01/geolocation-in-the-browser/">geolocation</a> info.</li>
<li>Provide offline <a title="HTML5 Offline App Example" href="http://adamblog.heroku.com/past/2010/2/25/an_html5_offline_app_example/">caching</a> and <a title="W3C Offline Web Applications" href="http://www.w3.org/TR/offline-webapps/">storage</a>.</li>
<li>Handle <a href="http://backtothecode.blogspot.com/2009/10/javascript-touch-and-gesture-events.html">touch and gesture events</a>.</li>
<li>Are easily deployed (new versions and bug fixes)</li>
<li>Are cross-platform (Android, iPhone, webOS, etc.)</li>
</ul>
<p>Comments and discussion: <a title="Twitter search results for '#NotAnApp'" href="http://twitter.com/search?q=%23notanapp">#NotAnApp</a></p>
]]></content:encoded>
			<wfw:commentRss>http://srobbin.com/blog/should-you-develop-an-app-or-mobile-website/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery PageSlide v1.1 Released</title>
		<link>http://srobbin.com/blog/jquery-pageslide-v11-released/</link>
		<comments>http://srobbin.com/blog/jquery-pageslide-v11-released/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 17:16:36 +0000</pubDate>
		<dc:creator>Scott Robbin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://srobbin.com/blog/?p=280</guid>
		<description><![CDATA[A huge thank you to Derek Perez, who has taken over development of the jQuery PageSlide plug-in. He&#8217;s done a major overhaul and brought it up to version 1.1 with the following new features: Choose slide direction (left or right) Custom width slides Modal slides unobtrusive Mutiple slide definitions on the same page Fully supported [...]]]></description>
			<content:encoded><![CDATA[<p>A huge thank you to <a title="Derek Perez" href="http://derekperez.com/blog/">Derek Perez</a>, who has taken over development of the jQuery PageSlide plug-in. He&#8217;s done a major overhaul and brought it up to <a title="jQuery PageSlide v1.1" href="http://github.com/srobbin/jquery-pageslide/tree/release-1.1">version 1.1</a> with the following new features:</p>
<ul>
<li>Choose slide direction (left or right)</li>
<li>Custom width slides</li>
<li>Modal slides</li>
<li>unobtrusive</li>
<li>Mutiple slide definitions on the same page</li>
<li>Fully supported with IE7+, FireFox 2+, Safari 2+</li>
<li>Minified version included!</li>
</ul>
<p><a href="http://github.com/srobbin/jquery-pageslide/tree/release-1.1">Link</a></p>
]]></content:encoded>
			<wfw:commentRss>http://srobbin.com/blog/jquery-pageslide-v11-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GitHub Firewall</title>
		<link>http://srobbin.com/blog/github-firewall/</link>
		<comments>http://srobbin.com/blog/github-firewall/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 21:14:27 +0000</pubDate>
		<dc:creator>Scott Robbin</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://srobbin.com/blog/?p=278</guid>
		<description><![CDATA[Very cool. GitHub now offering private installs of their software within a company&#8217;s own network. If I had a business that was large enough to warrant this type of setup, I&#8217;d be all over it. But, alas, my new projects are weenie small, so I&#8217;ll stick to the regular ol&#8217; GitHub product in the foreseeable [...]]]></description>
			<content:encoded><![CDATA[<p>Very cool. <a title="GitHub" href="http://github.com">GitHub</a> now offering private installs of their software within a company&#8217;s own network. If I had a business that was large enough to warrant this type of setup, I&#8217;d be all over it. But, alas, my new projects are weenie small, so I&#8217;ll stick to the regular ol&#8217; GitHub product in the foreseeable future.</p>
<p><a href="http://fi.github.com/">Link</a></p>
]]></content:encoded>
			<wfw:commentRss>http://srobbin.com/blog/github-firewall/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TinyFinder: A Jetpack Widget</title>
		<link>http://srobbin.com/blog/tinyfinder-a-jetpack-widget/</link>
		<comments>http://srobbin.com/blog/tinyfinder-a-jetpack-widget/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 18:20:47 +0000</pubDate>
		<dc:creator>Scott Robbin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://srobbin.com/blog/?p=274</guid>
		<description><![CDATA[This weekend, I started to play around with Jetpack from Mozilla Labs. If you haven&#8217;t already heard of Jetpack, it&#8217;s a Labs experiment that looks at making the creation of web browser extensions easier. As someone who&#8217;s previously tried to make a Firefox extension, I can say wholeheartedly that this was a much, much, much [...]]]></description>
			<content:encoded><![CDATA[<p>This weekend, I started to play around with <a title="Mozilla Labs' Jetpack" href="https://jetpack.mozillalabs.com/">Jetpack from Mozilla Labs</a>. If you haven&#8217;t already heard of Jetpack, it&#8217;s a Labs experiment that looks at making the creation of web browser extensions easier. As someone who&#8217;s previously tried to make a Firefox extension, I can say wholeheartedly that this was a much, much, much more pleasant experience.</p>
<p>The widget that I created–<a title="TinyFinder for Mozilla Labs' Jetpack" href="http://srobbin.com/projects/tinyfinder/">TinyFinder</a>–looks for rev=canonical links in a webpage, and displays them in the statusbar of the browser window. Rev=canonical links are meta tags that are used when a website wants to suggest a preferred tiny url to use. For example, the Flickr page <a href="(http://www.flickr.com/photos/srobbin/3533142101/">(http://www.flickr.com/photos/srobbin/3533142101/</a>) can also be accessed by Flickr&#8217;s own tiny url (<a href="http://flic.kr/p/6odh48">http://flic.kr/p/6odh48</a>). Of course, you could always use one of many url shortening services, but Flickr&#8217;s custom URL suggests what you&#8217;ll see on the other side of the redirect: a photo/movie. Several services are starting to employ their own custom tiny urls:  Dopplr, Threadless, Songza, and many more.</p>
<p><img class="alignnone size-full wp-image-263" title="TinyFinder for Jetpack, Screenshot" src="http://srobbin.com/wp-content/uploads/2009/06/picture-1.png" alt="TinyFinder for Jetpack, Screenshot" width="412" height="105" /></p>
<p>If the web page you are looking at does not provide its own tiny, custom URL, you can always click on the statusbar widget; one will be created for you and automagically copied to your clipboard.</p>
<p><a href="http://srobbin.com/projects/tinyfinder/">Link</a></p>
]]></content:encoded>
			<wfw:commentRss>http://srobbin.com/blog/tinyfinder-a-jetpack-widget/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Performance differences between @import and link</title>
		<link>http://srobbin.com/blog/performance-difference-between-import-and-link/</link>
		<comments>http://srobbin.com/blog/performance-difference-between-import-and-link/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 18:47:31 +0000</pubDate>
		<dc:creator>Scott Robbin</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://srobbin.com/blog/?p=172</guid>
		<description><![CDATA[Steve Souders is one of the brightest people I know. And, on top of that, he has an uncanny ability to convey complex topics in an easy-to-understand manner. If you haven&#8217;t already ready his book, High Performance Web Sites, I suggest you do so. Here&#8217;s his latest article about the performance impact of using @import [...]]]></description>
			<content:encoded><![CDATA[<p>Steve Souders is one of the brightest people I know. And, on top of that, he has an <em>uncanny</em> ability to convey complex topics in an easy-to-understand manner. If you haven&#8217;t already ready his book, <a title="Steve Souders: High Performance Web Sites" href="http://www.amazon.com/gp/product/0596529309?ie=UTF8&amp;tag=srobbincom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0596529309">High Performance Web Sites</a>, I suggest you do so. Here&#8217;s his latest article about the performance impact of using @import or &lt;link&gt; when including stylesheets.</p>
<p><a href="http://www.stevesouders.com/blog/2009/04/09/dont-use-import/">Link</a></p>
]]></content:encoded>
			<wfw:commentRss>http://srobbin.com/blog/performance-difference-between-import-and-link/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>NodeBox</title>
		<link>http://srobbin.com/blog/nodebox/</link>
		<comments>http://srobbin.com/blog/nodebox/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 04:33:52 +0000</pubDate>
		<dc:creator>Scott Robbin</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://srobbin.com/blog/?p=168</guid>
		<description><![CDATA[Lately, I&#8217;ve been learning Python and applying it to the redesign of some older projects. A few weeks ago, I stumbled across NodeBox: &#8220;a Mac OS X application that lets you create 2D visuals (static, animated or interactive) using Python programming code and export them as a PDF or a QuickTime movie&#8221; It&#8217;s been a [...]]]></description>
			<content:encoded><![CDATA[<p>Lately, I&#8217;ve been learning Python and applying it to <a title="Updated Timer to Python" href="http://twitter.com/srobbin/statuses/1314247068">the redesign of some older projects</a>. A few weeks ago, I stumbled across NodeBox: &#8220;<span class="big_text">a Mac OS X application that lets you create 2D visuals (static, animated or interactive) using Python programming code and export them as a PDF or a QuickTime movie&#8221; </span>It&#8217;s been a fun app to play with, work on my Py-skills and create some interesting patterns.</p>
<p><a href="http://nodebox.net/code/index.php/Home">Link</a></p>
]]></content:encoded>
			<wfw:commentRss>http://srobbin.com/blog/nodebox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

