<?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>Groby Unplugged &#187; iCalFix</title>
	<atom:link href="http://www.robertblum.com/articles/category/osx/icalfix/feed" rel="self" type="application/rss+xml" />
	<link>http://www.robertblum.com</link>
	<description>Rachel Blum on Software, Games And The Rest Of Life</description>
	<lastBuildDate>Sat, 26 Dec 2009 20:26:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Uninstalling iCalFix</title>
		<link>http://www.robertblum.com/articles/2008/02/02/uninstalling-icalfix</link>
		<comments>http://www.robertblum.com/articles/2008/02/02/uninstalling-icalfix#comments</comments>
		<pubDate>Sat, 02 Feb 2008 06:58:39 +0000</pubDate>
		<dc:creator>Robert Blum</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[iCalFix]]></category>

		<guid isPermaLink="false">http://www.robertblum.com/articles/2008/02/02/uninstalling-icalfix</guid>
		<description><![CDATA[Update: Since many people search for this specific string, this article tells you how to &#8220;uninstall icalfix&#8221;

With OSX Leopard, iCalFix has ceased to be useful. The core functionality is now part of iCal, iCalFix is incompatible with Leopard, and Apple is phasing out the method I used to actually modify iCal. As a result, many [...]]]></description>
			<content:encoded><![CDATA[<p><i>Update: Since many <a href="http://mylife.com">people search</a> for this specific string, this article tells you how to &#8220;uninstall icalfix&#8221;</i></p>

<p>With OSX Leopard, iCalFix has ceased to be useful. The core functionality is now part of iCal, iCalFix is incompatible with Leopard, and Apple is phasing out the method I used to actually modify iCal. As a result, many people have asked me how to remove iCalFix from their machines.</p>

<p>While I&#8217;ve (usually &#8211; apologies to those of you I missed!) responded via e-mail, I never got around to writing this up on my blog. Partially because I was too busy, and partially because it does hurt a bit to bury a project. Well, no use in postponing the inevitable. There are two ways to remove iCalFix. No matter which one you choose, you must reboot your Mac after you&#8217;re done &#8211; otherwise iCalFix will linger around until you finally do reboot.</p>

<h2>1. Via Terminal.app</h2>

<p>Before I share the code with you, <em>please</em> be careful. If you don&#8217;t know what this line does, or how mistyping it could delete all your data, do <em>not</em> use Terminal.app. For all the other brave souls out there, this line will do the trick:</p>

<p><code>sudo rm -rf /Library/InputManagers/iCalFix</code></p>

<h2>2. Via the Finder</h2>

<p>If the shell is not your natural home, you can always use Finder to get rid of iCalFix. Open your main hard drive, find the &#8220;Library&#8221; folder. In there, find &#8220;InputManagers&#8221;. In there, find &#8220;iCalFix&#8221; and drag it into the trash can. Empty the trash can after rebooting, and that&#8217;s it.</p>

<p>Obviously, this means I should focus on a different project. I have a couple of ideas &#8211; let&#8217;s see how things work out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robertblum.com/articles/2008/02/02/uninstalling-icalfix/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>I&#8217;ve been Apple&#8217;d</title>
		<link>http://www.robertblum.com/articles/2007/10/16/ive-been-appled</link>
		<comments>http://www.robertblum.com/articles/2007/10/16/ive-been-appled#comments</comments>
		<pubDate>Tue, 16 Oct 2007 23:43:39 +0000</pubDate>
		<dc:creator>Robert Blum</dc:creator>
				<category><![CDATA[OSX]]></category>
		<category><![CDATA[iCalFix]]></category>

		<guid isPermaLink="false">http://www.robertblum.com/articles/2007/10/16/ive-been-appled</guid>
		<description><![CDATA[Today I experienced the feeling that, it seems, every independent OS X software developer is supposed to endure. Apple incorporated my iCalFix feature in iCal. (While I like the flattering thought that it&#8217;s &#8220;my&#8221; feature, I&#8217;m aware that it&#8217;s a fairly obvious one. They probably came up with that without help. But one can hope&#8230;). [...]]]></description>
			<content:encoded><![CDATA[<p>Today I experienced the feeling that, it seems, every independent OS X software developer is supposed to endure. Apple incorporated my iCalFix feature in iCal. (While I like the flattering thought that it&#8217;s &#8220;<em>my</em>&#8221; feature, I&#8217;m aware that it&#8217;s a fairly obvious one. They probably came up with that without help. But one can hope&#8230;). Anyways &#8211; <a href="http://www.apple.com/macosx/features/300.html#ical">iCal now has automatic alarms</a></p>

<p>Ah well. The sad part here is that I spent a lot of time working around another Leopard issue that I&#8217;d heard about &#8211; no more input managers in Leopard. And, since it seemed interesting at the time, I was trying to figure out how to best get my little application to still work with iCal. That was &#8211; apart from the learning experience &#8211; a waste of time.</p>

<p>And, as a learning experience, what, exactly, did I learn?</p>

<ul>
<li>I need to be a member of <a href="http://developer.apple.com/products/">ADC, Apple&#8217;s developer program</a>. If I had been, I would&#8217;ve seen seed editions of Leopard and would have known about this beforehand. </li>
<li><p>Corollary to the above &#8211; I need to charge for at least some of my software. ADC doesn&#8217;t pay itself.  I&#8217;m sorry about that, because I liked the donation ware approach. At the same time, it&#8217;s depressing when you get a hit from e.g. <a href="http://lifehacker.com/">lifehacker</a>, 2000 people download your app, and not a <em>single</em> one of them donates. (At this point, a <em>huge</em> &#8220;Thank you!&#8221; to all of you who did donate!)</p>

<p>There&#8217;ll still be the odd small app that&#8217;s just not worth charging for, but do expect me to branch out into bigger projects.</p></li>
<li>Don&#8217;t waste time on things that seem &#8220;interesting&#8221;. I could&#8217;ve concentrated on a lot of other things instead of trying to work around a future problem that I couldn&#8217;t even verify first hand.</li>
</ul>

<p>And what will happen to iCalFix? Well, I&#8217;ve got a current version that supports Growl. I&#8217;ll take out unfinished features, polish the rough edges, and release it on Friday. From there on out, it depends on you guys: How many of you plan on staying pre-Leopard? Are there features I could add that would make you want to pay? (And if you&#8217;ve donated already, that&#8217;d be an automatic free license to 1.0, should there be a 1.0)</p>

<p>As for other projects, I&#8217;m exploring. <a href="http://flyingmeat.com/acorn/">Acorn</a> seems to be nicely shaping up as a platform for all sorts of interesting graphics ideas, so I might spend some time there. I&#8217;ve got a couple of other ideas floating around, so I&#8217;ll explore those too &#8211; and if there&#8217;s something you desperately need for your Mac, you can always let me know&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robertblum.com/articles/2007/10/16/ive-been-appled/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Reboot!</title>
		<link>http://www.robertblum.com/articles/2007/07/03/reboot</link>
		<comments>http://www.robertblum.com/articles/2007/07/03/reboot#comments</comments>
		<pubDate>Tue, 03 Jul 2007 20:22:13 +0000</pubDate>
		<dc:creator>Robert Blum</dc:creator>
				<category><![CDATA[PSA]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[iCalFix]]></category>

		<guid isPermaLink="false">http://www.robertblum.com/articles/2007/07/03/reboot</guid>
		<description><![CDATA[Here we go again (moving from a spark to a flame.. &#9835;). Yes, I&#8217;ve been silent for quite some time. Almost two months &#8211; I can&#8217;t believe it. What happened?

It started with a rash of unexpected events. My life switched to interrupt-driven. For a while, that was kind of fun &#8211; don&#8217;t look out for [...]]]></description>
			<content:encoded><![CDATA[<p>Here we go again (moving from a spark to a flame.. &#9835;). Yes, I&#8217;ve been silent for quite some time. Almost two months &#8211; I can&#8217;t believe it. What happened?</p>

<p>It started with a rash of unexpected events. My life switched to interrupt-driven. For a while, that was kind of fun &#8211; don&#8217;t look out for any long-term issues, just juggle the events at hand. Until I realized that that meant I had no way to actually pursue my long-term interests.</p>

<p>Now, moving back to an organized life is hard if the fire hose of life&#8217;s events is turned up to eleven. So I spent a bit of time going through my life, reorganizing my priorities, and discarding the parts that were more distracting than helpful. That includes both obligations and possessions. Recently, I have been selling quite a few things that clutter up my life and my apartment, and I&#8217;ve been cutting back on my obligations.</p>

<p>The funny thing is, after I started doing it, uncluttering became sort of a web trend. There&#8217;s <a href="http://www.unclutterer.com">Unclutterer</a> that&#8217;s been gaining quite a bit of steam recently. <a href="http://www.43folders.com">43Folders</a> has declared a <a href="http://www.43folders.com/2007/07/03/clutter-independence-day/">War On Clutter</a>. <a href="http://www.stevepavlina.com">Steve Pavlina</a> is talking about &#8220;<a href="http://www.stevepavlina.com/blog/2007/07/making-time-for-the-important/">Making Time for The Important</a>&#8220;. <a href="http://www.zenhabits.com">Zen Habits</a> writes about <a href="http://zenhabits.net/2007/06/a-guide-to-escaping-materialism-and-finding-happiness/">escaping materialism</a>.</p>

<p>What does that actually mean? Not much for this web site, or iCalFix. I took stock of things I love doing, and both of these ended up very high on my priorities list. If anything, it means I now actually have <em>time</em> to work on iCalFix.</p>

<p>Anyways &#8211; it&#8217;s been really fun decluttering my life, and I&#8217;m glad to be back to writing here!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robertblum.com/articles/2007/07/03/reboot/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>News from iCalFix &#8211; 0.6.1 out</title>
		<link>http://www.robertblum.com/articles/2007/04/11/news-from-icalfix-061-out</link>
		<comments>http://www.robertblum.com/articles/2007/04/11/news-from-icalfix-061-out#comments</comments>
		<pubDate>Wed, 11 Apr 2007 23:05:02 +0000</pubDate>
		<dc:creator>Robert Blum</dc:creator>
				<category><![CDATA[OSX]]></category>
		<category><![CDATA[iCalFix]]></category>

		<guid isPermaLink="false">http://www.robertblum.com/articles/2007/04/11/news-from-icalfix-061-out</guid>
		<description><![CDATA[While the new release is brewing (give it a few more weeks!), I&#8217;ve created an interim version that fixes a most annoying bug &#8211; you couldn&#8217;t create all-day events by clicking in the calendar. Apologies it took so long &#8211; I got sidetracked a bit.

It will also give you a more detailed report when it [...]]]></description>
			<content:encoded><![CDATA[<p>While the new release is brewing (give it a few more weeks!), I&#8217;ve created an <a href="http://www.robertblum.com/downloads/iCalFix-0.6.1.dmg">interim version</a> that fixes a most annoying bug &#8211; you couldn&#8217;t create all-day events by clicking in the calendar. Apologies it took so long &#8211; I got sidetracked a bit.</p>

<p>It will also give you a more detailed report when it can&#8217;t start up, allowing me to easily diagnose what&#8217;s probably the most common problem with all of iCalFix: The accidental double install. To install over any pre-0.6 versions, you <b>must</b> remove both /Library/InputManagers/iCalFix and ~/Library/InputManagers/iCalFix and everything contained in those directories. If you don&#8217;t, there&#8217;s a chance OSX will pick your old iCalFix and complain it doesn&#8217;t have a compatible version.</p>

<p>And in case you&#8217;re curious what 0.7 will bring, there are two major items on the list:
 * Growl notifications for all events
 * Automatic alarms for Todo&#8217;s that have a date set</p>

<p>Expect it to come to a browser near you May &#8216;07.</p>

<p>Tags: <a href="http://technorati.com/tag/iCalFix" rel="tag">iCalFix</a>, <a href="http://technorati.com/tag/iCal" rel="tag">iCal</a>, <a href="http://technorati.com/tag/osx" rel="tag">OSX</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.robertblum.com/articles/2007/04/11/news-from-icalfix-061-out/feed</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>iCalFix 0.6</title>
		<link>http://www.robertblum.com/articles/2007/03/14/icalfix-06</link>
		<comments>http://www.robertblum.com/articles/2007/03/14/icalfix-06#comments</comments>
		<pubDate>Thu, 15 Mar 2007 05:43:33 +0000</pubDate>
		<dc:creator>Robert Blum</dc:creator>
				<category><![CDATA[OSX]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[iCalFix]]></category>

		<guid isPermaLink="false">http://www.robertblum.com/articles/2007/03/14/icalfix-06</guid>
		<description><![CDATA[Update: Look for iCalFix 0.6.1

Finally &#8211; the new iCalFix 0.6 is ready. What&#8217;s new?


It works with 10.4.9. I&#8217;ve never had so many people come to my blog as on the day 10.4.9 was released. Sorry I couldn&#8217;t get it out earlier.
It now comes as a package installer. No more hunting for directories because I misspelt [...]]]></description>
			<content:encoded><![CDATA[<p>Update: Look for <a href="http://www.robertblum.com/articles/2007/04/11/news-from-icalfix-061-out">iCalFix 0.6.1</a></p>

<p>Finally &#8211; the new <a href="http://www.robertblum.com/downloads/iCalFix-0.6.dmg">iCalFix 0.6</a> is ready. What&#8217;s new?</p>

<ul>
<li><p>It works with 10.4.9. I&#8217;ve never had so many people come to my blog as on the day 10.4.9 was released. Sorry I couldn&#8217;t get it out earlier.</p></li>
<li><p>It now comes as a package installer. No more hunting for directories because I misspelt the instructions&#8230; If you installed previous versions by hand, <b>PLEASE</b> make sure that you remove them before you run the installer the first time. I.e. look in /Library/InputManagers and ~/Library/InputManagers if there is an iCalFix, and if yes, remove it.</p>

<p>Then, just open the disk image, double click the package, and you&#8217;re all set!</p></li>
<li><p>It finally has support for different times for all-day alarms. While most alarms are set to occur shortly before the appointment, this is not something you want for an all-day alarm. iCal thinks that those must start at midnight, so &#8220;10 minutes before&#8221; becomes 10 minutes to midnight. No more!</p></li>
<li><p>There&#8217;s a nifty icon for the preference pane. Several people donated their time to create icon, and Kevin O&#8217;Shea created the final one. I love it!</p></li>
<li><p>FIX: Sounds can now be in all types supported by OSX, not only AIFF</p></li>
<li><p>FIX: The annoying SIMBL-related error message does not show up any more.</p></li>
</ul>

<p>So go ahead and <a href="http://www.robertblum.com/downloads/iCalFix-0.6.dmg">download iCalFix 0.6</a>!</p>

<p>As always, I appreciate any kind of support. Many of you have already donated &#8211; it&#8217;s great to know you like my work! If you haven&#8217;t yet, I certainly would appreciate it. Or, if you need a web hosting provider, sign up with dreamhosts &#8211; my provider &#8211; and use the promotion code â€˜GROBYâ€™ (without the <a href="http://www.carinsurancerates.com">quotes</a>). Youâ€™ll receive a $50 discount off your hosting costs, and Iâ€™ll get a referral bonus.</p>

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick"/>
<input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but21.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!"/>
<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7-----
"/>
</form>

<p>Related: 
<a href="http://www.robertblum.com/articles/2006/01/09/the-making-of-icalfix">The Making of iCalFix</a> &#8211; a look behind the scenes<br />
<a href="http://www.robertblum.com/articles/2005/12/21/making-a-better-ical">Making a better iCal</a> &#8211; the original release.</p>

<p>Tags: <a href="http://technorati.com/tag/iCalFix" rel="tag">iCalFix</a>, 
    <a href="http://technorati.com/tag/iCal" rel="tag">iCal</a>, <a href="http://technorati.com/tag/prouctivity" rel="tag">productivity</a>, 
    <a href="http://technorati.com/tag/osx" rel="tag">OSX</a>,
    <a href="http://technorati.com/tag/plugin"" rel="tag">plugin</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.robertblum.com/articles/2007/03/14/icalfix-06/feed</wfw:commentRss>
		<slash:comments>71</slash:comments>
		</item>
		<item>
		<title>iCalFix 0.5 &#8211; Universal Binary!</title>
		<link>http://www.robertblum.com/articles/2006/07/17/icalfix-05-universal-binary</link>
		<comments>http://www.robertblum.com/articles/2006/07/17/icalfix-05-universal-binary#comments</comments>
		<pubDate>Mon, 17 Jul 2006 15:23:06 +0000</pubDate>
		<dc:creator>Robert Blum</dc:creator>
				<category><![CDATA[OSX]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[iCalFix]]></category>

		<guid isPermaLink="false">http://www.robertblum.com/articles/2006/07/17/icalfix-05-universal-binary</guid>
		<description><![CDATA[_Update: iCalFix 0.6 released_

After a long delay, iCalFix 0.5 is ready, and it&#8217;s a Universal Binary!

So what else is new?


No more SIMBL.
iCalFix is now an InputManager all of its own, saving you the hassle of having to get another package. That means you should uninstall your previous version of iCalFix.
There&#8217;s a preference pane.
No more editing [...]]]></description>
			<content:encoded><![CDATA[<p><b>_Update: <a href="http://www.robertblum.com/articles/2007/03/14/icalfix-06">iCalFix 0.6 released</a>_</b></p>

<p>After a long delay, <a href="/downloads/iCalFix-0.5.dmg">iCalFix 0.5</a> is ready, and it&#8217;s a Universal Binary!</p>

<p>So what else is new?</p>

<ul>
<li><p>No more SIMBL.<br />
iCalFix is now an InputManager all of its own, saving you the hassle of having to get another package. That means you should uninstall your previous version of iCalFix.</p></li>
<li><p>There&#8217;s a preference pane.<br />
No more editing of obscure plist files in strange directories &#8211; just go to preferences, and set your preferences for the default alarm. Yes, there&#8217;s no icon yet. On the other hand, you don&#8217;t want to see /my/ drawing skills, and a professional icon designer is out of the <a href="http://www.carinsurancerates.com/ask/claims/">question</a> for now. (You could always donate&#8230;.)</p></li>
<li><p>Last Alarm settings no longer retained.<br />
iCalFix will now always use the preferences as specified in the preferences pane.</p></li>
<li><p>The announcement list is finally in place<br />
Send mail to <a href="javascript:DeCryptX('jdbmgjy.boopvodf.tvctdsjcfAmjtut/spcfsucmvn/dpn@tvckfdu>tvctdsjcf')"])">icalfix-announce-subscribe</a> with the subject line &#8217;subscribe&#8217;, and you&#8217;ll get informed whenever there are major developments and new versions of iCalFix.</p></li>
</ul>

<p><a href="/downloads/iCalFix-0.5.dmg">Download iCalFix 0.5!</a></p>

<p>Now that I&#8217;ve finally got a decently-powered Mac (Go MacBook!), there&#8217;ll definitely be lots more to come. Feedback, feature requests and comments are welcome at <a href="javascript:DeCryptX('spc/cmvnAhnbjm/dpn')">rob [dot] blum [at] gmail [dot] com</a>.</p>

<p>As always, I appreciate any kind of support. Visit my friendly sponsors, or donate via PayPal. And if you need a web hosting provider, <a href="http://www.dreamhost.com/rewards.cgi?groby">sign up with dreamhosts</a> &#8211; my provider &#8211; and use the promotion code &#8216;GROBY&#8217; (without the <a href="http://www.carinsurancerates.com">quotes</a>). You&#8217;ll receive a $50 discount off your hosting costs, and I&#8217;ll get a referral bonus.</p>

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick"/>
<input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but21.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!"/>
<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7-----
"/>
</form>

<p>Related: 
<a href="http://www.robertblum.com/articles/2006/01/09/the-making-of-icalfix">The Making of iCalFix</a> &#8211; a look behind the scenes<br />
<a href="http://www.robertblum.com/articles/2005/12/21/making-a-better-ical">Making a better iCal</a> &#8211; the original release.</p>

<p>Tags: <a href="http://technorati.com/tag/iCalFix" rel="tag">iCalFix</a>, 
    <a href="http://technorati.com/tag/iCal" rel="tag">iCal</a>, <a href="http://technorati.com/tag/prouctivity" rel="tag">productivity</a>, 
    <a href="http://technorati.com/tag/osx" rel="tag">OSX</a>,
    <a href="http://technorati.com/tag/plugin"" rel="tag">plugin</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.robertblum.com/articles/2006/07/17/icalfix-05-universal-binary/feed</wfw:commentRss>
		<slash:comments>63</slash:comments>
		</item>
		<item>
		<title>iCalFix 0.3</title>
		<link>http://www.robertblum.com/articles/2006/02/16/icalfix-03</link>
		<comments>http://www.robertblum.com/articles/2006/02/16/icalfix-03#comments</comments>
		<pubDate>Thu, 16 Feb 2006 07:41:42 +0000</pubDate>
		<dc:creator>Robert Blum</dc:creator>
				<category><![CDATA[OSX]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[iCalFix]]></category>

		<guid isPermaLink="false">http://www.robertblum.com/articles/2006/02/16/icalfix-03</guid>
		<description><![CDATA[More updates: iCalFix 0.5 released

Update2: Ran into another kGTD problem. Fixed now &#8211; you&#8217;ll need iCalFix 0.3.1

Update: Yesterday night, I made a mistake and uploaded the wrong file. Thanks to Dalton for pointing this out. I&#8217;ve uploaded the correct file now. If you downloaded iCalFix before 9:30 am PST, you should re-download. The old iCalFix [...]]]></description>
			<content:encoded><![CDATA[<p><em>More updates: <b><a href="http://www.robertblum.com/articles/2006/07/17/icalfix-05-universal-binary">iCalFix 0.5 released</a></b></em></p>

<p><em>Update2: Ran into another kGTD problem. Fixed now &#8211; you&#8217;ll need <a href="http://www.robertblum.com/downloads/iCalFix-0.3.1.dmg">iCalFix 0.3.1</a></em></p>

<p><em>Update: Yesterday night, I made a mistake and uploaded the wrong file. Thanks to <a href="http://www.mlik.org/">Dalton</a> for pointing this out. I&#8217;ve uploaded the correct file now. If you downloaded iCalFix before 9:30 am PST, you should re-download. The old iCalFix simply doesn&#8217;t start.</em></p>

<p>After much interesting insights into iCal, I&#8217;ve reached completion &#8211; you can <a href="http://www.robertblum.com/downloads/iCalFix-0.3.1.dmg">
download version 0.3 of iCalFix</a>. Again, for those who&#8217;ve not seen it yet: iCalFix is an extension to <a href="http://www.apple.com">Apple</a>&#8217;s iCal calendaring application, and it automatically adds an alarm to newly created events.</p>

<p>So what&#8217;s new this version?</p>

<ul>
<li>The last alarm settings you entered will be re-used for bulk settings</li>
<li>You can specify message-only alarms. Simply set the alarm sound in the plist file to an empty string</li>
<li>Fixed a compatibility problem with <a href="http://www.kinkless.com/kgtd">kGTD &#8211; Kinkless GTD</a></li>
<li>Last, but not least, alarm sounds can contain strings &#8211; finally, you can use &#8220;Uh Oh&#8221; as your alarm sound!&#8221;
</li></ul>

<p>Unfortunately, the preferences pane put up way more resistance than it should have, so it got cut from this revision. It&#8217;s postponed to 0.4 &#8211; which will happen March 15th.</p>

<p>As a result of this unfortunate development, I&#8217;ve decided to put quite a bit more time into iCalFix &#8211; so there&#8217;s a good chance all the feature requests you mailed me might come true. Additional feature requests, feedback, questions are always welcome at <a href="javascript:DeCryptX('spc/cmvnAhnbjm/dpn')">rob [dot] blum [at] gmail [dot] com</a>.</p>

<p>Part of this stepped-up effort is an iCalFix announcement list &#8211; the form is coming to this web site, but if you want to sign up already, just send me mail at the address above.</p>

<p>As always, I appreciate any kind of support. Visit my friendly sponsors, or donate via PayPal. And if you need a web hosting provider, <a href="http://www.dreamhost.com/rewards.cgi?groby">sign up with dreamhosts</a> &#8211; my provider &#8211; and use the promotion code &#8216;GROBY&#8217; (without the quotes). You&#8217;ll receive a $50 discount off your hosting costs, and I&#8217;ll get a referral bonus.</p>

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick"/>
<input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but21.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!"/>
<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7-----
"/>
</form>

<p>Related: 
<a href="http://www.robertblum.com/articles/2006/01/09/the-making-of-icalfix">The Making of iCalFix</a> &#8211; a look behind the scenes<br />
<a href="http://www.robertblum.com/articles/2005/12/21/making-a-better-ical">Making a better iCal</a> &#8211; the original release.</p>

<p>Tags: <a href="http://technorati.com/tag/iCalFix" rel="tag">iCalFix</a>, <a href="http://technorati.com/tag/osx" rel="tag">osx</a>, <a href="http://technorati.com/tag/iCal" rel="tag">iCal</a>, <a href="http://technorati.com/tag/plugin"" rel="tag">plugin</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.robertblum.com/articles/2006/02/16/icalfix-03/feed</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>iCalFix 0.2 released</title>
		<link>http://www.robertblum.com/articles/2006/01/16/icalfix-02-released</link>
		<comments>http://www.robertblum.com/articles/2006/01/16/icalfix-02-released#comments</comments>
		<pubDate>Mon, 16 Jan 2006 15:12:42 +0000</pubDate>
		<dc:creator>Robert Blum</dc:creator>
				<category><![CDATA[OSX]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[iCalFix]]></category>

		<guid isPermaLink="false">http://www.robertblum.com/articles/2006/01/16/icalfix-02-released</guid>
		<description><![CDATA[As promised, you can now download the newest version of iCalFix. (Yes, I know I said the  15th &#8211; but weekends are a blog-free time for me. I didn&#8217;t consult iCal before comitting to the date&#8230;). For those who haven&#8217;t seen iCalFix yet &#8211; it&#8217;s an extension to Apples iCal calendaring application, automatically adding [...]]]></description>
			<content:encoded><![CDATA[<p>As promised, you can now <a href="http://www.robertblum.com/downloads/iCalFix-0.2.dmg">download the newest version of iCalFix</a>. (Yes, I know I said the  15th &#8211; but weekends are a blog-free time for me. I didn&#8217;t consult iCal before comitting to the date&#8230;). For those who haven&#8217;t seen iCalFix yet &#8211; it&#8217;s an extension to Apples iCal calendaring application, automatically adding alarms to newly created events.</p>

<p>As requested, the <a href="http://www.personalcashadvance.com">advance</a> warning time is now configurable, and so is the alarm sound. It requires editing a plist file, though. Also, iCalFix now plays nice with applications that drive iCal through AppleScript. Namely, <a href="http://blacktree.com/apps/quicksilver/">QuickSilver</a>&#8217;s iCal module. (I just wish there was documentation for QuickSilver. I spent almost more time figuring out the iCal module than writing the supporting code.)</p>

<p>Feedback, questions and suggestions are always appreciated at  <a href="javascript:DeCryptX('spc/cmvnAhnbjm/dpn')">rob [dot] blum [at] gmail [dot] com</a>. Oh, and if you want to support development of iCalFix, please click on one of the ads &#8211; provided Google manages to come up with something relevant to you.</p>

<p>Version 0.3 will hit the &#8216;net on February 15th. This time, it&#8217;s a Wednesday, so no delays. The most likely features: An actual preferences pane, and the ability to re-use settings from the last alarm for bulk entry.</p>

<p>Update: <a href="http://www.robertblum.com/articles/2006/02/16/icalfix-03">iCalFix 0.3 released!</a></p>

<p>Related: <a href="http://www.robertblum.com/articles/2006/01/09/the-making-of-icalfix">The Making of iCalFix</a> &#8211; a look behind the scenes<br />
<a href="http://www.robertblum.com/articles/2005/12/21/making-a-better-ical">Making a better iCal</a> &#8211; the original release.</p>

<p>Tags: <a href="http://technorati.com/tag/iCalFix" rel="tag">iCalFix</a>, <a href="http://technorati.com/tag/osx" rel="tag">osx</a>, <a href="http://technorati.com/tag/iCal" rel="tag">iCal</a>, <a href="http://technorati.com/tag/plugin"" rel="tag">plugin</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.robertblum.com/articles/2006/01/16/icalfix-02-released/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>The Making of iCalFix</title>
		<link>http://www.robertblum.com/articles/2006/01/09/the-making-of-icalfix</link>
		<comments>http://www.robertblum.com/articles/2006/01/09/the-making-of-icalfix#comments</comments>
		<pubDate>Mon, 09 Jan 2006 15:36:53 +0000</pubDate>
		<dc:creator>Robert Blum</dc:creator>
				<category><![CDATA[OSX]]></category>
		<category><![CDATA[Technote]]></category>
		<category><![CDATA[iCalFix]]></category>

		<guid isPermaLink="false">http://www.robertblum.com/articles/2006/01/09/the-making-of-icalfix</guid>
		<description><![CDATA[Since quite a few people asked me how I created iCalFix, I thought it was time to share some details with you. There&#8217;s technical content ahead, so in case that&#8217;s not your cup of tea, I hid it behind a cut. While it&#8217;s OSX-specific, it might still be interesting for non-OSX programmers &#8211; the whole [...]]]></description>
			<content:encoded><![CDATA[<p>Since quite a few people asked me how I created iCalFix, I thought it was time to share some details with you. There&#8217;s technical content ahead, so in case that&#8217;s not your cup of tea, I hid it behind a cut. While it&#8217;s OSX-specific, it might still be interesting for non-OSX programmers &#8211; the whole process of writing plug-ins for Cocoa applications is rather interesting, regardless what platform you work on.</p>

<p><span id="more-41"></span>
So how does it all work? The most important piece in the puzzle is the fact that almost all Apple Applications are using ObjectiveC &#8211; a message based programming language. That means no function calls, just message dispatches. It&#8217;s not that important to plugin development, but crucial to reverse engineering. Every message is dispatched through one central function, by name.</p>

<p>The question then is, how do you get to read the messages? We need to somehow hook into a running application. When I started this project, I thought about a rather convoluted solution using <a href="http://rentzsch.com/mach_inject/">mach&#95;inject</a> &#8211; it allows you to inject arbitrary code into a running application. I thought I&#8217;d use that combined with <a href="http://rentzsch.com/mach_override">mach&#95;override</a> to override the central dispatch function <code>objc_sendmsg</code>.</p>

<p>A quick trip to the <a href="http://sourceforge.net/projects/extendamac">extendamac</a> mailing list on <a href="http://sf.net">SourceForge</a>, and the resident gurus had set me straight, though. Objective C already has message logging functionality built in. All I needed was to call <code>instrumentObjcMessageSends(YES);</code> inside iCal&#8217;s application space.</p>

<p>There are, as far as I know, two choices to do that. Either you use mach&#95;&#42;, which is a tricky business, or you write an <a href="http://developer.apple.com/documentation/Cocoa/Conceptual/InputManager/InputManager.pdf">input manager</a> &#8211; all OSX applications load input managers &#8211; which is a slightly less tricky business.</p>

<p>This is where a second major piece comes in &#8211; <a href="http://culater.net/software/SIMBL/SIMBL.php">SIMBL</a>, the Smart InputManager Bundle Loader. It&#8217;s a piece of software that uses an input manager to load user-written plugins. All the heavy lifting is done in there, and you just need to create a bundle (sort of a DLL, for you Windows guys) with <em>one</em> entry point.</p>

<p>The code to activate message logging then boiled down to:</p>

<p><code><pre>
+ (void) install
{
    instrumentObjcMessageSends(YES);
}
</pre></code></p>

<p>Compile that as a bundle, and SIMBL will make sure it gets loaded at startup. All messages the hooked up sends from then on are logged. As you&#8217;ll soon find out, Cocoa Apps send <em>a lot</em> of messages, so prepare for some digging through multi-megabyte text files.</p>

<p>After a little while, you will have figured out which message does what. Once you are there, you need to somehow take over or intercept those messages to do your business. Since ObjectiveC is a relatively dynamic language, it&#8217;s easy to replace a method on a class with your own method &#8211; just what we want to do. The CocoaDev website has a <a href="http://www.cocoadev.com/index.pl?MethodSwizzling">great  explanation of MethodSwizzling</a>.</p>

<p>Now we&#8217;re almost there &#8211; we hooked the critical messages, but we actually need to modify data on objects to achieve any visible effect. This is where our third helper comes into play &#8211; class-dump, which can be <a href="http://www.codethecode.com/Projects/class-dump/">downloaded here</a>.</p>

<p>class-dump reads an executable and presents you with an API declaration that you can simply include in your source. Once you do that, you can call all the object modification functions you want. In short, you become a part of the executable you hooked.</p>

<p>All this allowed me to create iCalFix with less than 100 lines of code. It&#8217;s rapidly growing, since I&#8217;m busy adding new features, but the core hack is extremely simple &#8211; thanks to a lot of hard work done by others.</p>

<p>If you&#8217;d like even more detail, Mike Solomon, the author of SIMBL, has a great page on <a href="http://culater.net/wiki/moin.cgi/CocoaReverseEngineering">reverse engineering Cocoa programs</a>.</p>

<p>Tags:  <a href="http://technorati.com/tag/osx" rel="tag">osx</a>, <a href="http://technorati.com/tag/cocoa" rel="tag">cocoa</a>, <a href="http://technorati.com/tag/simbl" rel="tag">SIMBL</a>, <a href="http://technorati.com/tag/objective-c" rel="tag">objective-c</a>, <a href="http://technorati.com/tag/plugin" rel="tag">plugin</a>, <a href="http://technorati.com/tag/reverse+engineering" rel="tag">reverse engineering</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.robertblum.com/articles/2006/01/09/the-making-of-icalfix/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Making a better iCal</title>
		<link>http://www.robertblum.com/articles/2005/12/21/making-a-better-ical</link>
		<comments>http://www.robertblum.com/articles/2005/12/21/making-a-better-ical#comments</comments>
		<pubDate>Wed, 21 Dec 2005 16:16:53 +0000</pubDate>
		<dc:creator>Robert Blum</dc:creator>
				<category><![CDATA[OSX]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[iCalFix]]></category>

		<guid isPermaLink="false">http://www.robertblum.com/articles/2005/12/21/making-a-better-ical</guid>
		<description><![CDATA[A few days ago, Merlin Mann mentioned on his 43 Folders site that he&#8217;d be interested in a small enhancement for iCal. Out of the box, iCal only adds an alarm to events if you manually add it &#8211; strange behavior, considering a calendar is the tool to alert us to upcoming events. He asked [...]]]></description>
			<content:encoded><![CDATA[<p>A few days ago, Merlin Mann mentioned on his <a href="http://www.43folders.com">43 Folders</a> site that he&#8217;d be interested in a small enhancement for iCal. Out of the box, iCal only adds an alarm to events if you manually add it &#8211; strange behavior, considering a calendar is the tool to alert us to upcoming events. He asked for automatic creation of those alarms.</p>

<p>At the same time, I was looking to delve a bit deeper into OSX programming. And it was also sufficiently small that I could turn it into an <a href="http://www.robertblum.com/articles/2005/12/15/just-do-it">experiment on productivity</a>.</p>

<p>Since no bugs surfaced since then &#8211; with a widespread test release on three machines <img src='http://www.robertblum.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  &#8211; I&#8217;m ready to release it into the wild. Comments, suggestions, <a href="http://www.carinsurancerates.com/ask/general/got-into-accident-rear-ended-81.html">questions</a> are welcome at <a href="javascript:DeCryptX('spc/cmvnAhnbjm/dpn')">rob [dot] blum [at] gmail [dot] com</a>.</p>

<p>Without further ado, here is <a href="http://www.robertblum.com/downloads/iCalFix.dmg">iCalFix 0.1</a></p>

<p>Update: <a href="http://www.robertblum.com/articles/2006/02/16/icalfix-03">iCalFix 0.3 released!</a></p>

<p>Tags: <a href="http://technorati.com/tag/osx" rel="tag">osx</a>, <a href="http://technorati.com/tag/iCal" rel="tag">iCal</a>, <a href="http://technorati.com/tag/plugin+development" rel="tag">plugin development</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.robertblum.com/articles/2005/12/21/making-a-better-ical/feed</wfw:commentRss>
		<slash:comments>55</slash:comments>
		</item>
	</channel>
</rss>
