<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Distracted Attention</title>
	
	<link>http://www.nickbrawn.com</link>
	<description>Musings on InfoSec, Cocoa and Design</description>
	<pubDate>Sat, 12 Sep 2009 00:40:53 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/NickBrawn" /><feedburner:info uri="nickbrawn" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Heading to Japan!</title>
		<link>http://feedproxy.google.com/~r/NickBrawn/~3/2zhaTvRCu4c/</link>
		<comments>http://www.nickbrawn.com/2009/09/heading-to-japan/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 00:40:53 +0000</pubDate>
		<dc:creator>Nick</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<category><![CDATA[Japan]]></category>

		<category><![CDATA[travel]]></category>

		<guid isPermaLink="false">http://www.nickbrawn.com/?p=235</guid>
		<description><![CDATA[As part of my turning-30 related goals, I&#8217;d booked a 21 day trek in Nepal. That fell through, and with little time to spare, and a desperate need for a holiday, I didn&#8217;t know where to turn.
The benefit of tours is that you get to mix with other like-minded individuals, in case you don&#8217;t have [...]]]></description>
			<content:encoded><![CDATA[<p>As part of my turning-30 related goals, I&#8217;d booked a 21 day trek in Nepal. That fell through, and with little time to spare, and a desperate need for a holiday, I didn&#8217;t know where to turn.</p>
<p>The benefit of tours is that you get to mix with other like-minded individuals, in case you don&#8217;t have any friends interested or available to go on a trip with you. With time ticking down, a fantastic sale on flights to Japan came up. Only one problem, tours in Japan are fricking expensive. So what did I do?</p>
<p>I&#8217;ve decided to take a complete gamble, and &#8220;wing it&#8221; in Japan. There&#8217;s little over a month till I depart, and all I have booked are the flights. It&#8217;s going to be the longest holiday I&#8217;ve taken, solo, in a completely foreign country. I&#8217;m excited and terrified all at the same time. I can&#8217;t wait! <img src='http://www.nickbrawn.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
<img src="http://feeds.feedburner.com/~r/NickBrawn/~4/2zhaTvRCu4c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.nickbrawn.com/2009/09/heading-to-japan/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.nickbrawn.com/2009/09/heading-to-japan/</feedburner:origLink></item>
		<item>
		<title>Little quiet round here</title>
		<link>http://feedproxy.google.com/~r/NickBrawn/~3/nsDzwUVqmqo/</link>
		<comments>http://www.nickbrawn.com/2009/06/little-quiet-round-here/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 13:26:35 +0000</pubDate>
		<dc:creator>Nick</dc:creator>
		
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.nickbrawn.com/?p=230</guid>
		<description><![CDATA[The last 6+ months I took a deliberate, extended break from coding. I lost 15kg, turned 30 and am working towards a trip to Nepal. Certain things had to be sacrificed to make that happen, coding, gaming and blogging among them.

This site is going into maintenance mode. If you&#8217;re still keen on following what&#8217;s happening [...]]]></description>
			<content:encoded><![CDATA[<p>The last 6+ months I took a deliberate, extended break from coding. I lost 15kg, turned 30 and am working towards a trip to Nepal. Certain things had to be sacrificed to make that happen, coding, gaming and blogging among them.</p>
<p/>
This site is going into maintenance mode. If you&#8217;re still keen on following what&#8217;s happening in my world, follow me on twitter: <a href="http://twitter.com/ncb">@ncb</a>. By default it&#8217;s not public, but so long as you seem like a real human, I&#8217;ll approve the follow request.</p>
<p/>
I&#8217;ve still a number of software projects in my head that I want to continue on, but I&#8217;ll be taking each as it comes. Keeping that delicate balance between work, personal projects and my wellbeing will continue to be the challenge. If only I was a student again, with a metabolism to match.</p>
<img src="http://feeds.feedburner.com/~r/NickBrawn/~4/nsDzwUVqmqo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.nickbrawn.com/2009/06/little-quiet-round-here/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.nickbrawn.com/2009/06/little-quiet-round-here/</feedburner:origLink></item>
		<item>
		<title>Spring cleaning</title>
		<link>http://feedproxy.google.com/~r/NickBrawn/~3/njoJVttdWjY/</link>
		<comments>http://www.nickbrawn.com/2008/09/spring-cleaning/#comments</comments>
		<pubDate>Thu, 11 Sep 2008 23:41:12 +0000</pubDate>
		<dc:creator>Nick</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[Personal]]></category>

		<category><![CDATA[fitness]]></category>

		<category><![CDATA[health]]></category>

		<category><![CDATA[productivity]]></category>

		<guid isPermaLink="false">http://www.nickbrawn.com/2008/09/spring-cleaning/</guid>
		<description><![CDATA[The last few weeks have been a crazy whirlwind of deadlines. In response I took the first weekend off from coding in three months and unwound a little with Spore. 
Lesson learnt. You can&#8217;t burn the candle at both ends indefinitely. By this I mean spending 40+ hours a week coding, on top of your [...]]]></description>
			<content:encoded><![CDATA[<p>The last few weeks have been a crazy whirlwind of deadlines. In response I took the first weekend off from coding in three months and unwound a little with Spore. </p>
<p>Lesson learnt. You can&#8217;t burn the candle at both ends indefinitely. By this I mean spending 40+ hours a week coding, on top of your day job. </p>
<p>The break has been good. I&#8217;ve enjoyed better sleep than I&#8217;ve had in ages and started detoxing. No coffee, coke (aka coding juice) or fried food for two weeks.</p>
<p>The last few days I&#8217;ve been feeling great. If only those deadlines would go away.</p>
<img src="http://feeds.feedburner.com/~r/NickBrawn/~4/njoJVttdWjY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.nickbrawn.com/2008/09/spring-cleaning/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.nickbrawn.com/2008/09/spring-cleaning/</feedburner:origLink></item>
		<item>
		<title>It’s all about the ratings…</title>
		<link>http://feedproxy.google.com/~r/NickBrawn/~3/Xy_sXsZQnIc/</link>
		<comments>http://www.nickbrawn.com/2008/09/its-all-about-the-ratings/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 08:54:24 +0000</pubDate>
		<dc:creator>Nick</dc:creator>
		
		<category><![CDATA[Cocoa]]></category>

		<category><![CDATA[finder]]></category>

		<category><![CDATA[fsevents]]></category>

		<category><![CDATA[itunes]]></category>

		<category><![CDATA[pepper]]></category>

		<guid isPermaLink="false">http://www.nickbrawn.com/?p=224</guid>
		<description><![CDATA[I began Pepper to create an app that would let me find my favorite videos fast. Pepper does this is by letting you add a rating to each video file or by creating playlists.
Recently I&#8217;ve begun running into a few headaches.
Design Decisions
Pepper isn&#8217;t a Finder replacement. As such, there is no support to browse the [...]]]></description>
			<content:encoded><![CDATA[<p>I began Pepper to create an app that would let me find my favorite videos fast. Pepper does this is by letting you add a rating to each video file or by creating playlists.</p>
<p>Recently I&#8217;ve begun running into a few headaches.</p>
<h2>Design Decisions</h2>
<p>Pepper isn&#8217;t a Finder replacement. As such, there is no support to browse the live filesystem. You have to specify which directories you want visible. That sounds similar to iTunes&#8230;</p>
<p>However, the way iTunes implements that is by copying all the music in the added folder to it&#8217;s own location on your computer: ~/Music/iTunes</p>
<p>I made a design decision at the start to avoid file modification as much as possible. That meant leaving files where they were. Information about each file, such as ratings and playlists were to be stored in the database. The primary key for each video was its on-disk path.</p>
<h2>Handling Changes</h2>
<p>Because Pepper doesn&#8217;t have complete control over the directories where the files were added, it needs to monitor and detect when files were added or removed. This is implemented using the new FSEvents framework in Leopard.</p>
<p>When changes are detected, the on-disk files are compared against entries in the database. Files that no longer exist are removed from the database, and new files are added.</p>
<h2>Test Environment</h2>
<p>In my own personal test environment, I have 300GBs on the iMac, 500GB on an external HDD and 1TB on a Time Capsule (wireless NAS).</p>
<h2>The Problem</h2>
<ol>
<li>In Pepper, I add the (Time Capsule) folder <em>Disk1/Videos</em>.</li>
<li>On-disk, the Time Capsule volume is mounted at /Volumes/Disk1.</li>
<li>The wireless network experiences a hiccup and the Time Capsule is disconnected.</li>
<li>My iMac reconnects to the Time Capsule, and mounts it as /Volumes/Disk1-1</li>
<li>Pepper detects the change and removes every file from the database that had a path of /Volumes/Disk1/Videos (which is everything).</li>
</ol>
<h2>Solution So Far</h2>
<p>When a filesystem change is detected, Pepper will first check to see if the top-level &#8220;Place&#8221; is available. If it isn&#8217;t available, further checking (for new or removed files) is skipped.</p>
<p>I&#8217;ve added a new attribute to the database &#8220;relativePath&#8221;, and changed the &#8220;path&#8221; attribute to be transient.</p>
<p>In the Entity, path is created by combining the Place.path and Video.relativePath using stringWithFormat. This means that if the volume mount point changes from Disk1 to Disk1-1, a simple edit of the Place Info will make the files accessible again.</p>
<h2>Other Ideas</h2>
<p>Ideally, the best way to store persistent data about a file, aka ratings, would be to add the information to a files metadata. There&#8217;s already an attribute called kMDItemStarRating that&#8217;s purpose built for it.</p>
<p>Unfortunately Apple doesn&#8217;t offer a (public) means of modifying a file&#8217;s metadata unless you&#8217;re the Spotlight importer for the file&#8217;s filetype. Unofficially you could use the private MDItemSetAttribute to modify attributes, but if Spotlight is reindexed, all your changes are blown away.</p>
<p>Another option could be to mirror iTunes behaviour and keep a copy of each file. I really don&#8217;t want to go down that path, and it really constrains you if your local storage runs out.</p>
<h2>Wrapping Up</h2>
<p>I suppose this is all good to discover sooner rather than later. Imagine if I&#8217;d only developed and tested without consideration of removable volumes. A far larger retrofit would&#8217;ve been required down the track. At least now I have a chance to work on a means of gracefully handling volume renaming that doesn&#8217;t erase your information when files &#8220;disappear&#8221;.</p>
<img src="http://feeds.feedburner.com/~r/NickBrawn/~4/Xy_sXsZQnIc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.nickbrawn.com/2008/09/its-all-about-the-ratings/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.nickbrawn.com/2008/09/its-all-about-the-ratings/</feedburner:origLink></item>
		<item>
		<title>Move to Trash</title>
		<link>http://feedproxy.google.com/~r/NickBrawn/~3/Z_2W0Dyu2y8/</link>
		<comments>http://www.nickbrawn.com/2008/08/move-to-trash/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 15:13:39 +0000</pubDate>
		<dc:creator>Nick</dc:creator>
		
		<category><![CDATA[Cocoa]]></category>

		<category><![CDATA[leopard]]></category>

		<category><![CDATA[movetotrash]]></category>

		<category><![CDATA[nsworkspace]]></category>

		<guid isPermaLink="false">http://www.nickbrawn.com/?p=211</guid>
		<description><![CDATA[I&#8217;ve been working on a &#8220;Move to Trash&#8221; action. I began with the Low-Level File Management document, which in a one-liner tells you to use NSWorkspace performFileOperation and the  NSWorkspaceRecycleOperation.
This seemed like great news and I quickly implemented the method. The test file was located on a network volume, and each time I tried [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working on a &#8220;Move to Trash&#8221; action. I began with the <a href="http://developer.apple.com/documentation/Cocoa/Conceptual/LowLevelFileMgmt/Tasks/LocatingDirectories.html">Low-Level File Management</a> document, which in a one-liner tells you to use NSWorkspace performFileOperation and the  <code><a href="http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSWorkspace_Class/Reference/Reference.html#//apple_ref/doc/c_ref/NSWorkspaceRecycleOperation" target="_top">NSWorkspaceRecycleOperation</a>.</code></p>
<p>This seemed like great news and I quickly implemented the method. The test file was located on a network volume, and each time I tried to move it to the trash, it failed. Further reading uncovered this:</p>
<blockquote><p>If no trash folder exists on the volume containing the file, the operation fails.</p></blockquote>
<p>I turned back to Finder.app to see how it handled this scenario. It turns out that when you attempt to move a file located on a network volume to the trash, its pops up an NSAlert and warns that it will delete the file immediately.</p>
<p>Seeking to replicate Finder&#8217;s approach, I began working on how to check if the source volume had a trash folder. Several Google searches later, I landed on the CocoaDev <a href="http://www.cocoadev.com/index.pl?MoveToTrash">MoveToTrash</a> entry. I began to feel depressed as I read the tales, trials and tribulations of implementing &#8220;trash&#8221; support.</p>
<p>I scanned through the complaints and categories, then at the very end I read the following (and I could&#8217;ve wept for joy):</p>
<blockquote><p>If you&#8217;re on Leopard then you don&#8217;t need to. There&#8217;s a new API, FSMoveObjectToTrashSync and FSMoveObjectToTrashAsync, just for moving objects to the trash.</p></blockquote>
<p>Gotta love Apple sometimes. Read more: <a href="http://developer.apple.com/documentation/Carbon/Reference/File_Manager/Reference/reference.html">File Manager Reference</a></p>
<img src="http://feeds.feedburner.com/~r/NickBrawn/~4/Z_2W0Dyu2y8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.nickbrawn.com/2008/08/move-to-trash/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.nickbrawn.com/2008/08/move-to-trash/</feedburner:origLink></item>
		<item>
		<title>“Most Popular”</title>
		<link>http://feedproxy.google.com/~r/NickBrawn/~3/mmIxrTzzbMc/</link>
		<comments>http://www.nickbrawn.com/2008/08/most-popular/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 00:06:10 +0000</pubDate>
		<dc:creator>Nick</dc:creator>
		
		<category><![CDATA[Web]]></category>

		<category><![CDATA[blackhumour]]></category>

		<category><![CDATA[poorchoiceofwords]]></category>

		<guid isPermaLink="false">http://www.nickbrawn.com/?p=207</guid>
		<description><![CDATA[As seen on nbc10.com:
]]></description>
			<content:encoded><![CDATA[<p>As seen on nbc10.com:</p>
<div id="attachment_206" class="wp-caption alignnone" style="width: 214px"><a href="http://www.nbc10.com/news/17318423/detail.html?dl=mainclick"><img class="size-full wp-image-206" title="&quot;Most Popular&quot;" src="http://www.nickbrawn.com/wp-content/uploads/2008/08/picture-34.png" border="0" alt="" width="204" height="281" /></a><p class="wp-caption-text">...perhaps &quot;Most Read&quot; would be more appropriate</p></div>
<img src="http://feeds.feedburner.com/~r/NickBrawn/~4/mmIxrTzzbMc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.nickbrawn.com/2008/08/most-popular/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.nickbrawn.com/2008/08/most-popular/</feedburner:origLink></item>
		<item>
		<title>Indie talks launch; storefronts; mailing list signups</title>
		<link>http://feedproxy.google.com/~r/NickBrawn/~3/uYzFybh_jCs/</link>
		<comments>http://www.nickbrawn.com/2008/08/indie-talks-launch-storefronts-mailing-list-signups/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 05:05:14 +0000</pubDate>
		<dc:creator>Nick</dc:creator>
		
		<category><![CDATA[Design]]></category>

		<category><![CDATA[Tech]]></category>

		<category><![CDATA[microisv]]></category>

		<category><![CDATA[campaign monitor]]></category>

		<category><![CDATA[golden braeburn]]></category>

		<category><![CDATA[macosx]]></category>

		<category><![CDATA[potion store]]></category>

		<category><![CDATA[storefront]]></category>

		<guid isPermaLink="false">http://www.nickbrawn.com/?p=204</guid>
		<description><![CDATA[Justin Williams describes his experiences since launching Today 1.0 over here.
Justin makes a comment about saving time if he&#8217;d used Potion Store instead of rolling his own storefront. I took a look at Potion Store when it first came out, and it looks like its come a long way since then. Anyone using it?
Also on [...]]]></description>
			<content:encoded><![CDATA[<p>Justin Williams describes his experiences since launching <a href="http://secondgearllc.com/today/">Today 1.0</a> over <a href="http://log.carpeaqua.com/post/47389586/ive-officially-been-indie-since-the-end-of-april">here</a>.</p>
<p>Justin makes a comment about saving time if he&#8217;d used <a href="http://www.potionfactory.com/potionstore">Potion Store</a> instead of rolling his own storefront. I took a look at Potion Store when it first came out, and it looks like its come a long way since then. Anyone using it?</p>
<p>Also on the Mac / Indie storefront front - <a href="http://golden-braeburn.com/">Golden Braeburn</a> from the Wil Shipley and crew appears to be inching closer to launch. Something to keep an eye on.</p>
<p>Lastly, if you are doing any kind of software launch - you probably want to provide a mailing list to let people know when it goes live. I use <a href="http://www.campaignmonitor.com/">Campaign Monitor</a> for this, and <a href="http://www.shauninman.com">Shaun Inman</a> (author of the awesome <a href="http://haveamint.com/">Mint</a> webstats tool) has described a great way to integrate signups into your website <a href="http://www.shauninman.com/archive/2008/08/19/sign_up_ness">here</a>.</p>
<img src="http://feeds.feedburner.com/~r/NickBrawn/~4/uYzFybh_jCs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.nickbrawn.com/2008/08/indie-talks-launch-storefronts-mailing-list-signups/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.nickbrawn.com/2008/08/indie-talks-launch-storefronts-mailing-list-signups/</feedburner:origLink></item>
		<item>
		<title>Context-manage your Dock</title>
		<link>http://feedproxy.google.com/~r/NickBrawn/~3/D__ensFKjSg/</link>
		<comments>http://www.nickbrawn.com/2008/08/context-manage-your-dock/#comments</comments>
		<pubDate>Mon, 25 Aug 2008 08:51:13 +0000</pubDate>
		<dc:creator>Nick</dc:creator>
		
		<category><![CDATA[Tech]]></category>

		<category><![CDATA[desktop]]></category>

		<category><![CDATA[dock]]></category>

		<category><![CDATA[macosx]]></category>

		<category><![CDATA[productivity]]></category>

		<guid isPermaLink="false">http://www.nickbrawn.com/?p=198</guid>
		<description><![CDATA[A while back I mentioned my frustration with an overflowing dock, and needing to be able to manage it better.
Well I&#8217;ve found something that comes pretty close.
The free application Dock Spaces lets you configure multiple docks. In the above example I&#8217;ve setup two docks, one for programming with TextMate, Xcode, Interface Builder, Plist Editor, etc [...]]]></description>
			<content:encoded><![CDATA[<p>A while back I mentioned my frustration with an overflowing dock, and needing to be able to manage it better.</p>
<p>Well I&#8217;ve found something that comes pretty close.</p>
<div id="attachment_199" class="wp-caption alignnone" style="width: 310px"><img class="size-medium wp-image-199" title="Dock 1" src="http://www.nickbrawn.com/wp-content/uploads/2008/08/picture-33-300x25.png" alt="Programming Context" width="300" height="25" /><p class="wp-caption-text">Programming Context</p></div>
<div id="attachment_200" class="wp-caption alignnone" style="width: 310px"><img class="size-medium wp-image-200" title="Dock 2" src="http://www.nickbrawn.com/wp-content/uploads/2008/08/picture-32-300x33.png" alt="Remote Office Context" width="300" height="33" /><p class="wp-caption-text">Remote Office Context</p></div>
<p>The free application <a href="http://web.mac.com/patrickjamelo/">Dock Spaces</a> lets you configure multiple docks. In the above example I&#8217;ve setup two docks, one for programming with TextMate, Xcode, Interface Builder, Plist Editor, etc - and my Remote Office setup with Word, Excel, etc.</p>
<p>If you&#8217;re familiar with the GTD philosophy, it advocates minimising distractions and context switching. By having the above setup, I&#8217;m a little less likely to fire up Xcode while doing other work.</p>
<p>Quickly switch between Docks with a configurable shortcut (just like Spaces). I&#8217;m using ^# to switch Docks. Note - if you&#8217;re already using shortcuts for Spaces, make sure you don&#8217;t clobber them with Dock Spaces.</p>
<p>Highly recommended!</p>
<img src="http://feeds.feedburner.com/~r/NickBrawn/~4/D__ensFKjSg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.nickbrawn.com/2008/08/context-manage-your-dock/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.nickbrawn.com/2008/08/context-manage-your-dock/</feedburner:origLink></item>
		<item>
		<title>Useful sample code from Apple</title>
		<link>http://feedproxy.google.com/~r/NickBrawn/~3/0c6APdU3Gqw/</link>
		<comments>http://www.nickbrawn.com/2008/08/useful-sample-code-from-apple/#comments</comments>
		<pubDate>Sat, 23 Aug 2008 03:30:16 +0000</pubDate>
		<dc:creator>Nick</dc:creator>
		
		<category><![CDATA[Cocoa]]></category>

		<category><![CDATA[Security]]></category>

		<category><![CDATA[authorization]]></category>

		<category><![CDATA[code]]></category>

		<category><![CDATA[helper tool]]></category>

		<category><![CDATA[sourceview]]></category>

		<guid isPermaLink="false">http://www.nickbrawn.com/?p=194</guid>
		<description><![CDATA[A lot of stuff was updated for Leopard, including some much needed example code. In particular I found the following two very useful&#8230;
SourceView:
This example demonstrates how to replicate the look and feel of Finder / Mail / iTunes &#8220;Source View&#8221; (left-handed column). If you ever tried to replicate this in Tiger, you will appreciate having [...]]]></description>
			<content:encoded><![CDATA[<p>A lot of stuff was updated for Leopard, including some much needed example code. In particular I found the following two very useful&#8230;</p>
<p><a href="http://developer.apple.com/samplecode/SourceView/index.html">SourceView</a>:</p>
<p>This example demonstrates how to replicate the look and feel of Finder / Mail / iTunes &#8220;Source View&#8221; (left-handed column). If you ever tried to replicate this in Tiger, you will appreciate having this documented once and for all. It includes how to get the gradient selection, Group-Row (seen in Xcode-&gt;Target Get Info-&gt;Build Settings) and Section Headers (Devices, Places in Finder).</p>
<p>It also contains the very useful ImageAndTextCell class which does exactly what it says.</p>
<p><a href="http://developer.apple.com/samplecode/BetterAuthorizationSample/index.html">BetterAuthorizationSample</a>:</p>
<p>If you ever need to interact with the operating system as root, you need to authorize your application. This can be done several (bad) ways, but this is the <em>(</em>only<em>)</em> recommended way.</p>
<p>The example shows how to split your privileged code into a separate &#8220;helper tool&#8221; that once authorized, is made setuid root. It shows how to communicate between your main application and the helper tool to perform privileged operations. That said, I&#8217;m still not sure if it discusses how to do asynchronous ops (for things like tailing a root-owned, mode 0600 log file).</p>
<p>Before this example, the last code was a few years old and focused more on Carbon-&gt;Helper Tool integration. It also broke on the early Leopard seeds (and was the major cause of delay and frustration for Shinobi Scanner).</p>
<p><em>What Apple sample code do you highly recommend?</em></p>
<img src="http://feeds.feedburner.com/~r/NickBrawn/~4/0c6APdU3Gqw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.nickbrawn.com/2008/08/useful-sample-code-from-apple/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.nickbrawn.com/2008/08/useful-sample-code-from-apple/</feedburner:origLink></item>
		<item>
		<title>Which support forum?</title>
		<link>http://feedproxy.google.com/~r/NickBrawn/~3/rfPHS5c5uN8/</link>
		<comments>http://www.nickbrawn.com/2008/08/which-support-forum/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 12:20:24 +0000</pubDate>
		<dc:creator>Nick</dc:creator>
		
		<category><![CDATA[Web]]></category>

		<category><![CDATA[forum]]></category>

		<category><![CDATA[microisv]]></category>

		<guid isPermaLink="false">http://www.nickbrawn.com/?p=190</guid>
		<description><![CDATA[I need to pick a support forum.
The main advantages to using a forum over a mailing list are:

Stickies: Useful for FAQs or hot topics
Searchable: Yes mailing lists can do this too, but I don&#8217;t think the average person makes use of them.
Community: More customisation options (avatars, signatures, etc)
People Helping People: Over time, your more active [...]]]></description>
			<content:encoded><![CDATA[<p>I need to pick a support forum.</p>
<p>The main advantages to using a forum over a mailing list are:</p>
<ol>
<li>Stickies: Useful for FAQs or hot topics</li>
<li>Searchable: Yes mailing lists can do this too, but I don&#8217;t think the average person makes use of them.</li>
<li>Community: More customisation options (avatars, signatures, etc)</li>
<li>People Helping People: Over time, your more active users will jump in and help the newbies out.</li>
</ol>
<p>At present, I could make use of FogBugz, GetSatisfaction, Google Groups, or some other forum software - punbb, phpbb, etc.</p>
<p>I like FogBugz&#8217; forum because its lightweight, themeable, and has that neat feature to hide flame and trolling posts from everyone but the poster (thus discouraging similar posts, since nobody ever responds to them). The other benefit is that by using FogBugz, I can combine my bug tracking, wiki and forum under one roof. Also, as I&#8217;m a solo developer, I get FogBugz for free!</p>
<p>GetSatisfaction seems to have all the bells and whistles, and an innovative approach to providing community support for companies and products. That said, it may very well be overkill for my requirements, and since its a hosted solution, I don&#8217;t have full control. This may have long-term implications if I ever had to switch away from it.</p>
<p>Google Groups seems to be the quick and easy approach a lot of people are using. Since it&#8217;s hosted by Google I don&#8217;t get full control, and I&#8217;ve personally had mixed experiences when using it.</p>
<p>Any other suggestions, recommendations?</p>
<img src="http://feeds.feedburner.com/~r/NickBrawn/~4/rfPHS5c5uN8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.nickbrawn.com/2008/08/which-support-forum/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.nickbrawn.com/2008/08/which-support-forum/</feedburner:origLink></item>
	</channel>
</rss>
