<?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>Under The Bridge</title>
	<atom:link href="http://www.alexcurylo.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.alexcurylo.com</link>
	<description>Alex Curylo, iPhone Programmer</description>
	<lastBuildDate>Wed, 16 May 2012 14:48:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Apptopia: eBay for Apps</title>
		<link>http://www.alexcurylo.com/blog/2012/05/16/apptopia-ebay-for-apps/</link>
		<comments>http://www.alexcurylo.com/blog/2012/05/16/apptopia-ebay-for-apps/#comments</comments>
		<pubDate>Wed, 16 May 2012 14:36:49 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Marketing]]></category>

		<guid isPermaLink="false">http://www.alexcurylo.com/?p=3102</guid>
		<description><![CDATA[Now this is a solid sign that the app economy is maturing: now there&#8217;s marketplaces set up specifically to sell your apps&#8217; complete rights. Most notably, Apptopia:<br />
<br />
<br />
<br />
  <br />
<br />
Hey, you want an exit strategy, for 15% of the sale price their marketing and valuation services are probably worth it; and on the other hand, if you see something kinda-sorta-like what you want, pretty good chance it&#8217;ll save you a whack of time and/or money ...]]></description>
			<content:encoded><![CDATA[<p>Now this is a solid sign that the app economy is maturing: now there&#8217;s marketplaces set up specifically to sell your apps&#8217; complete rights. Most notably, <a href="http://www.apptopia.com/">Apptopia</a>:</p>
<p></p>
<div style="text-align: center;"></div>
<div style="text-align: center;">
  <img src="http://www.alexcurylo.com/wp-content/uploads/2012/05/Screen-Shot-2012-05-16-at-7.28.53-AM.png" width="480" height="119" alt="Screen Shot 2012-05-16 at 7.28.53 AM.png" />
</div>
<p>Hey, you want an exit strategy, for 15% of the sale price their marketing and valuation services are probably worth it; and on the other hand, if you see something kinda-sorta-like what you want, pretty good chance it&#8217;ll save you a whack of time and/or money to get something functional to start with, yep.</p>
<p>They give you download and revenue stats for last quarter, last month, best month, and worst month too, so it&#8217;s kinda neat just to browse around and see, for the most part, just how little money most apps make!</p>
<p>There&#8217;s another marketplace of this type at <a href="http://www.sellmyapplication.com/">sellmyapplication.com</a> too, but they don&#8217;t seem built out anywhere near as nicely as Apptopia.</p>
<p>Any of you Dear Readers have experience with these app marketplaces, on either side of the transaction? How did that work out for you?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexcurylo.com/blog/2012/05/16/apptopia-ebay-for-apps/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Marketing Tutorial Series</title>
		<link>http://www.alexcurylo.com/blog/2012/05/11/marketing-tutorial-series/</link>
		<comments>http://www.alexcurylo.com/blog/2012/05/11/marketing-tutorial-series/#comments</comments>
		<pubDate>Fri, 11 May 2012 14:53:41 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Marketing]]></category>

		<guid isPermaLink="false">http://www.alexcurylo.com/?p=3094</guid>
		<description><![CDATA[Just in case you don&#8217;t monitor all the new posts over at raywenderlich.com &#8212; and if you don&#8217;t, you should &#8212; there&#8217;s been a series on marketing your app that wrapped up today that&#8217;s worth your time to read:<br />
How to Market and Promote your Games and Apps: Part 1/4<br />
How to Market and Promote your Games and Apps: Part 2/4<br />
How to Market and Promote your Games and Apps: Part 3/4<br />
How to Market and Promote your Games and ...]]></description>
			<content:encoded><![CDATA[<p>Just in case you don&#8217;t monitor all the new posts over at <a href="http://www.raywenderlich.com/">raywenderlich.com</a> &#8212; and if you don&#8217;t, you <i>should</i> &#8212; there&#8217;s been a series on marketing your app that wrapped up today that&#8217;s worth your time to read:</p>
<p><a href="http://www.raywenderlich.com/11359/how-to-market-and-promote-your-games-and-apps-part-1">How to Market and Promote your Games and Apps: Part 1/4</a></p>
<p><a href="http://www.raywenderlich.com/11633/how-to-market-and-promote-your-games-and-apps-part-2">How to Market and Promote your Games and Apps: Part 2/4</a></p>
<p><a href="http://www.raywenderlich.com/11767/how-to-market-and-promote-your-games-and-apps-part-34">How to Market and Promote your Games and Apps: Part 3/4</a></p>
<p><a href="http://www.raywenderlich.com/11794/how-to-market-and-promote-your-games-and-apps-part-4">How to Market and Promote your Games and Apps: Part 4/4</a></p>
<p>Nothing strikingly groundbreaking in it, but it&#8217;s a handily wrapped up package of generally accepted current best practices.</p>
<p>Which a lot of us could use some help with, as</p>
<p><a href="http://appadvice.com/appnn/2012/05/a-whopping-60-percent-of-ios-apps-fail-to-make-the-developer-a-profit">A Whopping 60 Percent Of iOS Apps Fail To Make The Developer A Profit</a></p>
<blockquote>
<p>12% earn $50,000 or more in revenue &#8211; &#8220;Top Earners&#8221;…</p>
<p>… Top Earners have nearly $30,000 as an average marketing budget&#8230;</p>
</blockquote>
<p>Yikes. That kinda puts things in perspective, doesn&#8217;t it now?</p>
<p>While we&#8217;re at it, here&#8217;s a collection of marketing-related links we&#8217;ve noted to mine for tidbits:</p>
<p><a href="http://www.netmagazine.com/features/10-step-approach-marketing-your-app">The 10 step approach to marketing your app</a></p>
<p><a href="http://www.altdevblogaday.com/2011/08/09/you-need-a-media-kit/">You Need a Media Kit</a></p>
<p><a href="http://retrodreamer.com/blog/2011/08/how-to-media-kits-retro-dreamer-style/">How To: Media Kits, Retro Dreamer style!</a></p>
<p><a href="http://www.inc.com/christina-desmarais/5-ways-to-make-your-mobile-app-take-off.html">5 Ways to Make Your App Take Off</a></p>
<p><a href="http://www.repeattimerapp.com/how/">Behind the app: Repeat Timer Pro</a></p>
<p><a href="http://mobileorchard.com/preparing-for-an-app-launch-interview-with-leap-founder/">Preparing for an app launch – interview with Leap founder</a></p>
<p><a href="http://www.quora.com/What-are-the-best-practices-for-marketing-an-iPhone-app">What are the best practices for marketing an iPhone app?</a></p>
<p><a href="http://blog.hubspot.com/blog/tabid/6307/bid/26866/9-must-haves-for-the-perfect-landing-page.aspx/?source=blogtwitter">9 Must-Haves for the Perfect Landing Page</a></p>
<p><a href="http://www.36peas.com/blog/2011/7/28/an-ios-ipad-app-launch-marketing-and-promotion-task-list-tem.html?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+idevblogaday+%28iDevBlogADay%29&amp;utm_content=Twitter">An iOS (iPad) app launch marketing and promotion task list template</a></p>
<p><a href="http://mashable.com/2011/03/30/product-launch-social-media/">HOW TO: Launch Any Product Using Social Media</a></p>
<p><a href="http://www.easyappreviews.com/PACKAGES.html">$1.99 for a list of 40 review sites&#8217; submission info</a></p>
<p>Of course, <a href="http://appsmarketing.mobi/">there&#8217;s</a> <a href="http://talonpr.com/">always</a> <a href="http://www.apalon.com/iphone_marketing.html">the</a> <a href="http://appular.com/">paid</a> <a href="http://www.marketingyourapp.com/">marketing</a> option… but we haven&#8217;t really noticed that any of those types actually do any good, at least not ethically. Any of you Dear Readers have experience with app marketers that were actually worth the trouble to employ?</p>
<p>UPDATES:</p>
<p><a href="http://maniacdev.com/2012/05/app-review-sites-listing-adds-50-sites-traffic-rankings-updated/">App Review Sites Listing Adds 50+ Sites – Traffic Rankings Updated</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexcurylo.com/blog/2012/05/11/marketing-tutorial-series/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OPEventTracker</title>
		<link>http://www.alexcurylo.com/blog/2012/05/09/opeventtracker/</link>
		<comments>http://www.alexcurylo.com/blog/2012/05/09/opeventtracker/#comments</comments>
		<pubDate>Wed, 09 May 2012 15:11:18 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.alexcurylo.com/?p=3092</guid>
		<description><![CDATA[This is a handy addition to your bag of tricks:<br />
Extremely Handy iOS UI Event Tracking Library (Perfect For The Performance Obsessed)<br />
<br />
Anyone who has used an iOS device has experienced the frustration caused by a stuttering or pausing user interface.<br />
While users may not notice these small hiccups on the desktop, it’s impossible to miss on the iPhone or iPad where the only thing on the screen is your app.<br />
I’ve mentioned an excellent guide on multithreading with ...]]></description>
			<content:encoded><![CDATA[<p>This is a handy addition to your bag of tricks:</p>
<p><a href="http://maniacdev.com/2012/05/extremely-handy-ios-ui-event-tracking-library-perfect-for-the-performance-obsessed/">Extremely Handy iOS UI Event Tracking Library (Perfect For The Performance Obsessed)</a></p>
<blockquote>
<p>Anyone who has used an iOS device has experienced the frustration caused by a stuttering or pausing user interface.</p>
<p>While users may not notice these small hiccups on the desktop, it’s impossible to miss on the iPhone or iPad where the only thing on the screen is your app.</p>
<p>I’ve mentioned <a href="http://maniacdev.com/2011/07/tutorial-ios-multithreading-with-grand-central-dispatch-gcd-basics/">an excellent guide on multithreading with GCD</a> so many of these situations can be avoided, but sometimes you need to do things in the main thread that could be disrupt the user’s experience.</p>
<p>Today I came across <a href="https://github.com/mbrandonw/OPEventTracker">an open source library that tracks UI events</a> which is perfect for those times&#8230;</p>
</blockquote>
<p>Specifically, if you have any content that refreshes off the web, it would be nice to hold off while the user is actively interacting with it, wouldn&#8217;t it?</p>
<p>Honorable mention to an interesting pattern of packaging notifications we hadn&#8217;t encountered before:</p>
<pre class="brush: objc; title: ; notranslate">
extern const struct OPEventTrackerNotifications {
   __unsafe_unretained NSString *started;
   __unsafe_unretained NSString *stopped;
} OPEventTrackerNotifications;

const struct OPEventTrackerNotifications OPEventTrackerNotifications = {
   .started = @&quot;OPEventTrackerNotificationStarted&quot;,
   .stopped = @&quot;OPEventTrackerNotificationStopped&quot;,
};
</pre>
</p>
<p>That is rather more elegant than the long list of clumsy names scattered around the code we generally use, indeed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexcurylo.com/blog/2012/05/09/opeventtracker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xcode Grab Bag</title>
		<link>http://www.alexcurylo.com/blog/2012/05/06/xcode-grab-bag/</link>
		<comments>http://www.alexcurylo.com/blog/2012/05/06/xcode-grab-bag/#comments</comments>
		<pubDate>Mon, 07 May 2012 02:52:10 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.alexcurylo.com/?p=3088</guid>
		<description><![CDATA[Here&#8217;s a collection of tips and tricks for dealing with The Xcode Experience™ as your project management needs get complex; we&#8217;re quoting some parts particularly novel to us, but all of these are worth reading thoroughly!<br />
Managing Large iOS Projects<br />
<br />
Non-code assets for static libraries<br />
There are occasions when static libraries require assets, e.g., images and sound files. Sub-projects and projects in the same workspace share a build directory and Xcode manages the build order of each project so ...]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a collection of tips and tricks for dealing with The Xcode Experience™ as your project management needs get complex; we&#8217;re quoting some parts particularly novel to us, but all of these are worth reading thoroughly!</p>
<p><a href="http://benedictcohen.co.uk/blog/archives/258">Managing Large iOS Projects</a></p>
<blockquote>
<p>Non-code assets for static libraries</p>
<p>There are occasions when static libraries require assets, e.g., images and sound files. Sub-projects and projects in the same workspace share a build directory and Xcode manages the build order of each project so that the main target is always built last. Because of this we can add build phases to our main project and sub-project which copy static library assets into the main bundle…</p>
<p>Improve performance by moving run time operations to compile time</p>
<p>To improve performance move expensive operations from run time to build time and cache the result. This can be achieved by creating an OS X ‘Command Line Tool’ target that runs as part of the bundles build process. Core Data can be used to store the data created at build time (Core Data is cross platform so a Core Data store that is created on OS X can be read by iOS)&#8230;</p>
</blockquote>
<p><a href="http://www.scienceathand.com/idevblogaday/custom-build-phases-and-scripts/">Custom Build Phases and Scripts</a></p>
<blockquote>
<p>So one bug, that I manage to repeat just about every project, is errors with the constants that reference resources. I get the names of PNG files, tags and identifiers wrong all the time. Or I change the name in the resource, even something simple like capitalization. Fortunately with enough testing these errors come to light. But I’ve also solved this problem before. And in a way that uses the compiler to test for some form of correctness. The simple solution is to create a process that preprocesses the resources and creates a source file with all the constants.</p>
<p>But how to drive the preprocess? Xcode custom build phases and custom build scripts are nearly ideal for this type of work&#8230;</p>
</blockquote>
<p><a href="http://www.blog.montgomerie.net/easy-xcode-static-library-subprojects-and-submodules">Easy Xcode Static Library Subprojects and Submodules</a></p>
<blockquote>
<p><i>In which a method is presented for reliably building static libraries with subprojects in Xcode, and it is suggested that this method, combined with Git submodules or other similar mechanisms, provides the best way to share libraries, frameworks, or other code between projects…</i></p>
</blockquote>
<p><a href="http://atastypixel.com/blog/avoiding-duplicate-symbol-issues-when-using-common-utilities-within-a-static-library/">Avoiding duplicate symbol issues when using common utilities within a static library</a></p>
<blockquote>
<p>&#8230;Use the preprocessor to rename the symbols automatically during the build phase. This is done by adding a series of -DOldSymbol=NewSymbol flags to the ‘Other C Flags’ build setting – like -DTPCircularBuffer=ABCircularBuffer, for instance&#8230;</p>
</blockquote>
<p><a href="http://stackoverflow.com/questions/2053029/how-exactly-does-attribute-constructor-work">How exactly does __attribute__((constructor)) work?</a></p>
<blockquote>
<p>1. It&#8217;s run when a shared library is loaded, typically during program startup… NOTE: Although this syntax is specific to GCC, LLVM and Clang have been written to support it as well, and code compiled using Clang-LLVM seems to work just like GCC-compiled code.</p>
</blockquote>
<p><a href="http://twobitlabs.com/2012/01/excluding-files-from-production-xcode-builds/">Slim down your iOS app by excluding files from production builds</a></p>
<blockquote>
<p>&#8230;You won’t find this feature in Apple’s documentation. But it does exist in the form of a user-defined build setting called EXCLUDED_SOURCE_FILE_NAMES and it’s a really handy feature. I’ll use TestFlight in this example but you can use this approach to exclude any files from a build&#8230;</p>
</blockquote>
<p><a href="http://maniacdev.com/2012/04/open-source-project-providing-an-api-for-manipulating-xcode-projects/">Open Source Project Providing An API For Manipulating Xcode Projects</a></p>
<blockquote>
<p>&#8230;<a href="https://github.com/expanz/xcode-editor">This project</a> provides an API for editing Xcode projects. Through the API you can perform many different manipulations directly through code such as adding a file to a project, adding frameworks, and more&#8230;</p>
</blockquote>
<p>And to finish up with one on working practices, for those of us still finding Xcode 4 gets in our way more often than Xcode 3 did:</p>
<p><a href="http://brian-webster.tumblr.com/post/22060296528/how-to-make-xcode-4s-ui-work-for-you-maybe">How to make Xcode’s UI work for you (maybe)</a></p>
<p>(maybe) is a good way to put it, yes. But it is becoming less loathsome with some work setting up designated tabs, we&#8217;ll grant that much.</p>
<p>UPDATES:</p>
<p><a href="http://atastypixel.com/blog/compiling-image-resources-into-a-static-library/">Compiling Image Resources into a Static Library</a></p>
<p><a href="http://oclint.org/">OCLint: A static source code analysis tool for Objective-C and related languages</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexcurylo.com/blog/2012/05/06/xcode-grab-bag/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Review: Test-Driven iOS Development</title>
		<link>http://www.alexcurylo.com/blog/2012/05/05/review-test-driven-ios-development/</link>
		<comments>http://www.alexcurylo.com/blog/2012/05/05/review-test-driven-ios-development/#comments</comments>
		<pubDate>Sat, 05 May 2012 17:01:28 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Reviews]]></category>

		<guid isPermaLink="false">http://www.alexcurylo.com/?p=3085</guid>
		<description><![CDATA[So we imagine that if you&#8217;re reading this, chances are that you&#8217;re pretty confident in your programming skills and figure that the optimal development methodology is for people to stay out of your way. We understand. Spent better than two decades repeatedly proving so, in fact. But recently we&#8217;ve been shipping additions to a growing family of generally accoladed sports apps; and that has demonstrated to us nicely that the problem with that approach is that it scales past a ...]]></description>
			<content:encoded><![CDATA[<p>So we imagine that if you&#8217;re reading this, chances are that you&#8217;re pretty confident in your programming skills and figure that the optimal development methodology is for people to <a href="http://programming-motherfucker.com/">stay out of your way</a>. We understand. Spent better than two decades repeatedly proving so, in fact. But recently we&#8217;ve <a href="http://www.alexcurylo.com/blog/2012/02/21/new-york-knicks-official-app/">been</a> <a href="http://www.atimi.com/blog/atimi-launches-%E2%80%98-official-winnipeg-jets-mobile-app-powered-mts%E2%80%99">shipping</a> additions to a <a href="http://www.atimi.com/blog/your-team-ready-playoffs">growing family</a> of <a href="http://www.atimi.com/blog/app-store-accolades">generally accoladed</a> sports apps; and that has demonstrated to us nicely that the problem with that approach is that it scales past a single app … questionably. At the moment with nine teams in three sports things are still reasonably manageable, but that won&#8217;t last, if you get our drift. So we have <a href="http://www.alexcurylo.com/blog/2012/03/10/roundup-testing/">been looking into</a> things we can do to optimize the scaling process. Which, serendipitously, brings us to <a href="http://www.slideshare.net/iamleeg/presentations">Graham Lee</a>&#8216;s new book:</p>
<div style="text-align: center;">
  <iframe src="http://rcm.amazon.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;npa=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=undthebri-20&amp;o=1&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=ss_til&amp;asins=B007RNK0W6" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</div>
<p>We&#8217;d actually talked with Graham briefly after his TDD presentation at <a href="http://www.alexcurylo.com/blog/2011/04/14/vtm_iphone-resources/">the Seattle VTM conference last year</a>, where he&#8217;d <i>just about</i> convinced us that TDD might be something other than the development-slowing waste of time we&#8217;d previously observed it to be at places that applied it as a management-imposed afterthought, so we had fairly high expectations of the book; and why yes, yes indeed it would be an excellent book even if it wasn&#8217;t the one and only out there for iOS on the subject &#8212; matter of fact, we unconditionally recommend it to anyone who wants to be a better iOS programmer!</p>
<p>If you&#8217;ve already got the TDD religion from other platforms, you can jump directly to Chapter 4 &#8220;Tools For Testing&#8221;; those of us <a href="http://www.wilshipley.com/blog/2005/09/unit-testing-is-teh-suck-urr.html">of a more skeptical bent</a> will find reading through Chapters 1-3 an nice gentle progression through demonstrating the value of testing at all through to &#8220;How to Write a Unit Test&#8221; and how that leads to safely refactorable design.</p>
<p>Said Chapter 4 goes over the Xcode built-in support thoroughly and introduces <a href="http://code.google.com/p/google-toolbox-for-mac/wiki/iPhoneUnitTesting">GTM</a>, <a href="http://gabriel.github.com/gh-unit/">GHUnit</a>, <a href="https://github.com/philsquared/Catch/wiki/Catch-for-Objective-C">CATCH</a>, and <a href="http://ocmock.org/">OCMock</a> on the coding side, plus <a href="http://hudson-ci.org/">Hudson</a>/<a href="http://jenkins-ci.org/">Jenkins</a> and <a href="https://github.com/thoughtworks/cruisecontrol.rb">CruiseControl</a> on the integration side. That covers anything you&#8217;re even remotely likely to encounter in existing projects.</p>
<p>Chapter 5 &#8220;Test-Driven Development of an iOS App&#8221; starts the 6 chapter process of developing BrowseOverflow, a StackOverflow question browser; full source <a href="https://github.com/iamleeg/BrowseOverflow">available on github</a> for everyone. Note that we say &#8220;process of&#8221; rather than &#8220;walkthrough of&#8221; developing; these aren&#8217;t 5 chapters of simple lecturing, at every step the analysis and alternatives are discussed thoroughly, with asides on design patterns, refactoring, and all kinds of good stuff, finishing up with Chapter 11 on general design principles derived from the process, thoroughly applicable even if you&#8217;re not using TDD at all.</p>
<p>Finishing up the book, Chapter 12 &#8220;Applying Test-Driven Development to an Existing Project&#8221; gives some straightforward advice on grafting testing into your ongoing development, and Chapter 13 &#8220;Beyond Today&#8217;s Test-Driven Development&#8221; surveys techniques not fully baked for iOS development yet.</p>
<p>Overall, we&#8217;d say that pretty much every &#8212; no, seriously, pretty much <i>every</i> &#8212; iOS programmer would solidly benefit from reading this book. Even if you&#8217;re already developing with solid test coverage, there&#8217;s almost certainly some insights here you&#8217;ll find useful. And if you&#8217;re in the position of most of us where you&#8217;re using tests half-heartedly and more likely not at all, you should put reading this to figure out just how this TDD thing could do you some good at the top of your list of self-improvement tasks. And if you&#8217;re new to development in general, why then this should be pretty much the next thing in your programming curriculum after design patterns!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexcurylo.com/blog/2012/05/05/review-test-driven-ios-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Securing Data</title>
		<link>http://www.alexcurylo.com/blog/2012/05/03/securing-data/</link>
		<comments>http://www.alexcurylo.com/blog/2012/05/03/securing-data/#comments</comments>
		<pubDate>Thu, 03 May 2012 13:46:01 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.alexcurylo.com/?p=3081</guid>
		<description><![CDATA[If you&#8217;re at all concerned about security of data stored on your users&#8217; devices, here&#8217;s a good introduction to<br />
Securing Data in iOS<br />
<br />
There are numerous ways to secure data that you are storing on an iOS device.<br />
The simplest way is to take advantage of the iOS Data Protection (iOS 4+). This can be accomplished by setting an attribute on a file like this…<br />
A Core Data sqlite store can also be encrypted by setting the NSFileProtectionKey file ...]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re at all concerned about security of data stored on your users&#8217; devices, here&#8217;s a good introduction to</p>
<p><a href="http://blog.chariotsolutions.com/2012/04/securing-data-in-ios.html">Securing Data in iOS</a></p>
<blockquote>
<p>There are numerous ways to secure data that you are storing on an iOS device.</p>
<p>The simplest way is to take advantage of the iOS Data Protection (iOS 4+). This can be accomplished by <a href="https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSFileManager_Class/Reference/Reference.html#//apple_ref/doc/uid/20000305-SW109">setting an attribute on a file</a> like this…</p>
<p>A Core Data sqlite store can also be encrypted by setting the NSFileProtectionKey file attribute to one of the above values (after you create your persistent store coordinator).</p>
<p>However, an important thing to realize is that this type of data protection <a href="http://support.apple.com/kb/HT4175">requires the device to have a passcode set</a> on it.</p>
<p>What if you really need to insure that your data is protected regardless of whether the device has a passcode set? One way is to use the CommonCrypto libraries from Apple. This can be fairly complex. There is <a href="http://robnapier.net/blog/aes-commoncrypto-564">a great write up here</a> from Rob Napier on what&#8217;s involved. Fortunately, he has also provided <a href="https://github.com/rnapier/RNCryptor">a wrapper that greatly simplifies this process</a>…</p>
<p>One more way to protect your data, specifically data that you want to store in a SQLite database, would be <a href="http://sqlcipher.net/">to use SQLCipher</a>. SQLCipher encrypts/decrypts data at the page level and is transparent to your application code. You still use the standard SQLite APIs, with one additional method call when accessing the database (passing your key to sqlite). There are excellent instructions on <a href="http://sqlcipher.net/ios-tutorial/">setting it up for use in an iOS project here</a>.</p>
</blockquote>
<p>Any other techniques for secure storage we should be aware of, Dear Readers?</p>
<p>h/t: <a href="https://twitter.com/#!/romainbriche/status/197264080950673408">@romainbriche</a>!</p>
<p>UPDATE:</p>
<p>And speaking of security, check out this whitepaper: <a href="http://cocoamanifest.net/linked/2012/05/ios-application-insecurity.html">iOS Application Insecurity</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexcurylo.com/blog/2012/05/03/securing-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scale Something</title>
		<link>http://www.alexcurylo.com/blog/2012/04/29/scale-something/</link>
		<comments>http://www.alexcurylo.com/blog/2012/04/29/scale-something/#comments</comments>
		<pubDate>Mon, 30 Apr 2012 05:26:36 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.alexcurylo.com/?p=3079</guid>
		<description><![CDATA[This is a good read in the &#8220;problems we&#8217;d love to have one day&#8221; category:<br />
Scale Something: How Draw Something rode its rocket ship of growth<br />
<br />
… A few days after Draw Something launched, we started to notice something…strange. The game was growing &#8212; on its own. And it was growing fast. On release day, it reached 30,000 downloads. About 10 days later, the rocket ship lifted off &#8212; downloads accelerated exponentially, soon topping a million&#8230;<br />
<br />
Break out ...]]></description>
			<content:encoded><![CDATA[<p>This is a good read in the &#8220;problems we&#8217;d love to have one day&#8221; category:</p>
<p><a href="http://www.gamasutra.com/view/news/168799/Scale_Something_How_Draw_Something_rode_its_rocket_ship_of_growth.php">Scale Something: How Draw Something rode its rocket ship of growth</a></p>
<blockquote>
<p>… A few days after <i>Draw Something</i> launched, we started to notice something…strange. The game was growing &#8212; on its own. And it was growing fast. On release day, it reached 30,000 downloads. About 10 days later, the rocket ship lifted off &#8212; downloads accelerated exponentially, soon topping a million&#8230;</p>
</blockquote>
<p>Break out the champagne time? Not so fast:</p>
<blockquote>
<p>… The smooth sailing was short lived. We quickly started seeing spikes and other really strange performance issues. At this point, we were pretty much working around the clock. Things got really bad around 1 a.m. one night, which is when we realized the main issue &#8212; our cloud data store was throwing errors on 90 percent of our requests. Shortly after, we received an email from our vendor telling us we were &#8220;too hot&#8221; and causing issues, so they would have to start rate limiting us.</p>
<p>At this point, the service was pretty much a black box to us, and we needed to gain more control. We were now receiving around 30 drawings per second, a huge number (at least to us at the time). So there we were, 1 a.m. and needing a completely new backend that can scale and handle our current traffic&#8230;</p>
<p>… At one point our growth was so huge that our players &#8212; millions of them &#8212; were doubling every day. It&#8217;s actually hard to wrap your head around the fact that if your usage doubles every day, that probably means your servers have to double every day too. Thankfully our systems were pretty automated, and we were bringing up tons of servers constantly. Eventually we were able to overshoot and catch up with growth by placing one order of around 100 servers. Even with this problem solved, we noticed bottlenecks elsewhere.</p>
<p>This had us on our toes and working 24 hours a day. I think at one point we were up for around 60-plus hours straight, never leaving the computer. We had to scale out web servers using DNS load balancing, we had to get multiple HAProxies, break tables off MySQL to their own databases, transparently shard tables, and more. This was all being done on demand, live, and usually in the middle of the night…</p>
</blockquote>
<p>Heh. We lived through our own minor server capacity crisis a couple months back, and that was scary enough; but this, this is big boy stuff. Salutary reminder that it&#8217;s always good to be prepared for success!</p>
<p>h/t: <a href="http://iosdevweekly.com/">iOS Dev Weekly</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexcurylo.com/blog/2012/04/29/scale-something/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TBHintView</title>
		<link>http://www.alexcurylo.com/blog/2012/04/27/tbhintview/</link>
		<comments>http://www.alexcurylo.com/blog/2012/04/27/tbhintview/#comments</comments>
		<pubDate>Fri, 27 Apr 2012 14:12:44 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.alexcurylo.com/?p=3075</guid>
		<description><![CDATA[This is a sweet-looking library for easily adding helper popups to your app:<br />
touchbee / TBHintView<br />
<br />
<br />
  <br />
<br />
<br />
<br />
Easy to use<br />
Multiple page support<br />
Able to specify title text and icon per page<br />
Page can contain either text, one image or a custom view<br />
Various presentation animation types<br />
Hint can be docked to top or bottom within view<br />
Manually dismissed by user or auto-dismiss after certain period<br />
Background and text colors customizable<br />
Perform custom ...]]></description>
			<content:encoded><![CDATA[<p>This is a sweet-looking library for easily adding helper popups to your app:</p>
<p><a href="https://github.com/touchbee/TBHintView">touchbee / TBHintView</a></p>
<p></p>
<div style="text-align: center;">
  <img src="http://www.alexcurylo.com/wp-content/uploads/2012/04/Screen-Shot-2012-04-27-at-7.18.13-AM.png" width="255" height="480" alt="Screen Shot 2012-04-27 at 7.18.13 AM.png" />
</div>
<blockquote>
<ol>
<li>Easy to use</li>
<li>Multiple page support</li>
<li>Able to specify title text and icon per page</li>
<li>Page can contain either text, one image or a custom view</li>
<li>Various presentation animation types</li>
<li>Hint can be docked to top or bottom within view</li>
<li>Manually dismissed by user or auto-dismiss after certain period</li>
<li>Background and text colors customizable</li>
<li>Perform custom code within block upon hint dismissal</li>
</ol>
</blockquote>
<p>Certainly much more elegant than the alerts we usually use for that kind of thing!</p>
<p>h/t: <a href="http://maniacdev.com/2012/04/open-source-ios-control-for-easily-adding-elegant-customizable-hint-panels-into-an-app/">ManiacDev</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexcurylo.com/blog/2012/04/27/tbhintview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobile Game Engines</title>
		<link>http://www.alexcurylo.com/blog/2012/04/26/mobile-game-engines/</link>
		<comments>http://www.alexcurylo.com/blog/2012/04/26/mobile-game-engines/#comments</comments>
		<pubDate>Thu, 26 Apr 2012 13:49:24 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.alexcurylo.com/?p=3070</guid>
		<description><![CDATA[Well, this looks like pretty much the veritably ultimate game engine selection resource &#8212; MobileGameEngines.com:<br />
<br />
  <br />
<br />
Lets you search for selected features easily, and each entry has basic descriptions, collects links to books on the framework, and allows comments. 57 engines listed for iOS at the moment, covering pretty near each and every game engine that we&#8217;ve ever mentioned in passing around here (only recent omission we noticed is that Blackberry framework ManiacDev found) and a ...]]></description>
			<content:encoded><![CDATA[<p>Well, this looks like pretty much the veritably <i>ultimate</i> game engine selection resource &#8212; <a href="http://mobilegameengines.com/">MobileGameEngines.com</a>:</p>
<div style="text-align: center;">
  <img src="http://www.alexcurylo.com/wp-content/uploads/2012/04/Screen-Shot-2012-04-26-at-6.28.24-AM.png" width="480" height="164" alt="Screen Shot 2012-04-26 at 6.28.24 AM.png" />
</div>
<p>Lets you search for selected features easily, and each entry has basic descriptions, collects links to books on the framework, and allows comments. 57 engines listed for iOS at the moment, covering pretty near <a href="http://www.alexcurylo.com/blog/2011/08/23/unreal-engine/">each</a> <a href="http://www.alexcurylo.com/blog/2011/07/01/ninevehgl/">and</a> <a href="http://www.alexcurylo.com/blog/2011/06/26/cross-platform-developments/">every</a> <a href="http://www.alexcurylo.com/blog/2011/06/03/moai-sdk/">game</a> <a href="http://www.alexcurylo.com/blog/2011/01/30/game-engine-listings/">engine</a> <a href="http://www.alexcurylo.com/blog/2010/10/10/galaxy-engine/">that</a> <a href="http://www.alexcurylo.com/blog/2010/05/28/sparrow-framework/">we&#8217;ve</a> <a href="http://www.alexcurylo.com/blog/2009/12/13/bork3d-engine/">ever</a> <a href="http://www.alexcurylo.com/blog/2009/09/13/authoring-gamesalad/">mentioned</a> <a href="http://www.alexcurylo.com/blog/2009/06/26/environment-ansca/">in</a> <a href="http://www.alexcurylo.com/blog/2009/04/01/3d-engine-roundup/">passing</a> <a href="http://www.alexcurylo.com/blog/2009/03/04/library-oolong-engine/">around</a> <a href="http://www.alexcurylo.com/blog/2008/10/26/unity-for-iphone/">here</a> (only recent omission we noticed is that <a href="http://maniacdev.com/2012/04/beta-of-open-source-3d-game-framework-with-ios-support-released-by-blackberry/">Blackberry framework ManiacDev found</a>) and a great deal more besides!</p>
<p>h/t: <a href="https://twitter.com/#!/gaminghorror/status/194440202968760321">@gaminghorror</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexcurylo.com/blog/2012/04/26/mobile-game-engines/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SVPullToRefresh</title>
		<link>http://www.alexcurylo.com/blog/2012/04/25/svpulltorefresh/</link>
		<comments>http://www.alexcurylo.com/blog/2012/04/25/svpulltorefresh/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 14:37:35 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.alexcurylo.com/?p=3065</guid>
		<description><![CDATA[This looks handy if you&#8217;d like to add pull-to-refresh to your lists easily, like one single line of code to add a refresh block:<br />
samvermette / SVPullToRefresh<br />
<br />
SVPullToRefresh allows you to easily add pull-to-refresh functionality to any UIScrollView subclass with only 1 line of code. Instead of depending on delegates and/or subclassing UIViewController, SVPullToRefresh extends UIScrollView with a addPullToRefreshWithActionHandler: method as well as a pullToRefreshView property….<br />
<br />
And if you&#8217;re not as scaredy-cat of possible patent issues as the ...]]></description>
			<content:encoded><![CDATA[<p>This looks handy if you&#8217;d like to add pull-to-refresh to your lists easily, like <a href="http://samvermette.com/314">one single line of code to add a refresh block</a>:</p>
<p><a href="https://github.com/samvermette/SVPullToRefresh">samvermette / SVPullToRefresh</a></p>
<blockquote>
<p>SVPullToRefresh allows you to easily add pull-to-refresh functionality to any UIScrollView subclass with only 1 line of code. Instead of depending on delegates and/or subclassing UIViewController, SVPullToRefresh extends UIScrollView with a addPullToRefreshWithActionHandler: method as well as a pullToRefreshView property….</p>
</blockquote>
<p>And if you&#8217;re not as scaredy-cat of possible patent issues as the place that we&#8217;d really like to add pull-to-refresh to right now is, of course. But that&#8217;s another battle altogether…</p>
<p>h/t: <a href="https://twitter.com/#!/samvermette/status/194657307735506944">@samvermette</a>, <a href="http://maniacdev.com/2012/04/open-source-component-that-enables-pull-to-refresh-with-one-line-of-code/">ManiacDev</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexcurylo.com/blog/2012/04/25/svpulltorefresh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

