<?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>Apolitically Incorrect &#187; Programming</title>
	<atom:link href="http://www.oak-tree.us/blog/index.php/category/computerprog/computer_programming/feed" rel="self" type="application/rss+xml" />
	<link>http://www.oak-tree.us/blog</link>
	<description>The Rants and Raves of an Unsettled Mind</description>
	<lastBuildDate>Mon, 31 Oct 2011 21:56:43 +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>Time Drive 0.3: Better, Easier, More Refined</title>
		<link>http://www.oak-tree.us/blog/index.php/2009/10/26/time-drive-03</link>
		<comments>http://www.oak-tree.us/blog/index.php/2009/10/26/time-drive-03#comments</comments>
		<pubDate>Mon, 26 Oct 2009 16:16:56 +0000</pubDate>
		<dc:creator>Rob Oakes</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Time Drive]]></category>

		<guid isPermaLink="false">http://www.oak-tree.us/blog/?p=1273</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Time+Drive+0.3%3A+Better%2C+Easier%2C+More+Refined&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=Featured&amp;rft.subject=Programming&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-10-26&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/10/26/time-drive-03&amp;rft.language=English"></span>
Imagine how awesome it would be if this announcement read: “Time Drive has been completely rewritten from scratch (yet again) to take better advantage of the paradigms of modern computing!  Version 0.3 has hundreds of updates and new features which will make your life easier and more fulfilled!” There's just one little problem … such a hyper [...]<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/10/26/time-drive-03">Time Drive 0.3: Better, Easier, More Refined</a></p>
]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Time+Drive+0.3%3A+Better%2C+Easier%2C+More+Refined&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=Featured&amp;rft.subject=Programming&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-10-26&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/10/26/time-drive-03&amp;rft.language=English"></span>
<p><img style="margin: 0px 15px 10px 0px; display: inline" title="One of the upsides of open source software is that it largely sales itself" src="http://webpub.allegheny.edu/student/f/fillerb/weblog/salesman.jpg" alt="One of the upsides of open source software is that it largely sales itself" width="244" height="244" align="left" />Imagine how awesome it would be if this announcement read: “Time Drive has been completely rewritten from scratch (<a href="http://www.oak-tree.us/blog/index.php/2009/09/24/timedrive-02">yet again</a>) to take better advantage of the paradigms of modern computing!  Version 0.3 has hundreds of updates and new features which will make your life easier and more fulfilled!”</p>
<p>There's just one little problem … such a hyper inflated announcement wouldn't necessarily be true.  (Marketing hyperbole, I never knew thee!)  The truth is this: Time Drive is a simple backup program that does a good job of reliably backing up your data.  It offers a nice list of potential backup options: from an attached hard drive, to a computer over the network, or across the internet.  It makes it easy to search for and restore a lost file.  In short, Time Drive seeks to change the world by making an act of computer maintenance more convenient.</p>
<p>But the real test of a program isn’t how well it works, but how easy it is to fix when broken.  A good program does what you want, but a better program helps you get back on track when things go wrong.  <a href="http://www.oak-tree.us/blog/index.php/2009/07/20/back-in-time1">Back when I was looking at other backup programs available for Linux</a>, this was my number one frustration.  Most of the applications would work (for the most part), but I could never troubleshoot or repair problems when they happened.  There just wasn’t enough information available.</p>
<p>For an example, let’s take <a href="http://sourceforge.net/projects/sbackup/">SBackup</a>.  It’s a lovely little program,  except you have no way of knowing if it is working.  It doesn’t keep log files, it doesn’t notify you if a backup job failed.  It doesn’t let you know if it is running.  Its simplicity is actually symptomatic of a flaw: it’s incomplete.</p>
<p>These were problems that I desperately wanted to avoid with Time Drive.  And version 0.3 includes a number of refinements that solve these issues while at the same time making make it better, easier and more refined.  In the rest of this post, I’ll explain why.</p>
<p><span id="more-1273"></span></p>
<h2><a href="http://www.oak-tree.us/blog/wp-content/uploads/2009/10/AboutInformation.png"><img style="border-right-width: 0px; margin: 0px 0px 10px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/10/AboutInformation_thumb.png" border="0" alt="" width="150" height="150" align="right" /></a>Better</h2>
<p>There’s a very good reason why Time Drive works with the Ubuntu notifications system and has progress bar notifications for nearly everything.  From the very first, I wanted the program to notify the user of what it was doing.  But in versions 0.1 and 0.2, there was an essential part missing: some kind of program log.  It was a big omission, and several people complained rather vocally about it.</p>
<h3>Logs and Notifications</h3>
<p>And it's the first thing that was added to version 0.3.  Time Drive now logs its activities and will notify you of errors that happen behind the scenes.  If a backup job fails silently, you can put on your detective hat and go find out why.  If your internet connection cuts out while using cron to automatically backup your computer, you’ll get a warning the next time that you run the program.  Backup statistics, problems, errors, even love notes; they’re all there.  To open the log, just click on the blue information button on the main user interface.</p>
<p align="center"><a href="http://www.oak-tree.us/blog/wp-content/uploads/2009/10/TimeDrive0.3Log.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Time Drive 0.3 - Log" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/10/TimeDrive0.3Log_thumb.png" border="0" alt="Time Drive 0.3 - Log" width="494" height="406" /></a></p>
<h3>Progress Indicators for Absolutely Everything</h3>
<p>In addition to the log, we fixed a second oversight.  Versions 0.1 and 0.2 lacked an indicator that told you how far a backup job had progressed.  In 0.3, that problem’s been solved.</p>
<p align="center"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Time Drive 0.3 - Backup Running Progress" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/10/TimeDrive0.3BackupRunningProgress.png" border="0" alt="Time Drive 0.3 - Backup Running Progress" width="651" height="36" /></p>
<h2><a href="http://www.oak-tree.us/blog/wp-content/uploads/2009/10/TimeDriveCleanup.png"><img style="border-right-width: 0px; margin: 0px 15px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Time Drive - Cleanup" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/10/TimeDriveCleanup_thumb.png" border="0" alt="Time Drive - Cleanup" width="122" height="134" align="left" /></a>Easier</h2>
<p>Great.  Time Drive does a better job of letting you know about problems, but what about fixing them?  For example, what will version 0.3 do when a backup job fails, or your internet connection cuts out at the wrong time?  When these things happen, Duplicity leaves unneeded files on the backup drive.  (Files, by the way, which are a pain to remove.)  How does Time Drive make repair jobs easier?</p>
<p>Well … I’m glad that you asked.  Time Drive now has a cleanup function.  If it detects a mess or unneeded files, the program will automatically go about restoring things to right.  And if you happen to be one of those obsessively tidy people, you can manually run the same tool by going to the advanced settings pane for the corresponding folder.</p>
<p align="center"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Time Drive 0.3 - Manage Backups" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/10/TimeDrive0.3ManageBackups_thumb.png" border="0" alt="Time Drive 0.3 - Manage Backups" width="569" height="441" /></p>
<h2>More Refined</h2>
<p>So much for better notifications and easier management of messes.  But what about the promised refinements?  Where can you look to find those?</p>
<p>For starters, take a look at the settings for remote connections.  All of the input boxes have been reworked for cleaner input.  While Time Drive and Duplicity have always supported non-standard port numbers, it wasn’t necessarily clear how how to configure them.  Now, it is.</p>
<p>More importantly, though, the user interface adapts to your choices.  If you choose to make a backup to an attached drive, you aren’t going to be asked for a server and port.  If you choose FTP, however, those options will be there.  Best of all, you no longer have to keep track of which types of connections require two slashes in the connection url and which one uses just one.  Time Drive will  do the configuration and accounting for you!</p>
<p align="center"> <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Time Drive 0.3 - Refined Input Dialog" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/10/TimeDrive0.3RefinedInputDialog.png" border="0" alt="Time Drive 0.3 - Refined Input Dialog" width="597" height="108" /></p>
<p><!--adsensestart--></p>
<h3>Looking Toward the Future</h3>
<p>And those are only the changes that you will see.  There’s a lot more that has happened behind the scenes to make version 0.3 the best release of Time Drive ever.  You might call these “future enhancements.”  They include:</p>
<ul>
<li><a href="https://translations.launchpad.net/time-drive">International Support</a>.  If you don’t speak English, Time Drive now has you covered.  Dutch, French and Spanish translations are in the works.  Want to see Time Drive translated to  Chinese?  <a href="https://launchpad.net/+tour/translation">Come help out</a>!</li>
<li><a href="http://me.delodder.be/time-drive/api/">Documented API</a>.  You know that a software program has grown up and reached maturity when you have a documented API.</li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/10/05/install-timedrive-ubuntu">Automated Installation and Upgrades for Linux Users</a>.  One of the best things about using Linux is apt-get.  It keeps your entire system up to date with the most recent software, and the <a href="https://launchpad.net/time-drive">Time Drive project at Launchpad</a> now has it’s own <a href="https://launchpad.net/~time-drive-devel/+archive/stable">PPA</a>.</li>
</ul>
<h2>Additional Announcements</h2>
<p>As you can see, Time Drive is managing to evolve and add new features at a pretty good clip.  But as we do so, it’s also time to face a pretty harsh reality.  An easy to install and compatible Windows version simply isn’t going to happen.</p>
<p>Producing a version of Time Drive for Windows has always been extraordinarily hard, there are just too many *nix dependencies.  To use it requires Cygwin, a compatible version of PyQt and a great deal of black magic and prayer.  Changes that are compatible with Mac OS X and Linux break the Windows version, and vice versa.  After months of wrestling with it, I’ve decided that It’s just not worth the headache.  So, from version 0.3 onward, we will not be targeting Windows as a development platform.</p>
<p>For those of you waiting with baited breath for a Windows release, my apologies.  But I should point out that Time Drive isn’t really needed on Windows.  There are a number of fantastic backup programs available.  The <a href="http://www.oak-tree.us/blog/index.php/2009/07/05/backup-part5-1">built-in backup</a> is actually quite good in, and if that doesn’t suit your fancy there are some really fantastic <a href="http://www.genie-soft.com/products/genie_timeline/features.html">commercial alternatives</a>.</p>
<h2>Conclusion</h2>
<p>In summary, version 0.3 is a nice, incremental release of Time Drive.  It patches some important holes and does a much better job of notifying users of what’s going on.  It’s easier to manage your backups and clean up disasters.  Lastly, it’s more refined with a bunch of spectacular back end improvements.  So while version 0.3 may be an incremental improvement, we’ve got a foundation that will let us release even better versions in the future.  This announcement might not be filled with marketing speak and exaggerated claims, but you can bet that future announcements will do a used car salesman proud.<br />
<h3>Similar Posts:</h3>
<ul class="similar-posts">
<li><a href="http://www.oak-tree.us/blog/index.php/2009/10/05/install-timedrive-ubuntu" rel="bookmark" title="October 5, 2009">Install Time Drive On Ubuntu and Other Debian Linux Distributions</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/02/11/pitiful" rel="bookmark" title="February 11, 2009">A Pitiful and Pathetic Story</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/02/04/mac-defrag" rel="bookmark" title="February 4, 2009">Mac OS X doesn&rsquo;t need to be defragmented? Yeah, right.</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/10/07/duplicity-mac" rel="bookmark" title="October 7, 2009">Installing Duplicity on Mac OS X</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/10/27/unified-inbox-evolution" rel="bookmark" title="October 27, 2009">Create a Unified Inbox in Gnome Evolution</a></li>
</ul>
<p><!-- Similar Posts took 39.999 ms --></p>
<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/10/26/time-drive-03">Time Drive 0.3: Better, Easier, More Refined</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oak-tree.us/blog/index.php/2009/10/26/time-drive-03/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installing Duplicity on Mac OS X</title>
		<link>http://www.oak-tree.us/blog/index.php/2009/10/07/duplicity-mac</link>
		<comments>http://www.oak-tree.us/blog/index.php/2009/10/07/duplicity-mac#comments</comments>
		<pubDate>Wed, 07 Oct 2009 19:20:40 +0000</pubDate>
		<dc:creator>Rob Oakes</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Time Drive]]></category>

		<guid isPermaLink="false">http://www.oak-tree.us/blog/index.php/2009/10/07/installing-duplicity-on-mac-os-x</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Installing+Duplicity+on+Mac+OS+X&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=Programming&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-10-07&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/10/07/duplicity-mac&amp;rft.language=English"></span>
While Mac OS X shares many things in common with other Unix operating systems, it also has a couple of missing parts.&#160; This can make installing software more difficult when compared to Linux or other *nix variants, and unfortunately, Duplicity happens to be one of those cases. But just because it is more difficult to [...]<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/10/07/duplicity-mac">Installing Duplicity on Mac OS X</a></p>
]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Installing+Duplicity+on+Mac+OS+X&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=Programming&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-10-07&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/10/07/duplicity-mac&amp;rft.language=English"></span>
<p><!--noadsense-->While Mac OS X shares many things in common with other Unix operating systems, it also has a couple of missing parts.&#160; This can make installing software more difficult when compared to Linux or other *nix variants, and unfortunately, Duplicity happens to be one of those cases.</p>
<p>But just because it is more difficult to install Duplicity on Mac doesn’t mean that it isn’t worthwhile.&#160; Duplicity is one of the best command line backup programs available anywhere.&#160; Using the same program, you can backup to a local hard drive, FTP server, over SSH or even to Amazon S3.&#160; It uses the rsync algorithm, which means that backups happen quickly and only the parts of files that actually changed get copied.&#160; Subsequently, backups are smaller.</p>
<p>Nor does it mean that installing Duplicity is actually all that hard, it’s just a bit tedious.&#160; Like many other *nix programs, Duplicity requires a number of additional programs (called dependencies) that you will have to search out and install separately.&#160; To make that process easier, this article explains how.&#160; Below, you’ll find links to the download pages and instructions for how to compile each of Duplicity’s dependencies on Mac OS X.&#160; The instruction set has been tested both on Mac OS X 10.5 (Leopard) and Mac OS X 10.6 (Snow Leopard).</p>
<p> <span id="more-1228"></span>
</p>
<h2><img style="border-right-width: 0px; margin: 0px 15px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="XCode" border="0" alt="XCode" align="left" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/10/XCode.png" width="160" height="160" /> XCode</h2>
<p>The first dependency you will need is a rather large one.&#160; Several of the software packages need to be compiled from source.&#160; But unfortunately, Mac OS X doesn’t install the compilers by default.&#160; Thus, you will either need to install them from the Mac OS X installation CD, or by getting the XCode tools from the <a href="http://developer.apple.com/mac/">Apple Developer Connection (ADC)</a>.&#160; <em>Note: ADC requires that you have an Apple ID – which is free – to log in into the site.</em></p>
<p>After you log-in, download the XCode developer tools package.&#160; Once XCode has finished downloading, run the package installer.&#160; It will ask you to select the destination drive and what components of the software you would like to install.</p>
<p align="center"><img title="Select the installation disc where you want to install XCode the developer tools" border="0" alt="Select the installation disc where you want to install XCode the developer tools" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/05/pyqtmacinstall17.png" width="550" height="390" /></p>
<p align="left">Choose the Develoepr Tools Essentials, System Tools and Unix Development Support options.&#160; This will automatically install and configure the GNU tool chain and the GCC compiler collection.&#160; Once it has finished, you can access the tools by going to the “/Developer/” folder on the root of the drive.</p>
<p align="center"><a href="http://www.oak-tree.us/blog/wp-content/uploads/2009/05/pyqtmacinstall26.png"><img title="Choose the components you would like to install" border="0" alt="Choose the components you would like to install" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/05/pyqtmacinstall26-thumb.png" width="550" height="390" /></a></p>
<p align="left">After XCode is finished installing you are ready to build and install the other necessary dependencies.</p>
<p align="left"><em>Note: All other steps in this tutorial will be run from the command line terminal.</em></p>
<h3><img style="border-right-width: 0px; margin: 10px 15px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="LockandKey5" border="0" alt="LockandKey5" align="left" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/10/LockandKey5.png" width="160" height="160" /></h3>
<h2>GnuPG</h2>
<p><a href="http://www.gnupg.org/">GnuPG</a> handles the encryption and decryption of tar archive files.&#160; If it isn’t installed and configured correctly, Duplicity (and by extension) Time Drive simply won’t work.&#160; On Linux and other Unix operating systems, GnuPG is typically included as part of the default installation.&#160; This is not true on Mac OS X, however.&#160; As a result, you will need to download, compile and install it from source.</p>
<p>You can find the source files on the <a href="http://www.gnupg.org/download/index.en.html">project download page</a> or the <a href="ftp://ftp.gnupg.org/gcrypt/gnupg/">associated ftp site</a>.&#160; Duplicity will work with version GnuPG version <a href="ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-1.4.9.tar.bz2">1.4</a> or <a href="ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-2.0.12.tar.bz2">2.0</a>.&#160; The biggest difference between the two is that version 2.0 is slightly more modular, and as a result, has a speed advantage.&#160; From a practical standpoint, however, unless you are running large, frequent backups, you are not likely to notice any difference.&#160; I have been able to compile both without any difficulty on both Leopard and Snow Leopard, so the choice is largely one of preference.</p>
<p>After downloading the most recent version, extract the archive by typing:</p>
<blockquote><p>tar –xf gnupg-x.x.x.tar.gz2</p>
</blockquote>
<p>Where x.x.x is the version of GnuPG that you downloaded (at the time of this writing, it is version 2.0.12).&#160; This will create a new directory called gnupg-2.0.12.&#160; From that directory, you can configure, compile, test and install:</p>
<blockquote><p>cd gnupg-2.0.12     <br />./configure      <br />make; sudo make install</p>
</blockquote>
<p>When finished, return to the working directory by typing:</p>
<blockquote><p>cd ..</p>
</blockquote>
<h3>GnuPG Interface – Python Module</h3>
<p>Now that you have built and installed GnuPG, you will next need to install the Python bindings so that duplicity can make use it.&#160; You can get these from the <a href="http://py-gnupg.sourceforge.net/">GnuPG Interface Module</a> project page, specifically from the <a href="http://sourceforge.net/projects/py-gnupg/files/">download section</a>.&#160; Grab the most recent version (0.3.2).&#160; To install, extract the folder, enter the setup directory and then use python to run the “setup.py” script:</p>
<blockquote><p>tar -xf GnuPGInterface-0.3.2.tar.gz     <br />cd GnuPGInterface-0.3.2      <br />sudo python setup.py install</p>
</blockquote>
<h2>NcFTP</h2>
<p><img style="border-right-width: 0px; margin: 10px 0px 10px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="NetworkArchive5" border="0" alt="NetworkArchive5" align="right" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/10/NetworkArchive5.png" width="150" height="150" /><a href="http://www.ncftp.com/">NcFTP</a> enables Duplicity to make backups to FTP servers.&#160; The download files can be found on NcFTP’s <a href="http://www.ncftp.com/download/">download page</a>, which lists both the NcFTPd Server and the NcFTP client.&#160; We want the most recent version of the <em><strong>client</strong></em> source code (version <a href="ftp://ftp.ncftp.com/ncftp/ncftp-3.2.3-src.tar.bz2">3.2.3</a>).</p>
<p>Like GnuPG, we need to configure, compile and install:</p>
<blockquote><p>tar –xf ncftp-3.2.3-src.tar.bz2     <br />cd ncftp-3.2.3      <br />./configure      <br />make; sudo make install</p>
</blockquote>
<h3>Boto – Amazon S3 Support</h3>
<p>To use Amazon as a backup destination, you need to grab the&#160; <a href="http://code.google.com/p/boto/">Boto</a> python module.&#160; Boto provides a structured and integrated interface to most of the features offered by Amazon Web services, most importantly: the Simple Storage Service (S3).&#160; You can get the most recent version (<a href="http://boto.googlecode.com/files/boto-1.8d.tar.gz">1.8d</a>) from the <a href="http://code.google.com/p/boto/downloads/list">Boto downloads page</a> on Google Code.</p>
<p>From there, the installation procedure is similar to that for the GnuPG python interface module.&#160; Extract the archive, enter the program folder and use python to run the setup script.</p>
<blockquote><p>tar -xf boto-1.8d.tar.gz     <br />cd boto-1.8d      <br />sudo python setup.py install</p>
</blockquote>
<h2>Duplicity</h2>
<p>Once you have installed GnuPG, the GnuPG python interface, NcFTP and Boto, you are ready to install Duplicity.&#160; Because it is a python program, the steps are identical to those of Boto and the GnuPG python interface.&#160; Download the source code from the <a href="http://duplicity.nongnu.org/">project home page</a> (keeping in mind that Time Drive requires at least version <a href="http://code.launchpad.net/duplicity/trunk/0.6.04/+download/duplicity-0.6.04.tar.gz">0.6.04</a>); then, extract it the same way that you did the previous libraries and enter the source code directory:</p>
<blockquote><p>tar –xf duplicity-0.6.04.tar.gz     <br />cd duplicity-0.6.04</p>
</blockquote>
<p>Finally, run the python setup script:</p>
<blockquote><p>sudo python setup.py install</p>
</blockquote>
<p>Duplicity will byte compile and be copied to the python packages directory.</p>
<p>When finished, you can test the installatin by typing:</p>
<blockquote><p>duplicity –help</p>
</blockquote>
<p>If successful, you will see the text from the duplicity manual page.</p>
<h3>Similar Posts:</h3>
<ul class="similar-posts">
<li><a href="http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-mac" rel="bookmark" title="May 12, 2009">Installation of PyQt on Mac OS X</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-windows" rel="bookmark" title="May 12, 2009">Installation of PyQt on Windows</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/10/05/install-timedrive-ubuntu" rel="bookmark" title="October 5, 2009">Install Time Drive On Ubuntu and Other Debian Linux Distributions</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/07/20/back-in-time1" rel="bookmark" title="July 20, 2009">Back In Time (Part 1): Linux Backup Made Easy</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/01/22/backup-part1" rel="bookmark" title="January 22, 2009">Backup, Share and Sync &ndash; Part 1: Introduction</a></li>
</ul>
<p><!-- Similar Posts took 40.645 ms --></p>
<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/10/07/duplicity-mac">Installing Duplicity on Mac OS X</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oak-tree.us/blog/index.php/2009/10/07/duplicity-mac/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Install Time Drive On Ubuntu and Other Debian Linux Distributions</title>
		<link>http://www.oak-tree.us/blog/index.php/2009/10/05/install-timedrive-ubuntu</link>
		<comments>http://www.oak-tree.us/blog/index.php/2009/10/05/install-timedrive-ubuntu#comments</comments>
		<pubDate>Mon, 05 Oct 2009 22:23:01 +0000</pubDate>
		<dc:creator>Rob Oakes</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Cool Stuff]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.oak-tree.us/blog/index.php/2009/10/05/install-time-drive-on-ubuntu-and-other-debian-linux-distributions</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Install+Time+Drive+On+Ubuntu+and+Other+Debian+Linux+Distributions&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=Cool+Stuff&amp;rft.subject=Programming&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-10-05&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/10/05/install-timedrive-ubuntu&amp;rft.language=English"></span>
