<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>tonyarnold.com</title>
    <link>http://tonyarnold.com</link>
    <description>tonyarnold.com</description>
    <language>en-au</language>
    <generator>Symphony 2.2.5RC1</generator>
    
    <image>
      <url>http://tonyarnold.com/workspace/layout/img/favicon.gif</url>
      <title>tonyarnold.com</title>
      <link>http://tonyarnold.com</link>
      <width>18</width>
      <height>18</height>
      <description>tonyarnold.com</description>
    </image>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/tonyarnold" /><feedburner:info uri="tonyarnold" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /><item>
      <title>Xcode syntax highlighting fix</title>
      <link>http://feedproxy.google.com/~r/tonyarnold/~3/P9gN-Ay7ABw/xcode-syntax-highlighting-fix</link>
      <pubDate>Mon, 10 Oct 2011 10:13:00 +1100</pubDate>
      <guid isPermaLink="false">http://tonyarnold.com/post/3720/xcode-syntax-highlighting-fix</guid>
      <description>&lt;p&gt;Over the last couple of months of use of Xcode &lt;span class="numbers"&gt;4&lt;/span&gt;, I’ve found that (at times) everyone’s favourite Objective-​C &lt;span class="caps"&gt;IDE&lt;/span&gt; loses its way while making code pretty and colourful. I’ve filed radars about it, but I could never reliably and consistently reproduce the problem so the Xcode gnomes at Apple couldn’t either.&lt;/p&gt;&lt;p&gt;If you’re having trouble with syntax highlighting in your Xcode projects, please try this tip from &lt;a href="http://stackoverflow.com/questions/2138047/xcode-code-loses-syntax-coloring/7676487#7676487"&gt;Lars Schneider&lt;/a&gt;:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Increase the indexing log level by opening Terminal.app and executing the following command:&lt;/p&gt;

