<?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>Reliably Broken &#187; mac</title>
	<atom:link href="http://reliablybroken.com/b/tag/mac/feed/" rel="self" type="application/rss+xml" />
	<link>http://reliablybroken.com/b</link>
	<description>It&#039;s a blog: let&#039;s do funch!</description>
	<lastBuildDate>Thu, 01 Dec 2011 21:27:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>SharpZipLib and Mac redux</title>
		<link>http://reliablybroken.com/b/2011/12/sharpziplib-and-mac-redux/</link>
		<comments>http://reliablybroken.com/b/2011/12/sharpziplib-and-mac-redux/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 21:21:00 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[zip]]></category>

		<guid isPermaLink="false">http://reliablybroken.com/b/?p=706</guid>
		<description><![CDATA[I wrote a blog about generating Mac-compatible zip files with SharpZipLib, the conclusion of which was to disable Zip64 compatibility. It was wrong, wrong I tell you. The better solution is to just set the size of each file you add to the archive. That way you can keep Zip64 compatibility and Mac compatibility. I [...]]]></description>
			<content:encoded><![CDATA[<p>I wrote a blog about <a href="http://reliablybroken.com/b/2011/11/sharpziplib-and-mac-os-x/">generating Mac-compatible zip files with SharpZipLib</a>, the conclusion of which was to disable Zip64 compatibility. It was wrong, <em>wrong</em> I tell you.</p>

<p>The better solution is to just set the size of each file you add to the archive. That way you can keep Zip64 compatibility and Mac compatibility.</p>

<p>I owe this solution to the excellent SharpZipLib forum, <a href="http://community.sharpdevelop.net/forums/p/4982/18649.aspx#18649">which covered this problem a while ago</a>, but which I missed when I wrote the earlier blog.</p>

<p>Here&#8217;s an updated version of the zip tool in C# that makes Macs happy without annoying anyone else:</p>

<pre><code>using System;
using System.IO;
using ICSharpCode.SharpZipLib.Core;
using ICSharpCode.SharpZipLib.Zip;


public class ZipTool
{
    public static void Main(string[] args)
    {
        if (args.Length != 2) {
            Console.WriteLine("Usage: ziptool &lt;input file&gt; &lt;output file&gt;");
            return;
        }

        using (ZipOutputStream zipout = new ZipOutputStream(File.Create(args[1]))) {
            byte[] buffer = new byte[4096];
            string filename = args[0];

            zipout.SetLevel(9);

            //  Set the size before adding it to the archive, to make your
            //  Mac-loving hippy friends happy.
            ZipEntry entry = new ZipEntry(Path.GetFileName(filename));
            FileInfo info = new FileInfo(filename);
            entry.DateTime = info.LastWriteTime;
            entry.Size = info.Length;
            zipout.PutNextEntry(entry);

            using (FileStream fs = File.OpenRead(filename)) {
                int sourceBytes;
                do {
                    sourceBytes = fs.Read(buffer, 0, buffer.Length);
                    zipout.Write(buffer, 0, sourceBytes);
                } while (sourceBytes &gt; 0);
            }

            zipout.Finish();
            zipout.Close();
        }
    }
}
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://reliablybroken.com/b/2011/12/sharpziplib-and-mac-redux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SharpZipLib and Mac OS X</title>
		<link>http://reliablybroken.com/b/2011/11/sharpziplib-and-mac-os-x/</link>
		<comments>http://reliablybroken.com/b/2011/11/sharpziplib-and-mac-os-x/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 22:50:45 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[macports]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[zip]]></category>

		<guid isPermaLink="false">http://reliablybroken.com/b/?p=699</guid>
		<description><![CDATA[TL;DR When creating zip archives with SharpZipLib disable Zip64 format if you care about Mac compatibility. Extra TL;DR When creating zip archives with SharpZipLib make sure you set the file size, disabling Zip64 is neither here nor there. A project I am working on sources a zip archive from a Web service, extracts the XML [...]]]></description>
			<content:encoded><![CDATA[<p>TL;DR When creating zip archives with SharpZipLib disable Zip64 format if you care about Mac compatibility.</p>

<p>Extra TL;DR <a href="http://reliablybroken.com/b/2011/12/sharpziplib-and-mac-redux/">When creating zip archives with SharpZipLib make sure you set the file size</a>, disabling Zip64 is neither here nor there.</p>

<p>A project I am working on sources a zip archive from a Web service, extracts the XML file from the zip and then does silly amounts of processing of the data in that XML to produce a new XML file which is returned to the user.</p>

<p>But the sourced zip archive cannot be opened using <a href="http://docs.python.org/library/zipfile.html">Python&#8217;s zipfile module</a>, and when saved on a Mac the archive cannot be opened using the built-in Archive Utility.app. If one double-clicks the zip, Archive Utility.app just compresses it again and sticks &#8220;.cpgz&#8221; on the end of the file name.</p>

<p>Fortunately the developer of the Web service is very helpful (the service is written in C# and runs on Windows) and although he didn&#8217;t know why Macs were having problems (the built-in Windows zip tool can handle the archive fine) he showed me the code that creates the zip file.</p>

<p>Turns out they were using <a href="http://www.icsharpcode.net/opensource/sharpziplib/">SharpZipLib, an open-source library for C#</a>. And it turns out SharpZipLib creates archives using <a href="http://en.wikipedia.org/wiki/ZIP_(file_format)#ZIP64">Zip64 format</a> by default.</p>

<p>The fix was to disable Zip64 when creating the archive. Here&#8217;s a trivial command-line program that creates a zip and disables Zip64 for Mac compatibility:</p>

<pre><code>using System;
using System.IO;
using ICSharpCode.SharpZipLib.Core;
using ICSharpCode.SharpZipLib.Zip;


public class ZipTool
{
    public static void Main(string[] args)
    {
        if (args.Length != 2) {
            Console.WriteLine("Usage: ziptool &lt;input file&gt; &lt;output file&gt;");
            return;
        }

        using (ZipOutputStream zipout = new ZipOutputStream(File.Create(args[1]))) {
            byte[] buffer = new byte[4096];
            string filename = args[0];

            zipout.SetLevel(9);

            // Disable Zip64 for Mac compatibility
            zipout.UseZip64 = UseZip64.Off;

            ZipEntry entry = new ZipEntry(Path.GetFileName(filename));            
            entry.DateTime = File.GetLastWriteTime(filename);
            zipout.PutNextEntry(entry);

            using (FileStream fs = File.OpenRead(filename)) {
                int sourceBytes;
                do {
                    sourceBytes = fs.Read(buffer, 0, buffer.Length);
                    zipout.Write(buffer, 0, sourceBytes);
                } while (sourceBytes &gt; 0);
            }

            zipout.Finish();
            zipout.Close();
        }
    }
}
</code></pre>

<p>The disadvantage of disabling Zip64 is you cannot create archives larger than 4 gigabytes, nor can you add files larger than 4 gigabytes before compression.</p>

<p>The advantage of disabling Zip64 is you make me and all my Mac-using hippy friends happy. In concrete terms, disabling Zip64 makes it more likely I will buy you a drink.</p>

<p>Hi Gaston!</p>

<p>Also many thanks to the maintainer of NAnt in <a href="http://www.macports.org/">MacPorts</a>, who responded to <a href="http://trac.macports.org/ticket/32097">my bug report</a> and pushed an updated NAnt to MacPorts extremely quickly. Although SharpZipLib doesn&#8217;t officially support <a href="http://www.mono-project.com/">Mono</a>, it builds without a hitch using the &#8220;build-net-2.0&#8243; target if you hack the <code>SharpZlib.build</code> NAnt script like so:</p>

<pre><code>&lt;target name="build-mono-2.0" &gt;
    &lt;call target="build-net-2.0" /&gt;
    &lt;!--&lt;fail message="Dont know how to build for Mono 2.0." /&gt;--&gt;
&lt;/target&gt;
</code></pre>

<p>Also thanks to the Mono project! Saved me having to fire up a Windows virtual machine to figure out this problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://reliablybroken.com/b/2011/11/sharpziplib-and-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Lion: Spotlight still broken</title>
		<link>http://reliablybroken.com/b/2011/08/lion-spotlight-still-broken/</link>
		<comments>http://reliablybroken.com/b/2011/08/lion-spotlight-still-broken/#comments</comments>
		<pubDate>Mon, 01 Aug 2011 20:32:40 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[spotlight]]></category>

		<guid isPermaLink="false">http://reliablybroken.com/b/?p=665</guid>
		<description><![CDATA[I&#8217;ve installed Mac OS X 10.7 (upgrading from 10.6) and was very interested to see how the new search tokens feature would work in Spotlight. But on my Mac it doesn&#8217;t. Here&#8217;s the result of a search for files whose name contains the text &#8220;david buxton&#8221;: Note how none of the files in that list [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve installed <a href="http://www.apple.com/pr/library/2011/06/06Mac-OS-X-Lion-With-250-New-Features-Available-in-July-From-Mac-App-Store.html">Mac OS X 10.7</a> (upgrading from 10.6) and was very interested to see how the new search tokens feature would work in Spotlight. But on my Mac it doesn&#8217;t. Here&#8217;s the result of a search for files whose name contains the text &#8220;david buxton&#8221;:</p>

<p><a href="http://reliablybroken.com/b/wp-content/uploads/2011/08/spotlight-still-shit.jpg"><img src="http://reliablybroken.com/b/wp-content/uploads/2011/08/spotlight-still-shit.jpg" alt="" title="spotlight-still-shit" width="568" height="326" class="aligncenter size-full wp-image-666" /></a></p>

<p>Note how none of the files in that list has a name containing the text &#8220;david buxton&#8221;.</p>

<p>Perhaps deleting the Spotlight index would fix things. Meh.</p>
]]></content:encoded>
			<wfw:commentRss>http://reliablybroken.com/b/2011/08/lion-spotlight-still-broken/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>VCS for Cocoa Programming for Mac OS X</title>
		<link>http://reliablybroken.com/b/2011/04/next-edition-of-cocoa-programming/</link>
		<comments>http://reliablybroken.com/b/2011/04/next-edition-of-cocoa-programming/#comments</comments>
		<pubDate>Mon, 04 Apr 2011 21:35:36 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://reliablybroken.com/b/?p=638</guid>
		<description><![CDATA[I am working my way through Aaron Hillegass&#8216; Cocoa Programming for Mac OS X (again). I find it a good book, despite the fact I&#8217;ve started it twice before and have abandoned my tuition twice before. I like to think my progression is an awful lot like young Luke Skywalker recklessly abandoning his Jedi training [...]]]></description>
			<content:encoded><![CDATA[<p>I am working my way through <a href="http://www.bignerdranch.com/instructors/hillegass.shtml">Aaron Hillegass</a>&#8216; <a href="http://www.bignerdranch.com/book/cocoa%C2%AE_programming_for_mac%C2%AE_os_x_3rd_edition">Cocoa Programming for Mac OS X</a> (again). I find it a good book, despite the fact I&#8217;ve started it twice before and have abandoned my tuition twice before. I like to think my progression is an awful lot like young <a href="http://www.youtube.com/watch?v=om6ctZWNw18">Luke Skywalker recklessly abandoning his Jedi training</a> on Dagobah in order to save his Web application friends in the cloud city called Bespinternet. Eventually Luke (and I) will go back to complete his (and my) training and will become a truly great Jedi programmer for Mac OS X.</p>

<p>Anyway, for the first few chapters the book leads you through a number of small applications, each exercise starting a new project. Then in the later chapters Hillegass has you adding features to a single project called RaiseMan.</p>

<p>It strikes me that the next edition of the book should introduce using version control to track development.</p>

<p>Many chapters in the book end with challenges that go off on a tangent, getting you to implement alternate approaches to the exercises covered in that chapter. But then the subsequent chapter will expect you to work with the version of the RaiseMan application as it stood before the previous chapter&#8217;s programming challenge.</p>

<p>This is a natural fit for revision control (aka <a href="http://en.wikipedia.org/wiki/Revision_control">VCS</a>). The book would teach you how to tag &#8220;release&#8221; versions of your code. It would teach you how to create an experimental feature branch for the chapter-end challenges, and then how to resume development from the last &#8220;release&#8221; version for the next chapter&#8217;s main exercises.</p>

<p>This is particularly relevant now that <a href="https://github.com/blog/810-xcode-4-released-with-git-integration">Xcode 4 includes Git integration</a>. Of course there is no reason one can&#8217;t employ a suitable version control system with the current (third) edition of the book; I just think it makes a lot of sense to get younglings used to this workflow while teaching them all the other stuff about lightsabres and <a href="http://www.folklore.org/StoryView.py?project=Macintosh&amp;story=Reality_Distortion_Field.txt">the Force</a> while you&#8217;re at it.</p>

<p>You will up-vote this on <a href="http://reddit.com/">Reddit</a> / <a href="http://news.ycombinator.com/">Hacker News</a> <em>(waves hand like her Imperial majesty)</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://reliablybroken.com/b/2011/04/next-edition-of-cocoa-programming/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Weird App Store buttons</title>
		<link>http://reliablybroken.com/b/2011/01/weird-app-store-buttons/</link>
		<comments>http://reliablybroken.com/b/2011/01/weird-app-store-buttons/#comments</comments>
		<pubDate>Thu, 06 Jan 2011 19:26:06 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[hig]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://reliablybroken.com/b/?p=592</guid>
		<description><![CDATA[Screenshot of App Store.app showing title bar buttons out of place. Why did Apple allow the new App Store application to ignore the human interface guidelines? It isn&#8217;t like the toolbar is doing anything radically different to other information browsers, nothing that might warrant exploring new interface ideas. It just looks odd, an arbitrary inconsistency [...]]]></description>
			<content:encoded><![CDATA[<p>Screenshot of <code>App Store.app</code> showing title bar buttons out of place.</p>

<p><a href="http://reliablybroken.com/b/wp-content/uploads/2011/01/appstore-buttons.jpg"><img src="http://reliablybroken.com/b/wp-content/uploads/2011/01/appstore-buttons.jpg" alt="" title="appstore-buttons" width="417" height="100" class="aligncenter size-full wp-image-593" /></a></p>

<p>Why did Apple allow <a href="http://www.apple.com/mac/app-store/">the new App Store application</a> to ignore the <a href="http://developer.apple.com/library/mac/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGWindows/XHIGWindows.html#//apple_ref/doc/uid/20000961-TPXREF51">human interface guidelines</a>? It isn&#8217;t like the toolbar is doing anything radically different to other information browsers, nothing that might warrant exploring new interface ideas.</p>

<p>It just looks odd, an arbitrary inconsistency that would be simple to correct.</p>
]]></content:encoded>
			<wfw:commentRss>http://reliablybroken.com/b/2011/01/weird-app-store-buttons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Running minidlna on Mac</title>
		<link>http://reliablybroken.com/b/2010/12/running-minidlna-on-mac/</link>
		<comments>http://reliablybroken.com/b/2010/12/running-minidlna-on-mac/#comments</comments>
		<pubDate>Thu, 16 Dec 2010 11:49:05 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[dlna]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://reliablybroken.com/b/?p=586</guid>
		<description><![CDATA[These are my notes on installing minidlna, a DLNA server for Mac OS X. I compiled it from source and installed the supporting libraries from MacPorts. Most of this was culled from a thread on the minidlna forum. First install each of the following ports. The command for each would be something like sudo port [...]]]></description>
			<content:encoded><![CDATA[<p>These are my notes on installing <a href="http://sourceforge.net/projects/minidlna/">minidlna</a>, a <a href="http://www.dlna.org/">DLNA</a> server for Mac OS X. I compiled it from source and installed the supporting libraries from <a href="http://www.macports.org/">MacPorts</a>.</p>

<p>Most of this was culled from <a href="http://sourceforge.net/projects/minidlna/forums/forum/879956/topic/3412747">a thread on the minidlna forum</a>.</p>

<p>First install each of the following ports. The command for each would be something like <code>sudo port install libiconv</code>.</p>

<ul>
<li>libiconv</li>
<li>sqlite3</li>
<li>jpeg</li>
<li>libexif</li>
<li>libid3tag</li>
<li>libogg</li>
<li>libvorbis</li>
<li>flac</li>
<li>ffmpeg</li>
</ul>

<p>Then check out the Mac branch of the current minidlna source from the CVS repository.</p>

<pre><code>cvs -d:pserver:anonymous@minidlna.cvs.sourceforge.net:/cvsroot/minidlna checkout -r osx_port minidlna
cd minidlna
</code></pre>

<p>The current build script appears to miss out pulling in libiconv so I had to edit <code>configure.ac</code>, inserting a line to bring in <code>libiconv</code>.</p>

<pre><code>AC_CHECK_LIB([iconv], [main],, AC_MSG_ERROR(Cannot find required library iconv.))
</code></pre>

<p>Now the build will work. Although I found I needed to run <code>autogen.sh</code> twice for it to generate all the necessary files.</p>

<pre><code>source ENVIRONMENT.macports
sh genconfig.sh
sh autogen.sh
sh autogen.sh
./configure
make
</code></pre>

<p>This spits out the minidlna executable and a basic configuration file. Copy these to wherever you want them. Edit the <code>minidlna.conf</code> file, pointing it at the files you want to serve. There are examples of what to do in that configuration file.</p>

<p>And for testing purposes you can start the server from the build directory.</p>

<pre><code>./minidlna -d -f minidlna.conf
</code></pre>

<p>Bingo.</p>

<p>I did try using <a href="http://ushare.geexbox.org/">ushare</a>, another DLNA server, but I couldn&#8217;t figure out how to persuade my Sony telly to successfully connect to it. So I gave up. I feel it is useful to give up quickly when something doesn&#8217;t work until you run out of alternatives, I consider this triage. I also consider my telly&#8217;s inability to work with ushare and the fact that the telly will only play a very limited set of video formats a mark against the promise of DLNA.</p>
]]></content:encoded>
			<wfw:commentRss>http://reliablybroken.com/b/2010/12/running-minidlna-on-mac/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Mac deployment Wiki</title>
		<link>http://reliablybroken.com/b/2010/10/mac-deployment-wiki/</link>
		<comments>http://reliablybroken.com/b/2010/10/mac-deployment-wiki/#comments</comments>
		<pubDate>Sat, 16 Oct 2010 15:08:40 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://reliablybroken.com/b/?p=573</guid>
		<description><![CDATA[The OS X Deployment and Management Wiki, articles about managing and deploying Macintoshes. Looks like it is the work of Rusty Myers and Nate Walck (so far).]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.osxdeployment.info/">OS X Deployment and Management Wiki</a>, articles about managing and deploying Macintoshes.</p>

<p>Looks like it is the work of <a href="http://twitter.com/thespider">Rusty Myers</a> and Nate Walck (so far).</p>
]]></content:encoded>
			<wfw:commentRss>http://reliablybroken.com/b/2010/10/mac-deployment-wiki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Startup times for old Macs</title>
		<link>http://reliablybroken.com/b/2010/10/startup-times-for-old-macs/</link>
		<comments>http://reliablybroken.com/b/2010/10/startup-times-for-old-macs/#comments</comments>
		<pubDate>Sat, 02 Oct 2010 21:21:37 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://reliablybroken.com/b/?p=561</guid>
		<description><![CDATA[Considering it is only a PowerPC G4 processor running at 1.5 GHz, I am impressed that my five-year-old little MacMini can go from pressing the on button to the login screen in 45 seconds, of which the first 10 seconds is the system trying to work out from which disk it should boot. (There is [...]]]></description>
			<content:encoded><![CDATA[<p>Considering it is only a <a href="http://www.everymac.com/systems/apple/mac_mini/stats/mac_mini_g4_1.5.html">PowerPC G4 processor running at 1.5 GHz</a>, I am impressed that my five-year-old little MacMini can go from pressing the on button to the login screen in 45 seconds, of which the first 10 seconds is the system trying to work out from which disk it should boot. (There is only one disk in the mini &#8211; you hear me mini? Boot from that one immediately.)</p>

<p>However it is another 15 seconds from login to a usable desktop, running Mac OS X 10.5.8. My <a href="http://apple-history.com/?model=classic">Macintosh Classic</a> with an 8 MHz 68000 processor is slightly faster booting <a href="http://download.info.apple.com/Apple_Support_Area/Apple_Software_Updates/English-North_American/Macintosh/System/Older_System/System_6.0.x/">System 6.0.8</a>. Both the mini and the classic can run <a href="http://lowendmac.com/compact/68ksoftware.shtml">some version of Eudora</a> for e-mail. Neither machine will run Google&#8217;s Chrome browser so I reckon it is even splits on which is the more useful.</p>

<p>Also I don&#8217;t need an adaptor to plug in the world&#8217;s greatest <a href="http://en.wikipedia.org/wiki/Apple_Extended_Keyboard">aircraft carrier masquerading as a keyboard</a> on the classic. Little baby Jesus to think that Apple used to sell their considerably expensive computers with no keyboard, no screen, no graphics card, no memory, no hard disk, just a mouse! Progress means you can buy a new <a href="http://www.apple.com/macmini/">MacMini</a> and it don&#8217;t come with a mouse neither.</p>
]]></content:encoded>
			<wfw:commentRss>http://reliablybroken.com/b/2010/10/startup-times-for-old-macs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Running Django on Mac</title>
		<link>http://reliablybroken.com/b/2010/09/running-django-on-mac/</link>
		<comments>http://reliablybroken.com/b/2010/09/running-django-on-mac/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 22:17:11 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[postgres]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://reliablybroken.com/b/?p=556</guid>
		<description><![CDATA[These are semi-detailed steps for installing all the bits to host a Django application on Mac OS X. Tested on 10.5, should work perfectly on 10.6. Use MacPorts: relatively easy to install and the best thing is everything is contained in a directory that you can be confident won&#8217;t eff up Apple&#8217;s stuff and won&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>These are semi-detailed steps for installing all the bits to host a <a href="http://www.djangoproject.com">Django</a> application on <a href="http://www.apple.com/macosx/">Mac OS X</a>. Tested on 10.5, should work perfectly on 10.6.</p>

<p>Use <a href="http://www.macports.org/">MacPorts</a>: relatively easy to install and the best thing is everything is contained in a directory that you can be confident won&#8217;t eff up Apple&#8217;s stuff and won&#8217;t be effed up by Apple&#8217;s stuff.</p>

<h2>Install Xcode</h2>

<p>You need the compiler and bits that are installed with Xcode. If you can&#8217;t find your Mac install discs (Xcode is included with every new Mac but not installed) you can <a href="http://developer.apple.com/technology/xcode.html">download it from Apple&#8217;s developer website</a>. Registration is required but is free.</p>

<p>The current version of Xcode is easy to find, while older versions are available in the downloads section under &#8220;Developer Tools&#8221;. Xcode version 3.1.4 is the last version that will work for Mac OS X 10.5 systems.</p>

<h2>Install MacPorts</h2>

<p>MacPorts have a nice pkg installer. You can also build it from source.</p>

<pre><code>curl -O http://distfiles.macports.org/MacPorts/MacPorts-1.9.1-10.5-Leopard.dmg
hdiutil attach MacPorts-1.9.1-10.5-Leopard.dmg
sudo installer -pkg /Volumes/MacPorts-1.9.1/MacPorts-1.9.1.pkg -target /
hdiutil detach /Volumes/MacPorts-1.9.1
</code></pre>

<p>If for some reason MacPorts cannot fetch updates you may need to <a href="http://reliablybroken.com/b/2010/03/using-macports-behind-a-firewall/">pull updates by hand</a>.</p>

<p>Check your $PATH after installing ports to make sure <code>/opt/local/bin</code> is in there. If it isn&#8217;t your can do <code>export PATH=/opt/local/bin:/opt/local/sbin:${PATH}</code> to fix things, and even add taht line to <code>~/.profile</code> so that bash picks it up every time (assuming you haven&#8217;t switched your shell).</p>

<h2>Install software</h2>

<p>The <code>port</code> command is used to manipulate the MacPorts installation. Use it to build and install the various bits we need. This takes a while, especially on old PowerPC machines. Make it more exciting by adding the <code>--verbose</code> flag. Exciting!</p>

<pre><code>sudo port install python26
sudo port install apache2
sudo port install mysql5-server
sudo port install mod_python26
sudo port install py26-mysql
sudo port install py26-django
sudo port install py26-south
</code></pre>

<p>And if you want to hook Django into a network directory then you almost certainly want to use LDAP.</p>

<pre><code>sudo port install py26-ldap
</code></pre>

<p>Cool kids these days say use <a href="http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/">mod_wsgi</a> instead of <a href="http://docs.djangoproject.com/en/dev/howto/deployment/modpython/">mod_python</a> for hosting Python applications with Apache, but I am not cool (and on 20 September 2010 I couldn&#8217;t persuade mod_wsgi to build from MacPorts on a clean installation).</p>

<h2>Configuring and starting MySQL</h2>

<p><em>UPDATED: <a href="http://reliablybroken.com/b/2010/09/running-django-on-mac/comment-page-1/#comment-1458">commenter matea</a> pointed to <a href="http://www.jasonrowland.com/2009/10/install-mysql5-on-snow-leopard-using-macports/">Jason Rowland&#8217;s MySQL on Mac</a> posting that includes steps to secure a default installation, so I&#8217;ve updated this section with the appropriate steps.</em></p>

<p>I always seem to be the only person who cares about non-English visitors&#8230; anyway, so I want to have <a href="http://www.mysql.com">MySQL</a> use UTF8 for everything. Edit the configuration so it does. As root, create a configuration at <code>/opt/local/var/db/mysql5/my.cnf</code> with these lines:</p>

<pre><code>[mysqld]
init-connect = 'SET NAMES utf8'
character-set-server = utf8
collation-server = utf8_general_ci
skip-networking

[mysql]
default-character-set = utf8
</code></pre>

<p>One thing about the line <code>skip-networking</code> in the configuration file is that it means MySQL will not listen to <strong>any</strong> network clients, including connections to <code>127.0.0.1</code>. Instead clients should connect to <code>localhost</code> or they should specify the path to the socket that MySQL uses for communication. If your MySQL &#8220;client&#8221; is a Django instance running on the same host then that should not be a problem.</p>

<p>Now initialize the database and start the server. (The use of <code>-w</code> in the second line tells launchctl to have the database daemon start at boot. If you don&#8217;t want to have MySQL running at boot use <code>-F</code> to <strong>force</strong> start just this one time instead of every time.)</p>

<pre><code>sudo -u mysql /opt/local/bin/mysql_install_db5
sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist
</code></pre>

<p>And let&#8217;s check that the server is up and configured right.</p>

<pre><code>/opt/local/bin/mysql5 -e "SHOW variables LIKE '%char%'"
</code></pre>

<p>You should see a table showing that the character set for the client and server is set to utf8.</p>

<p>Now run the secure installation script for MySQL. This will ask you to set a password for MySQL&#8217;s root account (the administrator) and ask whether to remove the test database and anonymous user access (you should do both):</p>

<pre><code>/opt/local/bin/mysql_secure_installation5
</code></pre>

<p>Thaz better.</p>

<h2>Configuring Postgresql instead of MySQL</h2>

<p>If you want to use <a href="http://www.postgresql.org">Postgres</a> instead of MySQL then you need a couple different packages out of ports.</p>

<pre><code>sudo port install postgresql84-server
sudo port install py26-psycopg2
</code></pre>

<p>Did you know Apple&#8217;s management tools use Postgres? Is true.</p>

<h2>Configuring Apache to serve a Django project</h2>

<p>Let&#8217;s suppose your Django project lives under <code>/Library/WebServer/example.com/myproj</code>, and the project&#8217;s settings file is <code>/Library/WebServer/example.com/myproj/settings.py</code>. Here&#8217;s how to configure Apache with mod_python to serve your project.</p>

<p>Create a separate site configuration for Apache in <code>/Library/WebServer/example.com/site.conf</code>.</p>

<pre><code>&lt;Location "/"&gt;
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE myproj.settings
    PythonOption django.root /
    PythonDebug On
    PythonPath "['/Library/WebServer/example.com'] + sys.path"
&lt;/Location&gt;

&lt;Directory /Library/WebServer/example.com&gt;
    Order deny,allow
    Allow from all
&lt;/Directory&gt;
</code></pre>

<p>Of course once everything is hunky dory you will go back and edit the site configuration so that <code>PythonDebug Off</code>.</p>

<p>And finally tell Apache to use mod_python and read the site configuration. Edit <code>/opt/local/apache2/conf/httpd.conf</code> and add a line at the end of the modules like:</p>

<pre><code>LoadModule python_module modules/mod_python.so
</code></pre>

<p>And then a line like:</p>

<pre><code>Include /Library/WebServer/example.com/site.conf
</code></pre>

<p>Now fire up Apache:</p>

<pre><code>sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
</code></pre>

<p>MacPorts has a convenient shortcut for this:</p>

<pre><code>sudo port load apache2
</code></pre>

<p>You also want to save Apache a little grief by pre-compiling the Python source files for the project:</p>

<pre><code>/opt/local/bin/python2.6 -m compileall /Library/WebServer/example.com
</code></pre>

<p>Hope this helps.</p>
]]></content:encoded>
			<wfw:commentRss>http://reliablybroken.com/b/2010/09/running-django-on-mac/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Chrome&#8217;s annotated scrollbar</title>
		<link>http://reliablybroken.com/b/2010/09/chromes-annotated-scrollbar/</link>
		<comments>http://reliablybroken.com/b/2010/09/chromes-annotated-scrollbar/#comments</comments>
		<pubDate>Mon, 13 Sep 2010 21:52:54 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[hig]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://reliablybroken.com/b/?p=544</guid>
		<description><![CDATA[Google&#8217;s Chrome Web browser is very interesting: it breaks quite a few Mac interface conventions (for better or worse) and adds some extra, just for you. Macintosh scrollbars work well. You can use the Appearance panel in System Preferences to change a couple things, such as whether to put the arrows at the ends of [...]]]></description>
			<content:encoded><![CDATA[<p>Google&#8217;s <a href="http://www.google.com/chrome">Chrome Web browser</a> is very interesting: it breaks quite a few Mac interface conventions (for better or worse) and adds some extra, just for you.</p>

<p>Macintosh scrollbars work well. You can use the Appearance panel in System Preferences to change a couple things, such as whether to put the arrows at the ends of the scrollbar or at one end together (you can use <a href="http://www.bresink.com/osx/TinkerTool.html">TinkerTool</a> to access more choices if you fancy) and those choices take effect immediately in a well-behaved Mac application.</p>

<p>Chrome is a bit naughty in that it will use your scrollbar settings but only looks at them when it starts. If you change the arrow setting while Chrome is running it will ignore your changes until the next time it launches, whereas a <em>proper</em> Mac application picks up those settings immediately.</p>

<p>Naughty Chrome.</p>

<p>In return for not honouring your settings immediately, Chrome&#8217;s scrollbars exhibit a fantastic behaviour: overloading the scrollbars with useful information.</p>

<p>If you do a word search in a Chrome window, you will see orange marks in the vertical scrollbar which indicate the location of all the matching words in the document.</p>

<p>Nice Chrome.</p>

<p>In <a href="http://jtidwell.net/">Jenifer Tidwell</a>&#8216;s book <a href="http://designinginterfaces.com/">Designing Interfaces</a> she calls this design pattern the <a href="http://quince.infragistics.com/Patterns/Annotated%20Scrollbar.aspx">&#8220;annotated scrollbar&#8221;</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://reliablybroken.com/b/2010/09/chromes-annotated-scrollbar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to manage more than one Mac</title>
		<link>http://reliablybroken.com/b/2010/09/mac-management-first-steps/</link>
		<comments>http://reliablybroken.com/b/2010/09/mac-management-first-steps/#comments</comments>
		<pubDate>Sat, 04 Sep 2010 21:19:33 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://reliablybroken.com/b/?p=533</guid>
		<description><![CDATA[This is an overview of what tools there are for managing a bunch of Macintosh computers on a network. It is intended as a starting point for someone wondering what on earth to do with all those pretty-looking computers the hippie designers like so much. Basic environment You must remove admin access for users, otherwise [...]]]></description>
			<content:encoded><![CDATA[<p>This is an overview of what tools there are for managing a bunch of Macintosh computers on a network. It is intended as a starting point for someone wondering what on earth to do with all those pretty-looking computers the hippie designers like so much.</p>

<h2>Basic environment</h2>

<p>You must remove admin access for users, otherwise you cannot be certain where the user data is, and if you cannot isolate the user&#8217;s data then you cannot trust that updating the system won&#8217;t delete their stuff.</p>

<p>You really need to have the Macs bound to a directory and have account info stored in the directory. This means you don&#8217;t need to create and maintain local accounts on each Mac. It is also makes life much simpler when you need to migrate data from one Mac to another because the account uid/gid will be persistent.</p>

<h2>Mac OS X Server</h2>

<p>The server version of Mac OS X includes a <a href="http://support.apple.com/kb/HT4069">software update server</a>. By hosting your own local copy of the Apple software update server you conserve network bandwidth and you get to withhold what updates are presented to the Mac clients should you want to.</p>

<p>You also get to use Apple&#8217;s directory service and to control policy with MCX.</p>

<p>You don&#8217;t necessarily need OS X Server, but it is very useful.</p>

<h2>Reporting and management suites</h2>

<p>From there you have a bunch of approaches. Big environments (educational) use things like <a href="http://rsug.itd.umich.edu/software/radmind/">Radmind</a> and <a href="http://www.puppetlabs.com/">Puppet</a> to enforce software load-sets across hundreds, thousands of Macs.</p>

<p>For small network sizes people use <a href="http://www.apple.com/remotedesktop/">Apple Remote Desktop</a> (ARD) and/or <a href="http://www.jamfsoftware.com/products/casper-suite">Casper</a>. ARD is extremely useful whatever you decide to use because the administration software includes remote desktop stuff so the help desk monkey can take over the user&#8217;s screen, fix the problem and put the telephone back down.</p>

<p>Although these tools handle reporting, remote installations, running scripts, batch configuration, etc. you still need to spend a lot of time building installation packages. You need a base system image that can be quickly deployed to a Mac, and you need additional images or installation packages containing the various software that goes on top.</p>

<h2>Deploying system software and applications</h2>

<p>To build system restore images use <a href="http://code.google.com/p/instadmg/">InstaDMG</a>. Much better than everything else.</p>

<p>What you want for deploying software is some form of un-attended network push. This means the software installation has to work with access via SSH, whether the user is logged in or not and needs to succeed when installed as root.</p>

<p>With luck your software vendor already uses well-behaved package format installers (i.e. Microsoft most of the time). Or the software is a self-contained app so it can be installed and updated by copying it to /Applications (maybe you go to the trouble of making a pkg for it first).</p>

<p>But flipping heck Adobe hates Mac administrators. The Adobe Creative Suite installers (including those on volume license media) are absolutely useless. The updaters are even worse. <a href="http://www.adobe.com/devnet/creativesuite/enterprisedeployment.html">Adobe provides a volume deployment kit</a> which is bafflingly obtuse and which doesn&#8217;t actually work for the admin&#8217;s most important installation scenario.</p>

<p>Casper and <a href="http://www.lanrev.com/">LANRev</a> include tools for building pkg installers from the Adobe media. Adobe&#8217;s enterprise kit supposedly does the same thing. The other thing you do is build your own pkg from what gets installed. That isn&#8217;t too painful, but having to build your own update pkgs for the numerous Adobe updates is painful.</p>

<p>(The <a href="http://lists.apple.com/mailman/listinfo/installer-dev">Apple Installer-Dev list</a> is full of developers trying to work around bugs in PackageMaker that crop up as soon as you want to do anything other than copy files to disk. Many admins prefer <a href="http://s.sudre.free.fr/Packaging.html">Iceberg</a> or <a href="http://s.sudre.free.fr/Software/Packages/about.html">Packages</a> and other software for building installer packages.)</p>

<h2>System configuration and user preferences</h2>

<p>To some degree you configure the system as part of building the base image. Things like have the Mac automatically configure the network, bind to a domain, set power-saving mode, disable auto-login, etc. should all be part of a first-run script that happens when a new Mac is switched on.</p>

<p>In general you should avoid changing the default settings for everything else, either per-Mac or per-user. Saves you much hassle.</p>

<p>Most software these days uses plist format and reads the settings from the correct places (even recent versions of Office are good at this). Adobe of course doesn&#8217;t, but I have infinite patience. Assuming all the prefs you need to manage are in plist format, you either just run scripts to set things on an ad-hoc basis or you enforce policy with login hooks. If you use <a href="http://images.apple.com/server/macosx/docs/User_Management_v10.6.pdf">Open Directory to manage Macs</a> you can use the Mac OS X Server tools to push settings to all users. Since 10.5 you can <a href="http://www.afp548.com/article.php?story=using-mcx-in-the-dslocal-domain">use each Mac&#8217;s local directory in much the same way as Open Directory to manage settings too</a> (although you need to then handle updating each Mac yourself).</p>

<p>You can use <a href="http://support.apple.com/kb/HT2420">login/logout hooks</a> which run for each user. You usually find if you run a system-wide script to adjust per-user settings that at some point you mess up the permissions, no matter how careful your script is. The other approach is to use <a href="http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPSystemStartup/Articles/LaunchOnDemandDaemons.html">per-user launchd scripts</a>, although they were effectively broken in 10.4 and not much better in 10.5. The <a href="http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man5/launchd.plist.5.html">launchd man pages</a> are required reading even so.</p>

<h2>Interesting bits</h2>

<ul>
<li>Mac OS X Server docs: <a href="http://www.apple.com/server/macosx/resources/documentation.html">http://www.apple.com/server/macosx/resources/documentation.html</a></li>
<li>Macos-x-server mailing list: <a href="http://lists.apple.com/mailman/listinfo/macos-x-server">http://lists.apple.com/mailman/listinfo/macos-x-server</a></li>
<li>Munki, for deploying software: <a href="http://code.google.com/p/munki/">http://code.google.com/p/munki/</a></li>
<li>DeployStudio, like Casper: <a href="http://www.deploystudio.com/Home.html">http://www.deploystudio.com/Home.html</a></li>
<li>AFP548, fantastic tips: <a href="http://www.afp548.com/">http://www.afp548.com/</a></li>
<li>Mike Bombich, admin: <a href="http://www.bombich.com/">http://www.bombich.com/</a></li>
<li>Greg Neagle, admin: <a href="http://managingosx.wordpress.com/">http://managingosx.wordpress.com/</a></li>
<li>Preston Holmes, admin: <a href="http://ptone.com/dablog/">http://ptone.com/dablog/</a></li>
<li>MacEnterprise mailing list: <a href="http://www.macenterprise.org/mailing-list">http://www.macenterprise.org/mailing-list</a></li>
<li>MacManagers mailing list: <a href="http://www.mac-mgrs.org/">http://www.mac-mgrs.org/</a></li>
<li>Adobe installer blog: <a href="http://blogs.adobe.com/oobe/">http://blogs.adobe.com/oobe/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://reliablybroken.com/b/2010/09/mac-management-first-steps/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Extensions are not enough</title>
		<link>http://reliablybroken.com/b/2010/07/extensions-are-not-enough/</link>
		<comments>http://reliablybroken.com/b/2010/07/extensions-are-not-enough/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 15:59:22 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://reliablybroken.com/b/?p=499</guid>
		<description><![CDATA[Another thing I like about Mac OS X is the print preview available in any software that chooses to provide printing (unless that software chooses to be awkward). When this feature first appeared, one could trigger a stupid bug if one happened to have an application other than Preview.app set as the default application for [...]]]></description>
			<content:encoded><![CDATA[<p>Another thing I like about Mac OS X is <a href="http://support.apple.com/kb/HT3771">the print preview available in any software</a> that chooses to provide printing (unless that software <a href="http://www.adobe.com/products/acrobatpro/">chooses to be awkward</a>).</p>

<div id="attachment_500" class="wp-caption aligncenter" style="width: 510px"><a href="http://reliablybroken.com/b/wp-content/uploads/2010/07/preview-not-supported.jpg"><img src="http://reliablybroken.com/b/wp-content/uploads/2010/07/preview-not-supported.jpg" alt="Acrobat dialog box being unhelpful as ever" title="Acrobat dialog box being unhelpful as ever" width="500" height="233" class="size-full wp-image-500" /></a><p class="wp-caption-text">Best software ever</p></div>

<p>When this feature first appeared, one could trigger a stupid bug if one happened to have an application other than Preview.app set as the default application for files with the <code>.pdf</code> extension. If you had Adobe Acrobat set as your default PDF viewer, then hitting the preview button in print dialog boxes would open that preview in Acrobat.</p>

<p>It was a stupid bug, particularly because it was so obvious what was going wrong. The preview was being written to a temporary file with a <code>.pdf</code> extension and then being opened using whatever handler was defined in launch services. But you don&#8217;t want that, you want it to be handled by the operating system and not be subject to whether or not you have the patience to wait thirty seconds while Acrobat version 6 merrily paints its splash screen for your pleasure.</p>

<p>Later versions of Mac OS X fixed this so that the print preview is <em>always</em> displayed using Preview.app. This happens even if you set Acrobat as the default application for <code>.pdf</code> files, and it is a good thing it behaves like this. (In fairness, launch times for Acrobat since version 8 are no longer painful.)</p>

<p><em>I tested what happens if you delete Preview.app on a clean 10.5.8 install: the system falls back to opening QuickTime Player.app for displaying previews (which works fine). And if you delete QuickTime Player.app it falls back to using Safari.app (also works fine). And if you delete Safari.app it falls back to TextEdit.app (which works fine as long as you can render raw PDF data in your head).</em></p>

<p>It is as if going by the default association between file extension and application was not enough; that the system had a need to use a particular bit of software for these PDF preview files, regardless of what software was chosen as the handler for a different set of PDF files. Who&#8217;d have guessed?</p>

<p>All of this is an argument for providing a <strong>programmatic</strong> way to set the owning application for a file. You might call this a creator code, potentially any file could have one, but no biggie if it was not present because you could fall back to some regular stupid heuristic for determining the owner.</p>

<p>And then in Mac OS X 10.6 you might <a href="http://db.tidbits.com/article/10537">change the behaviour of the system</a> so that <a href="http://arstechnica.com/staff/fatbits/2009/09/metadata-madness.ars">this useful and important information about the file is ignored</a>. Grumble.</p>

<p>Dammit, only just occurred to me to see whether the system would eventually fall back to using Acrobat itself for displaying previews. Grumble.</p>
]]></content:encoded>
			<wfw:commentRss>http://reliablybroken.com/b/2010/07/extensions-are-not-enough/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More mail bombs</title>
		<link>http://reliablybroken.com/b/2010/07/more-mail-bombs/</link>
		<comments>http://reliablybroken.com/b/2010/07/more-mail-bombs/#comments</comments>
		<pubDate>Sun, 11 Jul 2010 09:09:20 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://reliablybroken.com/b/?p=495</guid>
		<description><![CDATA[Tim Gaden over on Hawk Wings doesn&#8217;t agree that Mail.app&#8217;s behaviour regarding deleting POP accounts is misguided. His first point is that Mail.app gives you a big warning before doing the dirty. I don&#8217;t think that excuses the bad behaviour. Warning someone that you behave badly does not excuse that bad behaviour (my ex says [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.hawkwings.net/">Tim Gaden over on Hawk Wings</a> <a href="http://www.hawkwings.net/2010/07/07/mail-apps-disappearing-pop-mail-trick/">doesn&#8217;t agree</a> that <a href="http://reliablybroken.com/b/2010/07/apple-mail-bomb/">Mail.app&#8217;s behaviour regarding deleting POP accounts is misguided</a>.</p>

<p>His first point is that Mail.app gives you a big warning before doing the dirty. I don&#8217;t think that excuses the bad behaviour. Warning someone that you behave badly does not excuse that bad behaviour (my ex says this rule applies in more cases than the implementation of mail clients).</p>

<p>His second point is that the user should have a backup; with a good backup she can recover from her mistake when all those old messages disappear. I agree that people should have backups, but I don&#8217;t think that argument has any weight because you can imagine that the answer for all bad design decisions is &#8220;you should have had a backup&#8221;, in which case there are no bad design decisions.</p>

<p>The problem is that Mail.app&#8217;s insistence on a POP account being a separate set of folders means a message cannot appear in the Inbox unless it belongs to an account. If you delete a POP account then you have to move the messages to the Inbox of another account just to keep them appearing in the Inbox. This does not make sense.</p>

<p>Suppose you have a large history of messages received via a POP account. Then you delete that account and switch to an IMAP service with a meagre storage limit. If you want to keep those old messages appearing in the Inbox you must move your the historic Inbox messages to the IMAP account&#8217;s Inbox even though that will take up space on the server (and there may not be sufficient space on the server for them anyway). The other option is to give up the idea that old messages belong in the Inbox and just move them to local folders &#8220;On My Mac&#8221;.</p>

<p>If Mail.app provided a local Inbox folder that appeared as part of the unified Inbox then my objections would go away. (There should also be a corresponding local Sent folder.)</p>

<p>IMAP and POP are different in that a POP account&#8217;s mailbox is really just a temporary queue for messages that have yet to be retrieved by the client. Mail.app should recognize that difference and stop pretending that the two types of account are equivalent.</p>

<p>Quite pleased that Hawk Wings even knows my blog exists. Hawk Wings is good.</p>
]]></content:encoded>
			<wfw:commentRss>http://reliablybroken.com/b/2010/07/more-mail-bombs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A digression on Entourage</title>
		<link>http://reliablybroken.com/b/2010/07/a-digression-on-entourage/</link>
		<comments>http://reliablybroken.com/b/2010/07/a-digression-on-entourage/#comments</comments>
		<pubDate>Sat, 03 Jul 2010 10:03:31 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://reliablybroken.com/b/?p=490</guid>
		<description><![CDATA[Microsoft Entourage is such an interesting piece of software. It evolved from (Mac) Outlook Express which was a great mail client for the old Mac OS (despite its grumpy IMAP implementation). Outlook Express itself took many of its design cues from Claris Emailer, to the extent I believe the early versions of Outlook Express were [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.microsoft.com/mac/products/entourage2008/">Microsoft Entourage</a> is such an interesting piece of software. It evolved from (Mac) Outlook Express which was a great mail client for the old Mac OS (despite its grumpy IMAP implementation). Outlook Express itself took many of its design cues from Claris Emailer, to the extent I believe the early versions of Outlook Express were <a href="http://blog.entourage.mvps.org/2007/05/in_the_beginning.html">coded by peeps who had worked on Claris Emailer</a>.</p>

<p>I always liked that Outlook Express and Entourage defaulted to plain text for messages. I particularly liked the fact that OE / Entourage defaulted to bottom-posting when replying to a message &#8211; as any fule kno top-posting is a hideous convention foisted on us by miserable office mail systems back when there was still a chance that your e-mail would not be delivered via SMTP (Exchange version 5 and earlier is the primary culprit here).</p>

<p>I still get annoyed that when using Mail.app hitting the tab key in a plain-text e-mail inserts a tab character instead of expanding it to four spaces like Entourage.</p>

<p>Given enough time this post would devolve into arguments about <a href="http://www.faqs.org/rfcs/rfc1855.html">top-posting versus bottom-posting</a>, the width of <a href="http://www.jwz.org/doc/tabs-vs-spaces.html">the one true tab-stop</a> and how <a href="http://www.birdhouse.org/etc/evilmail.html">HTML e-mail</a> has turned our youths&#8217; minds into mush.</p>
]]></content:encoded>
			<wfw:commentRss>http://reliablybroken.com/b/2010/07/a-digression-on-entourage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apple mail bomb</title>
		<link>http://reliablybroken.com/b/2010/07/apple-mail-bomb/</link>
		<comments>http://reliablybroken.com/b/2010/07/apple-mail-bomb/#comments</comments>
		<pubDate>Sat, 03 Jul 2010 09:22:31 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://reliablybroken.com/b/?p=481</guid>
		<description><![CDATA[Apple&#8217;s Mail.app has an approach to mailboxes for POP mail accounts that has never made sense to me. At least, I can see that it is a logical approach, but I don&#8217;t think it is a good approach because it can easily lead the user to inadvertently delete messages. The problem is related to how [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.apple.com/support/mail/">Apple&#8217;s Mail.app</a> has an approach to mailboxes for <a href="http://en.wikipedia.org/wiki/Post_Office_Protocol">POP mail accounts</a> that has never made sense to me. At least, I can see that it is a logical approach, but I don&#8217;t think it is a good approach because it can easily lead the user to inadvertently delete messages.</p>

<p>The problem is related to how Mail.app stores messages for an account. For an <a href="http://en.wikipedia.org/wiki/IMAP">IMAP account</a> (or a <a href="http://www.microsoft.com/exchange/">Microsoft Exchange account</a>) Mail.app creates a folder on the local disk and creates mailboxes within that folder corresponding to the mailboxes on the server. The contents of those mailboxes are synchronised with the contents of the mailboxes residing on the server. This makes perfect sense because with IMAP because the messages live on the server &#8211; keeping a local copy of those messages is effectively a performance optimisation.</p>

<p>What is weird is that Mail.app uses the same strategy for POP accounts, even though with POP there is only one mailbox on the server and it is effectively a temporary store for messages, which is to say that with a POP account a message does not live on the server but moves from one mailbox to another until it reaches its final resting place, that place being on the client.</p>

<p>The only copy of a message received via POP is on the client. (Having said that, <a href="http://mail.google.com/support/bin/answer.py?answer=13273">Gmail&#8217;s POP support</a> muddies the waters because <a href="http://tools.ietf.org/html/rfc1939#page-8">issuing a DELE command</a> does not actually delete the message from the server, but the principle is the same.)</p>

<p>Now when you go to remove an IMAP account Mail.app deletes all the local mailboxes for that IMAP account. This is not a problem, after all those local mailboxes are simple caches; the only reason the client keeps a copy is as a performance optimisation (as noted above).</p>

<p>Now when you remove a POP account Mail.app deletes all messages sent or received via that account, even though there will be no copy of those messages on the server (especially true for sent messages). This is not useful or intuitive &#8211; it is a bad design.</p>

<p><a href="http://reliablybroken.com/b/wp-content/uploads/2010/07/mail-delete-account.jpg"><img src="http://reliablybroken.com/b/wp-content/uploads/2010/07/mail-delete-account.jpg" alt="" title="mail-delete-account" width="612" height="625" class="aligncenter size-full wp-image-486" /></a></p>

<p>Why is this a bad design? It is a bad design because with an IMAP account you understand that the messages live on the server whereas with a POP account you understand that the messages live on your local hard drive. With an IMAP account you understand that removing the account removes your access to those mailboxes that exist on the server, whereas with a POP account it makes no sense that the act of stopping the retrieval of messages from the account implies that all the messages received via that account and now stored on your hard disk should be removed as well.</p>

<p>Earlier versions of Mail.app had an even more destructive behaviour when removing a POP mailbox. In the version of Mail.app that shipped as part of Mac OS X 10.4, if you removed a POP account then <em>all messages associated with that account were removed without warning</em>. Now imagine the not uncommon sequence of events for someone changing from POP account A to POP account B using earlier versions of Mail.app:</p>

<ol>
<li>User accumulates years of e-mail using POP account A.</li>
<li>User adds new POP account B.</li>
<li>User removes POP account A.</li>
</ol>

<p>At step 3 the user lost all her historic e-mail! Apple finally realised that this was no way to win friends and so introduced a confirmation specifically warning that messages would be lost before deleting a POP account (this change was introduced with Mac OS X 10.5).</p>

<p>Another unfortunate behaviour is how Mail.app handles a disabled POP account. Disabling an account stops Mail.app from using that account for sending and receiving but also removes all the associated messages from the Inbox.</p>

<p>It is possible to keep an old POP account enabled so that its messages are still displayed but then turn off the preference to &#8220;Include when automatically checking for new messages&#8221;. This leaves the old account available when composing a new message as a choice in the From field so one must also change the preference for &#8220;Send new messages from&#8221; to always use the new POP account in order to avoid inadvertently sending a message using the old From address (or edit the from  address in the old account to match that in the new account).</p>

<p><a href="http://www.microsoft.com/mac/products/entourage2008/default.mspx">Microsoft Entourage</a> has a better approach to this situation: messages for POP accounts are delivered to the Inbox mail folder &#8220;On My Computer&#8221;, and they stay there when the POP account is deleted. The flaw in Entourage&#8217;s approach is that the local folders appear even when all your e-mail accounts are server-based (i.e. all IMAP and / or Exchange accounts). I think it would be better to create those local folders only when a POP account has been defined because if you have only server-based accounts then it is distracting to have a set of folders called &#8220;On My Computer&#8221; which have no purpose.</p>
]]></content:encoded>
			<wfw:commentRss>http://reliablybroken.com/b/2010/07/apple-mail-bomb/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Growl for president</title>
		<link>http://reliablybroken.com/b/2010/06/growl-for-president/</link>
		<comments>http://reliablybroken.com/b/2010/06/growl-for-president/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 23:11:42 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[growl]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://reliablybroken.com/b/?p=471</guid>
		<description><![CDATA[It is fun talking to geeks who have recently converted to Macintosh coming from a career with Windows. They are excited about the possibilities of using all those Unix tools from the command-line (and who wouldn&#8217;t be excited about that?) and are disoriented by the differences. I tell them that a lot of things are [...]]]></description>
			<content:encoded><![CDATA[<p>It is fun talking to geeks who have recently converted to Macintosh coming from a career with Windows. They are excited about the possibilities of using all those Unix tools from the command-line (and who wouldn&#8217;t be excited about that?) and are disoriented by the differences.</p>

<p>I tell them that a lot of things are the same, that their new computer will still go wrong in frustrating ways and that the Finder is the way it is for historical reasons. The most productive part of the conversation is suggesting bits of software that make your computing career on Macintosh less painful&#8230;</p>

<p><a href="http://growl.info/">Growl!</a> What a fantastic piece of software. <a href="http://www.apple.com/support/macos9/">Mac OS 9</a> introduced modeless notifications and it was immediately obvious why it was a good thing. Before then you could bring a Mac server to a halt just by holding down the mouse button for too long, and many Mac applications wanted to get your attention by throwing up a global dialog box to let you know when something had happened. Due to the classic Mac relying on co-operative multi-tasking a modal dialog box could not only interrupt the front-most application but also stop all background applications until the dialog box was dismissed. So Mac OS 9&#8242;s mode-less notifications were a great thing.</p>

<p>On <a href="http://www.apple.com/macosx/">Mac OS X</a> there is no built-in API for posting global mode-less notifications. Growl fills that gap. Growl provides <a href="http://growl.info/documentation/developer/">an API for Mac applications to post notifications</a> and it presents those notifications in an unobtrusive manner, floating small windows on the top of your desktop that can be easily dismissed or ignored.</p>

<p>The truly great thing about Growl is how it has been adopted by developers. <a href="http://www.barebones.com/support/bbedit/arch_bbedit92.html">BBEdit</a> uses Growl; <a href="http://trac.cyberduck.ch/wiki/help/en/howto/growl">Cyberduck</a> uses Growl; <a href="http://panic.com/transmit/">pretty</a> <a href="http://www.linotype.com/fontexplorerX">much</a> <a href="http://adiumx.com/">every</a> <a href="http://colloquy.info/">great</a> <a href="http://netnewswireapp.com/">Mac</a> <a href="http://www.transmissionbt.com/">application</a> supports Growl because it is such an excellent way to post notifications.</p>

<div id="attachment_477" class="wp-caption aligncenter" style="width: 337px"><a href="http://reliablybroken.com/b/wp-content/uploads/2010/06/growl-example.jpg"><img src="http://reliablybroken.com/b/wp-content/uploads/2010/06/growl-example.jpg" alt="" title="growl-example" width="327" height="124" class="size-full wp-image-477" /></a><p class="wp-caption-text">An example of Cyberduck's upload complete Growl notification</p></div>

<p>And so it seems to me that Mac OS X itself should support a Growl-like API for notifications. Either the operating system should take advantage of Growl when a user has installed it or Apple should just ship Growl as part of the system to provide its functionality as a standard API for any application to post notifications.</p>

<p>I believe there is a need for such an API. Witness the <a href="http://toolbar.google.com/gmail-helper/notifier_mac.html">Google Notifier</a> application which does <em>not</em> use Growl for notifications but instead chooses to post floating mode-less notification windows that look an awful lot like Growl&#8217;s notifications but which behave in a subtly different manner. Annoying.</p>
]]></content:encoded>
			<wfw:commentRss>http://reliablybroken.com/b/2010/06/growl-for-president/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Office 2008 update includes Entourage EWS</title>
		<link>http://reliablybroken.com/b/2010/06/office-2008-update-includes-entourage-ews/</link>
		<comments>http://reliablybroken.com/b/2010/06/office-2008-update-includes-entourage-ews/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 15:49:42 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[installer]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[office]]></category>

		<guid isPermaLink="false">http://reliablybroken.com/b/?p=461</guid>
		<description><![CDATA[Not that the release notes have any mention of it, but the Microsoft Office 2008 12.2.5 update will also install the latest Entourage EWS 13.0.5 if you had it on your hard disk already (else you get vanilla Entourage updated). You only need to install the stand-alone update if this is the first time you [...]]]></description>
			<content:encoded><![CDATA[<p>Not that the <a href="http://support.microsoft.com/kb/2028864">release notes have any mention of it</a>, but the <a href="http://www.microsoft.com/mac/downloads.mspx?pid=Mactopia_Office2008&amp;fid=D46255BD-6470-4106-9FE2-EA67ACD3F1BD">Microsoft Office 2008 12.2.5</a> update will also install the latest <a href="http://www.microsoft.com/mac/downloads.mspx?pid=Mactopia_Office2008&amp;fid=EC991D3B-6B25-41C3-9119-D0E6985F2FC1">Entourage EWS 13.0.5</a> if you had it on your hard disk already (else you get vanilla Entourage updated). You only need to install the stand-alone update if this is the first time you are installing the Exchange Web Services version of Entourage.</p>

<p>Microsoft&#8217;s Mac installers are good, but unnecessarily complicated. And the design of the <a href="http://www.microsoft.com/mac/">Mactopia website</a> drives me up the wall &#8211; tiny little scrolling <code>&lt;div&gt;</code> blocks and javascript hyperlinks makes it difficult to read the information and difficult to link straight to an update.</p>
]]></content:encoded>
			<wfw:commentRss>http://reliablybroken.com/b/2010/06/office-2008-update-includes-entourage-ews/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Death or beachball</title>
		<link>http://reliablybroken.com/b/2010/05/death-or-beachball/</link>
		<comments>http://reliablybroken.com/b/2010/05/death-or-beachball/#comments</comments>
		<pubDate>Sat, 29 May 2010 06:23:37 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://reliablybroken.com/b/?p=450</guid>
		<description><![CDATA[Pierre Igot&#8216;s post about Adobe&#8217;s use of a new cursor in CS5 draws attention to how Adobe is continuing to fail to adhere to Macintosh user interface conventions. But I disagree that the correct cursor to use for a blocking task that cannot be cancelled is the spinning beachball of death. That cursor after all [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.betalogue.com">Pierre Igot</a>&#8216;s post about <a href="http://www.betalogue.com/2010/05/18/cs5-cursor/">Adobe&#8217;s use of a new cursor in CS5</a> draws attention to how Adobe is continuing to fail to adhere to Macintosh user interface conventions.</p>

<p>But I disagree that the correct cursor to use for a blocking task that cannot be cancelled is the spinning beachball of death. That cursor after all is the cursor automatically provided by the operating system when an application is <em>not responding to input events</em>. As such when I see the beachball I associate it with a stuck application, one that may need to be forcibly quit.</p>

<p>Previous versions of Photoshop showed the watch cursor for actions which took a significant length of time. Showing the watch cursor is friendlier than showing the beachball of death because it indicates that the application is busy, too busy to handle your clicks but everything is hunky dory and the train <em>will</em> arrive at the station.</p>

<p>There is no watch cursor listed in <a href="http://developer.apple.com/mac/library/documentation/Cocoa/Reference/ApplicationKit/Classes/NSCursor_Class/Reference/Reference.html">Apple&#8217;s documentation on cursors</a>. However the cursor is still present in the system and can be found in the headers for the carbon appearance manager:</p>

<pre><code>kThemeWatchCursor             = 7,    /* Can Animate */
</code></pre>

<p>If you have Xcode 3.2.2 installed you can find this in <code>/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Appearance.h</code>, line 634.</p>

<p>I don&#8217;t know enough about Macintosh programming to say whether it is possible to employ this cursor from a Cocoa-based application.</p>
]]></content:encoded>
			<wfw:commentRss>http://reliablybroken.com/b/2010/05/death-or-beachball/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Using MacPorts behind a firewall</title>
		<link>http://reliablybroken.com/b/2010/03/using-macports-behind-a-firewall/</link>
		<comments>http://reliablybroken.com/b/2010/03/using-macports-behind-a-firewall/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 11:37:39 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[macports]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://reliablybroken.com/b/?p=420</guid>
		<description><![CDATA[I failed to persuade MySQLdb to build on a Mac OS X Server 10.5.8 install using the system Python + MySQL installation. So I turned to MacPorts where I know I can get Django + all the bits working without much hassle (but with much patience). The next problem was that MacPorts couldn&#8217;t update because [...]]]></description>
			<content:encoded><![CDATA[<p>I failed to persuade <a href="http://mysql-python.sourceforge.net/MySQLdb.html">MySQLdb</a> to build on a <a href="http://www.apple.com/server/macosx/">Mac OS X Server 10.5.8</a> install using the system <a href="http://www.python.org/">Python</a> + <a href="http://www.mysql.com/">MySQL</a> installation. So I turned to <a href="http://www.macports.org/">MacPorts</a> where I know I can get <a href="http://www.djangoproject.com/">Django</a> + all the bits working without much hassle (but with much patience).</p>

<p>The next problem was that MacPorts couldn&#8217;t update because <a href="http://samba.anu.edu.au/rsync/">rsync</a> was blocked by the corporate access policy. Fortunately plain HTTP is permitted outbound. Here&#8217;s how to use a local ports tree.</p>

<p>Install MacPorts using the disk image for 10.5.</p>

<pre><code>curl -O http://distfiles.macports.org/MacPorts/MacPorts-1.8.2-10.5-Leopard.dmg
hdiutil attach MacPorts-1.8.2-10.5-Leopard.dmg
sudo installer -pkg /Volumes/MacPorts-1.8.2/MacPorts-1.8.2.pkg -target /
hdiutil detach /Volumes/MacPorts-1.8.2
</code></pre>

<p>If the MacPorts install directories are not in your $PATH environment, you can add them to your <code>.profile</code>. This change will not take effect until you start a new terminal session.</p>

<pre><code>cat &gt;&gt; ~/.profile &lt;&lt;EOF
PATH=/opt/local/bin:/opt/local/sbin:${PATH}
MANPATH=/opt/local/share/man:${MANPATH}
EOF
</code></pre>

<p>After you have installed MacPorts, create a directory for the ports tree and check it out using <a href="http://subversion.tigris.org/">Subversion</a>.</p>

<pre><code>sudo mkdir -p /opt/local/var/macports/sources/svn.macports.org/trunk/dports
cd /opt/local/var/macports/sources/svn.macports.org/trunk/dports
sudo svn co http://svn.macports.org/repository/macports/trunk/dports/ .
</code></pre>

<p>N.B. In the last line beginning <code>svn co ...</code> the trailing directory separator is significant!</p>

<p>Now tell MacPorts to use the local checkout rather than rsync. Edit <code>/opt/local/etc/macports/sources.conf</code> and add a new line to the end with the path to the ports tree, then comment out the previous line that uses rsync. Here are the last lines from my configuration:</p>

<pre><code>#rsync://rsync.macports.org/release/ports/ [default]
file:///opt/local/var/macports/sources/svn.macports.org/trunk/dports/ [default]
</code></pre>

<p>Finally you must create an index for the tree (otherwise you will see messages saying &#8220;Warning: No index(es) found!&#8221;).</p>

<pre><code>cd /opt/local/var/macports/sources/svn.macports.org/trunk/dports
sudo portindex
</code></pre>

<p>Now go do great things.</p>
]]></content:encoded>
			<wfw:commentRss>http://reliablybroken.com/b/2010/03/using-macports-behind-a-firewall/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>watchedinstall is useful</title>
		<link>http://reliablybroken.com/b/2010/01/watchedinstall-is-useful/</link>
		<comments>http://reliablybroken.com/b/2010/01/watchedinstall-is-useful/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 22:48:40 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[watchedinstall]]></category>

		<guid isPermaLink="false">http://reliablybroken.com/b/?p=411</guid>
		<description><![CDATA[Very satisfying to use watchedinstall at work the other day to see exactly what a tricksy meta-package was doing during installation. Now that I fixed a stupid bug involving dtrace, watchedinstall works a treat for recording exactly what goes where. Many thanks to Preston Holmes for releasing watchedinstall in the first place. My goal is [...]]]></description>
			<content:encoded><![CDATA[<p>Very satisfying to use <a href="http://bitbucket.org/davidbuxton/watchedinstall/">watchedinstall</a> at work the other day to see exactly what a tricksy meta-package was doing during installation. Now that I <a href="http://bitbucket.org/davidbuxton/watchedinstall/changeset/d97aaae628c3/">fixed a stupid bug involving dtrace</a>, watchedinstall works a treat for recording exactly what goes where.</p>

<p>Many thanks to <a href="http://www.ptone.com/">Preston Holmes</a> for releasing watchedinstall in the first place.</p>

<p>My goal is to replace the functionality of the fsevents helper application with a <a href="http://www.sun.com/bigadmin/content/dtrace/">dtrace</a> script that can list filesystem changes. A single python script would be simpler to install and use &#8211; you wouldn&#8217;t need to install it at all, just run it from the directory you downloaded it to. No effing about with setting PATH environment variables, no worry about compiling a C program for whatever architecture.</p>

<p>Hey Esther!</p>
]]></content:encoded>
			<wfw:commentRss>http://reliablybroken.com/b/2010/01/watchedinstall-is-useful/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