Since version 0.2.2 of Time Drive, installing Time Drive and keeping it up date has gotten a great deal easier.  Instead of requiring that you install from source, we now offer Debian based packages through the Time Drive Personal Package Archvie (PPA).  This article will briefly describe how to install Time Drive using that PPA. [...]<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/10/05/install-timedrive-ubuntu">Install Time Drive On Ubuntu and Other Debian Linux Distributions</a></p>
]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Install+Time+Drive+On+Ubuntu+and+Other+Debian+Linux+Distributions&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=Cool+Stuff&amp;rft.subject=Programming&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-10-05&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/10/05/install-timedrive-ubuntu&amp;rft.language=English"></span>
<p><!--noadsense--></p>
<p><img style="border-right-width: 0px; margin: 0px 15px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Clock Icon: Settings" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/10/TimeDriveIcon.jpg" border="0" alt="Clock Icon: Settings" width="301" height="273" align="left" />Since version 0.2.2 of Time Drive, installing Time Drive and keeping it up date has gotten a great deal easier.  Instead of requiring that you install from source, we now offer Debian based packages through the <a href="https://launchpad.net/~time-drive-devel/+archive/stable">Time Drive Personal Package Archvie (PPA)</a>.  This article will briefly describe how to install Time Drive using that PPA.</p>
<h2>Background</h2>
<p>But before leaping headlong into the nitty gritty, let me provide a bit of background about packages and repositories.  Unlike Windows or Mac OS X, software on Linux is organized into a container called a package.  The package contains the files needed to run the program in addition to artwork and configuration information.  Any given program may require many other programs to be installed before it can run.  These other programs are referred to as dependencies.  Ubuntu and uses a tool for managing packages and dependencies called Apt.</p>
<p>The benefits of using Apt over manually installing things is that Apt figures out all of the dependencies automatically.  Further, it keeps everything up to date by periodically scanning the online repository (PPA) and downloading any updates.  In practice, Apt works much like the Windows Update service, only better, since it monitors every piece of software installed on your computer.</p>
<h2>Installation Instructions</h2>
<p>To install Time Drive using the PPA, we need to do the following:<img style="border-right-width: 0px; margin: 15px 0px 15px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Ubuntu - Logo" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/10/UbuntuLogo1.png" border="0" alt="Ubuntu - Logo" width="294" height="77" align="right" /></p>
<ol>
<li>Add the Time-Drive-Devel and Duplicity PPA to your Ubuntu Software Sources.</li>
<li>Configure Ubuntu so that it will trust both Time-Drive-Devel and the Duplicity packages.</li>
<li>Install Duplicity and Time Drive</li>
</ol>
<h3>Step 1: Add the Package Repositories to the Ubuntu Software Sources</h3>
<p>Open the Ubuntu Software Sources by going to the <strong>System –&gt; Administration –&gt; Software Sources</strong>.  Then, select the “Third-Party” software tab of the application.  “Software Sources” requires root access, therefore, you will be prompted to type in your administrator password.</p>
<p align="center"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Time Drive 0.2 - Software Sources" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/10/TimeDrive0.2SoftwareSources.png" border="0" alt="Time Drive 0.2 - Software Sources" width="448" height="443" /></p>
<p>We need to add two package repositories to the list, one for Duplicity and the other for Time Drive.  Depending on the version of Ubuntu that you are using, copy and paste the following lines (one at a time) into the “Add Sources” dialog.  After each line, press the “Add Source” button.</p>
<p align="center"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Time Drive 0.2 - Software Sources Dialog" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/10/TimeDrive0.2SoftwareSourcesDialog.png" border="0" alt="Time Drive 0.2 - Software Sources Dialog" width="578" height="503" /></p>
<p>For Ubuntu Karmic Kaola (9.10):</p>
<blockquote><p>deb <a href="http://ppa.launchpad.net/duplicity-team/ppa/ubuntu">http://ppa.launchpad.net/duplicity-team/ppa/ubuntu</a> karmic main # Duplicity – Ubuntu 9.10</p>
<p>deb <a href="http://ppa.launchpad.net/time-drive-devel/stable/ubuntu">http://ppa.launchpad.net/time-drive-devel/stable/ubuntu</a> karmic main # Time Drive – Ubuntu 9.10</p></blockquote>
<p>For Ubuntu Jaunty Jackolope (9.04):</p>
<blockquote><p>deb <a href="http://ppa.launchpad.net/duplicity-team/ppa/ubuntu">http://ppa.launchpad.net/duplicity-team/ppa/ubuntu</a> jaunty main # Duplicity – Ubuntu 9.04</p>
<p>deb <a href="http://ppa.launchpad.net/time-drive-devel/stable/ubuntu">http://ppa.launchpad.net/time-drive-devel/stable/ubuntu</a> jaunty main # Time-Drive – Ubuntu 9.04</p></blockquote>
<p>For Ubuntu Intrepid Ibex (8.10):</p>
<blockquote><p>deb <a href="http://ppa.launchpad.net/duplicity-team/ppa/ubuntu">http://ppa.launchpad.net/duplicity-team/ppa/ubuntu</a> intrepid main # Duplicity – Ubuntu 8.10</p>
<p>deb <a href="http://ppa.launchpad.net/time-drive-devel/stable/ubuntu">http://ppa.launchpad.net/time-drive-devel/stable/ubuntu</a> intrepid main # Time-Drive – Ubuntu 8.10</p></blockquote>
<p>When finished, press the “Close” button.  Ubuntu should then notify you that the software information is out of date and needs to be updated.  Instead of clicking “Reload,” click the “Close” button.  We will refresh Apt from the command line in Step 3.</p>
<p align="center"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Time Drive 0.2 - Reload Sources" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/10/TimeDrive0.2ReloadSources.png" border="0" alt="Time Drive 0.2 - Reload Sources" width="489" height="272" /></p>
<h3>Step 2: Configure Apt to Trust Time Drive and Duplicity Packages</h3>
<p>After adding the repository information, you will then need to add the repository key to your system’s list of trusted keys.  This is most easily done by running the <a href="http://www.oak-tree.us/stuff/launchpad-update.sh">update-launchpad</a> shell script.  (To download, right click on the link and select “Save As”.)  When run, the script automatically downloads any needed signing keys and automatically add them to the “Trusted Sources” list.</p>
<p>To run the script, go to <strong>Accessories –&gt; Terminal</strong> and navigate to where you saved the file, then type:</p>
<blockquote><p>cd /path/to/folder<br />
sudo bash update-launchpad.sh <em>UbuntuVersion</em></p></blockquote>
<p>Be sure to substitute the correct Ubuntu code name for UbuntuVersion in the second step – <em>karmic</em> for 9.10, <em>jaunty</em> for 9.04, or <em>intrepid</em> for 8.10 – otherwise, you will get an error.  I happen to use Ubuntu 9.04, therefore, for my setup, I would type the following:</p>
<blockquote><p>sudo bash update-launchpad.sh jaunty</p></blockquote>
<h3>Step 3: Install Duplicity and Time Drive</h3>
<p>Finally, we are ready to install Time Drive and Duplicity.  From the command line, refresh the package lists by typing:</p>
<blockquote><p>sudo apt-get update</p></blockquote>
<p>Then, to install time-drive and duplicity, type:</p>
<blockquote><p>sudo apt-get install time-drive duplicity</p></blockquote>
<h2>Application Updates</h2>
<p>As noted above, whenever a new version of Time Drive, Duplicity, or another dependency is added to the package repository, your system will automatically be updated.  However, should you upgrade your system to a newer version of  Ubuntu, you will need to return to this page to add the repository for that version.</p>
<p>__________________________________________________</p>
<p><em>Note: These instructions were modified from </em><a href="http://www.winehq.org/download/deb"><em>this tutorial</em></a><em> on </em><a href="http://www.winehq.org/"><em>WineHQ</em></a><em>.</em><br />
<h3>Similar Posts:</h3>
<ul class="similar-posts">
<li><a href="http://www.oak-tree.us/blog/index.php/2009/10/07/duplicity-mac" rel="bookmark" title="October 7, 2009">Installing Duplicity on Mac OS X</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-mac" rel="bookmark" title="May 12, 2009">Installation of PyQt on Mac OS X</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/02/17/backup-part3" rel="bookmark" title="February 17, 2009">Backup, Share and Sync &ndash; Part 3: Configuring the Server for Subversion</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/01/22/backup-part1" rel="bookmark" title="January 22, 2009">Backup, Share and Sync &ndash; Part 1: Introduction</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/08/07/time-drive2" rel="bookmark" title="August 7, 2009">Backup for Linux, Done Right - Part 2: Time Drive 0.1</a></li>
</ul>
<p><!-- Similar Posts took 22.404 ms --></p>
<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/10/05/install-timedrive-ubuntu">Install Time Drive On Ubuntu and Other Debian Linux Distributions</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oak-tree.us/blog/index.php/2009/10/05/install-timedrive-ubuntu/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Time Drive 0.2 &#8211; A &#8220;More S&#8221; Release: More Stable, More Secure, More Settings and Now Supports Amazon S3 Storage</title>
		<link>http://www.oak-tree.us/blog/index.php/2009/09/24/timedrive-02</link>
		<comments>http://www.oak-tree.us/blog/index.php/2009/09/24/timedrive-02#comments</comments>
		<pubDate>Thu, 24 Sep 2009 18:41:57 +0000</pubDate>
		<dc:creator>Rob Oakes</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Linux Backup]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Time Drive]]></category>

		<guid isPermaLink="false">http://www.oak-tree.us/blog/?p=1169</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Time+Drive+0.2+%26ndash%3B+A+%26ldquo%3BMore+S%26rdquo%3B+Release%3A+More+Stable%2C+More+Secure%2C+More+Settings+and+Now+Supports+Amazon+S3+Storage&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=Programming&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-09-24&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/09/24/timedrive-02&amp;rft.language=English"></span>