&lt;p&gt;&lt;code class="prettyprint"&gt;defaults write com.apple.dt.Xcode IDEIndexingClangInvocationLogLevel 3&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open Console.app and search for “&lt;strong&gt;Xcode&lt;/strong&gt;” — specifically for “file not found” errors for header files mentioned in your &lt;span class="caps"&gt;PCH&lt;/span&gt; (Pre-​Compiled Header)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;Fix any problems that are reported in the console logs.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Lars mentions adding “&lt;code class="prettyprint"&gt;$(SRCROOT)/**&lt;/code&gt;” to your project header search paths in his answer, but I didn’t find that to be necessary.&lt;/p&gt;&lt;p&gt;The good news is that Xcode &lt;span class="numbers"&gt;4&lt;/span&gt;.&lt;span class="numbers"&gt;2&lt;/span&gt; seems to improve this situation (and a bunch of others), so grab a copy when it’s released later this week.&lt;/p&gt;&lt;p&gt;Thanks to &lt;a href="https://twitter.com/rafifyalda/status/123154154842632192"&gt;Rafif Yalda for pointing me in the direction of Lars’ Stack Overflow post this morning&lt;/a&gt;!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tonyarnold/~4/P9gN-Ay7ABw" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://tonyarnold.com/post/3720/xcode-syntax-highlighting-fix</feedburner:origLink></item>
    <item>
      <title>Mission Control Tips</title>
      <link>http://feedproxy.google.com/~r/tonyarnold/~3/eGWQRihQcNQ/mission-control-tips</link>
      <pubDate>Fri, 22 Jul 2011 15:09:00 +1100</pubDate>
      <guid isPermaLink="false">http://tonyarnold.com/post/3683/mission-control-tips</guid>
      <description>&lt;p&gt;&lt;img src="http://static.tonyarnold.com/missioncontrolicon-1311311856.png" class=" left" style=" margin-top:5px;background-image:none;border-width:0px;background-color:transparent;-webkit-box-shadow:none;-mozilla-box-shadow:none;box-shadow:none" alt=" Mission Control Icon"/&gt;&lt;/p&gt;&lt;p&gt;If you’ve just finished installing your shiny new copy of &lt;a href="http://www.apple.com/macosx/"&gt;Mac &lt;span class="caps"&gt;OS&lt;/span&gt; X Lion&lt;/a&gt;, here are a few tips for Apple’s replacement for Spaces and Exposé — “&lt;a href="http://www.apple.com/macosx/whats-new/mission-control.html"&gt;Mission Control&lt;/a&gt;”. For each of these tips, I’m going to assume you’ve created at least one new Desktop in Mission Control — if you haven’t, do that now.&lt;/p&gt;&lt;h2&gt;Create a new Desktop for an application or window&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Activate Mission Control;&lt;/li&gt;
&lt;li&gt;Click and hold on either an individual window, or an application’s icon;&lt;/li&gt;
&lt;li&gt;Drag the selected item up the top right corner of your display — as you do this, a slightly transparent Desktop will slide out from the right-​hand side of the screen with a “+” on it; &lt;img src="http://static.tonyarnold.com/createdesktop-1311313098.png" alt="Creating a new Desktop using Mission Control"/&gt;&lt;/li&gt;
&lt;li&gt;Drop the selected item onto this new Desktop;&lt;/li&gt;
&lt;li&gt;Bingo! You have a new Desktop, with your selected items on it — simply click the new Desktop to switch to it.&lt;/li&gt;
&lt;/ol&gt;&lt;h2&gt;Set different desktop images for each Desktop&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Switch to the Desktop you want to change the desktop picture on;&lt;/li&gt;
&lt;li&gt;Launch ‘&lt;strong&gt;System Preferences.app&lt;/strong&gt;’; &lt;img src="http://static.tonyarnold.com/sysprefsappicon-1311313183.png" style=" margin-top:5px;background-image:none;border-width:0px;background-color:transparent;-webkit-box-shadow:none;-mozilla-box-shadow:none;box-shadow:none" alt=" System Preferences application icon in Finder"/&gt;&lt;/li&gt;
&lt;li&gt;Go to ‘&lt;strong&gt;Desktop &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Screen Saver&lt;/strong&gt;’; &lt;img src="http://static.tonyarnold.com/desktopsysprefs-1311313127.png" alt="Desktop &amp;amp; Screen Saver system preferences icon highlighted"/&gt;&lt;/li&gt;
&lt;li&gt;Set your desktop image the same way you always do;&lt;/li&gt;
&lt;li&gt;Move the ‘&lt;strong&gt;Desktop &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Screen Saver&lt;/strong&gt;’ window to the next Desktop by dragging it to the edge of your screen and holding it there for a second or two;&lt;/li&gt;
&lt;li&gt;Change the desktop image on that Desktop; &lt;img src="http://static.tonyarnold.com/mcdesktoppics-1311314159.png" alt="Mission Control with different desktop images"/&gt;&lt;/li&gt;
&lt;li&gt;Yell our ‘hooray!’ a little bit, cause it’s pretty cool to have different desktop images on each of your Desktops (&lt;em&gt;‘Hooray’ completely optional&lt;/em&gt;).&lt;/li&gt;
&lt;/ol&gt;&lt;h2&gt;Set hotkeys to go directly to each Desktop&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Launch ‘&lt;strong&gt;System Preferences.app&lt;/strong&gt;’; &lt;img src="http://static.tonyarnold.com/sysprefsappicon-1311313183.png" style=" margin-top:5px;background-image:none;border-width:0px;background-color:transparent;-webkit-box-shadow:none;-mozilla-box-shadow:none;box-shadow:none" alt=" System Preferences application icon in Finder"/&gt;&lt;/li&gt;
&lt;li&gt;Go to ‘&lt;strong&gt;Keyboard&lt;/strong&gt;’; &lt;img src="http://static.tonyarnold.com/keyboardsysprefs-1311313159.png" alt="Keyboard system preferences icon highlighted"/&gt;&lt;/li&gt;
&lt;li&gt;Select the ‘&lt;strong&gt;Keyboard Shortcuts&lt;/strong&gt;’ tab;&lt;/li&gt;
&lt;li&gt;From the source list on the left, select ‘&lt;strong&gt;Mission Control&lt;/strong&gt;’;&lt;/li&gt;
&lt;li&gt;The final entries in the list on the right should correspond to your individual Desktops — they will be labelled ‘&lt;em&gt;Switch to Desktop &lt;span class="numbers"&gt;1&lt;/span&gt;&lt;/em&gt;′, ‘&lt;em&gt;Switch to Desktop &lt;span class="numbers"&gt;2&lt;/span&gt;&lt;/em&gt;′, etc; &lt;img src="http://static.tonyarnold.com/keyboardshortcuts-1311313766.png" alt="Keyboard Shortcuts system preferences with Mission Control selected"/&gt;&lt;/li&gt;
&lt;li&gt;Set a keyboard shortcut — &lt;em&gt;make sure that you enable the shortcut by clicking on the checkbox next to its name&lt;/em&gt;;&lt;/li&gt;
&lt;li&gt;Party like it’s Mac &lt;span class="caps"&gt;OS&lt;/span&gt; X Snow Leopard running Hyperspaces (*Partying not provided in package)&lt;/li&gt;
&lt;/ol&gt;&lt;h2&gt;Assign an application to a specific Desktop, or all Desktops using the Dock&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Right-​click on the icon of the application in the Dock you want to move to another Desktop;&lt;/li&gt;
&lt;li&gt;Select ‘&lt;strong&gt;Options » Assign To » All Desktops&lt;/strong&gt;’ to show this application on all Desktops (this is useful for applications like the Finder, iChat and Twitter); &lt;span class="caps"&gt;OR&lt;/span&gt; Select ‘&lt;strong&gt;Options » Assign To » This Desktop&lt;/strong&gt;’ to make the application open new windows on the current Desktop, even if you’re working on another Desktop; &lt;img src="http://static.tonyarnold.com/dockassignments-1311313145.png" style=" margin-top:5px;background-image:none;border-width:0px;background-color:transparent;-webkit-box-shadow:none;-mozilla-box-shadow:none;box-shadow:none" alt=" Dock Desktop assignments menu"/&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;em&gt;Note:&lt;/em&gt; These settings persist through quitting and re-​opening an application, so if you ever decide you don’t like this setting follow the instructions as above but select ‘&lt;strong&gt;None&lt;/strong&gt;’ from the menu.&lt;/p&gt;&lt;p&gt;Like &lt;a href="http://thecocoabots.com/blog/post/376/"&gt;I’ve said before, I really like Mission Control&lt;/a&gt; — it’s got the right blend of features and simplicity for the way I work. I’ve had to modify my work patterns a little, but it feels frictionless next to the old Spaces to me (&lt;strong&gt;&lt;em&gt;hundreds of Hyperspaces users everywhere gasp!&lt;/em&gt;&lt;/strong&gt;). I’m sure as we all spend more time with Mission Control, more features will come to light — I’ll post them here as I find them.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tonyarnold/~4/eGWQRihQcNQ" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://tonyarnold.com/post/3683/mission-control-tips</feedburner:origLink></item>
    <item>
      <title>App Store Reviews as ‘Political’ Stands</title>
      <link>http://feedproxy.google.com/~r/tonyarnold/~3/7GUiDcBIU84/app-store-reviews-as-political-stands</link>
      <pubDate>Mon, 30 May 2011 22:14:00 +1100</pubDate>
      <guid isPermaLink="false">http://tonyarnold.com/post/3679/app-store-reviews-as-political-stands</guid>
      <description>&lt;p&gt;I’ve just finished reviewing the day’s earnings, rankings and reviews courtesy of &lt;a href="http://appannie.com/"&gt;App Annie&lt;/a&gt;, and I came across a gem of a review for &lt;a href="http://thecocoabots.com/hyperspaces/"&gt;Hyperspaces&lt;/a&gt;. This is the first time I’ve seen an app review that is ‘politically’ motivated.&lt;/p&gt;&lt;h2&gt;Zero stars for the Mac App Store&lt;/h2&gt;&lt;pre&gt;The end of the 'world wide web'. The supposedly free internet with no boundaries. Political boundaries now apply. To justify enforced geographical extortion. Price-gouging based on location. By Apple, no less, leading the way. First with iTunes, and now this App Store. This app costs 12.99 in the US app store, but 25% more at 15.99 for those of us forced to use the 'Australian' app store, which is in fact the very same app store on the same server in the USA. Why? When the current exchange rate dictates the price should be even less than 12.99? Because they can rip us off an extra 25% on every app based on our history of paying more for products due to extra distance shipping etc. Because Apple and this developer are publicly declaring AUSTRALIANS ARE STUPID IGNORANT FOOLS EASILY PARTED WITH THEIR MONEY.And they're right, because I am buying this app at the gouge-price - but not without a shout in anger. Because if I want this app, I now have no other option as it is not available directly from the developer or other third party site any more where once I could have bought it at the fair price via Paypal etc. I say it is enforced because I used to have a US Apple account for years, before it was even a US account, it was just an Apple account. Then they introduced the 'US' and 'Australian' versions and no more - they tell me I can only buy from my 'geographical' Australian store and nowhere else and have to pay extra for this bs nonsense. So as I see it, any developer who makes their apps only available via this App Store and hence making it my only option, is a knowing party to this price fixing and gouging, and I will accordingly score their app a measly 1 star every time. I can love their app, use their app, recommend their app, but the price gouging overrides everything else. 1 star for Hyperspaces. Zero stars for Apple's Mac App Store (and iTunes).&lt;/pre&gt;&lt;p&gt;I can’t say I disagree with the user’s review of Apple’s price gouging in the Australian market — I think they [Apple] need to come up with a model that better reflects the current economic state of play. I’ll cop the comments about not being able to purchase via my site — for posterity, &lt;a href="http://store.thecocoabots.com/"&gt;Hyperspaces is still available for purchase directly from me&lt;/a&gt; it’s just not linked from anywhere but inside the demo (erk!).&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tonyarnold/~4/7GUiDcBIU84" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://tonyarnold.com/post/3679/app-store-reviews-as-political-stands</feedburner:origLink></item>
    <item>
      <title>What to do when all you have is symbLOLication</title>
      <link>http://feedproxy.google.com/~r/tonyarnold/~3/I995S3oYLyo/what-to-do-when-all-you-have-is-symblolication</link>
      <pubDate>Mon, 16 May 2011 21:02:00 +1100</pubDate>
      <guid isPermaLink="false">http://tonyarnold.com/post/3627/what-to-do-when-all-you-have-is-symblolication</guid>
      <description>&lt;p&gt;&lt;img src="http://static.tonyarnold.com/instruments-1306143920.png" alt="Instruments icon" class="left" style="margin-top:5px;background-image:none;border-width:0px;background-color:transparent;-webkit-box-shadow:none;-mozilla-box-shadow:none;box-shadow:none"/&gt;I’ve been battling a pesky case of missing symbols when debugging on iOS-​based devices lately. It only started when I upgraded to Xcode &lt;span class="numbers"&gt;4&lt;/span&gt;. I was beginning to think I’d be symbolicating by hand until Apple sorted things out — fear not, I’ve found a workaround!&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;First up, profile your app using &lt;strong&gt;Instruments.app&lt;/strong&gt; — I use the ‘&lt;strong&gt;Time Profiler&lt;/strong&gt;’ instrument, because it’s pretty easy to see when things aren’t symbolicating properly. If you’re (un)lucky, your app will profile just fine, but you’ll be left with a bunch of addresses rather than nicely named methods and functions;&lt;/li&gt;
&lt;li&gt;Stop profiling your app, but don’t close the Instruments document;&lt;/li&gt;
&lt;li&gt;Go to ‘&lt;strong&gt;File » Re-​Symbolicate Document…&lt;/strong&gt;’;&lt;/li&gt;
&lt;li&gt;Find your app’s name in the list (search if you have to) and select it;&lt;/li&gt;
&lt;li&gt;Click the ‘&lt;strong&gt;Locate&lt;/strong&gt;’ button, and find the dSYM for your app (as of Xcode &lt;span class="numbers"&gt;4&lt;/span&gt;, it’ll be in &lt;code&gt;~/Library/Developer/Xcode/DerivedData/$PRODUCT/Build/Products/Debug-iphoneos/&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Once you’ve done this, click &lt;span class="caps"&gt;OK&lt;/span&gt; and voila symbol names should spring to life!&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Any subsequent runs of your app in this Instruments document should properly symbolicate, allowing you to get back to making your app faster and smoother — enjoy!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tonyarnold/~4/I995S3oYLyo" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://tonyarnold.com/post/3627/what-to-do-when-all-you-have-is-symblolication</feedburner:origLink></item>
    <item>
      <title>My Backup Setup</title>
      <link>http://feedproxy.google.com/~r/tonyarnold/~3/bPlmlaDwWnY/my-backup-setup</link>
      <pubDate>Fri, 22 Apr 2011 22:27:00 +1100</pubDate>
      <guid isPermaLink="false">http://tonyarnold.com/post/3623/my-backup-setup</guid>
      <description>&lt;p&gt;After the gushing “&lt;a href="http://tonyarnold.com/post/3620/thankyou-backblaze/"&gt;Thankyou, Backblaze&lt;/a&gt;” post from earlier today, I thought it might be of some interest to others how I backup my Mac (like an elephant — hooo, I tied in a photo of my travels again!).&lt;/p&gt;&lt;p&gt;&lt;img src="http://static.tonyarnold.com/elephant-1306151150.png" alt="Elephants have long memory. Like a backup. And a boss." title="Elephants have long memory. Like a backup. And a boss."/&gt;&lt;/p&gt;&lt;p&gt;I consider backing up to be common sense these days. If you use your Mac for work or for play, you have information that you’d be upset were it to disappear. Not backing up is the computing equivalent of driving without a seatbelt: you might not have an accident today, but you’ll be thankful for it when you do.&lt;/p&gt;&lt;p&gt;I have four levels of backups setup — that might sound a bit excessive, but I’ve found some services are better suited to looking after different types of information:&lt;/p&gt;&lt;h3&gt;&lt;a href="http://db.tt/hsOUhWJ"&gt;Dropbox&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Dropbox is the centre of my backup strategy. My most important work-​related documents all live in my Dropbox. I have a &lt;span class="numbers"&gt;50&lt;/span&gt;Gb account, of which I use about &lt;span class="numbers"&gt;5&lt;/span&gt;% for all of my client data, business records and any personal documents. I don’t store my Music, my Movies or any non-​document content with Dropbox. With the advent of Xcode &lt;span class="numbers"&gt;4&lt;/span&gt; and defaulting to storing intermediate build files in &lt;em&gt;~/​Library/​Developer/​Xcode/​Derived Data&lt;/em&gt;, I can safely leave these here without causing constant uploads. &lt;span class="caps"&gt;FYI&lt;/span&gt;, that’s a referral link to Dropbox’s website — if you end up signing up for a Dropbox account, I get &lt;span class="numbers"&gt;250&lt;/span&gt;Mb of free space in my account). You can use &lt;span class="numbers"&gt;2&lt;/span&gt;Gb of storage with Dropbox for free, which is &lt;em&gt;awesome&lt;/em&gt;.&lt;/p&gt;&lt;h3&gt;&lt;a href="http://github.com/"&gt;Github&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;If I’m working on a development project for you, or for myself, I have a private git repository setup for it on Github. This is an absolute no-​brainer — the setup is simple, the user interface is simple and the support is great. For ~$&lt;span class="numbers"&gt;7&lt;/span&gt; (less if you’re transacting in &lt;span class="caps"&gt;AUD&lt;/span&gt;) every programmer should have this (or the equivalent for your &lt;span class="caps"&gt;DVCS&lt;/span&gt; of choice — I’ve also heard good things about &lt;a href="https://bitbucket.org/"&gt;Atlassian’s BitBucket&lt;/a&gt;).&lt;/p&gt;&lt;h3&gt;Time Machine&lt;/h3&gt;&lt;p&gt;&lt;span class="numbers"&gt;1&lt;/span&gt;Tb external hard drives retail for about $&lt;span class="numbers"&gt;90&lt;/span&gt;. Buy one, and setup Time Machine. Time Machine is far from perfect, but it’s something you don’t have to think about it — it just sits in the background and copies your changes to an external disk once an hour. It’s also a heck of a lot quicker to restore files to your Mac from a disk that’s directly attached than from any online service.&lt;/p&gt;&lt;h3&gt;&lt;a href="http://backblaze.com/"&gt;Backblaze&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;span class="caps"&gt;AKA&lt;/span&gt; “The Best $&lt;span class="numbers"&gt;5&lt;/span&gt; I Spend Each Month”. Backblaze sits in the background just like Time Machine, but it pushes your information up to Backblaze’s data centre for long term storage rather than to local storage. It took a long time to perform the initial backup, but now that first run has finished I don’t notice it at all (and it’s &lt;a href="http://tonyarnold.com/post/3620/thankyou-backblaze/"&gt;saved my bacon&lt;/a&gt;) after only a couple of months of use!). The brilliant feature that Backblaze offers is that they will send you a physical hard disk containing your data should you ever need it. They also don’t set limits on the amount of data you can store with them, so you don’t need to cherry-​pick what you’ll backup — just let it do everything!&lt;/p&gt;&lt;p&gt;If you want to keep reading about backups, there’s plenty of great info on other approaches at the &lt;a href="http://www.worldbackupday.net/"&gt;World Backup Day site&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tonyarnold/~4/bPlmlaDwWnY" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://tonyarnold.com/post/3623/my-backup-setup</feedburner:origLink></item>
    <item>
      <title>Thankyou, Backblaze</title>
      <link>http://feedproxy.google.com/~r/tonyarnold/~3/g3Wt0h0O5D4/thankyou-backblaze</link>
      <pubDate>Fri, 22 Apr 2011 22:02:00 +1100</pubDate>
      <guid isPermaLink="false">http://tonyarnold.com/post/3620/thankyou-backblaze</guid>
      <description>&lt;p&gt;&lt;img src="http://static.tonyarnold.com/incense-1306151252.png" alt="Image of incense at Angkor Wat" title="Incense at Angkor Wat"/&gt;&lt;/p&gt;&lt;p&gt;I had one of those ‘cold shivers running down your spine’ moments this week, when a simple &lt;a href="http://dropbox.com/"&gt;Dropbox&lt;/a&gt; problem wiped out an entire client Xcode project. I’m not entirely sure why it happened — I assume because of my constant rebooting between Snow Leopard and Lion (and subsequently ‘out-​of-​time’ file dates), but by the time I realised what was going on, neither &lt;a href="http://dropbox.com/"&gt;Dropbox&lt;/a&gt; nor Time Machine had a copy of the files. Had I not set up three levels of backups, I might as well have been burning incense to the gods to get my data back (did you like that? I tied the pretty photo I took to the words on your screen!).&lt;/p&gt;&lt;p&gt;Thankfully, &lt;a href="http://backblaze.com/"&gt;Backblaze&lt;/a&gt; was far more thorough than either of these services and &lt;span class="numbers"&gt;5&lt;/span&gt; minutes after running through the online restore wizard I had a full copy of the project on my hard drive, and was knee deep in code again. Thankyou, &lt;a href="http://backblaze.com/"&gt;Backblaze&lt;/a&gt; — you saved me stress and time, and the $&lt;span class="numbers"&gt;5&lt;/span&gt; (well, $&lt;span class="numbers"&gt;4&lt;/span&gt;-​something Australia) per month to backup my Mac is something I will not question again.&lt;/p&gt;&lt;p&gt;If you rely on your Mac professionally, and you keep anything remotely important on there please take the time to verify the integrity of your back-​ups.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tonyarnold/~4/g3Wt0h0O5D4" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://tonyarnold.com/post/3620/thankyou-backblaze</feedburner:origLink></item>
    <item>
      <title>“Redefinition” with waffles</title>
      <link>http://feedproxy.google.com/~r/tonyarnold/~3/jeMf2OGVvPw/redefinition-with-waffles</link>
      <pubDate>Fri, 19 Nov 2010 09:44:00 +1100</pubDate>
      <guid isPermaLink="false">http://tonyarnold.com/post/3607/redefinition-with-waffles</guid>
      <description>&lt;p&gt;I’ve always been an Apple user, and I love working with their technology — but I’ve noticed a worrying trend amongst some (very smart, very respected) Cocoa developers of late to excuse Apple’s every move, even when some of the moves are clearly a step backward. There have been some &lt;a href="http://rentzsch.tumblr.com/post/592949476/c4-release"&gt;notable exceptions&lt;/a&gt; (which I applaud).&lt;/p&gt;&lt;blockquote&gt;
  &lt;p&gt;Steve Jobs compares the currently sprouting wave of “post-​PC devices” to cars, and PCs such as they exist today to trucks. For most things most people do, you don’t need a truck, and it’s a lot of dead weight to haul around with you. I can see his point to a certain extent, but right now, the argument doesn’t hold.&lt;br/&gt; …&lt;br/&gt; Some people will say “real people don’t care about the file system”. Well, okay, sure. Real people still group materials together from multiple applications into one folder for whatever project it is they’re working on. Real people still aren’t satisfied with a row of chronologically ordered, scrollable thumbnails where the only recourse for secrecy is removal, and the only recourse for reordering is frail and time-​consuming and involves re-​saving everything.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;This was taken from &lt;a href="http://waffle.wootest.net/2010/11/18/redefinition/"&gt;waffle software’s “Redefinition” post&lt;/a&gt;, and I have to say this is one of the most succinct, straight-​to-​the-​point pieces of writing I’ve read about the dumbing down of consumer’s perceived expectations versus their actual wants of technology. I’ll let Jesper speak for himself rather than reproducing the article here, but &lt;strong&gt;I heartily concur&lt;/strong&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tonyarnold/~4/jeMf2OGVvPw" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://tonyarnold.com/post/3607/redefinition-with-waffles</feedburner:origLink></item>
    <item>
      <title>Life and the art of relaxating</title>
      <link>http://feedproxy.google.com/~r/tonyarnold/~3/41izp1BftEw/life-and-the-art-of-relaxating</link>
      <pubDate>Wed, 06 Oct 2010 15:20:00 +1100</pubDate>
      <guid isPermaLink="false">http://tonyarnold.com/post/3602/life-and-the-art-of-relaxating</guid>
      <description>&lt;p&gt;So when last we spoke, I was making noises about private methods in Objective-​C — I’ll get back to the regularly scheduled nerdery and instructional coding shortly, but I wanted to post a little bit about things that have happened over the last few months.&lt;/p&gt;&lt;h2&gt;Health&lt;/h2&gt;&lt;p&gt;For the better part of this year, I’ve been dealing with some completely non-​double-​rainbow health problems (oh, I went there). It’s not over yet, but I’m on the mend and hopefully this is the end of it for a while. This has taken a large toll on my ability to work on my own apps, while continuing to pay the bills by working on other people’s apps — this is why Hyperspaces &lt;span class="numbers"&gt;1&lt;/span&gt;.&lt;span class="numbers"&gt;1&lt;/span&gt; isn’t out yet. I’m on Doctor’s orders to take it slowly for a while — I spent this morning sitting in the sun for the first time in what seems like years. Why didn’t I make more time for this before? Sunshine most definitely &lt;strong&gt;is&lt;/strong&gt; double rainbow!&lt;/p&gt;&lt;p&gt;It’s necessary for me to thank my little family now, with the most awesome photo of Leah and Scout ever:&lt;/p&gt;&lt;p&gt;&lt;img src="http://static.tonyarnold.com/my_girls-1306151393.jpg" alt="Leah and Scout playing" title="Leah and Scouty playing"/&gt;&lt;/p&gt;&lt;h2&gt;The New Car&lt;/h2&gt;&lt;p&gt;Excitingly, I recently came into possession of a fairly recent model Mazda &lt;span class="numbers"&gt;6&lt;/span&gt; which I love to bits. Not because it’s a nice car to drive (it is), or because I think it’s a handsome devil (yes, again) but because for the last &lt;span class="numbers"&gt;13&lt;/span&gt; years I have struggled with the inability to put anything of real size into my car. The Lancer has been a noble steed, but it was well past time for me to upgrade to a so-​called “grown up” car:&lt;/p&gt;&lt;p&gt;&lt;img src="http://static.tonyarnold.com/mazda-1306151413.jpg" alt="The &amp;quot;Grown Up Car&amp;quot; being all shiny" title="Mazda"/&gt;&lt;/p&gt;&lt;p&gt;It was dutifully christened with a trip to &lt;a href="http://goo.gl/maps/OI1Y"&gt;Ikea&lt;/a&gt; where Leah and I struggled to fill even the remotest part of the space in the back. Despite the loss of sanity from actually entering Ikea on a weekend, I grinned for most of the trip home, and have washed the new car far too much since we bought it.&lt;/p&gt;&lt;h2&gt;Web Directions&lt;/h2&gt;&lt;p&gt;Next week, &lt;a href="http://south10.webdirections.org/"&gt;Web Directions South &lt;span class="numbers"&gt;2010&lt;/span&gt;&lt;/a&gt; is on and I’m going to be there as a free agent for the first time. I’ve armed myself with the essential dump’n’burn personal marketing tool — some very stylish new business cards put together by none other than my own &lt;a href="http://topsie.tumblr.com/"&gt;Leah&lt;/a&gt;:&lt;/p&gt;&lt;p&gt;&lt;img src="http://static.tonyarnold.com/businesscards-1306151379.jpg" alt="New CocoaBots business cards" title="Image of my business cards"/&gt;&lt;/p&gt;&lt;p&gt;I’m super excited to see what Maxine and John have in store for us this year — the calibre of last year’s sessions was impressive, and I met some fantastic people. If you’re going to be there and want to say ‘Hi!’ or have a drink, message me on &lt;a href="http://twitter.com/tonyarnold"&gt;the Twitters&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tonyarnold/~4/41izp1BftEw" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://tonyarnold.com/post/3602/life-and-the-art-of-relaxating</feedburner:origLink></item>
    <item>
      <title>Private methods in Objective-​C using categories</title>
      <link>http://feedproxy.google.com/~r/tonyarnold/~3/VEWgJ1rbqQk/private-methods-in-objective-c-using-categories</link>
      <pubDate>Tue, 04 May 2010 01:15:00 +1100</pubDate>
      <guid isPermaLink="false">http://tonyarnold.com/post/3138/private-methods-in-objective-c-using-categories</guid>
      <description>&lt;p&gt;&lt;img src="http://static.tonyarnold.com/danger_of_pulling_down_with_cage-1306152934.jpg" alt="Photo of a rusted gate in Croatia" title="Photo of a badly translated warning sign in Croatia"/&gt;&lt;/p&gt;&lt;p&gt;Objective-​C is an incredibly flexible language, but there are a few things I don’t think it handles very elegantly — private methods are one of those things. Private methods are important when designing your classes — keeping the implementation of your methods separate to the interface that users of your class see is good practice, and lets you change the way you implement things in future without making users of your class change their code.&lt;/p&gt;&lt;p&gt;Objective-​C has a great feature known as categories. In the &lt;a href="http://cocoadevcentral.com/d/learn_objectivec/"&gt;words of Scott Stevenson&lt;/a&gt;, “a category allows you to add methods to an existing class without subclassing it or needing to know any of the details of how it’s implemented”. My private methods are implemented using an anonymous category on each class. These are also known as “Class Extensions” and they look like this in my &lt;code&gt;.m&lt;/code&gt; file:&lt;/p&gt;&lt;pre&gt;&lt;code class="prettyprint"&gt;#import "MyGreatClass.h"

@interface MyGreatClass ()
- (void)MyGreatClass_somePrivateMethod;
@end

#pragma mark -
@implementation MyGreatClass

// Your standard methods for the class go here.

#pragma mark -
#pragma mark Private methods
- (void)MyGreatClass_somePrivateMethod {
  // Implement your private method here.
}

@end
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;By declaring the method interface inside the class extension, rather than in your header, subclasses and users of your class cannot see the method, and thus can’t use it. However within an instance of your class, the method is still usable!&lt;/p&gt;&lt;p&gt;You’ll notice that I preface my private methods with the name of the current class — I do this to avoid method name collisions with subclasses. It’s not strictly necessary, but it means I don’t have to think as hard when implementing subclasses of my class.&lt;/p&gt;&lt;p&gt;You can do everything you would in a normal class &lt;strong&gt;except&lt;/strong&gt; declare new instance variables. I often use my class extensions to redeclare a public &lt;code&gt;readonly&lt;/code&gt; property as &lt;code&gt;readwrite&lt;/code&gt; within the confines of the class instance. Another common use in my code are the following two methods:&lt;/p&gt;&lt;pre&gt;&lt;code class="prettyprint"&gt;- (void)MyGreatClass_registerObservers;
- (void)MyGreatClass_unregisterObservers;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;These methods are used to set up and tear down any Key/​Value Observers and bindings for the current class. I use these so often that &lt;a href="http://github.com/tonyarnold/CocoaBotsXcodeTemplates/"&gt;I’ve put together an Xcode class template&lt;/a&gt; so that they are included in my classes by default.&lt;/p&gt;&lt;p&gt;Please &lt;strong&gt;keep in mind that Objective-​C has no true implementation of private methods&lt;/strong&gt; — other classes can use these “private” methods if they know the structure of the method in question. With that said, I still believe this is a great way to keep your implementation as clean as possible.&lt;/p&gt;&lt;h2&gt;Update&lt;/h2&gt;&lt;p&gt;Both Paul and Collin make good points in the comments — you can just declare your private methods inline in your class without using an anonymous category. That will work so long as the declaration occurs before the first use of the method. In my mind, there are two good reasons to use a category:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Readability/​cleanliness&lt;/strong&gt; — I find it a lot easier to group the declarations for my private methods together inside the category block. It’s quite readable and means I can just look at the start of the source for each of my classes to see what private methods are defined;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It’s the same when compiled&lt;/strong&gt; — as I understand it, anonymous categories are compiled into the same space as the methods for the class they are defined for. Functionally — once the code is compiled — there shouldn’t be any difference between the two ways of defining the methods.&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/tonyarnold/~4/VEWgJ1rbqQk" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://tonyarnold.com/post/3138/private-methods-in-objective-c-using-categories</feedburner:origLink></item>
    <item>
      <title>WWDC 2010: the death of the Mac (or not)</title>
      <link>http://feedproxy.google.com/~r/tonyarnold/~3/_BASTqoIPOw/wwdc-2010-the-death-of-the-mac-or-not</link>
      <pubDate>Mon, 03 May 2010 02:11:00 +1100</pubDate>
      <guid isPermaLink="false">http://tonyarnold.com/post/3572/wwdc-2010-the-death-of-the-mac-or-not</guid>
      <description>&lt;p&gt;It appears that &lt;a href="http://developer.apple.com/wwdc/"&gt;Apple’s World Wide Developer’s Conference&lt;/a&gt; (&lt;span class="caps"&gt;WWDC&lt;/span&gt;) is about &lt;a href="http://www.apple.com/iphone/preview-iphone-os/"&gt;iPhoneOS &lt;span class="numbers"&gt;4&lt;/span&gt;.&lt;span class="numbers"&gt;0&lt;/span&gt;&lt;/a&gt; this year. The focus of the advertising, the sessions and the announcements all appear to be firmly focused on iPhone and iPad development, and there’s scarce mention of the Mac in amongst the copy. This in and of itself is fine — the focus of the last &lt;span class="numbers"&gt;2&lt;/span&gt; years (&lt;span class="numbers"&gt;2008&lt;/span&gt;−&lt;span class="numbers"&gt;2009&lt;/span&gt;) was pretty clearly on Mac &lt;span class="caps"&gt;OS&lt;/span&gt; X “Snow Leopard”, so given the impending release of a major operating system release for the iPhone (and eventually iPad) I can understand why they’d be focusing on their new baby.&lt;/p&gt;&lt;p&gt;&lt;img src="http://static.tonyarnold.com/wwdc_moscone_2008-1306152894.jpg" alt="WWDC2008 Moscone" title="Photo of Moscone West at WWDC in 2008"/&gt;&lt;/p&gt;&lt;p&gt;But it’s raised a bit of an irate response from the more Mac-​focused developers — “&lt;a href="http://en.wikipedia.org/wiki/What_About_Me_(song)"&gt;What about me?&lt;/a&gt;”. At first, I was incensed too — why would I want to pay close to $&lt;span class="numbers"&gt;6000&lt;/span&gt; &lt;span class="caps"&gt;AUD&lt;/span&gt; for tickets, flights, accommodation and food to go to a conference that’s taken the focus off my primary development platform? I get it, though — it makes sense. And yeah, I’d get some benefit from the iPhone &lt;span class="caps"&gt;OS&lt;/span&gt; sessions. However, I’m pretty certain that I wouldn’t get $&lt;span class="numbers"&gt;6000&lt;/span&gt; worth of benefit this year, so I’m putting my hard earned money to one side for this year in the hopes that &lt;span class="caps"&gt;WWDC&lt;/span&gt; &lt;span class="numbers"&gt;2011&lt;/span&gt; is a better fit for my needs. As are a number of other high profile Mac developers (who I was really looking forward to catching up with, you bastards!). But that’s &lt;span class="caps"&gt;OK&lt;/span&gt; — there are more iPhoneOS developers than there are Mac developers these days anyway so &lt;span class="caps"&gt;WWDC&lt;/span&gt; will still sell out and the planet will continue to turn.&lt;/p&gt;&lt;p&gt;The only part I don’t understand is taking the Apple Design Awards away from Mac developers, but then the iPhone OS-​based ADAs this year are a locked down shadow of what the ADAs used to be, so I don’t think I’ll waste too many words on this except to say that outwardly it’s a pretty shitty move from Apple. My oft-​unused rational brain says that &lt;span class="numbers"&gt;5&lt;/span&gt; weeks for &lt;span class="caps"&gt;ADA&lt;/span&gt; submissions and selection for both platforms seems a little tight, but all of the &lt;span class="caps"&gt;WWDC&lt;/span&gt; material feels rushed and unfinished this year. It’s as good an excuse in my brain as any.&lt;/p&gt;&lt;p&gt;My opinion is that next year’s &lt;span class="caps"&gt;WWDC&lt;/span&gt; will have a greater focus on whatever future version of Mac &lt;span class="caps"&gt;OS&lt;/span&gt; X Apple are working on — let’s call it “Mac &lt;span class="caps"&gt;OS&lt;/span&gt; X &lt;span class="numbers"&gt;10&lt;/span&gt;.&lt;span class="numbers"&gt;7&lt;/span&gt;″ for the rest of this post, understanding that it might be called “Cecil”, or something far less interesting when it actually comes out. The design awards will have a Mac category again, and we’ll all get excited about what’s coming next.&lt;/p&gt;&lt;h2&gt;You know what really grinds my gears?&lt;/h2&gt;&lt;p&gt;So here’s the bit that’s annoying me: there is a vocal contingent of Cocoa developers who are saying loud and proud that the iPhone and iPad are the future of computing, and that developers should be shifting their business and efforts to these platforms (and subsequently away from the Mac). Just sit back and think about this for a minute — &lt;strong&gt;if you were forced to use just your iPhone or iPad to do everything you do now, could you do it?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;I’m not Joe Average, but I certainly couldn’t.&lt;/p&gt;&lt;p&gt;There are plenty of things I can (and do) get away with on my iPhone &lt;span class="caps"&gt;&lt;span class="numbers"&gt;3&lt;/span&gt;GS&lt;/span&gt; — basic emailing, basic browsing, simple task management, etc. You’ll pry the damned thing from my cold, dead hands. But &lt;strong&gt;I can’t get real, honest-​to-​god work done on my iPhone without serious impact to my time and productivity&lt;/strong&gt; (I also can’t use Xcode, so that’s going to stop me right there — but let’s ignore that for now).&lt;/p&gt;&lt;h2&gt;It’s about style, baby&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Before I begin:&lt;/strong&gt; I’m purposely leaving games out of this argument — this is about replacing my desktop computer, and I don’t use my desktop computer for games.&lt;/p&gt;&lt;p&gt;The style of applications on the iPhone and iPad are usually simpler, cut-​down versions of their desktop cousins — there’s only a few apps I can think of that have feature parity with their desktop counterparts. &lt;a href="http://www.atebits.com/tweetie-iphone/"&gt;Tweetie&lt;/a&gt; and &lt;a href="http://twitterrific.com/"&gt;Twitteriffic&lt;/a&gt; are examples that come to mind (although arguably their desktop versions have been left to die for the past year). I’ve not used the iPad-​based iWork suite yet — &lt;em&gt;which I’d pinned high hopes on&lt;/em&gt; — but the reviews are pretty clear that these are not complete replacements for iWork on the desktop. I also don’t see a full replacement for iPhoto, GarageBand or any of Apple’s consumer apps. In fact, there’s very little in the way of rich content creation.&lt;/p&gt;&lt;p&gt;I expect that the larger screen and differing user interface on the iPad will go some of the way toward addressing this issue in time, but &lt;strong&gt;the iPhone is unlikely to offer as rich or productive an experience as a well developed, fully-​featured desktop application&lt;/strong&gt;. Prettier? Yeah, sure — maybe. More fun? Perhaps — there are some great iPhone apps out there. But genuine, get work done all day long every day apps? Not yet. Not by a long shot.&lt;/p&gt;&lt;h2&gt;Innovation? Where?&lt;/h2&gt;&lt;p&gt;One of the key arguments being used is that there appears to be a lack of innovation on the desktop lately. I’d argue there’s little real innovation occurring on either side of the fence.&lt;/p&gt;&lt;p&gt;That’s not saying that there aren’t some really cool apps being developed. Wrappers around oft-​used sites that are infinitely more usable than the original site. Quick methods of letting your friends know how banal your existence is by using your location. Nifty ways to tune my guitar.&lt;/p&gt;&lt;p&gt;There have been some real interaction improvements based upon the touch-​based user interface — “&lt;em&gt;pull down to refresh&lt;/em&gt;” in &lt;a href="http://www.atebits.com/tweetie-iphone/"&gt;Tweetie&lt;/a&gt; is one of them. But take the whole “I can use my fingers” thing off the table (and I’m genuinely interested in an answer to this question) — what exactly are these wonderful innovations being bandied about on the touch platforms? Touch itself? That’s been around for years in similar (albeit poorly implemented) forms. I do want to know, because I’m still seeing user interface conventions like tableviews and drawers from &lt;span class="numbers"&gt;2005&lt;/span&gt;, gussied up with some iPhone make-​up.&lt;/p&gt;&lt;h2&gt;You’re just a hater, silly old-​time developer!&lt;/h2&gt;&lt;p&gt;I assure you: &lt;strong&gt;I most definitely am not&lt;/strong&gt; (a hater, or old — although I do have a few grey hairs in my beard that weren’t there last year). I love my iPhone. I’ll buy an iPad when they’re available here in Australia. I am, do and will continue to develop apps for the iPhone &lt;span class="caps"&gt;OS&lt;/span&gt; — it’s a marvellous, groundbreaking piece of technology.&lt;/p&gt;&lt;p&gt;I also agree with the &lt;strong&gt;basic&lt;/strong&gt; sentiment being expressed — input other than physical keyboards and mice will eventually take over for standard interaction with our computers. I also think the iPad is a glimpse at something wonderful. But &lt;strong&gt;it’s a glimpse, not the whole picture&lt;/strong&gt;. I’m also not surprised by the noise coming from the iPhone &lt;span class="caps"&gt;OS&lt;/span&gt; camp — it’s new, it’s shiny and there are (some) people making an absolutely killing off the sales of their apps. Some of those apps are actually genuine leaps forward in terms of using the new interaction models that Apple’s designed for the iPhone.&lt;/p&gt;&lt;p&gt;But in my opinion, it’s not the end of the desktop or the Mac.&lt;/p&gt;&lt;h2&gt;Fin?&lt;/h2&gt;&lt;p&gt;I believe the Mac has a heck of a lot of life left in it. Will the fun end some day? Sure. Will it be brought about by iPhone &lt;span class="caps"&gt;OS&lt;/span&gt; — no, I genuinely believe it won’t. When there’s something better to replace everything we use our Macs for now, I’m sure Apple will retire the mantle. Until then, we’ll have divergent technologies with differing purposes.&lt;/p&gt;&lt;p&gt;Yep, I’m biased — I love developing for the Mac, so I’ll still be at it even when I have award winning, billion-​dollar-​a-​year apps in the app store (heh).&lt;/p&gt;&lt;p&gt;Am I done? Not quite. “One last thing” as the saying goes:&lt;/p&gt;&lt;p&gt;My message to the “Mac is dead” crowd — have the foresight to preface your statements with “in my opinion”. It’s less inflammatory than stating your opinion as if it were fact, and you won’t feel quite so bad when it doesn’t happen. &lt;strong&gt;Wait, that wouldn’t draw attention to your iPhone apps, would it?&lt;/strong&gt; #waitiseewhatyoudidthere&lt;/p&gt;&lt;p&gt;Now, &lt;a href="http://thecocoabots.com/"&gt;go look at my Mac apps&lt;/a&gt;. Fin.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tonyarnold/~4/_BASTqoIPOw" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://tonyarnold.com/post/3572/wwdc-2010-the-death-of-the-mac-or-not</feedburner:origLink></item>
  </channel>
</rss>

