<?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>WezM.net</title>
	
	<link>http://www.wezm.net</link>
	<description>The weblog of Wesley Moore</description>
	<lastBuildDate>Mon, 15 Feb 2010 22:13:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</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/wezm" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="wezm" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">wezm</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>git’s Object Store Efficiency</title>
		<link>http://www.wezm.net/2010/02/git-object-store-efficiency/</link>
		<comments>http://www.wezm.net/2010/02/git-object-store-efficiency/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 06:49:27 +0000</pubDate>
		<dc:creator>Wes</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://www.wezm.net/?p=305</guid>
		<description><![CDATA[Hubert Feyrer posted, Musing about git’s object store efficiency yesterday. In it he compared the apparent efficiency of git’s object store to CVS’s stacked patches. His methodology was to checkout all 963 versions of the NetBSD i386 GENERIC kernel configuration file and then sum up the space used. He comes to the following conclusion:
the git [...]]]></description>
			<content:encoded><![CDATA[<p>Hubert Feyrer posted, <a href="http://www.feyrer.de/NetBSD/bx/blosxom.cgi/nb_20100212_1706.html">Musing about git’s object store efficiency</a> yesterday. In it he compared the apparent efficiency of git’s object store to CVS’s stacked patches. His methodology was to checkout all 963 versions of the NetBSD i386 GENERIC kernel configuration file and then sum up the space used. He comes to the following conclusion:</p>
<blockquote><p>the git model requires about 37 times the space that CVS does</p></blockquote>
<p>and:</p>
<blockquote><p>that’s not counting the overhead of 962 inodes and the related directory bookkeeping</p></blockquote>
<p>He finishes off with an acknowledgement that git has data packing features:</p>
<blockquote><p> I know that git offers some more efficient storage methods via “pack” files, but investigating those is left as an exercise to the reader. </p></blockquote>
<p>I generally enjoy Hubert’s posts but as a daily user of git this one didn’t sit right with me. I thought I’d take up the aforementioned exercise.<br />
<span id="more-305"></span>I retrieved the GENERIC,v rcs file<sup>1</sup> and created a git repository<sup>2</sup>.</p>
<p>I then ran <a href="http://gist.github.com/303277">a script</a><sup>3</sup>, which committed each revision of the file along with a single line commit message extracted from the rcs log.</p>
<p>The repository then weighed in at 22,352kb<sup>4</sup> with 3,174 files and directories<sup>5</sup>. This is where git-gc comes in. From the man page, “git-gc — Cleanup unnecessary files and optimize the local repository”. After running <code>git gc</code><sup>6</sup> the size of the repository was down to 1,068kb, 1.24 times the rcs file. The file and directory count also vastly smaller at 64.</p>
<p>So all in all git fares pretty well. Sure the repository is bigger than CVS and there’s a few more files but its not in order Hubert suggests and its a small price to pay for all the benefits git provides.</p>
<p>________________________</p>
<p>1. From <a href="ftp://ftp.netbsd.org/pub/NetBSD/misc/repositories/cvsroot/src/sys/arch/i386/conf/GENERIC,v">ftp.netbsd.org</a>.</p>
<p>2.</p>
<pre>mkdir git
cd git
git init
Initialized empty Git repository in /Users/wmoore/Source/NetBSD i386 GENERIC/git/.git/</pre>
<p>3.<br />
<script src="http://gist.github.com/303277.js?file=populate_git_repo.sh"></script></p>
<p>4. Repository sizes detemined via:</p>
<pre>du -sk .</pre>
<p>5. File and directory counts determined via:</p>
<pre>find . | wc -l</pre>
<p>6.</p>
<pre>git gc
Counting objects: 2871, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (1914/1914), done.
Writing objects: 100% (2871/2871), done.
Total 2871 (delta 951), reused 0 (delta 0)
Removing duplicate objects: 100% (256/256), done.</pre>
<p>Testing performed on Mac OS X 10.6.2 with git 1.6.4.2</p>
<img src="http://feeds.feedburner.com/~r/wezm/~4/GkM56kZY-DY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wezm.net/2010/02/git-object-store-efficiency/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPad and the Future of Computing</title>
		<link>http://www.wezm.net/2010/02/ipad-and-the-future-of-computing/</link>
		<comments>http://www.wezm.net/2010/02/ipad-and-the-future-of-computing/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 08:50:06 +0000</pubDate>
		<dc:creator>Wes</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.wezm.net/?p=300</guid>
		<description><![CDATA[The iPad is the console of computers
  — mmustapic
The iPad announcement last week created a cacophony of commentary ranging from, “Meh, its just a big iPod touch”, to, “Wow, we’re witnessing the future of computing”. On announcement day I was firmly in the former camp. There appeared to be nothing new aside from the [...]]]></description>
			<content:encoded><![CDATA[<blockquote cite="http://twitter.com/mmustapic/status/8461582923"><p>The iPad is the console of computers<br />
  — <cite><a href="http://twitter.com/mmustapic/status/8461582923">mmustapic</a></cite></p></blockquote>
<p>The iPad announcement last week created a cacophony of commentary ranging from, “Meh, its just a big iPod touch”, to, “Wow, we’re witnessing the future of computing”. On announcement day I was firmly in the former camp. There appeared to be nothing new aside from the larger screen and a custom Apple <abbr title="System on Chip">SoC</abbr> inside.</p>
<p>Since then I’ve read a lot of smart commentary on the iPad, which has swayed my opinion quite a bit.</p>
<p><span id="more-300"></span></p>
<h3>Computing For Everyone Else</h3>
<p>Rob Foster suggests <a href="http://northtemple.com/2010/02/01/on-ipads-grandmas-and-gam">its not the geeks that are excited about the iPad</a>:</p>
<blockquote><p>The darndest thing happened in the last five days and I was fortunate to be privy to it. Apple has gotten people excited about computing.</p>
<p>But this time, it’s not nerds or geeks and certainly not IT industry analysts. It’s everyone else.</p>
</blockquote>
<p>I’m a programmer, I write software both as a profession and a hobby. On my computer I frequently use compilers, interpreters, an IDE, advanced text editors, web servers, database servers and command line tools in addition to the more common web browsers, email client, music player, video player and chat client. The iPad feels weak to me because I clearly can’t do a lot of those things on it. I am of course in a minority. For everyone else a computer that just works is all they ask. Your typical computer user shouldn’t have to know about drivers, viruses, file permissions, software installers.</p>
<h3>The Console of Computing</h3>
<blockquote cite="http://twitter.com/johnthedebs/statuses/8488904733"><p>Think of it as a video game console where you download the games. Now extend that thinking to all the applications.<br />
  — <cite><a href="http://twitter.com/johnthedebs/statuses/8488904733">John Debs</a></cite></p></blockquote>
<blockquote cite="http://twitter.com/cory_foy/status/8525045866"><p>I realized today that we think of the iPad as a computer, when it’s really a console. No outcries about the Wii being closed<br />
  — <cite><a href="http://twitter.com/cory_foy/status/8525045866">Cory Foy</a></cite></p></blockquote>
<p>There’s a class of computers that has been operating like Apple’s mobile platform for decades: video game consoles. The model of computing that Apple is using for the iPad, iPhone and iPod touch is very similar to that of say Nintendo. Closed systems, software approval, single main task at a time, limited expandability, ease of use, hardware abstraction are all features of both consoles and Apple’s mobile devices.</p>
<p><a href="http://stevenf.tumblr.com/post/359224392/i-need-to-talk-to-you-about-computers-ive-been">Steven Frank</a> and <a href="http://speirs.org/blog/2010/1/29/future-shock.html">Fraser Speirs</a> suggest we’re entering the future of computing with the iPad and I now think they may be right. The iPad and its successors will make computing a bit less general but a lot more approachable for the typical consumer.</p>
<p>All is not lost for us tinkerers though. Just like game consoles the iPad needs software too. And whilst the iPad is not self-hosting (yet) there’s still a need for “real” computers and programmers to write the software.</p>
<h3>A Dark Future?</h3>
<p>Alex Payne <a href="http://al3x.net/2010/01/28/ipad.html">is wary of the future that iPad style computing may bring</a>:</p>
<blockquote><p>For now, though, I remain disturbed. The future of personal computing that the iPad shows us is both seductive and dystopian. It’s not a future I want to bring into my home.</p>
</blockquote>
<p>He makes a good point. If every computer out there were an iPad style device, totally locked down and under the control of its parent company there would be little room for exploration. However that’s never stopped people before, just look at the efforts of the iPhone jail-breaking teams or the ongoing efforts to conquer the Xbox 360. Not only that, there’s the open source movement fuelled by a desire to make everything from hardware to software totally visible and free to modify.</p>
<p>The products of open source projects don’t have a great reputation for having a fine attention to detail or remarkable ease of use but they exist. And just by existing they ensure that there will always be things for the budding tinkerers out there to explore, modify, extend and learn from.</p>
<h3>Single Focus Computing</h3>
<p>Much attention has been made of the fact that its only possible to run one app at a time. Many people seem to attributing this to a limitation of the processor used in the iPad or the iPhone OS itself. Both of these are of course totally wrong. The iPad, along with the iPhone and iPod touch are quite capable of running more that one process at a time. In fact that’s how email gets sent and received in the background and how your music keeps playing when you’re in the Facebook app. Milind Alvares attempts to clear up some of these misconceptions in, <a href="http://smokingapples.com/opinion/multi-tasking-iphone-ipad/">Understanding Multi-tasking on the iPad: What is it really?</a>.</p>
<p>The iPad is promoting single focus computing. It does away with the memory requirements, power use, and task management that comes along with running more than one major app at a time. Just like hiding the underlying file layout simplifies things, so does this.</p>
<p>As the iPhone has shown us, there’s very little actual need for more than one app running at a time. As long as the experience of switching between apps is fast and state preserving it often doesn’t really matter if an app is stopped and started or just switched to. There are of some widely cited exceptions to this though: Chat clients and third party music players.</p>
<blockquote cite="http://twitter.com/ekabanov/status/8692060865"><p>iPad doubters — remember how iPhone didn’t have COPY-PASTE for 2 years? Now compare THAT to multitasking!<br />
  — <cite><a href="http://twitter.com/ekabanov/status/8692060865">Jevgeni Kabanov</a></cite></p></blockquote>
<p>The inability to run a chat client or third party music player in the background right now does not mean that it won’t be added in the future. I’m sure Apple is well aware of these use cases, just like it proved to be well aware of the need for copy-and-paste on the iPhone.</p>
<p>There are solutions to both these problems that don’t require full graphical apps to be run in parallel. The music player problem would be solved if the iPad SDK permitted a non-graphical background process to be left running. The OS could even impose strict limitations on the system resources that the process may use. In fact this is already possible in Mac OS X<sup><a href="http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man2/setrlimit.2.html#//apple_ref/doc/man/2/setrlimit">1</a></sup>, so given iPhone OS’s pedigree may already be present.</p>
<p>The chat client problem could be addressed in a similar fashion: A non-graphical background process with the added ability to send notifications. This is already possible with push notifications, however imagine they  could be generated by the background app and perhaps also include standard user interface elements, much like third party apps in the Settings app. This way a new chat message could be displayed, with a field to allow a reply. Obviously these notifications would need to be less intrusive than they are now but it shows its possible.</p>
<h3>Flash Must Die</h3>
<blockquote cite="http://twitter.com/kirkoconnor/statuses/8655575132"><p>RT @mashable: Apple’s iPad: Will it Improve the Web? (Cashmore/CNN)- http://bit.ly/d1UgWF flash, like IE6, must die<br />
  — <cite><a href="http://twitter.com/kirkoconnor/statuses/8655575132">Jevgeni Kabanov</a></cite></p></blockquote>
<p>From my geeky point of view Flash is a rash on the web and the quicker it just goes away the better. However I know there’s a lot of people out there that are writing the iPad off due its lack of support for Flash. The thing is, if Apple sticks to its guns and doesn’t include Flash on the iPad it can only help push the adoption of alternatives like the HTML5 <code>canvas</code> and <code>video</code> tags. Sure there’s going to be some pain until that time but we’ll all be better off at the end.</p>
<img src="http://feeds.feedburner.com/~r/wezm/~4/A2WfZgMfrlU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wezm.net/2010/02/ipad-and-the-future-of-computing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Clone git Repo on Non-Standard Port</title>
		<link>http://www.wezm.net/2010/01/clone-git-repo-on-non-standard-port/</link>
		<comments>http://www.wezm.net/2010/01/clone-git-repo-on-non-standard-port/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 10:21:51 +0000</pubDate>
		<dc:creator>Wes</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[clone]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[port]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tunnel]]></category>

		<guid isPermaLink="false">http://www.wezm.net/?p=293</guid>
		<description><![CDATA[I use an SSH tunnel to access my computer at work from home. On occasion I want to clone a git repo that is on the remote server. To do so its necessary to specify the port, which doesn’t work with the conventional clone syntax.
E.g. git clone hostname:path/to/repo. The solution is to be a little [...]]]></description>
			<content:encoded><![CDATA[<p>I use an SSH tunnel to access my computer at work from home. On occasion I want to clone a git repo that is on the remote server. To do so its necessary to specify the port, which doesn’t work with the conventional clone syntax.</p>
<p>E.g. <code>git clone hostname:path/to/repo</code>. The solution is to be a little more specific:</p>
<pre>
git clone ssh://localhost:2222/~username/path/to/repo
</pre>
<img src="http://feeds.feedburner.com/~r/wezm/~4/yveriGpEeck" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wezm.net/2010/01/clone-git-repo-on-non-standard-port/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mt. Dandenong</title>
		<link>http://www.wezm.net/2010/01/mt-dandenong/</link>
		<comments>http://www.wezm.net/2010/01/mt-dandenong/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 08:41:46 +0000</pubDate>
		<dc:creator>Wes</dc:creator>
				<category><![CDATA[Out and About]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.wezm.net/?p=286</guid>
		<description><![CDATA[ Last week while we were still on holidays Manda and I got a good deal on Wotif for a night at Linden Garden’s Rainforest Retreat. We set off in the morning and had lunch at Cloudhill Restaurant and Gardens. After lunch we wandered around the many different areas of the garden. The hedges and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/wezm/sets/72157623193938202/"><img alt="Cloudhill" src="http://farm5.static.flickr.com/4025/4268590612_130ef8354a_m.jpg" title="Cloudhill Gardens" class="alignleft" width="160" height="240" /></a> Last week while we were still on holidays Manda and I got a good deal on <a href="http://www.wotif.com/">Wotif</a> for a night at <a href="http://www.lindengardens.com.au/">Linden Garden’s Rainforest Retreat</a>. We set off in the morning and had lunch at <a href="http://www.cloudehill.com.au/">Cloudhill Restaurant and Gardens</a>. After lunch we wandered around the many different areas of the garden. The hedges and geometric alignment of the gardens were very cool.</p>
<p>After that it was time to check-in at Linden Gardens. Google Maps gave us a dud route that sent us down a few interesting roads but we made it in the end. Our lodging for the night was “Sanctuary Tower”, a three level mini-house with great views. After an in room massage we had a nice dinner at <a href="http://www.wildoak.com.au/">Wild Oak Restaurant</a> just around the corner. The food was excellent and the servings very generous.</p>
<p>The accommodation was fantastic, right down to the graphic design of the web site and stationary. There were lots of inclusions and thoughtful extras. The one complaint was that the bedroom was quite light when trying to sleep given not all the windows had blinds.</p>
<p>In the morning we wandered around the gardens. The rainforest plans seem to have been planted some time ago and now it has that real rainforest feel. The paths in particular stood out as they were totally green with moss. After that it was time to go, it was a short but most enjoyable stay.</p>
<p><a href="http://www.flickr.com/photos/wezm/sets/72157623193938202/">Photos of Cloudhill and Linden Gardens</a> are on Flickr. Given the lovely weather we had I also took the opportunity to take bracketed shots to deal with the extreme range of light. I then merged them with the newly updated <a href="http://www.pangeasoft.net/pano/bracketeer/index.html">Bracketeer</a>.</p>
<img src="http://feeds.feedburner.com/~r/wezm/~4/TjfAoLwEGgg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wezm.net/2010/01/mt-dandenong/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sensation Melbourne 2009</title>
		<link>http://www.wezm.net/2010/01/sensation-melbourne-2009/</link>
		<comments>http://www.wezm.net/2010/01/sensation-melbourne-2009/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 07:22:14 +0000</pubDate>
		<dc:creator>Wes</dc:creator>
				<category><![CDATA[Entertainment]]></category>
		<category><![CDATA[melbourne]]></category>
		<category><![CDATA[nye]]></category>
		<category><![CDATA[sensation]]></category>

		<guid isPermaLink="false">http://www.wezm.net/?p=281</guid>
		<description><![CDATA[ The end of 2009 saw Melbourne’s second Sensation held at Etihad stadium. I was fortunate enough to attend for free again and was once again impressed by the spectacle of the show and tens of thousands of people in white. The crowd seemed smaller than last year but there were still more than enough [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://farm5.static.flickr.com/4056/4240123752_ce3c0a7f61_m.jpg" alt="Sensation water show" class="alignleft" width="240" height="180" /> The end of 2009 saw Melbourne’s second Sensation held at Etihad stadium. I was fortunate enough to attend for free again and was once again impressed by the spectacle of the show and tens of thousands of people in white. The crowd seemed smaller than last year but there were still more than enough people to give a good atmosphere.</p>
<p>A selection of <a href="http://www.flickr.com/photos/wezm/sets/72157623002015185/">photos from the night</a> are on Flickr along with some <a href="http://www.vimeo.com/album/162125">movies on Vimeo</a>.</p>
<img src="http://feeds.feedburner.com/~r/wezm/~4/DvYWMlsIA-Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wezm.net/2010/01/sensation-melbourne-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Updated Applications</title>
		<link>http://www.wezm.net/2010/01/updated-applications/</link>
		<comments>http://www.wezm.net/2010/01/updated-applications/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 07:17:24 +0000</pubDate>
		<dc:creator>Wes</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[appzapper]]></category>
		<category><![CDATA[disco]]></category>
		<category><![CDATA[updates]]></category>
		<category><![CDATA[xtorrent]]></category>

		<guid isPermaLink="false">http://www.wezm.net/?p=277</guid>
		<description><![CDATA[Over a year ago in Update Expectations I noted three Mac applications that I had bought, which had seen little or no attention since their release. Today I noticed that one of these apps had seen a major new release. The application in question is AppZapper. The changelog on i use this notes the following:

Free [...]]]></description>
			<content:encoded><![CDATA[<p>Over a year ago in <a href="http://www.wezm.net/2008/09/update-expectations/">Update Expectations</a> I noted three Mac applications that I had bought, which had seen little or no attention since their release. Today I noticed that one of these apps had seen a major new release. The application in question is AppZapper. The <a href="http://osx.iusethis.com/app/versions/199">changelog on i use this</a> notes the following:</p>
<ul>
<li>Free for all 1.x customers!</li>
<li>Completely rewritten from the ground up for Snow Leopard</li>
<li>Faster, smarter, easier to use zapping</li>
<li>New ‘Hit List’ feature lets you browse and filter all of your apps</li>
<li>New ‘My Apps’ feature lets you store license info for purchased applications</li>
<li>Many overall improvements</li>
</ul>
<p>This is great news. Although it would have been nice to see some evidence the application was still alive in the 3 years between updates.</p>
<p>Also worth noting is another app that I mentioned in the original post, <a href="http://xtorrentp2p.com/">Xtorrent</a> has also seen some recent activity with the release of Xtorrent 2 in beta. I wonder if we’ll ever see any of those amazing new features promised for <a href="http://www.discoapp.com/">Disco</a>.</p>
<img src="http://feeds.feedburner.com/~r/wezm/~4/B73dVy4gzKk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wezm.net/2010/01/updated-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Font Smoothing in Snow Leopard</title>
		<link>http://www.wezm.net/2009/09/font-smoothing-in-snow-leopard/</link>
		<comments>http://www.wezm.net/2009/09/font-smoothing-in-snow-leopard/#comments</comments>
		<pubDate>Sat, 19 Sep 2009 04:02:43 +0000</pubDate>
		<dc:creator>Wes</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[consolas]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[smoothing]]></category>
		<category><![CDATA[snow-leopard]]></category>

		<guid isPermaLink="false">http://www.wezm.net/?p=246</guid>
		<description><![CDATA[Apple have touted Mac OS X Snow Leopard as having no new features. Whilst there are no new big ticket features there have been plenty of tweaks and refinements. One part that got this treatment was the font smoothing options in System Preferences. In Leopard this allowed you to enable font smoothing and choose between [...]]]></description>
			<content:encoded><![CDATA[<p>Apple have touted Mac OS X Snow Leopard as having no new features. Whilst there are no new big ticket features there have been plenty of tweaks and refinements. One part that got this treatment was the font smoothing options in System Preferences. In Leopard this allowed you to enable font smoothing and choose between four different levels of smoothing. In Snow Leopard there’s now only a single option to enable the smoothing.</p>
<p>The problem with this change is that is appears to default to the light option. As previously identified in, “<a href="http://www.wezm.net/2009/03/consolas-on-mac-update/">Consolas on Mac Update</a>”, my preferred fixed width font Consolas doesn’t look nice with the light smoothing and I prefer medium. Fortunately you can still choose the medium option but setting the preference directly via the defaults command in the Terminal:<br />
<span id="more-246"></span><br />
<code>defaults -currentHost write -globalDomain AppleFontSmoothing -int 2</code></p>
<p>You will need to relaunch any running applications for the change to be picked up. You can do this either by quitting and relaunching or logging out and then back in again.</p>
<p>Before:<br />
<img src="http://www.wezm.net/wp-content/uploads/wezm.net/2009/09/Screen-shot-2009-09-19-at-1.52.25-PM.png" alt="Screen shot 2009-09-19 at 1.52.25 PM" title="Screen shot 2009-09-19 at 1.52.25 PM" width="406" height="194" class="alignnone size-full wp-image-247" /></p>
<p>After:<br />
<img src="http://www.wezm.net/wp-content/uploads/wezm.net/2009/09/Screen-shot-2009-09-19-at-1.57.58-PM.png" alt="Screen shot 2009-09-19 at 1.57.58 PM" title="Screen shot 2009-09-19 at 1.57.58 PM" width="406" height="194" class="alignnone size-full wp-image-248" /></p>
<img src="http://feeds.feedburner.com/~r/wezm/~4/O5XgotNz5Yk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wezm.net/2009/09/font-smoothing-in-snow-leopard/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The Art of Backup</title>
		<link>http://www.wezm.net/2009/08/the-art-of-backup/</link>
		<comments>http://www.wezm.net/2009/08/the-art-of-backup/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 02:25:05 +0000</pubDate>
		<dc:creator>Wes</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[backblaze]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[cyberduck]]></category>
		<category><![CDATA[exavault]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[s3]]></category>
		<category><![CDATA[s3sync]]></category>

		<guid isPermaLink="false">http://wezm.net/?p=184</guid>
		<description><![CDATA[Introduction
I’ve been meaning to write a post about backup for some time now. This morning after posting a comment on Stephen’s blog about it I decided it was time to finish it off.
My backup strategy has been evolving since around 2006 when I decided that my photos were not amply secure in case of disaster. [...]]]></description>
			<content:encoded><![CDATA[<h3>Introduction</h3>
<p>I’ve been meaning to write a post about backup for some time now. This morning after posting a <a href="http://popcorn.cx/blog/2009/08/i-dont-trust-the-cloud/#comment-53264">comment on Stephen’s blog</a> about it I decided it was time to finish it off.</p>
<p>My backup strategy has been evolving since around 2006 when I decided that my photos were not amply secure in case of disaster. My backup solution at the time was to periodically burn a copy to CD, which I kept in my house. The obvious limitation here is that if the house is destroyed, by fire for example, all my photos are lost. What got me thinking about this originally was there actually was a major fire in one of the apartments in the block that I lived in. I was away at the time so was fortunate it didn’t spread to the other apartments.<br />
<span id="more-184"></span></p>
<h3>Contents</h3>
<ul>
<li><a href="/2009/08/the-art-of-backup/#ipod">The iPod Solution</a></li>
<li><a href="/2009/08/the-art-of-backup/#exavault">ExaVault</a></li>
<li><a href="/2009/08/the-art-of-backup/#s3">Amazon S3</a></li>
<li><a href="/2009/08/the-art-of-backup/#backblaze">Backblaze</a></li>
<li><a href="/2009/08/the-art-of-backup/#conclusion">Conclusion</a></li>
</ul>
<p><a name="ipod"></a></p>
<h3>The iPod Solution</h3>
<p>I looked in to off-site backup solutions such a burning CDs and sending them to my parents and syncing to an external drive and storing it at work. Online, “cloud” solutions were too expensive at the time for the amount of data I wanted to store. My solution in the end was to buy the biggest iPod available at the time, a fifth generation, 60Gb. This had enough room to store all my music and photos as well as some other important data. It was also always on me when I went out. I figured that if a fire or something happened when I was at home I would grab it on the way out.</p>
<p>This worked reasonably well as iTunes synced the music and photos automatically. There was a manual step to sync the data though, which mean it was never as up to date. This was all fine until the iPod was stolen. Whilst I was more upset at the circumstances that led to it being taken I also didn’t like the idea of someone having all of my important data.</p>
<p><a name="exavault"></a></p>
<h3>ExaVault</h3>
<p>With the iPod gone I started using <a href="http://www.exavault.com/">ExaVault</a>, an online service that gives you access to a certain amount of storage via rsync for a monthly fee. This worked well for smaller datasets (ie. not photos and music) but it was too expensive to consider pushing tens of gigabytes to. ExaVault was great because I could schedule the backup to run via cron and it didn’t require any thought after that.</p>
<p>To mitigate the risk of losing photos I setup a Time Machine drive when Mac OS X 10.5 was released and also stored a copy of my Aperture library in a vault on an external drive. I still didn’t have a remote solution for them though.</p>
<p><a name="s3"></a></p>
<h3>Amazon S3</h3>
<p>When I started a new job a coleegue mentioned that he was using <a href="https://s3.amazonaws.com/">Amazon S3</a> for backup and it was really cheap. I looked into it and found that S3 offered pricing low enough that it was financially feasible to push a copy of all my photos to the service. I considered <a href="http://www.jungledisk.com/">Jungle Disk</a> but in the end didn’t go with it because I wanted a single solution that I could use on my Linux VPS as well as my Mac. I ended up using <a href="http://s3sync.net/">s3sync</a>, which is basically <a href="http://www.samba.org/rsync/">rsync</a> for S3. This had the added benefit of being a drop in replacement for my ExaVault setup.</p>
<p>The initial upload of over 40Gb of photos to S3 took a couple of weeks I think but after that it happily ran without any drama. I also moved VPS hosts and was able to pull down configs from S3 after the old server had become inaccessible.</p>
<p>Whilst I had the S3 solution in place I upgraded my Mac. I bought a second drive for the new Mac, which left me with the factory supplied drive. I use this drive as a Time Machine drive and it is big enough to keep a copy of almost everything on the main drive. The few things that aren’t backed up are my Downloads folder and my Movies folder (although it does copy movies I take on my camera).</p>
<h4>S3 Problems</h4>
<p>After a while I noticed that s3sync was coping a few files every time it ran, even though they hadn’t changed. These files had Unicode filenames. After some research I found out that <a href="http://developer.apple.com/technotes/tn/tn1150.html#UnicodeSubtleties">HFS+ uses decompesed character sequences in filenames</a>. However these did not play nice with s3sync. Presumably they were stored in pre-composed format on S3 and were then seen as different when the sync was run.</p>
<p>s3sync also uses a questionable method to store the attributes of the folders that it syncs. Since S3 doesn’t have a concept of folders s3sync creates a file with the name of the folder and stores its attributes (permissions, owner, etc.) in it. What this ends up meaning is that s3sync is the only tool that can perform a restore. Other tools create a file with the name of a folder then try to create files in that folder but can’t because the name is already taken.</p>
<p><a name="backblaze"></a></p>
<h3>Moving to Backblaze</h3>
<p>To save money I moved all the services I had running on my Linux VPS to my Mac at home. Since I now only had one machine that needed backing up and I didn’t need Linux compatibility I had some more options. With the S3 issues I was seeing I decided to move to <a href="http://www.backblaze.com/partner/af0192">Backblaze</a><sup><abbr title="Affiliate link">$</abbr></sup>. For US$50 per year I get unlimited, versioned, encrypted storage and decent Mac support. They also have a web interface that can be handy for grabbing files from my Mac at home when I’m at work.</p>
<p>The move to Backblaze took a lot longer than I had planned. First off uploading nearly 200Gb of data was always going to take a long time but it took far longer than it needed to due to a questionable default upload limit in the Backblaze application. It wasn’t until after the two month or so initial upload finsihed that I discoved the setting. So advice to anyone performing an initial upload, <a href="https://www.backblaze.com/speedtest/">remove the upload limit</a>!</p>
<h4>Deleting All Data in an S3 Bucket</h4>
<p>An additional unexpected complexity in the move away from S3 was deleting the data in S3 after the Backblaze upload was complete. It isn’t possible to just delete an S3 bucket and have all its data go with it. You have to delete all the data individually. This is where S3 as a backup service started to show its limitations. Its great if you’re storing just photos or music but when you start syncing arbitrary files on a computer system you end up putting lots of little files up, some of which are quite weird. The primary example being Mac OS X Icon files, which are actually named ‘Icon\r’, yes that’s a carriage return character in the filename. I have no idea why they are named like this but attempting to delete these files gave me all sorts of grief.</p>
<p>I started deleting eveything using <a href="http://s3tools.org/s3cmd">s3cmd</a> and its ‘deleteall’ action.</p>
<pre>S3CONF=/path/to/conf.yml s3cmd -s -v deleteall bucket-name

-v : verbose - show files
-s : SSL
</pre>
<p>This ran for a couple of days before I noticed it had got stuck in an infinite loop. It was deleting the same files over and over again. It was here that I had to step in and start deleting stuff interactively. This is when I found the awkward Icon files. I tried several S3 clients for the Mac. <a href="http://cyberduck.ch/">Cyberduck</a> ended up being the only one capable of removing them.</p>
<ul>
<li><a href="http://s3hub.com/">S3 Hub</a> could see but not delete</li>
<li><a href="http://people.no-distance.net/ol/software/s3/">S3 Browser</a> couldn’t delete</li>
<li>s3cmd looked like it deleted but didn’t</li>
</ul>
<p>Eventually I did get everything deleted but it seemed a lot harder than it should have been.</p>
<p><a name="conclusion"></a></p>
<h3>Conclusion</h3>
<p>So that’s my backup story to date. Pretty much everything is stored on two or more hard disks plus remotely on Backblaze.</p>
<p>S3 is a great service but I don’t think its well suited to backup, particularly if you’re storing lots of small files. Using something like Jungle Disk would probably make it a lot more suitable though.</p>
<p>Backup is important and can be difficult to get right as well as keep it affordable. I believe my current setup keeps my data secure barring any worldwide catastrophes, which I think is good enough. The one one remaining thing that this strategy doesn’t cover is <a href="http://blogs.zdnet.com/storage/?p=191">silent data corruption</a>. Hopefully <a href="http://opensolaris.org/os/community/zfs/">ZFS</a> will become fully supported in Mac OS X soon and that will no longer be a problem.</p>
<img src="http://feeds.feedburner.com/~r/wezm/~4/_gNQ_BcE5v8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wezm.net/2009/08/the-art-of-backup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Idea: Adaptive shell</title>
		<link>http://www.wezm.net/2009/08/adaptive-shell-idea/</link>
		<comments>http://www.wezm.net/2009/08/adaptive-shell-idea/#comments</comments>
		<pubDate>Sun, 16 Aug 2009 22:00:06 +0000</pubDate>
		<dc:creator>Wes</dc:creator>
				<category><![CDATA[UNIX]]></category>
		<category><![CDATA[adaptive]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://www.wezm.net/?p=178</guid>
		<description><![CDATA[I had an idea today when navigating around in the shell. All my work related files are stored in ~/Work. Under that there’s a folder for each project. Sometimes there are multiple variations on a project or project with a similar prefix such as:

radiopaedia
radiopaedia-stable
radiant-sites

When I type rad [Tab] in my shell (zsh) it kindly completes [...]]]></description>
			<content:encoded><![CDATA[<p>I had an idea today when navigating around in the shell. All my work related files are stored in <code>~/Work</code>. Under that there’s a folder for each project. Sometimes there are multiple variations on a project or project with a similar prefix such as:</p>
<ul>
<li>radiopaedia</li>
<li>radiopaedia-stable</li>
<li>radiant-sites</li>
</ul>
<p>When I type <code>rad [Tab]</code> in my shell (<a href="http://www.zsh.org/">zsh</a>) it kindly completes this to <code>radi</code> and gives a list of the other completions since there are several to choose from. I though it would be nice if the shell could learn from the choices I make. So if I generally choose radiopaedia then <code>rad [Tab]</code> would complete to radiopaedia but still show the list of option. </p>
<p>I’m sure there are several other areas where an adaptive shell that learnt from usage patterns could be applied.</p>
<img src="http://feeds.feedburner.com/~r/wezm/~4/pSBsWrAogU8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wezm.net/2009/08/adaptive-shell-idea/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Local Package Management with GNU Stow</title>
		<link>http://www.wezm.net/2009/08/local-package-management-with-gnu-stow/</link>
		<comments>http://www.wezm.net/2009/08/local-package-management-with-gnu-stow/#comments</comments>
		<pubDate>Sun, 16 Aug 2009 02:59:07 +0000</pubDate>
		<dc:creator>Wes</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[package]]></category>
		<category><![CDATA[stow]]></category>

		<guid isPermaLink="false">http://www.wezm.net/?p=147</guid>
		<description><![CDATA[I’m a bit of a purist when it comes to installing UNIX style software. I prefer to install it via the package manager on the platform of choice (E.g. apt on Debian or Mac Ports on Mac OS X). However these repositories don’t always contain the particular package you’re after or may contain an outdated [...]]]></description>
			<content:encoded><![CDATA[<p>I’m a bit of a purist when it comes to installing UNIX style software. I prefer to install it via the package manager on the platform of choice (E.g. <a href="http://en.wikipedia.org/wiki/Advanced_Packaging_Tool">apt</a> on Debian or <a href="http://www.macports.org/">Mac Ports</a> on Mac OS X). However these repositories don’t always contain the particular package you’re after or may contain an outdated version.</p>
<p>In situations like these where you end up building the package yourself I used to employ a system where I would install it into a subdirectory within my home directory. I did this because it doesn’t overwrite a pre-existing system installed version, doesn’t require root privileges and permits quick removal. To achieve this I just passed the <code>--prefix</code> option to the configure script before building. For example if I was building vala I might run the configure script as follows:</p>
<pre>./configure --prefix=$HOME/Local/vala</pre>
<p>Following that with the typical <code>make</code>, <code>make install</code> sees the package built and installed into that directory. The problem with this approach is that for every package you build you have to add the target directory to search paths such as: <code>PATH</code>, <code>LD_LIBRARY_PATH</code>, <code>MANPATH</code>, <code>PKG_CONFIG_PATH</code>. After a while this gets a bit unwieldy. This is where <a href="http://www.gnu.org/software/stow/">GNU Stow</a> comes in.</p>
<p>Stow manages these separate target directories by creating symlinks into the parent directories. For example to build vala I would pass a prefix of <code>$HOME/Local/stow/vala</code> to the configure script. After vala is built and installed, change to the <code>$HOME/Local/stow</code> directory and run <code>stow vala</code>. This results in symlinks to the files in <code>$HOME/Local/stow/vala</code> being created in <code>$HOME/Local</code>, with directory structure preserved. So if vala installs files to <code>bin</code> and <code>lib</code> these files will end up under <code>$HOME/Local/bin</code> and <code>$HOME/Local/lib</code> respectively.</p>
<p>Stow can also delete the symlinks to support uninstalling. The end result is that you only need to add one extra directory to each of the search paths and custom software can be built, installed and uninstalled all without messing with the standard system and root privileges.</p>
<img src="http://feeds.feedburner.com/~r/wezm/~4/68mEnRzoTPA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wezm.net/2009/08/local-package-management-with-gnu-stow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