The first time that you attempt to do something, it’s pretty much a guarantee that it’s going to suck.&#160; This doesn’t necessarily need to be a bad thing.&#160; Shows like&#160; America’s Funniest Home Videos and MXC have found dozens of way to cash in on the humiliation of their participants.&#160; (And what better exemplifies pure [...]<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/09/24/timedrive-02">Time Drive 0.2 &ndash; A &ldquo;More S&rdquo; Release: More Stable, More Secure, More Settings and Now Supports Amazon S3 Storage</a></p>
]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Time+Drive+0.2+%26ndash%3B+A+%26ldquo%3BMore+S%26rdquo%3B+Release%3A+More+Stable%2C+More+Secure%2C+More+Settings+and+Now+Supports+Amazon+S3+Storage&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=Programming&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-09-24&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/09/24/timedrive-02&amp;rft.language=English"></span>
<p>The first time that you attempt to do something, it’s pretty much a guarantee that it’s going to suck.&#160; This doesn’t necessarily need to be a bad thing.&#160; Shows like&#160; <a href="http://en.wikipedia.org/wiki/America's_Funniest_Home_Videos">America’s Funniest Home Videos</a> and <a href="http://en.wikipedia.org/wiki/MXC">MXC</a> have found dozens of way to cash in on the humiliation of their participants.&#160; (And what better exemplifies pure suck than a golf ball to the groin?)</p>
<p>It, therefore, shouldn’t come as any surprise that creative pursuits are no exception to the general rule of suckiness.&#160; After all, you have to overcome inexperience <em>and</em> ineptitude to produce anything.&#160; The only way to ensure that a release doesn’t suck is to finish a first draft and revise heavily.&#160; Which requires a great deal of work.</p>
<p>Yet … as interesting as that might be, this isn’t a post about the creative process.&#160; It’s about Time Drive and I should probably admit that Time Drive 0.1 had a few … rough … edges.&#160; Sure, it mostly worked, but it was new software and did too many strange things to declare anything other than a “work in progress.”&#160; But Time Drive 0.1 was a first release and first releases suck.</p>
<p>Second releases, however, offer a chance to clean things up, refine the bleeding edge, and otherwise deliver the goods.&#160; Maybe that’s why I’m so excited to announce the release of Time Drive 0.2.&#160; This version of Time Drive is a great improvement over it’s predecessor.&#160; So much so that Time Drive 0.2 is hereby dubbed the “More S” release: more stable, more secure, more settings, and Amazon S3 storage.</p>
<p>In the remainder of this post, I’ll attempt to justify such a silly name by taking a look at a few of those new features.</p>
<p> <span id="more-1169"></span>
</p>
<h2>More Stable and Secure</h2>
<p>First up, I should probably say something about the program’s stability and security. But before doing that …</p>
<p>Isn’t it a bit ironic that stability and security have become major selling points?&#160; Go ahead and look at the advertising for any major piece of software.&#160; References to stability and security – or their closely related siblings, reliability and refinement – will feature prominently.</p>
<p>As an example, let’s analyze the promotional materials for the most recent release of Mac OS X, <a href="http://www.apple.com/macosx/refinements/">Snow Leopard</a>.&#160; In the banner advertisement below, stability and reliability form the cornerstone of the <span style="text-decoration: line-through">brainwashing</span> message: “Refinements, your Mac gets faster and easier to use.”&#160; And in the text, we catch all the buzzwords: simplicity, reliability, security, speed.&#160; In short, they’ve attempted to make make old things new by refining them.</p>
<p align="center"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Since when is reliability a selling point?" border="0" alt="Since when is reliability a selling point?" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/09/image.png" width="731" height="280" /></p>
<p align="left">Time Drive has gone through a similar type of rewrite.&#160; With the generous help of <a href="http://www.delodder.be/blog/">Philippe Delodder</a>, all of the core classes have been reformulated and reorganized: they’re new again.&#160; The end result is that all things are improved, spiffed and otherwise sped up.&#160; In short, Time Drive no longer resembles a prototype as much as a proper foundation upon which to grow.</p>
<h2><img style="border-right-width: 0px; margin: 0px 15px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Want to refine what&#39;s included in your backup and where it&#39;s stored?  Well, now you can." border="0" alt="Want to refine what&#39;s included in your backup and where it&#39;s stored?  Well, now you can." align="left" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/09/ScreenshotTimeDriveSettings.png" width="400" height="389" />More Settings</h2>
<p>And nowhere is this more apparent than in the new advanced settings dialog.&#160; In version 0.1 Time Drive handled all the important things that a backup program should.&#160; It was easy to specify which folders you wanted to backup and where the&#160; archive was to be stored.&#160; But that was about it.</p>
<p>The first version didn’t let you fully use the power of Duplicity to specify what you considered important.&#160; What if you didn’t want to backup hidden files or settings?&#160; Or what if you wanted your work files to be stored in a different location than your home files?&#160; Or what if you want to create a new backup every couple of months?</p>
<p>Time Drive 0.2 gives you that degree of control without losing the simplicity.&#160; Just like before, you get started by telling the program where you want to store the archive and which folders to include.&#160; If that’s all you need, then you’re done.&#160; Click “Ok” and let Time Drive do it’s thing.</p>
<p>But why settle for simple when you can micromanage?&#160; Need to refine the settings for an individual folder, highlight it from the list and press the “Advanced” button.&#160; From there, you have easy access to things you <em>don’t want</em> included in the backup, fine control over where it gets kept, and even the ability to remotely manage the backup sets.</p>
<p><strong>What You Exclude Can Be as Important as What You Include.</strong>&#160; Despite the fact that we should keep redundant copies of our data, sometimes there are things you just aren’t worried about.&#160; For example, you might be a Python developer and want to use Time Drive to backup your source code.&#160; The source code is important, but whenever a python script gets run, the python interpreter creates a compiled file (“.pyc”). These files are necessary for the code to run, but they don’t contain any valuable or new information.&#160; They just take up space.&#160; So, let’s <em>leave them out</em> them by adding “.pyc” to the exclude list.&#160; Just press the “Add” button and type the offending characters into the message box.&#160; Want to leave “.pyc” files out of all of your backups?&#160; You can do that too from the main exclude list.</p>
<p align="center"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Time Drive - Advanced Settings - Exclude" border="0" alt="Time Drive - Advanced Settings - Exclude" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/09/TimeDriveAdvancedSettingsExclude.png" width="569" height="399" /></p>
<p align="left"><strong>Different Storage Locations.&#160; </strong>Now, what if you want your work related backups to be kept on your company’s ftp server instead of your local hard?&#160; Time Drive has you covered there as well.&#160; Just click on the “Archive Settings” tab and tell Time Drive where you want the folder’s archive to live.&#160; You can even specify a folder specific encryption key should you so choose.</p>
<p align="center"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Screenshot - Time Drive - Advanced Folder Settings" border="0" alt="Screenshot - Time Drive - Advanced Folder Settings" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/09/ScreenshotTimeDriveAdvancedFolderSettings.png" width="569" height="399" /></p>
<p align="left"><strong>Manage Your Backup Sets.&#160; </strong>Perhaps the only downside of creating frequent and redundant backups is that old files might take up needed hard drive space.&#160; Sure, managing backup sets by hands is possible … but who wants to do that?&#160; Time Drive 0.2 makes it easy to delete your old backup sets when they’re no longer needed, thereby saving valuable hard drive space.</p>
<p align="center"><a href="http://www.oak-tree.us/blog/wp-content/uploads/2009/09/TimeDriveAdvancedManageBackupSets.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Time Drive - Advanced - Manage Backup Sets" border="0" alt="Time Drive - Advanced - Manage Backup Sets" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/09/TimeDriveAdvancedManageBackupSets_thumb.png" width="569" height="399" /></a></p>
<h2>Amazon S3 Storage</h2>
<p><!--adsensestart--></p>
<p>Which finally brings me to the biggest new addition to Time Drive, support for Amazon S3: a reliable, simple and inexpensive way to save your files over the internet.&#160; When it appeared a few years ago, S3 introduced a radically new idea: only pay for the storage you actually use.&#160; At the time, other providers charged a flat rate for a set amount of storage, regardless of whether you needed it or not.&#160; While prices ran the gamut of reasonable to outrageous, you were still paying for something that you might not be using.</p>
<p>Using S3, however, it is possible to have offsite and redundant backups while knowing that you are only getting charged for what you use.&#160; Moreover, the rates are quite reasonable, about 0.15 cents per gibabyte of data per month.&#160; For example, I currently keep all of my source code files and pictures backed up through Time Drive.&#160; In total, it amounts to about 15 GB of space.&#160; Amazon charges me about $2.25 a month for the space, which is substantially less than any other provider I’ve been able to find.&#160; Sure, there are plans that are slightly more expensive and provide more space; but that’s just it, I don’t need that additional space.&#160; I’m probably not going to use it.&#160; Which makes Amazon a really good fit for my needs.&#160; It’s cheap, it’s convenient and it’s available everywhere.&#160; Most importantly though, it’s offsite, so I’m prepared in case some sort of disaster does strike.&#160; And Time Drive works with it seamlessly.</p>
<p><!--adsensestop--></p>
<h2>Conclusion</h2>
<p>In summary, I think that Time Drive handily earns it’s “More S” label.&#160; It’s a big improvement over the previous version and steps up the stability, the number of settings, and the types of storage backends that it works with.&#160; But it still remains elegant and easy to use.&#160; In short, it’s one step closer to the overall goal of “Backup Done Right.”</p>
<p>Head on over to the <a href="http://www.oak-tree.us/blog/index.php/science-and-technology/time-drive">project’s home page</a> and check it out.</p>
<h3>Similar Posts:</h3>
<ul class="similar-posts">
<li><a href="http://www.oak-tree.us/blog/index.php/2009/08/07/time-drive2" rel="bookmark" title="August 7, 2009">Backup for Linux, Done Right - Part 2: Time Drive 0.1</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/10/05/timedrive-01-upgrades" rel="bookmark" title="October 5, 2009">Upgrading from Time Drive 0.1</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/10/07/duplicity-mac" rel="bookmark" title="October 7, 2009">Installing Duplicity on Mac OS X</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/07/07/backup-part5-2" rel="bookmark" title="July 7, 2009">Backup, Sync and Share &ndash; Part 5.2: Windows Vista Backup (Disaster Prevention)</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/10/18/time-machine-reclaim-space" rel="bookmark" title="October 18, 2009">Reclaiming Free Space from a Time Machine Backup</a></li>
</ul>
<p><!-- Similar Posts took 41.844 ms --></p>
<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/09/24/timedrive-02">Time Drive 0.2 &ndash; A &ldquo;More S&rdquo; Release: More Stable, More Secure, More Settings and Now Supports Amazon S3 Storage</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oak-tree.us/blog/index.php/2009/09/24/timedrive-02/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Filing Bugs for Time Drive or LyX-Outline</title>
		<link>http://www.oak-tree.us/blog/index.php/2009/08/23/time-drive-bugs</link>
		<comments>http://www.oak-tree.us/blog/index.php/2009/08/23/time-drive-bugs#comments</comments>
		<pubDate>Sun, 23 Aug 2009 04:30:59 +0000</pubDate>
		<dc:creator>Rob Oakes</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Bug Reports]]></category>
		<category><![CDATA[LyX-Outline]]></category>
		<category><![CDATA[Time Drive]]></category>

		<guid isPermaLink="false">http://www.oak-tree.us/blog/?p=1157</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Filing+Bugs+for+Time+Drive+or+LyX-Outline&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=Programming&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-08-23&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/08/23/time-drive-bugs&amp;rft.language=English"></span>
Even though software developers try and create a perfect product, every program has its flaws.  These can be show stopping, or merely annoying; but they are unavoidable.  Even so, unavoidability doesn’t mean that they should be tolerated.  Which is where users bear some responsibility.  If you want a better program, you need to provide feedback [...]<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/08/23/time-drive-bugs">Filing Bugs for Time Drive or LyX-Outline</a></p>
]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Filing+Bugs+for+Time+Drive+or+LyX-Outline&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=Programming&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-08-23&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/08/23/time-drive-bugs&amp;rft.language=English"></span>
<p>Even though software developers try and create a perfect product, every program has its flaws.  These can be show stopping, or merely annoying; but they are unavoidable.  Even so, unavoidability doesn’t mean that they should be tolerated.  Which is where users bear some responsibility.  If you want a better program, you need to provide feedback to the developer.</p>
<p>Given how important feedback is, I find it hugely ironic that many of the software programs used to solicit such feedback (called bugtrackers), are horrifically difficult to use.  Perhaps the single best (worst?) example is the system used by the Mozilla foundation (famed creators of Firefox and Thunderbird): <a href="http://www.bugzilla.org/">Bugzilla</a>.  The interface is backward, it’s impossible to find anything, and getting to the same page twice requires a minor miracle.</p>
<p>Knowing this upfront, I tried to find a very easy to use program for collecting feedback on LyX-Outline and Time Drive.  And I thought I had succeeded when I came across <a href="http://www.flyspray.org/">Flyspray</a>, an open source bug tracking system.  While still remaining powerful, Flyspray is fairly easy to use for both developers and users.  Unfortunately, though, it hasn’t been quite easy enough.</p>
<p>You see, even though it’s pretty simple to open a new bug report, getting to the right place isn’t the most intuitive process in the world.  A number of people have expressed confusion about where to go to complain about Time Drive.  As a result, I thought i would write a brief guide.<!--adsensestop--></p>
<h3>Step 1: Go to the Bug Tracker Website</h3>
<p>To get started, you need to head to the Time Drive and LyX-Outline bug tracker website.  It can be found at:</p>
<blockquote><p><a href="http://www.oak-tree.us/bugtracker">http://www.oak-tree.us/bugtracker</a></p></blockquote>
<h3>Step 2: Go to the Appropriate Project Page</h3>
<p>When you load the page for the first time, you will see a list of the currently open bugs for all active projects.  Depending how busy I’ve been, this list could be quite long, or quite short.  What you won’t find on this page, however, is an easy way to add new bugs.  To do that, you’ll need to navigate to the project specific page.</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="The main window lacks any way of providing feedback.  This is because you are in the wrong place." src="http://www.oak-tree.us/blog/wp-content/uploads/2009/08/TimeDriveBugReport13.png" border="0" alt="The main window lacks any way of providing feedback.  This is because you are in the wrong place." width="594" height="66" /></p>
<p>Look at the very left hand side of the tool-bar.  Underneath the username box, you will see a drop down list that says “All Projects.”  This magical list is the main way that you navigate my Flyspray based bugtracking system.</p>
<p><img style="border-bottom: 0px; border-left: 0px; margin: 10px 0px 10px 15px; display: inline; border-top: 0px; border-right: 0px" title="Select the appropriate project from the list and click &quot;Switch&quot;" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/08/TimeDriveBugReport23.png" border="0" alt="Select the appropriate project from the list and click &quot;Switch&quot;" width="424" height="95" align="right" />For example, let’s say that Time Drive just corrupted your vacation photos and you want me to know this and how angry it made you.   To communicate these thoughts (bonus points if you can do so without swearing), you need to go to the Time Drive project page.   This is as easy as clicking on the down arrow and choosing “Time Drive” from the options.  After you change the option, it is likely the page will refresh, and the main navigation menu will change.  (Though on some browsers, most notably Opera, you will need to click the “Switch” button.)</p>
<p>Now, instead of the utterly boring, “Overview” and “Tasklist” options, you should be presented with a slightly more exciting menu.  This includes the options to take a look at the “Roadmap” and more importantly, “Open a new Task anonymously.”</p>
<h3>Step 3: Complain Loudly, Thoroughly and Convincingly</h3>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="Once you are on the correct project page, you will be able to take a look at the project overview, browse the roadmap, or file your bug report." src="http://www.oak-tree.us/blog/wp-content/uploads/2009/08/TimeDriveBugReport33.png" border="0" alt="Once you are on the correct project page, you will be able to take a look at the project overview, browse the roadmap, or file your bug report." width="593" height="57" /></p>
<p>This is where you need to complain.  Tell me exactly what you think of me, my creations, and my professionalism.  Rant about how Time Drive corrupted your carefully maintained comic book collection, or how LyX-Outline destroyed your thesis.  This information is important, it helps me to improve the programs.  And getting it off your chest might help you too.  Nothing is more soothing than a good rant.  Especially when the person on the other end really wants your input.</p>
<p>Squeaky wheels tend to greased.  Thus, consider this positing as my official permission to squeak.  But to be most effective, you need to make your noise in a place where it will get noticed.  For Time Drive and LyX-Outline, this happens to be at their respective project pages.<br />
<h3>Similar Posts:</h3>
<ul class="similar-posts">
<li><a href="http://www.oak-tree.us/blog/index.php/2009/10/05/install-timedrive-ubuntu" rel="bookmark" title="October 5, 2009">Install Time Drive On Ubuntu and Other Debian Linux Distributions</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/05/13/lyx-outline" rel="bookmark" title="May 13, 2009">Introducing LyX-Outline 0.1</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/08/07/time-drive2" rel="bookmark" title="August 7, 2009">Backup for Linux, Done Right - Part 2: Time Drive 0.1</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/03/20/scrub-pc" rel="bookmark" title="March 20, 2009">How to Scrub a PC Hard Drive</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/06/09/backup-part4" rel="bookmark" title="June 9, 2009">Backup, Sync and Share &ndash; Part 4: Apple Time Machine and Samba</a></li>
</ul>
<p><!-- Similar Posts took 21.739 ms --></p>
<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/08/23/time-drive-bugs">Filing Bugs for Time Drive or LyX-Outline</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oak-tree.us/blog/index.php/2009/08/23/time-drive-bugs/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Time Drive 0.1.5: Incremental Changes</title>
		<link>http://www.oak-tree.us/blog/index.php/2009/08/14/time-drive3</link>
		<comments>http://www.oak-tree.us/blog/index.php/2009/08/14/time-drive3#comments</comments>
		<pubDate>Fri, 14 Aug 2009 15:19:10 +0000</pubDate>
		<dc:creator>Rob Oakes</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Cool Stuff]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Raves]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Cygwin]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Time Drive]]></category>

		<guid isPermaLink="false">http://www.oak-tree.us/blog/?p=1146</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Time+Drive+0.1.5%3A+Incremental+Changes&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=Cool+Stuff&amp;rft.subject=Programming&amp;rft.subject=Raves&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-08-14&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/08/14/time-drive3&amp;rft.language=English"></span>
It’s been an interesting couple of days.  I was rather honored to see that Lifehacker did a short highlight of Time Drive, which I thought was pretty cool.  It’s always been one of my goals to have something featured in Lifehacker or Gizmodo, and now I’m going to have to scratch that off the list [...]<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/08/14/time-drive3">Time Drive 0.1.5: Incremental Changes</a></p>
]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Time+Drive+0.1.5%3A+Incremental+Changes&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=Cool+Stuff&amp;rft.subject=Programming&amp;rft.subject=Raves&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-08-14&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/08/14/time-drive3&amp;rft.language=English"></span>
<p><img style="border-bottom: 0px; border-left: 0px; margin: 10px 0px 10px 15px; display: inline; border-top: 0px; border-right: 0px" title="Lifehacker induced change in web traffic.  Looks like move to exponential decay." src="http://www.oak-tree.us/blog/wp-content/uploads/2009/08/TimeDriveWebTraffic.png" border="0" alt="Lifehacker induced change in web traffic.  Looks like move to exponential decay." width="326" height="225" align="right" />It’s been an interesting couple of days.  I was rather honored to see that <a href="http://www.lifehacker.com">Lifehacker</a> did a short <a href="http://lifehacker.com/5335661/time-drive-does-incremental-backup-across-networks">highlight of Time Drive</a>, which I thought was pretty cool.  It’s always been one of my goals to have something featured in Lifehacker or Gizmodo, and now I’m going to have to scratch that off the list of goals.  But that’s okay, I’ve got other things to fill the void.  Like … how exactly does one get invited to present at <a href="http://www.ted.com/">TED</a>?</p>
<p>On another note … while I knew that I would see some kind of traffic bump due to the article in Lifehacker, I wasn’t necessarily prepared for the magnitude.  In mathematics, there is this thing called a step function.  It’s where you move from one value to another more or less instantaneously.  It looks like a step, hence the name.  Sure, It may not actually exist, since even very dramatic shifts still have a non vertical slope; but even so, the change in my traffic might as well be a step-function.  Between yesterday and today, I’ve had more visits to this site than I’ve had in much of the rest of the year combined.  I think that’s kind of cool, though it probably won’t last.</p>
<p>(This might be a good time to say that I am actually rather proud of my “lackluster” web traffic.  Though it might not necessarily be that impressive, it is, nevertheless, <em>mine. </em>I’ve worked hard for it, and I revel in the fact that some 40 to 50 people each day find the unorganized garbage of my mind intoxicating.  Some of them even <em>come back</em>!)</p>
<p>But as interesting as that might be, traffic stats is probably not why you're here.  Good thing, since I’ve got announcements.<span id="more-1146"></span></p>
<h2>Time Drive Update</h2>
<p>As of this moment, Time Drive has been updated to version 0.1.5 and is available on the <a href="http://www.oak-tree.us/blog/index.php/science-and-technology/time-drive">project page</a>.</p>
<p>Let me start by saying what this release isn’t.  I really wanted to write a blog post and say, “Time Drive is available, and  now it’s really easy to install!”  In the past few days, this has been by far the most requested “feature” and I’ve tried hard to deliver.  (Honest!)  Unfortunately, creating a binary installer for Windows and a self contained package for Mac has proven … illusive.  I’m not really a programmer and the inner workings of py2app and py2exe are tremendously frustrating.  I have made some serious headway, but stand-alone installers are still “forthcoming.”</p>
<p>But a lot of things are new, and some of them are even shiny!  <img style="border-bottom: 0px; border-left: 0px; margin: 10px 15px 15px 0px; display: inline; border-top: 0px; border-right: 0px" title="Time Drive 0.1.5 - Main Window" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/08/TimeDrive0.1.5MainWindow.png" border="0" alt="Time Drive 0.1.5 - Main Window" width="425" height="334" align="left" />Moreover, the relatively huge interest has gotten me excited about the program, and I’ve spent some time refining things that didn’t quite work right.  “So …” you ask, “What’s different?”</p>
<h2>New Stuff</h2>
<p>For starters, the Snapshot History on the main window actually works now.  If you want to restore a previous version of a file, you can select it from the list and click the add button (+) to open the archive browser.  It will automatically load the snapshot as it looked on the selected day and time.</p>
<p>If you can’t find your file there, don’t despair, from within the archive browser, you can easily navigate forward and backward between snapshots by using the arrow buttons or by dragging the slider to the appropriate place.  Once you have it sitting on the snapshot of interest, hit the refresh button to reload the file list.  This is starting to get closer to the overall vision of the program that I originally stole.  Now, you can actually use Time Drive to keep tabs on how your files change.</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="Time Drive 0.1.5 - Archive Browser" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/08/TimeDrive0.1.5ArchiveBrowser.png" border="0" alt="Time Drive 0.1.5 - Archive Browser" width="630" height="313" /></p>
<p><!--adsensestart-->I’ve also been trying to get things cleaned up so that the program runs better.  I went back and modified the code so that all long running processes use their own threads.  This should help the UI from freezing and lets you do several things at once.</p>
<p>I also cleaned up the way that Time Drive interfaces with cron.  Now it works on Mac without requiring tweaks.  In the relatively near future, I’ll write a proper backend for Windows so that is uses the Windows Vista task scheduler.  Installing cron on Cygwin is just too much of a pain.</p>
<p>Looking into the future, I foresee support for Amazon S3, pruning and naming snapshots, and advanced folder options.  There may be other changes as inspiration strikes.  Expect additional announcement soon.</p>
<h2>Conclusion</h2>
<p>Well, that’s it.  Why this may be a bit of a minor addition, there’s still some nice stuff.  (I know, I’m biased.)  Head over the <a href="http://www.oak-tree.us/blog/index.php/science-and-technology/time-drive">download page</a> and check it out.<!--adsensestop--><br />
<h3>Similar Posts:</h3>
<ul class="similar-posts">
<li><a href="http://www.oak-tree.us/blog/index.php/2008/11/19/ironpython-part3" rel="bookmark" title="November 19, 2008">Learning IronPython – Part 3 – A Beautiful Start</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/08/23/time-drive-bugs" rel="bookmark" title="August 23, 2009">Filing Bugs for Time Drive or LyX-Outline</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/03/20/scrub-pc" rel="bookmark" title="March 20, 2009">How to Scrub a PC Hard Drive</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/10/22/surface-work" rel="bookmark" title="October 22, 2009">On the Surface Versus Working Deep</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/03/01/backup-archive" rel="bookmark" title="March 1, 2009">Backup and Archive</a></li>
</ul>
<p><!-- Similar Posts took 26.940 ms --></p>
<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/08/14/time-drive3">Time Drive 0.1.5: Incremental Changes</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oak-tree.us/blog/index.php/2009/08/14/time-drive3/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Backup for Linux, Done Right - Part 2: Time Drive 0.1</title>
		<link>http://www.oak-tree.us/blog/index.php/2009/08/07/time-drive2</link>
		<comments>http://www.oak-tree.us/blog/index.php/2009/08/07/time-drive2#comments</comments>
		<pubDate>Fri, 07 Aug 2009 17:39:48 +0000</pubDate>
		<dc:creator>Rob Oakes</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Cool Stuff]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Linux Backup]]></category>
		<category><![CDATA[Time Drive]]></category>
		<category><![CDATA[Time Machine]]></category>

		<guid isPermaLink="false">http://www.oak-tree.us/blog/?p=1117</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Backup+for+Linux%2C+Done+Right+-+Part+2%3A+Time+Drive+0.1&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=Cool+Stuff&amp;rft.subject=Featured&amp;rft.subject=Programming&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-08-07&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/08/07/time-drive2&amp;rft.language=English"></span>
