<?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; Apple</title>
	<atom:link href="http://joemaller.com/category/apple/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>WWDC 08 wrapup</title>
		<link>http://joemaller.com/916/wwdc-08-wrapup/</link>
		<comments>http://joemaller.com/916/wwdc-08-wrapup/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 16:05:57 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[WWDC]]></category>

		<guid isPermaLink="false">http://joemaller.com/?p=916</guid>
		<description><![CDATA[WWDC 08 was incredible. While the iPhone gold rush euphoria contributed, everything just seemed especially good this year. I&#8217;ve been quietly disappointed in Leopard since it shipped. It just seemed too rough around the edges and somewhat rushed, especially compared to the polish demonstrated by the iPhoneOS. Because of that, I&#8217;m probably more excited about [...]]]></description>
			<content:encoded><![CDATA[<p>WWDC 08 was incredible. While the iPhone gold rush euphoria contributed, everything just seemed especially good this year.</p>
<p>I&#8217;ve been quietly disappointed in Leopard since it shipped. It just seemed too rough around the edges and somewhat rushed, especially compared to the polish demonstrated by the iPhoneOS. Because of that, I&#8217;m probably more excited about <a href='http://www.apple.com/macosx/snowleopard/'>Snow Leopard</a> than I was about Leopard. Besides the promise of generally improving the overall experience, the under-the-hood OpenCL and &#8220;Grand Central&#8221; additions are truly revolutionary advances for desktop OSs. The idea behind OpenCL being able to utilize the largely untapped parallel processing power of the GPU has the potential to radically reorganize the entire idea of computing, moving things distinctly towards a brain-like collection of specialized processing units. I&#8217;ve been joking this is OS X SP1 but that&#8217;s just not true, Apple is mainlining some serious innovation into the backend of Snow Leopard and this should be a very, very good release.</p>
<p>My plan for this year worked very well. I managed to set aside the week prior to essentially cram on Cocoa and Objective-C. While that was originally supposed to be three weeks, the time I eeked out still helped a great deal. I also maintained a very disciplined focus about which sessions I went to. In the past I&#8217;ve flitted around trying to get a taste of every subject that interested me &#8212; which is almost everything. This year&#8217;s deliberate focus and pre-study nearly eliminated the blank-stare drift I&#8217;d experienced in the past and left me feeling more confident than ever about building stuff with Cocoa, writing FXPlugs and making things for iPhone.</p>
<p>But far and away the best thing about this year was the people. Twitter made a lot of this possible by starting conversations beforehand. I think I probably met half my twitterstream in person, which was awesome and kind of funny. The social dynamic of first meeting twitterers is sort of one where everyone treats everyone else like a celebrity. It ended up being this wonderful abstracted feeling of recognition which wasn&#8217;t nearly as creepy as it sounds like it would be. My only regret is not meeting the handful of people I knew were there but never crossed paths with.</p>
<p>There are just too many people to call out, but I was blown away by just about everyone I met.</p>
]]></content:encoded>
			<wfw:commentRss>http://joemaller.com/916/wwdc-08-wrapup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Home movies as iTunes TV Shows</title>
		<link>http://joemaller.com/892/home-movies-as-itunes-tv-shows/</link>
		<comments>http://joemaller.com/892/home-movies-as-itunes-tv-shows/#comments</comments>
		<pubDate>Mon, 03 Mar 2008 06:26:32 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[AppleScript]]></category>
		<category><![CDATA[AppleTV]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[ipod]]></category>
		<category><![CDATA[ipod touch]]></category>
		<category><![CDATA[iTunes]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://joemaller.com/2008/03/03/home-movies-as-itunes-tv-shows/</guid>
		<description><![CDATA[Update: At some point, probably with iTunes 8 though I didn&#8217;t notice at the time, iTunes added support for batch changing video format, making the script featured in this post obsolete&#8230; as it should be. Original post follows. We usually keep our home movies in iPhoto, but recently I&#8217;ve started moving some select clips into [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update:</strong> At some point, probably with iTunes 8 though I didn&#8217;t notice at the time, iTunes added support for batch changing video format, making the script featured in this post obsolete&#8230; as it should be. </p>
<p><img src="http://joemaller.com/wordpress/wp-content/uploads/2008/03/itunes_multiple_info.png" alt="itunes_multiple_info" title="itunes_multiple_info" width="500" height="412" class="alignnone size-full wp-image-1242" /></p>
<p><em>Original post follows.</em></p>
<p>We usually keep our home movies in iPhoto, but recently I&#8217;ve started moving some select clips into iTunes. Unfortunately, the list of Movies quickly becomes unmanageable. These kinds of videos are much easier to work with when grouped as TV shows, but unfortunately iTunes won&#8217;t batch convert Video Kind. </p>
<p>So I wrote a script. In addition to defining selected movies as a show, it also tags their season with the current year and sets the Show Title. Here&#8217;s the script: (<a href="applescript://com.apple.scripteditor?action=new&#038;script=set%20showTitle%20to%20display%20dialog%20%22Enter%20TV%20Show%20Title%22%20default%20answer%20%22Family%20Videos%22%20buttons%20%7B%22Cancel%22%2C%20%22Ok%22%7D%20default%20button%202%0A%0Aset%20theYear%20to%20year%20of%20%28current%20date%29%20as%20integer%0A%0Atell%20application%20%22iTunes%22%0A%09copy%20selection%20to%20tracklist%0A%09repeat%20with%20theTrack%20in%20tracklist%0A%09%09%0A%09%09set%20show%20of%20theTrack%20to%20text%20returned%20of%20showTitle%0A%09%09set%20season%20number%20of%20theTrack%20to%20theYear%0A%09%09set%20video%20kind%20of%20theTrack%20to%20TV%20show%0A%09%09%0A%09end%20repeat%0Aend%20tell">Open in Script Editor</a>)</p>
<style type="text/css">
    p.p1 {margin: 0.0px 0.0px 0.0px 34.7px; text-indent: -34.7px; font: 10.0px Verdana}
    p.p2 {margin: 0.0px 0.0px 0.0px 34.7px; text-indent: -34.7px; font: 12.0px Helvetica; min-height: 14.0px}
    p.p3 {margin: 0.0px 0.0px 0.0px 34.7px; text-indent: -34.7px; font: 10.0px Verdana; color: #0000ff}
    p.p4 {margin: 0.0px 0.0px 0.0px 69.3px; text-indent: -69.4px; font: 10.0px Verdana; color: #0000ff}
    p.p5 {margin: 0.0px 0.0px 0.0px 69.3px; text-indent: -69.4px; font: 10.0px Verdana; color: #408000}
    p.p6 {margin: 0.0px 0.0px 0.0px 104.1px; text-indent: -104.1px; font: 12.0px Helvetica; min-height: 14.0px}
    p.p7 {margin: 0.0px 0.0px 0.0px 104.1px; text-indent: -104.1px; font: 10.0px Verdana; color: #0000ff}
    span.s1 {color: #0000ff}
    span.s2 {font: 12.0px Helvetica}
    span.s3 {color: #408000}
    span.s4 {font: 12.0px Helvetica; color: #000000}
    span.s5 {color: #000000}
    span.Apple-tab-span {white-space:pre}
  </style>
<p class="p1"><span class="s1"><b>set</b></span><span class="s2"> </span><span class="s3">showTitle</span><span class="s2"> </span><span class="s1"><b>to</b></span><span class="s2"> </span><span class="s1">display dialog</span><span class="s2"> </span>&#8220;Enter TV Show Title&#8221;<span class="s2"> </span><span class="s1">default answer</span><span class="s2"> </span>&#8220;Family Videos&#8221;<span class="s2"> </span><span class="s1">buttons</span><span class="s2"> </span>{&#8220;Cancel&#8221;,<span class="s2"> </span>&#8220;Ok&#8221;}<span class="s2"> </span><span class="s1">default button</span><span class="s2"> </span>2</p>
<p class="p2"></p>
<p class="p3"><b>set</b><span class="s4"> </span><span class="s3">theYear</span><span class="s4"> </span><b>to</b><span class="s4"> </span>year<span class="s4"> </span><b>of</b><span class="s4"> </span><span class="s5">(</span>current date<span class="s5">)</span><span class="s4"> </span><b>as</b><span class="s4"> </span>integer</p>
<p class="p2"></p>
<p class="p3"><b>tell</b><span class="s4"> </span>application<span class="s4"> </span><span class="s5">&#8220;iTunes&#8221;</span></p>
<p class="p4"><span class="s4"><span class="Apple-tab-span">	</span></span><b>copy</b><span class="s4"> </span>selection<span class="s4"> </span><b>to</b><span class="s4"> </span><span class="s3">tracklist</span></p>
<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s1"><b>repeat</b></span><span class="s4"> </span><span class="s1"><b>with</b></span><span class="s4"> </span>theTrack<span class="s4"> </span><span class="s1"><b>in</b></span><span class="s4"> </span>tracklist</p>
<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>set</b><span class="s4"> </span>show<span class="s4"> </span><b>of</b><span class="s4"> </span><span class="s3">theTrack</span><span class="s4"> </span><b>to</b><span class="s4"> </span>text returned<span class="s4"> </span><b>of</b><span class="s4"> </span><span class="s3">showTitle</span></p>
<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>set</b><span class="s4"> </span>season number<span class="s4"> </span><b>of</b><span class="s4"> </span><span class="s3">theTrack</span><span class="s4"> </span><b>to</b><span class="s4"> </span><span class="s3">theYear</span></p>
<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>set</b><span class="s4"> </span>video kind<span class="s4"> </span><b>of</b><span class="s4"> </span><span class="s3">theTrack</span><span class="s4"> </span><b>to</b><span class="s4"> </span>TV show</p>
<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
<p class="p4"><span class="s4"><span class="Apple-tab-span">	</span></span><b>end</b><span class="s4"> </span><b>repeat</b></p>
<p class="p3"><b>end</b><span class="s4"> </span><b>tell</b></p>
<p>&nbsp;</p>
<p>To use that, just select some movies in iTunes and run the script. Whatever&#8217;s selected will be tagged and grouped under the title you entered.</p>
<p>Now our home movies are all grouped together and easily synced to iPhones or other iTunes fed products like iPods and Apple TVs. To view videos on any of those devices, the movies will need to be converted to iPod compatible format. QuickTime can do it, but <a href="http://isquint.org">iSquint</a>/<a href="http://visualhub.net">VisualHub</a> can do it much faster.</p>
<p>This could have been done with <a href="http://atomicparsley.sourceforge.net/">AtomicParsley</a>, but AppleScript is easier and pre-installed on every Mac.</p>
<p>What would be really great is if iTunes and iPhoto could talk to one another and pull video content out. iPhoto has supported movies for years now, why can&#8217;t they talk to each other? (because neither was designed for handling video formats?)</p>
<p>There&#8217;s plenty of room to improve this, if you do please post a link in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://joemaller.com/892/home-movies-as-itunes-tv-shows/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<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>iTransmogrify update</title>
		<link>http://joemaller.com/879/itransmogrify-update/</link>
		<comments>http://joemaller.com/879/itransmogrify-update/#comments</comments>
		<pubDate>Wed, 23 Jan 2008 21:17:27 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[itransmogrify]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://joemaller.com/2008/01/23/itransmogrify-update/</guid>
		<description><![CDATA[The main iTransmogrify! script has been updated with a bunch of new functionality: YouTube.com pages are now supported (see notes) Daily Motion videos are supported for new-style urls (see notes) Kink.fm player and listings page are now supported Sideload.com play links are now supported WordPress Blogs using Viper Video QuickTags are supported for YouTube All [...]]]></description>
			<content:encoded><![CDATA[<p>The main <a href="http://itransmogrify.googlecode.com">iTransmogrify!</a> script has been updated with a bunch of new functionality:</p>
<ul>
<li>YouTube.com pages are now supported (see <a href="#notes">notes</a>)</li>
<li>Daily Motion videos are supported for new-style urls (see <a href="#notes">notes</a>)</li>
<li><a href="http://www.kink.fm">Kink.fm</a> player and listings page are now supported</li>
<li><a href="http://www.sideload.com">Sideload.com</a> play links are now supported</li>
<li>WordPress Blogs using <a href="http://wordpress.org/extend/plugins/vipers-video-quicktags">Viper Video QuickTags</a> are supported for YouTube</li>
<li>All media links now open into new windows, so you won&#8217;t have to re-transmogrify a page with several media files after playing one. Note that this is dependent on the iPhone, sometimes it will blank other windows)</li>
<li>Some content in iframes will now be converted.</li>
<li>MotionBox, Viddler and Vimeo embedded videos, while not supporting iPod/iPhone alternate content, now link to their respective detail pages.</li>
</ul>
<p>The main bookmarklet code was updated. This was necessary to workaround a <a href="http://joemaller.com/2008/01/22/itransmogrify-update-ready-but/">frustrating oversight with Google Code hosting</a>. Everyone will need to update their bookmarklet, in the future all updates will be automatic.</p>
<p>This has turned out to be far bigger than I ever imagined. Thank you to everyone for the links, feedback, compliments and ideas.</p>
<h3 id="known_issues">Known issues</h3>
<p>LiveJournal pages redefine a bunch of core JavaScript functionality, breaking all kinds of stuff including jQuery. Additionally, they&#8217;re serving media in an iframe from a different domain, meaning JavaScript couldn&#8217;t access the frame even if they hadn&#8217;t broken it.</p>
<h3 id="notes">Notes</h3>
<p><strong>YouTube Internal pages </strong ><br />
Because of a strange iPhone quirk, these links all need to go through the Google redirector, otherwise they bounce back to uk.youtube.com instead of playing.</p>
<p><strong>DailyMotion</strong><br />
DailyMotion videos using new-style urls, which are usually about six digits long, work correctly. Videos using the old-style alphanumeric ID do not work yet. I&#8217;m probably just going to resort to building a simple web-service to grab those. Additionally, there is no way to programatically access the mp4 alternate content url, so I just linked to their iPhone pages. I&#8217;d prefer embedding QuickTime directly, but it&#8217;s just not possible yet.</p>
]]></content:encoded>
			<wfw:commentRss>http://joemaller.com/879/itransmogrify-update/feed/</wfw:commentRss>
		<slash:comments>87</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>iTransmogrify!</title>
		<link>http://joemaller.com/873/itransmogrify/</link>
		<comments>http://joemaller.com/873/itransmogrify/#comments</comments>
		<pubDate>Sat, 12 Jan 2008 05:43:10 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[itransmogrify]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://joemaller.com/2008/01/12/itransmogrify/</guid>
		<description><![CDATA[iTransmogrify! is a bookmarklet for iPhone which transforms embedded Flash content into direct links to natively supported formats. That means YouTube videos and MP3s can now be played from the iPhone&#8217;s Safari web browser with just a few clicks. Seeing it work is the best explanation: On an iPhone? Try it now: iTransmogrify! (works in [...]]]></description>
			<content:encoded><![CDATA[<div style="float:right"><script type="text/javascript">digg_url='http://digg.com/apple/iTransmogrify_embedded_Flash_converter_for_iPhone';</script><script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></div>
<p>iTransmogrify! is a bookmarklet for iPhone which transforms embedded Flash content into direct links to natively supported formats. That means YouTube videos and MP3s can now be played from the iPhone&#8217;s Safari web browser with just a few clicks. </p>
<p>Seeing it work is the best explanation:</p>
<p><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/djkYrLoZBb0&#038;rel=1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/djkYrLoZBb0&#038;rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></p>
<p>On an iPhone? Try it now: <strong><a href="javascript:if%28typeof%28iTransmogrify%29%3D%3D%27undefined%27%29%7Bvar%20s%3Ddocument.createElement%28%27script%27%29%3Bs.src%3D%27http%3A%2F%2Fjoemaller.com%2FiTransmogrify-latest.js%3Fq%3D%27%2B%28new%20Date%29.getTime%28%29%3Bdocument.getElementsByTagName%28%27head%27%29%5B0%5D.appendChild%28s%29%7Dvoid%280%29">iTransmogrify!</a></strong> (works in Safari and Firefox too)</p>
<blockquote><p>Sorry, it took YouTube a long time to re-encode that for iPhone, here&#8217;s a baby panda:</p></blockquote>
<p><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/ysTmUTQ5wZE&#038;rel=1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/ysTmUTQ5wZE&#038;rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></p>
<h3>Installation</h3>
<p>To install the bookmarklet, just drag the link to your Safari or Firefox Bookmarks, IE users should right click and choose &#8220;Add To Favorites&#8230;&#8221; After adding the link, sync your iPhone. </p>
<p>Grab it now: <b><a href="javascript:if%28typeof%28iTransmogrify%29%3D%3D%27undefined%27%29%7Bvar%20s%3Ddocument.createElement%28%27script%27%29%3Bs.src%3D%27http%3A%2F%2Fjoemaller.com%2FiTransmogrify-latest.js%3Fq%3D%27%2B%28new%20Date%29.getTime%28%29%3Bdocument.getElementsByTagName%28%27head%27%29%5B0%5D.appendChild%28s%29%7Dvoid%280%29">iTransmogrify!</a></b></p>
<p>You can also <a href="http://joemaller.com/___?javascript:if%28typeof%28iTransmogrify%29%3D%3D%27undefined%27%29%7Bvar%20s%3Ddocument.createElement%28%27script%27%29%3Bs.src%3D%27http%3A%2F%2Fjoemaller.com%2FiTransmogrify-latest.js%3Fq%3D%27%2B%28new%20Date%29.getTime%28%29%3Bdocument.getElementsByTagName%28%27head%27%29%5B0%5D.appendChild%28s%29%7Dvoid%280%29">add iTransmogrify from your iPhone</a>!</p>
<p>More information, source code and bug-tracking is available on the <a href="http://itransmogrify.googlecode.com/">iTransmogrify Google Code page</a>.</p>
<ul>Currently supported content:</p>
<li>Default YouTube Object-Embed code</li>
<li>YouTube bare Embed</li>
<li>YouTube bare Object</li>
<li>A variety of Flash-based MP3 players including <a href="http://digg.com/podcasts">Digg Podcasts</a></li>
</ul>
<p><em>Lots more added: <a href='http://joemaller.com/2008/01/23/itransmogrify-update/'>iTransmogrify update</a></em></p>
<p>Support for other embedded media sites will be added as I figure them out. Please report broken sites or suggest additional sources using <a href="http://code.google.com/p/itransmogrify/issues/list">Google Code issue tracker</a>.</p>
<h3>Acknowledgements</h3>
<p>The first robust, script insertion bookmarklets I ever saw was Sumaato&#8217;s original <a href="http://sumaato.typolis.net/stories/4323/">Flickr GeoCoding bookmarklet</a>.</p>
<p>Other sites also deserving links:
<ul>
<li>Jan Wolter&#8217;s <a href='http://unixpapa.com/js/dyna.html'>Dynamic Script Loading</a></li>
<li>Andrew Sumin&#8217;s <a href="http://jsx.ru/Texts/ModulesInJS/indexeng.html">Modularity in JavaScript</a></li>
<li>Mike West&#8217;s <a href='http://www.digital-web.com/articles/scope_in_javascript'>Scope in JavaScript</a> was the refresher I needed to resolve one especially annoying object-scope bug.</li>
</ul>
<p>iPhone graphic reference: </p>
<ul>
<li><a href='http://www.hackthatphone.com/112/iphone_graphics_locations.html'>iPhone Graphics locations</a></li>
<li><a href='http://www.flickr.com/photos/34818713@N00/sets/72157601845495751/'>Huge iPhone icons</a></li>
</ul>
<p>Also, John Resig&#8217;s amazing <a href="http://jquery.com/">jQuery JavaScript library</a>. This project was the excuse I&#8217;d been looking for to finally dig in and learn it. </p>
<p>The name came from a late-night brainstorming chat with <a href="http://movielibrary.lynda.com/authors/author/?aid=1">Bruce</a> and was far more fun and interesting than the utilitarian ones I was thinking of. So thank you Bruce, and of course,  Bill Watterson.</p>
]]></content:encoded>
			<wfw:commentRss>http://joemaller.com/873/itransmogrify/feed/</wfw:commentRss>
		<slash:comments>306</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>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced
Database Caching 4/17 queries in 0.016 seconds using disk: basic
Object Caching 612/638 objects using disk: basic

Served from: joemaller.com @ 2012-05-23 06:31:57 -->
