<?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>2718.us blog &#187; mac</title>
	<atom:link href="http://2718.us/blog/tag/mac/feed/" rel="self" type="application/rss+xml" />
	<link>http://2718.us/blog</link>
	<description>Miscellaneous Technological Geekery</description>
	<lastBuildDate>Tue, 18 May 2010 02:42:55 +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>MacWJ: It&#8217;s like Windows Journal for Tablet Macs</title>
		<link>http://2718.us/blog/2010/05/07/macwj-its-like-windows-journal-for-tablet-macs/</link>
		<comments>http://2718.us/blog/2010/05/07/macwj-its-like-windows-journal-for-tablet-macs/#comments</comments>
		<pubDate>Fri, 07 May 2010 09:59:44 +0000</pubDate>
		<dc:creator>2718.us</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[journal]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[mac osx]]></category>
		<category><![CDATA[macwj]]></category>
		<category><![CDATA[mit]]></category>
		<category><![CDATA[mit license]]></category>
		<category><![CDATA[modbook]]></category>
		<category><![CDATA[os x]]></category>
		<category><![CDATA[tablet]]></category>
		<category><![CDATA[tablet pc]]></category>
		<category><![CDATA[windows journal]]></category>

		<guid isPermaLink="false">http://2718.us/blog/?p=263</guid>
		<description><![CDATA[&#8230; because there are oh-so-many tablet Macs.  There are ModBooks and there are non-Apple tablet machines running Mac OS X.  So, if you have such a device and are looking for something that provides a surface on which to draw, write, etc., with various &#8220;pens&#8221; and with the ability to save to PDF and PNG, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://bitbucket.org/ilg/macwj/"><img class="alignright" title="MacWJ Icon" src="http://bytebucket.org/ilg/macwj/wiki/MacWJ.png" alt="MacWJ" style="border:0;" width="256" height="256" /></a>&#8230; because there are oh-so-many tablet Macs.  There are <a href="http://www.axiotron.com/index.php?id=modbook">ModBooks</a> and there are non-Apple tablet machines running Mac OS X.  So, if you have such a device and are looking for something that provides a surface on which to draw, write, etc., with various &#8220;pens&#8221; and with the ability to save to PDF and PNG, <a href="http://bitbucket.org/ilg/macwj/">MacWJ</a> may be of use to you.  It&#8217;s open-source under MIT license.</p>
<p>MacWJ requires OS X 10.5 or newer and some sort of tablet-pen input, whether a tablet-form computer or a Wacom graphics tablet or something else of that sort.  Ready-to-run recent build(s) are <a href="http://bitbucket.org/ilg/macwj/downloads">available on bitbucket</a>, as well as <a href="http://bitbucket.org/ilg/macwj/src">the full source code</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://2718.us/blog/2010/05/07/macwj-its-like-windows-journal-for-tablet-macs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simplifying the Assembly of Localizations in Xcode</title>
		<link>http://2718.us/blog/2010/04/22/simplifying-the-assembly-of-localizations-in-xcode/</link>
		<comments>http://2718.us/blog/2010/04/22/simplifying-the-assembly-of-localizations-in-xcode/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 20:11:51 +0000</pubDate>
		<dc:creator>2718.us</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[build script]]></category>
		<category><![CDATA[internationalization]]></category>
		<category><![CDATA[localization]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[nib]]></category>
		<category><![CDATA[os x]]></category>
		<category><![CDATA[run script]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[sh]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[shell script]]></category>
		<category><![CDATA[target]]></category>
		<category><![CDATA[xcode]]></category>
		<category><![CDATA[xib]]></category>

		<guid isPermaLink="false">http://2718.us/blog/?p=254</guid>
		<description><![CDATA[A comment on a bitbucket fork of Murky led me to &#8220;Automatically localize your nibs when building&#8220;, which suggests a great way to automate the hard developer-side stuff in localizing in Xcode&#8211;pulling the original strings from the XIB files and putting the translated strings back in.  You absolutely should read the original blog post there, [...]]]></description>
			<content:encoded><![CDATA[<p>A comment on <a href="https://bitbucket.org/philippec/murky">a bitbucket fork</a> of <a href="http://bitbucket.org/snej/murky/wiki/Home">Murky</a> led me to &#8220;<a href="http://developer.casgrain.com/?p=94">Automatically localize your nibs when building</a>&#8220;, which suggests a great way to automate the hard developer-side stuff in localizing in Xcode&#8211;pulling the original strings from the XIB files and putting the translated strings back in.  You absolutely should read the original blog post there, because I cannot adequately explain the big-picture part of the idea with a short quote.</p>
<p>My one complaint with the setup described is that the script for the &#8220;Run Script&#8221; build phase described there is a maintenance headache that I could do without.  Here&#8217;s my solution:  Create two new build targets, both of the &#8220;Shell Script&#8221; type&#8211;these are targets that just run a shell script, so they are created with only a &#8220;Run Script&#8221; build phase.  I called my two new targets &#8220;Create/Update English .strings files&#8221; and &#8220;Create/Update l10n XIBs&#8221; but you can call them whatever you want.</p>
<p>In the &#8220;Create/Update English .strings files&#8221; target&#8217;s &#8220;Run Script&#8221; phase, the script is:</p>
<div class="geshi no bash">
<div class="head"># Create/Update English .strings files</div>
<ol>
<li class="li1">
<div class="de1"><span class="kw1">for</span> xibFile <span class="kw1">in</span> <span class="st0">&quot;$PROJECT_DIR/English.lproj/&quot;</span><span class="sy0">*</span>.xib; <span class="kw1">do</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;ibtool &#8211;generate-strings-<span class="kw2">file</span> <span class="st0">&quot;${xibFile}.strings&quot;</span> <span class="st0">&quot;$xibFile&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">done</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">exit</span> <span class="nu0">0</span></div>
</li>
</ol>
</div>
<p>This uses <code>ibtool</code> to create a strings file for every XIB in the English localization (from <code>foo.xib</code>, <code>foo.xib.strings</code> will be created).</p>
<p>In the &#8220;Create/Update l10n XIBs&#8221; target&#8217;s &#8220;Run Script&#8221; phase, the script is:</p>
<div class="geshi no bash">
<div class="head"># Create/Update l10n XIBs</div>
<ol>
<li class="li1">
<div class="de1"><span class="re2">originalResourceDirectory=</span><span class="st0">&quot;$PROJECT_DIR/English.lproj&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">for</span> localizedDirectory <span class="kw1">in</span> <span class="st0">&quot;$PROJECT_DIR/&quot;</span><span class="sy0">*</span>.lproj; <span class="kw1">do</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span> <span class="br0">&#91;</span> localizedDirectory <span class="sy0">!</span>= originalResourceDirectory <span class="br0">&#93;</span>; <span class="kw1">then</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">for</span> xibFile <span class="kw1">in</span> <span class="st0">&quot;${originalResourceDirectory}/&quot;</span><span class="sy0">*</span>.xib; <span class="kw1">do</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re2">xibBaseName=</span>$<span class="br0">&#40;</span><span class="kw2">basename</span> <span class="st0">&quot;${xibFile}&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;ibtool &#8211;strings-<span class="kw2">file</span> <span class="st0">&quot;${localizedDirectory}/${xibBaseName}.strings&quot;</span> \</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &#8211;<span class="kw2">write</span> <span class="st0">&quot;${localizedDirectory}/${xibBaseName}&quot;</span> \</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="st0">&quot;$xibFile&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">done</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">fi</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">done</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">exit</span> <span class="nu0">0</span></div>
</li>
</ol>
</div>
<p>This goes through every <code>.lproj</code> directory except <code>English.lproj</code> and uses <code>ibtool</code> to apply the <code>.xib.strings</code> files in those localizations to the XIB files in <code>English.lproj</code>.</p>
<p>By having these as two separate targets, they aren&#8217;t run every time I build and each part can be run on its own, on demand.  By using the power of shell scripting, I avoid having to alter the scripts for every new localization or XIB.</p>
]]></content:encoded>
			<wfw:commentRss>http://2718.us/blog/2010/04/22/simplifying-the-assembly-of-localizations-in-xcode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A WebView Subclass with Isolated Cookie Storage</title>
		<link>http://2718.us/blog/2010/03/11/a-webview-subclass-with-isolated-cookie-storage/</link>
		<comments>http://2718.us/blog/2010/03/11/a-webview-subclass-with-isolated-cookie-storage/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 07:38:14 +0000</pubDate>
		<dc:creator>2718.us</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[cookies]]></category>
		<category><![CDATA[IGIsolatedCookieWebView]]></category>
		<category><![CDATA[isolated cookies]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[mit]]></category>
		<category><![CDATA[mit license]]></category>
		<category><![CDATA[os x]]></category>
		<category><![CDATA[stackoverflow]]></category>
		<category><![CDATA[subclass]]></category>
		<category><![CDATA[webkit]]></category>
		<category><![CDATA[WebView]]></category>

		<guid isPermaLink="false">http://2718.us/blog/?p=227</guid>
		<description><![CDATA[Following the advice of Kevin Ballard on StackOverflow, I created IGIsolatedCookieWebView, a subclass of WebView that does not access or affect the system-wide shared cookie storage (shared among all WebKit apps).  Each instance of IGIsolatedCookieWebView has its own cookie storage so that, for example, multiple instances of IGIsolatedCookieWebView within the same application can be logged in [...]]]></description>
			<content:encoded><![CDATA[<p>Following <a href="http://stackoverflow.com/questions/364219/how-can-i-have-multiple-instances-of-webkit-without-sharing-cookies/365080#365080">the advice of Kevin Ballard on StackOverflow</a>, I created <a href="/cocoa/#IGIsolatedCookieWebView">IGIsolatedCookieWebView</a>, a subclass of WebView that does not access or affect the system-wide shared cookie storage (shared among all WebKit apps).  Each instance of IGIsolatedCookieWebView has its own cookie storage so that, for example, multiple instances of IGIsolatedCookieWebView within the same application can be logged in to the same web site with different credentials.  IGIsolatedCookieWebView should be usable in place of WebView, except that IGIsolatedCookieWebView uses the resource load delegate, so that can&#8217;t be used by the application.  IGIsolatedCookieWebView is published under <del datetime="2010-03-29T13:57:00+00:00">a 3-clause BSD</del> an MIT license.</p>
]]></content:encoded>
			<wfw:commentRss>http://2718.us/blog/2010/03/11/a-webview-subclass-with-isolated-cookie-storage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Drag-Resizable Subclass of NSComboBox</title>
		<link>http://2718.us/blog/2010/03/10/a-drag-resizable-subclass-of-nscombobox/</link>
		<comments>http://2718.us/blog/2010/03/10/a-drag-resizable-subclass-of-nscombobox/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 09:57:02 +0000</pubDate>
		<dc:creator>2718.us</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[combo box]]></category>
		<category><![CDATA[combobox]]></category>
		<category><![CDATA[drag]]></category>
		<category><![CDATA[drag-resizable]]></category>
		<category><![CDATA[IGResizableComboBox]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[mit]]></category>
		<category><![CDATA[mit license]]></category>
		<category><![CDATA[nscombobox]]></category>
		<category><![CDATA[os x]]></category>
		<category><![CDATA[resizable]]></category>
		<category><![CDATA[resizable combo box]]></category>
		<category><![CDATA[resizable combobox]]></category>
		<category><![CDATA[subclass]]></category>

		<guid isPermaLink="false">http://2718.us/blog/?p=223</guid>
		<description><![CDATA[IGResizableComboBox is a drag-resizable subclass of NSComboBox—that is, IGResizableComboBox should be usable in place of NSComboBox and it adds a small bar at the bottom of the pop-up list that can be dragged to resize the pop-up list.  IGResizableComboBox is published under a 3-clause BSD an MIT license. It still has some quirks: behavior is [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/cocoa/#IGResizableComboBox">IGResizableComboBox</a> is a drag-resizable subclass of NSComboBox—that is, IGResizableComboBox should be usable in place of NSComboBox and it adds a small bar at the bottom of the pop-up list that can be dragged to resize the pop-up list.  IGResizableComboBox is published under <del datetime="2010-03-29T13:57:01+00:00">a 3-clause BSD</del> an MIT license.</p>
<p>It still has some quirks:</p>
<ul>
<li><del datetime="2010-03-17T15:31:40+00:00">behavior is strange when the pop-up is above the combo box (whereas it is usually below)</del> [fixed; when the pop-up is above the combo box, the drag-handle is at the top and the top edge moves while the bottom edge stays fixed at the combo box]</li>
<li><del datetime="2010-03-10T22:37:05+00:00">the formula for resetting the number of visible items after dragging occurs is not quite right</del> [fixed; dragging now snaps to whole-item positions]</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://2718.us/blog/2010/03/10/a-drag-resizable-subclass-of-nscombobox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Best Drive Failure Ever</title>
		<link>http://2718.us/blog/2009/10/27/best-drive-failure-ever/</link>
		<comments>http://2718.us/blog/2009/10/27/best-drive-failure-ever/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 23:27:05 +0000</pubDate>
		<dc:creator>2718.us</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[disk]]></category>
		<category><![CDATA[disk failure]]></category>
		<category><![CDATA[disk utility]]></category>
		<category><![CDATA[drive]]></category>
		<category><![CDATA[failure]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mirror]]></category>
		<category><![CDATA[os x]]></category>
		<category><![CDATA[raid]]></category>
		<category><![CDATA[raid 1]]></category>
		<category><![CDATA[raid mirror]]></category>
		<category><![CDATA[raid1]]></category>
		<category><![CDATA[re]]></category>
		<category><![CDATA[re2]]></category>
		<category><![CDATA[redundant]]></category>
		<category><![CDATA[smart]]></category>
		<category><![CDATA[time machine]]></category>
		<category><![CDATA[wd]]></category>
		<category><![CDATA[wd re]]></category>
		<category><![CDATA[wd re2]]></category>

		<guid isPermaLink="false">http://2718.us/blog/?p=194</guid>
		<description><![CDATA[I suppose it&#8217;s a bit misleading to call the least bad something the &#8220;best.&#8221;  This past weekend, I experience a harddrive failure&#8211;a 2-year-old WD RE2 0.5TB drive failed before its 5-year warranty was up and well before its MTBF (1.2 million hours = 136.895463 years).  It&#8217;s been a while since I had a drive fail [...]]]></description>
			<content:encoded><![CDATA[<p>I suppose it&#8217;s a bit misleading to call the least bad something the &#8220;best.&#8221;  This past weekend, I experience a harddrive failure&#8211;a 2-year-old WD RE2 0.5TB drive failed before its 5-year warranty was up and well before its MTBF (1.2 million hours = 136.895463 years).  It&#8217;s been a while since I had a drive fail on me (excepting the hanging behavior of the 1.5TB Seagate drives, which isn&#8217;t really failure), but I&#8217;ve had plenty of drives fail over the course of 25 years of computing.  With the luckier failures, I didn&#8217;t lose anything important.</p>
<p>What&#8217;s noteworthy about this failure, though, is that it&#8217;s the first time I&#8217;ve had a drive fail and lost absolutely nothing.  The drive was half of a software RAID1 setup.  OS X&#8217;s Disk Utility showed the drive with SMART status &#8220;failing&#8221; and showed the RAID as &#8220;degraded&#8221; but was still able to make a complete copy of the RAID to another drive.  Even supposing the RAID hadn&#8217;t survived, all of my data except possibly the most recent hour is backed up to yet another drive via Time Machine.</p>
<p>I&#8217;m not going to claim the system is bulletproof (I&#8217;m sure it isn&#8217;t), but it is nice to see a redundancy/backup plan actually work when tested by the real world.  I&#8217;m just waiting on a cross-shipped replacement from WD to rebuild the RAID.</p>
<p>Remember: it&#8217;s not <em>if</em> your harddrive fails, it&#8217;s <em>when</em> your harddrive fails.  Drive failure is inevitable.</p>
<p><strong>Edit:</strong> The replacement from WD was shipped next-day air, so I&#8217;ll have the new drive tomorrow.  First business day to process the RMA, second business day to ship the replacement, and the replacement arrives on the third business day.  Pretty fast.</p>
]]></content:encoded>
			<wfw:commentRss>http://2718.us/blog/2009/10/27/best-drive-failure-ever/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac Pro (2007) Bluetooth</title>
		<link>http://2718.us/blog/2009/10/26/mac-pro-2007-bluetooth/</link>
		<comments>http://2718.us/blog/2009/10/26/mac-pro-2007-bluetooth/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 05:59:57 +0000</pubDate>
		<dc:creator>2718.us</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[antenna]]></category>
		<category><![CDATA[antenna wires]]></category>
		<category><![CDATA[bluetooth]]></category>
		<category><![CDATA[bluetooth range]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mac pro]]></category>
		<category><![CDATA[mislabeled]]></category>
		<category><![CDATA[range]]></category>

		<guid isPermaLink="false">http://2718.us/blog/?p=191</guid>
		<description><![CDATA[I&#8217;ve had my Mac Pro for over 2 years now and for much of that time I&#8217;ve been resigned to the idea that my Apple Wireless Keyboard and Mighty Mouse were just not going to work well more than 6 inches from the front-lower-right corner of the Mac Pro case.  Early on, after I&#8217;d had [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had my Mac Pro for over 2 years now and for much of that time I&#8217;ve been resigned to the idea that my Apple Wireless Keyboard and Mighty Mouse were just not going to work well more than 6 inches from the front-lower-right corner of the Mac Pro case.  Early on, after I&#8217;d had the machine a month or two, I mentioned it to my brother-in-law, who told me that he&#8217;d seen some talk online about bluetooth range issues, but that he was fairly certain it was all resolved before my machine was manufactured.  In fact, that&#8217;s what most of the bits I could find seemed to indicate&#8211;the incidence of Mac Pros with bad bluetooth range dropped dramatically in early 2007.</p>
<p>Dropped dramatically, but not entirely.  The underlying issue seems to be mislabeled antenna wires.  I&#8217;d made an earlier pass at trying this fix, but failed because I couldn&#8217;t find any of the other wires I was supposed to use in place of the one labeled &#8220;BT&#8221; that was attached to my bluetooth module.  Just now, however, with some more disassembly, I was able to find the other wires, swap the &#8220;BT&#8221; wire for the only other wire long enough to reach, and now my keyboard and mouse work from across the room.</p>
<p><strong>Details</strong>:  Read <a href="http://www.mcelhearn.com/?p=234">this</a> and <a href="http://thelocale.org/forum/viewtopic.php?pid=16038">this</a>.  Open the case, remove all four SATA brackets/drives.  If you can see all four antenna wires, great, go for it!  (That is, swap the &#8220;BT&#8221; wire for the only other wire long enough to reach.  If you&#8217;ve got the Airport module, see those two links to figure out how to deal with those wires.)  If not, as it was for me, remove the heatsink cover (bottom-middle of case) and the front fan assembly (bottom-front of case), then poke around in the bundles of wire behind SATA bay 1, top of the motherboard/logic board, toward the front of the case.  That&#8217;s where I found the wires I needed.</p>
<p>To remove the heatsink cover, grip it at the edge closest to the motherboard and lift and pull toward you&#8211;it&#8217;s held in place by a few magnets, no latches or anything.</p>
<p>To remove the front fan assembly, unscrew the screw that goes through the motherboard at the top-right of the fan assembly and possibly look for a screw at the bottom-right of the assembly, just under where the heatsink cover was.  Once those two screws are removed, pull the assembly straight out of the case (perpendicular to the motherboard)&#8211;it slides in a track along the bottom of the case and pulls away from a plug on the motherboard (no cables to worry about).</p>
]]></content:encoded>
			<wfw:commentRss>http://2718.us/blog/2009/10/26/mac-pro-2007-bluetooth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac: Chrome versus Firefox</title>
		<link>http://2718.us/blog/2009/09/17/mac-chrome-versus-firefox/</link>
		<comments>http://2718.us/blog/2009/09/17/mac-chrome-versus-firefox/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 05:04:26 +0000</pubDate>
		<dc:creator>2718.us</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[intel]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[shiretoko]]></category>
		<category><![CDATA[sunspider]]></category>

		<guid isPermaLink="false">http://2718.us/blog/?p=178</guid>
		<description><![CDATA[Seeing the announcement of Chrome 3 on Ars Technica reminded me of my desire for Chrome on the Mac. I&#8217;m not unhappy with Firefox, especially with the processor-specific-optimization builds, but it&#8217;s still slow and it just gets slower the longer I keep it open, constantly churning the CPU doing something and occasionally pausing for no [...]]]></description>
			<content:encoded><![CDATA[<p>Seeing <a href="http://arstechnica.com/open-source/news/2009/09/chrome-3-out-javascript-performance-increased-150-since-v1.ars">the announcement of Chrome 3 on Ars Technica</a> reminded me of my desire for Chrome on the Mac.  I&#8217;m not unhappy with Firefox, especially with the <a href="http://firefoxmac.furbism.com/">processor-specific-optimization builds</a>, but it&#8217;s still slow and it just gets slower the longer I keep it open, constantly churning the CPU doing something and occasionally pausing for no apparent reason.  (I dislike the interface and the feel of Safari, though less so with 4 than earlier versions.)  So, I <a href="http://www.google.com/search?sourceid=chrome&amp;ie=UTF-8&amp;q=mac+chrome">Googled Mac Chrome</a> and found that they&#8217;ve got <a href="http://www.google.com/chrome/intl/en/mac.html">a developer preview up for Mac</a> and I just had to download and install it.  Both on my Macbook Air and on my Mac Pro, the <a href="www2.webkit.org/perf/sunspider-0.9/sunspider.html">SunSpider benchmark</a> performance of &#8220;Shiretoko&#8221; intel-optimized Firefox 3.5.2 was 3-4x slower than the Chrome developer preview 4.0.207.0 (in which I am writing this post).  This is huge.  When I switched to &#8220;Shiretoko&#8221; from stock Firefox, I ran the SunSpider benchmarks and found a slight and significant improvement, but not even close to 2x, let alone 3-4x.  I can&#8217;t wait for a final Chrome (or at least a Chrome that supports SOCKS proxy settings so I can securely browse over WiFi).</p>
]]></content:encoded>
			<wfw:commentRss>http://2718.us/blog/2009/09/17/mac-chrome-versus-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fluid: Freeing Web Apps from the Browser on OS X</title>
		<link>http://2718.us/blog/2009/06/05/fluid-freeing-web-apps-from-the-browser-on-os-x/</link>
		<comments>http://2718.us/blog/2009/06/05/fluid-freeing-web-apps-from-the-browser-on-os-x/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 04:27:45 +0000</pubDate>
		<dc:creator>2718.us</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[growl]]></category>
		<category><![CDATA[hahlo]]></category>
		<category><![CDATA[lala]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[os x]]></category>
		<category><![CDATA[rememberthemilk]]></category>
		<category><![CDATA[rtm]]></category>
		<category><![CDATA[single-site]]></category>
		<category><![CDATA[single-site browser]]></category>
		<category><![CDATA[ssb]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[web app]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://2718.us/blog/?p=150</guid>
		<description><![CDATA[Discovering Fluid has given me a lot to play with today.  Fluid itself is a program that you use to create other programs.  In Fluid, you enter the web site you want and give it a name and give it an icon and it creates an application.  That application is a Webkit (Safari-like) browser that [...]]]></description>
			<content:encoded><![CDATA[<p>Discovering <a href="http://fluidapp.com/">Fluid</a> has given me a lot to play with today.  Fluid itself is a program that you use to create other programs.  In Fluid, you enter the web site you want and give it a name and give it an icon and it creates an application.  That application is a Webkit (Safari-like) browser that is more or less dedicated to the site you selected (a &#8220;single-site browser&#8221; or SSB).  There are a variety of specific settings for different purposes, but that&#8217;s the general idea.</p>
<p>I stumbled into Fluid when I was looking for a way to keep my <a href="http://rememberthemilk.com/">RememberTheMilk</a> task list open on the side somewhere rather than always having a Firefox tab devoted to it (and trying to remember not to just close the Firefox window).  With Fluid, not only do I have an app dedicated to my RTM task list (and, since installing <a href="http://gears.google.com/">Gears</a> into Safari<sup>*</sup> makes it available to Fluid SSBs, it should have some ability to function offline, too), but I was able to create a separate menu-extra type app with the gadget interface to RTM so I can also access my task list quickly in the menu bar.</p>
<p>Having done that, it was a short skip over to having a proper <a href="http://calendar.google.com/">Google Calendar</a> app.  Nothing special there yet, save for the same hope that Gears will make it work offline.</p>
<p>More usefully, I found <a href="http://mytwitterverse.com/content/twitter-client-using-fluid-and-hahlo-growl">this post</a> about using Fluid and <a href="http://hahlo.com">Hahlo</a> along with some scripting to create a pretty good <a href="http://twitter.com/">Twitter</a> client that even uses <a href="http://growl.info/">Growl</a> notifications.  That post has all the links you need, including a direct link for the script and a link to a usable icon on Flickr.</p>
<p>Better still, it occurred to me tonight to apply Fluid to <a href="http://lala.com/">Lala</a>.  With Fluid&#8217;s option to hide the window when the user closes it, rather than actually closing it, I can &#8220;close&#8221; the window that has Lala and it keeps playing.  If I go back to my Lala SSB app, the window pops right back up.</p>
<p>Mind you, while all this web-app-turned-mac-app stuff is nice, the biggest benefit is probably the fact that if my web-browsing browser crashes, it doesn&#8217;t take my web apps with it and no one of my web apps can crash the others.  Unfortunately, Webkit seems to share one big cookie jar among all its instances, so separate Fluid-created instances won&#8217;t allow you to simultaneously log into the same site using different credentials if you couldn&#8217;t already do so (the login cookies will clobber each other and/or any such Safari cookies&#8230; though Firefox&#8217;s cookie jar is separate from Webkit&#8217;s&#8230;).</p>
<p><sup>*</sup>note that, interestingly, the Gears site displays an essentially blank page with no help or guidance whatsoever if you have javascript turned off in Safari (I mast have been testing something or other without javascript and forgotten to turn it back on).</p>
]]></content:encoded>
			<wfw:commentRss>http://2718.us/blog/2009/06/05/fluid-freeing-web-apps-from-the-browser-on-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A New Trick for When the OS X Screensaver Password Window Hangs</title>
		<link>http://2718.us/blog/2009/05/19/a-new-trick-for-when-the-os-x-screensaver-password-window-hangs/</link>
		<comments>http://2718.us/blog/2009/05/19/a-new-trick-for-when-the-os-x-screensaver-password-window-hangs/#comments</comments>
		<pubDate>Wed, 20 May 2009 03:38:35 +0000</pubDate>
		<dc:creator>2718.us</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[applescript]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[os x]]></category>
		<category><![CDATA[osascript]]></category>
		<category><![CDATA[password]]></category>
		<category><![CDATA[screensaver]]></category>
		<category><![CDATA[securityagent]]></category>

		<guid isPermaLink="false">http://2718.us/blog/?p=148</guid>
		<description><![CDATA[I have multiple computers, so I can easily ssh into my desktop when the screensaver password is hanging and won&#8217;t let me log in. The not-so-new trick has been to use AppleScript on the command line to not-so-harshly close some applications (run osascript, then tell application "program name" to quit, followed by ctrl-D (EOF). The [...]]]></description>
			<content:encoded><![CDATA[<p>I have multiple computers, so I can easily ssh into my desktop when the screensaver password is hanging and won&#8217;t let me log in.</p>
<p>The not-so-new trick has been to use AppleScript on the command line to not-so-harshly close some applications (run <code>osascript</code>, then <code>tell application "program name" to quit</code>, followed by ctrl-D (EOF).</p>
<p>The new trick is to sudo kill SecurityAgent, sudo run SecurityAgent, put the machine to sleep, then wake it back up (necessary to get SecurityAgent to put up a new password window).</p>
]]></content:encoded>
			<wfw:commentRss>http://2718.us/blog/2009/05/19/a-new-trick-for-when-the-os-x-screensaver-password-window-hangs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>asLJ: a Mac OS X 10.5+ LiveJournal Client</title>
		<link>http://2718.us/blog/2009/02/09/aslj/</link>
		<comments>http://2718.us/blog/2009/02/09/aslj/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 08:24:18 +0000</pubDate>
		<dc:creator>2718.us</dc:creator>
				<category><![CDATA[asLJ]]></category>
		<category><![CDATA[applescript]]></category>
		<category><![CDATA[applescript studio]]></category>
		<category><![CDATA[client]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[keychain]]></category>
		<category><![CDATA[keychain.framework]]></category>
		<category><![CDATA[leopard]]></category>
		<category><![CDATA[livejournal]]></category>
		<category><![CDATA[livejournal client]]></category>
		<category><![CDATA[lj]]></category>
		<category><![CDATA[lj client]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[macintosh]]></category>
		<category><![CDATA[objective c]]></category>
		<category><![CDATA[os x]]></category>
		<category><![CDATA[sparkle]]></category>
		<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://2718.us/blog/?p=121</guid>
		<description><![CDATA[asLJ is a new client for Macs running Leopard that easily handles multiple accounts on LiveJournal and other LJ-based sites and facilitates cross-posting across accounts. Release notes and download link are in aslj_client. The community for users is aslj_users. (As it is very LJ-centric, most of the information about it will be over at LJ, [...]]]></description>
			<content:encoded><![CDATA[<p>asLJ is a new client for Macs running Leopard that easily handles multiple accounts on LiveJournal and other LJ-based sites and facilitates cross-posting across accounts. Release notes and download link are in <span style="white-space: nowrap;"><a href="http://aslj-client.livejournal.com/profile"><img style="border: 0pt none; vertical-align: bottom; padding-right: 1px;" src="http://p-stat.livejournal.com/img/userinfo.gif" alt="[info]" width="17" height="17" /></a><a href="http://aslj-client.livejournal.com/"><strong>aslj_client</strong></a></span>.  The community for users is <span style="white-space: nowrap;"><a href="http://community.livejournal.com/aslj_users/profile"><img style="border: 0pt none; vertical-align: bottom; padding-right: 1px;" src="http://p-stat.livejournal.com/img/community.gif" alt="[info]" width="16" height="16" /></a><a href="http://community.livejournal.com/aslj_users/"><strong>aslj_users</strong></a></span>.</p>
<p>(As it is very LJ-centric, most of the information about it will be over at LJ, in the two places linked above, but there is a page for it <a href="http://2718.us/asLJ/">here</a>, as well.)</p>
]]></content:encoded>
			<wfw:commentRss>http://2718.us/blog/2009/02/09/aslj/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

