<?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>Global Spin &#187; Macintosh</title>
	<atom:link href="http://globalspin.com/category/macintosh/feed/" rel="self" type="application/rss+xml" />
	<link>http://globalspin.com</link>
	<description>a glimpse into the tiny mind of Chris Radcliff</description>
	<lastBuildDate>Sat, 26 Jul 2025 15:59:46 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.8</generator>
	<item>
		<title>A Greener Apple</title>
		<link>http://globalspin.com/2007/05/a-greener-apple/</link>
		<comments>http://globalspin.com/2007/05/a-greener-apple/#comments</comments>
		<pubDate>Wed, 02 May 2007 21:32:41 +0000</pubDate>
		<dc:creator><![CDATA[Chris]]></dc:creator>
				<category><![CDATA[Environment]]></category>
		<category><![CDATA[Macintosh]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://globalspin.com/2007/05/02/982/</guid>
		<description><![CDATA[Steve Jobs released a statement today (A Greener Apple) that thoughtfully and simply summarizes progress Apple has made in improving the environmental footprint of its products.  The letter covers everything from plans to phase out toxic chemicals to electronic waste recycling, and each step sounds more reasonable than the last. I would post excerpts here, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Steve Jobs released a statement today (<a href="http://www.apple.com/hotnews/agreenerapple/">A Greener Apple</a>) that thoughtfully and simply summarizes progress Apple has made in improving the environmental footprint of its products.  The letter covers everything from plans to phase out toxic chemicals to electronic waste recycling, and each step sounds more reasonable than the last.</p>
<p>I would post excerpts here, but I don&#8217;t think they would do the piece justice.  The entire statement is worth a read.  It made me happy to be an Apple customer.</p>
]]></content:encoded>
			<wfw:commentRss>http://globalspin.com/2007/05/a-greener-apple/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CPAN vs. dot-underscore</title>
		<link>http://globalspin.com/2005/07/cpan-vs-dot-underscore/</link>
		<comments>http://globalspin.com/2005/07/cpan-vs-dot-underscore/#comments</comments>
		<pubDate>Fri, 01 Jul 2005 17:33:26 +0000</pubDate>
		<dc:creator><![CDATA[Chris]]></dc:creator>
				<category><![CDATA[Macintosh]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://globalspin.com/wp/2005/07/01/11/</guid>
		<description><![CDATA[I was so keen on the idea of pushing a module to CPAN that I almost didn&#8217;t catch a fatal flaw in my scheme. Mac OS X (motto: It Just Works) was doing something odd to my tarball as it was created: it was adding a whole host of files that weren&#8217;t there originally. Not [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I was so keen on the idea of pushing a module to CPAN that I almost didn&#8217;t catch a fatal flaw in my scheme.  Mac OS X (motto: It Just Works) was doing something odd to my tarball as it was created: it was adding a whole host of files that weren&#8217;t there originally.  Not just the <a href="http://rixstep.com/1/20030521,00.html">.DS_Store</a> files we all know and love (and learn to remove), but odd shadow files like ._foo.txt for foo.txt and ._Makefile.PL for Makefile.PL.</p>
<p>Yep.  Now you might see the problem.<br />
<span id="more-11"></span><br />
At first I wasn&#8217;t worried about them, because tar made the files vanish when I extracted the tarball to another location on my Mac.  Assuming this was some quirk in tar, I posted the tarball to CPAN and went on my merry way.  As it turned out, extracting the tarball on any non-Mac system retained all the shadow files, including ._Makefile.PL.  That one caused the install process to fail and made the module essentially useless.</p>
<p>The only <a href="http://www.disordered.org/Content.cgi/aapl/0273.html">mention of tar&#8217;s new behavior</a> I found was in a blog post about the same problem I was having.  Turns out that it&#8217;s a relatively new twist on an old problem, new because tar itself had been updated to create and consume the dot-underscore files.  There were other notes about these files (aka AppleDouble files) around the Web, but the proposed remedy was always the same: delete the files once they&#8217;re on the target system.  Unfortunately, that&#8217;s not good enough when the target is CPAN.</p>
<p>tar&#8217;s own ability to &#8211;exclude input files was no use, either, because it creates the files <em>after</em> the exclude filter is processed.  There is a &#8211;delete option, but it requires a specific filename so I&#8217;d have to remove the files one at a time.  Now that the task had moved from impossibility to drudgery, however, the solution was obvious:  a Perl script!</p>
<p><code>#!/usr/bin/perl</code></p>
<p>use Archive::Tar;<br />
use IO::Zlib;<br />
use File::Copy;</p>
<p>my $USAGE = &#8221;  Usage: $0 FILENAME\n&#8221;;</p>
<p>my $tar_file = $ARGV[0]<br />
or die $USAGE;</p>
<p>my $tar = Archive::Tar-&gt;new($tar_file);</p>
<p>my @files_to_remove;<br />
foreach my $file ( sort $tar-&gt;list_files( ['name'] ) )<br />
{<br />
print &#8221;  $file&#8221;;<br />
if ($file =~ &#8216;/\._&#8217; or $file =~ &#8216;.DS_Store&#8217;)<br />
{<br />
print &#8221;  &#8230;will be removed.&#8221;;<br />
push @files_to_remove, $file;<br />
}<br />
print &#8220;\n&#8221;;<br />
}</p>
<p>unless ( scalar(@files_to_remove) )<br />
{<br />
print &#8220;No files were found to remove.  The archive is unchanged.\n&#8221;;<br />
exit;<br />
}</p>
<p>my $backup_file = $tar_file . &#8220;.bak&#8221;;<br />
copy($tar_file, $backup_file);<br />
print &#8220;Backup file written to $backup_file.\n&#8221;;</p>
<p>$tar-&gt;remove(@files_to_remove);</p>
<p>print &#8220;Clean archive:\n&#8221;;<br />
foreach my $file ( sort $tar-&gt;list_files( ['name'] ) )<br />
{<br />
print &#8221;  $file&#8221;;<br />
print &#8220;\n&#8221;;<br />
}</p>
<p>$tar-&gt;write($tar_file, 1);</p>
<p>print &#8220;Clean file has been written.\n\n&#8221;;</p>
<p>I&#8217;ll probably clean that up and submit it to CPAN as well, but hopefully Apple will add a &#8211;dont-be-evil option to tar before I get the chance.</p>
]]></content:encoded>
			<wfw:commentRss>http://globalspin.com/2005/07/cpan-vs-dot-underscore/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Gee! (your app smells terrific)</title>
		<link>http://globalspin.com/2005/06/gee-your-app-smells-terrific/</link>
		<comments>http://globalspin.com/2005/06/gee-your-app-smells-terrific/#comments</comments>
		<pubDate>Wed, 29 Jun 2005 17:45:51 +0000</pubDate>
		<dc:creator><![CDATA[Chris]]></dc:creator>
				<category><![CDATA[Macintosh]]></category>

		<guid isPermaLink="false">http://globalspin.com/wp/2005/06/29/10/</guid>
		<description><![CDATA[The worst part of having multiple e-mail addresses is keeping on top of new messages without spending every waking moment checking each account in sequence. That&#8217;s why I love &#8220;Gee!&#8221;:http://www.lloydslounge.org/gee/, a functional little GMail notifier for Mac OS X. Gee (I&#8217;m going to stop exclaiming it) checks GMail&#8217;s Atom feed for my messages and updates [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>The worst part of having multiple e-mail addresses is keeping on top of new messages without spending every waking moment checking each account in sequence.  That&#8217;s why I love &#8220;Gee!&#8221;:http://www.lloydslounge.org/gee/, a functional little GMail notifier for Mac OS X.  </p>
<p>Gee (I&#8217;m going to stop exclaiming it) checks GMail&#8217;s Atom feed for my messages and updates a small blue circle in the menubar with the count of new ones.  Pretty standard, but Gee goes one louder: clicking on the circle drops down a list of the senders&#8217; addresses (or subject, or a combination depending on preference) so that I can quickly tell the difference between spam and an important message without pulling up GMail itself.  If that&#8217;s not enough, Gee also lets me reset the counter so I can _choose to ignore it_ until something newer comes in. </p>
<p>That combination of simple features provides the best attention-span booster I&#8217;ve had in weeks.  Of course, I just blew any productivity gain by blogging about it, but I had to share the love.</p>
]]></content:encoded>
			<wfw:commentRss>http://globalspin.com/2005/06/gee-your-app-smells-terrific/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
