<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
     xmlns:admin="http://webns.net/mvcb/"
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:content="http://purl.org/rss/1.0/modules/content/">

  <channel>
    <title>Jens Bjerrehuus: articles</title>
    <link>http://www.bjerrehuus.dk/blog/jens</link>
    <description>The personal website of Jens Bjerrehuus has articles about web development, photography and computing.</description>
    <dc:language>en</dc:language>
    <dc:creator>jens@bjerrehuus.dk</dc:creator>
    <dc:rights>Copyright 2008</dc:rights>
    <dc:date>2008-06-15T15:41:00+01:00</dc:date>
    <admin:generatorAgent rdf:resource="http://www.pmachine.com/" />
    
    
    <item>
      <title>How to Automatically Create Transparent Overlays on Images with JavaScript</title>
      <link>http://bjerrehuus.dk/blog/jens/article/how-to-automatically-create-transparent-overlays-on-images-with-javascript/</link>
      <guid>http://bjerrehuus.dk/blog/jens/article/how-to-automatically-create-transparent-overlays-on-images-with-javascript/#When:15:41:00Z</guid>
      <description>Here we describe a way to automatically add a transparent overlay to an image to allow text placed on top of the image to be legible.
When you want to place text on top of an image you need to either choose an image that has a large area of mostly the same color to work as the background for the text or you need to overlay the image with a transparent layer that will then act as the background for the text.&amp;nbsp; Here we choose the second option and describe a simple JavaScript function that will apply the extra mark&#45;up needed automatically.

How to Create the Transparent Overlay
Sara Flemming describes a technique involving an extra div element that will prevent the transparency from being applied to the text elements contained by the wrapper element.

Basically, the trick is to add an empty div before the text elements and apply the transparency to the extra empty div.&amp;nbsp; That empty div is then positioned, so that it overlaps with the text elements.

Applying the Transparent Overlay Automatically
To simplify the use of this technique, I created a small JavaScript function that will add the extra transparent div along with the needed CSS styles automatically.&amp;nbsp; All, you have to do is add the class transparent&#45;overlay to the element you want to have the overlay and create the styles that define the layout of the transparent overlay.

The Structure of the HTML
In the example here I have a div with a header element and a paragraph of text.&amp;nbsp; The div has a background image that is not immediately usable as a background to place text on, so I need to create a transparent overlay on the image to place the text on.

The first thing to do is to include the JavaScript file in the header:


	&amp;lt;script src=&quot;javascript/overlay.js&quot;
	           type=&quot;text/javascript&quot;
	           charset=&quot;utf&#45;8&quot;&amp;gt;&amp;lt;/script&amp;gt;


After the JavaScript function is included you can add the class transparent&#45;overlay to the elements you want to have a transparent overlay.&amp;nbsp; Here I have added it to the div that contains my text elements.


	&amp;lt;div class=&quot;module order transparent&#45;overlay&quot;&amp;gt;
	  &amp;lt;h2&amp;gt;Udfyld en&amp;lt;/h2&amp;gt;
	  &amp;lt;p&amp;gt;bestillingsseddel og send den til os&amp;hellip;&amp;lt;/p&amp;gt;
	&amp;lt;/div&amp;gt;


This div element has an image background.


	.module.order {
	  background:url(../images/orderpad.jpg) no&#45;repeat 0 0;
	}


Once the JavaScript function has transformed the HTML there will be two extra div elements.

The first is an empty div that has the class overlay&#45;background added.&amp;nbsp; This class is styled by the JavaScript function as described in the next section, but you can of course override that styling by adding your own stylerule for the overlay&#45;background class.

The second div is wrapped around the elements that were originally wrapped in the element with the transparent&#45;overlay class.&amp;nbsp; This div has the class overlay&#45;message added, which again allows you to style the text as you want to.

Here&#8217;s how the structure looks after the transformation.


	&amp;lt;div class=&quot;module order&quot;&amp;gt;
	  &amp;lt;div class=&quot;overlay&#45;background&quot;&amp;gt;&amp;lt;/div&amp;gt;
	  &amp;lt;div class=&quot;overlay&#45;message&quot;&amp;gt;
	    &amp;lt;h2&amp;gt;Udfyld en&amp;lt;/h2&amp;gt;
	    &amp;lt;p&amp;gt;bestillingsseddel og send den til os&amp;hellip;&amp;lt;/p&amp;gt;
	  &amp;lt;/div&amp;gt;
	&amp;lt;/div&amp;gt;


