<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><!-- generator="wordpress/2.2.1" --><rss 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:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Fat Cat Software</title>
	<link>http://www.fatcatsoftware.com/blog</link>
	<description>Brian Webster's blog, focusing on his Fat Cat Software products and OS X development</description>
	<pubDate>Wed, 09 Jul 2008 13:21:08 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.1</generator>
	<language>en</language>
			<geo:lat>42.449454</geo:lat><geo:long>-76.496854</geo:long><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/fatcatsoft" type="application/rss+xml" /><item>
		<title>PowerTunes 1.0 is out!</title>
		<link>http://feeds.feedburner.com/~r/fatcatsoft/~3/330773060/powertunes-10-is-out</link>
		<comments>http://www.fatcatsoftware.com/blog/2008/powertunes-10-is-out#comments</comments>
		<pubDate>Wed, 09 Jul 2008 13:21:07 +0000</pubDate>
		<dc:creator>Brian Webster</dc:creator>
		
		<category><![CDATA[PowerTunes]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[Updates]]></category>

		<guid isPermaLink="false">http://www.fatcatsoftware.com/blog/2008/powertunes-10-is-out</guid>
		<description><![CDATA[I&#8217;m proud to announce that today I&#8217;m releasing a brand new application, PowerTunes! PowerTunes is to iTunes what iPhoto Library Manager is to iPhoto - it will let you:

Create multiple iTunes libraries and switch between them easily
Keep track of a separate music folder for each one of your libraries
Let you copy playlists and tracks between [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m proud to announce that today I&#8217;m releasing a brand new application, <a href="http://www.fatcatsoftware.com/powertunes">PowerTunes</a>! PowerTunes is to iTunes what iPhoto Library Manager is to iPhoto - it will let you:</p>
<ul>
<li>Create multiple iTunes libraries and switch between them easily</li>
<li>Keep track of a separate music folder for each one of your libraries</li>
<li>Let you copy playlists and tracks between libraries without losing iTunes data such as play counts, ratings, etc.</li>
<li>Merge multiple iTunes libraries together into one</li>
<li>Easily share libraries and music folders among multiple users on your machine</li>
<li>Find dead tracks in your library whose files have gone missing and hook them back up or delete them</li>
<li>Clean up your music folder, finding orphaned music and video files that aren&#8217;t in your library</li>
</ul>
<p>It&#8217;s very satisfying to finally ship, especially after having worked on PowerTunes in one form or another for about a year and a half now.  It&#8217;s been my number one request from existing users of <a href="http://www.fatcatsoftware.com/iplm">iPhoto Library Manager</a> and it&#8217;s been something I&#8217;ve wanted to do for quite a while.</p>
<p>As is always the case, I had way more feature ideas than I could possibly hope to implement in a 1.0 release (otherwise it would never ship!).  In deciding the feature set for the program, I tried to concentrate on things relating to file management.  There are plenty of things I could have done involving messing around with editing tags and such, which is a very common need, but is also already covered by a lot of other apps out there.  My hope is that PowerTunes&#8217; feature set is unique enough to be useful to many iTunes users, even if they already have one or more other iTunes helper programs.</p>
<p>The development process was, as always, enlightening, and I definitely plan to write up a couple blog posts exploring some aspects of developing this program.  The most interesting thing overall is the program&#8217;s similarity in function to iPhoto Library Manager.  This allowed me to reuse a bunch of code from iPLM, but it also gave me the opportunity to look back at the way I did some things in iPLM and reimplement them in new, better ways.  The result of that is now giving me an overwhelming urge to tear up iPLM&#8217;s internals and redo it to match the way things work in PowerTunes. <img src='http://www.fatcatsoftware.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So, go ahead and <a href="http://www.fatcatsoftware.com/powertunes">give PowerTunes a try</a>!  The program has a 30 day trial period during which all features of the application are fully accessible.  After that, you&#8217;ll still be able to do the most basic things like open up your existing libraries, but most of the advanced functionality will be turned off until you get a license for the software.</p>
<p>And in case you&#8217;re wondering why I chose the name &#8220;PowerTunes&#8221; instead of, say, &#8220;iTunes Library Manager&#8221;, the answer is a) there is already a product with that name, and b) I learned my lesson with iPhoto Library Manager, whose name is really way too long.  I mean come on - 9 syllables? What was I thinking? <img src='http://www.fatcatsoftware.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<img src="http://feeds.feedburner.com/~r/fatcatsoft/~4/330773060" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.fatcatsoftware.com/blog/2008/powertunes-10-is-out/feed</wfw:commentRss>
		<feedburner:origLink>http://www.fatcatsoftware.com/blog/2008/powertunes-10-is-out</feedburner:origLink></item>
		<item>
		<title>Fixing Applescript</title>
		<link>http://feeds.feedburner.com/~r/fatcatsoft/~3/303947824/fixing-applescript</link>
		<comments>http://www.fatcatsoftware.com/blog/2008/fixing-applescript#comments</comments>
		<pubDate>Tue, 03 Jun 2008 19:25:02 +0000</pubDate>
		<dc:creator>Brian Webster</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.fatcatsoftware.com/blog/2008/fixing-applescript</guid>
		<description><![CDATA[After reading Daniel Jalkut&#8217;s post about replacing/supplementing Applescript on the Mac with Javascript (or perhaps another scripting language such a Ruby or Python), it got me to thinking about what exactly it is about Applescript that tends to trip people up.  Would it be possible to figure out what the problem areas are, and [...]]]></description>
			<content:encoded><![CDATA[<p>After reading <a href="http://www.red-sweater.com/blog/502/apples-script">Daniel Jalkut&#8217;s post</a> about replacing/supplementing Applescript on the Mac with Javascript (or perhaps another scripting language such a Ruby or Python), it got me to thinking about what exactly it is about Applescript that tends to trip people up.  Would it be possible to figure out what the problem areas are, and just fix Applescript in those areas?  There would be problems to this approach, the most prominent one being backwards compatibility.  Some of the problems are fundamental enough that, if you fixed them, it would cause existing scripts to break.  I believe Apple actually had plans a few years back of making a &#8220;new&#8221; Applescript that mostly acted like current Applescript, but was in fact a separate language and made an explicit break with previous versions of the language.  Kind of like Carbon, where 80% of the stuff would work fine, but that problematic 20% would need rewriting under the new system.</p>
<p>So, what exactly are the problems that vex Applescripters so?  There are quite a few, but here are some of the ones I can think of.</p>
<p>
<h2>Lack of basic language features</h2>
<p><br/>Many modern scripting languages come with a fairly hefty set of built in data types and functions (or classes and methods for OO languages) that support a wide array of built-in functionality.  Applescript has its own set of functionality, but for many standard tasks, it frequently either lacks the ability to do so at all or supports things but in a very hard to use or unintuitive way.  A few examples include:</p>
<ul>
<li>Sorting an array of strings: Javascript has Array.sort(), Applescript has nothing.</li>
<li>String manipulation, such as splitting strings apart, easily extracting substrings, etc.  Some of these things can be done in Applescript, but are much much harder than they should be. (How many people know about &#8220;Applescript&#8217;s text item delimiters&#8221;? OK, both of you can put down your hands now)</li>
<li>Mutable arrays/lists.  Applescript lists support some operations, such as concatenating two together into one, fairly easily, but good luck if you want to do far out things like inserting a new object into the middle of a list, or delete an item from a list.  Most of these things involve twisting yourself in a knot, splicing lists apart and back together again.</li>
<li>Mutable dictionaries/records.  See above.</li>
</ul>
<p>This is just a small sample, I&#8217;m sure there are many other things that are pretty standard in other languages that are absent from Applescript, or hidden away in the Standard Additions scripting dictionary somewhere.</p>
<p>
<h2>File references are the devil</h2>
<p><br/><br />
There are at least 5 different ways I can think of to refer to a file using Applescript (alias, POSIX file (a.k.a. file URL), Finder style object specifier, POSIX path, Carbon path).  Different applications use different data types in different places, and will often barf back errors if you don&#8217;t use just the right kind of file reference.  Figuring out how to translate from one kind to another is often maddening.  Here&#8217;s an example from one of my own scripts, which uses three of the five types in a single line:</p>
<p><code><br />
	<strong>set</strong> helpFolderPath <strong>to</strong> POSIX path <strong>of</strong> ((folder &#8220;Help&#8221; <strong>of</strong> folder &#8220;en.lproj&#8221; <strong>of</strong> ptFolderAlias) <strong>as</strong> alias)<br />
</code></p>
<p>Files really need to be treated as first class citizens, with support built in to the language, and without needing to rely on the Finder for all file system access.  Or wait, am I supposed to rely on System Events now instead?  Or maybe a &#8220;do shell script&#8221; call to <code>ls</code> on the command line? Oh, the pain.
</p>
<p>
<h2>Scripting dictionaries</h2>
<p><br/><br />
This is one of the biggest hurdles that a lot of beginning scripters have with Applescript, is understanding how scripting dictionaries work.  Tools like Script Debugger are extremely helpful when it comes to exploring an application&#8217;s dictionary (I hardly look at the dictionary anymore these days, and just go right to the explorer pane and start drilling down), but while $199 is a fair price for a developer, most people aren&#8217;t going to want to drop that sort of change just to learn Applescript.  Script Editor did get a pretty good upgrade in Tiger, but I think it needs more work to help beginning scripters understand how to explore and use scripting dictionaries.
</p>
<p>
<h2>The death of recordability</h2>
<p>Another invaluable tool for beginning scripters which is all but dead is application recordability.  Back in the OS 9 days, you could hit the &#8220;Record&#8221; button in Script Editor and go perform operations in other applications, and the equivalent script commands would magically appear in Script Editor.  This was a great way to quickly learn the commands to use to do certain things you already knew how to do using the GUI of the application.  Since OS X, recording has basically gone away.  The only applications I know of that are still recordable are the Finder and <a href="http://www.barebones.com">BBEdit/TextWrangler</a>.  Cocoa has zero support for recordability.  Theoretically, you can use the Carbon APIs to do this still.  I actually tried once, and gave up after a couple days of banging my head against the wall.  I&#8217;d love to see recordability come back, with a whole new approach if necessary, with full Cocoa support.
</p>
<p>Applescript does have a lot going for it, but is hamstrung by a lot of these types of issues and prevented from reaching its full potential.  Replacing it with another language is one way to go, but fixing Applescript also has a lot of potential.  This above list is just a sample of some of Applescript&#8217;s shortcomings (if you have your own pet peeves, feel free to express them in the comments).  The idea of redesigning Applescript from the ground up, with nearly 20 years of experience to build on, is very appealing, but who knows if Apple will ever have resources to devote to a project like that.</p>
<img src="http://feeds.feedburner.com/~r/fatcatsoft/~4/303947824" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.fatcatsoftware.com/blog/2008/fixing-applescript/feed</wfw:commentRss>
		<feedburner:origLink>http://www.fatcatsoftware.com/blog/2008/fixing-applescript</feedburner:origLink></item>
		<item>
		<title>Disappearing iPhoto libraries on external drives</title>
		<link>http://feeds.feedburner.com/~r/fatcatsoft/~3/291697662/disappearing-iphoto-libraries-on-external-drives</link>
		<comments>http://www.fatcatsoftware.com/blog/2008/disappearing-iphoto-libraries-on-external-drives#comments</comments>
		<pubDate>Fri, 16 May 2008 15:16:10 +0000</pubDate>
		<dc:creator>Brian Webster</dc:creator>
		
		<category><![CDATA[iPhoto]]></category>

		<category><![CDATA[Tips &amp; Tricks]]></category>

		<category><![CDATA[iPhoto Library Manager]]></category>

		<guid isPermaLink="false">http://www.fatcatsoftware.com/blog/2008/disappearing-iphoto-libraries-on-external-drives</guid>
		<description><![CDATA[I just came across this article on TidBITS explaining how to deal with stray &#8220;doppleganger&#8221; folders that get created in the /Volumes directory, where external hard drives and network drives are mounted by Mac OS X.  I&#8217;ve seen this particular issue come up quite a number of times with people working with iPhoto, so [...]]]></description>
			<content:encoded><![CDATA[<p>I just came across <a href="http://db.tidbits.com/article/9620">this article on TidBITS</a> explaining how to deal with stray &#8220;doppleganger&#8221; folders that get created in the /Volumes directory, where external hard drives and network drives are mounted by Mac OS X.  I&#8217;ve seen this particular issue come up quite a number of times with people working with iPhoto, so I&#8217;m glad to see someone else writing on the topic.  I encourage everyone to go read the article, since you never know when this will crop up on your machine, and it&#8217;s good to have this floating around in your head as a possible cause.</p>
<p>The way this typically affects people using iPhoto is when you&#8217;re trying to open a library that you store on an external hard drive.  One day, for no apparent reason, you open up iPhoto and are greeted with a totally empty library.  Where did all my photos go!? Aaaaagh!</p>
<p>You&#8217;ll be glad to know that your photos aren&#8217;t actually gone, they&#8217;re just in a slightly different place, so iPhoto can&#8217;t find them.  iPhoto stores its library location by a plain path, so it will be pointing to the &#8220;doppleganger&#8221; folder, instead of following the library to its new path where the external drive is actually located.</p>
<p>iPhoto Library Manager itself uses aliases to track library locations, so when this happens, it will usually figure out to update itself to point to libraries&#8217; new locations.  If it doesn&#8217;t automatically update, all you have to do then is to re-add any libraries that are pointing to the wrong place to iPLM&#8217;s library list, either by using the &#8220;Add Library&#8221; button, or by just dragging each library into the list.  You can then remove the old, stale references from the library list, and you should be all set.  If you&#8217;re just using iPhoto&#8217;s option-key-on-startup trick to switch libraries, you can just do that and go find the real library on the external drive to get iPhoto pointed back to the correct location.</p>
<img src="http://feeds.feedburner.com/~r/fatcatsoft/~4/291697662" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.fatcatsoftware.com/blog/2008/disappearing-iphoto-libraries-on-external-drives/feed</wfw:commentRss>
		<feedburner:origLink>http://www.fatcatsoftware.com/blog/2008/disappearing-iphoto-libraries-on-external-drives</feedburner:origLink></item>
		<item>
		<title>Announcing PowerTunes private beta</title>
		<link>http://feeds.feedburner.com/~r/fatcatsoft/~3/276275638/announcing-powertunes-private-beta</link>
		<comments>http://www.fatcatsoftware.com/blog/2008/announcing-powertunes-private-beta#comments</comments>
		<pubDate>Wed, 23 Apr 2008 16:38:22 +0000</pubDate>
		<dc:creator>Brian Webster</dc:creator>
		
		<category><![CDATA[PowerTunes]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[Updates]]></category>

		<guid isPermaLink="false">http://www.fatcatsoftware.com/blog/2008/announcing-powertunes-private-beta</guid>
		<description><![CDATA[You may have noticed things have been a bit quiet around here lately.  The biggest reason for that is that I&#8217;ve been working on a brand new product for the last several months, called PowerTunes. The number one request I get from people who use iPhoto Library Manager is to have a similar program [...]]]></description>
			<content:encoded><![CDATA[<p>You may have noticed things have been a bit quiet around here lately.  The biggest reason for that is that I&#8217;ve been working on a brand new product for the last several months, called PowerTunes. The number one request I get from people who use <a href="http://www.fatcatsoftware.com/iplm">iPhoto Library Manager</a> is to have a similar program that lets you have multiple iTunes libraries.  I&#8217;ve wanted to do this for a while, and finally started development on PowerTunes last year, in parallel with continuing work on iPhoto Library Manager and PlistEdit Pro.  Today, it&#8217;s getting close to being ready to release, but I still need to do some further testing on it, so I&#8217;ve decided to run a (hopefully short) private beta to help work out any remaining kinks.</p>
<p>The basic idea behind PowerTunes is quite similar to iPhoto Library Manager: instead of just having one monolithic iTunes library where you dump all your music and video, you can instead split your stuff up among multiple libraries and switch between them.  This can be useful for simple organizational purposes, and can allow you to do things such as allow multiple people to keep separate iTunes collections (and sync them with their respective iPods) without having to go through the hassle of setting up multiple user accounts to do so.</p>
<p>Like iPhoto Library Manager, not only does PowerTunes let you set up multiple libraries, but it also offers additional features that let you copy music and playlists between libraries, organize multiple music folders, clean out unwanted files from your music folder, fix dead tracks in your library, and much more.</p>
<p>iTunes 7 actually added for the first time the ability to place your iTunes library file in a different location from the default location by holding down the option key when you launch iTunes, just the same as you can in iPhoto (previously, the only way you could shift your iTunes library location was by using aliases and such).  PowerTunes actually utilizes this mechanism itself, and thus requires iTunes 7 or later.  Unlike iTunes, PowerTunes also ties each library to a particular music folder, so if you have music stored in separate places, it will switch the music folder location along with the library location when you change back and forth.</p>
<p>The main reason for want to have some other testers before a final release is that there are many possible ways one could go about setting up their iTunes libraries and music folders, including putting stuff on external hard drives, accessing stuff over file sharing or an Airport Disk, and so on.  I&#8217;ve tested as much of this as I can, but there will always be setups I either can&#8217;t test or haven&#8217;t even thought of.</p>
<p>So, if you&#8217;re interested in helping to test PowerTunes, I&#8217;ve <a href="http://www.fatcatsoftware.com/powertunes/beta.html">set up a form</a> that you can fill out to sign up for the beta.  I don&#8217;t know how many testers I&#8217;ll need or how long the testing period will take at this point.  If everything works fine, it could be as brief as a couple weeks, or it could take longer if more things need fixing.  So, depending on how many testers I need, not all those who signup will necessarily become testers.</p>
<p>Like I said before, I&#8217;ve done a lot of testing so far, but the possibility of bugs occurring still remains, so all testers will be encouraged to back up their iTunes library and music, just in case. Those who do help in testing will get a free PowerTunes license and the thrill that comes from running beta software. <img src='http://www.fatcatsoftware.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>So, if you&#8217;re interested, <a href="http://www.fatcatsoftware.com/powertunes/beta.html">head on over to the signup form</a> and sign up to be a beta tester.  Oh, and I almost forgot, a couple obligatory screenshots. <img src='http://www.fatcatsoftware.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<div style="text-align:center;"><a href="http://www.fatcatsoftware.com/blog/wp-content/uploads/2008/04/main-window.png"><br />
<img src="http://www.fatcatsoftware.com/blog/wp-content/uploads/2008/04/main-window.thumbnail.png" alt="Picture 1.png" border="0" /></a></div>
<div style="text-align:center;"><a href="http://www.fatcatsoftware.com/blog/wp-content/uploads/2008/04/sharing.png"><img src="http://www.fatcatsoftware.com/blog/wp-content/uploads/2008/04/sharing.thumbnail.png" alt="sharing.png" border="0"/></a></div>
<div style="text-align:center;"><a href="http://www.fatcatsoftware.com/blog/wp-content/uploads/2008/04/dead-tracks.png"><img src="http://www.fatcatsoftware.com/blog/wp-content/uploads/2008/04/dead-tracks.thumbnail.png" alt="sharing.png" border="0"/></a></div>
<img src="http://feeds.feedburner.com/~r/fatcatsoft/~4/276275638" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.fatcatsoftware.com/blog/2008/announcing-powertunes-private-beta/feed</wfw:commentRss>
		<feedburner:origLink>http://www.fatcatsoftware.com/blog/2008/announcing-powertunes-private-beta</feedburner:origLink></item>
		<item>
		<title>MacSanta is coming to town</title>
		<link>http://feeds.feedburner.com/~r/fatcatsoft/~3/200764886/macsanta-is-coming-to-town</link>
		<comments>http://www.fatcatsoftware.com/blog/2007/macsanta-is-coming-to-town#comments</comments>
		<pubDate>Sat, 15 Dec 2007 13:14:04 +0000</pubDate>
		<dc:creator>Brian Webster</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[PlistEdit Pro]]></category>

		<category><![CDATA[iPhoto Library Manager]]></category>

		<guid isPermaLink="false">http://www.fatcatsoftware.com/blog/2007/macsanta-is-coming-to-town</guid>
		<description><![CDATA[I&#8217;m happy to be participating this year in the MacSanta promotion!  Generously set up by Paul Kafasis of Rogue Amoeba, MacSanta offers deals from now until Christmas on products from five new Mac software companies every day.  iPhoto Library Manager and PlistEdit Pro are both being featured today (December 15th), and you can [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m happy to be participating this year in the <a href="http://www.macsantadeals.com">MacSanta</a> promotion!  Generously set up by Paul Kafasis of <a href="http://www.rogueamoeba.com">Rogue Amoeba</a>, MacSanta offers deals from now until Christmas on products from five new Mac software companies every day.  <a href="http://www.fatcatsoftware.com/iplm">iPhoto Library Manager</a> and <a href="http://www.fatcatsoftware.com/plisteditpro">PlistEdit Pro</a> are both being featured today (December 15th), and you can get 20% off by using the coupon code MACSANTA07 when purchasing.</p>
<p>Also be sure to check out the <a href="http://www.macsantadeals.com/list.php">Extended Deals page</a>, which lists all the products that have been featured so far in the month, and you can still get 10% off any of those products by using the coupon code MACSANTA07TEN anytime until the end of December (this also applies to iPhoto Library Manager and PlistEdit Pro after today).  There is also an <a href="http://www.macsantadeals.com/rss.php">RSS feed</a> available, so you can continue to keep up on new deals that appear between now and Christmas.</p>
<img src="http://feeds.feedburner.com/~r/fatcatsoft/~4/200764886" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.fatcatsoftware.com/blog/2007/macsanta-is-coming-to-town/feed</wfw:commentRss>
		<feedburner:origLink>http://www.fatcatsoftware.com/blog/2007/macsanta-is-coming-to-town</feedburner:origLink></item>
		<item>
		<title>Optimization for Dummies</title>
		<link>http://feeds.feedburner.com/~r/fatcatsoft/~3/189561403/optimization-for-dummies</link>
		<comments>http://www.fatcatsoftware.com/blog/2007/optimization-for-dummies#comments</comments>
		<pubDate>Fri, 23 Nov 2007 23:26:57 +0000</pubDate>
		<dc:creator>Brian Webster</dc:creator>
		
		<category><![CDATA[Cocoa]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.fatcatsoftware.com/blog/2007/optimization-for-dummies</guid>
		<description><![CDATA[A somewhat inconspicuous looking article on optimizing third party code has stirred up quite a conversation/flame war among many in the Mac developer community.  The comment thread on the article is already quite long, and it seems to me that the people with opposing viewpoints are just talking right past each other at this [...]]]></description>
			<content:encoded><![CDATA[<p>A somewhat inconspicuous looking <a href="http://lipidity.com/apple/ctgradient-code-bloat/">article on optimizing third party code</a> has stirred up quite a conversation/flame war among many in the Mac developer community.  The comment thread on the article is already quite long, and it seems to me that the people with opposing viewpoints are just talking right past each other at this point, so I thought I&#8217;d add in my own perspective here.</p>
<p>The jist of the article is that the author, Ankur, needed to draw some gradients in one of his applications, downloaded the source code for <a href="http://svn.oofn.net/#CTGradient">CTGradient</a>, an open source library that provides a class to draw various types of gradients, and decided that it had way more functionality than he needed in his own program.  So, he went through the code and basically removed everything he didn&#8217;t need for this single application.  That&#8217;s all fine and good, and the article is actually an interesting look at performing various refactorings and dead code removal.</p>
<p>The problem arises in that he implies that if a developer decides to use some open source code and <i>doesn&#8217;t</i> go through and strip out every ounce of functionality that they&#8217;re not immediately using, that means that they&#8217;re encouraging &#8220;code bloat&#8221; and that their code is not &#8220;optimized&#8221;.  Several commenters asked what kind of performance/memory gain he actually saw, and the only numbers he provided were from the &#8220;Real Memory&#8221; column in Activity Monitor, which is a pretty crude measure.  The conversation went downhill from there.</p>
<p>I think one main point of miscommunication here is over the terminology the original author uses for some of the things he&#8217;s talking about.  When you talk about &#8220;optimizing&#8221; code, I, and most other developers I know of, think of making the code run faster.  The author reinforces this by stating &#8220;&#8230;you can optimize this thing till it runs like a Ferrari&#8221;.  Certainly sounds like he&#8217;s talking about making the code faster, but the vast majority of what he&#8217;s doing is simply stripping out code that he&#8217;s not going to be using.  This has pretty little effect in and of itself - it saves a few KB in disk space, and if the code truly is unused, it probably won&#8217;t even get paged into memory in the first place.  There are a few places where the code probably runs faster, but the gains look pretty minimal in the big picture.  However, arguing the nitty gritty details about his particular optimizations is missing the bigger point&#8230;</p>
<p>Engineering is all about tradeoffs, and in computer software, this typically means choosing between things such as memory usage, disk usage, CPU usage, and so on.  Every one of these, however, inevitably comes up against the restraint of development time.  You can spend days, weeks, or months optimizing your code in various ways, but it&#8217;s all for naught if you don&#8217;t eventually ship your application.  This means that you can&#8217;t do everything, and have to pick and choose what areas of your code to work on, whether to add new features or shore up existing ones, and how much time to spend optimizing performance and memory usage.</p>
<p>What is conspicuously missing from the article is any sort of evidence that CTGradient was actually causing any sort of performance or memory problem in his application in the first place.  Now, may more have gone on that he didn&#8217;t include in his write-up, but it sounds like he simply looked at the code, decided that it was obviously too big and bloated, and set to work spending quite a bit of time hacking it down to the bare minimum he needed.</p>
<p>Finding and fixing performance and memory problems in real applications, however, is rarely so simple.  It&#8217;s rare that you can glance at a piece of code and immediately deduce that it&#8217;s going to be problematic for your application, causing slowdowns or whatnot.  Most such bottlenecks are discovered as a result of rigorous testing, using tools provided by Apple such as Sampler, Shark, and Instruments (among others) to dig into the details of what your app is actually doing and where it&#8217;s spending its time.  Upon discovering such a problem, you can then go in and spend your precious time fixing what most needs to be fixed.  It&#8217;s not that the modifications he makes don&#8217;t actually reduce code size and memory footprint (they do) or increase performance (still not really sure about this without empirical data), but with testing first to find what needs fixing, the time spent doing all this could very well have been better spent fixing something that actually needs fixing.</p>
<p>I actually use CTGradient in a couple of my projects, and I use the code basically untouched.  This is not because I&#8217;m &#8220;lazy&#8221; and would rather count my customers&#8217; money while cackling evilly than spend the time to strip out everything I don&#8217;t use, but rather because I have plenty of other things to spend time on, optimizing my app in ways that make a difference, and adding features that people want and need.  None of my tests of my drawing code have ever shown any performance problems arising from using CTGradient as-is, so my motto is, if it ain&#8217;t broke, don&#8217;t fix it.  The critical flaw in Ankur&#8217;s argument in his post is that he never showed any evidence that anything was broken in the first place.</p>
<img src="http://feeds.feedburner.com/~r/fatcatsoft/~4/189561403" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.fatcatsoftware.com/blog/2007/optimization-for-dummies/feed</wfw:commentRss>
		<feedburner:origLink>http://www.fatcatsoftware.com/blog/2007/optimization-for-dummies</feedburner:origLink></item>
		<item>
		<title>Miscellaneous Leopard development gotchas</title>
		<link>http://feeds.feedburner.com/~r/fatcatsoft/~3/178539591/miscellaneous-leopard-development-gotchas</link>
		<comments>http://www.fatcatsoftware.com/blog/2007/miscellaneous-leopard-development-gotchas#comments</comments>
		<pubDate>Fri, 02 Nov 2007 03:07:25 +0000</pubDate>
		<dc:creator>Brian Webster</dc:creator>
		
		<category><![CDATA[Cocoa]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[Tips &amp; Tricks]]></category>

		<guid isPermaLink="false">http://www.fatcatsoftware.com/blog/2007/miscellaneous-leopard-development-gotchas</guid>
		<description><![CDATA[I&#8217;ve been using Xcode 3.0 under Leopard to do my development since Leopard came out last week, and thought I&#8217;d share a few changes that tripped me up.

I have a build script that I use to assemble the disk image for a new release of iPhoto Library Manager or PlistEdit Pro.  The script creates [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using Xcode 3.0 under Leopard to do my development since Leopard came out last week, and thought I&#8217;d share a few changes that tripped me up.</p>
<ul>
<li>I have a build script that I use to assemble the disk image for a new release of iPhoto Library Manager or PlistEdit Pro.  The script creates the disk image using the <code>hdiutil</code> command line tool.  Everything went fine when building under Leopard except that, if you tried to mount the disk image on 10.3.9, it would refuse to mount.  It turns out that Leopard&#8217;s <code>hdiutil</code>, when running on an Intel machine, now defaults to creating an image with a <a href="http://en.wikipedia.org/wiki/GUID_Partition_Table">GUID partition table</a> rather than an <a href="http://en.wikipedia.org/wiki/Apple_Partition_Map">Apple partition map</a> like it used to.  10.4 and 10.5 can handle this fine, but 10.3.9 can&#8217;t and thus refuses to mount the image.  The solution is simple: just pass <code>-layout SPUD</code> as an additional argument to <code>hdiutil</code> to force it to create an Apple partition mapped image.</li>
<li>One of the first thing many Cocoa programmers do when starting up a new project is to add a breakpoint on <code>-[NSException raise]</code>.  This makes it much easier to find out when exceptions are getting raised in your code and debug them quickly.  I had this setup already, but when running under Leopard, I was getting exceptions thrown, but my breakpoint wasn&#8217;t getting hit.  Turns out this has changed (at least for the cases I was seeing) under Leopard, so to experience the new exception debugging hotness, try a breakpoint on <code>objc_exception_throw</code>.</li>
<li>Similarly, I was trying to break on NSLog to find out where some error messages were being printed out that I couldn&#8217;t track down.  NSLog wasn&#8217;t getting hit, and it turns out that the printout was coming from CFLog instead.</li>
</ul>
<p>Well, that&#8217;s what I&#8217;ve got for now, I may add more to the list later as I come across them.  Hopefully this will help somebody out there (or maybe myself in a couple months when I forget and have to relearn this stuff over again).</p>
<img src="http://feeds.feedburner.com/~r/fatcatsoft/~4/178539591" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.fatcatsoftware.com/blog/2007/miscellaneous-leopard-development-gotchas/feed</wfw:commentRss>
		<feedburner:origLink>http://www.fatcatsoftware.com/blog/2007/miscellaneous-leopard-development-gotchas</feedburner:origLink></item>
		<item>
		<title>Running FogBugz on Leopard</title>
		<link>http://feeds.feedburner.com/~r/fatcatsoft/~3/177414148/running-fogbugz-on-leopard</link>
		<comments>http://www.fatcatsoftware.com/blog/2007/running-fogbugz-on-leopard#comments</comments>
		<pubDate>Tue, 30 Oct 2007 23:20:10 +0000</pubDate>
		<dc:creator>Brian Webster</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Tips &amp; Tricks]]></category>

		<guid isPermaLink="false">http://www.fatcatsoftware.com/blog/2007/running-fogbugz-on-leopard</guid>
		<description><![CDATA[I use FogBugz as my main bug tracking and customer support system.  It&#8217;s a neat application that runs on PHP and a web interface and allows me to both keep track of bugs/features in my development, as well as handle all tech support e-mail.  It&#8217;s designed with a multi-user environment in mind, but [...]]]></description>
			<content:encoded><![CDATA[<p>I use <a href="http://www.fogbugz.com">FogBugz</a> as my main bug tracking and customer support system.  It&#8217;s a neat application that runs on PHP and a web interface and allows me to both keep track of bugs/features in my development, as well as handle all tech support e-mail.  It&#8217;s designed with a multi-user environment in mind, but works quite well for a one-man shop such as myself.  The web interface is not as good as a true desktop interface could be, but it&#8217;s perfectly sufficient, and I&#8217;ve become quite dependent on FogBugz as part of my daily workflow.</p>
<p>Dependent enough that it was a rather rude (but not wholly unexpected) discovery to find that upgrading to Leopard pretty soundly hosed my FogBugz installation.  Not that it went and deleted files or data or anything, but the setup was quite far from working normally.</p>
<p>The primary cause for this was that Leopard now ships with Apache 2.2, whereas Tiger came with Apache 1.3.  All the various differences are well documented out there on <a href="http://discussions.apple.com/thread.jspa?threadID=1187457&#038;tstart=15">the intertubes</a>, but a lot of things, such as where configuration files are stored, changed between the two versions.  For example, instead of httpd.conf being in /etc/httpd, it now resides in /etc/apache2.</p>
<p>I got that part figured out pretty quickly, but then when I went to start up the web server, I would get a message printed in the system console reading:</p>
<blockquote><p>Oct 30 12:07:57 bw-mbp org.apache.httpd[11317]: httpd: Syntax error on line 484 of /private/etc/apache2/httpd.conf: Syntax error on line 8 of /private/etc/apache2/other/+entropy-php.conf: Cannot load /usr/local/php5/libphp5.so into server: dlopen(/usr/local/php5/libphp5.so, 10): no suitable image found.  Did find:\n\t/usr/local/php5/libphp5.so: no matching architecture in universal wrapper</p></blockquote>
<p>Hmmm, well, I do have a custom build of PHP5 (in /usr/local/php5, with additional extensions needed for FogBugz) and it seems to be finding that OK, but it&#8217;s complaining about architecture something-or-other.  I&#8217;m still running on Intel, aren&#8217;t I?</p>
<blockquote><p><code>[bw-mbp:~] bwebster% file /usr/local/php5/libphp5.so<br />
/usr/local/php5/libphp5.so: Mach-O universal binary with 2 architectures<br />
/usr/local/php5/libphp5.so (for architecture ppc):      Mach-O bundle ppc<br />
/usr/local/php5/libphp5.so (for architecture i386):     Mach-O bundle i386</code></p></blockquote>
<p>Yeah, that&#8217;s got an Intel build in there, that&#8217;s OK.  What the heck is Apache&#8217;s problem?</p>
<blockquote><p><code>[bw-mbp:~] bwebster% file /usr/sbin/httpd<br />
/usr/sbin/httpd: Mach-O universal binary with 4 architectures<br />
/usr/sbin/httpd (for architecture ppc7400): Mach-O executable ppc<br />
/usr/sbin/httpd (for architecture ppc64):   Mach-O 64-bit executable ppc64<br />
/usr/sbin/httpd (for architecture i386):    Mach-O executable i386<br />
/usr/sbin/httpd (for architecture x86_64):  Mach-O 64-bit executable x86_64</code></p></blockquote>
<p>Oooh, I see 64-bit stuff in there, don&#8217;t I?  I suppose that could be a problem if it&#8217;s trying to load a 32-bit library.  Well, the packaged PHP that I installed from <a href="http://www.entropy.ch/software/macosx/php/">entropy.ch</a> hasn&#8217;t been updated yet for Leopard, so I guess I&#8217;ll have to download and compile PHP myself so I can get in on the 64-bit goodness.
</p>
<p>*insert footage of Brian downloading a bunch of stuff, typing <code>./configure</code> and <code>make</code>, and seeing copious error messages fly across his terminal window*</p>
<p>Hmmm, OK, I think someone smarter than me is going to need to figure this stuff out.  But I don&#8217;t have time for that, I want to get my FogBugz up and running so I don&#8217;t have to switch back to Tiger just to answer customer e-mail.  If I could just force Apache to run as 32-bit instead of 64-bit, it should be able to load this PHP module just fine.  Now let&#8217;s see, what would Dr. 90210 do&#8230;?</p>
<blockquote><p><code>[bw-mbp:~] bwebster% man lipo</code></p></blockquote>
<p>Yes, this is extremely hacktackular, and I&#8217;m sure there must be a better way to do this, but this is what I got.</p>
<blockquote><p><code>[bw-mbp:~] bwebster% cd /usr/sbin<br/><br />
[bw-mbp:~] bwebster% sudo cp httpd httpd-fat<br/><br />
[bw-mbp:~] bwebster% sudo lipo httpd -thin i386 -output httpd<br/><br />
</code></p></blockquote>
<p>After making a backup of the httpd executable for safety purposes, the lipo commands sucks out all of the architectures included in the universal binary except the 32-bit Intel one (specified by &#8220;i386&#8243;).  Apache can&#8217;t run as 64-bit if it doesn&#8217;t have a 64-bit binary!</p>
<p>After doing this, starting up the web server again worked just fine, and loaded the existing 32-bit PHP5 module.  Once I got all my httpd.conf customizations moved over to the new location, that was pretty much all I needed to do.  It also turns out that I probably would have run into this same problem for FogBugz specifically, since it loads its own fogutil.so PHP module which is also only available as 32-bit right now.  I don&#8217;t know for sure, but I&#8217;m guessing people running on G5s, which also support 64-bit, would probably need the same trick, except replacing &#8220;ppc&#8221; for &#8220;i386&#8243;.</p>
<p>This is obviously a very poor long term solution, but if anyone needs to get FogBugz up and running on Leopard right away, this did the trick for me.  Ultimately, getting FogBugz to work hack-free will require someone to get a 64-bit build of the PHP5 Apache module figured out, as well as Fog Creek providing a 64-bit build of their own Apache module.  And of course what I&#8217;ve outlined here is totally unsupported by Fog Creek, so proceed at your own risk!</p>
<img src="http://feeds.feedburner.com/~r/fatcatsoft/~4/177414148" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.fatcatsoftware.com/blog/2007/running-fogbugz-on-leopard/feed</wfw:commentRss>
		<feedburner:origLink>http://www.fatcatsoftware.com/blog/2007/running-fogbugz-on-leopard</feedburner:origLink></item>
		<item>
		<title>iPhoto Library Manager 3.4 released</title>
		<link>http://feeds.feedburner.com/~r/fatcatsoft/~3/177213005/iphoto-library-manager-34-released</link>
		<comments>http://www.fatcatsoftware.com/blog/2007/iphoto-library-manager-34-released#comments</comments>
		<pubDate>Tue, 30 Oct 2007 14:40:29 +0000</pubDate>
		<dc:creator>Brian Webster</dc:creator>
		
		<category><![CDATA[Updates]]></category>

		<category><![CDATA[iPhoto Library Manager]]></category>

		<guid isPermaLink="false">http://www.fatcatsoftware.com/blog/2007/iphoto-library-manager-34-released</guid>
		<description><![CDATA[At long last, iPhoto Library Manager is ready for Leopard!  OK, it hasn&#8217;t really been that long since Leopard came out (4 days?), but it seemed like a long time.  The new version is available for download and as usual, is a free update for existing customers.  Leopard compatibility was the biggest [...]]]></description>
			<content:encoded><![CDATA[<p>At long last, iPhoto Library Manager is ready for Leopard!  OK, it hasn&#8217;t really been that long since Leopard came out (4 days?), but it seemed like a long time.  The new version is <a href="http://www.fatcatsoftware.com/iplm">available for download</a> and as usual, is a free update for existing customers.  Leopard compatibility was the biggest change in this new version, but it also includes a bug fix or two as well.  Enjoy!</p>
<img src="http://feeds.feedburner.com/~r/fatcatsoft/~4/177213005" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.fatcatsoftware.com/blog/2007/iphoto-library-manager-34-released/feed</wfw:commentRss>
		<feedburner:origLink>http://www.fatcatsoftware.com/blog/2007/iphoto-library-manager-34-released</feedburner:origLink></item>
		<item>
		<title>MacFixIt’s scare tactics</title>
		<link>http://feeds.feedburner.com/~r/fatcatsoft/~3/175574451/macfixits-scare-tactics</link>
		<comments>http://www.fatcatsoftware.com/blog/2007/macfixits-scare-tactics#comments</comments>
		<pubDate>Fri, 26 Oct 2007 22:07:40 +0000</pubDate>
		<dc:creator>Brian Webster</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://www.fatcatsoftware.com/blog/2007/macfixits-scare-tactics</guid>
		<description><![CDATA[I just read this article on MacJournals regarding MacFixit&#8217;s tendancy to overhype problems, and I&#8217;m glad someone is calling a spade a spade here.  MacFixIt used to be a useful site, but in recent years it has gone downhill in the quality of what they publish, almost to the point of being useless, or [...]]]></description>
			<content:encoded><![CDATA[<p>I just read <a href="http://www.macjournals.com/news/despicable.html">this article on MacJournals</a> regarding <a href="http://www.macfixit.com">MacFixit&#8217;s</a> tendancy to overhype problems, and I&#8217;m glad someone is calling a spade a spade here.  MacFixIt used to be a useful site, but in recent years it has gone downhill in the quality of what they publish, almost to the point of being useless, or worse, harmful.  It reminds me somewhat of Symantec trying to <a href="http://arstechnica.com/journals/apple.ars/2006/11/4/5858">hype nonexistent virus threats</a> to the Mac so they can sell more copies of Norton AntiVirus that nobody needs.</p>
<p>The article uses a recent MacFixIt post on <a href="http://www.alsoft.com/DiskWarrior">DiskWarrior</a> as an example, and I actually used to work for Alsoft for a few years, and it&#8217;s definitely not the first time this sort of thing has happened with MacFixIt.  We had to deal with them on several occasions when they posted various stories, mostly regarding DiskWarrior, that either stretched the truth or were just outright false.</p>
<p>It seems that a large amount of MacFixIt&#8217;s material comes from reader e-mails and other such input.  That&#8217;s not a problem in and of itself, but the problem is that there is almost no effort put forth on their part to filter and/or verify the statements made by their readers.  The result is that stories go up on the site that have absolutely no basis in reality, simply because one or two readers e-mailed in.  &#8220;I noticed that when I upgraded my iLife on the full moon, it crashed my machine, but then when I rebooted and tried again when the moon was waning, it worked!&#8221; results in the headline &#8220;<strong>Warning: iLife installer deletes your photos when installed under a full moon!</strong>&#8220;</p>
<p>MacFixIt seems to hardly ever even bother to try some of these things readers write in about to see if they actually behave as described, but even worse, they often won&#8217;t even try verifying something with the developer of an application if a problem is reported with it.  This happened several times at Alsoft, where some reader reported a problem with DiskWarrior and blamed it on something, and MacFixIt happily plastered it on their front page as though it were gospel, causing all sorts of people to panic about running DiskWarrior under whatever circumstances they claimed caused the problem.  I remember one case in particular where they claimed that DiskWarrior wouldn&#8217;t work with Firewire 800 drives (which is utter nonsense), simply because some reader had had a problem rebuilding their own Firewire 800 drive. Of course it turned out to have a completely different cause (a bug in Quicktime), one that had actually already been well documented <em>months ago, on MacFixIt&#8217;s own site!</em>.</p>
<p>Had they bothered to simply shoot an e-mail or phone call our way, we could have provided them with the solution, they could have referred their reader to their old article with the solution, and saved everyone a whole lot of hassle.  This is not only a problem for MacFixIt&#8217;s readers, but it costs the victim company time and money in responding to the resulting support calls and e-mails, plus the effort needed by the company to try to set the record straight.</p>
<p>So, if you&#8217;re a regular MacFixIt reader, I would encourage you to take everything they say at least with a grain of salt, if not to stop reading the site altogether.  They have journalistic integrity on par with the National Enquirer.  And if you do experience a problem with a program, <strong>contact the program&#8217;s developer</strong>.  They are often quite helpful and actually know what they&#8217;re talking about, and will be happy to help you with your problem.  Now if you&#8217;ll excuse me, I need to go install Leopard before the tides come in&#8230;</p>
<img src="http://feeds.feedburner.com/~r/fatcatsoft/~4/175574451" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.fatcatsoftware.com/blog/2007/macfixits-scare-tactics/feed</wfw:commentRss>
		<feedburner:origLink>http://www.fatcatsoftware.com/blog/2007/macfixits-scare-tactics</feedburner:origLink></item>
		<item>
		<title>iPLM Leopard update</title>
		<link>http://feeds.feedburner.com/~r/fatcatsoft/~3/174422798/iplm-leopard-update</link>
		<comments>http://www.fatcatsoftware.com/blog/2007/iplm-leopard-update#comments</comments>
		<pubDate>Wed, 24 Oct 2007 17:41:55 +0000</pubDate>
		<dc:creator>Brian Webster</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[iPhoto Library Manager]]></category>

		<guid isPermaLink="false">http://www.fatcatsoftware.com/blog/2007/iplm-leopard-update</guid>
		<description><![CDATA[Just a quick note on iPhoto Library Manager compatibility with Leopard:

I am currently working on the update, but Apple has decided not to give developers an advance copy of the final version of Leopard until it ships, which means that I won&#8217;t truly be able to start final testing until this weekend.  I&#8217;m hoping [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick note on iPhoto Library Manager compatibility with Leopard:</p>
<ul>
<li>I am currently working on the update, but Apple has decided not to give developers an advance copy of the final version of Leopard until it ships, which means that I won&#8217;t truly be able to start final testing until this weekend.  I&#8217;m hoping that it won&#8217;t take too long and that the iPLM update will be out sometime next week.</li>
<li>Similarly to major iPhoto updates, so far the basic library switching in iPLM seems to work fine in Leopard, it&#8217;s just the advanced photo copying stuff that will need additional work, so upgrading to Leopard isn&#8217;t going to cut you off from your iPhoto libraries or anything</li>
<li>The update will be free, so if you buy a copy of iPhoto Library Manager now, you won&#8217;t have to pay to upgrade, you can just download the new version.</li>
</ul>
<p>That&#8217;s all for now, I&#8217;ll try to keep updates coming as I know more.</p>
<img src="http://feeds.feedburner.com/~r/fatcatsoft/~4/174422798" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.fatcatsoftware.com/blog/2007/iplm-leopard-update/feed</wfw:commentRss>
		<feedburner:origLink>http://www.fatcatsoftware.com/blog/2007/iplm-leopard-update</feedburner:origLink></item>
		<item>
		<title>Apple totally stole my line!</title>
		<link>http://feeds.feedburner.com/~r/fatcatsoft/~3/171375902/apple-totally-stole-my-line</link>
		<comments>http://www.fatcatsoftware.com/blog/2007/apple-totally-stole-my-line#comments</comments>
		<pubDate>Thu, 18 Oct 2007 01:06:40 +0000</pubDate>
		<dc:creator>Brian Webster</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://www.fatcatsoftware.com/blog/2007/apple-totally-stole-my-line</guid>
		<description><![CDATA[I was looking through the Mac OS X Server section of Apple&#8217;s website, which has also been updated with Leopard info in the last couple days, when I saw this:


Hmmmm, this is seeming awfully familiar&#8230; where might I have seen this before?


Yeah, OK, my evidence is a little slim&#8230;. so far.  But I&#8217;ve got [...]]]></description>
			<content:encoded><![CDATA[<p>I was looking through the Mac OS X Server section of Apple&#8217;s website, which has also been updated with Leopard info in the last couple days, when I saw this:
<div style="text-align:center;"><a href="http://www.apple.com/server/macosx/features/filesharing.html"><img src="http://www.fatcatsoftware.com/blog/wp-content/uploads/2007/10/apple-mac-os-x-server-features-file-sharing-1.jpg" alt="Apple - Mac OS X Server - Features - File Sharing-1.jpg" border="0" width="448" height="155" /></a></div>
</p>
<p>Hmmmm, this is seeming awfully familiar&#8230; where might I have seen this before?
<div style="text-align:center;"><a href="http://www.fatcatsoftware.com/iplm/"><img src="http://www.fatcatsoftware.com/blog/wp-content/uploads/2007/10/fat-cat-software-iphoto-library-manager.jpg" alt="Fat Cat Software - iPhoto Library Manager.jpg" border="0" width="410" height="588" /></a></div>
</p>
<p>Yeah, OK, my evidence is a little slim&#8230;. so far.  But I&#8217;ve got my eye on you, Apple!</p>
<img src="http://feeds.feedburner.com/~r/fatcatsoft/~4/171375902" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.fatcatsoftware.com/blog/2007/apple-totally-stole-my-line/feed</wfw:commentRss>
		<feedburner:origLink>http://www.fatcatsoftware.com/blog/2007/apple-totally-stole-my-line</feedburner:origLink></item>
		<item>
		<title>Top 10 obscure new Leopard features</title>
		<link>http://feeds.feedburner.com/~r/fatcatsoft/~3/170693043/top-10-obscure-new-leopard-features</link>
		<comments>http://www.fatcatsoftware.com/blog/2007/top-10-obscure-new-leopard-features#comments</comments>
		<pubDate>Tue, 16 Oct 2007 15:33:18 +0000</pubDate>
		<dc:creator>Brian Webster</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://www.fatcatsoftware.com/blog/2007/top-10-obscure-new-leopard-features</guid>
		<description><![CDATA[I was just reading through the 300 new Leopard features just posted today on Apple&#8217;s site.  They usually have a list like this with each major OS X release, and I always find it interesting, as there are usually a few little features that don&#8217;t make the &#8220;top features&#8221; list, but are the kind [...]]]></description>
			<content:encoded><![CDATA[<p>I was just reading through the <a href="http://www.apple.com/macosx/features/300.html">300 new Leopard features</a> just posted today on Apple&#8217;s site.  They usually have a list like this with each major OS X release, and I always find it interesting, as there are usually a few little features that don&#8217;t make the &#8220;top features&#8221; list, but are the kind of refinements that can make upgrading worthwhile.  Here are a few that I found that I&#8217;m looking forward to using.</p>
<ol>
<li><strong>Scriptable System Preferences:</strong> There&#8217;s all sorts of functionality in System Preferences that I wish again and again I could change using a script.  It doesn&#8217;t look like <em>everything</em> is scriptable, but it&#8217;s definitely a step in the right direction</li>
<li><strong>UI Recording and Playback:</strong> Back in the day, Applescript used to support recording, which was a great way to set up simple tasks and learn scripting.  This has fallen by the wayside in OS X, but I&#8217;m glad to see some kind of recordability make it back into the OS, even if it&#8217;s slightly less sophisticated.</li>
<li><strong>Spring-Loaded Dock:</strong> I knew about this before, but apparently in addition to opening folders via the dock, you can also &#8220;spring-load&#8221; applications.  Pressing the space bar while holding a drag over an app in the dock will launch the application.  I&#8217;m pretty sure I&#8217;ll find ways to use this.</li>
<li><strong>Finder Path Bar:</strong> This is a nice little touch that puts the full path to the current folder in the bottom bar of your Finder window, similar to the one you see when selecting a search result.  Simple, but will definitely make life easier.</li>
<li><strong>Inline iCal Editing:</strong> I never really liked having to shuttle all the way over to a separate window/drawer to edit iCal events.  This looks like it will be much more intuitive.</li>
<li><strong>iChat Audio/Video Recording:</strong> I don&#8217;t do audio/video chats that often, but I love having transcripts of my text chats to look back at, and being able to do this with audio/video chats is definitely nice to have.</li>
<li><strong>Self-Tuning TCP:</strong> One of those under-the-hood optimizations that probably should have been done a while ago, and for which there are multiple third-party ways to enable it.  Nice to see this here.</li>
<li><strong>PDF Manipulation in Preview:</strong> This is sweet, being able to reorder pages in a PDF, or copy pages from one PDF to another.  You can combine multiple PDFs into on or split them apart.  Preview is really getting to be a pretty powerful little application.</li>
<li><strong>Calculations in Spotlight:</strong> Finally, I can do quick calculations directly from my keyboard without having to open a separate app or widget.</li>
<li><strong>Scroll Non-Active Windows:</strong> Another little feature that I&#8217;ve found myself wanting fairly often.  I sometimes employ the command-drag trick to drag a background window&#8217;s scroll bar, but just being able to crank the scroll wheel is much nicer.</li>
</ol>
<img src="http://feeds.feedburner.com/~r/fatcatsoft/~4/170693043" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.fatcatsoftware.com/blog/2007/top-10-obscure-new-leopard-features/feed</wfw:commentRss>
		<feedburner:origLink>http://www.fatcatsoftware.com/blog/2007/top-10-obscure-new-leopard-features</feedburner:origLink></item>
		<item>
		<title>iPhoto Library Manager and Leopard</title>
		<link>http://feeds.feedburner.com/~r/fatcatsoft/~3/169083274/iphoto-library-manager-and-leopard</link>
		<comments>http://www.fatcatsoftware.com/blog/2007/iphoto-library-manager-and-leopard#comments</comments>
		<pubDate>Fri, 12 Oct 2007 19:56:34 +0000</pubDate>
		<dc:creator>Brian Webster</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[iPhoto Library Manager]]></category>

		<guid isPermaLink="false">http://www.fatcatsoftware.com/blog/2007/iphoto-library-manager-and-leopard</guid>
		<description><![CDATA[I just thought I would drop a quick note regarding plans for Leopard compatibility for iPhoto Library Manager.  The short version is that iPhoto Library Manager will support Leopard fully by the time Leopard comes out.  Yay!  Since things can change and break things at the last minute with new OS releases, [...]]]></description>
			<content:encoded><![CDATA[<p>I just thought I would drop a quick note regarding plans for <a href="http://www.apple.com/macosx/leopard/">Leopard</a> compatibility for iPhoto Library Manager.  The short version is that <a href="http://www.fatcatsoftware.com/iplm">iPhoto Library Manager</a> will support Leopard fully by the time Leopard comes out.  Yay!  Since things can change and break things at the last minute with new OS releases, I won&#8217;t actually be releasing a Leopard compatible version of iPLM until I can actually test it with the final version of Leopard, but I&#8217;ve got the big stuff figured out already.  For those interested in the nerdy technical details, read onward.</p>
<p>Leopard will require some changes in the way iPhoto Library Manager works under the hood.  iPLM uses the Input Manager mechanism of Mac OS X to load a bundle of code into iPhoto which supplements iPhoto&#8217;s Applescripting capabilities, which is what makes features such as copying albums and merging libraries possible.  Some other programs, such as <a href="http://www.inquisitorx.com">Inquisitor</a> and <a href="http://1passwd.com/">1Passwd</a> also use input managers to implement their functionality.  However, as has been reported by <a href="http://arstechnica.com/journals/apple.ars/2007/03/22/leopard-not-ready-for-april--barely-beta-not-final-or-gold-master">Ars Technica</a> and discussed on some <a href="http://switchersblog.com/2007/08/31/the-end-of-the-input-manager-and-pimping-mac-os-x.html">other</a> <a href="http://www.newsfirerss.com/blog/?p=175">blogs</a>, input managers are no longer going to be supported under Leopard.</p>
<p>Other developers have found other methods to do what they need to do under Leopard, such as 1Passwd, whose developers say they are going to switch to a WebKit plugin, which works well for them since their product is web browser oriented.  iPhoto Library Manager is going to take a different approach though.</p>
<p>One difference between iPLM and some other apps that use input managers is that iPLM only actually needs its code to be loaded when it&#8217;s actively doing something with iPhoto, like copying some albums between libraries.  It doesn&#8217;t matter if the code is loaded every time iPhoto is launched, unlike say, Inquisitor, which pretty much always has to be there to be of any use.</p>
<p>So, instead of a plugin based approach, under Leopard iPLM will use a handy little feature of the OS X dynamic linker, the <a href="http://developer.apple.com/documentation/Darwin/Reference/ManPages/man1/dyld.1.html">DYLD_INSERT_LIBRARIES</a> environment variable.  Basically what this does is allow you to load additional dynamic libraries in an application (and even substitute for libraries the application is already linked to).  The most well known usage for this feature is the MallocDebug developer application, which loads a custom debug version of the malloc library that replaces the normal system library and provides all sort of information on memory usage in the application being debugged.</p>
<p>The downside to this approach is that it requires relaunching the application in question in order to load the additional code, since you have to set up this environment variable and then launch the application yourself.  So, for something like Inquisitor, launching Safari directly from the dock would not load the code automatically.  There would have to be a separate program that performs the special setup and launch Safari itself, which would be a pain in the butt for users.  However, this isn&#8217;t really a problem for iPLM, since it has to relaunch iPhoto multiple times during an album copy anyway, so having to do the special setup doesn&#8217;t really change the flow of things at all.</p>
<p>There are a couple other upsides to this approach:</p>
<ul>
<li>The code will only be loaded into iPhoto itself, unlike input managers, which load their code into any Cocoa application that runs.  iPLM&#8217;s code doesn&#8217;t actually <em>do</em> anything unless it&#8217;s being loaded in iPhoto, but the input manager bundle still shows up in crash reports and such, which can be suspicious to others trying to debug a crash.</li>
<li>Nothing needs to be installed!  All the code can sit happily within iPLM&#8217;s application bundle, and there&#8217;s no need to update the bundle when iPLM is updated, or any of that hassle.  This means I&#8217;ll actually be deleting more code than I&#8217;m writing in order to change to the new method.</li>
</ul>
<p>The only feature that will be lost as a result of the change is putting the name of the current library in the title bar of the iPhoto window itself.  This was a neat addition that I put in on a whim, but since the iPLM code will no longer always be running in iPhoto, this will be going away.</p>
<p>In retrospect, if I had known about this method of doing things back when I first wrote iPLM 3.0, I probably would have done it this way in the first place, since it&#8217;s less intrusive and uses a long standing feature of dyld that isn&#8217;t likely to go anywhere anytime soon.  Like I said above, this method isn&#8217;t feasible for many programs that are currently using input managers, but this may still prove a useful technique to some other programs transitioning over to Leopard.</p>
<img src="http://feeds.feedburner.com/~r/fatcatsoft/~4/169083274" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.fatcatsoftware.com/blog/2007/iphoto-library-manager-and-leopard/feed</wfw:commentRss>
		<feedburner:origLink>http://www.fatcatsoftware.com/blog/2007/iphoto-library-manager-and-leopard</feedburner:origLink></item>
		<item>
		<title>iPhoto 7 editing behavior</title>
		<link>http://feeds.feedburner.com/~r/fatcatsoft/~3/167641781/iphoto-7-editing-behavior</link>
		<comments>http://www.fatcatsoftware.com/blog/2007/iphoto-7-editing-behavior#comments</comments>
		<pubDate>Tue, 09 Oct 2007 22:36:11 +0000</pubDate>
		<dc:creator>Brian Webster</dc:creator>
		
		<category><![CDATA[iPhoto]]></category>

		<category><![CDATA[Tips &amp; Tricks]]></category>

		<category><![CDATA[iPhoto Library Manager]]></category>

		<guid isPermaLink="false">http://www.fatcatsoftware.com/blog/2007/iphoto-7-editing-behavior</guid>
		<description><![CDATA[While fiddling around with the editing controls in iPhoto 7, I came across a small bit of new behavior that I thought may be interesting to some.  If you use any of the sliders in the &#8220;Adjust&#8221; palette, iPhoto 7 will actually remember the positions of those sliders if you come back to that [...]]]></description>
			<content:encoded><![CDATA[<p>While fiddling around with the editing controls in iPhoto 7, I came across a small bit of new behavior that I thought may be interesting to some.  If you use any of the sliders in the &#8220;Adjust&#8221; palette, iPhoto 7 will actually remember the positions of those sliders if you come back to that photo to edit it a second time.</p>
<p><a href="http://www.fatcatsoftware.com/blog/wp-content/uploads/2007/10/adjust.jpg"><img src="http://www.fatcatsoftware.com/blog/wp-content/uploads/2007/10/adjust.jpg" alt="Adjust.jpg" border="0" width="210" height="143" /></p>
<div style="clear:both"></div>
<p>Picture after editing and reopening</a></p>
<p>This is in contrast to iPhoto 6, where opening this photo back up again would result in the &#8220;Temperature&#8221; slider being reset to 0.  This is pretty cool overall, even if it prevents you from doing X-TREME 200% SHARPNESS adjustments by sliding the slider to 100% twice.</p>
<p>However, if you choose to edit your photo with an external editor, such as Photoshop or Preview, iPhoto will not remember these slider settings.</p>
<p><a href="http://www.fatcatsoftware.com/blog/wp-content/uploads/2007/10/adjust-1.jpg "><img src="http://www.fatcatsoftware.com/blog/wp-content/uploads/2007/10/adjust-1.jpg" alt="Adjust-1.jpg" border="0" width="194" height="140" />
<div style="clear:both"></div>
<p>Picture after editing in Preview</a></p>
<p>Also note that when copying photos with iPhoto Library Manager, transferring both the original and modified versions of the photo does the equivalent of editing in an external editor, so the slider settings won&#8217;t be transferred.</p>
<img src="http://feeds.feedburner.com/~r/fatcatsoft/~4/167641781" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.fatcatsoftware.com/blog/2007/iphoto-7-editing-behavior/feed</wfw:commentRss>
		<feedburner:origLink>http://www.fatcatsoftware.com/blog/2007/iphoto-7-editing-behavior</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic Page Served (once) in 0.498 seconds --><!-- Cached page served by WP-Cache -->