In part 1 of this article, I shared a few of the frustrations and reasons why I decided to write my own backup utility rather than submit to the tyranny of currently available solutions.  While some might find those ruminations interesting, the vast majority are probably far more interested in the end result.  There is [...]<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/08/07/time-drive2">Backup for Linux, Done Right - Part 2: Time Drive 0.1</a></p>
]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Backup+for+Linux%2C+Done+Right+-+Part+2%3A+Time+Drive+0.1&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=Cool+Stuff&amp;rft.subject=Featured&amp;rft.subject=Programming&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-08-07&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/08/07/time-drive2&amp;rft.language=English"></span>
<p><!--noadsense--><img style="border-right-width: 0px; margin: 0px 15px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Time-Drive-Icon[11]" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/08/TimeDriveIcon11.jpg" border="0" alt="Time-Drive-Icon[11]" width="355" height="330" align="left" />In <a href="http://www.oak-tree.us/blog/index.php/2009/08/07/time-drive1">part 1</a> of this article, I shared a few of the frustrations and reasons why I decided to write my own backup utility rather than submit to the tyranny of currently available solutions.  While some might find those ruminations interesting, the vast majority are probably far more interested in the end result.  There is a reason why “Get to the point” is one of the most important sentences in the English language.</p>
<p>Here’s the short version: After becoming tremendously frustrated by the state of backup on Linux, I decided to take matters into my own hands and create my own tool.</p>
<p>And though I only want a few things, I want that tool to do each very well.  First, I’m looking for a solution that can incrementally backup over the network and let me restore a file from an existing snapshot.  Second, those snapshots should be compressed, encrypted and secure.  Third, it should be easy to browse old backups for existing files and restoration should be a one-click affair.  Fourth, I want a backup system that can protect me from disaster, carelessness and pathological stupidity.<span id="more-1117"></span>Time Drive is based on the excellent command line program, <a href="http://duplicity.nongnu.org/">Duplicity</a> though it was also inspired by another backup utility, <a href="http://www.oak-tree.us/blog/index.php/2009/07/20/back-in-time1">Back In Time</a>.  Because it uses Duplicity for its backend, Time Drive plugs into the same industrial strength utilities used to backup and restore enormous sets of enterprise data.  It just removes the industrial level complexity.</p>
<p>Like Back In Time for Linux and Time Machine for Mac OS X, Time Drive not only keeps a copy of the most recent file, but it remembers how that file looked at many points in the past.  Put another way, it creates an incremental snapshot which lets you restore to a previous version should you so desire.</p>
<p>The Time Drive main window is designed to be simple and functional.  Options related to backing up files are on the left, options related to restoring files are on the right.  If you want to restore from a remote archive which is not currently specified in your settings, you can do so through the “Advanced Restore Options.”</p>
<p align="center"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Time Drive - Main Window" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/08/TimeDriveMainWindow.png" border="0" alt="Time Drive - Main Window" width="545" height="456" /></p>
<h2>Over the Network or Across the World</h2>
<p>Backups can be made to remote servers and web services that support any one of the following protocols: file transfer protocol (ftp), secure shell (ssh), secure copy (scp), rsync, webdav (http), and secure webdav (https).  Time Drive also supports backups to a locally attached drive or mounted volume.  This includes shares that are mounted with virtual filesystems like sshfs, smbfs, and s3fs.</p>
<p><img style="border-right-width: 0px; margin: 10px 0px 10px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="You can choose where you want to backup your files under the &quot;General&quot; tab of the settings dialog." src="http://www.oak-tree.us/blog/wp-content/uploads/2009/08/TimeDriveGeneralTab3.png" border="0" alt="You can choose where you want to backup your files under the &quot;General&quot; tab of the settings dialog." width="388" height="344" align="right" />You can configure the remote backup by clicking on the general tab of the settings pane.  Then, move the option to “Use a remote directory (SCP, WebDav or FTP).”  From the drop down list, choose the communications protocol.</p>
<p>If making a backup to ftp or webdav (http), enter the name of the host and the path to your backup folder as a standard web url.  It should look like:</p>
<p>computer.name.com/path/to/folder</p>
<p>For example, the backup path to my webdav share is:</p>
<p>backup.oak-tree.us/RobOakes/Backup</p>
<p>If backing up by scp or ssh, you will need to use a second slash after the server name, for example:</p>
<p>backup.oak-tree.us//RobOakes/Backup</p>
<p>Next, enter the username and password that you use to access the server and some sort of passkey in the “Encrypt Files” box.  (While future versions of Time Drive will allow users to choose whether or not they wish to encrypt their files, this has not yet been implemented.)  When finished, you can check the connection by clicking on the “Check Connection” button to the right of url text box.  If Time Drive is able to connect to the store, a little green check mark will appear.</p>
<h2>Restoring Files</h2>
<p>Should you delete a file that you needed, you can quickly browse or search the archive to find it and restore it.  Need to restore a bunch of files?  You can add as many as needed to the queue and then restore them with a single click.  The restore dialog is accessed by clicking on the “Add files” button of the main window.  The restore dialog itself allows you to browse the folders available in your backup, and any subfolders of the archive.</p>
<p style="text-align: center"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Should you delete a file, Time Drive makes it easy to explore or search your archive." src="http://www.oak-tree.us/blog/wp-content/uploads/2009/08/TimeDriveRestoreFiles.png" border="0" alt="Should you delete a file, Time Drive makes it easy to explore or search your archive." width="650" height="285" /></p>
<p>But what if you need access to a file in your work archive and you happen to be at home?  Time Drive makes it easy to brose and restore from any archive, anywhere.  Simply type in the url and click “Add files” to enter the restore files dialog.</p>
<p align="center"><img style="border-right-width: 0px; margin: 0px 0px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Time Drive - Advanced Restore[4]" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/08/TimeDriveAdvancedRestore4.png" border="0" alt="Time Drive - Advanced Restore[4]" width="550" height="106" /></p>
<h2>Set It, Then Forget It</h2>
<p align="left"><img style="border-right-width: 0px; margin: 10px 15px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Time Drive can be used to backup as many, or as few, folders as you like." src="http://www.oak-tree.us/blog/wp-content/uploads/2009/08/TimeDriveInclude3.png" border="0" alt="Time Drive can be used to backup as many, or as few, folders as you like." width="388" height="344" align="left" />While Time Drive can be configured to work many different ways, file backup should ultimately be a very simple affair.  True, it’s nice to have more advanced tools available, but most things in life aren’t really all that complicated.</p>
<p align="left">As a result, setting up Time Drive for the first time is designed to be as easy as possible.  First, pick where you want to perform your backups: either to the local machine, or across the network.  Next, enter in a passkey to encrypt your backup files and keep them safe.  Finally, choose which folders you want to see included in the job.  When finished, click “Ok.”</p>
<p align="left">Because each folder is a run as a separate duplicity script, you can always re-add that folder at a later time and Time-Drive will update the existing snapshot with the most recent information.  All of the existing history will be there should you ever need to access it.</p>
<p><img style="border-right-width: 0px; margin: 10px 0px 10px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Time Drive can be scheduled so that it runs automatically and in the background.   You can also set it so that it notifies you when backup jobs start and when they finish." src="http://www.oak-tree.us/blog/wp-content/uploads/2009/08/TimeDriveOptions3.png" border="0" alt="Time Drive can be scheduled so that it runs automatically and in the background.   You can also set it so that it notifies you when backup jobs start and when they finish." width="388" height="344" align="right" />Time Drive also makes it easy to schedule automated backups through the use of the powerful crontab utility available on most *nix machines.  Because it uses cron, there is no need to have a dedicated background process.  (Though cron must be running for scheduled backups to work.)</p>
<p>Automated backups are configured by opening the settings dialog and navigating to the “Options” tab.  Then, just pick how frequently you would like the program to run: every hour, day, week or month.  When done, select “Ok.”</p>
<h3>Notifications and Feedback</h3>
<p>When looking at other solutions, I quickly became frustrated by the way which they handled user notifications.  In some cases, the program provided a level of detail that was simply overwhelming.  In others, it didn’t provide any feedback whatsoever; even when there was a problem.</p>
<p>With Time Drive, I’ve tried to split the difference.  It uses the notification system of Ubuntu 9.04 and will let a user know when new backup jobs start and it finishes, if there is a problem, it will let you know that too.  But for those who would rather not be bothered with such trivial things, the notifications can be  easily disabled through the settings tab.</p>
<p><img style="border-right-width: 0px; margin: 10px 15px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Time Drive - Backup Started[7]" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/08/TimeDriveBackupStarted7.png" border="0" alt="Time Drive - Backup Started[7]" width="306" height="90" align="left" /></p>
<h2>Beta Software</h2>
<p align="left">Even though Time Drive is relatively full featured and offers a convenient backup package, it is still beta software.  That means that it needs to be tested, beat upon and otherwise tortured.  As you do so, I would ask that you be a bit patient and mind the potholes.  If it doesn’t quite meet your needs, please leave a bug report or feature request on the <a href="http://www.oak-tree.us/bugtracker/">bugtracker page</a>.  Be as specific as possible and I will try to incorporate your ideas into the next release.</p>
<h2>Conclusion</h2>
<p align="left">With Time Drive, I finally have a backup utility for Linux that does things right.  It can backup to a computer on the network or across the internet; keeps incremental snapshots of only the files that have changed; makes file restoration a one-click affair; and keeps my personal information safe.  What’s better, no tweaks or hacks are required to make it work the way that I want.  In short, I finally have something that “Just Works” without having to stick some stupid qualifier in front.<br />
______________________________________________________________</p>
<p align="left">If you are interested in downloading, testing or using Time Drive, you can find additional information on the <a href="http://www.oak-tree.us/blog/index.php/science-and-technology/time-drive">project homepage</a>.  This includes installation instructions for Time Drive, Duplicity and PyQt in addition to the program documentation.</p>
<h3>Similar Posts:</h3>
<ul class="similar-posts">
<li><a href="http://www.oak-tree.us/blog/index.php/2009/07/07/backup-part5-2" rel="bookmark" title="July 7, 2009">Backup, Sync and Share &ndash; Part 5.2: Windows Vista Backup (Disaster Prevention)</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/10/05/timedrive-01-upgrades" rel="bookmark" title="October 5, 2009">Upgrading from Time Drive 0.1</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/09/24/timedrive-02" rel="bookmark" title="September 24, 2009">Time Drive 0.2 &ndash; A &ldquo;More S&rdquo; Release: More Stable, More Secure, More Settings and Now Supports Amazon S3 Storage</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/07/20/back-in-time2" rel="bookmark" title="July 20, 2009">Back In Time (Part 2): Over the Network and Across the World</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/10/07/duplicity-mac" rel="bookmark" title="October 7, 2009">Installing Duplicity on Mac OS X</a></li>
</ul>
<p><!-- Similar Posts took 44.211 ms --></p>
<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/08/07/time-drive2">Backup for Linux, Done Right - Part 2: Time Drive 0.1</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oak-tree.us/blog/index.php/2009/08/07/time-drive2/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Backup for Linux, Done Right- Part 1: A Mini Melodrama</title>
		<link>http://www.oak-tree.us/blog/index.php/2009/08/07/time-drive1</link>
		<comments>http://www.oak-tree.us/blog/index.php/2009/08/07/time-drive1#comments</comments>
		<pubDate>Fri, 07 Aug 2009 04:58:08 +0000</pubDate>
		<dc:creator>Rob Oakes</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Cool Stuff]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Linux Backup]]></category>
		<category><![CDATA[Time Drive]]></category>
		<category><![CDATA[Time Machine]]></category>

		<guid isPermaLink="false">http://www.oak-tree.us/blog/?p=1108</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Backup+for+Linux%2C+Done+Right-+Part+1%3A+A+Mini+Melodrama&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=Cool+Stuff&amp;rft.subject=Featured&amp;rft.subject=Programming&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-08-07&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/08/07/time-drive1&amp;rft.language=English"></span>
It is a terrible thing to realize that you are stuck in a rut.  Being in a rut effectively means that you’ve stopped advancing and life has evolved to monotony.  No one likes to be around people in ruts, but it’s even worse to discover that you are personally trapped in one.  And, most unfortunately, [...]<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/08/07/time-drive1">Backup for Linux, Done Right- Part 1: A Mini Melodrama</a></p>
]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Backup+for+Linux%2C+Done+Right-+Part+1%3A+A+Mini+Melodrama&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=Cool+Stuff&amp;rft.subject=Featured&amp;rft.subject=Programming&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-08-07&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/08/07/time-drive1&amp;rft.language=English"></span>
<p><img style="border-right-width: 0px; margin: 0px 15px 15px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Time Drive" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/08/TimeDriveIcon.jpg" border="0" alt="Time Drive" width="355" height="330" align="left" /></p>
<p>It is a terrible thing to realize that you are stuck in a rut.  Being in a rut effectively means that you’ve stopped advancing and life has evolved to monotony.  No one likes to be around people in ruts, but it’s even worse to discover that you are personally trapped in one.  And, most unfortunately, I am in a rut.</p>
<p>Don’t believe me?  Take a look at the home page of this blog.  You will likely notice that a full six of the ten most recent posts have dealt with one subject: backing up your computer.  That’s pretty conclusive evidence of a rut.</p>
<p>Now, <a href="http://www.oak-tree.us/blog/index.php/2009/03/01/backup-archive">backing up your computer is a very important thing to do</a>; you should do it regularly and <a href="http://www.oak-tree.us/blog/index.php/2009/01/22/backup-part1">have a plan</a>.  But … well … it’s boring.  Talking, thinking and writing about nothing but backup is dull.  As one of the doctors I work with likes to say, “That isn’t sexy.  If I’m going to spend any time with it – women, food, wine; it doesn’t matter – it should be sexy.”</p>
<p>He’s got a valid point, backup is not “sexy” and I’d like to write about things that are, at least for a while.  This, therefore, will be my last post on backups, archives, or servers for the relatively foreseeable future (technology is just too cool to lay it aside for too long).  But before doing that, I want summarize where I ended up in my quest for the ultimate backup system.</p>
<p>Backup on Mac is taken care of, I use <a href="http://www.oak-tree.us/blog/index.php/2009/06/09/backup-part4">Time Machine to a Samba share</a>.  More adventurous persons than I might even say that this arrangement approaches sexy.  It’s convenient, fast, and robust.  It even covers disaster recovery.</p>
<p>Backup on Windows is also covered.  The <a href="http://www.oak-tree.us/blog/index.php/2009/07/05/backup-part5-1">built-in file backup</a> is easy to use and works well.  Moreover, <a href="http://www.oak-tree.us/blog/index.php/2009/07/07/backup-part5-2">setting up a disaster recovery system is relatively painless</a>.</p>
<p>But the third major operating system, Linux, is a bit of the odd-man out.  Certainly, you can find some excellent backup systems, <a href="http://www.oak-tree.us/blog/index.php/2009/07/20/back-in-time1">Back In Time</a> is one such example.  With a bit of work, <a href="http://www.oak-tree.us/blog/index.php/2009/07/20/back-in-time2">you can even tweak it so that it is almost perfect</a>.  But it’s the “almost perfect” and closely related cousins (“mostly useful” and “good enough”) that are the problem.  They have those stupid qualifiers – almost, mostly, enough – bolted on.</p>
<p>Any time you hear a qualifier, you can rest assured that you aren’t going to like what follows.  Consider the rather innocuous phrase, “that may be a problem.”   Here, the term “may,” makes an already bad situation much worse.  Instead of specifying some probability of problemhood, it all but guarantees it.  Positive qualifiers are just as bad.</p>
<p>As a result, it angers me that nearly every backup program available for Linux requires some kind of qualifier.  It shouldn't be like this.  Linux is a brilliant operating system in practically every way.  It is highly integrated, wonderfully modular and tremendously easy to extend.  So … after finding that nearly every backup utility in existence has failed to meet my needs, I found the situation intolerable and decided to do something about it.</p>
<p>I wrote my own.<span id="more-1108"></span></p>
<h2>Backgrounds and Backends</h2>
<p>Fixation and ruts can make you do silly things like that.  Instead of just accepting the limitations of an existing situation, a fixated person will demand that the world bend to their expectations.  While this sometimes leads to great advances, more often it results in interpersonal disasters of epic scale.  And the general rule is, the more menial the detail, the larger the scandal.  (At this point, it might be argued that backup to an external hard drive versus across the network is a rather menial detail.  To all such detractors, all I can say is: stuff it.  This is my story.)</p>
<h3>Basic Needs</h3>
<p>Luckily, however, the story of my backup utility isn’t nearly so sordid.  This is probably because my needs are actually pretty simple.  I need a backup utility to do just a few things, but I require that it does them well:</p>
<ol>
<li>It should create versioned snapshots of my drive.  This lets me restore a file to any number of past states.</li>
<li>The utility should only transfer the portions of the file or directory that have changed.  This makes the backup operation quick and efficient.</li>
<li>I should be able to backup over a network or across the internet.  (Very important!)</li>
<li>Restoring a file should be quick, easy and painless. A backup is only as good as your ability to get at the information.  And like it or not, information will be lost due to disaster, carelessness or miscellaneous stupidity.</li>
</ol>
<p>Being a somewhat clever person, I didn't to avoid duplicating as much work as possible.  As a result, I started creating my program by reviewing the application that comes closest to doing what I want: Back In Time.  The Back In Time user interface is simple and elegant.  More importantly, though, the configuration options make sense.  Whether you want to run a backup, give your snapshot a name, or just get rid of it; you don’t have to go hunting to find the controls.  Additionally, Back In Time makes good use of existing open source programs to actually do the backing up.  Though they might be a bit old, rsync and the Unix copy command, cp, are a formidable duo.<img style="border-right-width: 0px; margin: 10px 0px 10px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Clockwork" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/08/Clockwork.jpg" border="0" alt="Clockwork" width="426" height="282" align="right" /></p>
<p>But I quickly discovered something unfortunate, Back In Time really couldn’t be tweaked to meet all of my requirements.  You see, it utilizes a technique called hard-linking to create space efficient repositories.  But hard links only work as long as they are on the same hard drive.  Because I want to store my files on the network or across the internet, that isn't good enough.</p>
<h3>Duplicity</h3>
<p>So, I started to look elsewhere for other options, which is when a colleague pointed me toward a command line script called <a href="http://duplicity.nongnu.org/">Duplicity</a>.  In a striking bit of irony, while the GUI tools of Linux backup are all fundamentally flawed, the command line versions are the best in existence.  They easily accomplish all of the requirements on my list, and do a great many things I’ve never even heard of.  As a result, if you are willing to roll up your sleeves and hit the learning curve, there is nothing that you can’t accomplish.  And, as you might deduce from my glowing introduction, Duplicity makes short work of my requirements list.</p>
<p>Can it do incremental backup?  Yes.  What about backup over the network?  Ditto.  In fact, it handles most protocols I’ve heard of, and quite a few that I haven’t.  Should incremental through ssh, webdav, ftp, smb, or imap be insufficient, it also supports backup to Amazon S3.  File restoration is also relatively painless, though you have to work through the command line interface to do so.</p>
<p>And that’s only for starters, Duplicity also supports encryption via passphrase or passkey, compression of the files into archives, and local caching of file signatures so that backup operations are lightning quick.  I decided relatively quickly that Duplicity would be the ideal backend for my utility.</p>
<h2>Frontend and Features</h2>
<p><!--adsensestart--><br />
But while a solid foundation is a great starting point, it can only get you so far.  After all, you don’t brag up the brickwork and reinforced concrete of your newly purchased home, you’re far more likely to show off the kitchen and home theater.</p>
<p>For a program, the points of interest are going to be the user interface.  Which makes two lessons learned while working on <a href="http://www.oak-tree.us/blog/index.php/science-and-technology/lyx-outline">LyX-Outline</a> very important: 1) It’s really hard to put together an interface that is both intuitive and uncluttered.  2)  I’m really bad at it.  Both points prompted me to act on the advice of a famous painter:</p>
<blockquote><p>Good artists copy; great artists steal.</p></blockquote>
<p>Thus, I decided to steal the user interface from Back In Time.  (It’s open source, which makes it okay.)  And speaking from a practical standpoint, why wouldn’t I?  The developer spent a great deal of time working out how he wanted his program to work.  It would be silly to duplicate that effort.  Moreover, the fact that I was able to rave about it for nearly 2800 words means that it wasn't wasted effort.  As you browse the menus and configuration panes of my derivative tool, you will probably notice that it bears a striking resemblance to other programs.  A few things will be “innovatively different,” but not many.  Just remember, I stole the interface.  Wholesale.  But I’m a discriminating thief, and only stole the best parts.</p>
<p>Which brings us to the real point of interest of this post and my program: the feature list.  In <a href="http://www.oak-tree.us/blog/index.php/2009/08/07/time-drive2 ">part 2</a> of this article, we’ll take a look at my little creation, which I have unimaginatively dubbed “Time Drive.”<!--adsensestop--><br />
<h3>Similar Posts:</h3>
<ul class="similar-posts">
<li><a href="http://www.oak-tree.us/blog/index.php/2010/04/15/moving-hosts" rel="bookmark" title="April 15, 2010">Moving to blog.oak-tree.us</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/03/13/google-voice" rel="bookmark" title="March 13, 2009">Living with Google Voice</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/03/01/backup-archive" rel="bookmark" title="March 1, 2009">Backup and Archive</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/06/18/head-feet" rel="bookmark" title="June 18, 2009">The Head Balances the Feet</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2008/12/08/greetings-from-a-horseman" rel="bookmark" title="December 8, 2008">Greetings From a Horseman</a></li>
</ul>
<p><!-- Similar Posts took 16.815 ms --></p>
<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/08/07/time-drive1">Backup for Linux, Done Right- Part 1: A Mini Melodrama</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oak-tree.us/blog/index.php/2009/08/07/time-drive1/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Introducing LyX-Outline 0.1</title>
		<link>http://www.oak-tree.us/blog/index.php/2009/05/13/lyx-outline</link>
		<comments>http://www.oak-tree.us/blog/index.php/2009/05/13/lyx-outline#comments</comments>
		<pubDate>Wed, 13 May 2009 22:16:12 +0000</pubDate>
		<dc:creator>Rob Oakes</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Cool Stuff]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Raves]]></category>
		<category><![CDATA[Writing and Literature]]></category>

		<guid isPermaLink="false">http://www.oak-tree.us/blog/?p=914</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Introducing+LyX-Outline+0.1&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=Cool+Stuff&amp;rft.subject=Featured&amp;rft.subject=Programming&amp;rft.subject=Raves&amp;rft.subject=Writing+and+Literature&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-05-13&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/05/13/lyx-outline&amp;rft.language=English"></span>
