<?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>The Flying Jalapeño Lives &#187; Development</title>
	<atom:link href="http://www.theflyingjalapenolives.com/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.theflyingjalapenolives.com</link>
	<description>injuries sustained turning indy</description>
	<lastBuildDate>Mon, 12 Jul 2010 04:01:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Philly Beer Week iPhone App</title>
		<link>http://www.theflyingjalapenolives.com/2010/06/philly-beer-week-iphone-app/</link>
		<comments>http://www.theflyingjalapenolives.com/2010/06/philly-beer-week-iphone-app/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 17:11:48 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=663</guid>
		<description><![CDATA[I&#8217;m a little late in mentioning this, but I had the pleasure of creating an awesome iPhone app with an even more awesome group of peeps. Last week we pushed out the Philly Beer Week 2010 iPhone app. We have had an awesome response and, more importantly, it was fun working with the crew we [...]]]></description>
			<content:encoded><![CDATA[<div></div>
<div><a href="http://www.theflyingjalapenolives.com/wp-content/uploads/2010/06/icon-app-store.png"><img class="aligncenter size-medium wp-image-666" title="icon-app-store" src="http://www.theflyingjalapenolives.com/wp-content/uploads/2010/06/icon-app-store-300x300.png" alt="icon-app-store" width="300" height="300" /></a></div>
<div>
<p>I&#8217;m a little late in mentioning this, but I had the pleasure of creating an awesome iPhone app with an even more awesome group of peeps.</p>
<p>Last week we pushed out the <a href="http://www.phillybeerweek.org/">Philly Beer Week</a> 2010 <a href="http://bit.ly/9s0NbY">iPhone app</a>.</p>
<p>We have had an awesome response and, more importantly, it was fun working with the crew we assembled from <a href="http://phillycocoa.org/">Philly Cocoa</a> and <a href="http://www.indyhall.org/">Indy Hall</a>.</p>
<p>If you happen to be around Philly this weekend to sample some of the fine brews, try the app out and let us know what you think. Also feel free to by us a beer!</p>
<p>The Philly Beer Week iPhone App crew:</p>
<p>Johnny Bilotta (@johnnynines)</p>
<p>Kevin Lee (@stubborndreams)</p>
<p>Michael James (@mj1531)</p>
<p>Andy Mroczkowski (@amrox)</p>
<p>Jake O&#8217;Brien (@flailmonger)</p>
<p>Corey Floyd &#8211; Me! (@fjalapeno)</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2010/06/philly-beer-week-iphone-app/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FTUtils Fork</title>
		<link>http://www.theflyingjalapenolives.com/2010/04/ftutils-fork/</link>
		<comments>http://www.theflyingjalapenolives.com/2010/04/ftutils-fork/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 15:13:33 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=661</guid>
		<description><![CDATA[I recently forked FTUtils to provide some functionality I needed for FJSTransitionController. These changes may be of use to others as well. 1. Diagonal direction control. For when you want to slide a view in from the corner of the screen. 2. Enclosing View support. This is a bit convoluted, but: All animations in FTUtils [...]]]></description>
			<content:encoded><![CDATA[<p>I recently <a href="http://github.com/coreyfloyd/ftutils/">forked</a> <a href="http://github.com/neror/ftutils">FTUtils</a> to provide some functionality I needed for <a href="http://github.com/coreyfloyd/FJSTransitionController">FJSTransitionController</a>.</p>
<p>These changes may be of use to others as well.</p>
<p>1. Diagonal direction control.<br />
For when you want to slide a view in from the corner of the screen.</p>
<p>2. Enclosing View support.<br />
This is a bit convoluted, but: All animations in FTUtils are assumed to move in and out of the full screen.<br />
When would this be an issue?<br />
If you perform 2 animations at the same time that are enclosed in a view that is less than full screen. Basically, this boils down to the animation curves will be &#8220;out of sync&#8221;. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2010/04/ftutils-fork/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I have been absent, but I come bearing gifts…</title>
		<link>http://www.theflyingjalapenolives.com/2010/03/i-have-been-absent-but-i-come-bearing-gifts%e2%80%a6/</link>
		<comments>http://www.theflyingjalapenolives.com/2010/03/i-have-been-absent-but-i-come-bearing-gifts%e2%80%a6/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 22:31:21 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=651</guid>
		<description><![CDATA[I haven&#8217;t been a very good steward as of late (I have excuses I swear!) On a good note, I have finally uploaded a few snippets for the world to use. First up is: iPhone Context Views (Codaset) (Github) This is a very simple view class that will pop up context views/menus for users to [...]]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t been a very good steward as of late (I have excuses I swear!)</p>
<p>On a good note, I have finally uploaded a few snippets for the world to use.</p>
<p>First up is: iPhone Context Views (<a href="http://codaset.com/coreyfloyd/iphone-context-views">Codaset</a>) (<a href="http://github.com/coreyfloyd/iPhone-Context-Views">Github</a>)</p>
<p>This is a very simple view class that will pop up context views/menus for users to interact with. This probably flies in the face of the HIG, but oh well. I must also admit this was heavily inspired by <a href="http://www.hogbaysoftware.com/products/taskpaper">TaskPaper</a> for the <a href="http://itunes.apple.com/us/app/taskpaper/id354540092?mt=8">iPhone</a>, which is an awesome app for notes/tasks/outlining.</p>
<p>The views use a simple delegate pattern which most Cocoa Devs should find familiar.</p>
<p>For my next trick, I present FJSTransitionController (<a href="http://codaset.com/coreyfloyd/fjstransitioncontroller">Codaset</a>) (<a href="http://github.com/coreyfloyd/FJSTransitionController">Github</a>).</p>
<p>&#8220;What is this TransitionThingAmaBob,&#8221; you ask?  Well, FJSTC is a custom &#8220;top level view controller&#8221; to be used as a replacement for UINavigationControllers and UITabBarControllers. It handles transitions between view controllers, but with more flexibility.</p>
<p>Instead of managing a stack or an array of view controllers, FJSTC manages a Dictionary.  You can associate VCs with keys and load them arbitrarily.</p>
<p>&#8220;But I want more!&#8221; you say. Well instead of giving FJSTC a fully instantiated VC, you can simply provide a class and it will instantiate it on demand. you can provide a nib as well.</p>
<p>Another requirement was the proper calling of viewDidAppear: and friends. This was done using the nice <a href="http://www.degutis.org/blog/dev/2009/08/01/next-runloop-trick/">SDNextRunloopProxy</a> class by Steve Degutis.</p>
<p>Just like UITBC and UINC, you can access the transitionController through an instance variable on all UIViewController instances (made possible by a UIViewController category):</p>
<pre class="brush: objc;">
[self.transitionController loadViewController:vc forKey:myKey];
</pre>
<p>And lastly, transition animations. You can set a transition animation type, duration, and direction (if required).  The animations were enabled using <a href="http://github.com/neror/ftutils">FTUtils</a>, a fantastic core animation wrapper with several stock animations (you really should check it out, as I said <a href="http://www.theflyingjalapenolives.com/2009/12/open-source-iphone-ftutils-or-super-awesome-canned-animations-for-the-iphone/">before</a>).</p>
<p>So now you can load arbitrary view controllers with arbitrary animations in just a few lines of code.</p>
<p>These are both relatively new and assuredly have some bugs, BUT I am using them both in applications I am building right now. So, I will find those bugs, yes I will.</p>
<p>If you have a minute, check them out, and break as many rules in the HIG as you can!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2010/03/i-have-been-absent-but-i-come-bearing-gifts%e2%80%a6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone OS 4 and Backgound Tasks or &#8220;Why We Don&#8217;t Have a Calendar API&#8221;</title>
		<link>http://www.theflyingjalapenolives.com/2010/01/iphone-os-4-and-backgound-tasks-or-why-we-dont-have-a-calendar-api/</link>
		<comments>http://www.theflyingjalapenolives.com/2010/01/iphone-os-4-and-backgound-tasks-or-why-we-dont-have-a-calendar-api/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 06:34:18 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=635</guid>
		<description><![CDATA[This has been on the burner for a while. With all of the iPhone OS 4 / iPad / iSlate hoopla, I figured I better get it out the door before it all becomes a moot point. One of the most perplexing omissions in the current SDK has been the CalendarStore API. It seemingly goes [...]]]></description>
			<content:encoded><![CDATA[<p>This has been on the burner for a while. With all of the iPhone OS 4 / iPad / iSlate hoopla, I figured I better get it out the door before it all becomes a moot point.</p>
<p>One of the most perplexing omissions in the current SDK has been the CalendarStore API. It seemingly goes hand-in-hand with the AddressBook APIs and is every bit as important for contact management on a mobile device.</p>
<p>But alas, here we are on OS 3.1.X without any support for accessing a user&#8217;s calendar. Not even the &#8220;second-class citizen&#8221; readonly kind.</p>
<p>Although I&#8217;m sure the iPhone team at Apple has a pretty big todo list, I can&#8217;t help but think there is something more to this mystery…</p>
<p>I submit to you, the reader, that the forthcoming Calendar API is intimately linked to a background processes API. Huh?</p>
<p>I know, but let me explain.</p>
<p>When iPhone OS 3 appeared on the scene, Apple bestowed upon us a gift known as Push Notifications. But lets face it, they suck. For one, they only serve a few specific types of applications. And, perhaps even more detrimental, Push Notifications are hard. Hard to implement. Hard to host. Hard to scale.</p>
<p>Now some will disagree regarding degree of difficulty in setting up a Push Notification server, but none can argue that requiring developers to deploy a server just to fake background tasks is ludicrous.</p>
<p>But to my point: If only we had something like Push Notifications, but more flexible with no server requirement. Also, why not let us execute arbitrary snippets of code when our app isn&#8217;t running.</p>
<p>Now were getting somewhere. So, lets put it all together.</p>
<p>I have an app, say an alarm clock app (I know easy example). I want to schedule an alarm, so I call the calendar API and schedule an event.</p>
<pre class="brush: objc;">
CalAppEvent *newEvent = [CalAppEvent event];
[newEvent setStartDate:someDate];
[newEvent setRecurranceRule:hourly];
CalCalendar* appCalendar = [[CalCalendarStore defaultCalendarStore] sharedAppCalendar];
[newEvent setCalendar:appCalendar];
[[CalCalendarStore defaultCalendarStore] saveEvent:newEvent span:CalSpanFuture error:nil];
</pre>
<p>But wait, instead of a simple alarm, maybe I want to play a sound file from my app bundle and deliver a context specific message to the user. Maybe I even want to open a network connection.</p>
<p>If only we had an easy way to capture lexical scope and pass off some code to be executed by another process. How about:</p>
<p><code>[newEvent setAlarmBlock:myBlock];</code></p>
<p>Now when my event fires, I can run any arbitrary piece of code!</p>
<p>Now you see the possibilities. Is this true background process support? Not quite. But it is close, very close. </p>
<p>It provides nearly all the flexibility we need, while preserving battery life. Not to mention it avoids deploying and maintaining a server. We&#8217;ve effectively leveraged existing technologies (albeit 10.6) and since the calendar process is always running, why not exploit it for all of our multitasking needs?</p>
<p>Additionally, this implementation provides users with a familiar, easy to understand UI for managing background apps: the Calendar app. Simply open the special &#8220;Background Tasks&#8221; calendar to view all upcoming events scheduled tasks all of your apps.</p>
<p>Of course this is all speculation as I can assure you I have no inside information. I am sure that Apple has a much more elegant solution, but I can&#8217;t help but think I am on to something…</p>
<p>Thank you for indulging me in my little though experiment. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2010/01/iphone-os-4-and-backgound-tasks-or-why-we-dont-have-a-calendar-api/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Development Links: Redux</title>
		<link>http://www.theflyingjalapenolives.com/2009/12/development-links-redux/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/12/development-links-redux/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 10:00:27 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=617</guid>
		<description><![CDATA[This is an update to my previous post Below is a list of my subscribed developer feeds along with a link to each home page. At the end of the post you will also find an OPML file if you are so inclined Enjoy! First are the Aggregators: [RSS] iPhoneFlow [RSS] Planet Cocoa [RSS] The [...]]]></description>
			<content:encoded><![CDATA[<p>This is an update to my previous <a href="http://www.theflyingjalapenolives.com/?p=256">post</a></p>
<p>Below is a list of my subscribed developer feeds along with a link to each home page.</p>
<p>At the end of the post you will also find an OPML file if you are so inclined</p>
<p>Enjoy!</p>
<p>First are the Aggregators:</p>
<ul>
<li>[<a href="http://feeds2.feedburner.com/iPhoneFlow">RSS</a>] <a href="http://www.iphoneflow.com/">iPhoneFlow</a></li>
<li>[<a href="http://feeds.feedburner.com/PlanetCocoa">RSS</a>] <a href="http://www.planetcocoa.org/">Planet Cocoa</a></li>
<li>[<a href="http://feeds.feedburner.com/mdnbigblog?format=xml">RSS</a>] <a href="http://www.mac-developer-network.com">The MDN Big Blog</a></li>
</ul>
<p>All development feeds:</p>
<ul>
<li>[<a href="http://iphone.keyvisuals.com/feed/">RSS</a>] <a href="http://iphone.keyvisuals.com">#iPhoneDev</a></li>
<li>[<a href="http://www.47hats.com/?feed=rss2">RSS</a>] <a href="http://www.47hats.com">47 Hats</a></li>
<li>[<a href="http://feeds2.feedburner.com/6TringleBlog">RSS</a>] <a href="http://6Tringle.com/blog">6Tringle Blog</a></li>
<li>[<a href="http://www.71squared.co.uk/feed/">RSS</a>] <a href="http://www.71squared.com">71²</a></li>
<li>[<a href="http://feeds2.feedburner.com/blogspot/smartbear">RSS</a>] <a href="http://blog.asmartbear.com">A Smart Bear: Startups and Marketing for Geeks</a></li>
<li>[<a href="http://feeds2.feedburner.com/AlanQuatermain">RSS</a>] <a href="http://quatermain.tumblr.com/">Alan Quatermain</a></li>
<li>[<a href="http://kevin.sb.org/feed/">RSS</a>] <a href="http://kevin.sb.org">An Experiment in Bloggery</a></li>
<li>[<a href="http://arustisha.wordpress.com/feed/">RSS</a>] <a href="http://arustisha.wordpress.com">Arustisha</a></li>
<li>[<a href="http://www.oiledmachine.com/posts/atom.xml">RSS</a>] <a href="http://oiledmachine.com/posts">Basil Shkara</a></li>
<li>[<a href="http://www.friday.com/bbum/feed/">RSS</a>] <a href="http://www.friday.com/bbum">bbum&#8217;s weblog-o-mat</a></li>
<li>[<a href="http://benbritten.com/blog/feed/">RSS</a>] <a href="http://benbritten.com">benbritten.com</a></li>
<li>[<a href="http://benchatelain.com/feed/">RSS</a>] <a href="http://benchatelain.com">Ben&#8217;s Dev Blog</a></li>
<li>[<a href="http://www.binarymethod.com/content/devblog_files/blog.xml">RSS</a>] <a href="http://www.binarymethod.com/index.html">BinaryMethod</a></li>
<li>[<a href="http://www.bit-101.com/blog/?feed=rss2">RSS</a>] <a href="http://www.bit-101.com/blog">BIT-101 Blog</a></li>
<li>[<a href="http://feeds.feedburner.com/bitquabit">RSS</a>] <a href="http://blog.bitquabit.com/">bitquabit</a></li>
<li>[<a href="http://b4winckler.wordpress.com/feed/">RSS</a>] <a href="http://b4winckler.wordpress.com">Björn Winckler&#8217;s Blog</a></li>
<li>[<a href="http://blog.sallarp.com/feed/">RSS</a>] <a href="http://blog.sallarp.com">blog.sallarp.com</a></li>
<li>[<a href="http://wilshipley.com/blog/feed.xml">RSS</a>] <a href="http://wilshipley.com/blog/">Call Me Fishmeal.</a></li>
<li>[<a href="http://cameron.io/feed">RSS</a>] <a href="http://cameron.io">Cameron.io</a></li>
<li>[<a href="http://blog.clickablebliss.com/feed/">RSS</a>] <a href="http://blog.clickablebliss.com">Clickable Bliss Blog</a></li>
<li>[<a href="http://cocoaconvert.net/feed/">RSS</a>] <a href="http://cocoaconvert.net">Cocoa Convert</a></li>
<li>[<a href="http://www.cimgf.com/feed/">RSS</a>] <a href="http://www.cimgf.com">Cocoa Is My Girlfriend</a></li>
<li>[<a href="http://fruitstandsoftware.com/blog/feed/">RSS</a>] <a href="http://fruitstandsoftware.com/blog">Cocoa Nut</a></li>
<li>[<a href="http://cocoasamurai.blogspot.com/feeds/posts/default">RSS</a>] <a href="http://cocoasamurai.blogspot.com/">Cocoa Samurai</a></li>
<li>[<a href="http://cocoawithlove.com/feeds/posts/default">RSS</a>] <a href="http://cocoawithlove.com/">Cocoa with Love</a></li>
<li>[<a href="http://robnapier.net/blog/feed">RSS</a>] <a href="http://robnapier.net/blog">Cocoaphony</a></li>
<li>[<a href="http://www.cocoatoa.com/feed/index.xml">RSS</a>] <a href="http://www.cocoatoa.com/">Cocoatoa</a></li>
<li>[<a href="http://blog.cocoia.com/feed/atom/">RSS</a>] <a href="http://blog.cocoia.com">Cocoia Blog</a></li>
<li>[<a href="http://www.gehacktes.net/feed/">RSS</a>] <a href="http://www.gehacktes.net">coders</a></li>
<li>[<a href="http://feeds.feedburner.com/codinghorror/">RSS</a>] <a href="http://www.codinghorror.com/blog/">Coding Horror</a></li>
<li>[<a href="http://feeds2.feedburner.com/contrast/blog">RSS</a>] <a href="http://www.contrast.ie/blog">Contrast | The Blog</a></li>
<li>[<a href="http://www.dribin.org/dave/blog/index.atom">RSS</a>] <a href="http://www.dribin.org/dave/blog/">Dave Dribin&#8217;s Blog</a></li>
<li>[<a href="http://www.davemark.com/?feed=rss2">RSS</a>] <a href="http://www.davemark.com">Dave Mark&#8217;s Blog</a></li>
<li>[<a href="http://www.degutis.org/feed/">RSS</a>] <a href="http://www.degutis.org/blog">Degutis.org</a></li>
<li>[<a href="http://sivers.org/en.atom">RSS</a>] <a href="http://sivers.org/">Derek Sivers</a></li>
<li>[<a href="http://developer.casgrain.com/?feed=rss2">RSS</a>] <a href="http://developer.casgrain.com">developer.casgrain.com</a></li>
<li>[<a href="http://devwhy.blogspot.com/feeds/posts/default?alt=rss">RSS</a>] <a href="http://www.devwhy.com/blog/">/dev/why!?!</a></li>
<li>[<a href="http://feeds.feedburner.com/domainofthebored">RSS</a>] <a href="http://boredzo.org/blog">Domain of the Bored</a></li>
<li>[<a href="http://feeds.feedburner.com/dubroy">RSS</a>] <a href="http://dubroy.com/blog">Dubroy.com/blog</a></li>
<li>[<a href="http://feeds2.feedburner.com/ElegantCode">RSS</a>] <a href="http://elegantcode.com">Elegant Code</a></li>
<li>[<a href="http://feeds.feedburner.com/EnormegoDevelopers">RSS</a>] <a href="http://developers.enormego.com/">Enormego Developer Blog</a></li>
<li>[<a href="http://kevinhoctor.blogspot.com/feeds/posts/default">RSS</a>] <a href="http://kevinhoctor.blogspot.com/">Entrepreneurial Seduction</a></li>
<li>[<a href="http://www.ericsink.com/rss.xml">RSS</a>] <a href="http://software.ericsink.com/">Eric.Weblog()</a></li>
<li>[<a href="http://eschatologist.net/blog/?feed=rss2">RSS</a>] <a href="http://eschatologist.net/blog">Eschatology</a></li>
<li>[<a href="http://espresso-served-here.com/feed/">RSS</a>] <a href="http://espresso-served-here.com">Espresso Served Here</a></li>
<li>[<a href="http://www.fatcatsoftware.com/blog/feed">RSS</a>] <a href="http://www.fatcatsoftware.com/blog">Fat Cat Software</a></li>
<li>[<a href="http://feeds.feedburner.com/fieryrobot">RSS</a>] <a href="http://www.fieryrobot.com/blog">Fiery Robot!</a></li>
<li>[<a href="http://www.bdunagan.com/feed/">RSS</a>] <a href="http://www.bdunagan.com">fill the void</a></li>
<li>[<a href="http://feeds.feedburner.com/flyosity">RSS</a>] <a href="http://flyosity.com/">Flyosity: Mike Rundle&#8217;s interface design blog</a></li>
<li>[<a href="http://speirs.org/feed/">RSS</a>] <a href="http://speirs.org">Fraser Speirs</a></li>
<li>[<a href="http://feeds.feedburner.com/FromARemoteVillage">RSS</a>] <a href="http://fromaremotevillage.blogspot.com/">From a remote village</a></li>
<li>[<a href="http://www.polarbearfarm.com/blog/?feed=rss2">RSS</a>] <a href="http://www.polarbearfarm.com/blog">From The Top</a></li>
<li>[<a href="http://furbo.org/feed/">RSS</a>] <a href="http://furbo.org">furbo.org</a></li>
<li>[<a href="http://gusmueller.com/blog/atom.xml">RSS</a>] <a href="http://shapeof.com/">Gus&#8217;s weblog, adventures in Flying Meat.</a></li>
<li>[<a href="http://devblog.brautaset.org/feed/">RSS</a>] <a href="http://devblog.brautaset.org">Hot Chocolate</a></li>
<li>[<a href="http://howtomakeiphoneapps.com/feed/">RSS</a>] <a href="http://howtomakeiphoneapps.com">How to Make iPhone Apps</a></li>
<li>[<a href="http://humblecoder.blogspot.com/feeds/posts/default">RSS</a>] <a href="http://humblecoder.blogspot.com/">Humble Coder</a></li>
<li>[<a href="http://iloveco.de/feed/">RSS</a>] <a href="http://iloveco.de">I Love Code</a></li>
<li>[<a href="http://iamleeg.blogspot.com/feeds/posts/default">RSS</a>] <a href="http://iamleeg.blogspot.com/">iamleeg</a></li>
<li>[<a href="http://dannyg.com/iapps/Blog/rss.xml">RSS</a>] <a href="http://dannyg.com/iapps/Blog/Blog.html">iApps Development Blog</a></li>
<li>[<a href="http://icodeblog.com/feed/">RSS</a>] <a href="http://icodeblog.com">iCodeBlog</a></li>
<li>[<a href="http://ignorethecode.net/blog/rss/">RSS</a>] <a href="http://ignorethecode.net">ignorethecode.net</a></li>
<li>[<a href="http://inessential.com/xml/rss.xml">RSS</a>] <a href="http://inessential.com/">inessential.com</a></li>
<li>[<a href="http://iphonedevelopertips.com/feed">RSS</a>] <a href="http://iPhoneDeveloperTips.com">iPhone Developer Tips</a></li>
<li>[<a href="http://iphonedevelopment.blogspot.com/feeds/posts/default">RSS</a>] <a href="http://iphonedevelopment.blogspot.com/">iPhone Development</a></li>
<li>[<a href="http://iphoneincubator.com/blog/feed">RSS</a>] <a href="http://iPhoneIncubator.com/blog">iPhone Development Blog</a></li>
<li>[<a href="http://maniacdev.com/feed/">RSS</a>] <a href="http://maniacdev.com">iPhone Development Tutorials and Tips</a></li>
<li>[<a href="http://iphone.zcentric.com/feed/">RSS</a>] <a href="http://iphone.zcentric.com">Iphone Noob</a></li>
<li>[<a href="http://www.iphonesdkarticles.com/feeds/posts/default">RSS</a>] <a href="http://www.iphonesdkarticles.com/">iPhone SDK Articles</a></li>
<li>[<a href="http://mauvilasoftware.com/iphone_software_development/atom.xml">RSS</a>] <a href="http://mauvilasoftware.com/iphone_software_development/">iPhone Software Development</a></li>
<li>[<a href="http://iphonedevelopmentbits.com/feed/">RSS</a>] <a href="http://iphonedevelopmentbits.com">iphonedevelopmentbits</a></li>
<li>[<a href="http://lethain.com/feeds/all/">RSS</a>] <a href="http://lethain.com/">Irrational Exuberance</a></li>
<li>[<a href="http://www.platinumball.net/blog/feed/">RSS</a>] <a href="http://www.platinumball.net/blog">i’m so full of ideas</a></li>
<li>[<a href="http://jakebehrens.com/rss">RSS</a>] <a href="http://jakebehrens.com/">Jake Behrens</a></li>
<li>[<a href="http://jakebehrens.com/feed">RSS</a>] <a href="http://jakebehrens.com">JakeBehrens.com</a></li>
<li>[<a href="http://feeds2.feedburner.com/jameswfrost">RSS</a>] <a href="http://jameswfrost.co.uk/">James Frost</a></li>
<li>[<a href="http://blog.jayway.com/feed/">RSS</a>] <a href="http://blog.jayway.com">Jayway Team Blog</a></li>
<li>[<a href="http://www.joelonsoftware.com/rss.xml">RSS</a>] <a href="http://www.joelonsoftware.com">Joel on Software</a></li>
<li>[<a href="http://www.karlkraft.com/index.php/feed/">RSS</a>] <a href="http://www.karlkraft.com">Karl Kraft</a></li>
<li>[<a href="http://katidev.com/blog/feed/">RSS</a>] <a href="http://katidev.com/blog">KATI</a></li>
<li>[<a href="http://kickingbear.com/blog/feed">RSS</a>] <a href="http://kickingbear.com/blog">Kickingbear</a></li>
<li>[<a href="http://lapcatsoftware.com/blog/feed/">RSS</a>] <a href="http://lapcatsoftware.com/blog">Lap Cat Software Blog</a></li>
<li>[<a href="http://feeds2.feedburner.com/lockfocus">RSS</a>] <a href="http://likethought.com/lockfocus">LockFocus</a></li>
<li>[<a href="http://www.mac-developer-network.com/feed/">RSS</a>] <a href="http://www.mac-developer-network.com">Mac Developer Network</a></li>
<li>[<a href="http://macdevelopertips.com/feed">RSS</a>] <a href="http://MacDeveloperTips.com">Mac Developer Tips</a></li>
<li>[<a href="http://www.macfanatic.net/blog/feed/">RSS</a>] <a href="http://www.macfanatic.net/blog">Mac Fanatic</a></li>
<li>[<a href="http://www.manton.org/rss.xml">RSS</a>] <a href="http://www.manton.org/">Manton Reece</a></li>
<li>[<a href="http://blog.mbcharbonneau.com/feed/">RSS</a>] <a href="http://blog.mbcharbonneau.com">Marc Charbonneau&#8217;s Blog</a></li>
<li>[<a href="http://www.marco.org/rss">RSS</a>] <a href="http://www.marco.org/">Marco.org</a></li>
<li>[<a href="http://www.latenightsw.com/blog/?feed=rss2">RSS</a>] <a href="http://www.latenightsw.com/blog">Mark Alldritt&#8217;s Journal</a></li>
<li>[<a href="http://www.markj.net/feed/">RSS</a>] <a href="http://www.markj.net">markjnet</a></li>
<li>[<a href="http://mattgemmell.com/feed">RSS</a>] <a href="http://mattgemmell.com">Matt Legend Gemmell</a></li>
<li>[<a href="http://feeds.feedburner.com/maxvoltar?format=xml">RSS</a>] <a href="http://maxvoltar.com/">Maxvoltar</a></li>
<li>[<a href="http://memo.tv/tags/iphone/feed">RSS</a>] <a href="http://memo.tv/taxonomy/term/266/0">memo.tv &#8211; iPhone</a></li>
<li>[<a href="http://mjtsai.com/blog/feed/">RSS</a>] <a href="http://mjtsai.com/blog">Michael Tsai&#8217;s Weblog</a></li>
<li>[<a href="http://feeds2.feedburner.com/clarkware">RSS</a>] <a href="http://www.clarkware.com/cgi/blosxom">Mike Clark</a></li>
<li>[<a href="http://www.atomicwang.org/motherfucker/Index/rss.xml">RSS</a>] <a href="http://www.atomicwang.org/motherfucker/Index/Index.html">Mike Lee</a></li>
<li>[<a href="http://feeds.feedburner.com/MobileOrchard">RSS</a>] <a href="http://www.mobileorchard.com">Mobile Orchard</a></li>
<li>[<a href="http://blog.nuthatch.com/rss">RSS</a>] <a href="http://blog.nuthatch.com/">Natterings</a></li>
<li>[<a href="http://feeds.feedburner.com/ninthDivision">RSS</a>] <a href="http://www.ninthdivision.com">ninth DIVISION [iphone, mac, web]</a></li>
<li>[<a href="http://www.noodlesoft.com/blog/feed/">RSS</a>] <a href="http://www.noodlesoft.com/blog">Noodlings</a></li>
<li>[<a href="http://www.notesfromandy.com/feed/">RSS</a>] <a href="http://www.notesfromandy.com">Notes From Andy</a></li>
<li>[<a href="http://blog.nottoobadsoftware.com/feed/">RSS</a>] <a href="http://blog.nottoobadsoftware.com">NotTooBad Blogging</a></li>
<li>[<a href="http://www.mikeash.com/pyblog/rss.py">RSS</a>] <a href="http://www.mikeash.com/?page=pyblog/">NSBlog</a></li>
<li>[<a href="http://blog.coriolis.ch/feed/">RSS</a>] <a href="http://blog.coriolis.ch">NSCoriolisBlog</a></li>
<li>[<a href="http://objcolumnist.com/feed/">RSS</a>] <a href="http://objcolumnist.com">ObjColumnist</a></li>
<li>[<a href="http://blog.objectgraph.com/index.php/feed/">RSS</a>] <a href="http://blog.objectgraph.com">ObjectGraph Blog</a></li>
<li>[<a href="http://www.panic.com/blog/feed/">RSS</a>] <a href="http://www.panic.com/blog">Panic Blog</a></li>
<li>[<a href="http://pieteromvlee.net/blog/?feed=rss2">RSS</a>] <a href="http://pieteromvlee.net/blog">Pieter Omvlee&#8217;s Blog</a></li>
<li>[<a href="http://www.possibleprobable.com/?feed=rss2">RSS</a>] <a href="http://www.possibleprobable.com">possible/probable</a></li>
<li>[<a href="http://bill.dudney.net/roller/objc/feed/entries/atom">RSS</a>] <a href="http://bill.dudney.net/roller/objc/">PrEV</a></li>
<li>[<a href="http://www.red-sweater.com/blog/feed">RSS</a>] <a href="http://www.red-sweater.com/blog">Red Sweater Blog</a></li>
<li>[<a href="http://releasecandidateone.com/feed.xml">RSS</a>] <a href="http://releasecandidateone.com/">Release Candidate One</a></li>
<li>[<a href="http://rentzsch.com/rss.xml/">RSS</a>] <a href="http://rentzsch.com">rentzsch.com: Tales from the Red Shed</a></li>
<li>[<a href="http://revetkn.com/?feed=rss2">RSS</a>] <a href="http://revetkn.com">revetkn.com</a></li>
<li>[<a href="http://feeds.feedburner.com/typepad/sethsmainblog">RSS</a>] <a href="http://sethgodin.typepad.com/seths_blog/">Seth&#8217;s Blog</a></li>
<li>[<a href="http://feeds.feedburner.com/shanecrawfordorg">RSS</a>] <a href="http://shanecrawford.org">shanecrawford.org</a></li>
<li>[<a href="http://feeds.feedburner.com/37signals/beMH">RSS</a>] <a href="http://37signals.com/svn/posts">Signal vs. Noise</a></li>
<li>[<a href="http://www.softwarebyrob.com/feed/">RSS</a>] <a href="http://www.softwarebyrob.com">Software by Rob</a></li>
<li>[<a href="http://www.spacevatican.org/feed/atom.xml">RSS</a>] <a href="http://www.spacevatican.org/">Space Vatican &#8211; Home</a></li>
<li>[<a href="http://blog.andymatuschak.org/rss">RSS</a>] <a href="http://blog.andymatuschak.org/">Square Signals</a></li>
<li>[<a href="http://stevenf.tumblr.com/rss">RSS</a>] <a href="http://stevenf.tumblr.com/">stevenf.com</a></li>
<li>[<a href="http://blog.stormyprods.com/feeds/posts/default">RSS</a>] <a href="http://blog.stormyprods.com/">Stormy Productions Blog</a></li>
<li>[<a href="http://ramin.firoozye.com/feed/">RSS</a>] <a href="http://ramin.firoozye.com">Talk Funnel</a></li>
<li>[<a href="http://feeds.feedburner.com/EvsTechThoughtOfTheDay">RSS</a>] <a href="http://blog.evandavey.com">Tech Thought</a></li>
<li>[<a href="http://th30z.netsons.org/feed/">RSS</a>] <a href="http://th30z.netsons.org">Th30z &#8211; Coding on the Fly</a></li>
<li>[<a href="http://www.theflyingjalapenolives.com/feed/">RSS</a>] <a href="http://www.theflyingjalapenolives.com">The Flying Jalapeno Lives</a></li>
<li>[<a href="http://theocacao.com/index.rss">RSS</a>] <a href="http://theocacao.com/">Theobroma Cacao</a></li>
<li>[<a href="http://feeds2.feedburner.com/TobyJoe/">RSS</a>] <a href="http://www.tobyjoe.com">TobyJoe</a></li>
<li>[<a href="http://toxicsoftware.com/feed/">RSS</a>] <a href="http://toxicsoftware.com">toxicsoftware.com</a></li>
<li>[<a href="http://trailsinthesand.com/feed/">RSS</a>] <a href="http://trailsinthesand.com">Trails in the Sand</a></li>
<li>[<a href="http://tumbljack.com/rss">RSS</a>] <a href="http://tumbljack.com/">tumbljack</a></li>
<li>[<a href="http://www.uiandus.com/feed/">RSS</a>] <a href="http://www.uiandus.com/blog/">UI and us</a></li>
<li>[<a href="http://www.alexcurylo.com/blog/feed/">RSS</a>] <a href="http://www.alexcurylo.com/blog">Under The Bridge</a></li>
<li>[<a href="http://waffle.wootest.net/atom.xml">RSS</a>] <a href="http://waffle.wootest.net/">Waffle</a></li>
<li>[<a href="http://weblog.wanderingmango.com/atom/">RSS</a>] <a href="http://weblog.wanderingmango.com/">Wandering Mango Weblog</a></li>
<li>[<a href="http://withfoam.com/rss">RSS</a>] <a href="http://jakebehrens.com/">withfoam</a></li>
</ul>
<p>And if you would like to add these straight to your favorite feed reader, here is the OPML file:</p>
<p><a title="google-reader-subscriptions.xml.zip" href="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/12/google-reader-subscriptions.xml_.zip">google-reader-subscriptions.xml.zip</a></p>
<p>Lastly, I used this little <a href="http://geekyweekly.com/wp-content/uploads/parseOPML.html">web app</a> to parse my opml file.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/12/development-links-redux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Source iPhone: FTUtils or &#8220;Super Awesome Canned Animations for the iPhone&#8221;</title>
		<link>http://www.theflyingjalapenolives.com/2009/12/open-source-iphone-ftutils-or-super-awesome-canned-animations-for-the-iphone/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/12/open-source-iphone-ftutils-or-super-awesome-canned-animations-for-the-iphone/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 19:34:14 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=614</guid>
		<description><![CDATA[Are you using this? You should be. FTUtils contains several classes that allow you to easily add semi-complex animations to your app, for &#8220;free&#8221;. It&#8217;s a nice abstraction of Core Animation (which is a great abstraction of OpenGL + Quartz in it&#8217;s own right) Check out the demo app to see what you can do.]]></description>
			<content:encoded><![CDATA[<p>Are you using <a href="http://github.com/neror/ftutils">this</a>?</p>
<p>You should be. </p>
<p><a href="http://ftutils.com/">FTUtils</a> contains several classes that allow you to easily add semi-complex animations to your app, for &#8220;free&#8221;.</p>
<p>It&#8217;s a nice abstraction of Core Animation (which is a great abstraction of OpenGL + Quartz in it&#8217;s own right)</p>
<p>Check out the demo app to see what you can do.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/12/open-source-iphone-ftutils-or-super-awesome-canned-animations-for-the-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Source iPhone: Resources 2</title>
		<link>http://www.theflyingjalapenolives.com/2009/12/open-source-iphone-resources-2/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/12/open-source-iphone-resources-2/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 16:24:48 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=610</guid>
		<description><![CDATA[Another list of open source libraries: http://boredzo.org/opensourcelinks/byauthor.html]]></description>
			<content:encoded><![CDATA[<p>Another list of open source libraries:</p>
<p><a href="http://boredzo.org/opensourcelinks/byauthor.html">http://boredzo.org/opensourcelinks/byauthor.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/12/open-source-iphone-resources-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Source iPhone: Resources</title>
		<link>http://www.theflyingjalapenolives.com/2009/11/open-source-iphone-resources/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/11/open-source-iphone-resources/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 17:06:25 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=606</guid>
		<description><![CDATA[Great Resource, tagged and organized: http://cocoaheads.byu.edu/resources/open-source Originally suggested in this Stackoverflow question.]]></description>
			<content:encoded><![CDATA[<p>Great Resource, tagged and organized:</p>
<p><a href="http://cocoaheads.byu.edu/resources/open-source" target="_self">http://cocoaheads.byu.edu/resources/open-source</a></p>
<p>Originally suggested in this<a href="http://stackoverflow.com/questions/501981/what-open-source-cocoa-cocoa-touch-frameworks-are-out-there"> Stackoverflow question</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/11/open-source-iphone-resources/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Obscure iPhone: viewDidLoad and loadNibNamed</title>
		<link>http://www.theflyingjalapenolives.com/2009/11/obscure-iphone-viewdidload-and-loadnibnamed/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/11/obscure-iphone-viewdidload-and-loadnibnamed/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 18:28:22 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[obscure]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=598</guid>
		<description><![CDATA[Quick tip. Sometimes, instead of traditional nib loading, you may want to use the following method: [[NSBundle mainBundle] loadNibNamed:@"MyViewController" owner:self options:options]; For instance, if you want to provide a runtime replacement for proxy object in your nib (see UINibExternalObjects). If you do this and you also need to perform setup after the nib loads, you&#8217;ll [...]]]></description>
			<content:encoded><![CDATA[<p>Quick tip.</p>
<p>Sometimes, instead of traditional nib loading, you may want to use the following method:</p>
<p><code>[[NSBundle mainBundle] loadNibNamed:@"MyViewController" owner:self options:options];</code></p>
<p>For instance, if you want to provide a runtime replacement for proxy object in your nib (see <a href="http://developer.apple.com/IPhone/library/documentation/UIKit/Reference/NSBundle_UIKitAdditions/Introduction/Introduction.html" target="_self">UINibExternalObjects</a>).</p>
<p>If you do this <em>and</em> you also need to perform setup after the nib loads, you&#8217;ll come across an unexpected behavior.</p>
<p>viewDidLoad will not be called (Nor does awakeFromNib).</p>
<p>I wouldn&#8217;t classify it as a &#8220;bug&#8221;, I can see the rationale, but it is dubious and I have (so far) been unable to find any documentation on this behavior.</p>
<p>So if you do need to do some setup, place it in viewWillAppear (You are using a UINavigationController or UITabBarController, aren&#8217;t you?).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/11/obscure-iphone-viewdidload-and-loadnibnamed/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>We Finally Got It! (In App Purchases)</title>
		<link>http://www.theflyingjalapenolives.com/2009/10/we-finally-got-it-in-app-purchases/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/10/we-finally-got-it-in-app-purchases/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 02:20:20 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=594</guid>
		<description><![CDATA[We now have in app purchases for free apps (read: trial ware). It&#8217;s not quite perfect, as I am sure most developers would like to allow full functionality to users for a timed duration. (Maybe this will be allowed?) From a consumer side, I hope this isn&#8217;t abused to much. I have a strong feeling [...]]]></description>
			<content:encoded><![CDATA[<p>We now have in app purchases for free apps (read: trial ware). </p>
<p>It&#8217;s not quite perfect, as I am sure most developers would like to allow full functionality to users for a timed duration. (Maybe this will be allowed?)</p>
<p>From a consumer side, I hope this isn&#8217;t abused to much. </p>
<p>I have a strong feeling that we will see much more of a lash back if users of free apps are constantly bombarded to make in-app purchases.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/10/we-finally-got-it-in-app-purchases/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Make it easier! &#8211; Dterm</title>
		<link>http://www.theflyingjalapenolives.com/2009/09/make-it-easier-dterm/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/09/make-it-easier-dterm/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 12:26:42 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=590</guid>
		<description><![CDATA[I am new to git and shamefully incompetent with the Terminal. However, I am working on it. One of the tools I came across since I began using git is DTerm. It is essentially a free floating terminal that you bring up with a keystroke. The killer feature (for me) is once you invoke it [...]]]></description>
			<content:encoded><![CDATA[<p>I am new to git and shamefully incompetent with the Terminal. However, I am working on it.</p>
<p>One of the tools I came across since I began using git is <a href="http://decimus.net/dterm.php">DTerm</a>. It is essentially a free floating terminal that you bring up with a keystroke. </p>
<p>The killer feature (for me) is once you invoke it with a keystroke, DTerm is set to the working directory of the front most document.</p>
<p>The other killer feature is that DTerm (v. 1.x) is free!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/09/make-it-easier-dterm/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Quick Code &#8211; AppleScript from Cocoa</title>
		<link>http://www.theflyingjalapenolives.com/2009/09/quick-code-applescript-from-cocoa/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/09/quick-code-applescript-from-cocoa/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 18:37:06 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=574</guid>
		<description><![CDATA[This is just something I picked up over the weekend to interface with Terminal.app via AppleScript: NSString *s = [NSString stringWithFormat:@"tell application \"Terminal\" to do script \"cd %@\"", folderPath]; NSAppleScript *as = [[NSAppleScript alloc] initWithSource: s]; [as executeAndReturnError:nil]; The intent is pretty easy to pick up (Also, please feel free to handle the error). The [...]]]></description>
			<content:encoded><![CDATA[<p>This is just something I picked up over the weekend to interface with Terminal.app via AppleScript:</p>
<p><code>NSString *s = [NSString stringWithFormat:@"tell application \"Terminal\" to do script \"cd %@\"", folderPath];<n><br />
NSAppleScript *as = [[NSAppleScript alloc] initWithSource: s];</n><n><br />
[as executeAndReturnError:nil];<br />
</n></code></p>
<p>The intent is pretty easy to pick up (Also, please feel free to handle the error). The question and answer can be found on <a href="http://stackoverflow.com/questions/1446814/open-a-terminal-window-to-a-specified-folder-from-a-cocoa-app">StackoverFlow</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/09/quick-code-applescript-from-cocoa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Understanding the Objective-C Runtime</title>
		<link>http://www.theflyingjalapenolives.com/2009/09/understanding-the-objective-c-runtime/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/09/understanding-the-objective-c-runtime/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 03:00:43 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[objective-c]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=563</guid>
		<description><![CDATA[The runtime has been a bit of a mystery to me. To be sure, I have yet to explore some of the more dynamic aspects of Objective-C/Cocoa in my applications. In fact, as many know, you can move along quite happily though your Cocoa/iPhone programming without directly daling with it. Others might not realize what&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>The runtime has been a bit of a mystery to me. </p>
<p>To be sure, I have yet to explore some of the more dynamic aspects of Objective-C/Cocoa in my applications.</p>
<p>In fact, as many know, you can move along quite happily though your Cocoa/iPhone programming without directly daling with it. Others might not realize what&#8217;s &#8220;under the hood&#8221;.</p>
<p>If you really want to have some fun, you will need some fundamentals.</p>
<p>To this end, <a href="http://www.mobileorchard.com/">Mobile Orchard</a> last  <a href="http://www.mobileorchard.com/podcast-mike-ash-on-the-objective-c-runtime-objects-and-the-runtime-message-sending-and-no-such-method/">podcast</a>  featured  <a href="http://rogueamoeba.com/">Rogue Amoeba&#8217;s</a> <a href="http://www.mikeash.com/">Mike Ash</a> who gave an overview of the runtime.</p>
<p> <a href="http://www.mac-developer-network.com/">MDN</a> also  released <a href="http://www.mac-developer-network.com/shows/podcasts/mdnshow/mdn007/">episode 7</a>  of the MDN Show which goes into more depth in an interview with <a href="http://espresso-served-here.com/">Jonathan Dann</a> of <a href="http://www.madebysofa.com/">Sofa</a>.</p>
<p>If these podcasts wet your appetite, Mike Ash has also produced a nice <a href="http://www.mikeash.com/?page=pyblog/friday-qa-2009-03-13-intro-to-the-objective-c-runtime.html">series of blog posts</a> on the subject as well.</p>
<p>I&#8217;m sure you will find other great resources in the community as well, but this should give you a good head start.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/09/understanding-the-objective-c-runtime/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Source iPhone &#8211; Glossy Buttons</title>
		<link>http://www.theflyingjalapenolives.com/2009/09/open-source-iphone-glossy-buttons/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/09/open-source-iphone-glossy-buttons/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 16:44:15 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=560</guid>
		<description><![CDATA[The buttons in the iPhone SDK suck. There, I said it. Almost everything on the iPhone round, glossy and &#8220;3Dish&#8221;. Except the standard RoundRect buttons included in UIKit. Of course we can go off and use one of many drawing apps to crank out some nice glossy buttons, but there a few problems with this [...]]]></description>
			<content:encoded><![CDATA[<p>The buttons in the iPhone SDK suck. There, I said it.</p>
<p>Almost everything on the iPhone round, glossy and &#8220;3Dish&#8221;.</p>
<p>Except the standard RoundRect buttons included in UIKit. </p>
<p>Of course we can go off and use one of many drawing apps to crank out some nice glossy buttons, but there a few problems with this approach.</p>
<p>First, you have to be at least competent in using some advanced drawing tool.</p>
<p>Second, any buttons you create are static and must be shipped as a resource in your app. It is acceptable to want to generate multiple colors on the fly. </p>
<p>To solve our dilemma, we can use the work of two other people.</p>
<p>Matt Gallagher posted a <a href="http://cocoawithlove.com/2008/09/drawing-gloss-gradients-in-coregraphics.html">great article</a> on generating gloss gradients a while back.</p>
<p>It&#8217;s quite informative in explaining and implementing the effect. You can run a OS X app and play around with the setting.</p>
<p>The code didn&#8217;t quite work on the iPhone because of the absence of NSColor.</p>
<p>So we have two problems. First, we need to adapt the code to the iPhone. Second, we need to add this code to UIButton as a category.</p>
<p>Good news everyone! It&#8217;s already been done.</p>
<p>More than that, you can follow a 5 step tutorial taking you through the process of building the code and some explanation behind it.</p>
<p>The first post of the series can be found <a href="http://www.mlsite.net/blog/?p=227">here</a>.</p>
<p><span style="text-decoration: line-through;">I would credit the author, but I think he (or she) has gone through great pains to omit his (or her) name from the blog. (Or maybe I&#8217;m just too dense).</span></p>
<p>Update: Michael Heyeck wrote in to claim his awesome work and <a href="http://www.mlsite.net/blog/?page_id=339">updated his &#8220;About&#8221; page</a> to be a little more forthcoming.</p>
<p>Anyways, try it out. It works good for making glossy buttons pretty quickly and it is tweak-able.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/09/open-source-iphone-glossy-buttons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8230;And The Dot Syntax Battle Rages On</title>
		<link>http://www.theflyingjalapenolives.com/2009/08/and-the-dot-syntax-battle-rages-on/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/08/and-the-dot-syntax-battle-rages-on/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 07:57:54 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[objective-c]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=543</guid>
		<description><![CDATA[I find the manner in which programmers vehemently defend and deride coding style preferences absolutely fascinating. I personally feel that dot syntax serves a worthwhile purpose. In fact, I have been refactoring old code to conform to this convention. In the end, I feel these types of debates speak to the health and growth of [...]]]></description>
			<content:encoded><![CDATA[<p>I find the manner in which programmers vehemently <a href="http://iphonedevelopment.blogspot.com/2009/08/dot-notation-redux-google-style-guide.html">defend</a> and <a href="http://www.cimgf.com/2008/07/08/a-case-against-dot-syntax/">deride</a> <a href="http://google-styleguide.googlecode.com/svn/trunk/objcguide.xml#Properties">coding style preferences</a> absolutely fascinating.</p>
<p>I personally feel that <a href="http://www.theflyingjalapenolives.com/2009/07/private-properties/">dot syntax serves a worthwhile purpose</a>.<br />
In fact, I have been refactoring old code to conform to this convention.</p>
<p>In the end, I feel these types of debates speak to the health and growth of the Cocoa/Objective-C community. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/08/and-the-dot-syntax-battle-rages-on/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Source iPhone &#8211; JSON Data</title>
		<link>http://www.theflyingjalapenolives.com/2009/07/open-source-iphone-json-data/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/07/open-source-iphone-json-data/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 15:51:15 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=536</guid>
		<description><![CDATA[I&#8217;ve used/repurposed several open source projects for use in my code. If you&#8217;re not trying to use someone else&#8217;s code as much as possible, you&#8217;re not doing OOP. I won&#8217;t call this a series, but I would like to showcase some of the great code that is out there waiting to be used. All you [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve used/repurposed several open source projects for use in my code.</p>
<p>If you&#8217;re not trying to use someone else&#8217;s code as much as possible, you&#8217;re not doing OOP.</p>
<p>I won&#8217;t call this a series, but I would like to showcase some of the great code that is out there waiting to be used. All you have to do is drop it in your project.</p>
<p>This time I&#8217;ll point out a framework that I use very frequently:</p>
<p><a href="http://code.google.com/p/json-framework/">json-framework</a> (available on Google Code)</p>
<p>It&#8217;s drop dead simple to use. You give it data, it gives you a Cocoa Object, end of story.</p>
<p>Here is how I use json-framework in some of my code.</p>
<div style="text-align:center;"><img src="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/07/JSON.png" alt="JSON.png" border="0" width="909" height="312" /></div>
<p>The SBJSON class gives you back a NSArray, NSDictionary, or an NSError (pointer reference).</p>
<p>If you need to parse JSON data, check it out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/07/open-source-iphone-json-data/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Voices That Matter</title>
		<link>http://www.theflyingjalapenolives.com/2009/07/voices-that-matter/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/07/voices-that-matter/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 16:30:43 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=473</guid>
		<description><![CDATA[A great opportunity for you to hone your iPhone Dev skills is coming up this fall. Voices That Matter: iPhone Developers Conference is a two day event that will be held in Boston on October 17-18. It will feature talks from some of the most talented and influential iPhone developers, authors, and experts. Speakers include: Bill [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align: left;">
<p style="text-align: left;">A great opportunity for you to hone your iPhone Dev skills is coming up this fall.</p>
<p style="text-align: left;"><a href="http://www.voicesthatmatter.com/iphone2009" target="_self">Voices That Matter: iPhone Developers Conference</a> is a two day event that will be held in Boston on October 17-18. It will feature talks from some of the most talented and influential iPhone developers, authors, and experts.</p>
<p style="text-align: left;"><span style="text-decoration: none;">Speakers include:</span></p>
<p>Bill Dudney<br />
Daniel Jalkut<br />
Fraser Speirs<br />
Marcus Zarra<br />
Aaaron Hillegass<br />
Andy Ihnatko<br />
Jon Rentzsch<br />
Steve Kochan<br />
Lee Barney<br />
Daniel Grover<br />
Bill Licea-Kane<br />
August Trometer<br />
Erik Buck<br />
Erica Sadun<br />
and others&#8230;</p>
<p style="text-align: left;">This conference is designed for developers looking for a succinct, easy way to get up to speed on the specific skills needed to build, test and distribute successful applications for the iPhone and iPod touch.</p>
<p style="text-align: left;">You can attend sessions covering a variety of topics. Choose whatever sessions best fit your individual skill level.</p>
<p style="text-align: left;">Not only will you learn how to build and ship successful iPhone apps from the great speakers, but also have the chance to meet and network with many other passionate developers like yourself.</p>
<p style="text-align: left;">
<p style="text-align: left;">Voices That Matter will help you begin developing iPhone apps as quickly <em>and</em> profitably as possible.</p>
<p style="text-align: left;">
<p style="text-align: left;">I personally am excited to meet the authors who wrote the books from which I learned Cocoa Touch.</p>
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">If you register before September 12th, you get a <strong>$200</strong> discount.</p>
<p style="text-align: left;">You will get an additional <strong>$100</strong> discount, when enter this code: PHBLOG</p>
<p style="text-align: left;">So if you are thinking about attending, make sure you register while you can still get <strong>$300</strong> off.</p>
<p style="text-align: left;">
<p style="text-align: left;">See you there!</p>
</div>
<div style="text-align:center;"><a href="http://www.voicesthatmatter.com/iphone2009"><img class="aligncenter" src="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/07/150x150JoinMeiPhoneVTM-1.jpg" border="0" alt="150x150JoinMeiPhoneVTM-1.jpg" width="150" height="150" /></a></div>
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;"><span style="color: #ffffff;">PlaceHolder</span></p>
<p style="text-align: left;"><span style="color: #ffffff;">PlaceHolder</span></p>
<p style="text-align: left;">Full Disclosure: I am attending this conference as non-paying guest.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/07/voices-that-matter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Help out your NSDates</title>
		<link>http://www.theflyingjalapenolives.com/2009/07/help-out-your-nsdates/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/07/help-out-your-nsdates/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 04:20:07 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=468</guid>
		<description><![CDATA[If you are like me, you really appreciate those nice, neat classes that make your most tedious work a little more bearable. Billy Gray over at zetetic has done just that with his NSDate+Helper category. if allows you to completely forget about NSDateFormatter and easily format dates in just about any format you need. it [...]]]></description>
			<content:encoded><![CDATA[<p>If you are like me, you really appreciate those nice, neat classes that make your most tedious work a little more bearable. </p>
<p><a href="http://www.zetetic.net/about#wgray">Billy Gray</a> over at <a href="http://www.zetetic.net/">zetetic</a> has done just that with his NSDate+Helper category.</p>
<p>if allows you to completely forget about NSDateFormatter and easily format dates in just about any format you need. it also has some nice convenience methods built in to it.</p>
<p>You can find it on <a href="http://github.com/billymeltdown/nsdate-helper/tree/master">here</a> on GitHub.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/07/help-out-your-nsdates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Private Properties</title>
		<link>http://www.theflyingjalapenolives.com/2009/07/private-properties/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/07/private-properties/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 19:40:05 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=459</guid>
		<description><![CDATA[Objective-C 2.0 properties are pretty useful. They not only save you time, but also help &#8220;automate&#8221; memory management on the iPhone. They save you from screwing up your accessors. Another benefit, is the orthogonal relationship with dot notation. Dot notation short hand makes it extremely quick to change the state of an ivar with minimal [...]]]></description>
			<content:encoded><![CDATA[<p>Objective-C 2.0 properties are pretty useful.</p>
<p>They not only save you time, but also help &#8220;automate&#8221; memory management on the iPhone. They save you from screwing up your accessors.</p>
<p>Another benefit, is the orthogonal relationship with dot notation. Dot notation short hand makes it extremely quick to change the state of an ivar with minimal keystrokes.</p>
<p>There are (too) many debates about whether this syntax is &#8220;ugly&#8221;, &#8220;tacked on&#8221;, etc… This <a href="http://eschatologist.net/blog/?p=160">post</a> makes a great case for using dot notation to differentiate the intent of your code.</p>
<p>In fact, properties used in concert with dot notation are so convenient that there is little excuse to ever access instance variables directly. Another bonus is the &#8220;automatic&#8221; memory management. Well as automatic as you can expect in a reference counting situation.</p>
<p>You may be opposed to creating a property for an ivar you want to be private since doing so allows unrestricted access. This creates an encapsulation problem, but one that is easily circumvented with another Cocoa trick: anonymous categories.</p>
<p>By declaring your private property within an anonymous category in the implementation file, you effectively hide it from other classes.</p>
<p>It is still true, that you can peek in the implementation and find these <em>hidden</em> properties. But it will be readily apparent to you, or anyone else, that they should be left alone since they reside within the implementation file.</p>
<p>I use this technique to clean up my interface files (along with placing private methods in the category as well). This gives your classes a nice, neat, and more importantly, easy-to-understand interface.</p>
<p>Another issue is when you need to react to state changes of an ivar. This can be mitigated using KVO. By observing properties, you can react easily such changes.</p>
<p>Do you use dot notation or do stick with brackets? Do you create properties for all of your ivars or do you prefer to handle their memory management in the implementation?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/07/private-properties/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Getting Bored Vs. Getting Done</title>
		<link>http://www.theflyingjalapenolives.com/2009/07/getting-bored-vs-getting-done/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/07/getting-bored-vs-getting-done/#comments</comments>
		<pubDate>Fri, 10 Jul 2009 10:00:32 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[productivity]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=444</guid>
		<description><![CDATA[When you begin a new project, you always begin with an immense amount of passion. You work diligently, economically, and with sharp focus. Such ambition, however, can quickly subside after a few snags or if monotony begins to set in. Unlike those that work in a development shop with several employees, we may have no [...]]]></description>
			<content:encoded><![CDATA[<p>When you begin a new project, you always begin with an immense amount of passion. You work diligently, economically, and with sharp focus.</p>
<p>Such ambition, however, can quickly subside after a few snags or if monotony begins to set in.</p>
<p>Unlike those that work in a development shop with several employees, we may have no one to push us but ourselves. As an indy developer, you not only need to be focused and regimented, but also must find ways to maintain your sanity.</p>
<p>A common solution adopted my man developers is to work on more than one project at a time. Starting a new project can feel like a mini-vacation. You get to solve new and interesting problems making work less like work (the way it should be).</p>
<p>Unfortunately, many of us go on &#8220;permanent vacations&#8221; (<a href="http://en.wikipedia.org/wiki/Aerosmith">Aerosmith</a> pun intended). It is a seductive trap to fall into. The path to indy success is littered with the many carcasses of unfinished projects.</p>
<p>It is a fine balance. On one hand, you need to focus and work hard to push out a product. On the other, burning yourself out can be difficult, if not impossible to recover from, emotionally <em>and</em> financially. It is far better to distract yourself for a few days with a side project than to open yourself to mental and financial ruin .</p>
<p>Like everything else you do as a <a href="http://en.wikipedia.org/wiki/Micro_ISV">micro-ISV</a>, you need to police yourself (you are &#8220;independent&#8221; after all). Use iCal and schedule yourself a &#8220;2 day break&#8221; to work on another project.</p>
<p>Try to prevent boredom from setting in, in the first place. Make sure you outline discrete tasks and complete them one at a time. Completion is a reward that does not receive enough credit.</p>
<p>One tool I like to use is <a href="http://scrumy.com/">Scrumy</a>. It is very easy to visualize your progress on individual tasks (Note: this is a <a href="http://en.wikipedia.org/wiki/Scrum_(development)">scrum</a> web service, but you don&#8217;t need to be completely versed in scrum to use it)</p>
<p>Another great tip from <a href="http://mattgemmell.com/">Matt Gemmell</a> (via the <a href="http://www.mac-developer-network.com/shows/podcasts/mdnshow/mdn002/">MDN Show</a>) is to create new components in a blank Xcode project. This allows you to focus on the task at hand and not let the rest of the project to &#8220;weigh&#8221; you down. There are other benefits as well which you can get from listening <a href="http://media.libsyn.com/media/mdn/mdnshow002.m4a">here</a>.</p>
<p>What tips do you have for staying focused? How many projects can you successfully juggle and still make concrete progress? Let me know down below (I like cheap rhymes as well as puns).</p>
<p>Edited: To correct Matt Gemmell&#8217;s last name. How I spelled that wrong after hearing his theme song, I&#8217;ll never know.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/07/getting-bored-vs-getting-done/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
<enclosure url="http://media.libsyn.com/media/mdn/mdnshow002.m4a" length="75747840" type="audio/x-m4a" />
		</item>
		<item>
		<title>New Dev Machine In The Mail</title>
		<link>http://www.theflyingjalapenolives.com/2009/07/new-dev-machine-in-the-mail/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/07/new-dev-machine-in-the-mail/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 22:23:14 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[MacBook Pro]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=448</guid>
		<description><![CDATA[I sat down at the local Best Buy (unfortunately no local Apple Stores until I move back to Philly) and compared both the 15&#8243; and 17&#8243; MacBook Pros . I currently work on a 13&#8243; MacBook, so the 15&#8243; would definitely be a step up. Extra screen space is not just welcome, it is needed. [...]]]></description>
			<content:encoded><![CDATA[<p>I sat down at the local Best Buy (unfortunately no local Apple Stores until I move back to Philly) and compared both the 15&#8243; and 17&#8243; MacBook Pros .</p>
<p>I currently work on a 13&#8243; MacBook, so the 15&#8243; would definitely be a step up. Extra screen space is not just welcome, it is needed. Although my MacBook is ultra-mobile, I could not handle the 13&#8243; MacBook Pro anymore for development.</p>
<p>Instantly I realized that the MacBook Pro 15&#8243; is a great balance between productivity and mobility.</p>
<p>The 17&#8243; model is a different planet however. Xcode wasn&#8217;t installed on the demo machine, but I opened many application windows to help imagine my workflow.</p>
<p>The extra 2&#8243; PLUS increased resolution makes the 17&#8243; screen enormous by comparison. Where the 15&#8243; feels like a laptop with a bigger LED, the 17&#8243; is a <em>workspace</em> (to quote someone on some forum, I can&#8217;t remember quite where).</p>
<p>I couldn&#8217;t resist. I finally settled on the 17&#8243; model.</p>
<p>I use Spaces heavily in my typical workflow. My workspace divided into 4 spaces, which really optimizes my screen real estate. I think I may be able to cut that down to just 2 Spaces with the 17&#8243; (possibly just 1).</p>
<p>I&#8217;m not terribly concerned about the weight. it really isn&#8217;t that much bigger or heavier than the 15&#8243; model. Both models are significantly bigger than my current MacBook and will require a new &#8220;wardrobe&#8221; regardless.</p>
<p>I did think long and hard about getting the 15&#8243; and an external monitor. However, my work patterns aren&#8217;t set enough. I work mostly at home, but also coffee shops. I never know where I&#8217;ll be. I may also begin renting a workspace rather soon (<a href="http://www.indyhall.org/">indy hall</a>).</p>
<p>My thinking is the 17&#8243; machine best fits my unpredictability <em>right now</em>. I can worry about later when it comes. Maybe that is short sighted, but work only ever gets done NOW, nothing ever gets done later (but thats another post in itself).</p>
<p>Now if my shipment can ever make it out of <span style="text-decoration: line-through;">Shanghai</span> Anchorage.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/07/new-dev-machine-in-the-mail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Filtering UITableViews: Deleting Multiple UITableViewCells with Animation</title>
		<link>http://www.theflyingjalapenolives.com/2009/06/filtering-uitableviews-deleting-multiple-uitableviewcells-with-animation/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/06/filtering-uitableviews-deleting-multiple-uitableviewcells-with-animation/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 10:00:05 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[UITableView]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=417</guid>
		<description><![CDATA[If you have done any iPhone development, you are already intimately familiar with table views. They are an integral part of UIKit. They are highly flexible and customizable. However, making table views work smoothly with anything but a small, simple, static data set can be trying, to say the least. Many Cocoa developers have come [...]]]></description>
			<content:encoded><![CDATA[<p>If you have done any iPhone development, you are already intimately familiar with table views. They are an integral part of UIKit. They are highly flexible and customizable.</p>
<p>However, making table views work smoothly with anything but a small, simple, static data set can be trying, to say the least.</p>
<p>Many Cocoa developers have come up with solutions to cope with <a href="http://blog.atebits.com/2008/12/fast-scrolling-in-tweetie-with-uitableview/">scrolling</a> <a href="http://blog.coriolis.ch/2009/05/04/increase-the-responsiveness-of-your-uitableviews/">performance</a> issues, <a href="http://cocoawithlove.com/2008/12/heterogeneous-cells-in.html">abstracting</a> <a href="http://bill.dudney.net/roller/objc/entry/uitableview_from_a_nib_file">cell</a> content,  creating <a href="http://furbo.org/2009/04/30/matt-gallagher-deserves-a-medal/">preference</a> views, adding <a href="http://iphone.zcentric.com/2008/08/26/uiimageview-in-a-custom-cell/">network</a> <a href="http://github.com/joehewitt/three20/tree/master">awareness</a>, etc…</p>
<p>Ideally much of this functionality should have been included in the Apple frameworks. Alas, this is not the case. We must use third party solutions to fill the gaps or &#8220;roll our own&#8221; solutions. Sometimes we need to combine the work of several developers into one class.</p>
<p>Recently, I had to create a network aware table view that also supported filtering with animation. Already having setup a UITableViewController for receiving network data, all that was needed was to filter my data and animate the change. Simple.</p>
<p>Well, not really. If you want to perform that nifty animation that Apple uses when viewing missed calls in the phone app, you will most likely need to make some changes to your current design.</p>
<p>To analyze the problem, lets look at the major components: data model, presentation model, view. We will stay away from code, and look more at the design to accomplish this.</p>
<p>For my typical table views, Matt Gallagher&#8217;s <a href="http://cocoawithlove.com/2008/12/heterogeneous-cells-in.html">solution</a> works fantastic.</p>
<div style="text-align:center;"><img style="border: 0px initial initial;" src="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/06/CellDeletion1.001.png" border="0" alt="CellDeletion1.001.png" width="819" height="614" /></div>
<p>The diagram is a bit simplistic, but illustrative (In reality, we have nested arrays representing sections within the table). There are two arrays, one to hold our model data and one to hold our presentation data. Also note, the structure of the data model does NOT necessarily need to reflect that of the table, but it seems logical to organize this particular set of data in this manner.</p>
<p>We have created a &#8220;Cell Controller&#8221; to manage individual UITableViewCell logic. The UITableViewController now only has the responsibility of creating and destroying these Cell Controllers. This moves the UITableViewController one step closer to adhering to <a href="http://c2.com/cgi/wiki?SingleResponsibilityPrinciple">SRP</a>.</p>
<p>One undesirable aspect of this methodology is the requirement to instantiate every Cell Controller <em>and</em> link it to its model data upfront. In return you receive better flexibility and encapsulation without a noticeable performance loss (at least with the moderate sized data sets I have so far worked with).</p>
<p>So, lets look at our basic algorithm for creating our Cell Controllers:</p>
<ol>
<li>Loop through each dictionary in the model data array.</li>
<li>Create a cell controller.</li>
<li>Add a pointer to the dictionary in the cell controller.</li>
<li>Add the cell controller to the array of cell controllers.</li>
</ol>
<p>This approach works well for static tables and it is easily adapted for network aware tables. For static tables, you set up your relationships once, and your done. For a networked table, you must add a new object to handle network activity.  Then they can communicate through any combination of notifications, KVO, and delegate methods.</p>
<div style="text-align:center;"><img style="border: 0px initial initial;" src="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/06/CellDeletion2.002.png" border="0" alt="CellDeletion2.002.png" width="819" height="614" /></div>
<p>This is pretty basic, but it is nice to see the relationships laid out.</p>
<p>Now we need to modify our approach to handle filtering. We need a way to represent the full data set and any subsets. Two methods of accomplishing this task are:</p>
<ol>
<li>Create separate arrays for each set. One for the full data set and one for the filtered set.</li>
<li>Use a flag to mark filtered results.</li>
</ol>
<p>Flagging is preferable for a two reasons. In reality, the data didn&#8217;t change, we just want to update the presentation. In this case we don&#8217;t want to actually modify our data. Additionally, it is more difficult to track several arrays and which one is the &#8220;real&#8221; data.</p>
<p>As we stated earlier, the presentation model needs changed to display the filtered results. In our previous design, the view controller &#8220;looked&#8221; at the model and created the cell controllers based on the structure of the data. Not much has changed, but now we just need an additional check. So our algorithm could be:</p>
<ol>
<li>Loop through each dictionary in the data model.</li>
<li>If a dictionary has the flag set,
<ul>
<li>Create a cell controller,</li>
</ul>
<ul>
<li>Add a pointer to the dictionary in the cell controller,</li>
</ul>
<ul>
<li>Add the cell controller to the array of cell controllers.</li>
</ul>
</li>
<li>Finally, replace the old (unfiltered) array of cell controllers with the new (filtered) one.</li>
</ol>
<p>As we connect the Cell Controllers to their corresponding model data, we check our flag. If we did not want to animate our deleted cells collapsing, we would be finished.  We need to devise a method tell our table view which cells have been removed (as well as sections).</p>
<p>There are a few ways to accomplish this. In place of the previous algorithm we could do the following:</p>
<ol>
<li>In our view controller, loop through each cell controller in the array.</li>
<li>If a cell controller&#8217;s model dictionary does not have the flag set,
<ul>
<li>Add the cell controller&#8217;s index to an indexPathSet to removed from the array</li>
</ul>
<ul>
<li>Add the cell&#8217;s index path to the array of cell paths to be removed from the table.</li>
</ul>
</li>
<li>Remove the cell controllers from the array of cell controllers.</li>
<li>Remove the table view cells from the UITableView.</li>
</ol>
<p>Not too bad, but we have completely changed our algorithm. Instead of creating an entire new array of cell controllers, we now remove the ones . The motivation behind this, is that we need to give the table view a list of cells to delete. If we had used our previous algorithm, it would have been difficult to produce this list.</p>
<p>We have just one more issue, but you will not discover it until you try to update a remove all the cells in a section and you app crashes. UITableViews do not like empty sections after deletions. So make sure you remove any empty sections as you remove UITableViewCells.</p>
<p>Hopefully this helps some of you get a head start on your table views. We mostly went over design and algorithms which should help you produce your own code and cut down on much of the trial and error that goes into this problem. In a future post, I will include some code as well.</p>
<p>Let me know if you have already coded your own solution to this or are using open source code.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/06/filtering-uitableviews-deleting-multiple-uitableviewcells-with-animation/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Clang GUI front-end</title>
		<link>http://www.theflyingjalapenolives.com/2009/06/clang-gui-front-end/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/06/clang-gui-front-end/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 20:43:42 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/2009/06/clang-gui-front-end/</guid>
		<description><![CDATA[If you want to run Clang from a GUI you can using the tool at this site: http://www.karppinen.fi/analysistool/ Not that the scan-build CLI is that intimidating, but if you have any problems getting reports (I just had an issue with a static library), it may help]]></description>
			<content:encoded><![CDATA[<p>If you want to run Clang from a GUI you can using the tool at this site:</p>
<p>http://www.karppinen.fi/analysistool/</p>
<p>Not that the scan-build CLI is that intimidating, but if you have any problems getting reports (I just had an issue with a static library), it may help</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/06/clang-gui-front-end/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing, Testing…</title>
		<link>http://www.theflyingjalapenolives.com/2009/06/testing-testing%e2%80%a6/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/06/testing-testing%e2%80%a6/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 17:31:22 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=421</guid>
		<description><![CDATA[Now that the 3G s is on its way out along with a new OS, iPhone developers have some new interesting challenges. You can be sure that all iPhones will be running OS 3.0, but we now have 5 devices to deal with, each with 5 different sets of capabilities. If you are like me [...]]]></description>
			<content:encoded><![CDATA[<p>Now that the 3G s is on its way out along with a new OS, iPhone developers have some new interesting challenges.</p>
<p>You can be sure that all iPhones will be running OS 3.0, but we now have 5 devices to deal with, each with 5 different sets of capabilities.</p>
<p>If you are like me and bought an original iPhone on day one, you may have some older devices laying around. You may have even received a free iPod touch with a Mac purchase.</p>
<p>The major problem for us now is not whether voice command or a video camera is present, but the speed and memory of each device. We now develop for the sluggish first-gen iPod touch, as well as for the speedy 3G s. That is a huge performance gap.</p>
<p>Without the ability to test on a few of these, you may not be able to predict how you apps will function for your customers.</p>
<p>With 40 M devices out there, you can&#8217;t ignore the older hardware. There are still millions of original iPhones and iPod touches in the wild.</p>
<p>How will you cope? Maybe you shouldn&#8217;t sell your old iPhone to get a 3G s. Maybe you should search ebay for an extra testing device as others upgrade.</p>
<p>What do you plan on doing to ensure your apps have the highest compatibility?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/06/testing-testing%e2%80%a6/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WWDC thoughts &#8211; AT&amp;T</title>
		<link>http://www.theflyingjalapenolives.com/2009/06/wwdc-thoughts-att/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/06/wwdc-thoughts-att/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 15:47:17 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=413</guid>
		<description><![CDATA[I&#8217;m not at WWDC this year, but in light of the announcements, I figured I would chime in on a few things. I&#8217;ll first get my AT&#38;T hatred out of the way. This isn&#8217;t exactly developer related, but it is annoying enough that I feel compelled to address it. I usually have few complaints about [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m not at WWDC this year, but in light of the announcements, I figured I would chime in on a few things.</p>
<p>I&#8217;ll first get my AT&amp;T hatred out of the way. This isn&#8217;t exactly developer related, but it is annoying enough that I feel compelled to address it.</p>
<p>I usually have few complaints about AT&amp;T. My reception as been good where I live, customer service has been tolerable, and usually don&#8217;t have billing issues. I am not happy with how they gouge for text messaging and internet, but prices aren&#8217;t &#8220;outrageous&#8221;.</p>
<p>But for the first and largest iPhone wireless carrier to be lagging behind the rest of the world is absolutely ridiculous. Their rationale for the MMS delay is like an excuse from a student who didn&#8217;t do his homework. The non-answer on tethering is almost better by comparison.</p>
<p>The real reasoning is likely two-fold. First, I am sure they are contemplating how much they can charge us. The other stems from holding a monopoly on iPhone service. They have no motivation to provide good service to retain their iPhone customers. We would never give up our perfect phones and they know it.</p>
<p>Sadly, Apple is also to blame for creating this type of environment. They may have needed to commit to a single carrier in 2 years ago, to obtain certain network guaranties, but those reasons no longer exist.</p>
<p>Just having Verizon, Sprint, or T-Mobile as potential competitors would scare AT&amp;T enough to force better service and competitive prices. From the sound of things, Apple is more than savvy to this fact. I am optimistic that the AT&amp;T&#8217;s exclusivity contract will soon be coming to a close.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/06/wwdc-thoughts-att/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting started with Key-Value Observing</title>
		<link>http://www.theflyingjalapenolives.com/2009/06/getting-started-with-key-value-observing/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/06/getting-started-with-key-value-observing/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 10:17:47 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[kvo]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=371</guid>
		<description><![CDATA[Getting started in Cocoa can be hard. Just learning the frameworks is a challenge. Once you get to that point, most or your journey still lies ahead. If you were like me, you probably learned a lot about iPhone programming from online tutorials and books. Then one day, after your 16th tutorial and 3rd book, [...]]]></description>
			<content:encoded><![CDATA[<p>Getting started in Cocoa can be hard. Just learning the frameworks is a challenge.</p>
<p>Once you get to that point, most or your journey still lies ahead. If you were like me, you probably learned a lot about iPhone programming from online tutorials and books. Then one day, after your 16th tutorial and 3rd book, you looked around and said, &#8220;Now what?&#8221;</p>
<p>The truth is that technologies like Core Animation, Core Data, and Core Graphics are just tools. They are only a means to an end.</p>
<p>A full toolbox does not make a carpenter good. You still need experience, planning, and vision.</p>
<p>With this in mind, I want to talk about Key-Value Observing. This won&#8217;t be a full coding example, per se, but a discussion of how you may use this tool in your code.</p>
<p>Many readers may know the gist of KVO, as well as KVC and bindings. Although bindings are beyond the scope of this post, we will give a quick definition of keys and Key-Value Coding.</p>
<p>KVC is a technology that allows you to access an instance variable by using a string referred to as a key. So using an example:</p>
<p><img src="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/06/interface.png" border="0" alt="Interface.png" width="479" height="279" /></p>
<p>To access are aptly named dictionary, we can type the two equivalent statements:</p>
<p><img src="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/06/kvc.png" border="0" alt="kvc.png" width="464" height="147" /></p>
<p>They do exactly the same thing, but in KVC we use supply keys using the &#8220;valueForKey:&#8221; method available to all NSObject subclasses.</p>
<p>To set this property we can use either of the following statements:</p>
<p><img src="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/06/kvcgtters.png" border="0" alt="kvcgtters.png" width="481" height="135" /></p>
<p>This can get more complicated with key paths and some other things. If you would like more information, there are some great tutorials available <a href="http://theocacao.com/document.page/161">here</a> and <a href="http://macresearch.org/cocoa_for_scientists_part_xi_the_value_in_keys">here</a>.</p>
<p>Now to KVO. For those who don&#8217;t know, KVO provides a mechanism to receive notifications that an instance variable, has been modified. Of course you know now we will be using keys to do this. First you register as an observer for the key:</p>
<p><img src="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/06/setupobserver.png" border="0" alt="setupobserver.png" width="541" height="196" /></p>
<p>(Note: I won&#8217;t engage in any &#8220;self=[super init]&#8221; talk here)</p>
<p>We simply registered the class to receive notifications about its own instance variable, but we could have easily selected an ivar of another object.</p>
<p>We also have set some options and a context here, but nothing that need be delved into for our discussion.</p>
<p>To receive the notification, we need to implement one method:</p>
<p><img src="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/06/observe.png" border="0" alt="observe.png" width="540" height="196" /></p>
<p>Every time the instance variable is changed, this method will be called automagically.</p>
<p>Now that we have a very, very rudimentary understanding of what KVO (and KVC) are, we can begin to talk about how to use them.</p>
<p>One very common use of KVO is model observation. On <a href="http://stackoverflow.com/">stack overflow</a>, I see many questions like: &#8220;If I have a variable in view controller A, how do I pass it to view controller B?&#8221; Of course the real problem is that we are asking the wrong question.</p>
<p>The right question is: &#8220;How can I get two view controllers to know about changes of a single variable?&#8221;</p>
<p>We know now that we can use KVO. What we want to do is make our views observe our models. By registering view controllers as observers to the model, we can have an unlimited of views showing and/or using the same data. This also gives us well defined MVC boundaries. What&#8217;s more, is that we will write almost no code to accomplish this feat.</p>
<p>As you will read elsewhere, KVO has some (few) disadvantages. The one that sticks out, is that it may make your code harder to debug. This is because it is hard to sometimes tell who is observing who. Otherwise this is a very elegant solution that will eliminate some of your glue code.</p>
<p>If you want to go deeper into Key-Value Observing you can read more <a href="http://www.dribin.org/dave/blog/archives/2008/09/24/proper_kvo_usage/">here</a>, <a href="http://www.mikeash.com/?page=pyblog/key-value-observing-done-right.html">here</a>, <a href="http://www.slideshare.net/sergio.acosta/intro-to-cocoa-kvckvo-and-bindings-presentation">here</a>, and of course you can use Apple&#8217;s <a href="http://developer.apple.com/documentation/Cocoa/Conceptual/KeyValueObserving/index.html">documentation</a>.</p>
<p>What are some uses and patterns of KVO and KVC in your programming?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/06/getting-started-with-key-value-observing/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Cocoa conceptual problems</title>
		<link>http://www.theflyingjalapenolives.com/2009/06/cocoa-conceptual-problems/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/06/cocoa-conceptual-problems/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 10:00:59 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=341</guid>
		<description><![CDATA[After Scott Stevenson put out this question on Twitter and his subsequent blog post, it got me thinking. When I really started digging into Cocoa, I remember staring at UIViewController and UITableViewControler for hours, maybe days. Figuring out what all of those methods did seemed impossible. In retrospect, I can see these classes represent some [...]]]></description>
			<content:encoded><![CDATA[<p>After Scott Stevenson put out this <a href="http://twitter.com/scottstevenson/status/1803057665" target="_self">question</a> on Twitter and his subsequent <a href="http://theocacao.com/document.page/605" target="_self">blog post</a>, it got me thinking. When I really started digging into Cocoa, I remember staring at UIViewController and UITableViewControler for hours, maybe days. Figuring out what all of those methods did seemed impossible.</p>
<p>In retrospect, I can see these classes represent some of the fundamental design patterns used in Cocoa (touch): delegation, composition, protocols, MVC, nibs, memory management, etc&#8230; Once I understood how to use a UITableViewController, I was able to dissect and comprehend the interactions and use of other classes much more easily.</p>
<p>There were many &#8220;ah ha&#8221; moments when learning those concepts. Previous to iPhone programming, I mainly wrote C and machine level code. It wasn&#8217;t my first foray into OOP, but it has been my deepest and most comprehensive.</p>
<p>Learning to write methods that you never actually call yourself was a huge mental hurdle. Splitting class responsibilities according to MVC was logical, but hard to do right (I know, a discussion in itself) the first few times.</p>
<p>Similar to MVC, was memory management. It&#8217;s so easy: alloc(or new or copy)+retain = release+autorelease. But when do you actually release? When should you just set to nil? Should you use the accessor or not? Maybe it is best to just use the assign property. Should I create an autorelease pool? Is it best to just &#8220;leave the object around&#8221; and just handle it if a memory warning pops up. You have a lot of design decisions to make even though the basic premise is simple.</p>
<p>Nibs were simply awesome to layout my views, but learning to hook up the right things and how to use them effectively was no simple task. The outlets and actions themselves weren&#8217;t that confusing. The &#8220;things you don&#8217;t quite have to know until there is a problem&#8221; were hard to get my head around. For example: how to load nibs from other nibs, load UINavigationControllers in UITabBarControllers, what the proxy objects actually are, which controller classes to include in the nib, what &#8220;really&#8221; happens when objects are unarchived, realizing that &#8220;initWithCoder:&#8221; is called on classes that are defrosted from a nib, how to load UITableViewCells from nibs, etc&#8230;  There are many intricacies, most of which you never think about until your app doesn&#8217;t work.</p>
<p>After I had some time to think over these problems and Scott&#8217;s question, I came to realize (at least for me), Cocoa just took <em>time</em> to learn. Everyone comes from a different background with a different skill set. Add to that, the size and breadth of Cocoa. It should come as no surprise that everyone has to take there knocks when moving to Cocoa and Objective-C, no matter where there coming from (save Next developers).</p>
<p>So, how to wrap this up? To all of the beginner iPhone and Mac developers: know that you have a mountain to climb. Find information where ever you can. The Cocoa development community is great and there is no shortage of resources. Eventually you will reach the &#8220;critical mass&#8221; of information when you can begin to solve your own problems much more effectively. You will always have more to learn, but will develop an instinct to find what is wrong and begin to ask the right questions.</p>
<p>Is there anything that you think is missing from Scott&#8217;s list or that I glossed over? Let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/06/cocoa-conceptual-problems/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Stack Overflow Addiction</title>
		<link>http://www.theflyingjalapenolives.com/2009/05/stack-overflow-addiction/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/05/stack-overflow-addiction/#comments</comments>
		<pubDate>Fri, 29 May 2009 18:47:36 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[stackoverflow]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=309</guid>
		<description><![CDATA[Until recently I have been, for lack of a better work, selfish in my use of Stack Overflow. I asked many questions, but but gave few answers. I was a good citizen in that I at least searched for answers before I posted a new question. If i did post an answer, It was usually [...]]]></description>
			<content:encoded><![CDATA[<p>Until recently I have been, for lack of a better work, selfish in my use of <a href="http://stackoverflow.com/" target="_self">Stack Overflow.</a> I asked many questions, but but gave few answers. I was a good citizen in that I at least searched for answers before I posted a new question. If i did post an answer, It was usually in response to my own questions.</p>
<p>For the past few weeks, my routine has been quite the opposite. I answer as many questions as time allows. To better keep up on the latest questions, I keep a RSS feed of Stack Overflow tags &#8220;iPhone&#8221; and  &#8220;iPhone SDK&#8221; in Safari&#8217;s bookmark bar.</p>
<p>I was reluctant to answer questions because of my (perceived) lack of knowledge. I have since discovered that I am able to help much more often than I thought. It feels good to contribute to the community that has helped me so much.</p>
<p>Even better, answering questions helps me more than asking them. Thinking through the problems of others allows me evaluate my skill set and identify any non-obvious holes in my knowledge.</p>
<p>I highly encourage everyone to get involved in the community. Even if you&#8217;re a beginner, you will find you know more than you think. It will only help you improve your problem solving skills and make a few friends in the process.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/05/stack-overflow-addiction/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Moving version control out of Xcode and into Cornerstone</title>
		<link>http://www.theflyingjalapenolives.com/2009/05/moving-version-control-out-of-xcode-and-into-cornerstone/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/05/moving-version-control-out-of-xcode-and-into-cornerstone/#comments</comments>
		<pubDate>Tue, 26 May 2009 11:00:23 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=295</guid>
		<description><![CDATA[I have been using Xcode&#8217;s integrated subversion SCM for several months (against the advice of several articles). Overall, it has been pretty painless. Xcode has a simple set of svn functions, but meets 90% of my needs.  The biggest advantage is the integration within the IDE.  Moreover, if I needed advanced functionality, I could always [...]]]></description>
			<content:encoded><![CDATA[<p>I have been using Xcode&#8217;s integrated <a href="http://subversion.tigris.org/" target="_self">subversion</a> SCM for several months (against the advice of several articles). Overall, it has been pretty painless. Xcode has a simple set of svn functions, but meets 90% of my needs.  The biggest advantage is the integration within the IDE.  Moreover, if I needed advanced functionality, I could always go to the command line. So, I lived, and loved, with Xcode over the next few months.</p>
<p>I originally decided to try Xcode after some experience with  <a href="http://versionsapp.com/" target="_self">Versions.app</a>, my first SCM experience. Versions is a collaboration between <a href="http://www.picodev.com/" target="_self">Pico</a> and <a href="http://www.madebysofa.com/" target="_self">Sofa</a>. I used Versions during it&#8217;s beta. At this time, I was painfully inexperienced with version control. I frequently went back and forth between Versions and Terminal, picking up what I needed along the way.</p>
<p>Eventually, when Versions went 1.0, I made the decision to <em>not</em> purchase it. I could never get Versions to display all of the change logs of a working copy if it hadn&#8217;t existed locally since the creation of the repository. As I said, I wasn&#8217;t the best with svn at this time. I probably just couldn&#8217;t find the control to download the logs from the repository, but it shouldn&#8217;t have been that difficult nonetheless. This was something that should have happened &#8220;automagically&#8221;.  This and a few other quirks didn&#8217;t make a good value (for me) over Xcode and the command line.</p>
<p>Flash forward to last week when my repository host, <a href="http://beanstalkapp.com/" target="_self">beanstalk</a>, sent a notice they were upgrading all repositories to subversion 1.5. This influenced me to look into upgrading my client side software to use 1.5 as well. At first, I figured I would just patch Xcode to use 1.5, but  that seemed unnecessarily complicated. So once again, I decided to try an external solution, but armed with a much better understanding of my work flow and subversion itself.</p>
<p>I downloaded new demos of both Versions and <a href="http://www.zennaware.com/cornerstone/" target="_self">Cornerstone</a>. I had briefly looked at <a href="http://www.zennaware.com/" target="_self">Zennaware</a>&#8216;s offering before, but this time I was able to examine it much more thoroughly. I setup Cornerstone first, and to be honest, I haven&#8217;t looked back.</p>
<p>Before I move on, this seems like a good place to get 2 (related) points of contention out of the way: DVCS (Git and Mercurial) and SCM GUIs.</p>
<p>I&#8217;ll address my need for a GUI first: I want a seamless and easy way to perform my version control. I already perform enough tasks extraneous to actual programming. I want this part of my workflow to be &#8220;point and click&#8221;, allowing me to focus more on delivering code.</p>
<p>As far as DVCS: I realize that Git is the new &#8220;hotness&#8221;. At this time, I operate primarily as a solo shop. Additionally, I now know how to get around svn just fine. For me there is no overwhelming advantage that switching to Git would provide <strong>at this time</strong>. I am almost never working out of internet range and I don&#8217;t collaborate very often. Moreover, there is no &#8220;great&#8221; GUI for Git <em>yet</em>. I am sure one is eminent, taking in account GitHub as an example of Git&#8217;s growth in both marketshare and mindshare.</p>
<p>Back to Cornerstone.</p>
<p>I really like its layout. It matches up extremely well with my &#8220;mental&#8221; picture version control.</p>
<p>The side bar is split: working copies up top, and repositories on the bottom. This is in contrast to Versions where the repositories are like &#8220;folders&#8221; and the working copies are subfolders.</p>
<p style="text-align: center;"><a href="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/05/voila_capture2.png"><img class="aligncenter size-large wp-image-318" title="voila_capture2" src="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/05/voila_capture2-1024x713.png" alt="voila_capture2" width="819" height="570" /></a></p>
<p>The main window contains a file browser for the selected repository or working copy. When I pressed the space bar, I got a nice surprise: Quick Look. Located along the top of the main window are quick filters for &#8220;changed&#8221;, &#8220;modified&#8221;, &#8220;unversioned&#8221;, etc&#8230; These make it super easy to filter a long list of files.</p>
<p style="text-align: center;"><a href="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/05/voila_capture5.png"><img class="aligncenter size-large wp-image-319" title="voila_capture5" src="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/05/voila_capture5-1024x300.png" alt="voila_capture5" width="819" height="240" /></a></p>
<p>When you make a commit, Cornerstone automatically asks if you want to begin versioning any files not added to the repository. Sweet.</p>
<p>By clicking a checkbox, you can automatically setup your repository with the default trunk, branches, and tags folders. You can also set ignore files just as easy.</p>
<p>Corenerstone has an entirely different window devoted to  file history. Simply select one or more files within the file browser and click the history button. You are then presented with a graphical timeline with a &#8220;node&#8221; for each past revision. Select any 2 nodes and they are opened for file comparison.</p>
<p style="text-align: center;"><a href="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/05/voila_capture6.png"><img class="aligncenter size-large wp-image-320" title="voila_capture6" src="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/05/voila_capture6-1024x713.png" alt="voila_capture6" width="819" height="570" /></a></p>
<p>This presentation does have some drawbacks. Primarily, it just doesn&#8217;t scale well. Each file has its own timeline at the top of the window. This works well for a few files, as you can see. View many, though, can be cumbersome. It is possible to view a timeline for just the root folder of the repository which cleans it up a bit, but this wasn&#8217;t an immediately obvious solution.</p>
<p>Corenerstone has a decent comaparison engine built into the app. Versions performs its comparisons by using an external app of your choosing. I know many users love this because it enables them to use their favorite comparison tool. Personally, I prefer the speed of Cornerstone&#8217;s implementation. With a single click, I can compare any local changes to the latest revision.</p>
<p>When packing a large amount of information in to a GUI, some items will become focal points, while others will move to the periphery. For me, it appears as if commit messages and change sets are presented as second class citizens in this Corenerstone&#8217;s UI. They are regulated to a small info pane whose purpose wasn&#8217;t readily apparent. Versions, on the other hand, has the change sets and commit messages beautifully laid out in a seperate view.</p>
<p style="text-align: center;"><a href="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/05/voila_capture7.png"><img class="aligncenter size-full wp-image-321" title="voila_capture7" src="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/05/voila_capture7.png" alt="voila_capture7" width="334" height="422" /></a></p>
<p>I imagine that when I stop working on a 13&#8243; Macbook and have a larger 24&#8243; desktop, it won&#8217;t matter so much. This will also allow me to evaluate Cornerstone&#8217;s ability to switch froma an all-in-one mode to a multi-window mode, ala Xcode. With a large and/or multi-monitor setup, these issues will likely disappear. My interface complaints are mostly my fault for developing on a contrained consumer laptop.</p>
<p>Speaking of hardware limitations, Cornerstone did not seem to be bothered by the specs of my development machine. Not that you would expect a subversion application to give a modern Mac any such issues. All the same, I haven&#8217;t noticed any interface delays, network hangs, excessive disk access, or any other performance problems. This clearly demonstrates the skill, care, and time investment of the developer, who from my understanding operates a single-man shop.</p>
<p>Cornerstone&#8217;s interpretation of the svn domain is the most solid out of the apps I have seen (although I admit to not diving as deeply into all other solutions). I am currently running Cornerstone in its demo period and plan to purchase it soon. It has definitely made subversion painless to use while packing a fair amount of power into its interface. If you are seeking a powerful GUI for subversion, Cornerstone is the best you can get.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/05/moving-version-control-out-of-xcode-and-into-cornerstone/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Game Tutorials</title>
		<link>http://www.theflyingjalapenolives.com/2009/05/game-tutorials/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/05/game-tutorials/#comments</comments>
		<pubDate>Fri, 22 May 2009 18:38:29 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=314</guid>
		<description><![CDATA[In case you&#8217;ve been missing out, there are 2 really great tutorial series out in the blogeshere. First, is an excellent series on cocos2d for the iPhone by Keith Peters at BIT-101: cocos2d Tutorials &#8211; TOC Second, is an in depth look at at OpenGL ES for the iPhone at Jeff LaMarche&#8217;s (of &#8220;Beginning iPhone [...]]]></description>
			<content:encoded><![CDATA[<p>In case you&#8217;ve been missing out, there are 2 really great tutorial series out in the blogeshere.</p>
<p>First, is an excellent series on cocos2d for the iPhone by Keith Peters at BIT-101:</p>
<p><a href="http://www.bit-101.com/blog/?p=2138">cocos2d Tutorials &#8211; TOC</a></p>
<p><a href="http://www.bit-101.com/blog/?p=2138"></a>Second, is an in depth look at at OpenGL ES for the iPhone at Jeff LaMarche&#8217;s (of &#8220;Beginning iPhone Development&#8221; fame) aptly named iPhone Development Blog:</p>
<p><a href="http://iphonedevelopment.blogspot.com/2009/04/opengl-es-from-ground-up-part-1-basic.html">OpenGL ES From the Ground Up, Part 1: Basic Concepts</a></p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/05/game-tutorials/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>My Greatest iPhone Development Resource</title>
		<link>http://www.theflyingjalapenolives.com/2009/05/my-greatest-iphone-development-resource/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/05/my-greatest-iphone-development-resource/#comments</comments>
		<pubDate>Wed, 20 May 2009 11:10:51 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=256</guid>
		<description><![CDATA[Your ability to find, qualify, and digest development information is extremely important. Whether you are a new developer of a seasoned vet, you are always learning. You need to find information fast and effectively. When you have a question, it is easy to type it into a search engine and find an answer. Sometimes, though, you don&#8217;t know [...]]]></description>
			<content:encoded><![CDATA[<p>Your ability to find, qualify, and digest development information is extremely important. Whether you are a new developer of a seasoned vet, you are always learning. You need to find information fast and effectively.</p>
<p>When you have a question, it is easy to type it into a search engine and find an answer. Sometimes, though, you <strong>don&#8217;t</strong> know what question to ask.</p>
<p>Enter development blogs. A steady stream of information, tips, tricks, tutorials and great open discussion. I subscribe to over 50 feeds from development blogs using Google Reader as my RSS reader of choice.</p>
<p>Besides &#8220;doing&#8221;, this is the best learning tool I have. I consistently read articles addressing problems I haven&#8217;t thought of yet. I find sample code I can stock pile now and use later. The Cocoa community is extremely helpful and talented.</p>
<p>Most developers carry their tedious attention to detail into their blog writing. This leads to infrequent, yet highly polished and information rich posts which are easily scoured in your feed reader.</p>
<p>So, what feeds do I read?</p>
<p>Below is the list of web sites of who I keep in Google Reader (in no particular order).</p>
<p>I&#8217;m sure I left out some, so let me know if you have any good blogs that should be on my list.</p>
<p><a href="http://cocoasamurai.blogspot.com/">Cocoa Samurai »</a></p>
<p><a href="http://cocoaconvert.net/">Cocoa Convert »</a></p>
<p><a href="http://blog.nottoobadsoftware.com/">NotTooBad Blogging »</a></p>
<p><a href="http://revetkn.com/">revetkn.com »</a></p>
<p><a href="http://www.manton.org/">Manton Reece »</a></p>
<p><a href="http://www.71squared.co.uk/">71² »</a></p>
<p><a href="http://blog.jayway.com/">Jayway Team Blog »</a></p>
<p><a href="http://blog.jayway.com/"></a><a href="http://toxicsoftware.com/">toxicsoftware.com »</a></p>
<p><a href="http://www.uiandus.com/">UI and us »</a></p>
<p><a href="http://www.47hats.com/">47 Hats »</a></p>
<p><a href="http://www.softwarebyrob.com/">Software by Rob »</a></p>
<p><a href="http://www.markj.net/">markjnet »</a></p>
<p><a href="http://www.joelonsoftware.com/">Joel on Software »</a></p>
<p><a href="http://iPhoneIncubator.com/blog">iPhone Development Blog »</a></p>
<p><a href="http://inessential.com/">inessential.com »</a></p>
<p><a href="http://www.bit-101.com/blog">BIT-101 Blog »</a></p>
<p><a href="http://www.bit-101.com/blog"></a><a href="http://www.macfanatic.net/blog">Mac Fanatic »</a></p>
<p><a href="http://www.codinghorror.com/blog/">Coding Horror »</a></p>
<p><a href="http://speirs.org/">Fraser Speirs »</a></p>
<p><a href="http://theocacao.com/">Theobroma Cacao »</a></p>
<p><a href="http://blog.cocoia.com/">Cocoia Blog »</a></p>
<p><a href="http://MacDeveloperTips.com/">Mac Developer Tips »</a></p>
<p><a href="http://iphonedevelopment.blogspot.com/">iPhone Development »</a></p>
<p><a href="http://iphonedevelopment.blogspot.com/"></a><a href="http://howtomakeiphoneapps.com/">How to Make iPhone Apps »</a></p>
<p><a href="http://cocoawithlove.com/">Cocoa with Love »</a></p>
<p><a href="http://iPhoneDeveloperTips.com/">iPhone Developer Tips »</a></p>
<p><a href="http://www.cimgf.com/">Cocoa Is My Girlfriend »</a></p>
<p><a href="http://iphonedevelopmentbits.com/">iphonedevelopmentbits »</a></p>
<p><a href="http://www.iphonesdkarticles.com/">iPhone SDK Articles »</a></p>
<p><a href="http://mauvilasoftware.com/iphone_software_development/">iPhone Software Development »</a></p>
<p><a href="http://www.fieryrobot.com/blog">Fiery Robot! »</a></p>
<p><a href="http://icodeblog.com/">iCodeBlog »</a></p>
<p><a href="http://bill.dudney.net/roller/objc/">PrEV »</a></p>
<p><a href="http://trailsinthesand.com/">Trails in the Sand »</a></p>
<p><a href="http://www.mobileorchard.com/">Mobile Orchard »</a></p>
<p><a href="http://www.red-sweater.com/blog">Red Sweater Blog »</a></p>
<p><a href="http://blog.coriolis.ch/">NSCoriolisBlog »</a></p>
<p><a href="http://benchatelain.com/">Ben&#8217;s Dev Blog »</a></p>
<p><a href="http://devblog.brautaset.org/">Hot Chocolate »</a></p>
<p><a href="http://dannyg.com/iapps/Blog/Blog.html">iApps Development Blog »</a></p>
<p><a href="http://memo.tv/taxonomy/term/266/0">memo.tv &#8211; iPhone »</a></p>
<p><a href="http://www.ninthdivision.com/">Ninth Division LLC »</a></p>
<p><a href="http://www.gehacktes.net/">coders »</a></p>
<p><a href="http://iphone.zcentric.com/">Iphone Noob »</a></p>
<p><a href="http://shanecrawford.org/">shanecrawford.org »</a></p>
<p><a href="http://www.friday.com/bbum">bbum&#8217;s weblog-o-mat »</a></p>
<p><a href="http://www.binarymethod.com/index.php">BinaryMethod »</a></p>
<p><a href="http://www.mikeash.com/?page=pyblog/">NSBlog »</a></p>
<p><a href="http://pieteromvlee.net/blog">Pieter Omvlee&#8217;s Blog »</a></p>
<p><a href="http://dubroy.com/blog">Dubroy.com/blog »</a></p>
<p><a href="http://kickingbear.com/blog">Kickingbear »</a></p>
<p><a href="http://www.degutis.org/">Degutis.org »</a></p>
<p><a href="http://blog.evandavey.com/">Tech Thought »</a></p>
<p><a href="http://boredzo.org/blog">Domain of the Bored »</a></p>
<p><a href="http://waffle.wootest.net/">Waffle »</a></p>
<p><a href="http://gusmueller.com/blog/">Gus&#8217;s weblog, adventures in Flying Meat. »</a></p>
<p><a href="http://stevenf.tumblr.com/">stevenf.com »</a></p>
<p><a href="http://www.dribin.org/dave/blog/">Dave Dribin&#8217;s Blog »</a></p>
<p><a href="http://blog.clickablebliss.com/">Clickable Bliss Blog »</a></p>
<p><a href="http://fromaremotevillage.blogspot.com/">From a remote village »</a></p>
<p><a href="http://rentzsch.com/">rentzsch.com: Tales from the Red Shed »</a></p>
<p><a href="http://blog.mbcharbonneau.com/">Marc Charbonneau&#8217;s Blog »</a></p>
<p><a href="http://wilshipley.com/blog/">Call Me Fishmeal. »</a></p>
<p><a href="http://lapcatsoftware.com/blog">Lap Cat Software Blog »</a></p>
<p><a href="http://mattgemmell.com/">Matt Legend Gemmell »</a></p>
<p><a href="http://mjtsai.com/blog">Michael Tsai&#8217;s Weblog »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/05/my-greatest-iphone-development-resource/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>I found Three20 and my lost weekend</title>
		<link>http://www.theflyingjalapenolives.com/2009/05/i-found-three20-and-my-lost-weekend/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/05/i-found-three20-and-my-lost-weekend/#comments</comments>
		<pubDate>Mon, 18 May 2009 10:13:24 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=282</guid>
		<description><![CDATA[I&#8217;m currently involved in a project where I need to load some photos from the web and I need a UITableview with some thumbnails and with Photo.app navigation. Enter Three20. Three20 is a framework written by Joe Hewitt that abstracts much of the functionality of UITableViews, UITableViewCells, and networking away from the programmer. The way the components [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently involved in a project where I need to load some photos from the web and I need a UITableview with some thumbnails and with Photo.app navigation.</p>
<p>Enter <a href="http://github.com/joehewitt/three20/" target="_blank">Three20</a>. Three20 is a framework written by <a href="http://joehewitt.com/" target="_blank">Joe Hewitt</a> that abstracts much of the functionality of UITableViews, UITableViewCells, and networking away from the programmer. The way the components are abstracted is clearly MVC, but done in a more &#8220;web application&#8221; way. I believe Joe commented in his recent interview on the Mobile Orchard podcast.</p>
<p>When you download Three20, there is a nice sample app included with just about everything you can create. This provides a great overview of what is included within the framework.</p>
<p>The functionality of the UIKit classes has been abstracted to the point that you never really touch the usual delegate and datasource methods. You create view and controller objects through a completely different programmatic interface.</p>
<p>You can create tableviews and photo galleries very easily by just adding creating a data source array and the view classes basically take care of themselves. This was very cleanly done. For instance, to determine the type of cell that will appear in your table, you populate your datasource with a specific type of *Field object. A TTTextTableField produces a text cell, a TTSwitchTableField yields a cell with a switch, etc&#8230;</p>
<p>To create a Photo Browser View and/or a Photo Thumb View is slightly more difficult. You will need to define your own Photo Datasource class. In the example code, there is a mock photosource class setup that provides a good starting framework.</p>
<p>Unfortunately, the requirements for my current project didn&#8217;t allow me to use the Three20 classes as is. I had to dig a little deeper into the framework and modify it to suit my needs.</p>
<p>When you dive into the code, you quickly find all the Cocoa classes have not been merely subclassed, but have had there behaviors completely altered. I could use the basic, high-level classes, but I could not understand exactly how they worked behind the scenes. I needed to subclass the TTThumbViewController and I had to understand what I needed change to make it work for me.</p>
<p>To be frank, it is complicated. So complicated, I considered giving up subclassing it several times during my adventure. As I began to decipher the interconnections and roles of different objects, some design patterns began to fall out. An interesting note is Three20&#8242;s use of delegates. There are many delegates and controllers and controller delegates and datasource delegates, etc&#8230;  This was one of the main reasons it was hard for me to fully comprehend the framework. I literally had to pull a notebook out and start drawing the connections between the classes.</p>
<p>After a few hours,  I felt I had a decent understanding of the underpinnings of the relevant classes which I needed to alter. I began to make my construct my classes and finally accomplished my goal of customizing the thumbs view to the following:</p>
<p style="text-align: center;"><a href="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/05/picture-4.png"><img class="size-full wp-image-286 aligncenter" title="Thumbs Table View" src="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/05/picture-4.png" alt="Thumbs Table View" width="322" height="469" /></a></p>
<p>I know, not very impressive on the surface. What I managed to do was add section support to the TTThumbsViewController. The stock class only supports a single section with no division between the rows of photos. Also, it only supports one photo source per view. I have changed it to allow a photo source per section (Even though it looks like one source, it&#8217;s actually 2 sources with the same data).</p>
<p>It&#8217;s not bug free yet, and [redacted] betas are a little picky. When I get a little more solid, I&#8217;ll see if I can get a fork going on <a href="https://github.com/" target="_blank">GitHub</a> and upload my additions there.</p>
<p>In the end, I think it was worth getting intimate with Three20 to get all of the networking and photo browsing goodness for free.</p>
<p>I encourage everyone to check out <a href="http://github.com/joehewitt/three20/" target="_blank">Three20</a>. It works great for just about anything you want to do. If it was my decision, I would have just changed my design to accommodate the framework and save myself a weekend.</p>
<p>Let me know if any of you have used Three20 and what your experiences were.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/05/i-found-three20-and-my-lost-weekend/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Meet your personal research assistant, Stack Overflow.</title>
		<link>http://www.theflyingjalapenolives.com/2009/05/meet-your-personal-research-assistant-stack-overflow/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/05/meet-your-personal-research-assistant-stack-overflow/#comments</comments>
		<pubDate>Fri, 15 May 2009 16:43:03 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[stackoverflow]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=271</guid>
		<description><![CDATA[If you have any Cocoa touch or Objective-C questions, don&#8217;t just limit yourself to Apple&#8217;s Dev Forums. There is a thriving community of Cocoa developers on Stack Overflow at your disposal. You will find a variety of questions from novice to advanced. Stack Overflow has a policy of &#8220;no stupid questions&#8221;. Which means you won&#8217;t get [...]]]></description>
			<content:encoded><![CDATA[<p>If you have any Cocoa touch or Objective-C questions, don&#8217;t just limit yourself to Apple&#8217;s Dev Forums. There is a thriving community of Cocoa developers on <a href="http://stackoverflow.com/" target="_blank">Stack Overflow</a> at your disposal.</p>
<p>You will find a variety of questions from novice to advanced. Stack Overflow has a policy of &#8220;no stupid questions&#8221;. Which means you won&#8217;t get attacked for asking a &#8220;easy&#8221; question. Jeff Atwood and Joel Spolsky stated on their <a href="http://blog.stackoverflow.com/category/podcasts/" target="_blank">podcast</a> (which is also phenomenal by the way) that they want to be like a programming &#8220;Wikipedia&#8221;. That is why the like and encourage all levels of questions.</p>
<p>Go to Stack Overflow and start posting, commenting, browsing, and, of course, as answering many questions as you can.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/05/meet-your-personal-research-assistant-stack-overflow/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Uh Oh, A Tough App Store Mistake</title>
		<link>http://www.theflyingjalapenolives.com/2009/05/uh-oh-a-tough-app-store-mistake/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/05/uh-oh-a-tough-app-store-mistake/#comments</comments>
		<pubDate>Fri, 15 May 2009 18:59:09 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=213</guid>
		<description><![CDATA[I learned this lesson the hard a way few weeks ago&#8230; http://majicjungle.com/blog/?p=115 If you submit an update to iTunes Connect, do NOT change the available date of the update to a future time. It will remove the current version from the App Store. I did this because I wanted to make sure my update didn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>I learned this lesson the hard a way few weeks ago&#8230;</p>
<p>http://majicjungle.com/blog/?p=115</p>
<p>If you submit an update to iTunes Connect, do NOT change the available date of the update to a future time. It will remove the current version from the App Store.</p>
<p>I did this because I wanted to make sure my update didn&#8217;t get buried in the new releases list. Instead, my app Compounds, was delisted AND removed from the &#8220;New and Notable&#8221; section for the larger part of a day before I noticed.</p>
<p>After I got it re-listed, I immediately checked the New and Notable section to find that Compounds was not back in its place. I understandably panicked, but was more than relieved when it was back the next day. I estimate about a 70% loss in sales fo the day, however.</p>
<p>To make sure you get the best placement for your update:<br />
The day your update passes review, simply log into ITC and change it&#8217;s available date to today. This will ensure that you&#8217;re app will be near the top of the new releases list.</p>
<p>Lesson learned.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/05/uh-oh-a-tough-app-store-mistake/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Cash Rules Everything Around Me&#8230; Tracking My iPhone Benjamins</title>
		<link>http://www.theflyingjalapenolives.com/2009/05/cash-rules-everything-around-me-tracking-my-iphone-benjamins/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/05/cash-rules-everything-around-me-tracking-my-iphone-benjamins/#comments</comments>
		<pubDate>Mon, 11 May 2009 17:40:23 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[finance]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=224</guid>
		<description><![CDATA[As indy developers, we need to track our finances. Most of us can&#8217;t afford to staff an accounting department, so we look for software to fill the gap. We need to track cash from sales of iPhone apps and/or iPhone contracting. I assume most of those reading my blog need both. (Side note: if you&#8217;re [...]]]></description>
			<content:encoded><![CDATA[<p>As indy developers, we need to track our finances. Most of us can&#8217;t afford to staff an accounting department, so we look for software to fill the gap.</p>
<p>We need to track cash from sales of iPhone apps and/or iPhone contracting. I assume most of those reading my blog need both. (Side note: if you&#8217;re not in the iPhone contracting market, get there, another article&#8230;)</p>
<p>We have many contenders fighting for mindshare, loyalty, and sales, from the big boys to the indys. So how do we decide? What is important to us as iPhone developers, software vendors, and contractors?</p>
<p>Like good little programmers, we&#8217;ll logically split our problem into bite size pieces.  Here is what we need:</p>
<ol>
<li>Invoicing</li>
<li>Job Tracking</li>
<li>Project Tracking</li>
<li>Bank Transaction Download or Import</li>
<li>Double Entry Accounting (for tax purposes)</li>
</ol>
<p>When I say project management, I don&#8217;t actually mean how we as developers track our project progress (scrum, agile, issue trackers, etc&#8230;). I am referring to a means to group jobs and invoices under a common &#8220;umbrella&#8221;, not only by customer.</p>
<p>It would seem to me, and to most of the financial software venders that we have three distinct problem sets. The products I have been demoing specialize in a some combination of invoicing, accounting, and/or banking.</p>
<p>This separation of responsibility leads to an additional requirement: exporting and importing data between apps.</p>
<p>I won&#8217;t be doing full blown reviews, there are many available on the interwebs written by better reviewers than I. Instead, I will give a quick impression, some key points, and links.</p>
<p>Without further adieu, a look at the products:</p>
<h3>Invoicing, Accounting, and Banking</h3>
<p><a href="http://quickbooks.intuit.com/product/accounting-software/mac-accounting-software.jsp" target="_blank">Quickbooks</a></p>
<p>Lets get the elephant out of the room first. For me, Intuit&#8217;s offering is overkill. It does everything, with all the flair a professional accountant could ask for. As developers in the digital age, we are not tracking inventory and tend to have few employees and a little office overhead. Our needs are small and I don&#8217;t feel such comprehensive tool is required for most ISVs.</p>
<p><a href="http://www.myob-us.com/accountedge/" target="_blank">AccountEdge</a></p>
<p>MYOB has two relevant products. AccountEdge is poised to compete with Quickbooks. Suffice to say, it is not exactly on my radar.</p>
<p><a href="http://www.myob-us.com/firstedge/" target="_blank">FirstEdge</a></p>
<p>MYOB&#8217;s slimmed down, small business oriented product is much closer to what I am looking for in an accounting app. If you are looking for a solid accounting app with more features than you will ever need, while remaining as simple and Mac like as possible, look no further. FirstEdge gets high marks from the usual review sites. It&#8217;s not as complicated as AccountEdge or Quickbooks, but it&#8217;s still very &#8220;formal&#8221; in the way it handles your data. I know many consider this a feature, but with my limited knowledge of accounting, I think we can go even leaner.</p>
<p><a href="http://www.jumsoft.com/money/" target="_blank">Money</a></p>
<p>This app by Jumsoft is really nice. It has that familiar iTunes / Mail.app feel. It&#8217;s a nice one window interface with a sidebar used for selecting and presenting relevant data. It has decent reporting as well.</p>
<p>It has a template editor for invoices to make you look more professional. One strange quirk of Money is splitting invoice templates between &#8220;Styles&#8221; and &#8220;Layouts&#8221;. Styles are non-editable preloaded templates and Layouts are templates you can edit. The downside? You can&#8217;t use Money&#8217;s professional Styles as a starting point for your own templates. Just weird.</p>
<p>Importing bank data is also not automatic. It does include a &#8220;Web Bank&#8221; option which launches your bank&#8217;s website (in Webkit) within the app, but when I tried downloading transactions this way, it didn&#8217;t work. This may have something to do with the Safari 4 beta or not. Bank connectivity is a definite sticking point in an otherwise great app.</p>
<h3>Accounting &amp; Banking</h3>
<p><a href="http://www.iggsoftware.com/ibank/" target="_blank">iBank</a></p>
<p>Sure it has a cliché OS X name, but it is a great app. It is similar to Money, minus invoices, plus direct bank downloads. Additionally, IGG Software built in automatic connectivity with their Accounting/Invoice app, iBiz.  This is a great selling point.</p>
<p>IGG  has positioned iBank as accounting and banking with iBiz handling invoicing (with a bit of Accounts Receivable). This puts your Accounts Receivable (money coming in) within a separate app from your actual bank accounts and Accounts Payable (bills). This presents an interesting division of responsibility some may like and some may not. A downside is it may be a few more steps to see your total financial picture.</p>
<p>You can, however, create an asset account representing Accounts Receivable in iBank to which you can then transfer your invoices from iBiz. This works, but is slightly clunky. First my invoices sometime are imported as a withdrawal, instead of a deposit. This seems odd so I may be doing something wrong here. Second, moving a transaction from Accounts Receivable to a real account (on payment) is not automatic. I have to add the transaction to the bank (or download) and then deduct the amount in Accounts Receivable. As you can see from all of my words, this is not the workflow that IGG intended and is involves much extra work.</p>
<h3>Invoicing</h3>
<p>A note: there are many invoicing apps available for OS X. I probably missed some, or just didn&#8217;t include them.</p>
<p><a href="http://www.iggsoftware.com/ibiz/index.php" target="_blank">iBiz</a></p>
<p>I&#8217;ll cover this first to keep it close to iBank. As I mentioned briefly, iBiz is attempting a bit of double duty. It has full Accounts Receivable capabilities. It can track open invoices, and send payments to iBank. This workflow is pretty nice. I think the interface is a little lacking, especially standing next iBank, but it isn&#8217;t the worst I&#8217;ve seen. Also it has reporting, but it&#8217;s not dead simple an maybe expects iBank to perform the &#8220;heavy lifting&#8221;.</p>
<p>It has an invoice editor, but invoices are created using HTML. My job revolves around coding, I really don&#8217;t want to mucking around in HTML just to make an invoice. I really feel that any invoice editor should be WYSISWG. iBiz&#8217;s users aren&#8217;t necessarily coders. I have to think overly complex template editing alienates some potential users.</p>
<p><a href="http://clickablebliss.com/profittrain" target="_blank">Profit Train</a> (formerly Billable)</p>
<p>A great, dead simple, invoicing app. It doesn&#8217;t waste a single button or window. It allows you to have multiple businesses that you can invoice from. More importantly, switching from one to another is scary easy. It also tracks expenses, and you can bill clients for expenses. Profit Train is still in beta and not feature complete, so I can&#8217;t be give a definitive ruling as of yet. Even in beta, Profit Train is extremely solid, with what I feel is the best interface of all of the invoicing apps.</p>
<p><a href="http://www.billingsapp.com/" target="_blank">Billings</a></p>
<p>Market Circle has a great app that many swear by. It clearly divides the interface between work and billing. I think this is good, but I don&#8217;t quite like the implementation of slips. They seem needlessly complex. Not that I am saying reduce the functionality of slips, it&#8217;s just that the default slip UI should be simple. Billings does allow you to group slips by project and invoice multiple slips. Billings also has many, many reports. Another great plus is that Billings will soon launch a companion iPhone app. Billings also has one of the best invoice designers. Billings also has export ability, but I did not test it.</p>
<p><a href="http://www.grandtotal.biz/GrandTotal/" target="_blank">GrandTotal</a></p>
<p>GrandTotal is an interesting entry. It fills most of my invoicing requirements and has export capability. It&#8217;s interface is pretty nice, but something is a slightly off. I think the structure has layout has something great going for it, but just needs some polish. Not &#8220;bling&#8221;, which it uses effectively, just some shuffling around of controls. The invoice editor/designer is good, probably second to Billings. GrandTotal has a <strong>free</strong> iPhone companion app with MobileMe syncing. This is a solid all around pick.</p>
<p><a href="http://stuntsoftware.com/OnTheJob/" target="_blank">On The Job</a></p>
<p>Another solid pick. Very simple, very Mac like. I think it has a great invoice designer except for the fact there is no &#8220;save&#8221;. Don&#8217;t mess up, because all changes are permanent! I think the straightforward thought interface goes a long way in this app. It&#8217;s hard to write much more about it, you just have to use it to understand what it brings to the table.</p>
<p><a href="http://the-dream.co.uk/involer/" target="_blank">Involver</a>, <a href="http://www.pomola.com/products_invoices/invoices.html" target="_blank">Invoices</a>, <a href="http://www.kedisoft.com/invoice/" target="_blank">Invoice</a>, etc..</p>
<p>I&#8217;m not delving into these products for one reason or another. Most do somethings well, but may be unpolished or don&#8217;t differentiate themselves from the pack.</p>
<p><a href="http://freelancefolder.com/14-web-based-invoicing-tools-to-make-sure-you-get-paid/" target="_blank">SAAS</a></p>
<p>I&#8217;m not really evaluating these, I don&#8217;t see a need to keep this data in the cloud. However these are viable options with many in the link provided.</p>
<h3>(Long) Conclusion</h3>
<p>Overall, I find that none of the solutions are <em>ideal</em>. I&#8217;m sure that this is most view their accounting software. I am probably being a little picky and will likely be told so in the comments, but I don&#8217;t think I am being too demanding. However, I am self-aware enough to realize I am a UI snob which is heavily infuences my software decision.</p>
<p>I applaud the developers of all these products for creating complex software that is expected to perform <strong>perfectly</strong> or it is deemed a failure. Customers have (understandably) high expectations when it comes to safeguarding their financial data. With that said, I think that small business accounting and invoicing apps are still going through major maturation.  As a Mac user, you and I have insist on a great user experience. Couple that with the complexity that is accounting, and it gives these developers a tough UI problem to solve. I think several of these apps are on a great trajectory with a lot of room for growth and polish.</p>
<p>So what will <em>I</em> do?</p>
<p>Well, I&#8217;ll have to settle on an invoicing app soon. I can&#8217;t keep bouncing back and forth.</p>
<p>I like the simplicity of Profit Train, but want to see it in it&#8217;s 1.0 (really 2.0) form.</p>
<p>On The Job has much of the simplicity of Profit Train, with a WYSISYG invoice editor.</p>
<p>GrandTotal is solid. It&#8217;s a little crashy (Safari 4 beta problems, I believe), but it has promise.</p>
<p>Billings has everything the above three do, a better invoice template editor, but a a lesser UI.</p>
<p>For a one stop shop, I think Money is <em>really</em> close. I want this to be the app. It just seems so odd not have automatic transaction downloads in 2009.</p>
<p>I&#8217;ll have to pick one of the above invoicing apps and hope I can export my data to an accounting application I select in the future.</p>
<p>In conclusion, I  have a lot of thinking to do&#8230; (And most likely a second post).</p>
<p>After your considerable time investment in reading this post:</p>
<p>Don&#8217;t forget to tell us what you use!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/05/cash-rules-everything-around-me-tracking-my-iphone-benjamins/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Decision 2009: A new Mac. What&#8217;s your take?</title>
		<link>http://www.theflyingjalapenolives.com/2009/05/decision-2009-a-new-mac-whats-your-take/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/05/decision-2009-a-new-mac-whats-your-take/#comments</comments>
		<pubDate>Fri, 08 May 2009 19:31:04 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=246</guid>
		<description><![CDATA[I need help. I need a new Mac. I&#8217;ve needed one for a while. I do all my developing on a Late 2006 white MacBook. Not a bad machine, but i&#8217;m a little hard on it. What&#8217;s worse? My logic board has been bad for a while, leaving me only 2 hours of battery life. [...]]]></description>
			<content:encoded><![CDATA[<p>I need help.</p>
<p>I need a new Mac. I&#8217;ve needed one for a while.</p>
<p>I do all my developing on a Late 2006 white MacBook. Not a bad machine, but i&#8217;m a little hard on it. What&#8217;s worse? My logic board has been bad for a while, leaving me only 2 hours of battery life. I have Apple Care, but sadly I haven&#8217;t been able to spare a week to have it repaired.</p>
<p>I&#8217;d love to hear what everyone else is rocking for their dev setup.</p>
<p>I see two options:</p>
<ol>
<li>Desktop (+ External Monitor) + Light Duty Laptop</li>
<li>Heavy Duty Laptop + External Monitor</li>
</ol>
<p>I wouldn&#8217;t say my budget is unlimited, but I am an extremely practical person. If someone has a compelling argument for a Mac Pro, I&#8217;d get it.</p>
<h3><span style="font-family: mceinline;">Desktop Laptop combo:</span></h3>
<h4>iMac or Mac Pro</h4>
<p>I&#8217;m leaning towards a high-end iMac. I think it is powerful enough for my needs.  If needed, I can get an external monitor to augment the screen space. My biggest gripe right now is the lack of an LED screen (One of the reasons I am holding out for WWDC and a possible hardware announcement). I can&#8217;t imagine buying the LED Cinema Display and only having the LCD for the main monitor.</p>
<p>The Mac Pro feels like overkill. I know I am buying compile time, but is the saved time significant enough considering the size of my projects? The upgradability woul be awesome, and I wouldn&#8217;t need another machine for 4-5 years.</p>
<h4>Macbook Air or Aluminum Macbook</h4>
<p>Since the laptop would be almost exclusively for recreation, I think an Air would be perfect. I could do some light coding if the mood struck me. Of course, I think hardware update is eminent, maybe not this summer, but possibly in the fall. I can&#8217;t imagine buying one before Apple brings some of the battery tech over from the 17&#8243; MacBook Pro. And you know the black trim is coming.</p>
<p>My wife has a new Aluminum MacBook (yes, a better machine than me). It is nice and light. I think it would be a more than serviceable laptop. I know the battery life is great, its just not as light as the Air.</p>
<h3><span style="font-family: mceinline;">Powerhouse Laptop:</span></h3>
<h4>MacBook Pro 17&#8243;</h4>
<p>There is only one choice here. My 8-hour seductress. This is an awesome machine, I just picked one up yesterday and it is surprisingly light. I would have to lug it back and forth to work and I absolutely need the 24&#8243; cinema display. I know I would be sacrificing some speed and screen space, but I could work anywhere.</p>
<p>So, what&#8217;s your pick?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/05/decision-2009-a-new-mac-whats-your-take/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>iPhone code snippet: Phone number formatter</title>
		<link>http://www.theflyingjalapenolives.com/2009/05/iphone-code-snippet-phone-number-formatter/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/05/iphone-code-snippet-phone-number-formatter/#comments</comments>
		<pubDate>Thu, 07 May 2009 16:29:37 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=172</guid>
		<description><![CDATA[If you have had to create a text field for a user to enter a phone number, you may have had to do this yourself. If not, this snippet may save you 15 minutes. Set the keyboard type to phone pad and add these 2 methods to the delegate of your text field. This code [...]]]></description>
			<content:encoded><![CDATA[<p>If you have had to create a text field for a user to enter a phone number, you may have had to do this yourself.</p>
<p>If not, this snippet may save you 15 minutes. Set the keyboard type to phone pad and add these 2 methods to the delegate of your text field. This code does rely on a UITextField category method: fullRange. You can implement this yourself, it just returns an NSRange representing the entire string. </p>
<pre line="1" lang="objc">
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

    NSMutableString *localText;

    if(range.length>0){

        localText = [[textField text] mutableCopy];

        NSRange deletionRange = [localText fullRange];
        deletionRange.location = ([localText length]-1);
        deletionRange.length = 1;
        [localText deleteCharactersInRange:deletionRange];

        phoneNumber.text = localText;
        [localText release];

    } else if([[textField text] length]<13){

        if([[textField text] length]>0){

            localText = [[textField text] mutableCopy];

            [localText replaceOccurrencesOfString:openParentheses withString:@"" options:NSCaseInsensitiveSearch range:[localText fullRange]];
            [localText replaceOccurrencesOfString:closeParentheses withString:@"" options:NSCaseInsensitiveSearch range:[localText fullRange]];
            [localText replaceOccurrencesOfString:dash withString:@"" options:NSCaseInsensitiveSearch range:[localText fullRange]];

            [localText appendString:string];
            self.phoneNumberString = [[localText copy] autorelease];

            [localText insertString:openParentheses atIndex:0];

            if([localText length]>3)
                [localText insertString:closeParentheses atIndex:4];

            if([localText length]>7)
                [localText insertString:dash atIndex:8];

        } else{

            localText = [openParentheses mutableCopy];
            [localText appendString:string];

        }

        phoneNumber.text = localText;
        [localText release];

    }

    return NO;

}

- (BOOL)textFieldShouldClear:(UITextField *)textField{

    phoneNumber.text = @"";
    return NO;
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/05/iphone-code-snippet-phone-number-formatter/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>What&#8217;s on your home screen?</title>
		<link>http://www.theflyingjalapenolives.com/2009/05/whats-on-your-home-screen/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/05/whats-on-your-home-screen/#comments</comments>
		<pubDate>Sat, 02 May 2009 21:02:31 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=215</guid>
		<description><![CDATA[As an iPhone developer, you need quick access to many tools.  Your iPhone is your &#8220;Swiss Army Knife&#8221;, providing the information you need, when you need it. The home screen holds your most useful and frequently used apps. What tools are most important to you? Here is a quick looksy at my home screen: In the Dock: Nothing [...]]]></description>
			<content:encoded><![CDATA[<p>As an iPhone developer, you need quick access to many tools.  Your iPhone is your &#8220;Swiss Army Knife&#8221;, providing the information you need, when you need it. The home screen holds your most useful and frequently used apps.</p>
<p>What tools are most important to you?</p>
<p>Here is a quick looksy at my home screen:</p>
<p><a href="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/05/img_0059.png"><img class="aligncenter size-full wp-image-216" title="img_0059" src="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/05/img_0059.png" alt="img_0059" width="320" height="480" /></a></p>
<p><strong>In the Dock</strong>: Nothing special here, I have alternated <a href="http://www.rememberthemilk.com/" target="_self">Remember the Milk </a>and <a href="http://culturedcode.com/things/iphone/" target="_self">Things Touch</a> down here. I am currently deciding on my task management workflow, and will probably move the iPod back out when I make a decision. In the mean time, iPod has made a comeback. I find myself listening to many, many podcasts</p>
<p><strong>Top Ro</strong><strong>w</strong>: I like having my camera and photos handy. I use maps about every 5 minutes and weather almost daily (I like AccuWeather the best).</p>
<p><strong>2nd Row</strong>: My internet row. These are the things I am using the most online. I think Google is a little better in the app that in Safari, but it&#8217;s debatable.</p>
<p><strong>3rd Row</strong>: Gettin&#8217; social. This is how I stay connected. I still use <a href="http://iconfactory.com/software/twitterrific" target="_self">Twitterriffic</a> (free) for my main Twitter app, but I am looking at going for <a href="http://www.atebits.com/tweetie-iphone/" target="_self">Tweetie</a> (I&#8217;m loving the desktop version) and <a href="http://birdhouseapp.com/" target="_self">Birdhouse</a> when I get a little more active. Since I started blogging, I constantly use the <a href="http://iphone.wordpress.org/" target="_self">WordPress</a> app. The <a href="http://www.facebook.com/apps/application.php?id=6628568379" target="_self">Facebook</a> app has made me ever so slightly more active in Facebook land.</p>
<p><strong>Bottom Row</strong>: On this row I track my vital stats, <a href="http://analyticsapp.com/" target="_self">Analytics App</a> (Google Analytics) , <a href="http://www.mint.com/features/iphone/" target="_self">Mint</a> for my money, and <a href="http://code.google.com/p/appsales-mobile/" target="_self">App Sales</a> for more money. Last is Notes, which I use a lot. This may change when I get my task management in order.</p>
<p>So, what are you packing?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/05/whats-on-your-home-screen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Does your app have a chance to make it in the App Store Top 100?</title>
		<link>http://www.theflyingjalapenolives.com/2009/05/do-you-have-a-chance-to-get-in-the-app-store-100/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/05/do-you-have-a-chance-to-get-in-the-app-store-100/#comments</comments>
		<pubDate>Fri, 01 May 2009 22:04:42 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[App Store]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=123</guid>
		<description><![CDATA[Data from several sources has shown that just being in the top 100, and to a greater extent, the top 50 accelerates app sales. The list is a self supporting mechanism, rewarding those that make it. So, how can you make it in? That&#8217;s not exactly an easy question, nor are all cases the same. [...]]]></description>
			<content:encoded><![CDATA[<p>Data from several sources has shown that just being in the top 100, and to a greater extent, the top 50 accelerates app sales.  The list is a self supporting mechanism, rewarding those that make it.</p>
<p>So, how can you make it in?</p>
<p>That&#8217;s not exactly an easy question, nor are all cases the same.  I swear I&#8217;m not trying to get out of the answer! What I can do is go over some data and see if it can give you and me any advantages.</p>
<p>I have been tracking the sales of Compounds comparative to it&#8217;s ranking within the Productivity category.  Additionally, I have also been probing other categories to give me some insight into how our app sales measure up.</p>
<p>My first discovery was that the gaming and entertainment are by far the best selling categories. This isn&#8217;t exactly news, but it is relevant to figuring out how well you app must perform within it&#8217;s category to reach the top 100.</p>
<p>Here is Compounds&#8217; ranking changed with sales:</p>
<p><a href="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/05/picture-1.png"><img class="aligncenter size-full wp-image-202" title="Rev vs Sales" src="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/05/picture-1.png" alt="Rev vs Sales" width="616" height="315" /></a></p>
<p>Compounds achieved it&#8217;s highest ranking on Sunday, Apr 19, when it reached the number 3 spot in Productivity. Unfortunately, this was NOT enough to make it in to the Top 100. It was close: the number 1 and 2 app in productivity are both in the Top 100. Even more, the previous number 3 app, was briefly in the Top 100.</p>
<p>For perspective: In the Entertainment category, the 11th ranked app can be found within the Top 100. An even crazier comparison is with the Games category.  The 63rd ranked game is just barely in the Top 100.</p>
<p>All these facts confirm what we already know, games and entertainment apps sell, a lot. If you release a productivity app, you are not going for the gold rush, you are going for a steady yet consistent climb. At least that&#8217;s what you should be thinking.</p>
<p>Productivity is a long term investment, with long term users. Some top selling entertainment apps won&#8217;t produce any revenue next month, but many productivity apps will still be chugging along. Each strategy has it&#8217;s merits and pitfalls. You must to decide what your goals are.</p>
<p>Now, back to the top 100, what can you do to make it in?</p>
<p>Here are some ideas that have I&#8217;ve read, came up with, heard, or just dreamed. Take what you will.</p>
<ol>
<li>Get noticed! Pick something and have an interesting take. Sure it may have been done before, but you can explore a different metaphor. Stand out.</li>
<li>Get noticed, by Apple! Ahh, the easiest way. Well, not really. But if you follow my previous advice, you&#8217;ll have a fighting chance.</li>
<li>Get noticed, again! Your icon is your face on the App Store and you need to give it the same treatment as your code. I recommend getting it designed. If you can&#8217;t, go to iStock Photo and learn some photoshop.</li>
<li>Frequent updates. Get your releases out often to drive some sales. You&#8217;ll get a brief moment on the front of your app&#8217;s category page. Additionally, (more importantly) it looks good to potential customers to see frequent updates.</li>
<li>Demos. Give them to any website or person that will have them. You need to do a lot of leg work, maybe more than you did to write your app.</li>
<li>Review sites. Try and hit the big boys, but even a little buzz will land you some traffic.</li>
<li>Get a real website. You need to pimp your app elsewhere, not just on the App Store.  To a customer: A solid website = A solid app.</li>
<li>Do some research. Know the other apps you with who you will compete. How many reviews do they have? What&#8217;s there ranking? It may not e worth it ot enter the space without a great idea. You&#8217;ll need to look at data and make an informed guess.</li>
</ol>
<p>You might not make it to the Top 100 with these strategies, but you don&#8217;t need to. Many apps make a respectable, stable income without ever sniffing the top 100.  If you a apply the concepts above, you can&#8217;t go wrong. You will have a rock solid app with more of a marketing strategy than 80% of the apps available.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/05/do-you-have-a-chance-to-get-in-the-app-store-100/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>To $0.99 or not to $0.99, that is the App Store question</title>
		<link>http://www.theflyingjalapenolives.com/2009/04/to-099-or-not-to-099-that-is-the-app-store-question/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/04/to-099-or-not-to-099-that-is-the-app-store-question/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 17:34:59 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[App Store]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=155</guid>
		<description><![CDATA[This has been a raging debate for several months now. Many have taken a philosophical and idealistic approach to the argument, but such a lofty opinion requires a minimum bank account balance. The truth is, as much as you and I want to charge more for our apps, we are constrained. We didn&#8217;t take VC capital. We have [...]]]></description>
			<content:encoded><![CDATA[<p>This has been a raging debate for several months now. Many have taken a philosophical and idealistic approach to the argument, but such a lofty opinion requires a minimum bank account balance.</p>
<p>The truth is, as much as you and I want to charge more for our apps, we are constrained. We didn&#8217;t take VC capital. We have bills. We have angry significant others who have supported us and sacrificed, letting us sit and stare at our computer screens for unimaginable amounts of time.</p>
<p>Most of us just don&#8217;t have the luxury of picking our price point on principle. Even still, I did price <a href="http://www.amdshealth.com/Site/Compounds.html" target="_self">Compounds</a> at double the going rate, $1.99, though not exactly a princely sum.</p>
<p>Since <a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=307223056&amp;mt=8" target="_self">Compounds</a> is a very, very niche app (how big is the market of iPhone users that perform mole calculations?). My pricing strategy must reflect that. &#8220;But, Mr. Jalapeno, your app is now $0.99. Are enough people are going to buy it?&#8221; Well, thats a tradeoff we made. When we had the luck of being featured on the front of the App Store, our pricing strategy HAD to change.</p>
<p>This wasn&#8217;t clear at first, and our sales are probably slightly less than if we had reduced the price quicker. If you look at the graph from my last post, you can see how are sales had definite downward trend.</p>
<p style="text-align: center;"><a href="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/04/picture-51.png"><img class="size-full wp-image-133 aligncenter" title="Sales" src="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/04/picture-51.png" alt="Sales" width="615" height="304" /></a></p>
<p>If we hadn&#8217;t reduced our price for the weekend, we would have left even more money on the table.  How much is hard to say.</p>
<p>Our current price is still $0.99. Do we raise the price, do we let it stay at this level indefinitely? Thats a hard question I am constantly thinking about. The answer of course is, it depends.  I don&#8217;t remember where I read it, but someone said &#8220;Don&#8217;t mess with your price during a positive trend&#8221;, and I believe that.</p>
<p>If sales drop to a certain point, I will most likely raise the price to recoup revenue for the lost volume. For now, I am happy with the consistent sales of Compounds.</p>
<p>So with this data in mind what are my thoughts on pricing new apps?</p>
<p>Niche Apps:</p>
<ol>
<li>I will price them according to what I THINK I need to be profitable. Most likely this will be above $0.99. This is just good business sense.</li>
<li>I will ensure my niche apps are of high quality. No one pays for crap.</li>
<li>I will release a &#8220;lite&#8221; version to help drive sales.</li>
</ol>
<p>Wide Appeal Apps</p>
<ol>
<li>It is highly likely I will release these at $0.99. My market is so large, if I have decent idea, I <em>should</em> make it up in volume.</li>
<li>I still will make a great effort on these apps, but depending on the time investment, I need to weigh tthey amount of polish against the amount of risk.</li>
<li>If I do price this app at $0.99 AND it is an app that promotes repeated use, a &#8220;lite&#8221; version is in the cards.</li>
</ol>
<p>Every situation is different and you have to evaluate for them for your self . The first time will be hard because you have no data, so my experience may be of use to you.  This is the methodology I will be using until the data steers me otherwise. If you have other thoughts, let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/04/to-099-or-not-to-099-that-is-the-app-store-question/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>App Store sales figures for our iPhone app, Compounds</title>
		<link>http://www.theflyingjalapenolives.com/2009/04/app-store-sales-figures-for-our-iphone-app-compounds/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/04/app-store-sales-figures-for-our-iphone-app-compounds/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 18:36:58 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[App Store]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=121</guid>
		<description><![CDATA[Finally, after my promise, I have gotten around to tabulating some data. I won&#8217;t delve too deep into the analysis of Compounds&#8216; sales figures. I will be dipping into greater detail in another post. For now, I just want to get our sales figures out, hopefully, to assist other developers in estimation of their own sales. [...]]]></description>
			<content:encoded><![CDATA[<p>Finally, after my <a href="http://www.theflyingjalapenolives.com/2009/04/iphone-sales-and-the-front-page-of-the-app-store/" target="_self">promise</a>, I have gotten around to tabulating some data. I won&#8217;t delve too deep into the analysis of <a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=307223056&amp;mt=8" target="_self">Compounds</a>&#8216; sales figures. I will be dipping into greater detail in another post. For now, I just want to get our sales figures out, hopefully, to assist other developers in estimation of their own sales.</p>
<p>I&#8217;ve used Numbers to graph our sales for the import range of data. These figures are AFTER Apple&#8217;s 30% rake. I&#8217;ve also placed some significant markers that properly scope the data.</p>
<p style="text-align: center;"><a href="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/04/picture-51.png"><img class="size-full wp-image-133 aligncenter" title="Sales" src="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/04/picture-51.png" alt="Sales" width="615" height="304" /></a></p>
<p>April 11th and 12th were a Saturday and Sunday, which are traditionally poor performing days for our work-oriented Chemistry app. We did have a few sales, but they were, in fact, our worst 2 sales days since we launched Compounds.  For reference, are sales were normally a modest 5-15 units a day. (Edited)</p>
<p>Tuesday, April 14th was an awesome and welcome surprise.  I honestly was a little down about out app until this happened.</p>
<p>You can see another significant jump on the day we decided to reduce the price of Compounds to $0.99. The effect of dropping the price just $1.00 was astounding.  In retrospect, I probably should have reduced the price earlier to make it into the top 100. Ahh, hindsight&#8230;</p>
<p>Lastly, is next Tuesday, when we moved to the second page. What a difference a single click makes.  You can see we approaching a asymptote near $100 a day, which I would be extremely satisfied with.  For our first released app, I am extremely pleased.</p>
<p>In another post, I&#8217;ll also compare this data to our popularity within the Productivity category.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/04/app-store-sales-figures-for-our-iphone-app-compounds/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Transitioning from Mac power user to developer</title>
		<link>http://www.theflyingjalapenolives.com/2009/04/transitioning-from-mac-power-user-to-developer/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/04/transitioning-from-mac-power-user-to-developer/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 21:23:23 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=115</guid>
		<description><![CDATA[It&#8217;s a seemingly natural transition. The more you use the platform, the more you want to learn. This is a path that almost  inevitably leads to application development. Maybe not in a professional context, but many will at least dabble in AppleScript or create some freeware out of need or desire. For me, this was [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s a seemingly natural transition. The more you use the platform, the more you want to learn. This is a path that almost  inevitably leads to application development. Maybe not in a professional context, but many will at least dabble in AppleScript or create some freeware out of need or desire.</p>
<p>For me, this was accelerated by the iPhone SDK. It is a simple sandbox that allows beginner programmers to have a chance to focus on a well defined set of functionality and features.  Moreover, it provides UIKit classes that do the visual heavy lifting. In my opinion, it is the perfect environment for a fledgling programmer.</p>
<p>The ecosystem created by Xcode, the SDK, iPhone Simulator, Instruments, etc&#8230; has allowed many programmers to not only write, but also distribute apps with an ease that has never before been seen in world of software publishing (at least not in my limited knowledge of this area). Of course, the downside has been the flood of $0.99 apps that are negatively impacting the App Store.  Additionally, developers have given up a large amount of control, but many of us new to the game didn&#8217;t know we lost.  In regards to bringing new programmers to the platform, the overall effect seems positive.</p>
<p>Just being a curious Mac user has afforded me a great opportunity. Mostly, I&#8217;m just grateful I have a chance to be create my own company and be my own boss. Which, while not impossible, would have been much more difficult without the iPhone.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/04/transitioning-from-mac-power-user-to-developer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Examining App Store rating patterns and what they say about your app</title>
		<link>http://www.theflyingjalapenolives.com/2009/04/examining-app-store-rating-patterns-and-what-they-say-about-your-app/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/04/examining-app-store-rating-patterns-and-what-they-say-about-your-app/#comments</comments>
		<pubDate>Sun, 19 Apr 2009 17:57:22 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[App Store]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=55</guid>
		<description><![CDATA[Now that our first app, Compounds, is accumulating a significant amount of ratings, I have found myself pondering over the subtleties of App Store ratings. The hard truth is that customers, for the most part, are not rating your app. Even fewer take the time to write a review. This isn&#8217;t exactly a revelation, but could we [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Now that our first app, <a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=307223056&amp;mt=8" target="_self">Compounds</a>, is accumulating a significant amount of ratings, I have found myself pondering over the subtleties of App Store ratings. The hard truth is that customers, for the most part, are not rating your app. Even fewer take the time to write a review. This isn&#8217;t exactly a revelation, but could we use these facts to draw any worthwhile conclusions?</p>
<p style="text-align: left;">Several months ago, Apple began allowing quick ratings during app deletion. However, the ratings received from this process tend to be negatively biased. This makes sense of course, users will typically delete apps they don&#8217;t like, or are bored with. You and I, being awesomely objective, logical software developers, possess the incredible ability to rate an application based on its merits, regardless if we choose to delete it from our phones. Unfortunately, most of our customers aren&#8217;t as deliberate in there rating process. Moreover, Apple provides no comparably easy rating mechanism for a customer who actually <em>likes</em> your app and decides not to delete it.</p>
<p style="text-align: left;">Of course, there&#8217;s always iTunes, but on device rating is much more convenient for users. I&#8217;m not saying people won&#8217;t go to iTunes to post a rating. As with many things on the internet, those with the strongest opinions, good or bad, will be attracted to rate your app in this manner.</p>
<p style="text-align: left;">Using the above thought process, we can categorize several types of customers that constitute the bulk of our ratings and their most likely rating (in order of occurrence):</p>
<ol style="text-align: left;">
<li>Feels very strongly about your app, in a negative manner (1 star)</li>
<li>Feels very strongly about your app, in a positive manner (5 star)</li>
<li>Recently purchased your app, and deleting it because it adds no value (1 star)</li>
<li>Feels your app is ok, but is critical of its flaws (3 star)</li>
<li>Feels your app adds value, and does not mind taking the time to tell others (4 star)</li>
<li>Feels your app is subpar, rates it poorly, but is keeping thinking it will get better (2 star)</li>
</ol>
<p style="text-align: left;">Now, you almost definitely won&#8217;t agree with my categories, or their frequency and possibly think I have a negative view of the world. Regardless of whether or not I had a tormented childhood, people on the internet find it much more natural to express negative feelings.</p>
<p style="text-align: left;">Moreover, many of your happy customers are just too busy. They enjoyed the 60 seconds or so they used your app today, but don&#8217;t have any inclination to express this feeling in the form of a rating. This is why most of your reviews will come from the extremists, good or bad.</p>
<p style="text-align: left;">So, with this knowledge (and rampant speculation) in hand, lets look at some of the patterns that arise out of customer ratings and what they could mean about our apps.</p>
<p style="text-align: center;"><img class="size-full wp-image-65 alignnone" title="picture-7" src="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/04/picture-7.png" alt="picture-7" width="415" height="240" /></p>
<p style="text-align: left;"><strong>The Ski Slope</strong> Ahh, the worst for first. You apparently have alienated the majority of your customers. The discussion of this pattern is brief. It reflects the presence of several glaring defects within your application, which you should have no problem finding.</p>
<p style="text-align: center;"><img class="size-full wp-image-64 aligncenter" title="picture-6" src="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/04/picture-6.png" alt="picture-6" width="378" height="255" /><strong></strong></p>
<p style="text-align: left;"><strong>The Cylon Raider</strong> Now here is one we can sink our analytical, pattern oriented minds on. Somehow, you have managed to completely polarize your customer base. As usual, you&#8217;ll have a few on the fence.  With the exception of a political application, how did you accomplish such a feat? (Full dislosure: this is what <a href="http://www.amdshealth.com/Site/Compounds.html" target="_blank">Compounds</a> is looking like)</p>
<p style="text-align: left;">A five star rating means that your app has filled a need, and the customer is able to use it effectively. A one star rating, means exactly the opposite. Lets think about that. A certain percentage of your customers will know exactly what to do with your app <em><strong>in spite of</strong></em> what you tell them. Many others will be lost without a clear interface, clear instructions, and a clear description.  These customers aren&#8217;t idiots, you are.  many of your customers don&#8217;t understand how to use your app, or it doesn&#8217;t work how they thought it should.  The ones who gave you the five star ratings are probably technical people, or at least people with a significant amount of computer experience.  You can&#8217;t assume that of all you customers.  Make you app design and description clear, and you will attract the customers you want, and they will appreciate (and rate) your app accordingly.</p>
<p style="text-align: center;"><img class="size-full wp-image-63 aligncenter" title="picture-5" src="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/04/picture-5.png" alt="picture-5" width="399" height="255" /><strong></strong></p>
<p style="text-align: left;"><strong>The Shop Teacher</strong> This one is close to the Cylon Raider, but a step better in the right direction. You have cut down on those bad reviews by addressing some of the problems stated above.  Some of the polarization still exists, however. Your learning, but you need to think critically and honestly about your app.  The advice is trite yet needs to be said.  Read your reviews, email your customers (if you have any on file), and pass your app around to strangers and get their reactions. You need objective information to improve your app.</p>
<p style="text-align: center;"><img class="size-full wp-image-62 aligncenter" title="picture-4" src="http://www.theflyingjalapenolives.com/wp-content/uploads/2009/04/picture-4.png" alt="picture-4" width="366" height="235" /></p>
<p style="text-align: left;"><strong>The Hand Gun</strong> We finish with the best, your goal. You please most of your customers. Those that you can&#8217;t, are few in number. You have been marketing your app to the right crowd, and have designed an interface that your mother could be proud of.  As with the Ski Slope, their isn&#8217;t much to say, but it seems you know a lot more than me anyways.</p>
<p style="text-align: left;">These aren&#8217;t all the patterns of course, but these seem to be the most common and, I think, provide some great landmarks for customer acceptance of your app. I feel that these mental exercises can really help you get a handle on where you need to go next with your app. It also highlights that everything is your fault. There are no stupid customers, just bad directions and clunky interfaces.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/04/examining-app-store-rating-patterns-and-what-they-say-about-your-app/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>iPhone sales and the front page of the App Store</title>
		<link>http://www.theflyingjalapenolives.com/2009/04/iphone-sales-and-the-front-page-of-the-app-store/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/04/iphone-sales-and-the-front-page-of-the-app-store/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 23:38:42 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[App Store]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=37</guid>
		<description><![CDATA[Data is starting to roll in from Apple featuring Compounds in the &#8220;New and Noteworthy&#8221; section of the App Store.  My first reaction was, &#8220;Wow&#8221;.  Our Tuesday sales were roughly 60x our average sales since we released our app.  Needless to say, we&#8217;ve been busy.  I&#8217;m just glad our homepage is still standing. In the [...]]]></description>
			<content:encoded><![CDATA[<p>Data is starting to roll in from Apple featuring Compounds in the &#8220;New and Noteworthy&#8221; section of the App Store.  My first reaction was, &#8220;Wow&#8221;.  Our Tuesday sales were roughly 60x our average sales since we released our app.  Needless to say, we&#8217;ve been busy.  I&#8217;m just glad our homepage is still standing.</p>
<p>In the next week I will release some figures in the spirit of other bloggers <a href="http://mattjdrake.com/2009/02/24/getting-featured-on-itunes-new-and-noteworthy/" target="_self">here</a>, <a href="http://www.streamingcolour.com/blog/2009/03/09/the-numbers-post-aka-brutal-honesty/" target="_self">here</a>, <a href="http://www.joelcomm.com/updated_iphone_app_sales_the_f.html" target="_self">here</a>, <a href="http://appcubby.com/blog/files/financial_realities.html" target="_self">here</a>, and <a href="http://www.taptaptap.com/blog/final-numbers-for-july/" target="_self">here</a>.</p>
<p>When were getting ready to release Compounds, it was really hard for us to get a handle on the answers to questions like:</p>
<p>What is our price point?</p>
<p>Do I offer a lite version?</p>
<p>Do start at a low introductory price?</p>
<p>What is the effect of a review/top 100/staff favorites/etc&#8230;?</p>
<p>There is a lot of mystery still surounding these questions and those I linked to above (and many others) really helped us make better guesses at the answers to these questions.  Notice I didn&#8217;t say, THE ANSWERS, because frankly, they don&#8217;t exist.  There is no &#8220;one&#8221; strategy.  We are just riding this wave and hoping we can sustain this momentum after we are off the front page.  But this isn&#8217;t just about marketing, it means we must continually improve and make Compounds a compelling option for all our potential customers.  Time will tell.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/04/iphone-sales-and-the-front-page-of-the-app-store/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>App Store keyword search algorithm</title>
		<link>http://www.theflyingjalapenolives.com/2009/04/app-store-keyword-search-algorithm/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/04/app-store-keyword-search-algorithm/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 23:49:15 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[App Store]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=40</guid>
		<description><![CDATA[Something I figured out that I found a little interesting. When a user enters a search term in the iTunes Store, they are presented with a grid of the top items from several categories. Two items for &#8220;podcasts&#8221;, four items for &#8220;albums&#8221;, two items for &#8220;movies&#8221;, etc&#8230; What we care about , obviously, is the [...]]]></description>
			<content:encoded><![CDATA[<p>Something I figured out that I found a little interesting.</p>
<p>When a user enters a search term in the iTunes Store, they are presented with a grid of the top items from several categories. Two items for &#8220;podcasts&#8221;, four items for &#8220;albums&#8221;, two items for &#8220;movies&#8221;, etc&#8230; What we care about , obviously, is the &#8220;Application&#8221; section. The top two apps for that search term are displayed in that section along with two additional links: &#8220;see all&#8221; and &#8220;Applications&#8221;.</p>
<p>If you follow the links you get a long list of every app matching the search. Where this gets interesting is how they determine the ranking. Well, here&#8217;s what I have found out using the progress of <a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=307223056&amp;mt=8" target="_self">Compounds</a>.</p>
<p>When I search iTunes for &#8220;chemistry&#8221; and look at the list of apps, <a href="http://www.amdshealth.com/Site/Compounds.html" target="_blank">Compounds</a> has steadily crept the list. Now it seems stuck at #8. Oddly, if I look at top paid apps under &#8220;Productivity&#8221;, Compounds is the only chemistry app in the top 20, so what gives?</p>
<p>It appears the following is happening:</p>
<p>iTunes first displays apps with <strong><em>names</em></strong> containing the search term. These apps are displayed in order of sales rank (last 24 hours, or a cumulative over the past week, I&#8217;m not exactly sure)</p>
<p>Next, iTunes displays apps with <strong><em>descriptions</em></strong> containing the search term.  These apps are also displayed in order of sales rank.  Here&#8217;s another gotcha, the search term must be near the top of the description or the app will NOT be displayed in the search.  I am not sure how close it must be, or if it gets worse the further down the search term resides.  I do, however, know there is a limit.</p>
<p>Good news, if you didn&#8217;t know, the name of your app on the store does not have to match the name of your app displayed on the home screen.  So, you can manipulate these search terms a little.</p>
<p>I hope this helps some of you with your naming strategy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/04/app-store-keyword-search-algorithm/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Resources avec shoutouts</title>
		<link>http://www.theflyingjalapenolives.com/2009/04/resources-avec-shoutouts/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/04/resources-avec-shoutouts/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 22:23:34 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=14</guid>
		<description><![CDATA[While putting Compounds together, we had the luxury of using the code, tutorials, and resources of many others.  This list is a little bit of the resources we used, and a little bit of a thanks to these individuals and organizations for their help, direct or indirect. Philly CocoaHeads and Indy Hall Local chapter of [...]]]></description>
			<content:encoded><![CDATA[<p>While putting Compounds together, we had the luxury of using the code, tutorials, and resources of many others.  This list is a little bit of the resources we used, and a little bit of a thanks to these individuals and organizations for their help, direct or indirect.</p>
<p><a href="http://phillycocoa.org" target="_blank">Philly CocoaHeads</a> and <a href="http://www.indyhall.org/" target="_blank">Indy Hall</a></p>
<p>Local chapter of CocoaHeads hosted at the more than generous Indy Hall in center city Philadelphia. Great people, advice, motivation, and networking. What more can I say?</p>
<p><a href="http://app-shop.com/" target="_blank">Matt Campbell</a></p>
<p>Of App Shop.  An iPhone developer who writes a very helpful dev blog and has provided me personal advice regarding App Store Econ 101.</p>
<p><a href="http://my.biotechlife.net/" target="_blank">Ricardo Vidal</a></p>
<p>A Biotech specific blogger who gave us our first review.</p>
<p><a href="http://www.macresearch.org/" target="_blank">MacResearch</a></p>
<p>Gave us a great opportunity to write and post a comprehensive showcase review on Compounds.</p>
<p><a href="http://stackoverflow.com" target="_blank">stackoverflow</a></p>
<p>A very active question and answer site, especially for iPhone developers</p>
<p><a href="http://bill.dudney.net/roller/objc/" target="_blank">Bill Dudney</a></p>
<p>Author of a great Core Animation book, iPhone book, and a great blog. We specifically used some nice &#8220;exploding&#8221; Core Animation code from his book.</p>
<p><a href="http://iphonedevelopment.blogspot.com/" target="_blank">Jeff LaMarche</a></p>
<p>Author of another great iPhone book and a very frequently updated development blog.</p>
<p><a href="http://www.mac-developer-network.com/" target="_blank">MDN</a></p>
<p>Scotty of the Mac Developer Network produces so many great podcasts, worth every penny of the membership. They are really eating into my Jim Rome time.</p>
<p><a href="http://developer.apple.com/events/iphone/techtalks/" target="_blank">iPhone Tech Talk, Toronto</a></p>
<p>Not to suck up, but these guys really helped us turn a mediocre app with a poor interface into something worth using.  John Geleynse, Matt Drance, Michael Jurewitz and crew provided great design information and even better motivation.  I&#8217;m deeply saddened I will not be able to attend WWDC.</p>
<p>Of course, as always, there are many others, but this list can get anybody moving in iPhone Development.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/04/resources-avec-shoutouts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compounds, now &#8220;New and Noteworthy&#8221;</title>
		<link>http://www.theflyingjalapenolives.com/2009/04/compounds-now-new-and-noteworthy/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/04/compounds-now-new-and-noteworthy/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 15:56:22 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Compounds]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=10</guid>
		<description><![CDATA[Finally, Compounds receives the recognition it deserves.  No, but really it&#8217;s nice to see it riding high on the front page of the App Store, if only for a week.  Of course, like most developers, we were uninformed and were left to deduce the 3000% increase in sales for ourselves.  Not that there&#8217;s anything wrong with that. [...]]]></description>
			<content:encoded><![CDATA[<p>Finally, Compounds receives the recognition it deserves.  No, but really it&#8217;s nice to see it riding high on the front page of the App Store, if only for a week.  Of course, like most developers, we were uninformed and were left to deduce the 3000% increase in sales for ourselves.  Not that there&#8217;s anything wrong with that. (Seinfeld quote).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/04/compounds-now-new-and-noteworthy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Movin&#8217; on up</title>
		<link>http://www.theflyingjalapenolives.com/2009/04/movin-on-up/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/04/movin-on-up/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 02:19:35 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.theflyingjalapenolives.com/?p=7</guid>
		<description><![CDATA[Off of WordPress.com and in to the wild with a fresh new domain.  Just signed up with DreamHost with an awesome 90% off deal.  Can&#8217;t beat that. WordPress is nice, so nice, look for my company site to be moved over to WordPress, too. Now, maybe I can start posting things of value&#8230;]]></description>
			<content:encoded><![CDATA[<p>Off of WordPress.com and in to the wild with a fresh new domain.  Just signed up with DreamHost with an awesome 90% off deal.  Can&#8217;t beat that.</p>
<p>WordPress is nice, so nice, look for my company site to be moved over to WordPress, too.</p>
<p>Now, maybe I can start posting things of value&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/04/movin-on-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone SDK 3.0 &#8211; Same Fish, Bigger Pond</title>
		<link>http://www.theflyingjalapenolives.com/2009/03/iphone-sdk-30-same-fish-bigger-pond/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/03/iphone-sdk-30-same-fish-bigger-pond/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 06:28:38 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://02bbbe0.netsolhost.com/tfjl/?p=5</guid>
		<description><![CDATA[I had intended to post about my own app, but in light of yesterday&#8217;s news&#8230; After combing through the API differences between 2.2.1 and 3.0, which I can&#8217;t discuss openly, I am really excited. What I haven&#8217;t written about yet, is that Compounds was my first Objective-C app, Cocoa app, and iPhone app. To be honest, the [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>I had intended to post about my own app, but in light of yesterday&#8217;s news&#8230;</p>
<p>After combing through the API differences between 2.2.1 and 3.0, which I can&#8217;t discuss openly, I am really excited.</p>
<p>What I haven&#8217;t written about yet, is that Compounds was my first Objective-C app, Cocoa app, and iPhone app. To be honest, the 2.x sandbox I learned to develop i was warm and secure. I clearly saw the boundaries and I became comfortable very with them.</p>
<p>With 3.0, that all changes. I am suddenly in the Gobi, with endless possibilities. In some ways this is great, I can do what I want, but to continue the analogy, I have to keep moving, exploring, and avoiding quicksand.</p>
<p>I think there is much to be said about being creative under restrictions. For one, at least for me, it is seems easier. Now I feel like I am scrambling all over again. Admittedly much better prepared, but working overtime to learn the new APIs, nonetheless.</p>
<p>Of course, the new possibilities outweighs any of my trepidations, and, like every other Phone developer, I am already heard at work.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/03/iphone-sdk-30-same-fish-bigger-pond/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New and exciting blog!</title>
		<link>http://www.theflyingjalapenolives.com/2009/03/hello-world-2/</link>
		<comments>http://www.theflyingjalapenolives.com/2009/03/hello-world-2/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 01:47:30 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://02bbbe0.netsolhost.com/tfjl/?p=1</guid>
		<description><![CDATA[Hi, I am one of the developers of Compounds for the iPhone.  I&#8217;ve gone through some interesting times over the past few months transitioning from Electrical Engineer to Independent Software Developer.  I will be writing down a few musings on my company&#8217;s projects as well as some of my personal endeavors.  Until then enjoy my blank, barren blog.]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">
<div>
<p>Hi,</p>
<p>I am one of the developers of Compounds for the iPhone.  I&#8217;ve gone through some interesting times over the past few months transitioning from Electrical Engineer to Independent Software Developer.  I will be writing down a few musings on my company&#8217;s projects as well as some of my personal endeavors.  Until then enjoy my blank, barren blog.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.theflyingjalapenolives.com/2009/03/hello-world-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
