<?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>Life in the Geek Lane</title>
	<atom:link href="http://www.geeklane.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.geeklane.com</link>
	<description>babblings!</description>
	<lastBuildDate>Thu, 23 Feb 2012 08:00:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Essential Mac apps I install on new machines</title>
		<link>http://www.geeklane.com/2012/02/23/essential-mac-apps-i-install-on-new-machines/</link>
		<comments>http://www.geeklane.com/2012/02/23/essential-mac-apps-i-install-on-new-machines/#comments</comments>
		<pubDate>Thu, 23 Feb 2012 07:03:40 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Geek / Apple Stuff]]></category>
		<category><![CDATA[applications]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.geeklane.com/?p=977</guid>
		<description><![CDATA[Stole the idea from Simon, so here goes. Name: 1Password URL: https://agilebits.com/onepassword Description: Basically a password safe, but it&#8217;s oh so much more. It&#8217;s a must have. saves logins, autofills logins, autofills profile information, random generation of passwords, etc etc &#8230; <a href="http://www.geeklane.com/2012/02/23/essential-mac-apps-i-install-on-new-machines/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Stole the idea from <a href="http://zethos.org/2012/02/essential-mac-applications-i-install-on-new-machines/">Simon</a>, so here goes.</p>
<p><strong>Name:</strong> 1Password<br />
<strong>URL:</strong> <a href="https://agilebits.com/onepassword">https://agilebits.com/onepassword</a><br />
<strong>Description:</strong> Basically a password safe, but it&#8217;s oh so much more. It&#8217;s a must have. saves logins, autofills logins, autofills profile information, random generation of passwords, etc etc etc. Just get it.</p>
<p><strong>Name:</strong> Acorn<br />
<strong>URL:</strong> <a href="http://flyingmeat.com/acorn/">http://flyingmeat.com/acorn/</a><br />
<strong>Description:</strong> I love this app for simple image editing. It&#8217;s lightweight and powerful. Does all I need and the tutorials on the website are awesome.</p>
<p><strong>Name:</strong> Adium<br />
<strong>URL:</strong> <a href="http://www.adium.im">http://www.adium.im</a><br />
<strong>Description:</strong> I have a love / hate relationship with Adium. It&#8217;s hands down the best IM client for the Mac but I find it to be buggy and at times it sends me crazy. Messages not being sent, messages not being received, showing contacts as offline when they are online, showing me as offline to some people even though I appear online to others, etc etc. It&#8217;s silly niggly stuff but still annoying at times. Part of the problem may well be the IM networks but I also wonder if its just caused by bloat. The issues seem to sneak up on me and I find if I reset it every so often and start from scratch the issues go away&#8230; I just wish there was a stripped down version of Adium without the extras. Something that just does sending / receiving IM&#8217;s without themes, message styles, events, etc. Perhaps then it would work consistently? Perhaps its just me though.</p>
<p><strong>Name:</strong> Alfred App<br />
<strong>URL:</strong> <a href="http://www.alfredapp.com">http://www.alfredapp.com</a><br />
<strong>Description:</strong> A quick launcher with oodles of features. Can launch apps, do web searches based on templates, calculations, quick lookup of definitions, clipboard history, etc etc etc. I actually use it a lot as well for its built in iTunes support. Has a free version that is very capable, its totally worth paying for the pro version though to get the extra awesome features.</p>
<p><strong>Name:</strong> AppZapper<br />
<strong>URL:</strong> <a href="http://appzapper.com/">http://appzapper.com/</a><br />
<strong>Description:</strong> Very stable uninstaller. Picks up those pesky helper files and preference files that are left behind when you just manually delete and application. Doesn&#8217;t get updated much, but it works. Also makes an awesome zap! sound when it deletes an app.</p>
<p><strong>Name:</strong> BBEdit<br />
<strong>URL:</strong> <a href="www.barebones.com/df">http://www.barebones.com/df</a><br />
<strong>Description:</strong> I was a TextMate fanboi but its lack of updates made me switch. It&#8217;s simple and stupidly powerful. I&#8217;m sure I don&#8217;t even use half of its features. It&#8217;s never let me down though as my text editor of choice.</p>
<p><strong>Name:</strong> ChronoSync<br />
<strong>URL:</strong> <a href="econtechnologies.com/pages/cs/chrono_overview.html">http://www.econtechnologies.com/pages/cs/chrono_overview.html</a><br />
<strong>Description:</strong> It&#8217;s a crazy powerful backup tool. Has an abundance of features and you only pay for it once. All updates are free. It forms part of my backup system. I have a bunch of Chronosync documents that are scheduled to run at certain times to backup specific projects I&#8217;m currently working on. They get backed up to Dropbox and also my NAS. I was initially skeptical about using Chronosync but after reading the documentation and examples on the website I was converted. Totally worth the cost.</p>
<p><strong>Name:</strong> Dropbox<br />
<strong>URL:</strong> <a href="http://www.dropbox.com">http://www.dropbox.com</a><br />
<strong>Description:</strong> Definitely one of my most used apps. Syncs files between all your computers / devices. Drop a file in your drop box folder and its instantly sync&#8217;d to other machines. I use it for file sharing, photo sharing, backups, and storage of files I might need to access from anywhere. If all else fails it also lets you access the files from the web interface. It&#8217;s saved my bacon a number of times. It&#8217;s also awesome for syncing app settings. I have Alfred, BBEdit, 1Password all syncing their settings to it, which means all my machines have the same settings!</p>
<p><strong>Name:</strong> Evernote<br />
<strong>URL:</strong> <a href="http://evernote.com/">http://evernote.com/</a><br />
<strong>Description:</strong> Saves notes in the cloud. I basically have my life in it. Notes, photos, images. I take photos of receipts, tag them, then refer to it at tax time. I save travel plans to it, toggle the option to cache it locally then refer it to on my iPhone while travelling. I keep code snippets in it. I have notebooks in it for projects I am planning. I have notebooks with iphone app ideas where I make notes. I take photos of business cards and upload them. The OCR features means I can later on search and it finds text that was in the image. It&#8217;s awesome. I paid for the pro version, even though I don&#8217;t use anywhere near the monthly upload limit, simply because its such an awesome app.</p>
<p><strong>Name:</strong> LaunchBar<br />
<strong>URL:</strong> <a href="www.obdev.at/launchbar/">www.obdev.at/launchbar/</a><br />
<strong>Description:</strong> It&#8217;s stupid, but I actually run two launcher apps. I was a long time LaunchBar user before Alfred came along and some habits die hard. I love the way LaunchBar does its information overlays. It works so much better than Alfreds use of Growl. I also find it easier to do pretty complex drag / drop operations with the keyboard using LaunchBar. I&#8217;m not entirely sure if Alfred can do the same or not, I&#8217;m just used to doing it in LaunchBar.</p>
<p><strong>Name:</strong> MarsEdit<br />
<strong>URL:</strong> <a href="www.red-sweater.com/marsedit/">http://www.red-sweater.com/marsedit/</a><br />
<strong>Description:</strong> It&#8217;s a desktop blog client. Lets you post to all sorts of blogs without having to do it while manually logged into the website. Has drafts, which I use a lot, and other nice features. I use it to post to all my blogs.</p>
<p><strong>Name:</strong> NodeToad<br />
<strong>URL:</strong> <a href="http://www.sparkfield.com/products/nodetoad/">http://www.sparkfield.com/products/nodetoad/</a><br />
<strong>Description:</strong> Internet usage meter for Internode. I&#8217;ve used this for years and love it. Works great and doesn&#8217;t chew much memory. The developer is a nice guy as well. Very customisable in the way it displays usage and even has a built in radio player.</p>
<p><strong>Name:</strong> OmniFocus<br />
<strong>URL:</strong> <a href="http://www.omnigroup.com/products/omnifocus/">http://www.omnigroup.com/products/omnifocus/</a><br />
<strong>Description:</strong> Basically a task manager but more. Helps you capture your thoughts and organise them into do-able items. I have the desktop, iPhone and iPad version and use them every day. I put shopping lists in it, projects with milestones, jobs to do around the house etc etc. The iPhone app is location aware, so I can mark items in my shopping list at a specific location. When I&#8217;m out doing stuff I can check the list for things I need to do nearby. </p>
<p><strong>Name:</strong> Perian<br />
<strong>URL:</strong> <a href="http://perian.org/">http://perian.org/</a><br />
<strong>Description:</strong> All those weird movie files that won&#8217;t play in Quicktime? Perian makes them work. It&#8217;s a must have.</p>
<p><strong>Name:</strong> QuickCursor<br />
<strong>URL:</strong> <a href="http://www.hogbaysoftware.com/products/quickcursor">http://www.hogbaysoftware.com/products/quickcursor</a><br />
<strong>Description:</strong> This is a small utility that lets you edit any text in any editor your want. i.e. You are editing a form on a website and need to type something lengthy. Hit the key combo and your text editor opens. Type the text you want then save it and it automatically gets filled into the website where you were. It&#8217;s usable anywhere, even in other apps. I use it a lot when I want to format a markdown blog. I start the blog in MarsEdit then hit the key combination I have set and edit the blog in BBEdit. When I save the text gets copied back to the MarsEdit app automatically. Hard to explain because what it does is so simple. Totally awesome app though. I use it every day.</p>
<p><strong>Name:</strong> Skitch<br />
<strong>URL:</strong> <a href="http://skitch.com/">http://skitch.com/</a><br />
<strong>Description:</strong> Awesome screen capture application. Has a great UI and is fun to use. You can annotate the screenshots and upload them to all sorts if places quickly. Use it to annotate and you turn a boring screenshot into a fun piece of art.</p>
<p><strong>Name:</strong> SourceTree<br />
<strong>URL:</strong> <a href="http://www.sourcetreeapp.com/">http://www.sourcetreeapp.com/</a><br />
<strong>Description:</strong> I hadn&#8217;t actually heard about this app until I switched to using BitBucket recently. Its a free GUI for source control. Supports GIT/SVN/Mercurial and has heaps of features. It used to be a paid app but is now totally free since Atlassian bought the company. </p>
<p><strong>Name:</strong> SuperDuper!<br />
<strong>URL:</strong> <a href="www.shirt-pocket.com/SuperDuper/">http://www.shirt-pocket.com/SuperDuper/</a><br />
<strong>Description:</strong> I use this instead of Carbon Copy Cloner. I think my decision to use this came from emailing the developer a while back and getting a really nice reply from him. It&#8217;s used to do backups of your hard drive. You can make 1:1 clones, bootable backups, scheduled backups, smart updating etc etc. I have a pretty over the top backup system (really need to write a separate blog about that) but SuperDuper! is in charge of doing a daily smart backup and also a weekly full bootable backup of my iMac and Mac Mini server. I&#8217;ve tested the backups a number of times and they have never failed.</p>
<p><strong>Name:</strong> TextExpander<br />
<strong>URL:</strong> <a href="http://smilesoftware.com/TextExpander/">http://smilesoftware.com/TextExpander/</a><br />
<strong>Description:</strong> Something else I use every day. You can store snippets in it and set a certain abbreviation. When you type that abbreviate TextExpander replaces it with the snippet you have assigned. I have all sorts of stuff in it from date formats, to common email text.</p>
<p><strong>Name:</strong> Transmit<br />
<strong>URL:</strong> <a href="http://panic.com/transmit/">http://panic.com/transmit/</a><br />
<strong>Description:</strong> Hands down the best FTP/SFTP client for Mac. Has an awesome disk mode where the remote host is mounted as a drive on your system meaning you can interact with it as a local drive. Also has droplets to make quickly uploading files to regular servers simple. The Panic guys make great software. </p>
<p><strong>Name:</strong> The Unarchiver<br />
<strong>URL:</strong> <a href="http://wakaba.c3.cx/s/apps/unarchiver">http://wakaba.c3.cx/s/apps/unarchiver</a><br />
<strong>Description:</strong> Replaces the built in OS X unarchiver and adds support for a bunch of other archive formats including Zip, Tar-GZip, Tar-BZip2, RAR, 7-zip, LhA, StuffIt and more. Very useful.</p>
<p><strong>Name:</strong> Unison<br />
<strong>URL:</strong> <a href="http://panic.com/unison/">http://panic.com/unison/</a><br />
<strong>Description:</strong> The best newsgroup client on the Mac. </p>
<p><strong>Name:</strong> VLC<br />
<strong>URL:</strong> <a href="http://www.videolan.org/">http://www.videolan.org/</a><br />
<strong>Description:</strong> I use it for playing multicast streams. There&#8217;s the odd weird file that won&#8217;t work with Perian which VLC handles just fine.</p>
<p><strong>Name:</strong> VMWare Fusion<br />
<strong>URL:</strong> <a href="http://www.vmware.com/products/fusion/overview.html">http://www.vmware.com/products/fusion/overview.html</a><br />
<strong>Description:</strong> Great app for your VM needs. Works great. I chose this over Parallels because I wasn&#8217;t a fan of the way Parallels added a bunch of extra devices to your system preferences (network, etc). VMWare also have the name and have been in the business for a while.</p>
<p><strong>Name:</strong> VooDooPad<br />
<strong>URL:</strong> <a href="http://flyingmeat.com/voodoopad/">http://flyingmeat.com/voodoopad/</a><br />
<strong>Description:</strong> A note taking app and more. It&#8217;s basically your own personal wiki and lets you create pages, link pages, add text, add images, etc. I use it mainly for fleshing out iPhone app ideas. I create new document and add everything related to it to the voodoopad document. Similar apps, UI designs, features, links to resources, etc etc. I love it. It&#8217;s a simple app but works really well.</p>
<p><strong>Name:</strong> XCode<br />
<strong>URL:</strong> <a href="https://developer.apple.com/technologies/tools/">https://developer.apple.com/technologies/tools/</a><br />
<strong>Description:</strong> I write iPhone apps and XCode is the place to do it. Can compile all sorts of source files. Totally integrated development environment for the mac / iphone / ipad.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geeklane.com/2012/02/23/essential-mac-apps-i-install-on-new-machines/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adding a UIImage above a TTLauncherView</title>
		<link>http://www.geeklane.com/2012/02/13/adding-a-uiimage-above-a-ttlauncherview/</link>
		<comments>http://www.geeklane.com/2012/02/13/adding-a-uiimage-above-a-ttlauncherview/#comments</comments>
		<pubDate>Sun, 12 Feb 2012 22:02:39 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[iPhone Dev Musings]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[three20]]></category>

		<guid isPermaLink="false">http://www.geeklane.com/?p=974</guid>
		<description><![CDATA[I had a project recently where there needed to be an image at the top of the view with a TTLauncherView underneath it. I struggled with this at first as I could see no mention of doing this in the &#8230; <a href="http://www.geeklane.com/2012/02/13/adding-a-uiimage-above-a-ttlauncherview/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I had a project recently where there needed to be an image at the top of the view with a TTLauncherView underneath it.</p>
<p>I struggled with this at first as I could see no mention of doing this in the Three20 documentation. In the end I had to actually create the UIImageView and add it manually to the view.</p>
<p>The first thing you have to do is declare a UIImageView in the header file.</p>
<pre><code>@property(nonatomic, retain) UIImageView *logoImageView;
</code></pre>
<p>Then in the implementation file, synthesize the property.</p>
<pre><code>@synthesize logoImageView;
</code></pre>
<p>Now we modify the loadView method to add the code needed to create and insert the logoImageView.</p>
<p>Allocate and initialise the logoImageView.  </p>
<pre><code>self.logoImageView = [[UIImageView alloc] initWithFrame:CGRectMake(65, 0, 190, 108)];
</code></pre>
<p>I&#8217;ve used hard coded values to define the location and size of the UIImageView. I got these values by just drawing up a simple diagram and working it out based on the iPhones screen size. </p>
<p><img src="http://www.geeklane.com/images/imageviewabovettlauncher.png" alt="Diagram of where UIImageView will be placed<br />
" /></p>
<p>It would be much better to derive these values based on the views bounds.</p>
<p>Once the size / position of the UIImageView is done we go ahead and set the actual image file that we want displayed in the logoImageView</p>
<pre><code>self.logoImageView.image = [UIImage imageNamed:@"logo_small.png"];
</code></pre>
<p>Now we need to modify the size of the Three20 launcherView so that it fits on the view properly now that we have a UIImageView being placed above it. We do this by modifying the line of code that creates the TTLauncherView.</p>
<pre><code>launcherView = [[TTLauncherView alloc] initWithFrame:CGRectMake(0, 120, 320, 352)];
</code></pre>
<p>Previously we were setting the frame for the TTLauncherView to be the bounds of the view. Now we have to actually specify a manual frame size and position. I worked out these values from the diagram as well. Again, it would be better to derive these values based on the views bounds.</p>
<p>Once that is done, we just have to add the UIImageView to the view. Near the bottom of the loadView method is the code for adding the launcherView to the view</p>
<pre><code>[self.view addSubview:launcherView];
[launcherView release];
</code></pre>
<p>Right before these lines, add some code to insert the UIImageView onto the view.</p>
<pre><code>[self.view addSubview:logoImageView];
[logoImageView release];
</code></pre>
<p>Now you should be able to run your app and see the UIImageView above the TTLauncherView. I found on my first try that the TTLauncherItem buttons were being cut off because my logo was too big. I simply made the image smaller and recalculated the size / location to place the views.</p>
<p>Three20 has methods to modify the size of the TTLauncherItems, but I didn&#8217;t want to complicate things.</p>
<p>There&#8217;s a bunch of ways to make this better, but it works.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geeklane.com/2012/02/13/adding-a-uiimage-above-a-ttlauncherview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using TTLauncherView</title>
		<link>http://www.geeklane.com/2012/02/13/using-ttlauncherview/</link>
		<comments>http://www.geeklane.com/2012/02/13/using-ttlauncherview/#comments</comments>
		<pubDate>Sun, 12 Feb 2012 14:34:58 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[iPhone Dev Musings]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[three20]]></category>

		<guid isPermaLink="false">http://www.geeklane.com/?p=968</guid>
		<description><![CDATA[After my little rant about Three20 in a previous post I figured I should at least try to make things better for other people. One of the first things I struggled with was getting the TTLauncherView working. I had followed &#8230; <a href="http://www.geeklane.com/2012/02/13/using-ttlauncherview/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>After my little rant about Three20 in a previous post I figured I should at least try to make things better for other people.</p>
<p>One of the first things I struggled with was getting the TTLauncherView working. I had followed the steps on the Three20 website to add the necessary files to the project but I wasn&#8217;t sure how I then got the TTLauncherView displaying on the screen. </p>
<p>So, to hopefully help someone else&#8230; here goes.</p>
<p>Start off in your AppDelegate.m file. It should have been created automatically for you when you created your project in XCode. First thing you need to do is actually include the Three20 header file.</p>
<pre><code>#import "Three20/Three20.h"
</code></pre>
<p>I&#8217;m sure you could probably just import the TTLauncherView header file but I figured I&#8217;d just make it easier on myself and include the main Three20.h file.</p>
<p>After that, you need to setup the TTNavigator and the relevant view controller mappings. All this stuff needs to be done in the</p>
<pre><code>-(void)applicationDidFinishLaunching:(UIApplication *)application
</code></pre>
<p>method.</p>
<p>Create the TTNavigator instance</p>
<pre><code>TTNavigator *navigator = [TTNavigator navigator];
</code></pre>
<p>Set the navigator persistence mode</p>
<pre><code>navigator.persistenceMode = TTNavigatorPersistenceModeNone;
</code></pre>
<p>My understanding of this is that Three20 actually keeps a record of where you are in the navigation while the app is running. This means when you close the app and reopen it, Three20 can start off from where you left it. In this case I am telling Three20 to not do that and instead the app will just start up as normal.</p>
<p>The next step is to setup the TTURLMap. Three20 has this neat feature where you can refer to view controllers using a URL. This actually makes working with view controllers a lot simpler, at least once you get the hang of it. NOTE: This also means you are pretty much locked into using Three20 once you start using TTURLs. If you get part way and decide you no longer want to use Three20 you are going to have to re-write everything.</p>
<p>Get a pointer to the navigators URL map.</p>
<pre><code>TTURLMap *map = navigator.URLMap;
</code></pre>
<p>Use that pointer to setup all your URL mappings</p>
<pre><code>[map from:@"*" toViewController:[TTWebController class]];
[map from:@"tt://launcher" toSharedViewController:[LauncherViewController class]];
[map from:@"tt://first" toViewController:[FirstViewController class]];
[map from:@"tt://second" toViewController:[SecondViewController class]];
[map from:@"tt://third" toViewController:[ThirdViewController class]];
etc
etc
</code></pre>
<p>After doing this you can then use the URL tt://launcher in your code to refer to your LauncherViewController (or whatever you have called it). I&#8217;ll give an example of this in a  second.</p>
<p>Each of the ViewControllers referenced in the mapping code are standard UIViewController classes. You can actually map the URLs to any class.</p>
<p>After that you can actually get the launcher view controller to displaying using</p>
<pre><code>[navigator openURLAction:[TTURLAction actionWithURLPath:@"tt://launcher"]];
</code></pre>
<p>One line of code instead of the usual 3 or 4 thats regularly needed to push a view controller onto the navigation stack. You can see there how using the URL makes things a lot easier. It took me a while to get my head around this.</p>
<p>So when my app starts, it will run the applicationDidFinishLaunching method and setup the mappings and then get Three20 to launch the tt://launcher URL, which is mapped to the LauncherViewController class.</p>
<p>Now, on to the LauncherViewController file. </p>
<p>My LauncherViewController is a subclass of TTViewController. I believe it has to be in order to crate the launcher view.</p>
<p>In the LauncherViewController.m file we setup the Launcher View in the loadView method</p>
<p>First we allocate and initialise the launcherView using the views bounds. This means the launcher view will take up the whole screen.</p>
<pre><code>launcherView = [[TTLauncherView alloc] initWithFrame:self.view.bounds];
</code></pre>
<p>Then we set the background color of the launcher view.</p>
<pre><code>launcherView.backgroundColor = [UIColor whiteColor];
</code></pre>
<p>Then we set the number of columns we want </p>
<pre><code>launcherView.columnCount = 1;
</code></pre>
<p>In this example I&#8217;m only having one column with 3 items. You can adjust this value at anytime and Three20 will automatically reposition the icons in your launcherView to fit.</p>
<p>The next part involves setting up the actual items that will be displayed in the launcherView. You do this by setting the pages property of the launcherView instance.</p>
<pre><code>launcherView.pages = [NSArray arrayWithObjects:
                        [NSArray arrayWithObjects:
                      [self launcherItemWithTitle:@"First" image:@"bundle://firsticon.png" URL:@"tt://first"],
                      [self launcherItemWithTitle:@"Second" image:@"bundle://secondicon.png" URL:@"tt://second"],
                       [self launcherItemWithTitle:@"Third" image:@"bundle://thirdicon.png" URL:@"tt://third"],
                       nil], nil];
</code></pre>
<p>This creates our pages structure. It&#8217;s an array of arrays where the inner array represents the icons on the page and the outer array represents the page. So you could define a structure that has any number of pages and on each page you have a number of icons.</p>
<p>Next thing we have to do is set the launcherViews delegate. In this case I&#8217;m setting the LauncherViewController as the delegate.</p>
<pre><code>launcherView.delegate = self;
</code></pre>
<p>Once that&#8217;s done, we can add the launcherView to the LauncherViewControllers view.</p>
<pre><code>[self.view addSubview:launcherView];
</code></pre>
<p>Then release the launcherView instance</p>
<pre><code>[launcherView release];
</code></pre>
<p>When creating the pages above, I used a separate method to make things less cluttered. The launcherItemWithTitle method looks as follows:</p>
<pre><code>-(TTLauncherItem *)launcherItemWithTitle:(NSString *)pTitle image:(NSString *)image URL:(NSString *)url
{
    TTLauncherItem *launcherItem = [[TTLauncherItem alloc] initWithTitle:pTitle image:image URL:url canDelete:YES];
    return [launcherItem autorelease];
}
</code></pre>
<p>All this is doing is taking the items passed in an creating a TTLauncherItem from them.</p>
<p>With this done, all thats left to do is to implement the necessary delegate methods.</p>
<pre><code>- (void)launcherView:(TTLauncherView*)launcher didSelectItem:(TTLauncherItem*)item
{
    [[TTNavigator navigator] openURLAction:[TTURLAction actionWithURLPath:item.URL]];
}
</code></pre>
<p>This method is called when an item is selected from the launcherView. It&#8217;s quite simple really. Using the mappings we created earlier we simply tell the TTNavigator instance to open the URL. We create the URLAction required using the URL we set when creating each TTLauncherItem.</p>
<p>What this means is that when an item is tapped in the launcherView we want it to load the relevant View Controller. This will push the relevant view controller onto the navigation stack and it will be displayed.</p>
<p>I think that pretty much covers a basic LauncherView implementation. It&#8217;s not really that hard once you understand the way Three20 handles navigation.</p>
<p>It&#8217;s a lot to get your head around especially if you are starting out in iOS development. Stick with it though.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geeklane.com/2012/02/13/using-ttlauncherview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 years</title>
		<link>http://www.geeklane.com/2012/02/12/10-years/</link>
		<comments>http://www.geeklane.com/2012/02/12/10-years/#comments</comments>
		<pubDate>Sun, 12 Feb 2012 05:51:08 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.geeklane.com/?p=958</guid>
		<description><![CDATA[It only just dawned on me that I&#8217;ve been blogging for 10 years this year. Damn. My archives go back to 2002, so much has changed over that time. I really should go back read some of my old posts. &#8230; <a href="http://www.geeklane.com/2012/02/12/10-years/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It only just dawned on me that I&#8217;ve been blogging for 10 years this year. Damn.<br />
My archives go back to 2002, so much has changed over that time.</p>
<p>I really should go back read some of my old posts. I&#8217;m not sure how much of it is worth reading though.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geeklane.com/2012/02/12/10-years/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>My thoughts after using Three20 for an iOS project</title>
		<link>http://www.geeklane.com/2012/02/12/my-thoughts-after-using-three20-for-an-ios-project/</link>
		<comments>http://www.geeklane.com/2012/02/12/my-thoughts-after-using-three20-for-an-ios-project/#comments</comments>
		<pubDate>Sun, 12 Feb 2012 01:10:49 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Geek / Apple Stuff]]></category>
		<category><![CDATA[iPhone Dev Musings]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[three20]]></category>

		<guid isPermaLink="false">http://www.geeklane.com/?p=940</guid>
		<description><![CDATA[I&#8217;ve recently completed an iOS project where I decided to use Three20 to implement a launcher style view. I&#8217;d read about a lot of apps that use Three20 and thought it would be a good framework to get the hang &#8230; <a href="http://www.geeklane.com/2012/02/12/my-thoughts-after-using-three20-for-an-ios-project/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently completed an iOS project where I decided to use Three20 to implement a launcher style view.<br />
I&#8217;d read about a lot of apps that use Three20 and thought it would be a good framework to get the hang of. Little did I know the struggle that I would have.</p>
<p>The first thing I had trouble with was finding good documentation. There seems to be a lot of example around the web on all sorts of Three20 stuff but none of it is really catered for beginners. I struggle for a long time just trying to get it installed and working properly. I could&#8217;t even find a simple up and running tutorial.</p>
<p>The second thing I had trouble with was getting community help. I subscribed to the Three20 mailing list and also joined the irc channel. Numerous times I posted asking for help on the mailing list only to have it go unanswered. My attempts to start conversations and ask for help on IRC also failed. I even sat in the channel for a number of days, every so often saying hi or hello, but no-one replied.</p>
<p>In the end I gave up on the mailing list and also IRC.</p>
<p>I stumbled my way through the app development process all the while feeling like I was being held back by Three20 rather than being empowered. It got to the stage where I felt locked into using Three20 due to my use of it URL navigation scheme. I did try to find an easy way to remove Three20 from my app but that also was a struggle that I gave up on and just battled on.</p>
<p>In a way it did make me learn it better, but overall I&#8217;ve hated the experience and its actually turned me off ever using another complex framework again.</p>
<p>In the future I&#8217;ll be sticking with simple frameworks that do a very specific thing. For everything else I&#8217;ll use the native iOS API&#8217;s and manually build what I need. At least the I know I&#8217;ll have more luck with finding help if I need it.</p>
<p>Perhaps once my skills get better, using Three20 (or Nimbus) will be a easier. I highly recommend beginners steer clear of it though.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geeklane.com/2012/02/12/my-thoughts-after-using-three20-for-an-ios-project/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Custom NSTableViewCell labels not appearing</title>
		<link>http://www.geeklane.com/2011/07/19/custom-nstableviewcell-labels-not-appearing/</link>
		<comments>http://www.geeklane.com/2011/07/19/custom-nstableviewcell-labels-not-appearing/#comments</comments>
		<pubDate>Tue, 19 Jul 2011 11:05:18 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Geek / Apple Stuff]]></category>
		<category><![CDATA[iPhone Dev Musings]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[objective-c]]></category>

		<guid isPermaLink="false">http://www.geeklane.com/?p=936</guid>
		<description><![CDATA[I&#8217;m working on an iPhone app at the moment that is being upgraded from a previous version. I decided early on to just build on the existing code rather than trying to reinvent the wheel. I&#8217;ve spent a bit of &#8230; <a href="http://www.geeklane.com/2011/07/19/custom-nstableviewcell-labels-not-appearing/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on an iPhone app at the moment that is being upgraded from a previous version. I decided early on to just build on the existing code rather than trying to reinvent the wheel.</p>
<p>I&#8217;ve spent a bit of time fixing warnings that have cropped up from changes in the iOS SDK (the original app was developed for iOS 2) but one problem in particular had me stumped for a while.</p>
<p>When subclassing NSTableViewCell, the old init method was:</p>
<pre><code>- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier
</code></pre>
<p>but somewhere along the line the init method definition changed to:</p>
<pre><code>-(id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
</code></pre>
<p>I&#8217;m yet to find out when this changed occurred, but it left me with the problem of no longer having access to the &#8220;frame&#8221; parameter. This meant the code in the init method that used to size the views of the custom cell no longer had a point of reference.</p>
<p>It took me a while to figure out that due to this change there was also another new method introduced that now had to be overridden to size the custom cell views:</p>
<pre><code>-(void)layoutSubviews
</code></pre>
<p>In this method is where we are now meant to set the size of the custom cell views.</p>
<p>So I commented out the sizing code that used to be in the init method and moved it to the new layoutSubviews method as follows:</p>
<pre><code>-(void)layoutSubviews
{
    [super layoutSubviews];
    CGRect label, steps;
    CGRect bounds = [[self contentView] bounds];
    label.origin.x = 20.0;
    label.origin.y = 3.0;
    label.size.height = bounds.size.height - (label.origin.y*2);
    label.size.width = 160.0;
    [dateLabel setFrame:label];

    steps.origin.x = 170.0;
    steps.origin.y = 5.0;
    steps.size.height = bounds.size.height - (steps.origin.y*2);
    steps.size.width = 120.0;
    [stepsLabel setFrame:steps];
}
</code></pre>
<p>This fixed my issue. Running the app now showed the custom cell labels as expected.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geeklane.com/2011/07/19/custom-nstableviewcell-labels-not-appearing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UPDATE: Office 2011 Mac &#8211; Crashing when copying and pasting</title>
		<link>http://www.geeklane.com/2011/07/11/update-office-2011-mac-crashing-when-copying-and-pasting/</link>
		<comments>http://www.geeklane.com/2011/07/11/update-office-2011-mac-crashing-when-copying-and-pasting/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 10:27:58 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Geek / Apple Stuff]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[office]]></category>
		<category><![CDATA[solution]]></category>
		<category><![CDATA[update]]></category>

		<guid isPermaLink="false">http://www.geeklane.com/?p=932</guid>
		<description><![CDATA[An update to a previous entry http://www.geeklane.com/2011/07/06/office-2011-mac-–-crashing-when-copying-and-pasting/ I asked the user today if their version of Word was still crashing and they said it wasn&#8217;t. Seems that one check box is the problem. Weird.]]></description>
			<content:encoded><![CDATA[<p>An update to a previous entry<br />
<a href="http://www.geeklane.com/2011/07/06/office-2011-mac-–-crashing-when-copying-and-pasting/">http://www.geeklane.com/2011/07/06/office-2011-mac-–-crashing-when-copying-and-pasting/</a></p>
<p>I asked the user today if their version of Word was still crashing and they said it wasn&#8217;t. Seems that one check box is the problem.</p>
<p>Weird.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geeklane.com/2011/07/11/update-office-2011-mac-crashing-when-copying-and-pasting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Word 2011 &#8211; Share as Email Attatchment</title>
		<link>http://www.geeklane.com/2011/07/11/word-2011-share-as-email-attatchment/</link>
		<comments>http://www.geeklane.com/2011/07/11/word-2011-share-as-email-attatchment/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 10:23:44 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Geek / Apple Stuff]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[outlook]]></category>
		<category><![CDATA[word]]></category>

		<guid isPermaLink="false">http://www.geeklane.com/?p=930</guid>
		<description><![CDATA[I recently had a staff member who was having trouble emailing word documents from within Word. To be honest I never actually realised you could do this. I&#8217;d never even thought about trying it. Anyway, Word 2011 has a feature &#8230; <a href="http://www.geeklane.com/2011/07/11/word-2011-share-as-email-attatchment/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I recently had a staff member who was having trouble emailing word documents from within Word. To be honest I never actually realised you could do this. I&#8217;d never even thought about trying it.</p>
<p>Anyway, Word 2011 has a feature under the &#8220;File -> Share&#8221; menu that allows you to email the current document as an attachment.</p>
<p>The staff member was trying to use it with Outlook 2011, but the email kept being created in Mac Mail. I went into Mac Mail preferences and made sure Outlook 2011 was the default email client. I thought this was a systemwide setting and that other applications would use the setting when trying to send email.</p>
<p>Turns out that Word 2011 doesn&#8217;t use this setting as even with it set to Outlook, it still kept trying to use Mac Mail.</p>
<p>It was then that I discovered that Outlook 2011 has a setting under preferences -> general, that sets Outlook as the default email client.</p>
<p>We clicked this button and tried again and it worked.</p>
<p>So, why doesn&#8217;t Word 2011 use the default as set by Mac Mail? Why do I have to set it in Outlook for it to take notice? Seems a little strange to me.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geeklane.com/2011/07/11/word-2011-share-as-email-attatchment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deploying SCCM OSD image to mac bootcamp partition</title>
		<link>http://www.geeklane.com/2011/07/08/deploying-sccm-osd-image-to-mac-bootcamp-partition/</link>
		<comments>http://www.geeklane.com/2011/07/08/deploying-sccm-osd-image-to-mac-bootcamp-partition/#comments</comments>
		<pubDate>Fri, 08 Jul 2011 12:47:02 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Geek / Apple Stuff]]></category>
		<category><![CDATA[bootcamp]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[sccm]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.geeklane.com/?p=928</guid>
		<description><![CDATA[I&#8217;ve spent a good part of the last week trying to get the unis windows 7 MOE to install on a bootcamp partition. Little did I know when I started that it was a complicated process with obstacles all along &#8230; <a href="http://www.geeklane.com/2011/07/08/deploying-sccm-osd-image-to-mac-bootcamp-partition/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve spent a good part of the last week trying to get the unis windows 7 MOE to install on a bootcamp partition. Little did I know when I started that it was a complicated process with obstacles all along the way.</p>
<p>To cut a long story short I could not find a way to get the iMac to boot and pull the SCCM image via the network. I even tried booting from a set of SCCM OSD dvds that the sys admin guys burnt. That too didn&#8217;t work and kept bugging out when the SCCM installer would try to set the windows partition to be active.</p>
<p>So&#8230;. In the end the solution that worked is as follows:<br />
* Run bootcamp assistant to setup the partition<br />
* Insert a standard windows installation DVD and reboot<br />
* Hold down the &#8220;Option&#8221; key to get a boot menu<br />
* Select the dvd and then press the &#8220;Space bar&#8221; until the windows menu appears (See previous blog on why pressing space is needed)<br />
* Install windows, use generic info because this install will be getting overwritten with the SCCM image soon.<br />
* Once installed, insert the SCCM OSD disk and run the autorun.<br />
* SCCM installer will kick off and start staging the image for deployment.<br />
* System will reboot and installation will kick off</p>
<p>Doing it this way seems to get around the &#8220;Setting the partition active&#8221; problem. I guess if windows is already installed then the SCCM OSD installer just skips trying to set the partition as active.</p>
<p>So I managed to get the unis windows 7 SCCM image deployed to a bootcamp partition of an iMac. Monday will be time to kick <a href="http://www.deploystudio.com/Home.htm">DeployStudio</a> into gear and create the dual boot master images. Then try to deploy it out to some other test systems.</p>
<p>Everything going ok I&#8217;m hoping to be deploying dual boot images to macs by the end of next week.</p>
<p>After that, it&#8217;s on to setting up <a href="http://code.google.com/p/munki/">Munki</a> and getting it working.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geeklane.com/2011/07/08/deploying-sccm-osd-image-to-mac-bootcamp-partition/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Office 2011 Mac – Crashing when copying and pasting</title>
		<link>http://www.geeklane.com/2011/07/06/office-2011-mac-%e2%80%93-crashing-when-copying-and-pasting/</link>
		<comments>http://www.geeklane.com/2011/07/06/office-2011-mac-%e2%80%93-crashing-when-copying-and-pasting/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 10:55:40 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Geek / Apple Stuff]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[office]]></category>
		<category><![CDATA[solution]]></category>

		<guid isPermaLink="false">http://www.geeklane.com/?p=924</guid>
		<description><![CDATA[I have a user at work who has been having constant and regular issues with Word 2011. I couldn&#8217;t really narrow it down but it will just crash and he will lose his work. The common action he did when &#8230; <a href="http://www.geeklane.com/2011/07/06/office-2011-mac-%e2%80%93-crashing-when-copying-and-pasting/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I have a user at work who has been having constant and regular issues with Word 2011. I couldn&#8217;t really narrow it down but it will just crash and he will lose his work.</p>
<p>The common action he did when the crash happened was to cut/copy + paste.</p>
<p>Once again, trawling google and forums seems to have provided a solution (and yet again the actual microsoft support suggestions are useless). </p>
<p>In this case I got him to:<br />
* Click the &#8220;Word&#8221; menu and choose &#8220;Preferences&#8221;<br />
* In the window that opens, click &#8220;Edit&#8221; under the &#8220;Authoring and Proofing Tools&#8221; section<br />
* The &#8220;Edit&#8221; window loads. About half way down is an option called &#8220;Use smart cut and paste&#8221;<br />
* Untick this option so it&#8217;s NOT selected.<br />
* Click &#8220;OK&#8221;<br />
* Restart Word (cause microsoft stuff seems to like that)<br />
* See how it goes.</p>
<p>I haven&#8217;t heard back from the user in 4 days, so for me that&#8217;s another issue solved.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geeklane.com/2011/07/06/office-2011-mac-%e2%80%93-crashing-when-copying-and-pasting/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.645 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-05-20 00:00:50 -->

