<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://www.potionfactory.com" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>Tips</title>
 <link>http://www.potionfactory.com/blog/archives/tips/feed</link>
 <description>The taxonomy view with a depth of 0.</description>
 <language>en</language>
<item>
 <title>How to Keep Backwards Compatibility and be Less Grumpy About It</title>
 <link>http://www.potionfactory.com/blog/2007/11/04/how-keep-backwards-compatibility-and-be-less-grumpy-about-it</link>
 <description>&lt;p&gt;I dread backwards compatibility. I dread it because it means that for every product that I need to keep backwards compatible, the testing burden is at least twice as big. The math is simple: testing on two major OS versions and two processor types can be as much as 4 times of stuff I&#039;d rather not be doing.&lt;/p&gt;
&lt;p&gt;The last time I had to maintain a product with backwards compatibility, this is what I used to do:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Build then copy application to test machine.&lt;/li&gt;
&lt;li&gt;Get it to fail. This is the one part where I don&#039;t have to work very hard.&lt;/li&gt;
&lt;li&gt;Try to fix while scratching head then proceed to littering print statements all over the code.&lt;/li&gt;
&lt;li&gt;Go back to step 1.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You can make this process a little less sucky by configuring Xcode to copy after each build, or by mounting a share so that there&#039;s no copying at all. But in the end, debugging with print statements alone is limiting and time consuming. There has to be a better way, right?&lt;!--break--&gt;&lt;/p&gt;
&lt;p&gt;The better way turns out to be handsomely better and it&#039;s called remote debugging. A remote debugger is usually used for kernel hacking or for developing full-screen applications such as games, but it&#039;s quite handy for fixing backward compatibility problems—especially if your app no longer builds on Tiger.&lt;/p&gt;
&lt;p&gt;With remote debugging, I can code in Xcode 3—my new favorite IDE—then just hit command-Y. It works as any great software should. Like magic. The application launches on the test machine and you&#039;re off debugging as if it were running locally. You can set breakpoints, examine variables and stack traces, fix and continue, or whatever else that gdb can do. There&#039;s no longer a cycle of doom, and as a result, I&#039;m a much happier person.&lt;/p&gt;
&lt;p&gt;There are just 3 things you need to do to get stress free debugging on older systems with Xcode:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Set up password-less ssh for logging into your test machine.&lt;/li&gt;
&lt;li&gt;Share the build directory in a way that both machines can access it through the same path&lt;/li&gt;
&lt;li&gt;Configure a new executable in Xcode for remote debugging.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The Xcode User Guide does a fine job of explaining these steps succinctly.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://developer.apple.com/documentation/DeveloperTools/Conceptual/XcodeUserGuide/Contents/Resources/en.lproj/06_02_db_set_up_debug/chapter_42_section_7.html#//apple_ref/doc/uid/TP40002699-SW28&quot;&gt;Xcode User Guide — Debugging Programs Remotely&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Some additional tips:&lt;/p&gt;
&lt;p&gt;1. If your test machine has a different kind of processor, duplicate your Debug build configuration and set it up to build a universal binary.&lt;/p&gt;
&lt;p&gt;2. Use &quot;DWARF with dSYM File&quot; as your debug metadata format. With the other two options, breakpoints set through the Xcode UI didn&#039;t work for me.&lt;/p&gt;
</description>
 <comments>http://www.potionfactory.com/blog/2007/11/04/how-keep-backwards-compatibility-and-be-less-grumpy-about-it#comments</comments>
 <category domain="http://www.potionfactory.com/blog/archives/cocoa">Cocoa</category>
 <category domain="http://www.potionfactory.com/blog/archives/software-development">Software Development</category>
 <category domain="http://www.potionfactory.com/blog/archives/tips">Tips</category>
 <pubDate>Sun, 04 Nov 2007 03:35:01 -0800</pubDate>
 <dc:creator>Andy Kim</dc:creator>
 <guid isPermaLink="false">215 at http://www.potionfactory.com</guid>
