<?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/" version="2.0">

<channel>
	<title>Jetfar - GeoDomain Development</title>
	
	<link>http://jetfar.com</link>
	<description>An Unconventional Australian Startup</description>
	<lastBuildDate>Tue, 22 Dec 2009 23:15:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Jetfar" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="jetfar" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Delicious Bookmarks – Chrome Extension</title>
		<link>http://jetfar.com/delicious-bookmarks-chrome-extension/</link>
		<comments>http://jetfar.com/delicious-bookmarks-chrome-extension/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 13:53:30 +0000</pubDate>
		<dc:creator>Rich Atkinson</dc:creator>
				<category><![CDATA[Web Tech]]></category>

		<guid isPermaLink="false">http://jetfar.com/?p=293</guid>
		<description><![CDATA[
Simply Delicious is a simple, rock-solid extension for Google Chrome which provides a neat bookmarking button.
Install it here&#8230;
Simply Delicious for Google Chrome
Background
I decided to write this extension after I tried the alternatives and realised that they mostly sucked. The objective here is to provide a neat &#8220;bookmark in delicious&#8221; button; that&#8217;s it.
I eventually plan to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jetfar.com/wp/wp-content/uploads/2009/12/delicious.png"><img src="http://jetfar.com/wp/wp-content/uploads/2009/12/delicious.png" alt="delicious" title="delicious" width="291" height="161" class="alignright size-full wp-image-299" /></a></p>
<p><strong>Simply Delicious</strong> is a simple, rock-solid extension for Google Chrome which provides a neat bookmarking button.</p>
<blockquote><p><strong>Install it here&#8230;<br />
<a href="http://jetfar.com/chrome/delicious/simply-delicious.crx">Simply Delicious for Google Chrome</a></strong></p></blockquote>
<p><strong>Background</strong></p>
<p>I decided to write this extension after I tried the alternatives and realised that they mostly sucked. The objective here is to provide a neat &#8220;bookmark in delicious&#8221; button; that&#8217;s it.</p>
<p>I eventually plan to include a feature to enable local searching of delicious bookmarks, possibly by downloading them into the browsers bookmark store. Rest assured that this will only be done if it can be done <em>sans-bloat</em>.</p>
<p><strong>Note for Windows users</strong></p>
<p>Windows users currently need the Beta version of Chrome to fully use extensions; <a href="http://www.google.com/intl/en/landing/chrome/beta/">available here</a>.</p>
<p><strong>Note for OSX users</strong></p>
<p>Mac users have two options for using Chrome Extensions right now:</p>
<p>1. <a href="http://www.google.com/chrome/eula.html?extra=devchannel">Developer edition of Chrome (mac)</a><br />
It&#8217;s kind of like a pre-beta. But you want to be on the bleeding edge right? <a href="http://www.google.com/chrome/eula.html?extra=devchannel">Available here</a>.</p>
<p>2. <a href="http://radialideas.com/chromium-updater/">Chromium (open source)</a><br />
You can also use Chrome extensions on OSX right now with Chromium. Chromium is basically the open source foundation of Chrome, it&#8217;s almost identical but slightly ahead in features.</p>
<p>It&#8217;s not as scary as it sounds, just use <a href="http://radialideas.com/chromium-updater/">this Automator app</a> to get and install the latest build for you. If it doesn&#8217;t work out it&#8217;s easy to reinstall the release version.</p>
<p>Please let me know what you think!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Jetfar?a=SFC5PYLVpfA:vyUsyjGsW8g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Jetfar?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Jetfar?a=SFC5PYLVpfA:vyUsyjGsW8g:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Jetfar?i=SFC5PYLVpfA:vyUsyjGsW8g:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Jetfar?a=SFC5PYLVpfA:vyUsyjGsW8g:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Jetfar?i=SFC5PYLVpfA:vyUsyjGsW8g:gIN9vFwOqvQ" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://jetfar.com/delicious-bookmarks-chrome-extension/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Installing Cassandra and Thrift on Snow Leopard – A Quick Start Guide</title>
		<link>http://jetfar.com/installing-cassandra-and-thrift-on-snow-leopard-a-quick-start-guide/</link>
		<comments>http://jetfar.com/installing-cassandra-and-thrift-on-snow-leopard-a-quick-start-guide/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 02:36:53 +0000</pubDate>
		<dc:creator>Rich Atkinson</dc:creator>
				<category><![CDATA[Web Tech]]></category>

		<guid isPermaLink="false">http://jetfar.com/?p=263</guid>
		<description><![CDATA[(Updated: 2nd November for Cassandra 0.4.1)
I couldn&#8217;t find much in the way of an OS X install guide for Cassandra and (particularly) Thrift, so here&#8217;s a brief summary of the steps I took to get Cassandra up and running on Snow Leopard.
Requirements: xcode (provides java, ant and g++, autotools etc for compiling thrift) &#038; svn.
I [...]]]></description>
			<content:encoded><![CDATA[<p><strong>(Updated: 2nd November for Cassandra 0.4.1)</strong></p>
<p>I couldn&#8217;t find much in the way of an OS X install guide for Cassandra and (particularly) Thrift, so here&#8217;s a brief summary of the steps I took to get Cassandra up and running on Snow Leopard.</p>
<p>Requirements: xcode (provides java, ant and g++, autotools etc for compiling thrift) &#038; svn.</p>
<p>I used macports to get &#8220;boost, &#8220;pkgconfig&#8221; and &#8220;libevent&#8221;, all used by for Thrift.</p>
<p><strong>Part 1: JAVA_HOME</strong></p>
<p>OSX does not set JAVA_HOME for you, instead it must be done manually.</p>
<p>A simple way is to add the following line to ~/.bashrc</p>
<blockquote><p>export JAVA_HOME=$(/usr/libexec/java_home)</p></blockquote>
<p>After setting JAVA_HOME, you will need to exit and reopen terminal before the change will take effect.</p>
<p><strong>Part 2: Installing Cassandra</strong></p>
<p><code># I installed Cassandra into /opt and run it as me.<br />
mkdir -p /opt/cassandra<br />
chown -R {you} /opt/cassandra</p>
<p># Need to create the log directory<br />
mkdir -p /var/log/cassandra<br />
chown -R {you} /var/log/cassandra</p>
<p># Also Cassandra created a directory instead of a file for system.log, so...<br />
touch /var/log/cassandra/system.log</p>
<p># By default Cassandra 0.4.1 uses /var/lib for data, so...<br />
mkdir -p /var/lib/cassandra<br />
chown -R {you} /var/lib/cassandra</p>
<p># now lets get the source<br />
svn co https://svn.apache.org/repos/asf/incubator/cassandra/tags/cassandra-0.4.1 /opt/cassandra/cassandra-0.4.1</p>
<p># If all is well you should be able to build.<br />
cd /opt/cassandra/cassandra-0.4.1<br />
ant</p>
<p># If that works, you should be able to run cassandra<br />
bin/cassandra -f</p>
<p></code></p>
<p>All going well, you should be able to, in a new terminal tab, run through the CLI tests <a href="https://svn.apache.org/repos/asf/incubator/cassandra/tags/cassandra-0.41/README.txt">here</a>.</p>
<p><strong>Part 3: Installing Thrift</strong></p>
<p>First you&#8217;ll need boost, pkgconfig and libevent. So (using <a href="http://www.macports.org/">macports</a>): </p>
<p><code>sudo port install boost<br />
sudo port install libevent<br />
sudo port install pkgconfig</code></p>
<p>Now, with a lack of tags and branches in SVN, I just grabbed trunk (please could someone let me know if this unwise).</p>
<p><code> svn co http://svn.apache.org/repos/asf/incubator/thrift/trunk/ /opt/cassandra/thrift</code></p>
<p>SVN revision at time of writing was 817923</p>
<p>Next, we build it&#8230;</p>
<p><em>(Note the /opt/local references, that&#8217;s where macports puts it&#8217;s stuff by default)</em></p>
<p><code>cd /opt/cassandra/thrift<br />
./bootstrap.sh<br />
./configure --with-boost=/opt/local --with-libevent=/opt/local --prefix=/opt/local</p>
<p># If you get the error:<br />
# ./configure: line 16440: syntax error near unexpected token `MONO,'<br />
# ./configure: line 16440: `  PKG_CHECK_MODULES(MONO, mono >= 2.0.0, net_3_5=yes, net_3_5=no)'</p>
<p># It's <a href="http://wiki.apache.org/thrift/FAQ">documented</a>, to fix it: (assuming you installed pkgtools from macports)<br />
ln -s  /opt/local/share/aclocal/pkg.m4 /opt/cassandra/thrift/aclocal/pkg.m4</p>
<p># once again:<br />
./bootstrap.sh<br />
./configure --with-boost=/opt/local --with-libevent=/opt/local --prefix=/opt/local<br />
sudo make install<br />
</code></p>
<p><strong>Language bindings</strong></p>
<p>The <em>make install</em> should have installed libraries for ruby, perl, python etc. </p>
<p>EDIT: Python bindings were installed into /usr/lib/python2.6/site-packages. I had to move them to my (default apple provided python 2.6) site-packages.</p>
<p>If you want to install them into a virtualenv you will find the setup.py in /opt/cassandra/thrift/lib/py</p>
<p><strong>Part 4: Generate &#8220;cassandra&#8221; from thrift.</strong></p>
<p>Navigate to /opt/cassandra/cassandra-0.4.1/interface</p>
<p>and then&#8230;<br />
<code>thrift --gen py:new_style cassandra.thrift</code></p>
<p>This generates the cassandra python package which you can copy to your project.</p>
<p>If you have any suggestions for improvement here, please let me know.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Jetfar?a=lTi55Fjhz4g:BqqEBCs9kC4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Jetfar?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Jetfar?a=lTi55Fjhz4g:BqqEBCs9kC4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Jetfar?i=lTi55Fjhz4g:BqqEBCs9kC4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Jetfar?a=lTi55Fjhz4g:BqqEBCs9kC4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Jetfar?i=lTi55Fjhz4g:BqqEBCs9kC4:gIN9vFwOqvQ" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://jetfar.com/installing-cassandra-and-thrift-on-snow-leopard-a-quick-start-guide/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Sydney Dust Storm</title>
		<link>http://jetfar.com/sydney-dust-storm/</link>
		<comments>http://jetfar.com/sydney-dust-storm/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 22:31:48 +0000</pubDate>
		<dc:creator>Rich Atkinson</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://jetfar.com/?p=254</guid>
		<description><![CDATA[Today Sydney is enveloped in a quite spectacular dust storm. Everything is an eerie orange, it really feels post-apocalyptic or like the scene from a martian wasteland.
Here&#8217;s a photo that Debi took through our apartment window at about 6am this morning:
Sydney Dust Storm - September 23rd 2009
According to the weather bureau, it&#8217;s likely to stay [...]]]></description>
			<content:encoded><![CDATA[<p>Today Sydney is enveloped in a quite spectacular dust storm. Everything is an eerie orange, it really feels post-apocalyptic or like the scene from a martian wasteland.</p>
<p>Here&#8217;s a photo that Debi took through our apartment window at about 6am this morning:</p>
<div id="attachment_255" class="wp-caption alignnone" style="width: 624px"><a href="http://jetfar.com/wp/wp-content/uploads/2009/09/Sydney-23rd-September-2009.jpg"><img src="http://jetfar.com/wp/wp-content/uploads/2009/09/Sydney-23rd-September-2009.jpg" alt="Dust Storm" title="Sydney-23rd-September-2009" width="614" height="345" class="size-full wp-image-255" /></a><p class="wp-caption-text">Sydney Dust Storm - September 23rd 2009</p></div>
<p>According to the weather bureau, it&#8217;s likely to stay around all day.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Jetfar?a=KFvija87vng:RPDj3oTSS-Q:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Jetfar?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Jetfar?a=KFvija87vng:RPDj3oTSS-Q:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Jetfar?i=KFvija87vng:RPDj3oTSS-Q:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Jetfar?a=KFvija87vng:RPDj3oTSS-Q:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Jetfar?i=KFvija87vng:RPDj3oTSS-Q:gIN9vFwOqvQ" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://jetfar.com/sydney-dust-storm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cassandra DB</title>
		<link>http://jetfar.com/cassandra-db/</link>
		<comments>http://jetfar.com/cassandra-db/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 12:47:30 +0000</pubDate>
		<dc:creator>Rich Atkinson</dc:creator>
				<category><![CDATA[Web Tech]]></category>

		<guid isPermaLink="false">http://jetfar.com/?p=246</guid>
		<description><![CDATA[Cassandra is a highly scalable, eventually consistent, distributed, structured key-value store. (apache.org)

Originally developed by facebook, it is now an Apache project and at present has incubator status.
From my point of view, Cassandra stands out from the crowd of non-relational databases for three reasons:
1. Reference Sites: Apart from facebook, Cassandra recently replaced MySQL for parts of [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Cassandra is a highly scalable, eventually consistent, distributed, structured key-value store. (<a href="http://incubator.apache.org/cassandra/">apache.org</a>)
</p></blockquote>
<p>Originally developed by facebook, it is now an Apache project and at present has incubator status.</p>
<p>From my point of view, Cassandra stands out from the crowd of non-relational databases for three reasons:</p>
<p><strong>1. Reference Sites</strong>: Apart from facebook, Cassandra recently replaced MySQL for <a href="http://blog.digg.com/?p=966">parts of Dig</a>. Also Rackspace are doing something secret with it; although I don&#8217;t know what it is, my guess would be something along the lines of Amazon&#8217;s SimpleDB.</p>
<p><strong>2. True peer clustering</strong>: Cassandra does not require a central master. A key feature of Cassandra is you can write to any node in the cluster, at any time. Writes are never blocked. The trade off for this is you get consistency <em><a href="http://www.allthingsdistributed.com/2008/12/eventually_consistent.html">eventually</a></em>. So transactions aren&#8217;t strictly ACIDic, but depending on what you are doing, that might not matter at all.</p>
<p><strong>3. Column Querying</strong>: <a href="http://labs.google.com/papers/bigtable.html">BigTable</a> really popularised (and proved) the concept of the column database for large scale applications. Cassandra really is similar to BigTable from this perspective, but introduces the <a href="http://arin.me/code/wtf-is-a-supercolumn-cassandra-data-model">SuperColumn</a>.</p>
<p>In addition to those things, a couple of other nice features of Cassandra are:</p>
<p>1. It&#8217;s JVM based, which makes it nicely portable. It really was a 1 minute job to get it up and running on Snow Leopard.</p>
<p>2. Cross platform API, via a remote <a href="http://wiki.apache.org/cassandra/ThriftInterface">Thrift</a> interface.</p>
<p>My intention is to use Cassandra in our current project, where I need a horizontally scalable data store with geographically separate cluster nodes. Fortunately eventual consistency suits this project very well indeed.</p>
<p>Addendum: Here is the best <a href="http://blog.evanweaver.com/articles/2009/07/06/up-and-running-with-cassandra/">getting started guide</a> I have found so far.</p>
<p>Addendum 2: <a href="http://www.eflorenzano.com/blog/post/my-thoughts-nosql/">Eric Flo</a> also sums up Cassandra nicely, although in a slightly different context.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Jetfar?a=mSTH1T8jHeE:rm3yHvuB3Aw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Jetfar?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Jetfar?a=mSTH1T8jHeE:rm3yHvuB3Aw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Jetfar?i=mSTH1T8jHeE:rm3yHvuB3Aw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Jetfar?a=mSTH1T8jHeE:rm3yHvuB3Aw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Jetfar?i=mSTH1T8jHeE:rm3yHvuB3Aw:gIN9vFwOqvQ" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://jetfar.com/cassandra-db/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Snakes on the Web, Jacon Kaplan-Moss</title>
		<link>http://jetfar.com/snakes-on-the-web-jacon-kaplan-moss/</link>
		<comments>http://jetfar.com/snakes-on-the-web-jacon-kaplan-moss/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 14:41:59 +0000</pubDate>
		<dc:creator>Rich Atkinson</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://jetfar.com/?p=238</guid>
		<description><![CDATA[I really enjoyed reading this transcript of Jacob&#8217;s 2009 PyCon talks. If you&#8217;re at all interested in Python there&#8217;s lots of neat insights here:
We need to be thinking about scale from day one. This means being incredibly skeptical of our own work, and continually asking ourselves where it’s going to fail. We need plan for [...]]]></description>
			<content:encoded><![CDATA[<p>I really enjoyed reading this transcript of Jacob&#8217;s 2009 PyCon talks. If you&#8217;re at all interested in Python there&#8217;s lots of neat insights here:</p>
<blockquote><p>We need to be thinking about scale from day one. This means being incredibly skeptical of our own work, and continually asking ourselves where it’s going to fail. We need plan for the day that our framework will be phased out.</p></blockquote>
<p><a href="http://jacobian.org/writing/snakes-on-the-web/"><br />
http://jacobian.org/writing/snakes-on-the-web/</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Jetfar?a=HNfJCPNgb48:ZpVhRLVWO80:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Jetfar?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Jetfar?a=HNfJCPNgb48:ZpVhRLVWO80:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Jetfar?i=HNfJCPNgb48:ZpVhRLVWO80:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Jetfar?a=HNfJCPNgb48:ZpVhRLVWO80:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Jetfar?i=HNfJCPNgb48:ZpVhRLVWO80:gIN9vFwOqvQ" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://jetfar.com/snakes-on-the-web-jacon-kaplan-moss/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>libjpeg and Python Imaging (PIL) on Snow Leopard</title>
		<link>http://jetfar.com/libjpeg-and-python-imaging-pil-on-snow-leopard/</link>
		<comments>http://jetfar.com/libjpeg-and-python-imaging-pil-on-snow-leopard/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 12:05:19 +0000</pubDate>
		<dc:creator>Rich Atkinson</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://jetfar.com/?p=234</guid>
		<description><![CDATA[Sometimes OSX could learn a trick from Linux; a great example is package management.
Mac ports isn&#8217;t bad but it&#8217;s not a patch on archlinux&#8217;s AUR for simplicity, and Ubuntu is onto a really good thing with APT.
Installing Python Imaging (PIL) with Jpeg support on Snow Leopard isn&#8217;t obvious. For anyone struggling with it, here&#8217;s a [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes OSX could learn a trick from Linux; a great example is package management.</p>
<p>Mac ports isn&#8217;t bad but it&#8217;s not a patch on archlinux&#8217;s AUR for simplicity, and Ubuntu is onto a really good thing with APT.</p>
<p>Installing Python Imaging (PIL) with Jpeg support on Snow Leopard isn&#8217;t obvious. For anyone struggling with it, here&#8217;s a solution:</p>
<p>1. Download the source from <a href="http://libjpeg.sourceforge.net/">http://libjpeg.sourceforge.net/</a></p>
<p>2. Extract, configure, make:<br />
<code><br />
tar zxvf jpegsrc.v6b.tar.gz<br />
cd jpeg-6b<br />
cp /usr/share/libtool/config/config.sub .<br />
cp /usr/share/libtool/config/config.guess .<br />
./configure --enable-shared --enable-static<br />
make<br />
</code></p>
<p>3. You may need to create the following directories:<br />
<code><br />
sudo mkdir -p /usr/local/include<br />
sudo mkdir -p /usr/local/lib<br />
sudo mkdir -p /usr/local/man/man1<br />
</code></p>
<p>4. Now you can install it as usual.<br />
<code><br />
sudo make install<br />
</code></p>
<p>5. If you want to freetype support, do that now.</p>
<p>6. Finally, you can install PIL. Be sure to activate any vitualenv now if you don&#8217;t want to install PIL into the system site-packages.<br />
<code><br />
pip install http://effbot.org/downloads/Imaging-1.1.6.tar.gz<br />
</code></p>
<p>At least the native Python 2.6 on Snow Leopard works great, and this wasn&#8217;t nearly as painfull as <a href="http://jetfar.com/cygwin-install-python-imaging-library/">installing PIL on Cygwin</a>!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Jetfar?a=gYLESB03YbY:JRyJC1oftzA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Jetfar?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Jetfar?a=gYLESB03YbY:JRyJC1oftzA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Jetfar?i=gYLESB03YbY:JRyJC1oftzA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Jetfar?a=gYLESB03YbY:JRyJC1oftzA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Jetfar?i=gYLESB03YbY:JRyJC1oftzA:gIN9vFwOqvQ" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://jetfar.com/libjpeg-and-python-imaging-pil-on-snow-leopard/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
		<item>
		<title>Weekend Reading: Sunday 30th August</title>
		<link>http://jetfar.com/weekend-reading-sunday-30th-august/</link>
		<comments>http://jetfar.com/weekend-reading-sunday-30th-august/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 01:23:51 +0000</pubDate>
		<dc:creator>Rich Atkinson</dc:creator>
				<category><![CDATA[Quality Links]]></category>

		<guid isPermaLink="false">http://jetfar.com/?p=223</guid>
		<description><![CDATA[The Real-time Web: A Primer
&#8220;As with other recent waves of innovation (Web 2.0 and cloud computing, for example) there is no single definition of what the term &#8220;real-time Web&#8221; means. As a result, it is used as a catch-all phrase for a number of developments underway. At this point, we can identify that the real-time [...]]]></description>
			<content:encoded><![CDATA[<p><strong><a href="http://www.readwriteweb.com/archives/the_real-time_web_a_primer_part_1.php">The Real-time Web: A Primer</a></strong></p>
<blockquote><p>&#8220;As with other recent waves of innovation (Web 2.0 and cloud computing, for example) there is no single definition of what the term &#8220;real-time Web&#8221; means. As a result, it is used as a catch-all phrase for a number of developments underway. At this point, we can identify that the real-time Web&#8230;&#8221;</p></blockquote>
<p>by Ken Fromm <a href="http://twitter.com/frommww">@frommww</a>.</p>
<p><strong><a href="http://www.coreedges.com/2009/03/enterprise-social-computing-pricing-continuing-the-discussion/">How to price Enterprise Social Computing offerings</a></strong></p>
<p>I didn&#8217;t realise what a complicated topic this is until this week when an investor completely junked our pricing model with one simple graph.  So this weekend I&#8217;ve been researching the subject. There are some highly counterintuitive ideas under discussion, which suggests the possibility that there might be a good opportunity to price using an alternative model to the traditional: per user with volume discount.</p>
<p><strong><a href="http://www.lshift.net/blog/2009/01/20/my-thoughts-on-real-time-full-text-search">LShift: Thoughts on real time full text search</a></strong></p>
<p>This is an interesting discussion on approaches for full text searching on massive data sets such as real time web applications; Twitter is the example.</p>
<p><strong><a href="http://www.metabrew.com/article/anti-rdbms-a-list-of-distributed-key-value-stores/">A list of distributed key value stores</a></strong></p>
<p>It&#8217;s a little more than just a list; here is a fairly good high level overview of current DHT offerings compared form the authors context.</p>
<p><strong>Update:</strong> Here is a <a href="http://developer.yahoo.net/blog/archives/2009/06/nosql_meetup.html">more up to date comparison</a> prepared by Tony Negrin (Yahoo) after the recent noSQL 09 conference. It includes some indication of maturity and momentum.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Jetfar?a=cIaVpI1QLBw:gIfmPK49Deo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Jetfar?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Jetfar?a=cIaVpI1QLBw:gIfmPK49Deo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Jetfar?i=cIaVpI1QLBw:gIfmPK49Deo:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Jetfar?a=cIaVpI1QLBw:gIfmPK49Deo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Jetfar?i=cIaVpI1QLBw:gIfmPK49Deo:gIN9vFwOqvQ" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://jetfar.com/weekend-reading-sunday-30th-august/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Great Links 26th August 2009</title>
		<link>http://jetfar.com/great-links-26th-august-2009/</link>
		<comments>http://jetfar.com/great-links-26th-august-2009/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 23:15:37 +0000</pubDate>
		<dc:creator>Rich Atkinson</dc:creator>
				<category><![CDATA[Quality Links]]></category>

		<guid isPermaLink="false">http://jetfar.com/?p=209</guid>
		<description><![CDATA[Some great reading in the RSS reader this morning; I&#8217;ve referenced a couple here for my benefit and yours:
Firstly an article from Chris Dixon. Chris was a co-founder of Site Advisor and has since become one of the most successful early stage tech company private investors:
SIX STRATEGIES FOR OVERCOMING “CHICKEN AND EGG” PROBLEMS
Products with so-called [...]]]></description>
			<content:encoded><![CDATA[<p>Some great reading in the RSS reader this morning; I&#8217;ve referenced a couple here for my benefit and yours:</p>
<p>Firstly an article from Chris Dixon. Chris was a co-founder of Site Advisor and has since become one of the most successful early stage tech company private investors:</p>
<p><strong>SIX STRATEGIES FOR OVERCOMING “CHICKEN AND EGG” PROBLEMS</strong><br />
Products with so-called networks effects get more valuable when more people use them.  Famous examples are telephones and social networks. “Complementary network effects” refer to situations where a product gets more valuable as more people use the product’s complement(s).<a href="http://www.cdixon.org/?p=334">Read the rest at cdixon.org</a></p>
<p>Secondly, we&#8217;ve had a couple of people provide feedback this week about our website. When we launched it only about a month ago, it was a huge step forward for us. However things are moving very quickly at the moment and already we are finding that we need to give it a little more love. </p>
<p><strong>THERE IS MORE TO OPTIMIZATION THAN SEO</strong><br />
Which is why I really like <a href="http://www.seobook.com/transformers-more-than-meets-the-eyes">this article by Aaron Wall</a> about designing your web site with the users next steps in mind.</p>
<p><strong>CONNECTING AUSSIE BUSINESSES ONLINE</strong><br />
Saving the best for last, our first piece of press! Check it out: <a href="http://anthillonline.com/connecting-aussie-businesses-online-platform-46-founder-tim-ayling/">This article in Anthill</a> about our <a href="http://www.platform46.com/">Social Networking Software</a> has already generated a lot of interest. We owe a big thanks to <a href="http://www.davidbirchall.bircko.com/profile/">Dave Birchill</a> for putting that together for us!</p>
<p>Rich</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Jetfar?a=RCqqH588L6A:vrKKmWesRlM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Jetfar?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Jetfar?a=RCqqH588L6A:vrKKmWesRlM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Jetfar?i=RCqqH588L6A:vrKKmWesRlM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Jetfar?a=RCqqH588L6A:vrKKmWesRlM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Jetfar?i=RCqqH588L6A:vrKKmWesRlM:gIN9vFwOqvQ" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://jetfar.com/great-links-26th-august-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Good Business Relieves Pain</title>
		<link>http://jetfar.com/a-good-business-relieves-pain/</link>
		<comments>http://jetfar.com/a-good-business-relieves-pain/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 23:15:20 +0000</pubDate>
		<dc:creator>Rich Atkinson</dc:creator>
				<category><![CDATA[startups]]></category>

		<guid isPermaLink="false">http://jetfar.com/?p=187</guid>
		<description><![CDATA[My girlfriend has a slightly longer commute than I do.
We catch ferry to the city, but then she has to go on to Surry Hills which is too far to walk. Using public transport it&#8217;s an extra train or bus trip, about 20-30 minutes.
Recently she&#8217;s found an alternative.
Weekly, the lease of a private, secure car [...]]]></description>
			<content:encoded><![CDATA[<p>My girlfriend has a slightly longer commute than I do.</p>
<p>We catch ferry to the city, but then she has to go on to Surry Hills which is too far to walk. Using public transport it&#8217;s an extra train or bus trip, about 20-30 minutes.</p>
<p>Recently she&#8217;s found an alternative.</p>
<p>Weekly, the lease of a private, secure car parking space close to her office costs less than two days of parking in the local public car park. Now she drives to work fairly regularly and we have been quite surprised by the costs involved.</p>
<p>Astonishingly, if you add up the total cost of driving each day (petrol, tolls, parking and maintenance) it&#8217;s slightly cheaper than public transport. If we both go by car we’re ahead by over a hundred dollars a week.</p>
<p>So, not only is it cheaper, but it&#8217;s faster and a heck of a lot more convenient.</p>
<p>It&#8217;s well understood that the best businesses relieve customer pain; Sydney&#8217;s public transport is definitely a source of pain!</p>
<p>Now, I don’t want to advocate driving over public transport, because environmentally that&#8217;s a disaster. But surely that’s what our city leaders are doing?</p>
<p>If one person in a car with a private car space can do better, faster and cheaper than the state government, then surely this is a killer business opportunity?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Jetfar?a=tfzI2CHeNyk:fyPOk0Owpfg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Jetfar?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Jetfar?a=tfzI2CHeNyk:fyPOk0Owpfg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Jetfar?i=tfzI2CHeNyk:fyPOk0Owpfg:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Jetfar?a=tfzI2CHeNyk:fyPOk0Owpfg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Jetfar?i=tfzI2CHeNyk:fyPOk0Owpfg:gIN9vFwOqvQ" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://jetfar.com/a-good-business-relieves-pain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple API Key Generation in Python</title>
		<link>http://jetfar.com/simple-api-key-generation-in-python/</link>
		<comments>http://jetfar.com/simple-api-key-generation-in-python/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 04:03:20 +0000</pubDate>
		<dc:creator>Rich Atkinson</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://jetfar.com/?p=177</guid>
		<description><![CDATA[Summary
I&#8217;m creating a REST API for my current Django project, and I want a good psuedo-random way to generate alpha numeric API keys. Outlined is a simple method which I believe makes pretty good psuedo-random keys.
Discussion
Like Session keys, API keys should be sufficiently unpredictable to be psuedo-random. To be unpredictable, no user variables (or timestamps) [...]]]></description>
			<content:encoded><![CDATA[<h4>Summary</h4>
<p>I&#8217;m creating a REST API for my current Django project, and I want a good psuedo-random way to generate alpha numeric API keys. Outlined is a simple method which I believe makes pretty good psuedo-random keys.</p>
<h4>Discussion</h4>
<p>Like Session keys, API keys should be sufficiently unpredictable to be psuedo-random. To be unpredictable, no user variables (or timestamps) are encoded into the key.</p>
<p>Specifically, the key starts life as a 256bit number generated by the Mersenne Twister Pseudo Random Number Generator (PRNG).</p>
<p><code>>> str(random.getrandbits(256))<br />
>>90035287577760653301955374895950037116738729760252440482985364146171806313429<br />
</code></p>
<p>Mersenne Twister itself is not considered cryptographically secure (it has been demonstrated that observing a sufficient number of iterates allows one to predict all future iterates).</p>
<p>To mitigate this problem, the 256bit number is cryptographically hashed using SHA-256.</p>
<p><code>>> hashlib.sha224( str(random.getrandbits(256)) ).hexdigest()<br />
>> 654c6da8f3b0fd8fe819669daf07996738d21a53c02c731b0aee6373<br />
</code></p>
<p>The result is then Base64 encoded – which results in a string containing only lower and upper case alphabetical characters, and numbers – and also two special characters (usually ‘/’ and ‘+’).</p>
<p>A character-pair (eg: ‘aF’ or ‘zZ’) is then selected randomly (pseudo-randomly) from a pool of character-pairs; these are substituted (salted) for the non-alphanumeric characters left by the Base64 encoding.</p>
<p>The resulting string is a 38 character alphanumeric that is sufficiently large and unpredictable for an API key.</p>
<p><code>>> base64.b64encode(hashlib.sha256( str(random.getrandbits(256)) ).digest(),    random.choice(['rA','aZ','gQ','hH','hG','aR','DD'])).rstrip('==')<br />
>> mwkMqTWFnK0LzJHyfkeBGoS2hr2KG7WhHqSGX0SbDJ4</p>
<p></code></p>
<h4>Conclusion</h4>
<p>Without too much complication or any hardware source of randomness, this seems like a reasonable method for API key generation.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Jetfar?a=ZSGVjibBN_I:ccnEH-CB5Cw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Jetfar?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Jetfar?a=ZSGVjibBN_I:ccnEH-CB5Cw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Jetfar?i=ZSGVjibBN_I:ccnEH-CB5Cw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Jetfar?a=ZSGVjibBN_I:ccnEH-CB5Cw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Jetfar?i=ZSGVjibBN_I:ccnEH-CB5Cw:gIN9vFwOqvQ" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://jetfar.com/simple-api-key-generation-in-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