Writing anything - whether it be a book, or a short story or an angry letter to your boss - is substantially more than starting from the first idea moment of inspiration and continuing to the final draft. Rather, writing involves a fair number of idea fragments, fleeting moments of inspiration, and a tremendous number [...]<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/05/13/lyx-outline">Introducing LyX-Outline 0.1</a></p>
]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Introducing+LyX-Outline+0.1&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=Cool+Stuff&amp;rft.subject=Featured&amp;rft.subject=Programming&amp;rft.subject=Raves&amp;rft.subject=Writing+and+Literature&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-05-13&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/05/13/lyx-outline&amp;rft.language=English"></span>
<p><!--adsensestart-->
<p>Writing anything - whether it be a book, or a short story or an angry letter to your boss - is substantially more than starting from the first idea moment of inspiration and continuing to the final draft. Rather, writing involves a fair number of idea fragments, fleeting moments of inspiration, and a tremendous number of dead ends.</p>
<p>It is incredibly unfortunate that most writing software, however, is geared to organizing and structuring the document after most of the hard work has already happened.&#160; It simply assumed that most of the planning and layout has already happened and the author is ready to string words together.&#160; Unfortunately, this assumption overlooks one important truth: ideas are best defined as they are expressed.&#160; Thus, it's usually about the time that the a writer sits down to compose the draft, that the document's true structure becomes apparent.&#160; In my own case, this often leads to a flurry of reorganization.&#160; And it’s during the restructuring that the real battle begins.</p>
<p>When in full creative passion,&#160; I am typically working with three or four different programs all at the same time: OneNote is open so that I can access my ideas, Word is there to start collecting the somewhat finished text, and I'll also probably be using a MindMapper so that I can see a visual representation of the document structure.&#160; The tools are separate and don't communicate with one another.&#160; Thus, a change made in one place needs to be made everywhere.&#160; And all too often, that I end up fighting the word-processor and the notetaker, and the mind mapper.&#160; It is tremendously frustrating to battle the tools of your adopted trade.&#160; Luckily, I am not alone in my frustration.</p>
<p>In the past everal years, a number of programs have become available that leave the linear model of writing behind.&#160; On the Mac platform, one such tool looms above the others: Scrivener.&#160; Central to Scrivener's function are two important metaphors: that of the outline and that of the corkboard.&#160; And it works really, really well.&#160; There are just a few minor problems.&#160; First: Scrivener is only available for Mac and Scrivener's lead developer has made it clear that there won't be versions for other platforms.&#160; Second: Scrivener was really designed with creative writing in mind.&#160; Thus, while it can be used for long and complicated documents, this is a slightly less than straightforward process.&#160; Last, to create said fancy documents, Scrivener requires the raw use of a markup language (and all of the associated headaches that come with it).</p>
<p> <!--adsensestop-->
<p>The document processor, LyX, however, excels in many areas where Scrivener falls short.&#160; It is built upon the mature and robust underpinnings of LaTeX, the typesetting language of choice in the science and engineering.&#160; And more importantly, it is easy to use (where LaTeX most decidedly is not).&#160; But it fails in the same way as Microsoft Word and other word processors, it is a linear writing tool and doesn’t offer a great deal of work-flow flexibility.&#160; That is where LyX-Outline comes in.</p>
<p>LyX-Outline is a marriage between Scrivener's organizational tools and LyX's typesetting tools.</p>
<p align="center">&#160;<img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="LyX-Outline Main Window (Mac OS X)" border="0" alt="LyX-Outline Main Window (Mac OS X)" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/05/lyxeditormac.png" width="600" height="535" /></p>
<p> <span id="more-914"></span><br />
<h3>Looking for Flexibility</h3>
<p>While you can download and play with LyX-Outline, please reember that is still a <em>forthcoming</em> add-on to the LyX.&#160; And while you find it useful, this release is an <em>alpha </em>level technical preview.&#160; Right now, you can view the structure of your document at a glance in the corkboard, move things around, poke about in the outliner, and even jot your winded thoughts with the very basic plain text editor.</p>
<p>But even though some of the functionality is lacking, you can start to explore.&#160; And as you do so, one of the first things you might notice is that LyX-Outline has been designed with flexibility in mind.&#160; Nearly all of the tools can be docked, ripped away, or hidden if they are not needed.&#160; The work environment should adapt to your work habits, not the other way round.&#160; Whenever the writer needs to adapt to the environment, a moment of productivity and a spark of life has been lost.</p>
<p align="center"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="All of the tools in LyX-Outline can be docked, or float freely (Mac OS X)." border="0" alt="All of the tools in LyX-Outline can be docked, or float freely (Mac OS X)." src="http://www.oak-tree.us/blog/wp-content/uploads/2009/05/lyxfloatingtoolsmac.png" width="650" height="374" /></p>
<h3>A Quick Overview</h3>
<p>The main interface consists of three main elements.&#160; This includes the document map, the editor pane, and the dock tools.&#160; As described above, the document map and the dock tools can be relocated, docked or left free floating (depending on your preference).&#160; And if you don't find them useful, they can quickly be hidden.</p>
<p>The document map lets you see a hierarchical list of every item in your project.&#160; Selecting one of the items displays its content's in the editor pane.&#160; The editor pane is the main text processing portion of LyX-Outlineand can be toggled between a text editor (plain text only at the moment) and a corkboard view.</p>
<p>In addition to the main editor and corkboard, there is an additional corkboard and outliner tool available as a dockable widgets.&#160; Just as in Scrivener, you can view the pieces of <img style="border-right-width: 0px; margin: 10px 0px 10px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="LyX-Outline Corkboards (Linux)" border="0" alt="LyX-Outline Corkboards (Linux)" align="right" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/05/lyxcorkboardslinux.png" width="350" height="333" />your documents in many way.&#160; Every item is a document, and an index card, and an outline point.&#160; They are intimately tied together and any change made to the order or content of one will be reflected everywhere.&#160; The document map is used to navigate the content of the main window.</p>
<p>The dock tools, however, can be controlled separately.&#160; You can view the entire document, or filter to a specific level in the hierarchy via a drop-down menu.&#160; In the future, filtering by search term, keyword, document structure, or tag will also be possible.</p>
<h3>Item Summary and Organization</h3>
<p>The health of any written work can also be greatly improved by connecting a simple synopsis to a larger chunk of text.&#160; This makes it much easier to check the flow of your work at a glance .&#160; A summary can easily be added to any individual item in the collection by double clicking on it's index card in the corkboard or the synopsis column in the outliner.&#160; The summary text is independent from the full text and can include pertinent information that helps you structure the document.&#160; For now, the synopsis must be entered by hand; however, future versions will allow for automatic generation of the synopsis from the text.</p>
<p align="center"><a href="http://www.oak-tree.us/blog/wp-content/uploads/2009/05/lyxoutliner-filterlinux.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="The outline pane can be filtered using the drop down menu.  Choose to see the structure of the entire document, or just a single section (Linux)." border="0" alt="The outline pane can be filtered using the drop down menu.  Choose to see the structure of the entire document, or just a single section (Linux)." src="http://www.oak-tree.us/blog/wp-content/uploads/2009/05/lyxoutliner-filterlinux-thumb.png" width="600" height="348" /></a></p>
<h3>Of Outlines and Index Cards</h3>
<p>Scrivener (and LyX-Outline as it's dedicated clone) utilizes multiple metaphors.&#160; The Corkboard may be useful in some instances, but will be less helpful in others.&#160; Ditto for the outliner.&#160;&#160; Either way, it is important to know that both the corkboard and the outliner display sub-items.&#160; If you are using the main corkboard, these sub items will be connected to the active item in the document map.&#160; If you are using the dock tool, they can be filtered via the drop-down menu.&#160; From the corkboard, you can then edit items by double clicking on either their title, or their summary.&#160; You can reorder them through drag and drop.&#160; From the outliner, you can add new items or sub items, or delete them from the document.&#160; You can also change their order (by using the up or down arrow buttons) or change their indentation level (with the left and right arrow buttons).</p>
<p align="center"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="LyX-MainWindow-Mac" border="0" alt="LyX-MainWindow-Mac" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/05/lyxmainwindowmac.png" width="600" height="452" /></p>
<h3>Minding the Potholes</h3>
<p>And that is a very quick tour of the Outline modules for LyX.&#160; As noted above, this release of LyX-Outline is a prototype and it is still very far from its intended target.&#160; Thus, if it doesn't meet your needs right out of the box, please be patient.&#160; The mantra of OpenSource is &quot;release early, release often.&quot;&#160; In this case, I have erred on the side of early and as you might suspect, there are some dangerously rough edges.&#160; These include:</p>
<ul>
<li>Unfinished interfaces.&#160; Most of your manipulation will probably need to happen in the outliner pane.&#160; This includes adding or removing new document nodes, as well as indenting or un-indenting the document selection.&#160; The final version will include ubiquitous drag and drop. </li>
<li>A crappy editor.&#160; The current editor is plain text is a placeholder only.&#160; Ultimately, LyX-Outline will be integrated with the LyX editor and have access to all of it's very powerful features.&#160; It is important to keep that future in mind. </li>
<li>No export option.&#160; While you can save and open past documents, there is currently no way to actually get them out of the program. </li>
</ul>
<p>In it's current incarnation, this prototype is valuable for pecking out thoughts and playing with the organizational tools.&#160; I am releasing it so that people can see how the tools might look in their final form and provide feedback.&#160; Please do so.&#160; Download the source, use it as you can, and let me know what you think.&#160; What things work?&#160; What things don’t?&#160; What features would you as users like to see?</p>
<p><em>Update: You can download the source code and find installation instructions on the <a href="http://www.oak-tree.us/blog/index.php/science-and-technology/lyx-outline">LyX-Outline project page</a>.</em></p>
<h3>Similar Posts:</h3>
<ul class="similar-posts">
<li><a href="http://www.oak-tree.us/blog/index.php/2009/03/04/perfect-tool" rel="bookmark" title="March 4, 2009">Creating the Perfect Writing Tool: A Proposal</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/08/23/time-drive-bugs" rel="bookmark" title="August 23, 2009">Filing Bugs for Time Drive or LyX-Outline</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/11/14/customize-lyx-character-styles" rel="bookmark" title="November 14, 2009">Customizing LyX: Character Styles and the LyX Local Layout</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2008/11/20/software-cuttingoutclutter" rel="bookmark" title="November 20, 2008">On Writing &ndash; Software that cuts out distraction and clutter</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/07/30/time-traveler" rel="bookmark" title="July 30, 2009">A Better Previous Versions: Time Traveler</a></li>
</ul>
<p><!-- Similar Posts took 27.254 ms --></p>
<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/05/13/lyx-outline">Introducing LyX-Outline 0.1</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oak-tree.us/blog/index.php/2009/05/13/lyx-outline/feed</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Cross Platform GUI Development with Python and Qt</title>
		<link>http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt</link>
		<comments>http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt#comments</comments>
		<pubDate>Tue, 12 May 2009 21:16:18 +0000</pubDate>
		<dc:creator>Rob Oakes</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[IronPython]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[PyQt]]></category>

		<guid isPermaLink="false">http://www.oak-tree.us/blog/?p=897</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Cross+Platform+GUI+Development+with+Python+and+Qt&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=IronPython&amp;rft.subject=Programming&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-05-12&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt&amp;rft.language=English"></span>