</item>
<item>
 <title>Email Voice Candy Recordings as MP3</title>
 <link>http://www.potionfactory.com/node/167</link>
 <description>&lt;p&gt;One of the feature in Voice Candy is the ability to add custom AppleScript actions to interact with different applications. One action that I think Voice Candy users might find handy is an action to send email with the recording in MP3 format. Currently, Voice Candy only records to the QuickTime movie format and so the &quot;Send Email&quot; action sends the recording as a .mov file which might not be accessible for recipients on PCs without QuickTime installed.&lt;/p&gt;
&lt;p&gt;So, in this post I would like to show you a way to send emails with MP3 recordings by using an AppleScript action.&lt;br /&gt;
&lt;!--break--&gt;&lt;br /&gt;
First, you need to download the following AppleScript file:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/files/blog/167/Email%20as%20MP3.scpt.zip&quot;&gt;&lt;img src=&quot;/files/blog/167/email_as_mp3_image.png&quot; alt=&quot;Email as MP3.scpt&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once you have the file, open Voice Candy&#039;s actions preference:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/files/blog/167/action_preference.png&quot; alt=&quot;Action Preference&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Hit the &quot;Add Action&quot; button and you will be presented with the following sheet:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/files/blog/167/add_action.png&quot; alt=&quot;Add Action&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Hit the &quot;Choose AppleScript...&quot; button and select the AppleScript file that you have just downloaded.&lt;br /&gt;
Enter the name for this action and hit &quot;Save&quot;.&lt;/p&gt;
&lt;p&gt;You will now notice that a new action &quot;Email as MP3&quot; is available from the list of actions:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/files/blog/167/action_list.png&quot; alt=&quot;Action List&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Now record something then perform the &quot;Email as MP3&quot; action. Tada:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/files/blog/167/mail_ss.png&quot; alt=&quot;Mail.app&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Hope you find this post useful. Best wishes in the year 2007.&lt;/p&gt;
&lt;p&gt;Update (01/14/07):&lt;/p&gt;
&lt;p&gt;You can also make a slight modification to the script file to perform different operations such as saving to Desktop:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/files/blog/167/Save%20as%20MP3.scpt.zip&quot;&gt;&lt;img src=&quot;/files/blog/167/save_as_mp3_image.png&quot; alt=&quot;Save as MP3.scpt&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</description>
 <comments>http://www.potionfactory.com/node/167#comments</comments>
 <category domain="http://www.potionfactory.com/blog/archives/tips">Tips</category>
 <category domain="http://www.potionfactory.com/blog/archives/voicecandy">Voice Candy</category>
 <pubDate>Sat, 30 Dec 2006 01:35:41 -0800</pubDate>
 <dc:creator>Jin Kim</dc:creator>
 <guid isPermaLink="false">167 at http://www.potionfactory.com</guid>
</item>
<item>
 <title>Voice Mail</title>
 <link>http://www.potionfactory.com/blog/2006/05/27/voice-mail</link>
 <description>&lt;p&gt;A Mr. Randy Harris comments about Voice Candy at MacUpdate:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