The CSS Rules To Style the Overlay
The transformation function adds a stylerule at the beginning of the first stylesheet in the page.&amp;nbsp; That stylerule defines the look of the empty div added to the HTML.&amp;nbsp; The rule looks like this:


	.overlay&#45;background {
	  background:#222;
	  filter:alpha(opacity=80);
	  height:100%;
	  &#45;khtml&#45;opacity:0.8;
	  &#45;moz&#45;opacity:0.8;
	  opacity:0.8;
	  text&#45;shadow:0 0 0 #000;
	  width:50%;
	}


You are of course free to add your own stylerule to override this or to add other attributes to the look of the transparent overlay; you might e.g. want the transparent layer to be darker, in which case you would change the background color of the overlay&#45;background stylerule.

In the example here I would probably add some styles to position the overlay background and the overlay message on top of each other and I would also add a specific width to the overlay&#45;background to match the amount of text better than the default width of fifty percent of the containing element.


	.module .overlay&#45;background {
	  left:1em;
	  position:absolute;
	  top:0;
	  width:11em;
	}
	.module .overlay&#45;message {
	  left:1em;
	  position:absolute;
	  top:0;
	}


Conclusions
And that is pretty much all there is to it.&amp;nbsp; I&#8217;ve seen this work in Safari 3, Firefox 2, and IE 7.&amp;nbsp; The JavaScript function is released here with an MIT license, so feel free to use it under those rules.