One of computer programmers many fantasies (or at least one of my fantasies) is a cross-platform codebase that is easy to maintain.  I want to write an application once and then be able to deploy in on any platform in existence.  It should integrate into the destination environment in a native manner, but still be [...]<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt">Cross Platform GUI Development with Python and Qt</a></p>
]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Cross+Platform+GUI+Development+with+Python+and+Qt&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=IronPython&amp;rft.subject=Programming&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-05-12&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt&amp;rft.language=English"></span>
<p><img style="display: inline; margin: 0px 15px 15px 0px" src="http://www.tailsnscales.com/images/albino_burm_head.jpg" alt="" width="245" height="184" align="left" />One of computer programmers many fantasies (or at least one of my fantasies) is a cross-platform codebase that is easy to maintain.  I want to write an application once and then be able to deploy in on any platform in existence.  It should integrate into the destination environment in a native manner, but still be similar enough to the other platforms so that  issues can be addressed in a way that doesn’t hinder overall progress.</p>
<p>Part of this dream can be fulfilled by using Python and standard library, it is also possible to do much of it by using <a href="http://www.oak-tree.us/blog/index.php/2008/11/18/ironpython-part1">IronPython</a> and .Net (through the OpenSource <a href="http://mono-project.com/Main_Page">Mono</a> framework).  However, in each case, you are forced to make a tradeoff.  Python and the standard library are wonderful, if you are willing to accept a speed hit.  IronPython and Mono also work well, as long as you avoid using any of the Windows specific libraries.  Unfortunately, many of neatest .Net features (like <a href="http://www.oak-tree.us/blog/index.php/2008/11/19/ironpython-part3">Windows Presentation Foundation</a>) are only available on Windows.</p>
<p>Okay, there is always GTK+ or <a href="http://www.wxwidgets.org/">wxWidgets</a> (the same toolkits used for the <a href="http://www.gnome.org/">Gnome</a> desktop), but GTK+ is written in C and while much of the miscellaneous nastiness has been abstracted away, it is still one of the hardest toolkits to work with.  Oh, and the documentation sucks.  (When any documentation can be found at all.)  Thus, we arrive at the final contender: <a href="http://www.qtsoftware.com/products/">Qt</a>.  Qt has had a <a href="http://en.wikipedia.org/wiki/Qt_(toolkit)">long and controversial history</a>  involving license issues, passion, and miscellaneous geek pride.  In fact, it’s due to Qt and some rather divisive decisions made by its developers that we even have alternative toolkits at all.  But, despite that history, <a href="http://arstechnica.com/open-source/news/2009/01/nokia-qt-lgpl-switch-huge-win-for-cross-platform-development.ars">Trolltech’s recent decision</a> to release the framework under the permissive LGPL license (rather than the noxious GPL) changes all that.  In many ways, Qt might just become the cross-platform toolkit of choice</p>
<p>Of course, it's a given that Qt is tremendously powerful with rich functionality.  Applications that are written in Qt are fully cross-platform and behave the same way wherever they are deployed.  It uses native widgets whenever possible and has a sophisticated theming system that allows it to follow platform conventions without significantly modifying the underlying code.  More importantly, Qt is backed by a passionate developer community and a well funded corporation (Nokia).  It is true, you get what you pay for.  Qt is well designed and the documentation is simply fantastic.  And unlike GTK+ or wxWidgets, the entire toolkit is written in proper object oriented C++.</p>
<p>I first started experimenting with the Qt framework about two months ago, after deciding to tackle <a href="http://www.oak-tree.us/blog/index.php/2009/03/04/perfect-tool">a major add-on</a> to one of my favorite writing programs, <a href="http://www.lyx.org/">LyX</a>.  As I have said <a href="http://www.oak-tree.us/blog/index.php/2008/12/08/ironpython-part7">elsewhere</a>, I am not the world’s most</p>
<p><img style="display: inline; margin-left: 0px; margin-right: 0px" src="http://farm2.static.flickr.com/1319/1129819772_77804dda7f.jpg" alt="" width="402" height="136" align="right" /></p>
<p>gifted computer programmer (far from it actually), but Qt actually makes it pretty easy to get yourself up and running in a reasonable amount of time.  If I were forced to do most of my GUI programming in Qt and C++, that would be an acceptable solution.  However, that is completely unnecessary.  You see, Qt has one of the most tightly integrated Python bindings available, through the user of <a href="http://www.riverbankcomputing.co.uk/software/pyqt/intro">PyQt</a> from Riverbank software.  Qt plus Python is, quite simply, programming perfection.  So while I did some mild experimenting with the Qt frameworks in C++, I have spent much of the past few months doing the heavy work of learning the framework via the use of  Python.</p>
<p>In the process, I have made a great many mistakes and a great many more discoveries.  And since the final step in any discovery is to share your findings, I will be doing that through this series of articles.  Of more interest to most, however, I will also be introducing the fruits of my labors: a somewhat functional prototype of my outliner add-on for LyX.<span id="more-897"></span></p>
<h2>Part 0: Thoughts on Licenses, Setup and Installation</h2>
<p>But before I bore you over the benefits of abstraction and dynamically typed object oriented programming, I should first dispense with some of the nuances and details of setting up a system to run Qt.   This also, unfortunately, must include a brief discussion of licenses.  While most general computer users likely do not care, the license under which a given piece of software is released is tremendously important.  In the case of a most OpenSource software, it determines what rights the users receive and what the developers retain.  In some cases, it may even determine if the developer is able to charge for his or her work.</p>
<p>This is why Trolltech’s decision to switch from the GPL (a popular and very restrictive OpenSource license) to the more permissive LGPL is a very big deal.  As alluded to above, it allows for commercial developers to link against the Qt libraries without legal fears.  Unfortunately, however, the new licensing is only for the most recent version of the toolkit (version 4.5).  In addition, while Qt is available under a more permissive license, PyQt is not.  PyQt is only available under the terms of the GPL or a separately purchased commercial license.  For people who will use PyQt for in-house work or for end users, the distinction is a purely philosophical matter.  But if you are a developer who intends to distribute your code (or attempt to charge for it), it is something that you need to consider carefully.  Unless you buy a commercial license, PyQt can only be used for GPL related development.  The good news, however, is that it is perfectly possible to utilize a commercial PyQt license in conjunction with the LGPLed Qt.  Further, the costs for a commercial PyQt license are quire reasonable, about $400 dollars per developer.  While this might sound like a lot, compare it to the more than $5000 that Trolltech charges for a cross-platform commercial Qt license.</p>
<h3>Installation, Setup and Configuration</h3>
<p>Now that some of the grit has been sorted, let’s get down to the the minutiae of setting up a PyQt development environment.  This guide will focus on using the most recent version of the framework (Qt 4.5.1).  Since the procedure varies slightly based upon your platform, separate instructions will be provided for Mac OS X, Linux and Windows.</p>
<p>There are four separate pieces of software that you will need to download and install on your system.  1) The Qt Framework, which you can get from the Trolltech website, 2) the Python interpreter and related libraries, 3) SIP, which is used to generate Python bindings to C and C++ code, and 4) PyQt.  In general, the installation procedure goes like this:</p>
<ol>
<li>Download and install Qt via the package installer for your platform from the <a href="http://www.qtsoftware.com/downloads">Trolltech homepage</a>.  In order to avoid manually compiling the libraries, I would recommend downloading the package entitled “Qt SDK: The Complete Development Environment.”</li>
<li>Install the GNU compiler tools for Windows (MinGW).  If you use the complete Qt4 package in step 1, this will happen automatically.  (The GCC tools are typically provided as a package for Linux and can be installed from the Mac OS X system CD or by downloading the XCode developer tools)</li>
<li>If there isn’t a version of Python provided with your OS, download, install and configure <a href="http://www.python.org/download/">Python</a>.    For Windows users, be sure to select the 2.5.4 Windows installer.  (Both Linux and Mac OS X ship with a Python interpreter and can skip this step).</li>
<li>Download and manually compile the <a href="http://www.riverbankcomputing.co.uk/software/sip/download">SIP library</a> from Riverbank Computing.  <em>Note: Because we will be using the most recent version of Qt, you will need version 4.8 or greater.  As of this writing, SIP 4.8 was still in development, thus get the <strong>most recent development snapshot</strong>.</em></li>
<li>Download, manually compile and install the <a href="http://www.riverbankcomputing.co.uk/software/pyqt/download">PyQt source code</a> for your platform.  <em>Note: Again, because we are using the most recent version of Qt, you will need to <strong>download the development snapshot</strong>.  Be sure that the version on the bindings is 4.5 or greater.</em></li>
</ol>
<p>While the general procedure may look quite intimidating at first glance, it is actually fairly simple.  The platform specific guides below explain how to do everything step by step.  There is some variability between platforms, so be sure to select the guide for your OS.</p>
<ol>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-linux">Linux</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-windows">Windows</a> - Qt, MinGW, Python, SIP and PyQt</li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-mac">Mac OS X</a> - Qt, XCode, GCC, Autoconf, SIP and PyQt on Mac OS X</li>
</ol>
<h3>Similar Posts:</h3>
<ul class="similar-posts">
<li><a href="http://www.oak-tree.us/blog/index.php/2009/07/20/back-in-time1" rel="bookmark" title="July 20, 2009">Back In Time (Part 1): Linux Backup Made Easy</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2008/12/23/iphone-quality" rel="bookmark" title="December 23, 2008">The iPhone App Store and Software Quality: A User’s Perspective</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2008/12/07/ironpython-part6" rel="bookmark" title="December 7, 2008">Learning IronPython - Part 6 - From Rudimentary to Functional</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/03/04/perfect-tool" rel="bookmark" title="March 4, 2009">Creating the Perfect Writing Tool: A Proposal</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/01/06/ironpython-databinding1" rel="bookmark" title="January 6, 2009">IronPython - Data Binding and Data Templates - Part 1</a></li>
</ul>
<p><!-- Similar Posts took 22.282 ms --></p>
<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt">Cross Platform GUI Development with Python and Qt</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installation of PyQt on Mac OS X</title>
		<link>http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-mac</link>
		<comments>http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-mac#comments</comments>
		<pubDate>Tue, 12 May 2009 21:12:17 +0000</pubDate>
		<dc:creator>Rob Oakes</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[IronPython]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[PyQt]]></category>

		<guid isPermaLink="false">http://www.oak-tree.us/blog/?p=896</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Installation+of+PyQt+on+Mac+OS+X&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=IronPython&amp;rft.subject=Programming&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-05-12&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-mac&amp;rft.language=English"></span>
Note: The installation instructions in this article apply to Mac OS X 10.5 (Leopard) and Qt 4.5.3.  While it is possible to get Qt 4.5.3 to run on Snow Leopard, it requires compiling it from source.  Instructions for doing so can be found in the comments below.  It is important to note, however, that there [...]<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-mac">Installation of PyQt on Mac OS X</a></p>
]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Installation+of+PyQt+on+Mac+OS+X&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=IronPython&amp;rft.subject=Programming&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-05-12&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-mac&amp;rft.language=English"></span>
<p><em>Note: The installation instructions in this article apply to Mac OS X 10.5 (Leopard) and Qt 4.5.3.  While it is possible to get Qt 4.5.3 to run on Snow Leopard, it requires compiling it from source.  Instructions for doing so can be found in the comments below.  </em><em>It is important to note, however, that there are some minor issues with the 4.5 framework on Snow Leopard (including mutlithreaded memory leaks).</em></p>
<p><em>You can find instructions for how to install PyQt on Snow Leopard using the Qt 4.7 frameworks at <a href="http://blog.oak-tree.us/index.php/2010/05/27/pyqt-snow-leopard">http://blog.oak-tree.us/index.php/2010/05/27/pyqt-snow-leopard</a>.</em></p>
<p>To install PyQt on Mac OS X, it is also necessary to install and configure the GCC compilers and the Qt framework in addition to SIP and PyQt.  The easiest way to get the most current version of the GCC compilers and tools is by downloading the XCode tools package from Apple at the <a href="http://developer.apple.com/mac/">Apple Developer Connection (ADC)</a>.  ADC requires that you have an Apple ID and account, which are both free.  After you log-in, download the XCode developer tools package, which is a bit hefty (nearly 1 GB in size) and may take a while to download depending on your internet speed.</p>
<h2>XCode and Qt</h2>
<p>While waiting for the XCode tools to download, you can also begin downloading the Qt binary installer from the <a href="http://www.qtsoftware.com/downloads">Trolltech downloads site</a>.  As with Windows, I would advise that you you select  the complete SDK (which also include pre-compiled binaries) rather than the source release.  If you only download the Qt framework, you will need to compile the source yourself which is both time intensive and is not worth the additional headache.</p>
<p>Once XCode has finished downloading, run the package installer.  It will ask you to select the destination drive and what components of the software you would like to install.</p>
<p><img style="display: inline; border-width: 0px;" title="Select the installation disc where you want to install XCode the developer tools" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/05/pyqtmacinstall17.png" border="0" alt="Select the installation disc where you want to install XCode the developer tools" width="550" height="390" /></p>
<p><a href="http://www.oak-tree.us/blog/wp-content/uploads/2009/05/pyqtmacinstall26.png"><img style="display: inline; border-width: 0px;" title="Choose the components you would like to install" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/05/pyqtmacinstall26-thumb.png" border="0" alt="Choose the components you would like to install" width="550" height="390" /></a></p>
<p>This will automatically install and configure the GNU tool chain.  Once it has finished, you can access the tools by going to the “/Developer/” folder on the root of the drive.</p>
<p>After XCode has finished, run the Qt installer.</p>
<p><img style="display: inline; border-width: 0px;" title="The Qt SKD Installer" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/05/pyqtmacinstall3.png" border="0" alt="The Qt SKD Installer" width="550" height="392" /></p>
<p><img style="display: inline; border-width: 0px;" title="Select the installation destination" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/05/pyqtmacinstall4.png" border="0" alt="Select the installation destination" width="550" height="387" /></p>
<p>The Qt installer package will automatically place the tools and other things that you will need in the same Developer folder where the XCode tools and frameworks are located.  You will need to make a note of the path for qmake.  The default installation site for qmake is “/usr/bin/qmake-4.5”.</p>
<h2>SIP and PyQt</h2>
<p>SIP is a program that makes it easy to create C++ bindings program for Python.  You can find the source code at Riverbank’s <a href="http://www.riverbankcomputing.co.uk/software/sip/download">SIP download page</a>.  Since we will be using the 4.5 version of PyQt, you will need to download the latest developer snapshot (version 4.8 or greater).  Be sure to get the Linux/Unix source code, rather than the Windows source.  You will also need the latest source code snapshot for PyQt 4.5, which is also <a href="http://www.riverbankcomputing.co.uk/software/pyqt/download">available from Riverbank</a>.</p>
<p>After you have finished downloading the source files, move them to a folder in your Users directory.  I have a special directory entitled “Applications” where I keep the source code for programs that I have manually compiled.  <em>Note: The rest of the steps will be done from the Mac OS X terminal.</em></p>
<p>After you have moved the source code for both SIP and PyQt to this new directory, extract it by using the tar utility with the x and f options (tar –xf):</p>
<blockquote><p>cd ~/Applications<br />
tar -xf sip-4.8-snapshot-20090430.tar<br />
tar -xf PyQt-mac-gpl-4.5-snapshot-20090507.tar</p></blockquote>
<p>After you have expanded the files, it might be a good idea to rename the directories to something more manageable (like sip-4.8 and PyQt4.5:</p>
<blockquote><p>mv sip-4.8-snapshot-20090430 sip-4.8<br />
mv PyQt-mac-gpl-4.5-snapshot-20090507 PyQt4.5</p></blockquote>
<p>First, we need to compile and install SIP.  The default configuration will move the compiled files to a directory where Leopard can’t read them.  So, we will manually need to specify the destination directory using the –d flag:</p>
<blockquote><p>cd sip-4.8<br />
python configure.py -d /Library/Python/2.5/site-packages</p></blockquote>
<p>After the configuration is finished, run make and sudo make install:</p>
<blockquote><p>make<br />
sudo make install</p></blockquote>
<p>Once SIP has finished installing, we need to repeat the process for PyQt.  From the sip-4.8 directory, chagne to PyQt:</p>
<blockquote><p>cd ..<br />
cd PyQt4</p></blockquote>
<p>Next, run the configuration script specifying the path to your version of qmake and the installation directory for the python bindings:</p>
<blockquote><p>python configure.py -q /usr/bin/qmake-4.5 -d /Library/Python/2.5/site-packages/</p></blockquote>
<p>Then compile and install:</p>
<blockquote><p>make<br />
sudo make install</p></blockquote>
<p>Since Qt is a rather large framework, it may require between 15 and 30 minutes to fully compile.<br />
<h3>Similar Posts:</h3>
<ul class="similar-posts">
<li><a href="http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-windows" rel="bookmark" title="May 12, 2009">Installation of PyQt on Windows</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/10/07/duplicity-mac" rel="bookmark" title="October 7, 2009">Installing Duplicity on Mac OS X</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/10/05/install-timedrive-ubuntu" rel="bookmark" title="October 5, 2009">Install Time Drive On Ubuntu and Other Debian Linux Distributions</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2008/12/01/ironpython-part5" rel="bookmark" title="December 1, 2008">Learning IronPython – Part 5 – A Rudimentary Download Manager</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2008/11/30/ironpython-part4" rel="bookmark" title="November 30, 2008">Learning IronPython – Part 4 – BITS and Pieces</a></li>
</ul>
<p><!-- Similar Posts took 21.146 ms --></p>
<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-mac">Installation of PyQt on Mac OS X</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-mac/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Installation of PyQt on Windows</title>
		<link>http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-windows</link>
		<comments>http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-windows#comments</comments>
		<pubDate>Tue, 12 May 2009 18:00:38 +0000</pubDate>
		<dc:creator>Rob Oakes</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[IronPython]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[PyQt]]></category>

		<guid isPermaLink="false">http://www.oak-tree.us/blog/?p=883</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Installation+of+PyQt+on+Windows&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=IronPython&amp;rft.subject=Programming&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-05-12&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-windows&amp;rft.language=English"></span>