I&#039;ve been using Voice Candy for a few weeks now and I really like it a lot. I bought it with the intention of using it like a voice version of Apple&#039;s PhotoBooth, which my kids love.&lt;/p&gt;
&lt;p&gt;After using it a little I quickly realized that Voice Candy is about the best and easiest to use Voice eMail program that I&#039;ve run across.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;This put a broad grin on my face because while the effects are cool, we really wanted to make a general purpose voice recorder that is useful in addition to being fun. It is satisfying to see someone reaching that conclusion.&lt;/p&gt;
&lt;p&gt;In any case, there actually is something helpful in this post.&lt;/p&gt;
&lt;p&gt;If you are sending voice emails (or really just any attachments), like Mr. Harris here, and some of your recipients are Windows users, you will want to do this in Mail.app:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.potionfactory.com/blog/wp-content/uploads/2006/05/windows_attachments.jpg&quot; alt=&quot;Mail.app screenshot&quot;/&gt;&lt;/p&gt;
&lt;p&gt;If you don&#039;t do that, Mail.app will send two attachments: a &quot;Recording.mov&quot;, which is the real thing, and a &quot;._Recording.mov&quot;&amp;mdash;what we have come to call the &quot;shadow file&quot;.&lt;/p&gt;
&lt;p&gt;&quot;Uhm, Randy... I get no sound?&quot;, will be the response you get invariably because for some reason, they never click on the real file first. Part of the reason is because the shadow file shows up first in the attachments list. The other reason I won&#039;t say out loud.&lt;/p&gt;
&lt;p&gt;So what is this shadow file? Why is it there? Well, the file contains resource fork data. Windows users have no use for it, and frankly, I don&#039;t think Mac users have much use for it either these days.&lt;/p&gt;
&lt;p&gt;&lt;small&gt;[ Desktop image, &quot;Where Real Work Happens&quot;, courtesy of &lt;a class=&quot;el&quot; href=&quot;http://www.veer.com/ideas/wallpaper/2004/&quot;&gt;Veer&lt;/a&gt; ]&lt;/small&gt;&lt;/p&gt;
</description>
 <comments>http://www.potionfactory.com/blog/2006/05/27/voice-mail#comments</comments>
 <category domain="http://www.potionfactory.com/blog/archives/tips">Tips</category>
 <category domain="http://www.potionfactory.com/blog/archives/voicecandy">Voice Candy</category>
 <pubDate>Sat, 27 May 2006 06:36:36 -0700</pubDate>
 <dc:creator>Andy Kim</dc:creator>
 <guid isPermaLink="false">61 at http://www.potionfactory.com</guid>
</item>
<item>
 <title>Voice Candy Tip</title>
 <link>http://www.potionfactory.com/blog/2006/05/12/voice-candy-tip</link>
 <description>&lt;p&gt;&lt;img src=&quot;http://www.potionfactory.com/blog/wp-content/uploads/2006/05/vc_reminder.jpg&quot; style=&quot;float:left;margin-right:10px&quot; alt=&quot;Voice Candy reminder screenshot&quot;/&gt;Here is a tip for you Voice Candy users. The nice thing about the reminder clock is that you can easily set the time with just a click since it moves the hour hand to the position of the click. The downside is that you cannot drag the minute hand. You can however still adjust the minute hand by using your mouse scrollwheel. A bonus tip: When you are typing in the time and date, some characters will move the input focus to the next part. Those characters are:  ; : / . , - in addition to the tab and left and right arrow keys. I personally find the period to be the most convenient because I use the numpad.&lt;br /&gt;
&lt;br style=&quot;clear:both&quot;/&gt;&lt;/p&gt;
</description>
 <comments>http://www.potionfactory.com/blog/2006/05/12/voice-candy-tip#comments</comments>
 <category domain="http://www.potionfactory.com/blog/archives/tips">Tips</category>
 <category domain="http://www.potionfactory.com/blog/archives/voicecandy">Voice Candy</category>
 <pubDate>Fri, 12 May 2006 20:45:17 -0700</pubDate>
 <dc:creator>Andy Kim</dc:creator>
 <guid isPermaLink="false">55 at http://www.potionfactory.com</guid>
</item>
<item>
 <title>Password Protecting a Podcast</title>
 <link>http://www.potionfactory.com/blog/2006/02/20/password-protecting-podcast</link>
 <description>&lt;p&gt;&lt;img alt=&quot;Keys&quot; id=&quot;image43&quot; src=&quot;http://www.potionfactory.com/blog/wp-content/uploads/2006/02/keys.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A click is worth a thousand words.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;itpc://www.potionfactory.com/blog/wp-content/uploads/2006/02/locked/podcast.xml&quot;&gt;&lt;br /&gt;
&lt;big&gt;Click here!&lt;/big&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Surprised? I was too when I discovered that iTunes lets you access password protected podcasts.&lt;/p&gt;
&lt;p&gt;Oh, by the way, you can use the username &lt;em&gt;guest&lt;/em&gt; with the password &lt;em&gt;guest&lt;/em&gt; to access that podcast.&lt;/p&gt;
&lt;h3&gt;Why?&lt;/h3&gt;
&lt;p&gt;At first, password protecting a podcast might sound counterintuitive, but there are actually many reasons why you might want to do such a thing.&lt;!--break--&gt; You might be a teacher or professor who wants the podcast to be available only to your students. You might want to share the podcast with just your friends. I know some people who share their music this way. You might want to podcast your work to clients so that they are automatically updated as you publish changes. You might have a podcast that you want only your department to have access to. Or you might want to do a &quot;closed beta&quot; of your podcast.&lt;/p&gt;
&lt;h3&gt;How?&lt;/h3&gt;
&lt;p&gt;The feed you clicked on is protected through the standard HTTP authentication schemes. iTunes supports both the &quot;basic&quot; and &quot;digest&quot; flavors of HTTP authentication. Combined with SSL this will provide robust security for your podcast.&lt;/p&gt;
&lt;p&gt;Basically, you put a .htaccess file into the directory that contains your podcast feed with content that looks like this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
AuthType Digest&lt;br /&gt;
AuthName &quot;Potion Factory&quot;&lt;br /&gt;
AuthDigestFile /usr/local/apache/conf/digest_passwd&lt;br /&gt;
Require valid-user&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You also have to use the following shell command to make the digest_password file:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
htdigest -c /usr/local/apache/conf/digest_passwd &quot;Potion Factory&quot; user1&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;I suggest you don&#039;t try this yourself unless you really understand what is written above. There are many reasons why the above will not work. Ask your webmaster to do it for you if you are not comfortable.&lt;/p&gt;
&lt;p&gt;If you really want to try, here is a site with more detailed instructions:&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;el&quot; href=&quot;http://www.javascriptkit.com/howto/htaccess3.shtml&quot;&gt;Comprehensive guide to .htaccess - Password Protection&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Credit goes to Mr. Mark B. Priddy of &lt;a href=&quot;http://www.affiliatedmedia.com&quot;&gt;Affiliated Media Group&lt;/a&gt; for letting us know about this iTunes feature. We actually learned something answering a support email!&lt;/p&gt;
&lt;p&gt;&lt;b&gt;UPDATE&lt;/b&gt; (2/27/2006): You can password protect your podcast easily if you use FeedBurner. FeedBurner has an option to password protect your feed, which does exactly what I describe here. The only downside to the FeedBurner way is that it only allows one username and password, but it is still tremendously useful for something that only takes a few clicks.&lt;/p&gt;
</description>
 <comments>http://www.potionfactory.com/blog/2006/02/20/password-protecting-podcast#comments</comments>
 <category domain="http://www.potionfactory.com/blog/archives/podcasting">Podcasting</category>
 <category domain="http://www.potionfactory.com/blog/archives/tips">Tips</category>
 <pubDate>Mon, 20 Feb 2006 10:16:00 -0800</pubDate>
 <dc:creator>Andy Kim</dc:creator>
 <guid isPermaLink="false">28 at http://www.potionfactory.com</guid>
</item>
<item>
 <title>Moving An Existing FeedBurner Feed</title>
 <link>http://www.potionfactory.com/blog/2006/01/07/moving-existing-feedburner-feed</link>
 <description>&lt;p&gt;Justin Valiquette emailed us an excellent question which I will share with everyone.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;I have an existing Podcast that is registered with iTunes already. To create this podcast, I used the difficult method of creating a blog, and a feedburner account to create the .xml feed. I want to begin using Podcast Maker from now on.  Also, I just purchased new hosting space that I want to transfer all our existing podcasts to, and put all the new ones on.&lt;/p&gt;
&lt;p&gt;How can I create new podcasts using Podcast Maker that will register under the same podcast title on iTunes so people don&#039;t have to re-subscribe.&lt;/p&gt;
&lt;p&gt;Thanks,&lt;br /&gt;
Justin
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The nice thing about FeedBurner is that it acts as a layer between your real feed and your listeners. So even if your real feed moves, all you have to do is point FeedBurner to the new feed and your listeners won&#039;t even know that the switch happened. There are two parts to this move. Publishing your new feed, and reconfiguring FeedBurner.&lt;/p&gt;
&lt;h3&gt;Part 1 - Publishing Your New Feed &lt;/h3&gt;
&lt;p&gt;To publish the new feed, open up Podcast Maker and choose &lt;em&gt;File&lt;/em&gt; then &lt;em&gt;Import Podcast Feed&lt;/em&gt; in the menus.&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;blog_ss&quot; src=&quot;http://www.potionfactory.com/blog/wp-content/images/move-feedburner/1.jpg&quot; alt=&quot;screenshot&quot;/&gt;&lt;/p&gt;
&lt;p&gt;Put in your current feed URL in the dialog that pops up.&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;blog_ss&quot; src=&quot;http://www.potionfactory.com/blog/wp-content/images/move-feedburner/2.jpg&quot; alt=&quot;screenshot&quot;/&gt;&lt;/p&gt;
&lt;p&gt;After you hit the &lt;em&gt;Import&lt;/em&gt; button you will see a new document with your podcast. Now, if you don&#039;t need to move all your existing media files from its current location, all you have to do at this point is hit the &lt;em&gt;Publish&lt;/em&gt; button and upload your feed to the new server. Move on to Part 2 if this is you.&lt;/p&gt;
&lt;p&gt;If you also want to move all of your media files to the new server, transfer all those files to a new directory on the new server using your favorite FTP program. Make sure that it&#039;s accessible from a web browser.&lt;/p&gt;
&lt;p&gt;In Podcast Maker, choose each episode and look at its &lt;em&gt;Basic&lt;/em&gt; tab. At the bottom you will see a URL in the &lt;em&gt;Location&lt;/em&gt; field. Edit the URL of each episode to match your new server&#039;s URL.&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;blog_ss&quot; src=&quot;http://www.potionfactory.com/blog/wp-content/images/move-feedburner/3.jpg&quot; alt=&quot;screenshot&quot;/&gt;&lt;/p&gt;
&lt;p&gt;Now publish your feed. You are almost done. You just need a simple configuration change in FeedBurner.&lt;/p&gt;
&lt;h3&gt;Part 2 - Configure FeedBurner&lt;/h3&gt;
&lt;ol style=&quot;margin:15px 0 0 0; padding-left:10px;&quot;&gt;
&lt;li&gt;Login to FeedBurner and choose the feed that you are moving.&lt;/li&gt;
&lt;li&gt;Click on &lt;em&gt;Edit Feed Details...&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Put in your new feed URL in the &lt;em&gt;Original Feed&lt;/em&gt; field.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img class=&quot;blog_ss&quot; src=&quot;http://www.potionfactory.com/blog/wp-content/images/move-feedburner/4.jpg&quot; alt=&quot;screenshot&quot;/&gt;&lt;/p&gt;
&lt;p&gt;After this maneuver it will be easy to publish new episodes since you will be using Podcast Maker. The best part is that nobody will know that you changed anything.&lt;/p&gt;
&lt;p&gt;Thank you Justin for the excellent question.&lt;/p&gt;
</description>
 <comments>http://www.potionfactory.com/blog/2006/01/07/moving-existing-feedburner-feed#comments</comments>
 <category domain="http://www.potionfactory.com/blog/archives/podcasting">Podcasting</category>
 <category domain="http://www.potionfactory.com/blog/archives/tips">Tips</category>
 <pubDate>Sat, 07 Jan 2006 23:59:46 -0800</pubDate>
 <dc:creator>Andy Kim</dc:creator>
 <guid isPermaLink="false">16 at http://www.potionfactory.com</guid>
</item>
</channel>
</rss>