You should be aware of one restriction on the use of this script because of the way that it inserts a stylerule in the first stylesheet on the page.&amp;nbsp; I initially had a couple of @ (at&#45;sign) directives at the start of my stylesheet; i.e. a @charset directive and a couple of @import directives.&amp;nbsp; It turned out that Firefox does not like that.&amp;nbsp; It fails to insert the rule complaining that the node cannot be inserted at the specified point in the hierarchy.</description>
      <dc:subject></dc:subject>
      <dc:date>2008-06-15T15:41:00+01:00</dc:date>
    </item>
    
    <item>
      <title>Improve the Typographic Style of Your Expression Engine Websites</title>
      <link>http://bjerrehuus.dk/blog/jens/article/improve-the-typographic-style-of-your-expression-engine-websites/</link>
      <guid>http://bjerrehuus.dk/blog/jens/article/improve-the-typographic-style-of-your-expression-engine-websites/#When:08:43:00Z</guid>
      <description>Have you noticed the increased focus in the last year or so on better typographic style on the internet.&amp;nbsp; Topics like typographic grids and vertical rhythm have recieved more attention in relation to web design.&amp;nbsp; Other aspects of typographic style like the styling of ampersands and the use of proper quote characters has also received more focus than before.&amp;nbsp; It is the application of these latter aspects of typograhic style in the context of the Expression Engine CMS that is the focus of this article.
Have you noticed the increased focus in the last year or so on better typographic style on the internet.&amp;nbsp; Topics like typographic grids and vertical rhythm have recieved more attention in relation to web design.&amp;nbsp; Other aspects of typographic style like the styling of ampersands and the use of proper quote characters has also received more focus than before.&amp;nbsp; It is the application of these latter aspects of typograhic style in the context of the Expression Engine CMS that is the focus of this article.

The Background Story
Typogrify is a collection of filters for the Django Web framework, which provides filters that help you follow better typographic styles.&amp;nbsp; It filters your website through a number of regular expressions and wraps certain typographically significant entities in HTML span elements with a class name that identify the typographic element; e.g. the class amp is set on a span enclosing ampersand characters.

Typogrify Plugin for Expression Engine
The typogrify plugin for Expression Engine is a reinterpretation of the Django filters of the same name.&amp;nbsp; I have used the original ideas and expanded a bit on them.

Here I present the functions that are available in the plugin with a short description of what it does to your text.

&#123;exp:typogrify:amp&#125;
Wrap ampersands in a span with class=&quot;amp&quot;.&amp;nbsp; This enables you to follow Bringhursts recommendation to &#8220;In heads and titles, use the best available ampersand&#8221;.

&#123;exp:typogrify:caps&#125;
Wrap sequences of capital letters in a span with class=&quot;caps&quot;.&amp;nbsp; This is useful if you want to set sequences of capitals as small capitals.

There must be at least two capital letters in the sequence, the letters may be separated by periods, and the sequence must be surrounded by characters other than letters.

That last criteria is a change from the Django filters, which means that we will not wrap the initials in a name like W.B.Yeats, because the W.B.Y capitals are followed immediately by a lowercase letter.&amp;nbsp; The reason for this change is that it is not usually considered good practice in typography to set those capitals as small capitals.

&#123;exp:typogrify:initial_quote&#125; and &#123;exp:typogrify:final_quote&#125;
Wrap a quote character that is the first/last character in a paragraph in the two classes &#8220;initial&quot;/&quot;final&quot; and &#8220;quote&#8221;.&amp;nbsp; A paragraph in this context means either an actual paragraph element, a heading element or a list element.

The quote characters that we recognize here as initial quote characters are the left double angle, the left angle, the left double and the left single entities&amp;mdash;the characters classified in Unicode as initial quote characters.

The quote characters that we recognize here as the final quote characters are the right double angle, the right angle, the right double and the right single entities&amp;mdash;the characters classified in Unicode as final quote characters.

&#123;exp:typogrify:smartypants attr=&quot;2&quot;&#125;
This is just a wrapping of the PHP port by Michel Fortin of John Grubers SmartyPants perl script.&amp;nbsp; I have made one change from the original script; the default attribute is set to 2, which means that  &#8221;&#45;&#45;&#45;&#8221; (three dashes) are used for em&#45;dashes and &#8221;&#45;&#45;&#8221; (two dashes) for en&#45;dashes; this default can be overridden with the attr parameter.

&#123;exp:typogrify:widont&#125;
Insert a non&#45;breaking space entity between the two last words in every paragraph.&amp;nbsp; A paragraph in this context means either an actual paragraph element, a heading element or a list element.&amp;nbsp; This will avoid what typographers refer to as &#8220;widows&quot;&amp;mdash;a single word on its own line at the end of a paragraph.

&#123;exp:typogrify&#125;
A shortcut to apply all the functions in the plugin.

Where the Functions Don&#8217;t Apply
Except for the widont function, any text inside pre/code/kbd/script/math elements is not processed by these functions, but just passed through unchanged.&amp;nbsp; The widont function has proven somewhat problematic in this regard and as for now that function will change all text where the function is applied.</description>
      <dc:subject></dc:subject>
      <dc:date>2007-12-16T08:43:00+01:00</dc:date>
    </item>
    
    <item>
      <title>Here&#8217;s a quick way to use color constants in CSS</title>
      <link>http://bjerrehuus.dk/blog/jens/article/heres-a-quick-way-to-use-color-constants-in-css/</link>
      <guid>http://bjerrehuus.dk/blog/jens/article/heres-a-quick-way-to-use-color-constants-in-css/#When:10:03:00Z</guid>
      <description>In CSS files of even moderate size it quickly gets complicated to keep track of where a specific color is used.  Here I present a way to define your colors as constants at the top of the CSS file and then use those constants in your CSS declarations.In CSS files of even moderate size it quickly gets complicated to keep track of where a specific color is used.  Here I present a way to define your colors as constants at the top of the CSS file and then use those constants in your CSS declarations.
There are some techniques floating around where server side scripting and simple comment lists is used to implement color constants.  These techniques either require you to install PHP scripts and modify .htaccess files on the server or they rely on you remembering to search and replace the color values when you change them.  What I present here is a technique that works locally on your computer and results in a static CSS file that you then upload to the server as you normally would.
The specific implementation is described in terms of the TextMate editor for Mac OS X, but the general idea could be implemented in any editor with the ability to add extensions.
In TextMate it is possible to create new commands that are specific to the kind of file you are currently editing.  Here we create a new command that filters the current file through the M4 macro processor (which comes standard with Mac OS X) and places the output in a file named the same as the current file but with a .css extension.  This means that the CSS file with the color constants should be named something other than .css; e.g. .mcss as I&apos;ve used here.

  Fig. 1: Create a command in the CSS bundle.
  

The actual command is this:

  cd $TM_DIRECTORY
  echo &quot;changecom(&apos;/*&apos;, &apos;*/&apos;)&quot; 
    | m4 &#45; `basename $TM_FILEPATH` 
    &gt; `basename $TM_FILEPATH .mcss`.css
The command is set to save the current file, take no input and discard the output.  I called my command Replace Constants, but you can call it whatever you want.  I also set a key equivalent of Command&#45;B (for build) to make it easier to get at.
With this command set up it is possible to create color constants at the top of your (M4&#45;)CSS files.  The way you define color constants looks like this:

  Fig. 2: Define color constants at the top of your CSS files.
  

And you can then use these constants where you would normally write the color code.

  Fig. 3: Use the color constants in your CSS declarations.
  

After inserting the color constants in the .mcss file you activate the command and it creates the .css file with the color constants expanded to the color values.
And that&apos;s it!  Simple and readable color constants in your CSS files.
This is just a very simple use of the M4 macro processor; one extesion to this technique could be to create a file with color names (e.g. from the X11 or the Pantone color list) in M4 format and include that file in your CSS.  That would give you access to a lot of symbolic color names without having to lookup the RGB values.  Or you could build a file with all your own favorite color names and their RGB values.
Two things that you should be aware of with this implementation:

  Macros in M4 are processed repeatedly and it might therefore be advisable to quote the color names in the definitions.  See M4: Defining a macro
  When the defines are processed by M4 it leaves behind a blank line, which is then in your CSS file.  This could be removed by piping the output from M4 through some other filter to remove repeated blank lines before saving the .css file.  I haven&apos;t done this here but it would probably be advisable if you create a lot of color constants as each one gives a blank line.</description>
      <dc:subject></dc:subject>
      <dc:date>2006-12-27T10:03:00+01:00</dc:date>
    </item>
    
    <item>
      <title>Edgy photography</title>
      <link>http://bjerrehuus.dk/blog/jens/article/edgy-photography/</link>
      <guid>http://bjerrehuus.dk/blog/jens/article/edgy-photography/#When:23:52:00Z</guid>
      <description>Photographs taken about twenty minutes from where I live in two different directions.It&apos;s kind of nice to live on the outskirts of town&#45;&#45;the distance to the outer industrial district of Århus and to the rural idyll of the Fulden village is about the same.

When I jump on my bicycle and go about twenty minutes to the north&#45;west I end up in the industrial district of southern Århus with car dealers, the local power plant and container parking.
  
    Fig. 1: Containerparking in Viby industrial district.
    
  

It&apos;s not a picturesque neighborhood but very quiet on a saturday afternoon, which is when the photo of the containers was taken.  Equally quiet, in a very different sense of the word, is the small village Fulden, which I get to in about the same time riding to the east.  This photo is taken on another day just before nightfall.
  
    Fig. 2: A small bridge in Fulden.
    
  

Both photos here have been photoshopped a bit to give them a slight Lomographic tone.  I&apos;ll probably get back to how I did that in a later article&#45;&#45;it&apos;s a combination of some of the techniques found on other sites.</description>
      <dc:subject></dc:subject>
      <dc:date>2006-07-31T23:52:00+01:00</dc:date>
    </item>
    
    <item>
      <title>The redesign is done</title>
      <link>http://bjerrehuus.dk/blog/jens/article/the-redesign-is-done/</link>
      <guid>http://bjerrehuus.dk/blog/jens/article/the-redesign-is-done/#When:23:25:00Z</guid>
      <description>A short blurp about the redesign of the website in 2006.A bit later than I planned the redesign is done.

There are still a few places where the design is not pixel perfect, but the design is basically as I imagined it at the outset.  There are also some parts that don&apos;t work entirely as I want them to in MSIE, but I&apos;ll leave that for now&#45;&#45;that is a very troublesome browser to cater to if you try to create a standards compliant HTML/CSS layout.  The site looks great in Firefox though.

I have tried to list the choices I made and the Textpattern plug&#45;ins I have used to create the design and the layout in the colophon (Note: There is no longer a colophon for this website).  The source HTML and CSS  could still do with a bit of cleaning up but that will have to wait until I have learned a bit more about modern web coding.</description>
      <dc:subject></dc:subject>
      <dc:date>2006-07-22T23:25:00+01:00</dc:date>
    </item>
    
    <item>
      <title>Redesign going on</title>
      <link>http://bjerrehuus.dk/blog/jens/article/redesign-going-on/</link>
      <guid>http://bjerrehuus.dk/blog/jens/article/redesign-going-on/#When:10:16:00Z</guid>
      <description>I&apos;m redesigning the site to add a little colour, so things might be a bit wanky for a while.  Hopefully it will all be good in just a couple of days.I&apos;m redesigning the site to add a little colour, so things might be a bit wanky for a while.  Hopefully it will all be good in just a couple of days.</description>
      <dc:subject></dc:subject>
      <dc:date>2006-06-06T10:16:00+01:00</dc:date>
    </item>
    
    <item>
      <title>Cleaning out my closet</title>
      <link>http://bjerrehuus.dk/blog/jens/article/cleaning-out-my-closet/</link>
      <guid>http://bjerrehuus.dk/blog/jens/article/cleaning-out-my-closet/#When:23:36:00Z</guid>
      <description>Trying to make life a little less cluttered.Got inspired by a Lifehacker article about getting rid of stuff.  First up was a run through of all the books I already read.  The ones I don&apos;t expect to read again are in a pile, which I&apos;ll let family and friends go through before handing the rest to the nearest charity for reselling.

Next is looking through the closets to weed out all clothes that I don&apos;t wear or don&apos;t wear regularly enough to warrant the space it takes up.  A small pile is already building.

This feels good.  It should be a regular event, e.g. every three months.  Maybe I should schedule an event in my calendar.</description>
      <dc:subject></dc:subject>
      <dc:date>2006-06-04T23:36:00+01:00</dc:date>
    </item>
    
    <item>
      <title>A unit test framework for Common Lisp</title>
      <link>http://bjerrehuus.dk/blog/jens/article/a-unit-test-framework-for-common-lisp/</link>
      <guid>http://bjerrehuus.dk/blog/jens/article/a-unit-test-framework-for-common-lisp/#When:23:25:00Z</guid>
      <description>I was reading Peter Seibels book Practical Common Lisp a couple of months ago and got inspired by his very simple testing framework.  I thought how hard can it be to expand that into a &quot;real&quot; framework in the SUnit tradition.  Well, it wasn&apos;t really hard, but it did take a couple of months anyway.I was reading Peter Seibels book Practical Common Lisp a couple of months ago and got inspired by his very simple testing framework.  I thought how hard can it be to expand that into a &quot;real&quot; framework in the SUnit tradition.  Well, it wasn&apos;t really hard, but it did take a couple of months anyway.

So here is my attempt at a unit test framework for Common Lisp.  I&apos;ll call it 1.0 when there is some proper documentation.

There is very little documentation at this point but if you are familiar with the Test::Unit framework from Ruby it should not be too hard to get started with this.  There is also an example use of the framework in a sub&#45;directory in the distribution.

Basically, you define a test case with the DEFINE&#45;TEST&#45;CASE macro.  This macro defines a CLOS class with the same name as the test case.  You could just define your test cases with DEFCLASS but the macro wraps up the definitions of the SET&#45;UP and TEAR&#45;DOWN methods so it&apos;s probably easier to use the macro.

Test cases are identified by being subclasses of the TEST&#45;CASE class.

The individual tests are then defined with the DEFINE&#45;TEST macro.  This macro defines methods with the same names as the tests so you would think that it would be just as easy to define the tests with DEFMETHOD instead.  But, the framework depends on a couple of special variables, which are automatically set if you define your tests with the macro.

The assertions you use in the tests are called ASSURE&#45;* instead of assert so as not to clash with the standard ASSERT.

Finally, to run the tests you use the RUN&#45;TESTS function.  When you tell it to run all tests for a test case it uses introspection to find all methods whose names start with TEST&#45; so for this to work all tests should follow this naming convention.

The framework use the MOP, which is known to differ between Common Lisps.  I have tested this with current SBCL and OpenMCL on Mac OS X.

The license is the MIT license.</description>
      <dc:subject></dc:subject>
      <dc:date>2006-03-25T23:25:00+01:00</dc:date>
    </item>
    
    <item>
      <title>Automated backups with rdiff&#45;backup on Mac OS X</title>
      <link>http://bjerrehuus.dk/blog/jens/article/automated-backups-with-rdiff-backup-on-mac-os-x/</link>
      <guid>http://bjerrehuus.dk/blog/jens/article/automated-backups-with-rdiff-backup-on-mac-os-x/#When:10:04:00Z</guid>
      <description>Since I wrote the original article I&apos;ve come across another article about automated backups with rdiff&#45;backup.

This is the setup that I&apos;ve got working on Mac OS X&amp;mdash;Tiger on the server and Panther on the client.Since I wrote the original article I&apos;ve come across another article about automated backups with rdiff&#45;backup.

This is the setup that I&apos;ve got working on Mac OS X&amp;mdash;Tiger on the server and Panther on the client.

The disk volume setup is still as originally described: an HFS+, journaled partition with case preserving turned on and changed to not ignore permissions.

The rdiff&#45;backup version is still the latest stable release and the exclude file list isn&apos;t changed either.  It is also important to note that the rdiff&#45;backup program has to be installed somewhere in the SSH path; i.e. typically in /bin or /usr/bin.

Backup on the server is now handled identically to backup on the client.  This required a SSH setup for localhost (here called dorado&#45;backup) as well.  The command to backup the server is now:


$ rdiff&#45;backup &#45;&#45;include&#45;globbing&#45;filelist 
&gt; ~/src/tools/rdiff&#45;backup&#45;filelist 
&gt; dorado&#45;backup::/ /Volumes/Backup/Dorado


The backups are initiated from a new backup user as described here and rdiff&#45;backup is run as root on the clients.  This got rid of the problems I experienced initially with files that my backup user couldn&apos;t access.

I had to leave out one part of that setup though.  When the authorized_keys2 file is setup on the client I had to leave out the from=&quot;server&quot; part; probably because there is no DNS setup on my network or maybe it&apos;s because the root logins are disabled on both hosts.

With this setup in place all that was left was to automate the whole thing with a crontab for the backup user.</description>
      <dc:subject></dc:subject>
      <dc:date>2006-02-20T10:04:00+01:00</dc:date>
    </item>
    
    <item>
      <title>Keeping my data intact</title>
      <link>http://bjerrehuus.dk/blog/jens/article/keeping-the-precious-data-intact/</link>
      <guid>http://bjerrehuus.dk/blog/jens/article/keeping-the-precious-data-intact/#When:05:57:00Z</guid>
      <description>Last week there was an article on ars technica about the backup tool rdiff&#45;backup.  This looked like a simple way to get automated backups implemented for both the Mac mini and the PowerBook, so I set out this weekend to get it installed and activated.Last week there was an article on ars technica about the backup tool rdiff&#45;backup.  This looked like a simple way to get automated backups implemented for both the Mac mini and the PowerBook, so I set out this weekend to get it installed and activated.

I&apos;ve been running (ir)regular backups manually for some time on the Mac mini, but have never got any backup scheme set up for the PowerBook.  This is a description of the (still manual) set up I&apos;ve got working now.

The first thing to do was get a disk partition set up as the backup target.  After a few trial and errors I succeeded with a disk that has a partition formatted as HFS+, journaled and with case preserving.  It seemed that the version (1.0.4) of rdiff&#45;backup I ended up using did not like the usual HFS+ habbit of ignoring case; all filenames with capital letters in them ended up looking quite peculiar.

As per the advice in the rdiff&#45;backup wiki I changed the partition to not ignore permissions.

I then installed the latest stable version of rdiff&#45;backup and was effectively ready to go.

There are some files that you would not normally back up and these are listed in an include/exclude file:


&#45; **/Caches
&#45; **/Movies
&#45; **/Music
&#45; /Network
&#45; /Volumes
&#45; /tmp
&#45; **/tmp
&#45; /dev


This set up was adequate for creating a local backup, so I ran the command:


$ rdiff&#45;backup &#45;&#45;include&#45;globbing&#45;filelist 
&gt; ~/src/tools/rdiff&#45;backup&#45;filelist 
&gt; / /Volumes/Backup/Dorado


to create a backup of the Mac mini.  I ran the command as an administrative user, but not as the root user.  This meant that some files could not be read and thus were not backed up.  The plan here is to check the permission on the problematic files and see if any of them should have their permissions changed or if they should be excluded from the backup.

In order to run the backups of the PowerBook from the Mac mini over the wireless network I had to set up SSH as described in the rdiff&#45;backup wiki.  With this set&#45;up it was possible to backup both computers from the stationary, and almost always on, Mac mini.

The next task is to automate the backup procedure, so I can stop worrying about not remembering to do it.</description>
      <dc:subject></dc:subject>
      <dc:date>2006-02-05T05:57:00+01:00</dc:date>
    </item>
    
  </channel>
</rss>
