<?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>Joe Maller &#187; Mac OS X</title>
	<atom:link href="http://joemaller.com/category/mac-os-x/feed/" rel="self" type="application/rss+xml" />
	<link>http://joemaller.com</link>
	<description>.com</description>
	<lastBuildDate>Tue, 15 May 2012 03:40:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Fixing a Palm duplicate disaster</title>
		<link>http://joemaller.com/888/fixing-a-palm-duplicate-disaster/</link>
		<comments>http://joemaller.com/888/fixing-a-palm-duplicate-disaster/#comments</comments>
		<pubDate>Sun, 17 Feb 2008 07:17:05 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[misc.]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[Palm]]></category>
		<category><![CDATA[Palm Desktop]]></category>
		<category><![CDATA[sed]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[vcard]]></category>

		<guid isPermaLink="false">http://joemaller.com/2008/02/17/fixing-a-palm-duplicate-disaster/</guid>
		<description><![CDATA[I recently came across an absolute disaster of a Palm Desktop data file while helping someone setup a new iPhone. It had 13,572 contacts, mostly duplicates. Judging from the number of obvious duplicate entries, my guess is the actual number will be somewhere around 2500 (it was). Here is the process I used to automatically [...]]]></description>
			<content:encoded><![CDATA[<p>I recently came across an absolute disaster of a Palm Desktop data file while helping someone setup a new iPhone. It had 13,572 contacts, mostly duplicates. Judging from the number of obvious duplicate entries, my guess is the actual number will be somewhere around 2500 (it was).</p>
<p>Here is the process I used to automatically remove a lot of those duplicates and import the remainder into the Mac&#8217;s Address Book. </p>
<p>The first step is to get out of Palm Desktop as soon as possible. Select all contacts and export to a group VCard. This one was 3.4 MB.</p>
<p>Most of this will happen in Terminal, but a quick stop in BBEdit or <a href="http://www.barebones.com/products/textwrangler/">TextWrangler</a> will save a few steps later on. (TextMate tends to choke on big, non-UTF files.) The Palm export file is encoded in MacRoman. It&#8217;s 2008, pretty much any text that isn&#8217;t Unicode should be. I used TextWrangler to convert the encoding to UTF-8 no BOM (byte order marker).</p>
<p>VCards require Windows style CRLF line endings. While we could deal with those in Sed, we might as well just switch the file to Unix style LF endings in TextWrangler too. The TextWrangler bottom bar should switch from this:  </p>
<p><img src='http://joemaller.com/wordpress/wp-content/uploads/2008/02/macroman_crlf.png' alt='MacRoman CRLF' /></p>
<p>To this:</p>
<p><img src='http://joemaller.com/wordpress/wp-content/uploads/2008/02/utf8_lf.png' alt='utf8 LF' /></p>
<p>Now comes the <a href="http://sed.sourceforge.net/sed1line.txt">magic</a>.</p>
<p>While this could be done as an impossible-to-read one-line sed command, it&#8217;s easier to digest and debug as separate command files.</p>
<p>Here are the steps:</p>
<ol>
<li>Use Sed to join each individual VCard into a single line using a token to replace line feeds, output to intermediate file</li>
<li>Sort and Uniq the result to remove obvious duplicates.
<li>Replace the tokens with line feeds</li>
</ol>
<p>Below are the two sed command files I used. I ran these individually but they could easily be piped together into a one-line command.</p>
<p><em>vcard_oneline.sed:</em></p>
<pre><code># define the range we'll be working with
/BEGIN:VCARD/,/END:VCARD/ {

# define the loopback
:loop

# add the next line to the pattern buffer
N

# if pattern is not found, loopback and add more lines
/\nEND:VCARD$/! b loop

# replace newlines in multi-line pattern
s/\n/   %%%     /g
}</code></pre>
<p>Run that like this:  </p>
<pre><code>sed -f vcard_oneline.sed palm_dump.vcf &gt; vcards_oneline.txt</code></pre>
<p>Then run that file through sort and uniq: </p>
<pre><code>sort vcards_oneline.txt | uniq &gt; vcards_clean.txt </code></pre>
<p><em>vcard_restore.sed:</em></p>
<pre><code># replace tokens with DOS style CRLF line endings
s/      %%%     /^M\
/g

# add the &lt;CR&gt; before the LF at the end of the line
s/$/^M/</code></pre>
<p>Run that with something like this:  </p>
<pre><code>sed -f vcard_restore.sed vcards_clean.txt &gt; vcards_clean.vcf</code></pre>
<p>After that last step, you should be able to drag the vcards_clean.vcf file into Address Book to import your vcards.</p>
<p>Suggestions for improvement are always welcomed.</p>
<h3>Notes:</h3>
<p>In VIM, type the tab character as control-v-i (hold control while pressing v then i), type the <CR> line break by typing control-v-enter.</p>
<p><code>iconv</code> could be used to convert from MacRoman to UTF-8. TextWrangler just seemed easier at the time.</p>
<p>Palm Desktop appears to dump group VCards in input order, so duplicate entries were not grouped together. Running the output through <code>sort</code> visually reveals a ton of duplicates and makes it possible to use <code>uniq</code> to remove consecutive duplicates.</p>
<p>I had to quit and re-open Address Book once or twice before it would import the files.</p>
]]></content:encoded>
			<wfw:commentRss>http://joemaller.com/888/fixing-a-palm-duplicate-disaster/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tabbed clipboard to HTML Table</title>
		<link>http://joemaller.com/887/tabbed-clipboard-to-html-table/</link>
		<comments>http://joemaller.com/887/tabbed-clipboard-to-html-table/#comments</comments>
		<pubDate>Wed, 13 Feb 2008 21:00:23 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[AppleScript]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[numbers]]></category>

		<guid isPermaLink="false">http://joemaller.com/2008/02/13/tabbed-clipboard-to-html-table/</guid>
		<description><![CDATA[I was looking for a quick way to get a structured table from some data I had in Numbers. Unfortunately Numbers isn&#8217;t scriptable and doesn&#8217;t seem to offer plain HTML export. After a little poking around, I just ended up writing a script to do what I wanted. This little AppleScript will convert anything text [...]]]></description>
			<content:encoded><![CDATA[<p>I was looking for a quick way to get a structured table from some data I had in <a href="http://www.apple.com/iwork/numbers/">Numbers</a>. Unfortunately Numbers isn&#8217;t scriptable and doesn&#8217;t seem to offer plain HTML export. After a little poking around, I just ended up writing a script to do what I wanted.</p>
<p>This little AppleScript will convert anything text in the clipboard into a simple, unstyled HTML table. <a href="applescript://com.apple.scripteditor?action=new&#038;script=%0Aset%20oldDelims%20to%20AppleScript%27s%20text%20item%20delimiters%0Aset%20AppleScript%27s%20text%20item%20delimiters%20to%20return%0Aset%20TRs%20to%20every%20text%20item%20of%20%28the%20clipboard%20as%20text%29%0A%0Aset%20AppleScript%27s%20text%20item%20delimiters%20to%20tab%0Aset%20theTable%20to%20%22%3Ctable%3E%22%20%26%20return%0A%0Arepeat%20with%20TR%20in%20TRs%0A%09copy%20theTable%20%26%20%22%3Ctr%3E%22%20%26%20return%20to%20theTable%0A%09repeat%20with%20TD%20in%20text%20items%20of%20TR%0A%09%09copy%20theTable%20%26%20%22%3Ctd%3E%22%20%26%20TD%20%26%20%22%3C%2Ftd%3E%22%20%26%20return%20to%20theTable%0A%09end%20repeat%0A%09copy%20theTable%20%26%20%22%3C%2Ftr%3E%22%20%26%20return%20to%20theTable%0Aend%20repeat%0A%0Acopy%20theTable%20%26%20%22%3C%2Ftable%3E%22%20to%20theTable%0A%0Aset%20AppleScript%27s%20text%20item%20delimiters%20to%20oldDelims%0A%0Aset%20the%20clipboard%20to%20theTable%0A%0A">View the script in Script Editor</a></p>
<p>Just save it into your Scripts folder and call it after copying some data to the clipboard. Any text on your clipboard will be converted to a basic, un-styled HTML table, ready to paste.</p>
<style type="text/css">
    p.p1 {margin: 0.0px 0.0px 0.0px 32.7px; text-indent: -32.8px; font: 10.0px Verdana; min-height: 12.0px}
    p.p2 {margin: 0.0px 0.0px 0.0px 34.7px; text-indent: -34.7px; font: 10.0px Verdana; color: #0000ff}
    p.p3 {margin: 0.0px 0.0px 0.0px 32.7px; text-indent: -32.8px; font: 12.0px Helvetica; min-height: 14.0px}
    p.p4 {margin: 0.0px 0.0px 0.0px 34.7px; text-indent: -34.7px; font: 10.0px Verdana}
    p.p5 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.1px; font: 10.0px Verdana}
    p.p6 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.1px; font: 10.0px Verdana; color: #0000ff}
    p.p7 {margin: 0.0px 0.0px 0.0px 84.1px; text-indent: -84.1px; font: 10.0px Verdana}
    p.p8 {margin: 0.0px 0.0px 0.0px 34.7px; text-indent: -34.7px; font: 12.0px Helvetica; min-height: 14.0px}
    span.s1 {font: 12.0px Helvetica; color: #000000}
    span.s2 {color: #408000}
    span.s3 {color: #000000}
    span.s4 {color: #0000ff}
    span.s5 {font: 12.0px Helvetica}
    span.Apple-tab-span {white-space:pre}
  </style>
<p class="p1"></p>
<p class="p2"><b>set</b><span class="s1"> </span><span class="s2">oldDelims</span><span class="s1"> </span><b>to</b><span class="s1"> </span>AppleScript<span class="s3">&#8216;s</span><span class="s1"> </span>text item delimiters</p>
<p class="p2"><b>set</b><span class="s1"> </span>AppleScript<span class="s3">&#8216;s</span><span class="s1"> </span>text item delimiters<span class="s1"> </span><b>to</b><span class="s1"> </span>return</p>
<p class="p2"><b>set</b><span class="s1"> </span><span class="s2">TRs</span><span class="s1"> </span><b>to</b><span class="s1"> </span><b>every</b><span class="s1"> </span>text item<span class="s1"> </span><b>of</b><span class="s1"> </span><span class="s3">(</span>the clipboard<span class="s1"> </span>as<span class="s1"> </span>text<span class="s3">)</span></p>
<p class="p3"></p>
<p class="p2"><b>set</b><span class="s1"> </span>AppleScript<span class="s3">&#8216;s</span><span class="s1"> </span>text item delimiters<span class="s1"> </span><b>to</b><span class="s1"> </span>tab</p>
<p class="p4"><span class="s4"><b>set</b></span><span class="s5"> </span><span class="s2">theTable</span><span class="s5"> </span><span class="s4"><b>to</b></span><span class="s5"> </span>&#8220;&lt;table&gt;&#8221;<span class="s5"> </span>&amp;<span class="s5"> </span><span class="s4">return</span></p>
<p class="p3"></p>
<p class="p2"><b>repeat</b><span class="s1"> </span><b>with</b><span class="s1"> </span><span class="s2">TR</span><span class="s1"> </span><b>in</b><span class="s1"> </span><span class="s2">TRs</span></p>
<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span></span><span class="s4"><b>copy</b></span><span class="s5"> </span><span class="s2">theTable</span><span class="s5"> </span>&amp;<span class="s5"> </span>&#8220;&lt;tr&gt;&#8221;<span class="s5"> </span>&amp;<span class="s5"> </span><span class="s4">return</span><span class="s5"> </span><span class="s4"><b>to</b></span><span class="s5"> </span><span class="s2">theTable</span></p>
<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span></span><b>repeat</b><span class="s1"> </span><b>with</b><span class="s1"> </span><span class="s2">TD</span><span class="s1"> </span><b>in</b><span class="s1"> </span>text items<span class="s1"> </span><b>of</b><span class="s1"> </span><span class="s2">TR</span></p>
<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4"><b>copy</b></span><span class="s5"> </span><span class="s2">theTable</span><span class="s5"> </span>&amp;<span class="s5"> </span>&#8220;&lt;td&gt;&#8221;<span class="s5"> </span>&amp;<span class="s5"> </span><span class="s2">TD</span><span class="s5"> </span>&amp;<span class="s5"> </span>&#8220;&lt;/td&gt;&#8221;<span class="s5"> </span>&amp;<span class="s5"> </span><span class="s4">return</span><span class="s5"> </span><span class="s4"><b>to</b></span><span class="s5"> </span><span class="s2">theTable</span></p>
<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span></span><b>end</b><span class="s1"> </span><b>repeat</b></p>
<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span></span><span class="s4"><b>copy</b></span><span class="s5"> </span><span class="s2">theTable</span><span class="s5"> </span>&amp;<span class="s5"> </span>&#8220;&lt;/tr&gt;&#8221;<span class="s5"> </span>&amp;<span class="s5"> </span><span class="s4">return</span><span class="s5"> </span><span class="s4"><b>to</b></span><span class="s5"> </span><span class="s2">theTable</span></p>
<p class="p2"><b>end</b><span class="s1"> </span><b>repeat</b></p>
<p class="p8"></p>
<p class="p4"><span class="s4"><b>copy</b></span><span class="s5"> </span><span class="s2">theTable</span><span class="s5"> </span>&amp;<span class="s5"> </span>&#8220;&lt;/table&gt;&#8221;<span class="s5"> </span><span class="s4"><b>to</b></span><span class="s5"> </span><span class="s2">theTable</span></p>
<p class="p8"></p>
<p class="p2"><b>set</b><span class="s1"> </span>AppleScript<span class="s3">&#8216;s</span><span class="s1"> </span>text item delimiters<span class="s1"> </span><b>to</b><span class="s1"> </span><span class="s2">oldDelims</span></p>
<p class="p8"></p>
<p class="p2">set the clipboard to<span class="s1"> </span><span class="s2">theTable</span></p>
]]></content:encoded>
			<wfw:commentRss>http://joemaller.com/887/tabbed-clipboard-to-html-table/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MWSF 2008 pre-thoughts</title>
		<link>http://joemaller.com/874/mwsf-2008-pre-thoughts/</link>
		<comments>http://joemaller.com/874/mwsf-2008-pre-thoughts/#comments</comments>
		<pubDate>Tue, 15 Jan 2008 16:48:56 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Macworld]]></category>
		<category><![CDATA[mwsf]]></category>

		<guid isPermaLink="false">http://joemaller.com/2008/01/15/mwsf-2008-pre-thoughts/</guid>
		<description><![CDATA[Just so I can go on the record, here are my thoughts before the Macworld 2008 keynote. iPhone There will be no 3g iPhone this time. The only possible hardware revision the iPhone will see would be a 16 GB model at the original $599 price point. Sales are still too strong and don&#8217;t warrant [...]]]></description>
			<content:encoded><![CDATA[<p>Just so I can go on the record, here are my thoughts before the Macworld 2008 keynote.<br />
<span id="more-874"></span></p>
<h3>iPhone</h3>
<p>There will be no 3g iPhone this time.  The only possible hardware revision the iPhone will see would be a 16 GB model at the original $599 price point. Sales are still too strong and don&#8217;t warrant pushing a new model into the market yet. </p>
<p>The iPhone will see a significant software update. I think it will be a later build and have more features than the <a href="http://www.gearlive.com/news/article/q407-iphone-113-firmware-feature-gallery/">1.1.3 firmware leaked to GearLive</a>.</p>
<p>Things I&#8217;d love to see in the next iPhone software update:   </p>
<ul>
<li>iPhone to do list application that syncs with Leopard&#8217;s system-wide To Do manager</li>
<li>iPhone Notes syncing, I want to edit in two places</li>
<li>Ability to display a unified email inbox</li>
<li>Live weather icon on the home screen</li>
</ul>
<p>There will be a release date for the iPhone SDK, and a brief mention of what it will include. No details with the possible exception of a software distribution system where all applications would need to go through Apple.</p>
<h3>MacBook Pro</h3>
<p>The MacBook Pro line will see significant revisions. </p>
<p>Some of what I expect to see:</p>
<ul>
<li>Case redesign, probably with more MacBook like keys, sharper corners, shinier and with a uniform width bezel around the screen (the thicker top band on the current generation must rankle the hell out of Jonathan Ive).</li>
<li>The camera will get better.</li>
<li>Screen resolution will be at least 1960&#215;1080.</li>
<li>Penryn.</li>
<li>Multi-touch trackpads would be neat, though I can&#8217;t think of much practical use for them.</li>
</ul>
<h3>MacBook Air</h3>
<p>It&#8217;s happening, and I&#8217;m excited to see what it will be. A solid-state Flash only device is totally plausible, at very least it  will switch from standard laptop HDs to the smaller form factor used in the iPod Classic. There will be no optical drive, which will instigate much griping from the inertial tech press. It will be ridiculously thin and light, and several people I know will have bought one before February.</p>
<p>The entire MacBook line may be blessed with ubiquitous networking. Who knows if that will mean using an existing technology or going with something completely new.</p>
<h3>Other stuff</h3>
<p>Apple&#8217;s December 2007 sales figures will be the best in the company&#8217;s history.</p>
<p>The most boring interpretation I can think of for &#8220;in the air&#8221; would be new displays which are similar to these <a href="http://gizmodo.com/339805/ultra+pretty-dell-crystal-lcd-monitor-now-available">floating glass Dells</a>. Displays will get cameras.</p>
<p>10.5.2 &#8211; And it better be huge with lots and lots of bug fixes.</p>
<p>Time Machine on remote volumes. Again, over the air.</p>
<p>Nothing new for the iPod, just a mention of how great they are.</p>
<p><a href="http://daringfireball.net/2008/01/macworld_expo_predictions">John Gruber is onto a few things</a>, especially this:</p>
<blockquote><p>
But so why not sell a device as a dedicated product — a big 500 GB or larger hard drive (or array of them) with built-in AirPort networking. No need to attach it to a separate AirPort base station, no temptation to use the device for anything other than one purpose: backing up via Time Machine.</p></blockquote>
<p>Nice, but think even bigger. Expand the definition of Airport to be a hub for your digital stuff. Apple&#8217;s already got <a href="http://www.apple.com/xsan/">XSAN</a> and all the other pieces, so how about this:</p>
<ul>
<li>Integrated Airport connectivity</li>
<li>Time Machine backups over the air</li>
<li>Shared iTunes Libraries (via .Mac Accounts or something)</li>
<li>Include an Apple TV, if the media&#8217;s already there, might as well.</li>
<li>ZFS storage pools (lol)</li>
</ul>
<p>The shared iTunes thing would be awesome, but I can make as strong a case against it as I can for it. Offices being the immediate hurdle. Plugging in a device where everyone on a network can share music is like Napster in a box, the original Napster. By limiting it to .Mac Accounts Apple would enforce some sort of &#8220;family&#8221; definition, which might make it doable.</p>
<p>There&#8217;s probably more, but we&#8217;re out of time. See you on the other side.</p>
]]></content:encoded>
			<wfw:commentRss>http://joemaller.com/874/mwsf-2008-pre-thoughts/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Multiple RegisterResource directives broken in Leopard</title>
		<link>http://joemaller.com/859/multiple-registerresource-directives-broken-in-leopard/</link>
		<comments>http://joemaller.com/859/multiple-registerresource-directives-broken-in-leopard/#comments</comments>
		<pubDate>Tue, 04 Dec 2007 21:49:03 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[10.5]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[httpd]]></category>
		<category><![CDATA[leopard]]></category>

		<guid isPermaLink="false">http://joemaller.com/2007/12/04/multiple-registerresource-directives-broken-in-leopard/</guid>
		<description><![CDATA[This is sort of a follow up on the old mod_rendezvous article I wrote for O&#8217;Reilly. While cleaning up my virtual hosts I discovered a bug in 10.5&#8242;s handling of multiple RegisterResource directives in mod_bonjour. This is expanded from a bug report I submitted to Apple (rdar://problem/5628484). I keep functional mirrors all my development sites [...]]]></description>
			<content:encoded><![CDATA[<p>This is sort of a follow up on the old <a href="http://www.macdevcenter.com/pub/a/mac/2003/04/08/mod_rendezvous.html">mod_rendezvous article I wrote for O&#8217;Reilly</a>. While cleaning up my virtual hosts I discovered a bug in 10.5&#8242;s handling of multiple RegisterResource directives in mod_bonjour. This is expanded from a bug report I submitted to Apple (rdar://problem/5628484).</p>
<p>I keep functional mirrors all my development sites in separate Apache Virtual Hosts. Each one then gets it&#8217;s own port, which allows me to check them on local networks, in Parallels and, if I want, remotely via IP address.</p>
<p>To advertise two local vhosts over bonjour, something like this in httpd.conf should work:</p>
<pre><code>&amp;lt;IfModule bonjour_module&amp;gt;
RegisterResource "Site 1" / 9001
RegisterResource "Site 2" / 9002
&amp;lt;/IfModule&amp;gt;</code></pre>
<p>After restarting Apache (<code>sudo apachectl graceful</code>), local copies of Safari should see the two sites, &#8220;Site 1&#8243; and &#8220;Site 2&#8243; in Bonjour bookmark listings. In 10.4, they show up. In 10.5, only &#8220;Site 2&#8243; shows up. No matter how many directives are included, only the last one will be visible.</p>
<p>I&#8217;d love to be wrong about this, but it seems that something broke this function in Leopard.</p>
<p>A faster way of checking Bonjour entries is to open a terminal window and run the following command:</p>
<p><code>mdns -B _http._tcp</code></p>
<p>That will show a live updating list of current multicast (Bonjour) entries. Under 10.4, I get the following after adding the above directives to httpd.conf:</p>
<pre><code>16:10:14.517  Add     0 local.     _http._tcp.     Site 1
16:10:14.667  Add     0 local.     _http._tcp.     Site 2</code></pre>
<p>However with 10.5, I get this:</p>
<pre><code>16:12:52.597  Add     1 local.     _http._tcp.     Site 2
16:12:52.598  Add     1 local.     _http._tcp.     Site 2
16:12:52.598  Add     0 local.     _http._tcp.     Site 2</code></pre>
<p>What I&#8217;d really love to do is figure out how to register and respond to multiple Bonjour names. That way I could have each vhost  be a named host and each staged site accessible at a url like site1.local and site2.local. So far I haven&#8217;t had any luck getting that working.</p>
]]></content:encoded>
			<wfw:commentRss>http://joemaller.com/859/multiple-registerresource-directives-broken-in-leopard/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Rotating sub-pixel text rendering</title>
		<link>http://joemaller.com/857/rotating-sub-pixel-text-rendering/</link>
		<comments>http://joemaller.com/857/rotating-sub-pixel-text-rendering/#comments</comments>
		<pubDate>Mon, 03 Dec 2007 05:20:21 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[daring fireball]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[john gruber]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mac osx]]></category>
		<category><![CDATA[sub-pixel]]></category>
		<category><![CDATA[typography]]></category>

		<guid isPermaLink="false">http://joemaller.com/2007/12/03/rotating-sub-pixel-text-rendering/</guid>
		<description><![CDATA[John Gruber of Daring Fireball (thanks for the link!) knows a lot about font-rendering, however in a recent post discussing screen-rotation and sub-pixel text rendering he let this slip: &#8220;I tested it on my Cinema Display with the screen rotated 90°, and, to my eyes, sub-pixel anti-aliasing still looked good.&#8221; That is just preposterous. Aside [...]]]></description>
			<content:encoded><![CDATA[<p>John Gruber of Daring Fireball (thanks for the <a href="http://daringfireball.net/linked/2007/december#mon-03-maller">link</a>!) <a href="http://daringfireball.net/2003/11/panther_text_rendering">knows a lot about font-rendering</a>, however in a recent post discussing screen-rotation and sub-pixel text rendering he <a href="http://daringfireball.net/linked/2007/december#sun-02-rotation">let this slip</a>:<a href="http://daringfireball.net/linked/2007/december#sun-02-rotation"><br />
</a></p>
<blockquote><p>&#8220;I tested it on my Cinema Display with the screen rotated 90°, and, to my eyes, sub-pixel anti-aliasing still looked good.&#8221;</p></blockquote>
<p>That is just preposterous. Aside from his observation being completely wrong, he also revealed a bug in OS X: The current system doesn&#8217;t recognize rotated pixel orientations, sub-pixel rendering on rotated screens should probably be disabled automatically. (rdar://problem/5627732)</p>
<p>Here are two screenshots of my browser&#8217;s address bar as displayed on my Cinema Display, which clearly shows the difference. The top image is Leopard&#8217;s default sub-pixel rendering. The second image is the same bar photographed with my display rotated 90°, the photo was then rotated back in Photoshop for better comparison.</p>
<p><a href="http://www.flickr.com/photos/joemaller/2082803540/" title="Comparison of rotated sub-pixel type by Joe Maller, on Flickr"><img src="http://farm3.static.flickr.com/2403/2082803540_0a3c59cb72.jpg" alt="Comparison of rotated sub-pixel type" width="430" /></a></p>
<p>The text was apparently calculated against the presumed horizontal LCD primary orientation. But because the pixels were rotated, several of the letterform stems (verticals) are drawing as full-pixel-width colored lines.  The first &#8220;h&#8221; is especially glaring, its stem and stroke are drawn as a  pair of dark red and light blue lines.</p>
<p>Sub-pixel rendering takes advantage of a known horizontal alignment of the three color primaries that make up each physical pixel. The algorithm seems to render text at 3x the horizontal resolution, ignoring the color information and treating each third-pixel as a valid light source to use for drawing letterforms. That 3x width is then striped with red, green and blue to match screen&#8217;s component primary ordering. (That was an educated guess)</p>
<p>As <a href="http://www.bagelturf.com/files/4f211532378b83797653f34c0b6c2af6-1059.html#unique-entry-id-1059">Steve Weller stated in the post John linked</a>, the human eye has &#8220;pathetic color-resolution&#8221;. This fact is exploited all over the place in video, with many formats sampling color only once for every four luminance pixels.</p>
<p>Several things are at play here:</p>
<ol>
<li>Human vision is the bifocal product of horizontally arranged eyes.</li>
<li>Most written human language uses letterforms which are vertically oriented and horizontally distinguished. Especially Latin-derived languages.</li>
<li>Most human languages read horizontally.</li>
<li>Human vision tends to be less color sensitive for motion, or when scanning information (like reading)</li>
</ol>
<p>It all just kind of worked out perfectly. Digital color reproduction combined our horizontal predisposition with our soft and slow perception of color, and then arranged color primaries horizontally. Text also reads horizontally, and since the viewer is rapidly moving their eyes, we perceive shape and contrast before color. Additionally, Latinate languages evolved letterforms which utilize horizontal variations against a largely regular vertical syncopation. Presto: sub-pixel rendering just seems fantastically obvious.</p>
<p>Regarding John&#8217;s closing supposition,</p>
<blockquote><p>&#8220;I’m not sure the iPhones rotating display is reason enough to rule out sub-pixel rendering.&#8221;</p></blockquote>
<p>Based on everything leading up to sub-pixel rendering in the first place, most of the benefits would be lost if the underlying pixel grid was vertically oriented. The sensitivity of computer text falls across the horizontal axis. Adding resolution to the vertical axis isn&#8217;t worth the effort.</p>
<p>Sub-pixel rendering is ultimately a transitional technology anyway, a half-step that improves the now while waiting for a better and inevitable future to arrive. Once we start seeing iPhone level pixel-densities all over the place, sub-pixel rendering will began its transition to technology footnote.</p>
<p>Digital displays will someday reach a point where every physical pixel is capable of producing every color of visible light. (And someone will doubtlessly push into near infrared and ultra-violet, claiming increased realism and fidelity). Future displays will also be operating at a density where anti-aliasing may not be necessary at all.</p>
<p>I still think Apple&#8217;s decision to use <a href="http://earthlingsoft.net/ssp/blog/2007/11/subpixel_antialiasing_followup">standard anti-aliasing for the Leopard menu bar</a> was a mistake. Unless they&#8217;ve got some spiffy high-pixel-density cinema displays ready for MacWorld and enable system-wide resolution independence in 10.5.x, switching to standard anti-aliased text rendering in the menu bar was a change that should have been postponed. The necessary hardware pool just isn&#8217;t here yet and the result is an interface that looks markedly worse than it did under previous releases.</p>
]]></content:encoded>
			<wfw:commentRss>http://joemaller.com/857/rotating-sub-pixel-text-rendering/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Calculate Sizes CPU usage bug in Leopard&#8217;s Finder</title>
		<link>http://joemaller.com/852/calculate-sizes-cpu-usage-bug-in-leopards-finder/</link>
		<comments>http://joemaller.com/852/calculate-sizes-cpu-usage-bug-in-leopards-finder/#comments</comments>
		<pubDate>Wed, 21 Nov 2007 01:40:19 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[leopard finder bug]]></category>

		<guid isPermaLink="false">http://joemaller.com/2007/11/20/calculate-sizes-cpu-usage-bug-in-leopards-finder/</guid>
		<description><![CDATA[Lately I&#8217;ve noticed the Finder on my MacBook Pro has been running both CPU cores at 40-80% for no apparent reason. From what I&#8217;ve been able to tell, there is a bug related to having the same window open in two different spaces with Calculate Folder Sizes enabled. I filed a bug on this (5609348) [...]]]></description>
			<content:encoded><![CDATA[<p>Lately I&#8217;ve noticed the Finder on my MacBook Pro has been running both CPU cores at 40-80% for no apparent reason. From what I&#8217;ve been able to tell, there is a bug related to having the same window open in two different spaces with Calculate Folder Sizes enabled. I filed a bug on this (<a href="rdar://problems/5609348">5609348</a>) but Apple is already <a href="http://twitter.com/stattenf/statuses/430201232">aware of this issue</a>.</p>
<p><strong>Workaround:</strong>  Closing all the Finder windows (&#x2318;-w) seems to bring the Finder&#8217;s CPU usage back to zero.</p>
<p>The following steps will recreate the problem every time for me:</p>
<ol>
<li>Log in to the guest account</li>
<li>&#x2318;-up arrow twice (navigate up from guest user&#8217;s home folder)</li>
<li>&#x2318;-2 (list view)</li>
</ol>
<ol>
<li value="4">Open System Prefs</li>
<li>Enable Spaces with default options.</li>
</ol>
<ol>
<li value="6">Open Activity Monitor (via Spotlight), search for &#8220;Finder&#8221; to clean up display</li>
<li>Arrange windows so the CPU value is visible behind the window</li>
</ol>
<ol>
<li value="8">Switch to another space</li>
<li>Create a new window: &#x2318;-n, &#x2318;-up arrow twice, &#x2318;-2</li>
</ol>
<ol>
<li value="10">Switch back to first space</li>
<li>Click Finder window to be sure it&#8217;s selected (probably unnecessary)</li>
<li> &#x2318;-J (Show View Options)</li>
<li> Check &#8220;Calculate all sizes&#8221;</li>
</ol>
<p>CPU usage should now increase. On my MBP I see about 40% across both cores.</p>
<ol>
<li value="14">Uncheck &#8220;Calculate all sizes&#8221;</li>
</ol>
<p>CPU usage <em>increases</em> to as much as 80%</p>
<h3>A few notes:</h3>
<p>The window should have a lot of files underneath it. If the Calculate all sizes command finishes too quickly it won&#8217;t show the problem. I opened windows to the top level of the hard drive because there weren&#8217;t enough files in the default guest account home folder.</p>
<p>This behavior did not happen with both windows in the same space.</p>
]]></content:encoded>
			<wfw:commentRss>http://joemaller.com/852/calculate-sizes-cpu-usage-bug-in-leopards-finder/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New You Control: Desktops beta</title>
		<link>http://joemaller.com/807/new-you-control-desktops-beta/</link>
		<comments>http://joemaller.com/807/new-you-control-desktops-beta/#comments</comments>
		<pubDate>Sat, 01 Sep 2007 07:01:20 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Mac OS X]]></category>

		<guid isPermaLink="false">http://joemaller.com/2007/09/01/new-you-control-desktops-beta/</guid>
		<description><![CDATA[Last year I wrote about Mac Virtual Desktops, focusing mostly on You Control: Desktops. I ended up buying a license and last week they released version 1.3 beta 2 Some of the good stuff I noticed right away: Customizable color for the highlighted desktop in the menu bar. The previous beta used a hard-coded red [...]]]></description>
			<content:encoded><![CDATA[<p>Last year I wrote about <a href='http://joemaller.com/2006/12/21/mac-virtual-desktops/'>Mac Virtual Desktops</a>, focusing mostly on <a href='http://www.yousoftware.com/desktops/'>You Control: Desktops</a>. I ended up buying a license and last week they released <a href='http://blog.yousoftware.com/?p=51'>version 1.3 beta 2</a></p>
<p>Some of the good stuff I noticed right away: </p>
<ul>
<li>
<p><img src='http://joemaller.com/wordpress/wp-content/uploads/2007/09/yc_desktops_bar.png' alt='You Control: Desktops Menu bar' style='border: 1px solid #999; float:right;' />Customizable color for the highlighted desktop in the menu bar. The previous beta used a hard-coded red outline which was ghastly.</p>
</li>
<li>Behavior of the cursor on edge-screen flipping. It can now be set to mimic Compiz/Beryl, where the cursor starts at the opposite edge of the next screen. So if you drag a window off the left side, it appears on the next desktop on the right side. With a transition like Cube or Pan, I find this to be spatially very intuitive. The cursor can also be set to remain in place, for transitions like Slide, it feels like you&#8217;re holding a window while the current desktop just gets out of the way beneath it. Not sure which one I prefer, but the options are a huge improvement.</li>
<li>Overall, the speed of transitions and switching feels much faster, especially on the more graphics intensive effects.</li>
</ul>
<p>Feedback I&#8217;m sending to the developers:</p>
<ul>
<li>Fade, Swirl, Twist and Zoom still use an additive composite, which means they pretty much always blow out to white during the transition and then pop to the next screen.  It&#8217;s uncharacteristically ugly.</li>
<li>
<p>Cursor repositioning seems to wait for some mouse movement before redrawing dragged windows. If the mouse is kept perfectly still, the dragged window will remain at the position it was pre-transition, then pop into place when the mouse is moved again. </p>
<p>It would be fantastic if the dragged windows could be composited before the transition or in the transition buffer, I think it would be perceptible and intuitively support the various repositioning options. If you&#8217;re doing that, might as well update the menu-bar icon&#8217;s status pre-transtion too. It&#8217;s disorienting to see it show up wrong and then update &#8212; the menu bar should reflect the new state before the transition finishes.</p>
</li>
<li>Hardware support for extra mouse buttons would be fantastic.</li>
<li>Hot key assignment is way too clumsy.</li>
</ul>
<p>While I go through phases of using and not using virtual desktops, if you want multiple desktops on your Mac right now and can&#8217;t wait for <a href="http://www.apple.com/macosx/leopard/features/spaces.html">Spaces in Leopard</a> (which doesn&#8217;t do as much), <a href="http://www.yousoftware.com/desktops/">YC:Desktops</a> is the way to go.</p>
]]></content:encoded>
			<wfw:commentRss>http://joemaller.com/807/new-you-control-desktops-beta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone two-way video prototype</title>
		<link>http://joemaller.com/801/iphone-two-way-video-prototype/</link>
		<comments>http://joemaller.com/801/iphone-two-way-video-prototype/#comments</comments>
		<pubDate>Sun, 12 Aug 2007 20:44:44 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://joemaller.com/2007/08/12/iphone-two-way-video-prototype/</guid>
		<description><![CDATA[The Ecamm brothers got two-way video conferencing working between two iPhones. As good as I think the iPhone is now, just wait a few months when this thing is really broken open. (link via Buzz @ C4) I don&#8217;t know why I&#8217;ve waited this long (ok I do, my life has a density), I&#8217;m jailbreaking [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://macdaddyworld.com/?page_id=2">Ecamm brothers</a> got <a href="http://macdaddyworld.com/?p=38">two-way video conferencing</a> working between two iPhones. As good as I think the iPhone is now, just wait a few months when this thing is <em>really</em> broken open. (link via <a href="http://twitter.com/buzz/statuses/202053332">Buzz @ C4</a>)</p>
<p>I don&#8217;t know why I&#8217;ve waited this long (ok I do, my life has a density), I&#8217;m <a href="http://iphone.fiveforty.net/wiki/index.php/How_to_Escape_Jail">jailbreaking</a> my phone tonight.</p>
]]></content:encoded>
			<wfw:commentRss>http://joemaller.com/801/iphone-two-way-video-prototype/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced
Database Caching 1/38 queries in 0.017 seconds using disk: basic
Object Caching 582/679 objects using disk: basic

Served from: joemaller.com @ 2012-05-23 06:33:49 -->
