<?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>Brett Terpstramac - Brett Terpstra</title>
	<atom:link href="http://brettterpstra.com/tag/mac/feed/" rel="self" type="application/rss+xml" />
	<link>http://brettterpstra.com</link>
	<description>Elegant solutions to complex problems.</description>
	<lastBuildDate>Fri, 03 Feb 2012 03:11:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>App Review: LiveReload</title>
		<link>http://brettterpstra.com/app-review-livereload/</link>
		<comments>http://brettterpstra.com/app-review-livereload/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 14:00:00 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[appreview]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=3334</guid>
		<description><![CDATA[<p>I linked LiveReload on Twitter the day I discovered it, but I haven’t given it a truly thorough test until tonight. Suffice to say I was impressed enough to take some time out to write it up. LiveReload is a tool for web designers. It watches for changes in a given folder and–in a way similar to what Marked does&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/app-review-livereload/">App Review: LiveReload</a></p>]]></description>
			<content:encoded><![CDATA[<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://cdn2.brettterpstra.com/wp-content/uploads/2011/12/live_reload_icon.jpg?9d7bd4" alt="Live Reload Icon" class="alignright colorbox-3334" height="250" width="250">I linked <a href="http://livereload.com/">LiveReload</a> on Twitter the day I discovered it, but I haven’t given it a truly thorough test until tonight. Suffice to say I was impressed enough to take some time out to write it up.</p>

<p>LiveReload is a tool for web designers. It watches for changes in a given folder and–in a way similar to what <a href="http://markedapp.com">Marked</a> does for Markdown files–it updates your web browser(s) whenever files with certain extensions change. Yes, you can (<a href="http://brettterpstra.com/watch-for-file-changes-and-refresh-your-browser-automatically/">and I have</a>) script your way to something similar, but LiveReload brings a few extra refinements to the job.</p>

<p>You have the option of adding a JavaScript snippet to the head of your HTML files on your development server, or (far better) you can use browser extensions in Safari, Firefox and Chrome. With either of these options in place, the coolest part of LiveReload becomes available: any changes to images or CSS are reflected live–and instantly–on the page without a reload. It’s not quite as “live” as <a href="http://www.macrabbit.com/espresso/">Espresso</a>, but it brings instant-preview editing to any of your favorite editors. Just add the watch folder, turn on the browser extensions and start saving. It also makes it possible to see previews in Gecko and Webkit browsers simultaneously without manually refreshing.</p>

<p>LiveReload has some powerful customizable options. You start by telling it which folders to watch, but you can get specific about which filetypes to watch as well. You can have it automatically compile SASS, LESS, CoffeeScript and others and control the output location for every individual file (if you like). You can also specify any shell command to run after changes are processed but before the browser refreshes. There’s really not much you <em>can’t</em> do with a setup like this.</p>

<p>LiveReload is in beta right now, but the development schedule appears to be on track. It’s ultimately headed for the App Store, and I don’t know what it will cost. If the price is reasonable for an app that I consider to be very useful–but could live without–I’ll definitely be picking up a copy when the time comes. There’s also a Windows version in the works, which might even help me solve some IE testing conundrums. We’ll see. For now, <a href="http://livereload.com/">check out the beta</a>, grab the <a href="http://help.livereload.com/kb/general-use/browser-extensions">browser extensions</a> and see what you think.</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/livereload-addendum/' rel='bookmark' title='LiveReload addendum'>LiveReload addendum</a></li>
<li><a href='http://brettterpstra.com/nvalt-browser-extensions/' rel='bookmark' title='nvALT Browser Extensions'>nvALT Browser Extensions</a></li>
<li><a href='http://brettterpstra.com/app-review-dropzone/' rel='bookmark' title='App Review: Dropzone'>App Review: Dropzone</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/app-review-livereload/">App Review: LiveReload</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/app-review-livereload/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mac App Giveaway: PDFpen</title>
		<link>http://brettterpstra.com/mac-app-giveaway-pdfpen/</link>
		<comments>http://brettterpstra.com/mac-app-giveaway-pdfpen/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 18:00:19 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[appreview]]></category>
		<category><![CDATA[giveaway]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mac app store]]></category>
		<category><![CDATA[productivity]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=3323</guid>
		<description><![CDATA[<p>This is the last of this run of Thanksgiving giveaways. There will be more soon, I promise, but Smile was generous enough to donate–in addition to the TextExpander licenses I gave away yesterday–three codes for PDFpen as well. I don’t usually run giveaways on apps I haven’t specifically reviewed, so I’ll try to roll both together here. PDFpen is an&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/mac-app-giveaway-pdfpen/">Mac App Giveaway: PDFpen</a></p>]]></description>
			<content:encoded><![CDATA[<p><img style=' display: block; margin-right: auto; margin-left: auto;'  src="http://cdn2.brettterpstra.com/wp-content/uploads/2011/12/pdfpengiveaway.jpg?9d7bd4" alt="PDFpen giveaway header image" title="PDFpen giveaway" width="650" height="186" class="aligncenter size-full wp-image-3324 colorbox-3323" /></p>

<p>This is the last of this run of Thanksgiving giveaways. There will be more soon, I promise, but Smile was generous enough to donate–in addition to the TextExpander licenses I gave away yesterday–three codes for <a href="http://smilesoftware.com/PDFpen/index.html">PDFpen</a> as well. I don’t usually run giveaways on apps I haven’t specifically reviewed, so I’ll try to roll both together here.</p>

<p>PDFpen is an amazing tool for anyone who works with PDF files. It can do OCR (Optical Character Recognition) on scanned documents to turn them into editable text, and it provides tools for correcting, annotating and redacting that text. It can handle digital signatures, too, so you can sign and return a PDF contract or paperwork without ever having to print or scan. It can fill forms, compress files, merge documents… it’s a workhorse and on par with Adobe Acrobat Pro in just about every regard (except for the areas it’s even better at).</p>

<p>The standard license for <a href="http://itunes.apple.com/us/app/pdfpen-for-mac/id403624960?mt=12">PDFpen on the App Store</a> is US $59.99, and there’s a <a href="http://itunes.apple.com/us/app/pdfpenpro-for-mac/id403758325?mt=12">Pro version available</a> for US $99.99 which adds form creation, website saving and table of contents generation. I have three App Store codes for the standard version to give away.</p>

<p>As always, just leave a comment on this post and you’ll be added to the list for the Giveaway Robot to randomly select from. One comment per person, please, and use a unique name to make announcing the winners easier. The drawing will take place at <strong>noon on Monday, December 5th</strong>. Drop a comment before then for a chance at a $60 app, free!</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/mac-app-giveaway-textexpander/' rel='bookmark' title='Mac App Giveaway: TextExpander'>Mac App Giveaway: TextExpander</a></li>
<li><a href='http://brettterpstra.com/mac-app-giveaway-byword/' rel='bookmark' title='Mac App Giveaway: Byword'>Mac App Giveaway: Byword</a></li>
<li><a href='http://brettterpstra.com/app-giveaway-dropzone/' rel='bookmark' title='Mac App Giveaway: Dropzone'>Mac App Giveaway: Dropzone</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/mac-app-giveaway-pdfpen/">Mac App Giveaway: PDFpen</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/mac-app-giveaway-pdfpen/feed/</wfw:commentRss>
		<slash:comments>169</slash:comments>
		</item>
		<item>
		<title>The second Marked giveaway!</title>
		<link>http://brettterpstra.com/the-second-marked-giveaway/</link>
		<comments>http://brettterpstra.com/the-second-marked-giveaway/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 14:00:55 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[giveaway]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[markdown]]></category>
		<category><![CDATA[marked]]></category>
		<category><![CDATA[multimarkdown]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=3255</guid>
		<description><![CDATA[<p>Following up on the 50% off Marked sale over the weekend, I’m putting three more Marked promo codes up for grabs. Marked is my own MultiMarkdown preview app which works with any text editor to provide an updated preview every time you save your file. There’s a new version of Marked on the horizon with a few new features, and&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/the-second-marked-giveaway/">The second Marked giveaway!</a></p>]]></description>
			<content:encoded><![CDATA[<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://cdn2.brettterpstra.com/wp-content/uploads/2011/11/newmarkedlogo.png?9d7bd4" class="alignright colorbox-3255" width="122" height="140" />Following up on the 50% off Marked sale over the weekend, I’m putting three more <a href="http://markedapp.com">Marked</a> promo codes up for grabs. Marked is my own MultiMarkdown preview app which works with any text editor to provide an updated preview every time you save your file.</p>

<p>There’s a new version of Marked on the horizon with a few new features, and one a little down the road with built-in support for <a href="http://brettterpstra.com/marked-scripts-nvalt-evernote-marsedit-scrivener/">more applications</a> (that aren’t necessarily straight text editors). Enter for a promo code (by leaving a comment on this post) and you’ll have a chance at a free copy ($3.99). In addition to a fine app, winners will, of course, get free updates as they come out. Winners will be drawn at random from the comments on this post at noon on Saturday, December 3rd. Good luck!</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/marked-1-3-drawing-winners/' rel='bookmark' title='Marked 1.3 drawing winners'>Marked 1.3 drawing winners</a></li>
<li><a href='http://brettterpstra.com/marked-1-3-released-plus-5-free-copies/' rel='bookmark' title='Marked 1.3 released, plus 5 free copies!'>Marked 1.3 released, plus 5 free copies!</a></li>
<li><a href='http://brettterpstra.com/marked-is-on-the-mac-app-store/' rel='bookmark' title='Marked is on the Mac App Store'>Marked is on the Mac App Store</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/the-second-marked-giveaway/">The second Marked giveaway!</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/the-second-marked-giveaway/feed/</wfw:commentRss>
		<slash:comments>49</slash:comments>
		</item>
		<item>
		<title>Mac App Giveaway: Byword</title>
		<link>http://brettterpstra.com/mac-app-giveaway-byword/</link>
		<comments>http://brettterpstra.com/mac-app-giveaway-byword/#comments</comments>
		<pubDate>Sun, 27 Nov 2011 14:00:10 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[giveaway]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mac app store]]></category>
		<category><![CDATA[markdown]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=3282</guid>
		<description><![CDATA[<p>I’m really excited to be putting this one up: Five promo codes for Byword for Mac. It’s US $9.99 on the App Store, but leave a comment on this post and have a chance to pick up a copy for free! I’ve mentioned Byword before, and it’s one of my favorite writing tools on my Mac. It has great tools&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/mac-app-giveaway-byword/">Mac App Giveaway: Byword</a></p>]]></description>
			<content:encoded><![CDATA[<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://cdn2.brettterpstra.com/wp-content/uploads/2011/08/byword_icon_200.jpg?9d7bd4" class="alignright colorbox-3282" />I’m really excited to be putting this one up: Five promo codes for <a href="http://bywordapp.com/">Byword</a> for Mac. It’s US $9.99 <a href="http://itunes.apple.com/us/app/byword/id420212497?mt=12">on the App Store</a>, but <a href="#leave-a-reply">leave a comment</a> on this post and have a chance to pick up a copy for free! I’ve <a href="http://brettterpstra.com/app-review-byword/">mentioned Byword before</a>, and it’s one of my favorite writing tools on my Mac. It has great tools for Markdown writers, too, and some very handy <a href="http://brettterpstra.com/byword-for-keyboard-nerds/">keyboard shortcuts</a>.</p>

<p>Leave a comment below to be entered in the drawing. The “robot” will be randomly selecting winners from the list on Friday, December 2nd at noon. The lucky winners will be notified by email (so use a valid address on your comment). Good luck, and be sure to check out all of the <a href="http://brettterpstra.com/tag/giveaway/">other great giveaways</a> running right now!</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/mac-app-giveaway-textexpander/' rel='bookmark' title='Mac App Giveaway: TextExpander'>Mac App Giveaway: TextExpander</a></li>
<li><a href='http://brettterpstra.com/mac-app-giveaway-pdfpen/' rel='bookmark' title='Mac App Giveaway: PDFpen'>Mac App Giveaway: PDFpen</a></li>
<li><a href='http://brettterpstra.com/app-review-byword/' rel='bookmark' title='App Review: Byword'>App Review: Byword</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/mac-app-giveaway-byword/">Mac App Giveaway: Byword</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/mac-app-giveaway-byword/feed/</wfw:commentRss>
		<slash:comments>135</slash:comments>
		</item>
		<item>
		<title>Mac App Giveaway: MultiMarkdown Composer</title>
		<link>http://brettterpstra.com/mac-app-giveaway-multimarkdown-composer/</link>
		<comments>http://brettterpstra.com/mac-app-giveaway-multimarkdown-composer/#comments</comments>
		<pubDate>Sat, 26 Nov 2011 14:00:47 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[giveaway]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mac app store]]></category>
		<category><![CDATA[markdown]]></category>
		<category><![CDATA[multimarkdown]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=3290</guid>
		<description><![CDATA[<p>Continuing the very exciting Thanksgiving giveaways today I have five promo codes for Fletcher Penney’s MultiMarkdown Composer (reviewed here). It’s a text editor packed with features for editing Markdown and MultiMarkdown, including syntax highlighting, document header navigation, shortcuts for adding MultiMarkdown syntax and much more. The latest version in development includes some really exciting new features: A HUD panel shows&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/mac-app-giveaway-multimarkdown-composer/">Mac App Giveaway: MultiMarkdown Composer</a></p>]]></description>
			<content:encoded><![CDATA[<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://cdn2.brettterpstra.com/wp-content/uploads/2011/11/MultiMarkdown-Composer_icon.jpg?9d7bd4" alt="MultiMarkdown Composer icon" title="MultiMarkdown Composer icon" width="250" height="250" class="alignright size-full wp-image-3292 colorbox-3290" />Continuing the very exciting Thanksgiving <a href="http://brettterpstra.com/tag/giveaway/">giveaways</a> today I have five promo codes for Fletcher Penney’s <a href="http://multimarkdown.com/">MultiMarkdown Composer</a> (<a href="http://brettterpstra.com/multimarkdown-composer-hits-the-app-store/">reviewed here</a>). It’s a text editor packed with features for editing Markdown and MultiMarkdown, including syntax highlighting, document header navigation, shortcuts for adding MultiMarkdown syntax and much more.</p>

<p>The latest version in development includes some really exciting new features:</p>

<ul>
<li>A HUD panel shows a list of labels that have been defined in your document that can be used when creating links, footnotes, citations, etc. This can be used to remind yourself of which label you used previously to define an element by reference. Another HUD panel shows word, paragraph, and character counts for your documents.</li>
<li>A group of new key commands for selecting and moving parts of your document around without using the mouse, as well as for creating and cleaning up lists automatically.</li>
<li>Composer now uses <a href="http://developer.apple.com/library/mac/#documentation/FileManagement/Conceptual/understanding_utis/understand_utis_conc/understand_utis_conc.html">UTIs</a> to define which documents it can open/save. This will have several behind-the-scenes benefits when it comes to saving, opening, previewing, and indexing documents for Spotlight searches.</li>
<li>Significant improvements to responsiveness when working with long documents (e.g. using the ToC to scroll).</li>
<li>Improved support for <code>font-size</code> and <code>font-family</code> in stylesheets. These will help <a href="http://brettterpstra.com/a-few-themes-for-multimarkdown-composer/">my own themes</a> work more smoothly.</li>
<li>Plenty more!</li>
</ul>

<p>Picking up a license now gets you free access to all of the new features when they’re released. Comment below for a chance at one of the five licenses (<a href="http://itunes.apple.com/us/app/multimarkdown-composer/id473566589?ls=1&amp;mt=12">App Store</a> US $9.99). Winners will be drawn at random (by the Giveaway Robot) on <strong>Thursday, December 1st at noon.</strong></p>

<p>Notification is via email, so be sure to use a valid address. It’s also helpful to use a unique name (first and last preferred, but anything to help avoid duplicates) so announcements of the winners don’t get the <em>other</em> “Rob” or “Jim” all excited, only to be disappointed when they figure out it wasn’t them.</p>

<p>There are still a few more (very exciting) giveaways coming up over the next couple of days, so keep checking back. There’s no rule against entering for all of them (once each, please, or the robot gets angry. You don’t want to see him angry), so keep at it!</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/mac-app-giveaway-pdfpen/' rel='bookmark' title='Mac App Giveaway: PDFpen'>Mac App Giveaway: PDFpen</a></li>
<li><a href='http://brettterpstra.com/marked-is-on-the-mac-app-store/' rel='bookmark' title='Marked is on the Mac App Store'>Marked is on the Mac App Store</a></li>
<li><a href='http://brettterpstra.com/break-up-your-text-documents/' rel='bookmark' title='Break up your text documents'>Break up your text documents</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/mac-app-giveaway-multimarkdown-composer/">Mac App Giveaway: MultiMarkdown Composer</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/mac-app-giveaway-multimarkdown-composer/feed/</wfw:commentRss>
		<slash:comments>95</slash:comments>
		</item>
		<item>
		<title>Mac App Giveaway: TextExpander</title>
		<link>http://brettterpstra.com/mac-app-giveaway-textexpander/</link>
		<comments>http://brettterpstra.com/mac-app-giveaway-textexpander/#comments</comments>
		<pubDate>Fri, 25 Nov 2011 18:00:25 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[giveaway]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mac app store]]></category>
		<category><![CDATA[textexpander]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=3295</guid>
		<description><![CDATA[<p>Since it’s Black Friday, I’m going to run a second giveaway today: TextExpander. It’s one of my all-time favorite Mac utilities, and I have quite a few free snippets available to demonstrate its usefulness. It’s available in the Mac App Store for US $34.99, and it’s worth every penny. Today, though, you can comment below and be entered for a&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/mac-app-giveaway-textexpander/">Mac App Giveaway: TextExpander</a></p>]]></description>
			<content:encoded><![CDATA[<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://cdn2.brettterpstra.com/wp-content/uploads/2011/11/TextExpander_icon.jpg?9d7bd4" alt="" title="TextExpander_icon" width="250" height="250" class="alignright size-full wp-image-3296 colorbox-3295" />Since it’s Black Friday, I’m going to run a second giveaway today: <a href="http://smilesoftware.com/TextExpander/index.html">TextExpander</a>. It’s one of my <a href="http://brettterpstra.com/tag/textexpander/">all-time favorite</a> Mac utilities, and I have quite a few <a href="http://brettterpstra.com/project/textexpander-tools/">free snippets available</a> to demonstrate its usefulness. It’s available <a href="http://itunes.apple.com/us/app/textexpander-for-mac/id405274824?mt=12">in the Mac App Store</a> for US $34.99, and it’s worth every penny. Today, though, you can <a href="#leave-a-reply">comment below</a> and be entered for a chance at one of three free licenses.</p>

<p>Winners will be drawn <strong>at noon on Wednesday, November 30th</strong> and notified by email. Please use a valid email address and a unique name (to make announcing the winners easier). One entry per person per giveaway, but feel free to enter for <a href="http://brettterpstra.com/tag/giveaway/">every giveaway</a> I’m running this week! I have a <em>lot</em> of amazing applications to share right now… keep checking back, there are at least three more coming before this madness ends!</p>

<p>Smile, the company behind TextExpander, is also running their own special for Black Friday. Today only, get <a href="http://smilesoftware.com/PDFpen/index.html">PDFPen</a> or <a href="http://smilesoftware.com/PDFpenPro/index.html">PDFPenPro</a> for <a href="http://sites.fastspring.com/smile/product/pdfpen5new&amp;coupon=FRIDAYPDFPEN">50% off</a>. It’s the perfect time to jump on one of the most powerful tools available for creating fillable forms and working with PDF files.</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/mac-app-giveaway-byword/' rel='bookmark' title='Mac App Giveaway: Byword'>Mac App Giveaway: Byword</a></li>
<li><a href='http://brettterpstra.com/mac-app-giveaway-pdfpen/' rel='bookmark' title='Mac App Giveaway: PDFpen'>Mac App Giveaway: PDFpen</a></li>
<li><a href='http://brettterpstra.com/mac-app-giveaway-multimarkdown-composer/' rel='bookmark' title='Mac App Giveaway: MultiMarkdown Composer'>Mac App Giveaway: MultiMarkdown Composer</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/mac-app-giveaway-textexpander/">Mac App Giveaway: TextExpander</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/mac-app-giveaway-textexpander/feed/</wfw:commentRss>
		<slash:comments>140</slash:comments>
		</item>
		<item>
		<title>Mac App Giveaway: Dropzone</title>
		<link>http://brettterpstra.com/app-giveaway-dropzone/</link>
		<comments>http://brettterpstra.com/app-giveaway-dropzone/#comments</comments>
		<pubDate>Fri, 25 Nov 2011 14:00:59 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[giveaway]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=3251</guid>
		<description><![CDATA[<p>Well, it’s Black Friday. If you’re not trampled outside of some big box store somewhere, I have a special surprise for you. Five App Store codes for Dropzone (US $13.99), to be precise. It’s one of my favorite Mac utilities and–if you don’t already have it–I recommend jumping on this chance for a free copy! Leave a comment on this&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/app-giveaway-dropzone/">Mac App Giveaway: Dropzone</a></p>]]></description>
			<content:encoded><![CDATA[<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://cdn2.brettterpstra.com/wp-content/uploads/2011/11/dropzoneicon.png?9d7bd4" class="alignright colorbox-3251" width="150" height="150" />Well, it’s Black Friday. If you’re not trampled outside of some big box store somewhere, I have a special surprise for you. Five App Store codes for <a href="http://itunes.apple.com/us/app/dropzone/id464733615?mt=12">Dropzone</a> (US $13.99), to be precise. It’s one of my <a href="http://brettterpstra.com/app-review-dropzone/">favorite Mac utilities</a> and–if you don’t already have it–I recommend jumping on this chance for a free copy!</p>

<p>Leave a comment on this post to enter. Five winners will be randomly selected from the comments on Thursday, December 1st at noon and notified by email.</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/mac-app-giveaway-byword/' rel='bookmark' title='Mac App Giveaway: Byword'>Mac App Giveaway: Byword</a></li>
<li><a href='http://brettterpstra.com/mac-app-giveaway-textexpander/' rel='bookmark' title='Mac App Giveaway: TextExpander'>Mac App Giveaway: TextExpander</a></li>
<li><a href='http://brettterpstra.com/the-second-marked-giveaway/' rel='bookmark' title='The second Marked giveaway!'>The second Marked giveaway!</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/app-giveaway-dropzone/">Mac App Giveaway: Dropzone</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/app-giveaway-dropzone/feed/</wfw:commentRss>
		<slash:comments>153</slash:comments>
		</item>
		<item>
		<title>What? You want QuickCal for free? Ok.</title>
		<link>http://brettterpstra.com/what-you-want-quickcal-for-free-ok/</link>
		<comments>http://brettterpstra.com/what-you-want-quickcal-for-free-ok/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 14:23:20 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[giveaway]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/what-you-want-quickcal-for-free-ok/</guid>
		<description><![CDATA[<p>Yet another giveaway here at brettterpstra.com. We’re wheeling, we’re dealing… and I got you five licenses for the excellent QuickCal application for Mac (and iOS, but we’re not giving those out… yet). If you haven’t used it, it’s a way to add events and todos to your calendar using natural language. I could say, for example, “End the QuickCal giveaway&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/what-you-want-quickcal-for-free-ok/">What? You want QuickCal for free? Ok.</a></p>]]></description>
			<content:encoded><![CDATA[<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://cdn2.brettterpstra.com/wp-content/uploads/2011/10/quickcal_icon.jpeg?9d7bd4" alt="Quickcal icon" height="206" width="250" class="alignright colorbox-2901"></p>

<p>Yet another giveaway here at brettterpstra.com. We’re wheeling, we’re dealing… and I got you five licenses for the excellent <a href="http://quickcalapp.com/">QuickCal application for Mac</a> (and iOS, but we’re not giving those out… yet). If you haven’t used it, it’s a way to add events and todos to your calendar using natural language. I could say, for example, “End the QuickCal giveaway noon on Wednesday” and I’d get a new calendar event set for noon on Wednesday, October 05, 2011 with the title “End the QuickCal giveaway.”</p>

<p>I wrote about a <a href="http://www.tuaw.com/2011/03/25/quickcal-for-mac-natural-language-events-and-todos-for-ical/">recent version at TUAW</a> if you’re looking for more in-depth coverage. Trust me when I say this is one of those apps that can change the way you work with your calendar. It works with iCal, BusyCal and Google Calendar and includes conflict detection and smart reminders. Leave a comment for a chance to pick up a free license! The drawing will occur on Wednesday at noon.</p>

<p>QuickCal has a sweet <a href="http://vimeo.com/29486540">video on Vimeo</a> if you want to watch the magic happen.</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/the-quickcal-winners/' rel='bookmark' title='The QuickCal winners'>The QuickCal winners</a></li>
<li><a href='http://brettterpstra.com/mac-app-giveaway-textexpander/' rel='bookmark' title='Mac App Giveaway: TextExpander'>Mac App Giveaway: TextExpander</a></li>
<li><a href='http://brettterpstra.com/quick-link-bro-show-85/' rel='bookmark' title='Quick Link: Bro Show #85'>Quick Link: Bro Show #85</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/what-you-want-quickcal-for-free-ok/">What? You want QuickCal for free? Ok.</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/what-you-want-quickcal-for-free-ok/feed/</wfw:commentRss>
		<slash:comments>164</slash:comments>
		</item>
		<item>
		<title>App Review: Byword</title>
		<link>http://brettterpstra.com/app-review-byword/</link>
		<comments>http://brettterpstra.com/app-review-byword/#comments</comments>
		<pubDate>Fri, 26 Aug 2011 14:54:02 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[appreview]]></category>
		<category><![CDATA[byword]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=2554</guid>
		<description><![CDATA[<p>In the interest of actually getting going on app reviews on this blog, I’m mentioning a somewhat obvious one: Byword. While I still write my drafts in nvALT and do the heavy lifting and linking in TextMate with my Blogsmith Bundle, Byword has quickly become the place where I actually do my writing. I’m not a big advocate of “distraction-free”&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/app-review-byword/">App Review: Byword</a></p>]]></description>
			<content:encoded><![CDATA[<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://cdn2.brettterpstra.com/wp-content/uploads/2011/08/byword_icon_200.jpg?9d7bd4" class="alignright colorbox-2554"></p>

<p>In the interest of actually getting going on app reviews on this blog, I’m mentioning a somewhat obvious one: <a href="http://bywordapp.com/">Byword</a>. While I still write my drafts in <a href="http://brettterpstra.com/project/nvalt/">nvALT</a> and do the heavy lifting and linking in TextMate with my <a href="http://bundle.weblogzinc.com/">Blogsmith Bundle</a>, Byword has quickly become the place where I actually do my writing.</p>

<p>I’m not a big advocate of “distraction-free” writing. I’ve never found that I need it, despite my ADD and generally short attention span. The fact is that as I write I’m constantly checking facts and links in my browser, and it’s mostly pointless to keep switching screens to do that. Byword is great for me because it doesn’t focus solely on the distraction free aspect. Full-screen and “focus” modes are available, and it does a beautiful job with them, but it puts an equal amount of effort into just creating a pleasant atmosphere for writing. Great themes, great fonts and even some of the Markdown-specific tools (auto-pairing, wrapping and list continuation) that I’m always begging for.</p>

<p><del datetime="2011-08-26T16:13:54+00:00">Byword’s developer</del><ins datetime="2011-08-26T16:13:54+00:00">One of Byword’s developers</ins>, Jorge Pedroso, has told me that nvALT and some of my other projects were an inspiration for the Markdown features in Byword, which is hugely flattering to me. He’s also released a <a href="http://bywordapp.com/extras/index.html">custom stylesheet</a> for <a href="http://markedapp.com">Marked</a> which brings Byword’s beautiful styling to any Markdown document.</p>

<p>If you write, whether it’s long-form or quick blog posts, Byword is an excellent way to do so. There’s a lot of competition in this field; I’ve tried them all (seriously), but Byword has become my writing tool of choice on the Mac. You can pick it up <a href="http://itunes.apple.com/us/app/byword/id420212497?mt=12">on the Mac App Store</a> for $9.99 US and it’s worth every penny.</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/mac-app-giveaway-byword/' rel='bookmark' title='Mac App Giveaway: Byword'>Mac App Giveaway: Byword</a></li>
<li><a href='http://brettterpstra.com/ios-app-review-writeup/' rel='bookmark' title='iOS App Review: WriteUp'>iOS App Review: WriteUp</a></li>
<li><a href='http://brettterpstra.com/sticking-with-what-i-know/' rel='bookmark' title='Sticking with what I know'>Sticking with what I know</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/app-review-byword/">App Review: Byword</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/app-review-byword/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Quick Tip: fixing the “other account” Mac App Store issue</title>
		<link>http://brettterpstra.com/quick-tip-fixing-the-other-account-mac-app-store-issue/</link>
		<comments>http://brettterpstra.com/quick-tip-fixing-the-other-account-mac-app-store-issue/#comments</comments>
		<pubDate>Wed, 08 Jun 2011 21:14:41 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mac app store]]></category>
		<category><![CDATA[quicktip]]></category>
		<category><![CDATA[solutions]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=2380</guid>
		<description><![CDATA[<p>Quick tips are random posts regarding something I discovered on my way to something bigger. They usually get longer than “quick” would imply, for which I refuse to apologize. I like the Mac App Store. I’ve purchased a lot of apps since it opened, and I dig the centralized update system. I’ve been having this issue on my MacBook Air,&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/quick-tip-fixing-the-other-account-mac-app-store-issue/">Quick Tip: fixing the “other account” Mac App Store issue</a></p>]]></description>
			<content:encoded><![CDATA[<p><em><a href="http://brettterpstra.com/tag/quicktip/">Quick tips</a> are random posts regarding something I discovered on my way to something bigger. They usually get longer than “quick” would imply, for which I refuse to apologize.</em></p>

<p>I like the Mac App Store. I’ve purchased a <em>lot</em> of apps since it opened, and I dig the centralized update system. I’ve been having this issue on my MacBook Air, though, where trying to update an installed app would trigger a dialog which says “You have updates available for other accounts…” and suggest that I log in with that account to update my software. Thing is, I only have one Apple ID, one account.</p>

<p>After digging around and trying various things, I found <a href="https://discussions.apple.com/thread/2718993?start=0&amp;tstart=0">this thread</a> in the Apple Support Communities. The solution, buried in there somewhere, was to both repair disk permissions in Disk Utility and rebuild my Spotlight index. You can rebuild your index simply by adding your entire hard drive to the Privacy settings in Spotlight’s System Preferences panel and then removing it. You can do it from the command line or from a utility such as Cocktail<sup id="fnref:cocktail"><a href="#fn:cocktail" rel="footnote">1</a></sup>, too, but don’t make it complicated.</p>

<p>After doing both (in that order), I’ve been able to update without hassle. Somehow, it made LaunchBar stop indexing my applications, but I’ll figure that out when I have time…</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:cocktail">
<p>Cocktail’s a great utility app for cleaning up log files, caches, etc. and handling a gazillion system tasks and maintenance. Plus, it doesn’t mess up apps like 1Password the way that other “cleaning” apps tend to. <a href="http://www.maintain.se/cocktail/index.php">Check it out</a>. <a href="#fnref:cocktail" rev="footnote">↩</a></p>
</li>

</ol>
</div>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/quick-tip-extracting-mac-app-store-reviews-as-text/' rel='bookmark' title='Quick Tip: Extracting Mac App Store reviews as text'>Quick Tip: Extracting Mac App Store reviews as text</a></li>
<li><a href='http://brettterpstra.com/a-cheat-sheet-for-app-store-pricing/' rel='bookmark' title='A cheat sheet for App Store pricing'>A cheat sheet for App Store pricing</a></li>
<li><a href='http://brettterpstra.com/tunesque-1-1-2/' rel='bookmark' title='Tunesque 1.1.2'>Tunesque 1.1.2</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/quick-tip-fixing-the-other-account-mac-app-store-issue/">Quick Tip: fixing the “other account” Mac App Store issue</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/quick-tip-fixing-the-other-account-mac-app-store-issue/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Mac and iOS mind mapping app extravaganza</title>
		<link>http://brettterpstra.com/the-mac-and-ios-mind-mapping-app-extravaganza/</link>
		<comments>http://brettterpstra.com/the-mac-and-ios-mind-mapping-app-extravaganza/#comments</comments>
		<pubDate>Sun, 22 May 2011 19:42:08 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mind mapping]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[working]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=2342</guid>
		<description><![CDATA[<p>Most of my projects start out as mind maps (which I may have mentioned before). Whether it’s a packing list, a blog post or a TextMate bundle, I find it easiest to organize my (often scattered) thoughts using what Tony Buzan calls radiant thinking. Lists and outlines are rarely as effective as the non-linear format of a mind map. For&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/the-mac-and-ios-mind-mapping-app-extravaganza/">The Mac and iOS mind mapping app extravaganza</a></p>]]></description>
			<content:encoded><![CDATA[<div id="attachment_2344" class="wp-caption alignright" style="width: 310px;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; float: right;"><a href="http://cdn2.brettterpstra.com/wp-content/uploads/2011/05/creative-intelligence-mindmap.jpg?9d7bd4"><img src="http://cdn2.brettterpstra.com/wp-content/uploads/2011/05/creative-intelligence-mindmap-300x235.jpg?9d7bd4" alt="Mind map example" title="Creative intelligence mindmap" width="300" height="235" class="size-medium wp-image-2344 colorbox-2342" /></a><p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">Courtesy of <a href=&quot;http://www.buzan.com.au/learning/mindmapgallery.html&quot;>Buzan Center Australia</a>.</p></div>

<p>Most of my projects start out as <a href="http://en.wikipedia.org/wiki/Mind_map">mind maps</a> (which I may have <a href="http://www.tuaw.com/tag/mind+mapping/">mentioned before</a>). Whether it’s a packing list, a blog post or a TextMate bundle, I find it easiest to organize my (often scattered) thoughts using what <a href="http://en.wikipedia.org/wiki/Tony_Buzan">Tony Buzan</a> calls <a href="http://www.yourweeklytutor.com/2009/10/mind-maps-are-expression-of-radiant.html">radiant thinking</a>. Lists and outlines are rarely as effective as the non-linear format of a mind map. For me, if it involves brainstorming, it involves mind maps.</p>

<p>This post isn’t about <em>how</em> to mind map (but <a href="http://litemind.com/what-is-mind-mapping/">this one is</a>). It’s a summary of the process by which I settled on my current set of tools. I used <a href="http://www.mindjet.com/">Mindjet MindManager</a> (Mac) together with the web app <a href="http://www.mindmeister.com/">MindMeister</a> for years. As with all things in the Mac app world, I played with every mind mapping application that came out, but only recently have I found myself actually looking for a new workflow. It has, primarily, to do with three things: frustration with MindManager, the advent of the iPad, and a wealth of new alternatives. I’m currently down to a collection of solutions across three platforms (Mac, iOS and web) which meet all of my requirements and offer interoperability with each other and other tools in my workflow.</p>

<p><span id="more-2342"></span></p>

<h3>What went wrong with MindManager</h3>

<p>In my opinion, MindManager is still the most powerful mix of ease-of-use, OS integration and aesthetic options on the market. In recent years, though, it’s been apparent that the Mac platform has become an afterthought for the developers. The Windows versions are taking leaps and bounds, and the Mac version has little parity with its feature set. The new features in the last $99 upgrade were pretty much useless to me; in my workflow they were just feature bloat. The decision to find something else was based mostly on disappointment with the development and what I consider to be unduly expensive prices, even for existing customers.</p>

<h3>The options</h3>

<p>Here’s my checklist of features that I knew I needed in any app I was going to consider:</p>

<ul>
<li>Intuitive keyboard navigation</li>
<li>The ability to visually connect non-contiguous nodes</li>
<li>Support for images</li>
<li>Sufficient export options

<ul>
<li>at the least, <a href="http://www.macsparky.com/blog/2011/1/18/dancing-with-opml.html">OPML</a>, PDF and a format interoperable with other mapping applications (Freemind is pretty standard)</li>
</ul></li>
<li>The ability to import other mind map formats, and preferably OPML</li>
<li>Smart/auto layout (moves existing nodes out of the way of new nodes without interaction)</li>
</ul>

<h4>On the Mac</h4>

<p>There’s a fairly wide field of options to consider. I’m quite certain I’ve tried everything available on both Mac and iOS at this point. For Mac, these include <a href="http://www.novamind.com/">NovaMind</a>, <a href="http://www.thinkbuzan.com/">iMindMap</a>, <a href="http://freemind.sourceforge.net/wiki/index.php/Main_Page">Freemind</a>, <a href="http://www.mindnode.com/">MindNode</a>, <a href="http://www.xmind.net/">XMind</a> and <a href="http://www.zengobi.com/products/curio/">Curio</a>, among others. I already use Curio for project management, and it’s an excellent choice for any information gathering and organization, but I find it to be overkill when I just want to mind map. I also ruled out NovaMind because I found it a bit unwieldy, though I think that the developer is onto some great things. I ruled out Freemind because it’s old and ugly, and I’m prejudiced like that. XMind and iMindMap are nice and easy to use, but their Java roots and lack of OS integration were turnoffs for me. The one that met my needs <em>and</em> my standards almost perfectly was <a href="http://itunes.apple.com/us/app/mindnode-pro/id402398561?mt%3D12">MindNode Pro</a>.</p>

<p>In a nutshell, MindNode is a minimalist mind mapping application that does exactly what it needs to. It’s easily usable with just the keyboard (customizable shortcuts, even), handles auto-coloring and map layout smoothly and integrates with standard OS X media options and features. You can quickly customize a limited set of options (branch color, font, node width) using standard palettes and tools, and you can add images, audio and file links quickly via drag and drop or from a media palette (with Quick Look support). In short, it meets my needs and has zero feature bloat.</p>

<h4>On the web</h4>

<p>There’s really only one option for web-based mind mapping that I’ve found worthy: <a href="http://www.mindmeister.com/">MindMeister</a>. It’s nearly as nice to use as a desktop app, has some very cool extra features without being too heavy, and its import and export options fit perfectly in my workflow. It can also share embedded, interactive maps.</p>

<p>The <a href="http://www.mindmeister.com/services/tools/geistesblitz_widgets">Geistesblitz</a> feature uses the (extensive) API to make it possible to add quick thoughts to a map from just about anywhere: Dashboard, a web browser, iPhone, iPad, etc. The API has also allowed me to integrate similar functionality into <a href="http://obdev.at/products/launchbar/index.html">LaunchBar</a>, <a href="http://qsapp.com/download.php">QuickSilver</a> and <a href="http://macromates.com/">TextMate</a>, to name a few.  Best of all, it supports live collaboration with realtime updates, chat and permission control. If I’m collaborating with others I run it in <a href="http://fluidapp.com/">Fluid</a> instead of using a desktop application.</p>

<h4>On the iPad</h4>

<p>There are some amazing options for mobile mind mapping. I won’t list them all, just the ones I actually use:</p>

<ul>
<li><a href="http://itunes.apple.com/us/app/mindnode/id312220102?mt=8">MindNode</a></li>
<li><a href="http://itunes.apple.com/us/app/ithoughtshd-mindmapping/id369020033?mt=8">iThoughts HD</a></li>
<li><a href="http://itunes.apple.com/us/app/mindmeister-for-ipad/id381073026?mt=8">MindMeister</a></li>
</ul>

<p>There are other, more general options for brainstorming which have also made it onto my homescreen, such as <a href="http://itunes.apple.com/us/app/popplet/id374151636?mt=8">Popplet</a>, <a href="http://www.omnigroup.com/products/omnigraffle-ipad/">OmniGraffle</a>, <a href="http://itunes.apple.com/us/app/idea-boards/id364902352?mt=8">Idea Boards</a> and <a href="http://itunes.apple.com/us/app/headspace/id300244538?mt=8">HeadSpace</a>, but I’ll keep this focused on traditional mind mapping apps.</p>

<p>MindNode for iPad is an obvious choice for me, with great interaction with the desktop version and available sharing options. It’s as easy to use and as minimalist as MindNode Pro is on the Mac. I couldn’t stop using iThoughts HD, though… it has an awesome feature set and its export options mix well with my other choices. The native MindMeister app also mixes well, integrating with the web version and exporting formats I can import to other apps. I use MindNode when I know I’m going straight to my desktop when I’m done, iThoughts HD for standalone, mobile mapping with portability options and MindMeister for any collaborative efforts, as well as quick, single thoughts.</p>

<p>Since we’re talking about mobile brainstorming, I would be remiss not to acknowledge the utility of the original mind mapping app: paper. A <a href="http://www.moleskine.com/">Moleskine</a> and a basic understanding of mind mapping principles provide all the tools you need to brainstorm anything, anywhere. The major benefit that the iPad has is instant, on-the-fly reorganization and modification of nodes, as well as portability to other mediums. OPML will get you from a mind map to a Scrivener document, an OmniOutliner project or even good old <a href="http://daringfireball.net/projects/markdown/">Markdown</a>.</p>

<h3>A flexible workflow</h3>

<p>With this collection of tools I can use the right app for the job in any given situation<sup id="fnref:tools"><a href="#fn:tools" rel="footnote">1</a></sup>. By considering export options, I can always be sure that whatever I create will translate to other platforms and structures. As an added benefit, all of these options combined still cost less than half as much as buying the desktop version of MindManager.</p>

<p>Each of these apps has their own neat tricks and features. For example, in the web version of MindMeister you can select a node and hit the image button (don’t trigger the dropdown) and you’ll get a random (but usually sensible) image for the node. It works with the link button, too, adding a Wikipedia or other link based on the node’s text. In MindNode, select all and copy, then paste into a text-based application. You’ll get an indented list of your nodes, in order from top right moving clockwise around your map. This is a great way to get your thoughts from map to outline when writing, without dealing with OPML export and multiple applications. I use a homebrew System Service<sup id="fnref:indent2md"><a href="#fn:indent2md" rel="footnote">2</a></sup> to convert it to a Markdown outline in any text editor.</p>

<p>If you haven’t tried mind mapping, grab any of these apps (<a href="http://www.amazon.com/Mind-Map-Book-Thinking-Potential/dp/0452273226?tag=duckduckgo-d-20">or a good book</a>) and see if it’s a fit for the way you think. I personally believe that the method is superior for any type of thinker, but I only have one thought type to compare. If you dig it, hopefully these results of my extensive “fiddling” will help you begin building a toolset that’s right for you.</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:tools">
<p>Speaking of workflows, this post began as a mind map in <a href="http://itunes.apple.com/us/app/mindnode-pro/id402398561?mt%3D12">MindNode Pro</a>, was copied to <a href="http://macromates.com/">TextMate</a> as a plain-text outline which was converted to Markdown via System Service (see the other footnote) and fleshed out using the <a href="http://bundle.weblogzinc.com/">Blogsmith Bundle</a>. It was posted to WordPress from TextMate as a draft and had its final edits done with <a href="http://brettterpstra.com/project/markdown-quicktags/">Markdown QuickTags</a>. Nifty. <a href="#fnref:tools" rev="footnote">↩</a></p>
</li>

<li id="fn:indent2md">
<p>Want to try the “Indents to Markdown” Service? <a href="http://brettterpstra.com/downloads/IndentstoMarkdown.zip?9d7bd4">Download it</a> and install it in <strong>~/Library/Services</strong>. Then paste your indented outline into a plain text editor, select the text and run the service (<strong>App menu&gt;Services&gt;Indents to Markdown</strong>). If your outline is four levels deep or less, the first two levels become headers and the rest become bullet lists, maintaining sub-topics as hierarchical sub-items in the list. If there are five levels or more, you get three levels of headers before the bullet lists start. <a href="#fnref:indent2md" rev="footnote">↩</a></p>
</li>

</ol>
</div>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/when-plain-text-is-wrong/' rel='bookmark' title='When plain text is wrong'>When plain text is wrong</a></li>
<li><a href='http://brettterpstra.com/quick-tip-mindmanager-to-clean-html/' rel='bookmark' title='Quick Tip: MindManager to (clean) HTML'>Quick Tip: MindManager to (clean) HTML</a></li>
<li><a href='http://brettterpstra.com/the-mindmeister-markdown-showdown/' rel='bookmark' title='The MindMeister Markdown Showdown'>The MindMeister Markdown Showdown</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/the-mac-and-ios-mind-mapping-app-extravaganza/">The Mac and iOS mind mapping app extravaganza</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/the-mac-and-ios-mind-mapping-app-extravaganza/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Duplicating Safari browsing sessions between Macs</title>
		<link>http://brettterpstra.com/duplicating-safari-browsing-sessions-between-macs/</link>
		<comments>http://brettterpstra.com/duplicating-safari-browsing-sessions-between-macs/#comments</comments>
		<pubDate>Tue, 03 May 2011 22:30:09 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[applescript]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[scripting]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=2302</guid>
		<description><![CDATA[<p>Hey, you’re just in time for another “stupid trick of the day” script. I have good reason for this one, and it only took me about 8 minutes to set up. It will take me longer to write about it than it’s probably worth, but it might be of use to anyone in a similar situation. Here’s the scenario: I&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/duplicating-safari-browsing-sessions-between-macs/">Duplicating Safari browsing sessions between Macs</a></p>]]></description>
			<content:encoded><![CDATA[<p>Hey, you’re just in time for another “stupid trick of the day” script. I have good reason for this one, and it only took me about 8 minutes to set up. It will take me longer to write about it than it’s probably worth, but it might be of use to anyone in a similar situation. Here’s the scenario:</p>

<p>I bought a MacBook Air recently. I have never been this happy with an Apple hardware purchase before. Not to gush, but I’ve bought and loved a lot of Macs and this one takes the cake. I’m doing more and more of my everyday work and writing on it, but I still like to sit down at the dual-monitor setup of my Mac Pro fairly regularly. When I do that, the Air becomes an auxiliary machine and I offload most of my chat and social apps to it. The annoying side of this setup is that I end up with Safari tabs piling up on both Macs, and half of them really make more sense on the other machine.</p>

<p><span id="more-2302"></span></p>

<p>I wrote a pair of scripts that execute over SSH to pull in all of the browser tabs from the front window of Safari on the other Mac into new tabs on the one calling the script. They’re designed to run on Macs on the same network, though they’d work remotely if you could think of a reason to do it. I run it in both directions, and call it with a simple <code>do shell script</code> AppleScript in <code>~/Library/Scripts/Applications/Safari</code> so it’s in my menubar when I’m browsing.</p>

<p>Just a few prerequisites:</p>

<ol>
<li>You need keyless ssh set up between the two (or more) Macs. If you want a two-way sync, you need keys in both directions. <a href="http://www.rootsilver.com/2007/10/keyless-ssh-sshkeygen-setup-an">This article has everything you need</a>.</li>
<li>To keep things simple, set up a <code>~/.ssh/config</code> file on each machine you want to pull tabs to. Create the file if you don’t have one, or add this at the bottom of an existing one, modifying it for your setup:</li>
</ol>

<pre><code>
host air
  HostName computername.local
  User remoteusername
</code></pre>

<p>Now you can just install the scripts, edit one line on each and start pulling tabs back and forth between computers.</p>

<h3>remotetabs.rb</h3>

<p>This goes on the machine you want to pull <em>from</em>. If you’re going both directions, you’ll want both scripts on both machines. Easy enough, right? Save this one as <code>remotetabs.rb</code> in <code>~/scripts/</code> and run <code>chmod a+x ~/scripts/remotetabs.rb</code>. Note that it doesn’t attempt to do any error reporting, it just fails silently or times out if there’s a problem. You’ll know something went wrong, you just won’t know what. It’s mysterious, enjoy it.</p>

<p>Because I often run <a href="http://www.webkit.org/">Webkit</a>, and because Webkit demands that it be addressed separately from Safari, there’s a quick check in here to see which one is running at the time.</p>

<pre><code>
#!/usr/bin/ruby

def app_running?(app)
  not `ps ax|grep -i "#{app}.app"|grep -v grep`.empty?
end

def webkit_running?
  return false if `ps ax|grep -i "Safari.app"|grep -v grep`.empty?
  not `ps ax|grep -i "/Applications/Webkit.app"|grep -v grep`.empty?
end

if app_running?("Safari")
  browser = webkit_running? ? "Webkit" : "Safari"
  urllist = %x{osascript <<-APPLESCRIPT
               tell application "#{browser}"
               set _tabs to every tab of window 1
               set _urls to {}
               repeat with _tab in _tabs
               set end of _urls to URL of _tab
               end repeat
               set {astid, AppleScript's text item delimiters} to {AppleScript's text item delimiters, " "}
               set output to _urls as text
               set AppleScript's text item delimiters to astid
               return output
               end tell
               APPLESCRIPT }.chomp
  puts urllist
end
</code></pre>

<h3>getremotetabs.rb</h3>

<p>This goes on the machine that's doing the "pulling." Save it as <code>getremotetabs.rb</code> in <code>~/scripts/</code> and run <code>chmod a+x ~/scripts/getremotetabs.rb</code>. You need to edit the <code>remote_host</code> variable in this script on each machine to match the hostname you set up in your <code>~/.ssh/config</code> file for the 'other' Mac.</p>

<pre><code>
#!/usr/bin/ruby
# retrieves a list of urls from the front Safari window running on a remote machine

remote_host = 'air' # as set up in ~/.ssh/config with nick and keyless login

%x{ssh #{remote_host} ~/scripts/remotetabs.rb}.chomp.split(' ').each { |url|
  %x{osascript -e 'tell application "Safari" to open location "#{url}"'}
}
</code></pre>

<p>That's it. You can save an AppleScript with <code>do shell script "/Users/username/scripts/getremotetabs.rb"</code> anywhere you want to, or just call the script from the command line. Also, stop making fun of my <abbr title="Obsessive Scripting Disorder">OSD</abbr>. I mean it.</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/saving-safari-browsing-sessions-to-evernote/' rel='bookmark' title='Saving Safari browsing sessions to Evernote'>Saving Safari browsing sessions to Evernote</a></li>
<li><a href='http://brettterpstra.com/save-safari-tabs-to-instapaper/' rel='bookmark' title='Save Safari tabs to Instapaper'>Save Safari tabs to Instapaper</a></li>
<li><a href='http://brettterpstra.com/geeklet-1-minute-average-cpu-load/' rel='bookmark' title='Geeklet: 1-minute average CPU load'>Geeklet: 1-minute average CPU load</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/duplicating-safari-browsing-sessions-between-macs/">Duplicating Safari browsing sessions between Macs</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/duplicating-safari-browsing-sessions-between-macs/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Grabbing a Mac app’s icon: Automator style</title>
		<link>http://brettterpstra.com/grabbing-a-mac-apps-icon-automator-style/</link>
		<comments>http://brettterpstra.com/grabbing-a-mac-apps-icon-automator-style/#comments</comments>
		<pubDate>Sun, 06 Mar 2011 00:40:38 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[automator]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[os x]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=2030</guid>
		<description><![CDATA[<p>We’ve covered a small truckload of Bash scripting ideas for Mac and OS X in the previous two posts. It’s time to put them to use and create an Automator app that we can use as a droplet in Finder. If you skipped straight here, it probably means you don’t really want to know about the messy details of the&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/grabbing-a-mac-apps-icon-automator-style/">Grabbing a Mac app’s icon: Automator style</a></p>]]></description>
			<content:encoded><![CDATA[<p>We’ve covered a small truckload of Bash scripting ideas for Mac and OS X in the previous <a href="http://brettterpstra.com/?p=2028">two</a> <a href="http://brettterpstra.com/?p=2029">posts</a>. It’s time to put them to use and create an Automator app that we can use as a droplet in Finder. If you skipped straight here, it probably means you don’t really want to know about the messy details of the scripts, so this post won’t go into a lot of Unix mumbo jumbo.</p>

<p>You can download ready-to-go versions of the workflows covered in this post here: <a href="/share/GrabIconWorkflows.zip?9d7bd4"><strong>GrabIconWorkflows.zip</strong></a>.</p>

<p>If you want to customize these workflows, you’ll need to know a little bit about the inner Bash workings, but nothing an up-and-coming nerd can’t figure out. To get started, open up Automator.app and create a new file with the “Application” preset.<span id="more-2030"></span><img class="colorbox-2030"  src="http://cdn2.brettterpstra.com/wp-content/uploads/2011/03/automator_application_workflow.jpg?9d7bd4" alt="Automator Application Workflow" /></p>

<h3>A basic workflow</h3>

<p>We’ll start with a really simple Automator application that you can drop an application onto to extract its icon at 512px and save it as a JPEG to the Desktop. One step, no interaction.</p>

<p>In your new Automator workflow, find “Run Shell Script” in the Library on the left. You can use the filter at the top to quickly narrow down the choices. Drag the action into your workflow editor on the right, and paste the following code into it:</p>

<pre><code>APPDIR=$1
ICON=`defaults read "$APPDIR/Contents/Info" CFBundleIconFile|sed -e 's/\.icns$//'`
ICONFILE="$APPDIR/Contents/Resources/$ICON.icns"
APPNAME=`basename "$APPDIR" .app`
OUTFILE="$HOME/Desktop/${APPNAME}_icon.jpg"
/usr/bin/sips -s format jpeg --resampleHeightWidthMax 512 "$ICONFILE" --out "$OUTFILE"
</code></pre>

<p>Make sure the shell is set to “/bin/bash” and change “Pass input” to “as arguments”. Save the workflow. You’ll probably want to name it something creative and put it somewhere useful, such as <code>~/Applications/512Desktop.app</code>. I have the utmost faith that you’ll come up with something brilliant. Here’s what your workflow should look like:</p>

<p><img class="colorbox-2030"  src="http://cdn2.brettterpstra.com/wp-content/uploads/2011/03/512desktopapp.jpg?9d7bd4" alt="512desktop.app" /></p>

<p>Now, you can just drop an application onto the icon for 512Desktop.app and the extracted icon will show up on your Desktop, named based on the name of the application you dropped on the workflow, with “_icon.jpg” appended to it. That was easy, right?</p>

<h3>A complete workflow with user interaction</h3>

<p>To make something more universally useful, we’ll create a workflow that asks the user where to save it. This time, we’ll output a PNG file and use the maximum available icon size. We covered how to do both of these in the last post, so I won’t go into all of the details in this one. Page back if you’re curious (or confused).</p>

<p>We’ll also need to store variables and pass multiple arguments to shell scripts in the workflow to pull this off. This is the stuff that makes Automator both awesome and frustrating, but once you get the hang of it, new possibilities open up. In this example it may seem like a lot of work just to ask a user where to save a file, but the concept allows you to get user input (without using AppleScript) in shell scripts. It’s worth knowing.</p>

<p>Create a new Automator application, just like above. Since this is going to be a droplet, the path of the Application will be passed to the first action when you run it (by dragging an app onto it). We need to store that as a variable for later, and then pass it on to the first shell script. To do so, drag the “Set Value of Variable” action from the library into your workflow. Click the dropdown for “Variable:” and choose “New variable”. Title the variable “appname”.</p>

<p>Next, drag the “Run Shell Script” action in after the variable action. Paste the following code into it:</p>

<pre><code>ICON=`defaults read "$1/Contents/Info" CFBundleIconFile|sed -e 's/\.icns$//'`
echo "$1/Contents/Resources/$ICON.icns"
</code></pre>

<p>This gets the icon file’s name and hands it back to Automator. We’ve got the application name and location, as well as the name and path of the icon file we need. We just need to know where the user wants to save it to. Add the “Ask for Finder Items” action in next, and set the prompt to “Save to:”. “Start at:” should be set to Desktop by default, but you can modify that to open the dialog to whatever directory makes sense for you. Change “Type:” to “Folders” and make sure that “Allow Multiple Section” is unchecked.</p>

<p>Now we need our <code>appname</code> variable back, so drag “Get Value of Variable” in as the next action. Set “Variable:” to “appname” (which will be available in the dropdown). The outputs of each command stack up, so now we have the icon file path, the user’s destination selection and the Application’s name (appname) all ready to pass to the final shell script as arguments ($1 $2 $3).</p>

<p>Drag in a “Run Shell Script” action as the last command. Again, set it to “/bin/bash” and pass input as arguments. Then, paste this code into it:</p>

<pre><code>APPNAME=`basename "$3" .app`
OUTFILE="$2/${APPNAME}_icon.png"
MAX=`sips -g pixelWidth "$1"|tail -1|awk '{print $2}'`
/usr/bin/sips -s format png --resampleHeightWidthMax $MAX "$1" --out "$OUTFILE"
</code></pre>

<p>Here’s what it should look like now:</p>

<p><img class="colorbox-2030"  src="http://cdn2.brettterpstra.com/wp-content/uploads/2011/03/max_png_to_user_loc.jpg?9d7bd4" alt="Max PNG to User loc" /></p>

<p>Done. Save the workflow to a file such as <code>~/Applications/SaveMaxIcon.app</code>. Try dragging an application directly onto it. You’ll be asked to choose a folder. Click “OK” and the resulting icon image file will show up in the selected location. You can stick this app on your Desktop (or alias it there) for easy access, add it to your Finder sidebar or even drag it into the toolbar of a Finder window.</p>

<p>If you want to choose an app from a dialog instead, you can insert an “Ask for Finder Items” action at the beginning of the workflow. Set “Start at:” to “/Applications”, “Type:” to “Files” and uncheck “Allow Multiple Selections”. Running the workflow will pop up a file dialog asking you to select an application manually before requesting the destination and running the rest of the script. This might be faster than finding, dragging and dropping, in some cases.</p>

<p><em>Bonus tip:</em> you can incorporate Automator workflows into shell scripts (and AppleScripts using <code>do shell script</code>) with the <code>automator</code> command line utility. You can call it directly on a workflow (<code>automator nameof.workflow</code>) or pass input to it using the –i parameter. The most practical application I can think of in this case would be to create an AppleScript application bundle containing both <code>on run</code> and <code>on open</code> handlers and both versions of the above workflow embedded in it. Then you could create a single application that would act on dropped files <em>or</em> offer a dialog if it was run directly. There’s probably an easier way to do that, though.</p>

<p>Grab copies of the workflows to get started (<a href="/share/GrabIconWorkflows.zip?9d7bd4"><strong>GrabIconWorkflows.zip</strong></a>), and I’d love to hear if you come up with other uses for them. That’s a wrap, hope it gave you some ideas for your own nerdery.</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/grabbing-a-mac-apps-icon-building-blocks/' rel='bookmark' title='Grabbing a Mac app’s icon: building blocks'>Grabbing a Mac app’s icon: building blocks</a></li>
<li><a href='http://brettterpstra.com/grabbing-a-mac-apps-icon-advanced-bash-usage-2/' rel='bookmark' title='Grabbing a Mac app’s icon: advanced Bash usage'>Grabbing a Mac app’s icon: advanced Bash usage</a></li>
<li><a href='http://brettterpstra.com/dropbox-and-seamless-mutli-mac-computing/' rel='bookmark' title='Dropbox and seamless mutli-Mac computing?'>Dropbox and seamless mutli-Mac computing?</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/grabbing-a-mac-apps-icon-automator-style/">Grabbing a Mac app’s icon: Automator style</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/grabbing-a-mac-apps-icon-automator-style/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Grabbing a Mac app’s icon: advanced Bash usage</title>
		<link>http://brettterpstra.com/grabbing-a-mac-apps-icon-advanced-bash-usage-2/</link>
		<comments>http://brettterpstra.com/grabbing-a-mac-apps-icon-advanced-bash-usage-2/#comments</comments>
		<pubDate>Sun, 06 Mar 2011 00:35:29 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[os x]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=2029</guid>
		<description><![CDATA[<p>In the previous post in this series, we looked at the basic Terminal commands we’d use to grab a Mac application’s icon from the command line. In this post, we’ll flesh out the script a little and turn it into a Bash function with some added features: Logic to locate the app if it exists outside of /Applications A check&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/grabbing-a-mac-apps-icon-advanced-bash-usage-2/">Grabbing a Mac app’s icon: advanced Bash usage</a></p>]]></description>
			<content:encoded><![CDATA[<p>In the <a href="http://brettterpstra.com/?p=2028">previous post</a> in this series, we looked at the basic Terminal commands we’d use to grab a Mac application’s icon from the command line. In this post, we’ll flesh out the script a little and turn it into a Bash function with some added features:</p>

<ul>
<li>Logic to locate the app if it exists outside of /Applications</li>
<li>A check using <code>sips</code> to find the maximum available image size</li>
<li>Allow user input to set the final output size</li>
<li>Allow the user to decide whether to open the result in Preview.app</li>
</ul>

<p>We’ll also look at a very, very cool trick for adding tab-completion for application names to the <code>open -a</code> command, as well as our <code>geticon()</code> function. Yes, it’s that nerdy.</p>

<p>In the next post, we’ll use Automator to make this into a droplet we can drag apps onto from Finder. If you don’t give a flying fire truck about Terminal, you can skip straight there and create something useful without touching the command line. This one’s for the nerds (and wannabe nerds).<span id="more-2029"></span>### A for loop directory search ###</p>

<p>We’ll use a bash <code>for</code> loop to search some predefined locations. You could also use <code>mdfind</code><sup id="fnref:mdfind"><a href="#fn:mdfind" rel="footnote">1</a></sup> to let Spotlight locate the app, but we’ll keep it simple for now. I’ve set it up to look in some standard locations for the file:</p>


<div class="wp_syntax"><div class="code"><pre class="bash"><span class="re2">APPDIR</span>=<span class="st_h">''</span>
 <span class="kw1">for</span> <span class="kw2">dir</span> <span class="kw1">in</span> <span class="st0">&quot;/Applications/&quot;</span> <span class="st0">&quot;/Applications/Utilities/&quot;</span> <span class="st0">&quot;/Developer/Applications/&quot;</span> <span class="st0">&quot;/Developer/Applications/Utilties/&quot;</span>; <span class="kw1">do</span>
   <span class="kw1">if</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> <span class="re5">-d</span> <span class="co1">${dir}</span><span class="re1">$APP</span>.app <span class="br0">&#93;</span><span class="br0">&#93;</span>; <span class="kw1">then</span> 
       <span class="re2">APPDIR</span>=<span class="re1">$dir</span>
       <span class="kw3">break</span>
   <span class="kw1">fi</span>
 <span class="kw1">done</span></pre></div></div>


<p>$APPDIR is now set to the location that $APP was found, or to ” (blank) if it wasn’t found in any of the specified folders. We can check for that in the next part and fail gracefully if we didn’t find the specified app.</p>

<h3>Getting the maximum image size</h3>

<p>Modern Mac icons generally have a pixel width of 512 or greater, but some legacy applications’ icons are 256px or smaller. Finding the maximum pixel width of the image allows us to avoid creating a distorted image as a result of sizing up beyond the largest image in the .icns file. The <code>sips</code> command can do this with a little help from <code>awk</code><sup id="fnref:awk"><a href="#fn:awk" rel="footnote">2</a></sup> to clean up the output. The following command gets the <code>pixelWidth</code> property from the icon file, grabs the last line of output and removes extraneous text to leave us with just a number:</p>

<pre><code>MAXAVAIL=`sips -g pixelWidth "${APPDIR}$APP.app/Contents/Resources/$ICON.icns"|tail -1|awk '{print $2}'`
</code></pre>

<p>We could use the number we found to output a file with the maximum dimensions, but since we’re making a general-purpose function, we’ll ask the user what they want.</p>

<h3>Getting user input</h3>

<p>There are a few ways to offer options in Bash. This is the simplest route I know. It doesn’t innately allow for a lot of error checking; the user could enter letters instead of numbers or an unattainable dimension, for example. We’ll add some basic checks, but we’ll assume that you can properly enter a number when asked. You’re smart like that.</p>


<div class="wp_syntax"><div class="code"><pre class="bash"><span class="kw3">echo</span> <span class="re5">-n</span> <span class="st0">&quot;Enter max pixel width (<span class="es2">$MAXAVAIL</span>): &quot;</span>
<span class="kw2">read</span> MAX
<span class="kw1">if</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> <span class="re1">$MAX</span> == <span class="st_h">''</span> <span class="sy0">||</span> <span class="re1">$MAX</span> <span class="re5">-gt</span> <span class="re1">$MAXAVAIL</span> <span class="br0">&#93;</span><span class="br0">&#93;</span>; <span class="kw1">then</span>
  <span class="re2">MAX</span>=<span class="re1">$MAXAVAIL</span>
<span class="kw1">fi</span></pre></div></div>


<p>We echo the prompt (the –n keeps it from echoing a newline), and we use our previously determined $MAXAVAIL variable to set a cap. If the user’s answer is empty or larger than $MAXAVAIL, we default to $MAXAVAIL.</p>

<h3>The whole shebang</h3>

<p>Here’s a complete Bash function that you can paste at the end of your <code>~/.bash_profile</code>. It offers to open the resulting image in Preview.app, but you can easily modify that to whatever app makes sense in your workflow.</p>


<div class="wp_syntax"><div class="code"><pre class="bash"><span class="kw1">function</span> geticon<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
  <span class="re2">APP</span>=<span class="sy0">`</span><span class="kw3">echo</span> <span class="re4">$1</span><span class="sy0">|</span><span class="kw2">sed</span> <span class="re5">-e</span> <span class="st_h">'s/\.app$//'</span><span class="sy0">`</span>
  <span class="re2">APPDIR</span>=<span class="st_h">''</span>
  <span class="kw1">for</span> <span class="kw2">dir</span> <span class="kw1">in</span> <span class="st0">&quot;/Applications/&quot;</span> <span class="st0">&quot;/Applications/Utilities/&quot;</span> <span class="st0">&quot;/Developer/Applications/&quot;</span> <span class="st0">&quot;/Developer/Applications/Utilties/&quot;</span>; <span class="kw1">do</span>
    <span class="kw1">if</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> <span class="re5">-d</span> <span class="co1">${dir}</span><span class="re1">$APP</span>.app <span class="br0">&#93;</span><span class="br0">&#93;</span>; <span class="kw1">then</span> 
        <span class="re2">APPDIR</span>=<span class="re1">$dir</span>
        <span class="kw3">break</span>
    <span class="kw1">fi</span>
  <span class="kw1">done</span>
  <span class="kw1">if</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> <span class="re1">$APPDIR</span> == <span class="st_h">''</span> <span class="br0">&#93;</span><span class="br0">&#93;</span>; <span class="kw1">then</span>
    <span class="kw3">echo</span> <span class="st0">&quot;App not found&quot;</span>
  <span class="kw1">else</span>
    <span class="re2">ICON</span>=<span class="sy0">`</span>defaults <span class="kw2">read</span> <span class="st0">&quot;<span class="es3">${APPDIR}</span><span class="es2">$APP</span>.app/Contents/Info&quot;</span> CFBundleIconFile<span class="sy0">|</span><span class="kw2">sed</span> <span class="re5">-e</span> <span class="st_h">'s/\.icns$//'</span><span class="sy0">`</span>
    <span class="re2">OUTFILE</span>=<span class="st0">&quot;<span class="es2">$HOME</span>/Desktop/<span class="es3">${APP}</span>_icon.jpg&quot;</span>
    <span class="re2">MAXAVAIL</span>=<span class="sy0">`</span>sips <span class="re5">-g</span> pixelWidth <span class="st0">&quot;<span class="es3">${APPDIR}</span><span class="es2">$APP</span>.app/Contents/Resources/<span class="es2">$ICON</span>.icns&quot;</span><span class="sy0">|</span><span class="kw2">tail</span> <span class="re5">-1</span><span class="sy0">|</span><span class="kw2">awk</span> <span class="st_h">'{print $2}'</span><span class="sy0">`</span>
    <span class="kw3">echo</span> <span class="re5">-n</span> <span class="st0">&quot;Enter max pixel width (<span class="es2">$MAXAVAIL</span>): &quot;</span>
  	<span class="kw2">read</span> MAX
  	<span class="kw1">if</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> <span class="re1">$MAX</span> == <span class="st_h">''</span> <span class="sy0">||</span> <span class="re1">$MAX</span> <span class="re5">-gt</span> <span class="re1">$MAXAVAIL</span> <span class="br0">&#93;</span><span class="br0">&#93;</span>; <span class="kw1">then</span>
  	  <span class="re2">MAX</span>=<span class="re1">$MAXAVAIL</span>
  	<span class="kw1">fi</span>
    <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span>sips <span class="re5">-s</span> format jpeg <span class="re5">--resampleHeightWidthMax</span> <span class="re1">$MAX</span> <span class="st0">&quot;<span class="es3">${APPDIR}</span><span class="es2">$APP</span>.app/Contents/Resources/<span class="es2">$ICON</span>.icns&quot;</span> <span class="re5">--out</span> <span class="st0">&quot;<span class="es2">$OUTFILE</span>&quot;</span> <span class="sy0">&gt;</span> <span class="sy0">/</span>dev<span class="sy0">/</span>null <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
    <span class="kw3">echo</span> <span class="st0">&quot;Wrote JPEG to <span class="es2">$OUTFILE</span>.&quot;</span>
  	<span class="kw3">echo</span> <span class="re5">-n</span> <span class="st_h">'Open in Preview? (y/N): '</span>
  	<span class="kw2">read</span> ANSWER
  	<span class="kw1">if</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> <span class="re1">$ANSWER</span> == <span class="st_h">'y'</span> <span class="br0">&#93;</span><span class="br0">&#93;</span>; <span class="kw1">then</span>
  	  open <span class="re5">-a</span> <span class="st0">&quot;Preview.app&quot;</span> <span class="st0">&quot;<span class="es2">$OUTFILE</span>&quot;</span>
  	<span class="kw1">fi</span>
  <span class="kw1">fi</span>
<span class="br0">&#125;</span></pre></div></div>


<h3>Extra credit: tab completion for app names</h3>

<p>Before we get into making this into a GUI using Automator, wouldn’t it be cool if you could autocomplete an app name from the command line when you use this? This is where you find out that I can nerd anything to death, but let’s do it.</p>

<p>First, we need some functions to build a list of all of our available applications and provide them to Bash’s completion command. I’m modifying a script from <a href="http://www.holburn.net/">Kim Holburn</a> for this, updated to work on 10.6 and provide case-insensitive completion. Just put the file in your user’s home directory for now. When we’re done, it will also provide application name tab completion for <code>open -a</code> (and <code>o</code> if you alias o=“open –a” in your .bash_profile). Click the link below to open the script, then save it to your home folder as “.app_completions”.</p>

<p><a href="/share/app_completions"><strong>Download .app_completions</strong></a></p>

<p>Once you have that file located in <code>~/.app_completions</code>, we just need to reference it in <code>.bash_profile</code> and add a few settings. Put this near the top of <code>~/.bash_profile</code>:</p>

<pre><code>source ~/.app_completions
bind "set completion-ignore-case on"
set show-all-if-ambiguous on
alias o="open -a"
</code></pre>

<p>At the command line, run <code>source ~/.bash_profile</code>. Now, assuming you’ve also added the previous <code>geticon</code> function to <code>.bash_profile</code>, you should be able to type <code>geticon term</code> and hit tab right after the ‘m’ to have it complete to “Terminal.app” automatically. This makes it a lot easier to get the app’s name, spacing and capitalization exactly right. You’ve also aliased “o” to launch an app in the process. Type <code>o auto</code> to complete to “Automator.app” and launch it.</p>

<p>We’ll <a href="http://brettterpstra.com/grabbing-a-mac-apps-icon-automator-style/">dig into Automator next</a> and turn this whole thing into something pretty.</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:mdfind">
<p><a href="http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/mdfind.1.html">mdfind man page</a> <a href="#fnref:mdfind" rev="footnote">↩</a></p>
</li>

<li id="fn:awk">
<p><a href="http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/awk.1.html">awk man page</a> <a href="#fnref:awk" rev="footnote">↩</a></p>
</li>

</ol>
</div>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/grabbing-a-mac-apps-icon-automator-style/' rel='bookmark' title='Grabbing a Mac app’s icon: Automator style'>Grabbing a Mac app’s icon: Automator style</a></li>
<li><a href='http://brettterpstra.com/grabbing-a-mac-apps-icon-building-blocks/' rel='bookmark' title='Grabbing a Mac app’s icon: building blocks'>Grabbing a Mac app’s icon: building blocks</a></li>
<li><a href='http://brettterpstra.com/mac-app-giveaway-textexpander/' rel='bookmark' title='Mac App Giveaway: TextExpander'>Mac App Giveaway: TextExpander</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/grabbing-a-mac-apps-icon-advanced-bash-usage-2/">Grabbing a Mac app’s icon: advanced Bash usage</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/grabbing-a-mac-apps-icon-advanced-bash-usage-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grabbing a Mac app’s icon: building blocks</title>
		<link>http://brettterpstra.com/grabbing-a-mac-apps-icon-building-blocks/</link>
		<comments>http://brettterpstra.com/grabbing-a-mac-apps-icon-building-blocks/#comments</comments>
		<pubDate>Sun, 06 Mar 2011 00:30:20 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[os x]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=2028</guid>
		<description><![CDATA[<p>I spent a few hours last night nerding out over an easy way to grab a Mac application’s icon. I sent the basic Bash script and an example Automator action off to the other writers at TUAW. Then there was dinner, a movie, drinks and dessert. I found myself back at it when I got home. I am Jack’s complete&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/grabbing-a-mac-apps-icon-building-blocks/">Grabbing a Mac app’s icon: building blocks</a></p>]]></description>
			<content:encoded><![CDATA[<p>I spent a few hours last night nerding out over an easy way to grab a Mac application’s icon. I sent the basic Bash script and an example Automator action off to the other writers at TUAW. Then there was dinner, a movie, drinks and dessert. I found myself back at it when I got home. I am Jack’s complete inability to leave well enough alone<sup id="fnref:fightclub"><a href="#fn:fightclub" rel="footnote">1</a></sup>.</p>

<p>My solution ended up having some tricks in it that I thought were worth sharing, so I’m going to write it up here. This is the first post in a three-part series; an epic tribute to obsessive nerdery. It will probably eventually be summarized into the <a href="http://brettterpstra.com/howtos/">how-to section</a>, but this is the ever-so-informative longhand version.</p>

<p><span id="more-2028"></span></p>

<h2>Introduction/excusatory verbage</h2>

<p>I use application icons quite a bit in my <a href="http://www.tuaw.com/bloggers/brett-terpstra/">writing for TUAW</a>, so having a quick way to do this is worthwhile. You may never need an application icon as a ready-to-post JPEG, but it’s worthwhile to know tricks such as how to grab, resize and convert images from the command line or how to build an Automator action which combines Finder dialogs, shell scripts and Automator variables.</p>

<p>I’ll start with the basic Terminal commands to lay a foundation.</p>

<h3>Finding an app’s icon with the defaults command</h3>

<p>On a Mac, every application is actually a folder, referred to as a “bundle”. Within that folder are libraries, executables and resources (like images and icons). There’s also an important file called Info.plist which stores information like the application’s name, identifiers, file types and–most relevant right now–the name of the file containing the application’s icon. The application icon is an an <code>.icns</code> file, stored in <code>AppName.app/Contents/Resources</code>. Its title does not have to be the same as the app’s, so–before we can extract and convert it–we need to get its actual filename from Info.plist.</p>

<p>Info.plist is stored as an XML file (as opposed to a binary plist). As such, we could grep for the filename and run a bunch of Unix commands to parse out the filename, but there’s an easier and more reliable way to do it using the <code>defaults</code><sup id="fnref:defaults"><a href="#fn:defaults" rel="footnote">2</a></sup> command built into OS X. <code>defaults</code> reads plist files and can output the value of specific keys. The key we want is <code>CFBundleIconFile</code>, which holds the icon’s filename. We’ll assume that we’ve already retrieved the name of the app and stored it in a variable called <code>$APP</code>. Here’s what you would run on the command line:</p>

<pre><code>defaults read "/Applications/$APP.app/Contents/Info" CFBundleIconFile
</code></pre>

<p>The response may or may not have a file extension (.icns). We want to trim the extension if it exists so that we have a clean foundation to build on. You can do this with several different Unix utilities, including basic bash substitution; we’ll stick with <code>sed</code><sup id="fnref:sed"><a href="#fn:sed" rel="footnote">3</a></sup> for now. We pipe (<code>|</code>) the output of the <code>defaults</code> command into <code>sed</code>, and remove “.icns” if it exists:</p>

<pre><code>defaults read "/Applications/$APP.app/Contents/Info" CFBundleIconFile|sed -e 's/\.icns$//'
</code></pre>

<h3>Converting the icon file to an image format</h3>

<p>The .icns format holds multiple versions of the icon, and doesn’t do us much good if we want an image file for the web. Fortunately, the built-in command <code>sips</code> can do some neat tricks with it, including converting it to various formats<sup id="fnref:macworld1"><a href="#fn:macworld1" rel="footnote">4</a></sup>. We know what the icon file is titled now, and we know where to look for it. We just build a <code>sips</code> command to read it, convert it and output the result.</p>

<p>The <code>-s format</code> parameter sets an output format in sips. This can be one of many formats, but we’ll use the JPEG format for this example. This will compress the result to a web jpeg with a solid, white background. Using the PNG format instead would preserve the transparency, so if you need to do other image manipulation, you can substitute “png” for “jpeg”.</p>

<p>Let’s use the $APP variable we’ve created to set a default output filename on the Desktop. For now, we’re assuming the app exists in the standard /Applications folder (I’ll show a more complex workflow for locating the app in a bit). We’re also assuming that we’ve stored the result of the above <code>defaults</code> command in <code>$ICON</code>.</p>

<pre><code>OUTFILE="$HOME/Desktop/${APP}_icon.jpg"
sips -s format jpeg "/Applications/$APP.app/Contents/Resources/$ICON.icns" --out $OUTFILE
</code></pre>

<p>Now we have the basic pieces we can use to build a script to automate this from the command line. Here’s an example which expects the application name as the only argument, properly cased:</p>


<div class="wp_syntax"><div class="code"><pre class="bash"><span class="co0">#!/bin/bash</span>
&nbsp;
<span class="re2">APP</span>=<span class="sy0">`</span><span class="kw3">echo</span> <span class="re4">$1</span><span class="sy0">|</span><span class="kw2">sed</span> <span class="re5">-e</span> <span class="st_h">'s/\.app$//'</span><span class="sy0">`</span>
<span class="co0"># Removes &quot;.app&quot; if it was passed</span>
&nbsp;
<span class="re2">ICON</span>=<span class="sy0">`</span>defaults <span class="kw2">read</span> <span class="sy0">/</span>Applications<span class="sy0">/</span><span class="re1">$APP</span>.app<span class="sy0">/</span>Contents<span class="sy0">/</span>Info CFBundleIconFile<span class="sy0">|</span><span class="kw2">sed</span> <span class="re5">-e</span> <span class="st_h">'s/\.icns$//'</span><span class="sy0">`</span>
<span class="co0"># Removes &quot;.icns&quot; if the Info.plist value includes it</span>
<span class="co0"># Harcoded for /Applications, needs to be rewritten for other locations or droplets</span>
&nbsp;
<span class="co0">## Save icon on Desktop in JPEG format, resized to 256 max width/height</span>
<span class="re2">OUTFILE</span>=<span class="st0">&quot;<span class="es2">$HOME</span>/Desktop/<span class="es3">${APP}</span>_icon.jpg&quot;</span>
<span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span>sips <span class="re5">-s</span> format jpeg <span class="st0">&quot;/Applications/<span class="es2">$APP</span>.app/Contents/Resources/<span class="es2">$ICON</span>.icns&quot;</span> <span class="re5">--out</span> <span class="re1">$OUTFILE</span></pre></div></div>


<h2>Extra credit: image optimization</h2>

<p>Since we’re automating, we can add a final step to the script to handle whatever steps we would normally take next. For example, we could open it in <a href="http://skitch.com/">Skitch</a> for quick resizing, or in <a href="http://flyingmeat.com/acorn/">Acorn</a> for more complex manipulation. If we saved a JPEG to a size we already know is correct for our purposes, we could open it straight in an optimizer such as <a href="http://imageoptim.pornel.net/">ImageOptim</a> to quickly improve the compression. We could also make use of a command line utility like ImageMagick, jpegtran or pngcrush, all of which require some installation and extra work. If you have them, great, if not, that’s an article for another time.</p>

<p><em>For the record, Skitch saves horribly large JPEGs, whereas Acorn saves amazingly well-compressed images. If you resize with Skitch, you’ll want to compress it with something else as well.</em></p>

<p>Assuming we’re using an application and not a CLI utility, we can use the <code>open</code> command to send the resulting file to the app. We can also avoid some confusion by initially saving the converted icon file to a default temporary directory and then opening it from there. Here’s a revised script that does that, then opens the final image in Acorn for quick resizing and saving to any location. We’ll use the PNG format to preserve the original transparency, and you can substitute any graphics application for Acorn:</p>


<div class="wp_syntax"><div class="code"><pre class="bash"><span class="co0">#!/bin/bash</span>
&nbsp;
<span class="re2">APP</span>=<span class="sy0">`</span><span class="kw3">echo</span> <span class="re4">$1</span><span class="sy0">|</span><span class="kw2">sed</span> <span class="re5">-e</span> <span class="st_h">'s/\.app$//'</span><span class="sy0">`</span>
<span class="co0"># Removes &quot;.app&quot; if it was passed</span>
&nbsp;
<span class="re2">ICON</span>=<span class="sy0">`</span>defaults <span class="kw2">read</span> <span class="sy0">/</span>Applications<span class="sy0">/</span><span class="re1">$APP</span>.app<span class="sy0">/</span>Contents<span class="sy0">/</span>Info CFBundleIconFile<span class="sy0">|</span><span class="kw2">sed</span> <span class="re5">-e</span> <span class="st_h">'s/\.icns$//'</span><span class="sy0">`</span>
<span class="co0"># Removes &quot;.icns&quot; if the Info.plist has it</span>
<span class="co0"># Harcoded for /Applications, needs to be rewritten for other locations or droplets</span>
&nbsp;
<span class="co0">## Output file to a temp directory (TMPDIR) as a PNG and open in Acorn for resizing and conversion</span>
&nbsp;
<span class="re2">OUTFILE</span>=<span class="st0">&quot;<span class="es2">$TMPDIR</span><span class="es3">${APP}</span>_icon.png&quot;</span>
sips <span class="re5">-s</span> format png <span class="st0">&quot;/Applications/<span class="es2">$APP</span>.app/Contents/Resources/<span class="es2">$ICON</span>.icns&quot;</span> <span class="re5">--out</span> <span class="re1">$OUTFILE</span>
open <span class="re5">-a</span> <span class="st0">&quot;Acorn.app&quot;</span> <span class="re1">$OUTFILE</span></pre></div></div>


<p>I think you get the idea. You can take this script and easily adjust the output format and destination application. In the <a href="http://brettterpstra.com/grabbing-a-mac-apps-icon-advanced-bash-usage-2/">next post</a>, we’ll cover making this into a fully customized Bash function, with some extra goodies.</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:fightclub">
<p>Oh, you got the Fight Club reference, huh? You’re still not a snowflake. <a href="#fnref:fightclub" rev="footnote">↩</a></p>
</li>

<li id="fn:defaults">
<p><a href="http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/defaults.1.html">defaults man page</a> <a href="#fnref:defaults" rev="footnote">↩</a></p>
</li>

<li id="fn:sed">
<p><a href="http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/sed.1.html">sed man page</a> <a href="#fnref:sed" rev="footnote">↩</a></p>
</li>

<li id="fn:macworld1">
<p><a href="http://www.macworld.com/article/60156/2007/09/sipsicns.html">“Convert ICNS files with sips”</a> via Macworld. <a href="#fnref:macworld1" rev="footnote">↩</a></p>
</li>

</ol>
</div>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/grabbing-a-mac-apps-icon-automator-style/' rel='bookmark' title='Grabbing a Mac app’s icon: Automator style'>Grabbing a Mac app’s icon: Automator style</a></li>
<li><a href='http://brettterpstra.com/grabbing-a-mac-apps-icon-advanced-bash-usage-2/' rel='bookmark' title='Grabbing a Mac app’s icon: advanced Bash usage'>Grabbing a Mac app’s icon: advanced Bash usage</a></li>
<li><a href='http://brettterpstra.com/bored-with-your-macvim-icon-me-too/' rel='bookmark' title='Bored with your MacVim icon? Me too.'>Bored with your MacVim icon? Me too.</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/grabbing-a-mac-apps-icon-building-blocks/">Grabbing a Mac app’s icon: building blocks</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/grabbing-a-mac-apps-icon-building-blocks/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic (Feed is rejected)
Page Caching using disk: enhanced
Database Caching 35/180 queries in 0.486 seconds using xcache
Object Caching 4489/4670 objects using xcache
Content Delivery Network via cdn2.brettterpstra.com

Served from: brettterpstra.com @ 2012-02-04 08:56:07 -->