On Windows, we first need to install the pre-compiled Qt binary package from the Trolltech downloads page.&#160; Select the LGPL/Free tab and choose the “Qt SDK: Complete Development Environment” for Windows.&#160; It is a fairly hefty package (167 megabytes) and may take a while to transfer.&#160; The installer includes the core Qt libraries, several important [...]<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-windows">Installation of PyQt on Windows</a></p>
]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Installation+of+PyQt+on+Windows&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=IronPython&amp;rft.subject=Programming&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-05-12&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-windows&amp;rft.language=English"></span>
<p>On Windows, we first need to install the pre-compiled Qt binary package from the <a href="http://www.qtsoftware.com/downloads">Trolltech downloads page</a>.&#160; Select the LGPL/Free tab and choose the “Qt SDK: Complete Development Environment” for Windows.&#160; It is a fairly hefty package (167 megabytes) and may take a while to transfer.&#160; The installer includes the core Qt libraries, several important C++ development tools, and an integrated development environment (IDE) called Qt creator.&#160; Luckily, the same installer will work on Windows XP, Windows Vista and Windows 7.</p>
<h2>Qt and MinGW</h2>
<p>When you run the installer, it will ask for the installation destination.&#160; To avoid future problems, this folder should not include any spaces. The default is “C:\Qt\2009.02”,&#160; but because I like to keep the root directory of my drive as clean as possible, I changed this to “C:\Qt\Windows”.&#160; To begin the installation, press “Install.”</p>
<p align="center"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Change the installation directory to C:\Windows\Qt" border="0" alt="Change the installation directory to C:\Windows\Qt" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/05/image391.png" width="450" height="353" /></p>
<p align="center"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/05/image-thumb551.png" width="450" height="351" /></p>
<p>The installer will also download and configure the GNU compiler toolset for Windows (also known as MinGW).&#160; By default, MinGW will be installed in a subdirectory under the main Qt directory.&#160; In this example, it was installed to “C:\WINDOWS\Qt\mingw”.&#160; Note this file path, it will be important to the steps below.</p>
<h2>Python</h2>
<p>After you finish with the Qt framework, the next step is to download and install Python.&#160; You can get the Python interpreter and other associated files from the <a href="http://www.python.org/download/releases/2.5.4/">Python release download page</a>.&#160; While the newest version is Python 3.0.1, I would recommend that you download and install Python 2.5.4 instead.&#160; When trying to set up SIP with Python 2.6.2 and Python 3.0.1, I experienced a number of errors.&#160; These were resolved by using the x86 version of Python 2.5.</p>
<p>When you first run the installer, it will ask whether you want to install Python for all users or for just the current users.&#160; Make sure that “install for all users” is selected.&#160; Like Qt, you should install Python to a directory without spaces.&#160; The default install location will be “C:\Python25”, though I typically change it to “C:\Windows\Python25” so that it matches the installation directory for Qt.</p>
<p align="center"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Make sure that the &quot;Install for all users&quot; option is selected" border="0" alt="Make sure that the &quot;Install for all users&quot; option is selected" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/05/image1.png" width="450" height="393" /></p>
<p align="center"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Change the installation directory to &quot;C:\Windows\Python25&quot; so that it is similar to the installation directory of Qt" border="0" alt="Change the installation directory to &quot;C:\Windows\Python25&quot; so that it is similar to the installation directory of Qt" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/05/image2.png" width="450" height="389" /></p>
<p align="left">After the Python installer has finished running, you will need to modify one of the Windows environment variables.&#160; On Windows XP, the easiest way to access the environment variables to right click on “My Computer” and select “Properties” from the drop own menu.&#160; When the “System Properties” window launches click on the “Advanced” tab and then press the “Environment Variables” button.&#160;&#160; (If you are using Windows Vista or the Windows 7 beta, the easiest way to access the Environment Variables is to go to Control Panel and Search for “Path” in the search bar.&#160; All other steps remain the same.)</p>
<p align="center"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="You can open the &quot;Environment Variables&quot; by right clicking on &quot;My Computer&quot; and selecting &quot;Properties.&quot;  Then choose the advanced tab and click on the &quot;Environment Variables&quot; button" border="0" alt="You can open the &quot;Environment Variables&quot; by right clicking on &quot;My Computer&quot; and selecting &quot;Properties.&quot;  Then choose the advanced tab and click on the &quot;Environment Variables&quot; button" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/05/image641.png" width="400" height="466" /></p>
<p align="left">From the “System Variables” list, select the Path Variable and then press “Edit”.</p>
<p align="center"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Select Path from the &quot;System Variables&quot; list and select &quot;Edit&quot;" border="0" alt="Select Path from the &quot;System Variables&quot; list and select &quot;Edit&quot;" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/05/image701.png" width="375" height="421" /></p>
<p align="left">In the variable <a href="http://www.pricespectre.com">value box</a>, type in the path to the Python folder you just installed, the path to the “bin” folder of MinGW (which should be under the MinGW folder from above), and last the path to a Qt program called qmake (which is located in the qt\bin folder of the Qt installation) .&#160; You should separate these values from the other paths (and from each other) by a semi-colon.&#160; If you have followed all of the instructions in this tutorial, you will add:</p>
<blockquote><p align="left">C:\Windows\Qt\mingw\bin;C:\Windows\Python25;C:\Windows\Qt\qt\bin</p>
</blockquote>
<p align="left">And your path variable should now look something like:</p>
<blockquote><p align="left">%SystemRoot%\System32; C:\Windows\Qt\mingw\bin; C:\Windows\Python25; C:\Windows\Qt\qt\bin</p>
</blockquote>
<p align="left">Press “Ok” to close the dialog box and then “Ok” again to close first the Environment Variables and then the “System Properties Pane.”&#160; Now that you have changed the Path variable, you need to restart your computer so that the changes can take effect.</p>
<h2>SIP and PyQt</h2>
<p>Prior to compiling PyQt, you will first need to compile and install SIP, which can be found at <a href="http://www.riverbankcomputing.co.uk/software/sip/download">Riverbank Software</a>.&#160; Though the stable version of the software is currently (4.7.9), you will need to download the latest Windows source code&#160; snapshot of version 4.8 (Qt 4.5 doesn’t work with earlier versions of SIP).&#160; (<em>Update: Alternatively, you can also find a copy of the 4.8 snapshot <a href="http://www.oak-tree.us/tutorials/sip48.zip">here</a>.</em>)&#160; You will need the most recent source code snapshot of PyQt 4.5, which is also <a href="http://www.riverbankcomputing.co.uk/software/pyqt/download">available from Riverbank</a>.&#160; (<em>Update: Multiple people seem to have had problems installing the 4.5 snapshot from the Riverbank website.&#160; As a matter of convenience, you can find the April 30, 2009 version <a href="http://www.oak-tree.us/tutorials/PyQt4.zip">here</a>.&#160; This is the same version that was used in the writing of this article.)</em></p>
<p>After you have finished downloading the source files, extract them to the Qt installation directory (C:\Windows\Qt in this tutorial).&#160; This might also be a good time to rename the directories to something shorter than the default snapshot names.&#160; I have changed mine to PyQt4 and sip-4.8.</p>
<p>The rest of the steps will be run from the command line prompt (cmd.exe) and must be run with administrator privileges to work properly.&#160; Start by going to the start menu and then choosing the run command; then type “cmd.exe” and press enter.&#160; (If you are on Windows Vista, you can open the command prompt by typing “cmd.exe” in the search dialog of the start menu.&#160; To run with administrator privileges, right click on the top program choice and select “Run as administrator” from the context menu.)</p>
<p>At the command line, first, go to the Qt installation directory by typing:</p>
<blockquote><p>cd C:\Windows\Qt</p>
</blockquote>
<p>Then go to the SIP directory:</p>
<blockquote><p>cd sip-4.8</p>
</blockquote>
<p>Prior to compiling, we need to create a proper configuration file:</p>
<blockquote><p>python configure.py –p win32-g++</p>
</blockquote>
<p>After the configuration is done, compile the new file by typing:</p>
<blockquote><p>mingw32-make</p>
</blockquote>
<p>This will take some time.&#160; After the files have finished compiling, you can install them by typing:</p>
<blockquote><p>mingw32-make install</p>
</blockquote>
<p>The process is repeated for PyQt.&#160; Change to the PyQt4 source directory by typing:</p>
<blockquote><p>cd ..      <br />cd PyQt4</p>
</blockquote>
<p>Then configure the make files, compile and install by typing:</p>
<blockquote><p>python configure.py –p win32-g++      <br />mingw32-make       <br />mingw32-make install</p>
</blockquote>
<p>Since Qt is a rather large framework, it may take between 15 and 30 minutes to fully compile.</p>
<p><strong>Update: </strong>If you only want to run PyQt programs, the installation process can be greatly simplified by using the automated PyQt installer for Windows.&#160; The installer will automatically install a copy of the Qt framework and the PyQt bindings.&#160; You will need to install Python separately, however.</p>
<h3>Similar Posts:</h3>
<ul class="similar-posts">
<li><a href="http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-mac" rel="bookmark" title="May 12, 2009">Installation of PyQt on Mac OS X</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/10/07/duplicity-mac" rel="bookmark" title="October 7, 2009">Installing Duplicity on Mac OS X</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2008/12/01/ironpython-part5" rel="bookmark" title="December 1, 2008">Learning IronPython – Part 5 – A Rudimentary Download Manager</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/10/05/install-timedrive-ubuntu" rel="bookmark" title="October 5, 2009">Install Time Drive On Ubuntu and Other Debian Linux Distributions</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2011/10/26/core-dhcp" rel="bookmark" title="October 26, 2011">Installing and Configuring DHCP on Windows Server Core</a></li>
</ul>
<p><!-- Similar Posts took 49.296 ms --></p>
<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-windows">Installation of PyQt on Windows</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-windows/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Installation of PyQt on Linux (Ubuntu)</title>
		<link>http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-linux</link>
		<comments>http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-linux#comments</comments>
		<pubDate>Tue, 12 May 2009 17:52:17 +0000</pubDate>
		<dc:creator>Rob Oakes</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[IronPython]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[PyQt]]></category>

		<guid isPermaLink="false">http://www.oak-tree.us/blog/?p=870</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Installation+of+PyQt+on+Linux+%28Ubuntu%29&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=IronPython&amp;rft.subject=Programming&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-05-12&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-linux&amp;rft.language=English"></span>
In comparison to Windows and Mac OS X, installing PyQt on Linux is trivially easily.  It is likely that all of the software necessary for Python development is likely available in your favorite distribution repository.  If you are using the most recent version of Ubuntu 9.04 (and who isn't), then, all you need to do is [...]<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-linux">Installation of PyQt on Linux (Ubuntu)</a></p>
]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Installation+of+PyQt+on+Linux+%28Ubuntu%29&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=IronPython&amp;rft.subject=Programming&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-05-12&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-linux&amp;rft.language=English"></span>
<p>In comparison to Windows and Mac OS X, installing PyQt on Linux is trivially easily.  It is likely that all of the software necessary for Python development is likely available in your favorite distribution repository.  If you are using the most recent version of Ubuntu 9.04 (and who isn't), then, all you need to do is open up your terminal and type:</p>
<blockquote><p>sudo apt-get install python-qt4 qt4-dev-tools python-qt4-dev build-essential pyqt4-dev-tools</p></blockquote>
<p>The package manager (apt-get) will take care of downloading and installing any dependencies.  Once the installation routine finishes, you will have a fully working installation of Qt 4.5 and PyQt 4.5 without any compilation, configuration, or other miscellaneous headaches.  The qt4-dev-tools, pyqt4-dev-tools and python-qt4-dev packages install important tools used for creating user-interfaces.  The build-essential package installs the GNU compilers and autoconf tool chain.  If you will only be running PyQt programs, these additional packages are unnecessary.<br />
<h3>Similar Posts:</h3>
<ul class="similar-posts">
<li><a href="http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-mac" rel="bookmark" title="May 12, 2009">Installation of PyQt on Mac OS X</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-windows" rel="bookmark" title="May 12, 2009">Installation of PyQt on Windows</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/10/05/install-timedrive-ubuntu" rel="bookmark" title="October 5, 2009">Install Time Drive On Ubuntu and Other Debian Linux Distributions</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2011/10/26/core-dhcp" rel="bookmark" title="October 26, 2011">Installing and Configuring DHCP on Windows Server Core</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/07/20/back-in-time1" rel="bookmark" title="July 20, 2009">Back In Time (Part 1): Linux Backup Made Easy</a></li>
</ul>
<p><!-- Similar Posts took 20.270 ms --></p>
<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-linux">Installation of PyQt on Linux (Ubuntu)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oak-tree.us/blog/index.php/2009/05/12/pyqt-linux/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Creating the Perfect Writing Tool: A Proposal</title>
		<link>http://www.oak-tree.us/blog/index.php/2009/03/04/perfect-tool</link>
		<comments>http://www.oak-tree.us/blog/index.php/2009/03/04/perfect-tool#comments</comments>
		<pubDate>Thu, 05 Mar 2009 02:32:33 +0000</pubDate>
		<dc:creator>Rob Oakes</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Writing and Literature]]></category>
		<category><![CDATA[LyX]]></category>
		<category><![CDATA[OpenSource]]></category>

		<guid isPermaLink="false">http://www.oak-tree.us/blog/?p=760</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Creating+the+Perfect+Writing+Tool%3A+A+Proposal&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=Programming&amp;rft.subject=Writing+and+Literature&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-03-04&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/03/04/perfect-tool&amp;rft.language=English"></span>
In addition to nouns, verbs, and adjectives; there are other tools which supplement the writer's arsenal. some writers, this is a moleskin notebook and ballpoint pen. For others, writing is synonymous with the usage of computer word processors, such as Microsoft Word.&#160; What is a given, however, is that the choice is intensely personal. If [...]<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/03/04/perfect-tool">Creating the Perfect Writing Tool: A Proposal</a></p>
]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Creating+the+Perfect+Writing+Tool%3A+A+Proposal&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=Programming&amp;rft.subject=Writing+and+Literature&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-03-04&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/03/04/perfect-tool&amp;rft.language=English"></span>
<p><img alt="" align="left" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/03/030509-0231-creatingthe1.jpg" />In addition to nouns, verbs, and adjectives; there are other tools which supplement the writer's arsenal. some writers, this is a moleskin notebook and ballpoint pen. For others, writing is synonymous with the usage of computer word processors, such as Microsoft Word.&#160; What is a given, however, is that the choice is intensely personal. If you ask ten different writers, &quot;What is the perfect tool?&quot; Expect ten different answers.</p>
<p>For those who create software, however, this is big problem. Programs can't be customized to the individual whims of every writer. (A more diverse or idiosyncratic group does not exist.)&#160; It is necessary to select a cross section of features that meet the needs of most people.&#160; Unfortunately, however, this has resulted in some serious compromises and an emphasis on the technical process of writing, often to the exclusion of the creative process.</p>
<p> <span id="more-760"></span>
</p>
<h2>The Problem</h2>
<p>Like most writers, I have some strong feelings about the tools I use; and like most writers, I have never found one that fits my needs.&#160; But this is not for a lack of trying.&#160; In fact, I’ve been searching “perfect tool” for a very long time, at least since I was a senior in high school.</p>
<p>At that time, I enjoyed writing things out in longhand, with separate drafts copied over from the first iteration. I fancied myself a budding novelist and fervently believed that such an exercise would stimulate my creativity.</p>
<p>A decade later, however, I have become impatient. Now, I prefer to peck out my thoughts at the keyboard.&#160; Sometime in college, I realized that writing by hand is slow and while it can focus the mind on word choice, it's a plodding and frustrating exercise. In contrast, typing at the computer is quick; and since I can type nearly as fast as I can think, it allows the text to keep pace with my thoughts.</p>
<p>Moreover, working on the computer is organic. There isn't a discrete first, second, and final draft; instead, I can add, modify or change my writing as I form the ideas. If I want to jump back and change a word or sentence, I do so. Pen and paper isn't nearly so adaptable and many ideas are lost before they can be captured and expanded. </p>
<h3>The Limitations of Existing Tools</h3>
<p>But even though I prefer to write at the computer, I haven’t been able to find a writing program that lets me creatively adapt the structure and flow of my document.&#160; I have tried nearly everything available, but nothing fully meets my needs.</p>
<p>Consider <a href="http://office.microsoft.com/en-us/word/default.aspx">Microsoft Word</a>, for example.&#160; Even with all of its power, there are a number of things that it doesn't handle very well. Ever tried to work with a complex Word document, numbering into the hundreds or thousands of pages? If not, I don't recommend that you do.&#160; Large Word documents cause the program to slow down or crash and they have a tendency to become corrupted.&#160; There is nothing more disconcerting than finding out one of your book chapters is no longer usable due to bit rot.</p>
<h3>Introducing LyX: The Document Processor</h3>
<p>Luckily, there may a potential solution.&#160; The open source document processor, LyX, meets many of Word’s shortcomings.&#160; LyX encourages people to approach writing based on the structure and content of the document, rather than the appearance. Thus, it isn't a &quot;<strong>W</strong>hat <strong>Y</strong>ou <strong>S</strong>ee <strong>I</strong>s <strong>W</strong>hat <strong>Y</strong>ou <strong>G</strong>et&quot; so much as a &quot;<strong>W</strong>hat <strong>Y</strong>ou <strong>S</strong>ee <strong>I</strong>s <strong>W</strong>hat <strong>Y</strong>ou <strong>M</strong>ean&quot; (WYSIWYM).</p>
<p>When used right, LyX focuses the user on writing the content. The program handles the mechanics of layout and output. To do so, LyX leverages the LaTeX typesetting system, which is used heavily in the engineering and science disciplines to publish dissertations, grant proposals, journal articles, and books.</p>
<p>When I first found LyX three or four years ago, it fundamentally changed the way that I worked. Before, I manually formatted everything in a given document. While this approach is okay for simple letters or lists, it quickly breaks down in anything longer than a few pages.</p>
<p>In contrast, LyX makes extensive use of tags that tell the program what a given piece of text is. The title is enclosed by a &quot;title&quot; tag, book sections by the &quot;section&quot; tag, chapter headings by the &quot;chapter&quot; tag, block quotes by the &quot;quote&quot; tag, and paragraph text by the &quot;body&quot; tag. The program then applies formatting rules globally and in a consistent manner. Text within LyX has a meaning and will be processed in a specific way.</p>
<p>And thus we have the first important component of a perfect writing environment: the program is aware of what content is. Such awareness allows for extremely complicated written pieces to be assembled in a relatively easy fashion.</p>
<h3>A Sloppy Process</h3>
<p>Despite its strengths, though, LyX is an incomplete solution. It focuses on the mechanical aspects of writing and ignores what is arguably the more important component: the creative process. Using LyX, I can assemble a true monstrosity of a manuscript replete with footnotes, endnotes, references, tables, lists of figures, indices, appendices, and all of the other components of something unreadable. Yet such elements are mere after-thoughts rather than the heart and soul of the work. The center is all about ideas.</p>
<p>Which brings me to the serious limitations inherent in most word processing programs: joining ideas together is a <img alt="" align="right" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/03/030509-0231-creatingthe2.png" />sloppy process and they simply don’t facilitate the sloppiness.</p>
<p>Every writer is creative in a different way. I personally start by making a miscellaneous brain dump. Everything relevant to the topic is listed out and then I start to type additional thoughts which seem relevant. After a while, I run out of steam which prompts research, reference collection, reference reading and chicken scratch notes.&#160; Then I groan, swear a little, go for a walk, and kick ideas around in my head.</p>
<p>When I come back to the computer, I move things around even further and excise any bits that now seem irrelevant (carefully saving them for later). Usually by this point, I have probably started over a few times and hopefully clarified my goals.&#160; If the process works, I get a slightly better fix on direction I intend to take and, eventually, a first draft magically seems to appear.&#160; That is when the real fun starts.</p>
<p>Unfortunately, LyX was designed to work linearly. You start at the beginning and continue to the end. All of the words and ideas are supposed to come marching out like perfect little soldiers on parade day. Using such a tool can be extremely frustrating to someone who doesn't think in a linear fashion: I want the freedom to be intuitive! </p>
<p>And in the name of freedom, I will probably use of four or five programs spanning two operating systems: OneNote for data collection, KDissert or FreeMind for MindMapping, and Word or LyX for the actual writing. Then I go back and update my files in the other programs.</p>
<p>There should be a better way! I want to use the same tool from beginning to end, not continually move between the word processor, the outliner, the mind mapper, and the note taker.</p>
<h2>A Potential Solution: Scrivener</h2>
<p>There just happens to be a program on Mac OS X that was apparently made for scattered people: <a href="http://www.literatureandlatte.com/">Scrivener</a>. Scrivener employs a number of simple (yet profoundly powerful) metaphors that let you manage the anarchy of creativity. These include:</p>
<ol>
<li>An intuitive and simple map of the project (similar to Word's Outline View). </li>
<li>A corkboard that lets you create any number of &quot;index cards&quot; with a title and short summary of the card's contents. </li>
<li>An outline view where the entire structure of your document can be seen and manipulated through drag and drop. </li>
</ol>
<p>Scrivener leverages its corkboard metaphor and outliner by linking the &quot;index card&quot; to a real piece of text. Thus, the index card actually represents the physical chunk of text in the underlying draft. The index cards can be moved, nested and set into folders and any changes made to the index cards are then instantly applied to the overall structure of the document. Pretty cool, huh? A given index card can represent a section, paragraph, chapter, or sentence. Even better is that cards can be split or joined together easily.</p>
<p>The practical result is that the entire draft is instantly fluid. You can experiment with new ideas, split away sections of text for later use, and re-arrange things as inspiration strikes you. It substantially enhances the organic process already provided by the computer. I know a surprising number of people who have moved to the Mac platform just so that they can use Scrivener.</p>
<p>While other programs (like Semantik, formally known as KDissert) use similar metaphors, the use of a &quot;summary&quot; field is what makes Scrivener stand apart. The summary begins life as an outline point and later becomes the synopsis of the section. It can keep notes, goals, or thoughts in addition to a regurgitation of what is in the text.&#160; And no other program uses anything like it. Therefore, while you can replicate many of Scrivener's best features through Word or LyX's outline view, you are stuck manipulating the entire text (which becomes impractical and unwieldy very quickly).</p>
<p style="text-align: center"><img alt="" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/03/030509-0231-creatingthe3.png" /></p>
<p style="text-align: justify; margin-left: 18pt"><strong>The Outliner. </strong>Scrivener includes a high quality outliner that allows individual elements to be repositioned via drag and drop. Each outline item is connected to the text in the actual draft; therefore, changes in the outline view are immediately reflected in the structure of the document. Scrivener's outliner is particularly effective via the inclusion of a &quot;synopsis&quot; field that contains a summary of the text. This summary field isn't part of the full draft, and as a result, can begin life as an outline point that reflects the goal of the section. In contrast, the outline view in Microsoft Word uses the text of the actual document. In long or complicated documents, it is a slightly less than effective way to add new ideas.</p>
<p style="text-align: center"><img alt="" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/03/030509-0231-creatingthe4.png" /></p>
<p style="margin-left: 18pt"><strong>The Corkboard. </strong>As an alternative to the outliner, Scrivener also provides a &quot;corkboard&quot; where parts of the document can be moved around on index cards. Each card has a title and summary that is is linked to a block of text in the document. Unlike the outliner, however, the corkboard only deals with one navigational element of the document. When at the top level, the cards might represent the parts or chapters of a book. When working on the corkboard of a book chapter, they might represent sections or individual scenes. There is no limit to the number of cards or nesting that can be done.</p>
<h3>Scrivener's Singular Strength</h3>
<p>Though Scrivener handles the creative process beautifully, it isn't a serious word or document processor. On the program's <a href="http://www.literatureandlatte.com/scrivener.html">website</a>, the primary developer states that Scrivener is a &quot;personal writing tool.&quot; As a result, it seems uniquely geared to creative writing; that is to say, novels and screenplays. Not many novels or screenplays have a need for a bibliography, index, appendix, footnotes, or endnotes. As a result, Scrivener cannot handle the minutiae of complicated documents.</p>
<p>Just forget support for hyperlinks, cross-links, cross-references, figures, legends or graphics. They're outside the developer's stated need and are unlikely to appear. That's too bad, because it makes Scrivener worthless to those who need support for these features. Microsoft Word has them and LyX has them, OpenOffice pretends that it has them. However, Word, LyX, OpenOffice and other word processors completely lack the creative tools that make Scrivener a joy to use.</p>
<p style="text-align: center"><img alt="" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/03/030509-0231-creatingthe5.png" /></p>
<p style="margin-left: 18pt"><strong>A Glorified Text Editor. </strong>The weakest component of Scrivener is the actual word processor. Advanced (and even not so advanced) features like footnotes, endnotes, cross references of links are completely unsupported. It is simply unsuited to writing a complicated document like an article or cross-referenced book.</p>
<h2>A Combined Approach</h2>
<p>The simplicity of Scrivener's word processor causes a semi-crisis. If given my choice, I would compose nearly everything in it for the convenience of its outliner and index cards. However, it isn't up to supporting the type of heavy lifting I am often asked to do. While I could use it as my creative crutch, that worsens the overall problem. Instead of four programs across two platforms (Window/Linux), I would be using five programs across three platforms; not what I'm aiming for. I want to simplify my work process, not make it more complicated.</p>
<p>I've tried to find what I want in the software of others and determined that it doesn't exist. The fallback is to develop it myself by turning to opensource solutions. Since LyX already meets my needs as a document processor, it is a great place to start. As a front-end to LaTeX, it automatically supports the advanced features I need. It is cross-platform, which means that the writing environment would be the same regardless of whether I am working on Windows, Mac OS X, or Linux. Additionally, it has deep integration with <a href="http://www.oak-tree.us/blog/index.php/science-and-technology/svn">revision control systems</a>, which greatly simplify collaboration. Last, it is available under the GNU public license, which means that I can access the source code. LyX combined with the same creative tools found in Scrivener would be nearly perfect.</p>
<p><img alt="" align="left" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/03/030509-0231-creatingthe6.png" /></p>
<h3>Almost There: LyX's Existing Features</h3>
<p>After a careful review of LyX, it becomes obvious that much of the functionality required for a robust outliner and corkboard is already present. At left is the outline panel in LyX. The outline is automatically generated from the heading information in a given document and any child documents. The particular example shown here is series of three essays kept in four different files: a master document and three child documents.</p>
<p>LyX already recognizes blocks of text and understands their contextual meaning. In fact, you can already specify the order of any element and what position it holds. Further, individual text elements can be moved from one child document to another. In other words, nearly all of the background elements for a Scrivener-like outliner or corkboard are already present.</p>
<h3>Form and Function</h3>
<p>What is missing is the ability to assign a summary or &quot;synopsis&quot; to a given chunk of text. This would ideally exist as associated meta-data and affiliated with a particular tag. Additionally, it might prove convenient to associate other meta-data in addition to the summary.</p>
<p>To add the &quot;creative elements,&quot;&#160; most development could focus on creating a user interface that&#160; blends the existing outline view with the functional equivalents of the corkboard and outliner from Scrivener. Convenient drag and drop of document sections from within the document map, outliner, or corkboard would allow text to be moved and positioned. The outliner would show the complete document with the option to expand or collapse a given section. The corkboard, in contrast, would show only the elements contained in one particular outline node.</p>
<p>The figures below show an example of what such a user-interfaces might look like. The first figure shows the outliner and the second shows the corkboard. (Though the index cards and outline points of the example correspond to the chapters and sections of the document map, this should not necessarily be required in an ideal implementation. Instead, the user would be able to determine which index cards correspond to sections and which correspond to a specific piece of evidence, argument, or narrative. That is to say, the user should be allowed the freedom to create the outline structure, rather than have it imposed.)</p>
<h2>Proposal</h2>
<p>I propose to create an add-on for LyX which would combine the best features of Scrivener with the already powerful capabilities of LyX. As described above, this would consist of two inter-related tools:</p>
<p>1) The Outliner. The outliner would be an expandable panel where the structure and rough content of a document could be laid out prior to beginning the first draft. Specific features of the Outliner would include:</p>
<p>a. Each outline point would have room for a title, synopsis and type of content (drawn from the list provided by the LaTeX class).</p>
<p>b. Individual nests in the outline can be expanded or collapsed.</p>
<p>c. Elements can be dragged and dropped from one point to another. The underlying document will be updated to reflect any changes.</p>
<p>d. Though most points in the outline might correspond to headings (e.g. book parts, chapters, sections, or subsections), this would not be required. Instead, any block of text could be assigned to a point in the outline. It would behave in precisely the same manner as other outline elements.</p>
<p style="text-align: center"><img alt="" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/03/030509-0231-creatingthe7.png" /></p>
<p>2) The Corkboard. Housed in the same panel as the Outliner would also be a digital Corkboard which would display a small &quot;Index card&quot; with the title of an outline element in addition to the synopsis. However, in contrast to the outline, only the individual elements for a selected point in the document map would be shown. In the example below, the sections of a specific chapter, &quot;Eragon Shadeslayer: Sociopath&quot; are shown with their corresponding summaries. Changes in the order of the cards would be reflected in the underlying draft.</p>
<p style="text-align: center"><img alt="" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/03/030509-0231-creatingthe8.png" /></p>
<h2>Conclusion</h2>
<p>The proposed additions to LyX would further expand its other excellent features, making it the only document/word processor with a powerful set of creative tools. By associating blocks of text with additional meta-data (like a synopsis), working with the document structure would become a visual and interactive process, thereby allowing for much greater flexibility. Indeed, such changes would bring LyX one step closer to writing perfection.</p>
<p><em>Note: A PDF copy of this article can be found <a href="http://www.oak-tree.us/stuff/LyX-Proposal.pdf">here</a>.</em></p>
<h3>Similar Posts:</h3>
<ul class="similar-posts">
<li><a href="http://www.oak-tree.us/blog/index.php/2009/05/13/lyx-outline" rel="bookmark" title="May 13, 2009">Introducing LyX-Outline 0.1</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/11/30/latex-cv-part2" rel="bookmark" title="November 30, 2009">Typeset Your Curriculum Vitae &ndash; Part 2: Extending and Customizing an Existing Document Class</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2008/11/20/software-cuttingoutclutter" rel="bookmark" title="November 20, 2008">On Writing &ndash; Software that cuts out distraction and clutter</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2008/12/14/wpf-svg-xaml-part2" rel="bookmark" title="December 14, 2008">WPF – SVG Graphics and XAML – Part 2</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/11/02/custom-lyx-nih" rel="bookmark" title="November 2, 2009">Customizing LyX: Create an NIH Grant Proposal Template</a></li>
</ul>
<p><!-- Similar Posts took 46.693 ms --></p>
<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/03/04/perfect-tool">Creating the Perfect Writing Tool: A Proposal</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oak-tree.us/blog/index.php/2009/03/04/perfect-tool/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>IronPython in Action</title>
		<link>http://www.oak-tree.us/blog/index.php/2009/02/09/ironpython-in-action</link>
		<comments>http://www.oak-tree.us/blog/index.php/2009/02/09/ironpython-in-action#comments</comments>
		<pubDate>Mon, 09 Feb 2009 20:46:53 +0000</pubDate>
		<dc:creator>Rob Oakes</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[IronPython]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Book Reviews]]></category>
		<category><![CDATA[IronPython in Action]]></category>
		<category><![CDATA[Michael Foord]]></category>

		<guid isPermaLink="false">http://www.oak-tree.us/blog/index.php/2009/02/09/ironpython-in-action</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=IronPython+in+Action&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=IronPython&amp;rft.subject=Programming&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-02-09&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/02/09/ironpython-in-action&amp;rft.language=English"></span>
There is an old adage, often used and much abused, “Give a man a fish and he will eat for a day.  Teach a man to fish and he will never want for food.”  And while this old saying is extremely tired and very much cliché, it is a surprisingly apt way for me to [...]<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/02/09/ironpython-in-action">IronPython in Action</a></p>
]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=IronPython+in+Action&amp;rft.aulast=Oakes&amp;rft.aufirst=Rob&amp;rft.subject=Computer&amp;rft.subject=IronPython&amp;rft.subject=Programming&amp;rft.source=Apolitically+Incorrect&amp;rft.date=2009-02-09&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.oak-tree.us/blog/index.php/2009/02/09/ironpython-in-action&amp;rft.language=English"></span>
<p><img style="border-right-width: 0px; margin: 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IronPython in Action" src="http://www.oak-tree.us/blog/wp-content/uploads/2009/02/ironpythoninaction-thumb.jpg" border="0" alt="IronPython in Action" width="300" height="373" align="left" />There is an old adage, often used and much abused, “Give a man a fish and he will eat for a day.  Teach a man to fish and he will never want for food.”  And while this old saying is extremely tired and very much cliché, it is a surprisingly apt way for me to begin a review of “<a href="http://www.amazon.com/exec/obidos/ASIN/1933988339/ref=nosim/apolitiincorr-20%3E">IronPython in Action</a>,” a programming book by Michael J. Foord and Christian Muirhead.</p>
<p>“IronPython in Action” delves into the use of scripting (or dynamic) languages and how they merge with Microsoft’s enormous .Net platform.  For readers of this site, it shouldn’t be any secret that I have been working hard to <a href="http://www.oak-tree.us/blog/index.php/2008/11/18/ironpython-part1">teach myself Python</a>.  And while that particular adventure is better documented <a href="http://www.oak-tree.us/blog/index.php/2008/12/08/ironpython-part7">elsewhere</a>, “IronPython in Action" has been central to it.  Indeed, it has been my primary reference manual and guide.</p>
<p>It’s been nearly six months and it’s far past time to write a review of the guide.  But this review is going to be a little bit different than others that you might read.  If you are looking for a more traditional summary, you might be better served by Craig Murphy’s exhaustive <a href="http://www.craigmurphy.com/blog/?p=1257">breakdown</a>.  Rather than detail the contents and render an opinion, I would like to first tell a story and then focus on a much narrower question: Is IronPython valuable for people who are new to Python or .Net programming?  More to the point, can it be used to teach a novice “how to fish?”<span id="more-639"></span></p>
<h2>Backgrounds and Purposes</h2>
<p>To understand my take on Foord’s book, it is important to understand my background.  You see, I am not a computer science person.  I am not a programmer.  I am first and foremost a  research scientist and then an engineer.  Most of the time, I am concerned about refining and extending the technology of others; not creating it from nothing.  And while I occasionally need to write a bit of code, it usually falls into a realm that most <em>real</em> <em>programmers</em> treat with disdain: scripting.  This explains why, for the past five years or so, I have had an ongoing (if rather tempestuous) love affair with a technical computing toolbox called <a href="http://www.mathworks.com/">Matlab</a>.</p>
<p>During those years, I have helped The Mathworks Company (creators of Matlab) to line their pockets and strengthen their stranglehold as the de-facto language for technical computing, I have also had a long string of much-wiser computer people tell me that I should consider OpenSource alternatives.  (Anyone who is at all familiar with computers should be aware of the OpenSource/Proprietary divide.  If you’re not, it is very similar to the Windows/Mac divide; except substitute flame-throwers for flame-bait.)  OpenSource certainly has its advantages: it’s free, you can audit the code, there are a huge number of well written extensions, it will never go away, and it has a <a href="http://ubuntuforums.org/">very enthusiastic community</a>.  It also has some severe weaknesses: documentation sucks, there’s no technical support, and it has an <a href="http://www.stallman.org/">overly enthusiastic</a> <a href="http://boycottnovell.com/">community</a>.  I was particularly hung up on the bit about sucky documentation.</p>
<p>And then, about 18 months ago, <a href="http://www.oak-tree.us/articles/Bioen02.pdf">something</a> happened that changed my opinion.  Instead of trying to apply existing tech to new problems, I and my research group found ourselves looking at some very complex issues that no one had really studied before.  It didn’t take long to realize that our existing tool set was completely inadequate.  The group desperately needed alternatives to Matlab and I found myself burdened with a rather unpleasant research project.  I needed to find and screen said alternatives.  This started with Perl, proceeded to Ruby, and eventually ended up at Python. </p>
<p>I quickly decided that I liked what I saw. Python was fast, flexible, and had a very simple (yet elegant) syntax that could be taught to students and technicians familiar with Matlab.  There was a large number of extensions available and it was cross platform.  There was, however, a major problem: Python lacked bindings for the Insight Toolkit (ITK), an essential framework for people who work with medical imaging data.  Cue despair.  But … after yet more research, I found an acceptable workaround.  While Python might lack bindings, C# does not.  Coincidentally, there happened to be a Python implementation which allows for C# code to be used like native Python code: IronPython.</p>
<p>More importantly, however, all of the advantages were retained.  IronPython is Python.  The syntax still works, many of the extensions will load and run, and (through the use of Mono) IronPython is cross platform.  There are additional benefits as well: .Net grants access to an enormous number of very high quality C# libraries.  Thus, after careful consideration (lasting about 15 or 20 seconds), I made the decision to move our nascent code from Matlab to Python.  There was just one problem, I and essentially everyone else would need to learn Python and .Net from scratch, which might prove a formidable challenge.</p>
<h2>Learning IronPython</h2>
<p>This is where “IronPython in Action” makes its first appearance.  The book was first recommended by a friend familiar with my panic-stricken, "make things up as I go along" style.  He said it was well written and would be a good first read for someone with some (but not a whole lot) of computer programming experience.  I thanked him for his suggestion and purchased an electronic copy of the work in progress via the Manning Early Access Program (MEAP).</p>
<p>At the time, I had a list of very specific needs: </p>
<ol>
<li>Learn Python, its frameworks, syntax, and shortcomings.</li>
<li>Get a whirlwind introduction to .Net (Mono), its architecture and how IronPython fit into the big scheme of .Net dynamic languages.</li>
</ol>
<p>“IronPython in Action” fulfilled both, after a fashion, in addition to several more that I didn’t recognize as needs.  Of these unrecognized needs, the most important important was facing my own ignorance.  You see, IronPython helped me start to fill a few of the holes in my computer science education.  Being an engineer and not a programmer, I always considered myself above actually learn how to code.  I much preferred a “practical” view of coding best be articulated as, “Make it work!  Now!”  This “practical” view was most often delivered to an underling, at the top of my voice, prior to a major deadline.  And, as might be guessed, it didn’t always lend itself to an elegant, reusable, or even a useful end-product.</p>
<p>Fortunately, Python (by design) encourages all of the above: elegance, use and reuse.  More importantly though, Foord and Muirhead stress these concepts from the moment that you open their book.  Rather than delve immediately into the gritty of examples, Chapters 1 to 3 <em>insist</em> on providing a comprehensive overview and background to .Net, Python and how the two integrate.  To return to the fishing analogy: instead of baiting the hook and getting the reader started immediately, Foord instead opts to describe the tackle and trade tools and how they are used.</p>
<p>This can be quite frustrating to someone who wants to deal with the “practical” world.  After all, I want to code, not re-learn how to think!  Except … that is exactly what I needed to do.  As I read through “IronPython in Action,” I found myself drawn to the many footnotes (29 in the second chapter alone) and references so that I could learn more about a given topic.  Instead of tackling syntax, frameworks and shortcomings I found myself reading a great deal about object oriented, procedural, and meta programming.  More fatally, instead of focusing on “just making it work,” I was entertaining radical thoughts like “how does it work” and “can it be improved.”  Such introspection approaches sacrilegious among “practical” people.</p>
<p>Thus, when the authors do begin to provide examples during Part 2 of the book, the reader is in a much better position to make good use of them.  Essential lessons, the equivalent of baiting hooks and making a cast, have already been covered and Foord is able to begin sharing insights into how to successfully “fish.”  And there are plenty of said insights covering most major topics of interest: Windows Forms, Web Development, and even Windows Presentation Foundation (WPF).  The chapters covering system administration are just a bonus.</p>
<h2>An Education</h2>
<p>At every point, Foord and Muirhead seem to hold to another old adage, “Rather than ‘teach,’ I would prefer to help you learn.”  In doing so, they encourage and empower their readers to explore well beyond the examples and techniques covered within the pages of “IronPython in Action.”</p>
<p>In case it isn’t clear, I heartily recommend that anyone interested in learning Python or .Net purchase this book.  It certainly has its idiosyncrasies, but it still manages two roles very successfully: 1)  introductory text and 2) reference manual.  While novice readers (like myself six months ago) will find tremendous value in reading the book from cover to cover, more experienced hands will find value in skimming individual chapters.  As someone who has written technical documentation, I can testify that such a feat is extremely difficult to pull off.</p>
<p>While this style is particularly valuable to the novice, it might not work to the benefit of everyone.  More advanced readers might desire to see more extensive/complicated examples or a more thorough overview of both the Python and .Net frameworks.  But ... I suspect that these individuals will be few, after all, that information is provided by the respective Python Standard Library and Microsoft documentation libraries.</p>
<p>In conclusion, I can only congratulate the authors on this excellent introductory work.  While I initially set out with a desire to learn a skill, I instead received an education.  In the process, I got excited about programming, Python, and OpenSource.  To answer my own question: Can IronPython in Action be used to teach a novice how to “fish?”</p>
<p>Most definitely.<br />
<h3>Similar Posts:</h3>
<ul class="similar-posts">
<li><a href="http://www.oak-tree.us/blog/index.php/2009/02/11/pitiful" rel="bookmark" title="February 11, 2009">A Pitiful and Pathetic Story</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/07/05/backup-part5-1" rel="bookmark" title="July 5, 2009">Backup, Sync and Share &ndash; Part 5.1: Windows Vista Backup (Files)</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/02/21/question-answer" rel="bookmark" title="February 21, 2009">Inheritance Questions and Answers</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2008/12/21/collection03-moment" rel="bookmark" title="December 21, 2008">The Collection – A Moment</a></li>
<li><a href="http://www.oak-tree.us/blog/index.php/2009/05/14/twitter" rel="bookmark" title="May 14, 2009">I Killed Twitter</a></li>
</ul>
<p><!-- Similar Posts took 25.038 ms --></p>
<p>Copywrite 2009: Rob Oakes.  <a href="http://www.oak-tree.us/blog">Apolitically Incorrect</a><br/><br/><a href="http://www.oak-tree.us/blog/index.php/2009/02/09/ironpython-in-action">IronPython in Action</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oak-tree.us/blog/index.php/2009/02/09/ironpython-in-action/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

