<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>aspyreapps.com » blog</title>
	
	<link>http://www.aspyreapps.com</link>
	<description />
	<lastBuildDate>Wed, 16 May 2012 07:47:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/AspyreApps" /><feedburner:info uri="aspyreapps" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>An Interview with Beginning iOS Dev</title>
		<link>http://feedproxy.google.com/~r/AspyreApps/~3/Axvjf5FPsuQ/</link>
		<comments>http://www.aspyreapps.com/blog/an-interview-with-beginning-ios-dev/#comments</comments>
		<pubDate>Wed, 16 May 2012 06:14:35 +0000</pubDate>
		<dc:creator>Ben Williams</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[idevblogaday]]></category>

		<guid isPermaLink="false">http://www.aspyreapps.com/?p=1365</guid>
		<description><![CDATA[I was recently asked by Beginning iOS Development if I would like to take part in an interview, ...]]></description>
			<content:encoded><![CDATA[<p>I was recently asked by <a href="http://www.beginningiosdev.com/">Beginning iOS Development</a> if I would like to take part in an interview, which sounded like fun to me. We discussed a range of things, including marketing, designs, my background, and development life in general. I&#8217;m really happy with how it all turned out, so if this sounds like it might be of interest, wander on over and have a read: <a href="http://www.beginningiosdev.com/interviews/interview-with-ben-williams-of-aspyre-apps">http://www.beginningiosdev.com/interviews/interview-with-ben-williams-of-aspyre-apps</a></p>
<hr />
<em>Enjoyed this post? Think we&#8217;re clever? Subscribe via <a href="http://feeds.feedburner.com/AspyreApps">RSS</a> or follow us on <a href="http://twitter.com/AspyreApps">Twitter</a></em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aspyreapps.com/blog/an-interview-with-beginning-ios-dev/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.aspyreapps.com/blog/an-interview-with-beginning-ios-dev/</feedburner:origLink></item>
		<item>
		<title>Freelance or In-House?</title>
		<link>http://feedproxy.google.com/~r/AspyreApps/~3/tNvUM_s0frs/</link>
		<comments>http://www.aspyreapps.com/blog/freelance-or-in-house/#comments</comments>
		<pubDate>Wed, 02 May 2012 02:11:00 +0000</pubDate>
		<dc:creator>Ben Williams</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[idevblogaday]]></category>

		<guid isPermaLink="false">http://www.aspyreapps.com/?p=1360</guid>
		<description><![CDATA[I&#8217;ve been calling myself an iOS developer for a bit over 3 years now, and during that time ...]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been calling myself an iOS developer for a bit over 3 years now, and during that time I&#8217;ve released quite a number of apps on to the App Store. Some of these have been in-house apps that I&#8217;ve developed for myself, and some have been work-for-hire apps that I&#8217;ve written as a freelancer. As I&#8217;m an independent, the choice of where I spend my time is up to me, but I often find it difficult to know the answer to that choice. This post will explore some of those options.</p>
<p>At one end of the scale, you might spend all of your available time working on your own apps. I&#8217;ve been lucky enough to work on some really great contract jobs, but none of these are quite as satisfying as taking your own idea all the way to version 1.0. I&#8217;ve also been fortunate enough to have had apps featured on the App Store, not once but several times. There&#8217;s plenty of money to be made on the App Store and the dreams of getting inside that Top 100 do sometimes come true. However, it&#8217;s a tough market. You need a certain combination of skill, luck and persistence to succeed in the App Store, and there&#8217;s a good chance that you&#8217;ll spend months on your dream only to find it sells less than a few copies a day. In my mind, throwing all of your weight behind in-house app development is the riskiest, but potentially the most rewarding (both financially and emotionally). I think the key to success is keeping a close eye on the market, and developing a keen interest on the strategy &#038; business side of creating apps, instead of just the coding.</p>
<p>On the other hand, you could spend your time doing freelance work. iOS developers are in huge demand at the moment, and if you&#8217;ve got the skills there&#8217;s plenty of good projects out there. Apart from the obvious development skills required, you also need a certain element of people skills &#8211; you&#8217;ll never be a successful freelancer if you don&#8217;t know how to make your clients feel at ease. This doesn&#8217;t come naturally to most developers, but with a bit of practice everyone can do it. The main difficulty then comes down to finding work. A lot of this is all about making connections, going to conferences, going to local developer meetups, being involved with the community, blogging, and so on. Freelance work can also open you up to working on some very cool projects, especially if it&#8217;s with big brands whose apps are bound to get a lot of downloads. This sort of thing also feeds back into itself &#8211; the more freelance work you do, the better your portfolio looks, and so the easier it is to get more work.</p>
<p>There often seems to be a bit of an argument over whether you should charge by the hour or quoted amounts for freelance work. I&#8217;m a strong believer that quoted amounts are the way to go. Yes, sometimes you lose out and a job takes longer than you estimated. This is a great incentive for learning how to estimate properly, and track your time sufficiently. It also gives you clients peace of mind that their costs will be relatively fixed unless they change the scope. Removing the uncertainty of how much a project is going to cost gives you a big advantage over other freelancers. And of course, for every job where you don&#8217;t underestimate, you overestimate &#8211; which works out in your favour.</p>
<p>Another option to consider is whether you should keep your costs low, but ask for a percentage of sales in return. If you&#8217;re doing freelance work, you&#8217;ll hear this proposition a lot. My advice is to steer well clear of it. Unless you are positive that the idea is definite winner, it&#8217;s not worth risking your time and money on. Not only will this app be entering a very crowded market, but you&#8217;re also relying on the client to create income for you &#8211; which all comes down to how good their app really is, and how good they are at marketing and supporting the app. I believe in creating my own destiny rather than relying on others, and so I almost always insist on full payment for the job. If the client believes in the app that strongly, then they should be willing to pay for it to be developed in full.</p>
<p>So, there&#8217;s a few different options there, and if you have any others I&#8217;d love to hear about them. I&#8217;m fortunate enough that I have a few good clients who keep sending work my way, and so I usually let them dictate my time. If a project comes my way, I&#8217;ll work on it, and in the down-time I work on my own apps. This provides enough of an income in order to support myself, whilst slowly building up my own portfolio of apps (and passive income). Sometimes this can be a little frustrating as a lot of work will come in all at once, and I&#8217;d rather be working on my own apps, but I&#8217;m the first to admit that it&#8217;s a good problem to have. And until I hit on that winning app which gets all the way to number 1, it&#8217;s a necessary one as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aspyreapps.com/blog/freelance-or-in-house/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		<feedburner:origLink>http://www.aspyreapps.com/blog/freelance-or-in-house/</feedburner:origLink></item>
		<item>
		<title>GeekDesk Max – A Standing Desk Review</title>
		<link>http://feedproxy.google.com/~r/AspyreApps/~3/6HLhi0o7ng4/</link>
		<comments>http://www.aspyreapps.com/blog/geekdesk-max-a-standing-desk-review/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 07:07:50 +0000</pubDate>
		<dc:creator>Ben Williams</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[idevblogaday]]></category>

		<guid isPermaLink="false">http://www.aspyreapps.com/?p=1348</guid>
		<description><![CDATA[As far back as I can remember, I&#8217;ve wanted a standing desk. There&#8217;s plenty of research out there ...]]></description>
			<content:encoded><![CDATA[<p>As far back as I can remember, I&#8217;ve wanted a standing desk. There&#8217;s plenty of research out there which indicates that sitting in a chair all day isn&#8217;t good for you, but this has never really been much of an influence on me. I simply believe that with most things in life, the key is moderation &#8211; and sitting for 8-10 hours at my desk, continued by several hours of sitting whilst eating dinner, watching TV or reading, isn&#8217;t moderation.</p>
<p>Keeping this in mind, the main feature I wanted in such a desk is that it&#8217;s quick and easy to change the height. I like the idea of switching between standing and sitting throughout the day. I believe you are losing a lot of the benefits by using a desk that is intended to stay at one height, even if that height is standing. Similarly, the height needs to be easily adjustable. The more difficult it is to change height, the less likely you are to do so regularly.</p>
<p>I&#8217;d always heard good things about GeekDesk, who specialise in height adjustable desks. Unfortunately for me, they never had something that suited my needs &#8211; that is, until the <a href="http://www.geekdesk.com/default.asp?contentID=622">GeekDesk Max</a> came along. The Max has a range of 23-49 inches, but most importantly, it has programmable presets. It sounded perfect, so I decided to pull the trigger.</p>
<p>As I live in Australia, I needed to have it shipped internationally, as well as with a different power supply. All this really meant was that a few emails were exchanged to place the order, rather than buying directly on the GeekDesk website. Really, the process was simple. Unfortunately, when my GeekDesk arrived some parts had suffered damage in transit. I still don&#8217;t really know how this happened, as the parts were pretty well packaged, and the boxes themselves didn&#8217;t seem to have been damaged much. Regardless, the GeekDesk support was very helpful, and although it was annoying having to wait for replacement parts, the issue was handled perfectly. How a company handles things when they go wrong can speak volumes.</p>
<p>Once I had all the parts, it was time for construction! It took me roughly 3 hours from start to finish to put everything together, but if I&#8217;m being honest, most people would do it in half the time. It was the weekend and putting things together is part of the fun for me, so I took my time. The instructions are clear, and there&#8217;s some nice spots for hiding all the cables away. Once the desk is setup, you&#8217;d barely know it was anything but a regular desk.</p>
<p>Changing the height of the desk is super simple. Press the up button, desk goes up. Press the down button, desk goes sideways &#8211; just kidding, it goes down. Being able to key in presets though is the real power of the Max model. All I need to do is press the number 1 button, and the desk raises up to the perfect standing height for me. Press number 2, and roughly 20 seconds later I&#8217;m all ready for sitting. The operation is very smooth, and much quieter than I would have expected. The desk also has an acceleration/deceleration curve, so it doesn&#8217;t stop suddenly when it gets to the pre-programmed height.</p>
<p>If you&#8217;re still reading, you&#8217;ve probably got the point by now &#8211; the Max is a fantastic height adjustable desk. It&#8217;s solid, works very smoothly, and it couldn&#8217;t be easier to change heights. But what&#8217;s it like to actually use?</p>
<p>So far, it&#8217;s fantastic. I&#8217;ve spent the last 2 days switching between standing and sitting every half hour. The 20 seconds or so that it takes to change the height gives me a good chance to shake out my legs. It&#8217;s much easier than I expected to stand for a period of time, and I love being able to just walk in and out of the room as I please. I don&#8217;t know why, but it feels so much nicer to walk up to your computer, rather than plonking yourself down in a chair.</p>
<p>I&#8217;m quietly confident that I&#8217;ll never go back to sitting all day ever again.</p>
<p><a href="http://www.aspyreapps.com/wp/wp-content/uploads/2012/04/geekdesk.jpg"><img src="http://www.aspyreapps.com/wp/wp-content/uploads/2012/04/geekdesk-225x300.jpg" alt="" title="GeekDesk Max" width="225" height="300" class="aligncenter size-medium wp-image-1356" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.aspyreapps.com/blog/geekdesk-max-a-standing-desk-review/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://www.aspyreapps.com/blog/geekdesk-max-a-standing-desk-review/</feedburner:origLink></item>
		<item>
		<title>Thoughts on iOS 6</title>
		<link>http://feedproxy.google.com/~r/AspyreApps/~3/Deklcw47BtY/</link>
		<comments>http://www.aspyreapps.com/blog/thoughts-on-ios-6/#comments</comments>
		<pubDate>Mon, 05 Mar 2012 23:48:10 +0000</pubDate>
		<dc:creator>Ben Williams</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[idevblogaday]]></category>

		<guid isPermaLink="false">http://www.aspyreapps.com/?p=1338</guid>
		<description><![CDATA[iOS 6 is no doubt still a long way from being released, but I think if you&#8217;re a ...]]></description>
			<content:encoded><![CDATA[<p>iOS 6 is no doubt still a long way from being released, but I think if you&#8217;re a serious app developer, it&#8217;s time to start giving it some thought. Apple has a tendency to feature apps that show off the platform, so working in some features of a newly released version of iOS is a good strategy for getting your app on the front page of the App Store. I have no inside information, but I think it&#8217;s still possible to take an educated guess at some of the things we&#8217;ll see in iOS 6. Here they are in particular order.</p>
<h2>Siri API</h2>
<p>I think this is a feature many of us are hoping for, but it could go either way. Technically Siri is still a beta product &#8211; a pretty rare occurrence for Apple. I&#8217;d be surprised if they managed to turn around a beta product in 12 months to one that has full third party support. Still, I have no doubt that they&#8217;re working on it, and if it doesn&#8217;t appear in 2012, there&#8217;s a good chance it will in 2013.</p>
<h2>Better Cross-App Communication</h2>
<p>Let&#8217;s face it &#8211; Apple&#8217;s competitors currently provide better options for cross-app communication. Sure, we have URL Schemes, but both Android and Windows Phone 7 have much better options. Apple is really great at crossing off items from the list of &#8220;Things Competitors Do Better&#8221;, and I think there&#8217;ll be some nice improvements in this area for us to play with in iOS 6.</p>
<h2>Share Everywhere</h2>
<p>We&#8217;ve already seen some hints of this in OS X 10.8, so I think there&#8217;s a good chance we&#8217;ll see some improved sharing controls in iOS 6. Although the chances are low, I&#8217;d love to see some built in Facebook sharing functionality.</p>
<h2>Notification Centre Widgets</h2>
<p>Historically, I believe Apple has always liked the idea of widgets. Although they never really made it into iOS, they certainly were given some serious thought. Now that we have the weather and stock widgets in Notification Centre, I think it makes total sense to open this up to third parties. You&#8217;ll have a set amount of space to work with, and data calls will only be allowed when Notification Centre is activated. Some developers are going to come up with some really nice ways to use this feature. Personally, this is an area that I&#8217;m going to concentrate on.</p>
<h2>NFC</h2>
<p>Although this is more of a hardware feature, the possibilities for neat things you could do with Near Field Communications are endless. If NFC finally does make it into the iPhone hardware this year, I&#8217;m expecting it to be fully locked down &#8211; no third party integration for us this year (much like Siri is now). Still, it can&#8217;t hurt to start thinking about what sort of things we could do if we had some NFC APIs.</p>
<h2>Better Location Support</h2>
<p>Apple has already started playing in this area in iOS 5. The Reminders app is a classic example, allowing you to set off a reminder when you leave or enter a certain region. I expect we&#8217;re going to see some even cooler things in this area in iOS 6, although I can honestly say I have no idea what!</p>
<h2>Release Date</h2>
<p>I&#8217;m betting the release date will be early October &#8211; the same time period as iOS 5. This date makes a lot of sense for Apple, as they can hold off announcing iOS 6 until WWDC. What better venue to announce the new features of iOS than at the premier Apple developer conference for the year? I think there&#8217;s very little chance Apple will introduce new iPhone hardware at WWDC this year, and this gives developers a few months to get up to speed before the public release later that year. The iPhone 4S is selling ridiculously well &#8211; it just doesn&#8217;t make sense for Apple to cut it off early. Finally, an October release is just around the corner from Christmas, perfect for a booming quarter.</p>
<p>So that&#8217;s everything on my list. What about yours?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aspyreapps.com/blog/thoughts-on-ios-6/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.aspyreapps.com/blog/thoughts-on-ios-6/</feedburner:origLink></item>
		<item>
		<title>How to Desaturate a UIImage</title>
		<link>http://feedproxy.google.com/~r/AspyreApps/~3/clWuudLA3AA/</link>
		<comments>http://www.aspyreapps.com/blog/how-to-desaturate-a-uiimage/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 22:31:49 +0000</pubDate>
		<dc:creator>Ben Williams</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[idevblogaday]]></category>

		<guid isPermaLink="false">http://www.aspyreapps.com/?p=1327</guid>
		<description><![CDATA[I recently needed to figure out how to take a photo with the camera, and then desaturate it. ...]]></description>
			<content:encoded><![CDATA[<p>I recently needed to figure out how to take a photo with the camera, and then desaturate it. I needed to control the level of desaturation, ranging from completely greyscale, all the way up to the original image. This turned out to be trickier than expected, but in the end the solution was quite simple.</p>
<p>The first useful looking bit of code I found was on StackOverflow. <a href="http://stackoverflow.com/questions/1298867/convert-image-to-grayscale">This code</a> was quick and easy to implement, and works nicely, but unfortunately gives no control over the amount of desaturation. It completely converts the image to greyscale.</p>
<p>StackOverflow then produced another <a href="http://stackoverflow.com/questions/1144768/how-can-i-change-the-saturation-of-an-uiimage">promising looking solution</a>. The DesatView seemed exactly what I was after &#8211; create the view, assign the image, and set the desaturation level. Unfortunately, even setting the level to 100% seemed to result in purple blotches on my photos. I&#8217;m not sure why, but it seemed to be altering the hues somehow, and I didn&#8217;t know enough about it (or have the time) to figure out why.</p>
<p>Next, I came across the <a href="https://developer.apple.com/library/ios/#samplecode/GLImageProcessing/Introduction/Intro.html">GLImageProcessing</a> sample code from Apple. This is an OpenGL ES project, which demonstrates how you can alter the brightness, contrast, saturation, hue and sharpness of an image. As you would expect, the sample code works really nicely, and in fact allows you to both saturate and desaturate an image. I don&#8217;t have any OpenGL ES skills but it wasn&#8217;t too hard to integrate Apple&#8217;s code into my project. Unfortunately for some reason I just couldn&#8217;t get the saturation working. I had no problem with brightness and contrast, but saturation just wouldn&#8217;t work for me. I&#8217;m sure I was doing something wrong, but time was against me.</p>
<p>The solution I settled on turned out to be pretty simple, and in fact used the first greyscale method mentioned at the top of this post. The answer is to create two UIImageViews, with one on top of the other. Assign the same UIImage to both, and then convert the bottom UIImageView to greyscale. By then altering the opacity of the top UIImageView, you get a cheap and easy desaturation effect. If you need 40% desaturation, set the alpha value of the top UIImageView to 0.6. Simple.</p>
<p>If you then need to create a UIImage out of the result, this is pretty easy too:</p>
<pre class="qoate-code">
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0.0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage* desaturatedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
</pre>
<p>This creates a UIImage object out of whatever is currently displayed in the UIView object &#8211; you can even use this for subviews, if you don&#8217;t want to save out your whole UIView.</p>
<p>This turned out to be a good lesson for me. There&#8217;s always more than one way to do things, and the simplest solutions are often the best. It may not be the most performant solution, or even the most intuitive, but the main thing is that it solves the problem. The bonus is that it&#8217;s quite an elegant way of doing it, as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aspyreapps.com/blog/how-to-desaturate-a-uiimage/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.aspyreapps.com/blog/how-to-desaturate-a-uiimage/</feedburner:origLink></item>
		<item>
		<title>Using Cocos2D in a UIKit project</title>
		<link>http://feedproxy.google.com/~r/AspyreApps/~3/hVajbZMUB2E/</link>
		<comments>http://www.aspyreapps.com/blog/using-cocos2d-in-a-uikit-project/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 00:39:45 +0000</pubDate>
		<dc:creator>Ben Williams</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[idevblogaday]]></category>

		<guid isPermaLink="false">http://www.aspyreapps.com/?p=1289</guid>
		<description><![CDATA[I recently needed to add a &#8220;water ripple&#8221; effect to a project. Although there is a simple water ...]]></description>
			<content:encoded><![CDATA[<p>I recently needed to add a &#8220;water ripple&#8221; effect to a project. Although there is a <a href="http://stackoverflow.com/questions/5973530/iphone-having-a-ripple-effect-on-a-uiimageview">simple water ripple effect built-in to the SDK</a>, it really didn&#8217;t fill my needs. It seemed like my only options would be to quickly boost my OpenGL skills (from none to something), or find an alternative. I soon found a <a href="http://www.cocos2d-iphone.org/forum/topic/25090">really nice water ripple effect built for Cocos2D</a>, which was exactly what I wanted. The only stumbling block was how to integrate Cocos2D into my existing UIKit project. As it turns out, it&#8217;s fairly simple.</p>
<p>First, download the source for Cocos2D. If your UIKit project is using ARC, you&#8217;ll need to download the <a href="https://github.com/cocos2d/cocos2d-iphone">&#8220;bleeding edge&#8221; version from GitHub</a>, as this is currently the only version in which the header files are all ARC friendly. If you are not using ARC, the latest <a href="http://www.cocos2d-iphone.org/download">stable version</a> should be fine (currently v1.0.1). Once you have the Cocos2D source, locate the file &#8220;cocos2d-ios.xcodeproj&#8221;. Open up your UIKit project, and drag this file into your file navigator. You should end up with something like this:</p>
<p><img src="http://www.aspyreapps.com/wp/wp-content/uploads/2012/01/file-navigator.jpg" alt="" title="file-navigator" width="335" height="142" class="aligncenter size-full wp-image-1291" /></p>
<p>Next, go to the Build Phases settings for your project, and add the Cocos2D library (libcocos2d.a) as a linked library. You&#8217;ll probably also need to add OpenGLES.framework, and libz.dylib, like so:</p>
<p><img src="http://www.aspyreapps.com/wp/wp-content/uploads/2012/01/build-phases1.jpg" alt="" title="build-phases" width="760" height="309" class="aligncenter size-full wp-image-1301" /></p>
<p>You&#8217;ll also need to modify your Build Settings. Set Always Search User Paths to YES, and add the Cocos2D source directory to the User Header Search Paths (as a recursive path):</p>
<p><img src="http://www.aspyreapps.com/wp/wp-content/uploads/2012/01/search-paths1.jpg" alt="" title="search-paths" width="689" height="446" class="aligncenter size-full wp-image-1296" /></p>
<p>At this point, you should be able to import the &#8220;cocos2d.h&#8221; header into one of your source files, and compile your project. If you are using ARC and get some build errors, make sure your Cocos2D source is the development (bleeding edge) branch. Even though Cocos2D itself is not ARC enabled, it&#8217;s no problem to combine it with an ARC enabled project, provided you are using the correct version.</p>
<p>Now that Cocos2D is part of your project, it&#8217;s time to write some code. I only needed Cocos2D in one small part of my application, so I decided to limit it to a single UIViewController. This is the code that I used:</p>
<pre class="qoate-code">
- (void)viewDidLoad {
	[super viewDidLoad];

	CCScene *introScene = [CCScene node];
	self.introLayer = [IntroLayer node];
	[introScene addChild:self.introLayer];

	if(![CCDirector setDirectorType:kCCDirectorTypeDisplayLink]) {
		[CCDirector setDirectorType:kCCDirectorTypeDefault];
	}

	CCDirector *director = [CCDirector sharedDirector];
	EAGLView *glView = [EAGLView viewWithFrame:CGRectMake(0, 0, 1024, 768)
			pixelFormat:kEAGLColorFormatRGB565 depthFormat:0];
	[director setOpenGLView:glView];
	[director setDeviceOrientation:kCCDeviceOrientationPortrait];
	[director setAnimationInterval:1.0/60];
	[self setView:glView];
	[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGB565];
	[[CCDirector sharedDirector] runWithScene:introScene];

	[self.introLayer setupScene];
}

- (void)runRippleAnimation {
	[self.introLayer runRippleAnimation];
}

- (void)endRippleAnimation {
	CCDirector* director = [CCDirector sharedDirector];
	[director end];
}
</pre>
<p>I won&#8217;t go through the details of how to create a CCScene and CCLayer &#8211; there&#8217;s plenty of Cocos2D tutorials out there. The code that you&#8217;ll be most interested in is this:</p>
<pre class="qoate-code">
if(![CCDirector setDirectorType:kCCDirectorTypeDisplayLink]) {
	[CCDirector setDirectorType:kCCDirectorTypeDefault];
}

CCDirector *director = [CCDirector sharedDirector];
EAGLView *glView = [EAGLView viewWithFrame:CGRectMake(0, 0, 1024, 768)
			pixelFormat:kEAGLColorFormatRGB565 depthFormat:0];
[director setOpenGLView:glView];
[director setDeviceOrientation:kCCDeviceOrientationPortrait];
[director setAnimationInterval:1.0/60];
[self setView:glView];
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGB565];
[[CCDirector sharedDirector] runWithScene:introScene];
</pre>
<p>This basically sets up the Cocos2D environment, and starts running your CCScene. And that&#8217;s it! I presented this UIViewController modally, but I expect you should be able to use this method within a subview just as easily.</p>
<p>Combining UIKit and Cocos2D does suffer a performance hit, but I&#8217;m not doing anything overly complex here, so it wasn&#8217;t a problem. I&#8217;m also not sure if this is entirely the correct way to do things, but again &#8211; it works, so I&#8217;m happy.</p>
<p>Cocos2D has a heap of really nice effects, with a great community behind it. If you need some extra pizazz in your app, it might just be the way to go.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aspyreapps.com/blog/using-cocos2d-in-a-uikit-project/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		<feedburner:origLink>http://www.aspyreapps.com/blog/using-cocos2d-in-a-uikit-project/</feedburner:origLink></item>
		<item>
		<title>What I Did For Every Minute Of 2011</title>
		<link>http://feedproxy.google.com/~r/AspyreApps/~3/h_QioSaIW5c/</link>
		<comments>http://www.aspyreapps.com/blog/what-i-did-for-every-minute-of-2011/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 05:54:06 +0000</pubDate>
		<dc:creator>Ben Williams</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[idevblogaday]]></category>

		<guid isPermaLink="false">http://www.aspyreapps.com/?p=1274</guid>
		<description><![CDATA[As detailed in a previous post, one of my goals for 2011 was to get a better idea ...]]></description>
			<content:encoded><![CDATA[<p>As detailed in a <a href="http://www.aspyreapps.com/blog/statistics-never-lie/">previous post</a>, one of my goals for 2011 was to get a better idea of what I was spending my time on. It&#8217;s always easy to feel like a certain project has dragged on or taken up more time than it should, but you never really know the truth &#8211; unless you actually keep track. I spent all of 2011 by recording what project I was working on, when I worked on it, and for how long. As a result, I now have a good idea of what&#8217;s taking up too much time, what I should spend more time on, what&#8217;s bringing in a good amount of income, and so on. I found all these details pretty interesting, perhaps you will too.</p>
<h2>Hours Per Week</h2>
<p>This was one of the first things I looked at &#8211; total hours worked in 2011, and how that worked out as an average per week. It turns out that I worked an average of 31.2 hours a week in 2011. The standard Australian work week is 38 hours, so I was pretty happy with this. Those 31.2 hours were spent doing real work &#8211; anytime I opened up Facebook or read the news, I stopped the timer. This average also includes holidays, days off, etc. I dare say that I&#8217;m working more real hours than the average Australian, but I&#8217;m also working more efficiently. Recording what I&#8217;m working on and for how long has really helped me cut down on wasted time spent pretending to be working, or waiting until 5pm rolls around. If I can churn out the same amount of work in less time than the average employee, that&#8217;s a win in my book.</p>
<h2>Hours Worked &#8211; In-House vs Contract</h2>
<p>The primary reason I started tracking my time was that I wanted to split my time 50/50 between contract and in-house app development. I&#8217;ve always felt that although I enjoy in-house app development the most, this got pushed aside for contract work, especially when deadlines were approaching. I ended up spending 38% of my time on in-house apps, so while I didn&#8217;t quite achieve my goal, this was actually more than I expected.</p>
<h2>Hourly Rate &#8211; In-House vs Contract</h2>
<p>The really interesting part of this exercise for me was to be able to compare income gained from different sources, and how that converts to an real hourly rate. Though I generally charge a fixed price for all contract jobs, this is still based off an hourly rate. Being able to see how long a project actually took gives a really solid picture on how good you are at estimating time required, which clients are too demanding of your time, and projected income for the future. One satisfying thing I found was that by the hour, I earned pretty much the same amount on contract jobs as I did for in-house apps. In my opinion this is a pretty good justification for turning down contract jobs if I wish to concentrate on in-house work.</p>
<h2>iPhone and Android</h2>
<p>Though I&#8217;m not an Android developer myself, I have outsourced a few projects. Outsourcing isn&#8217;t free, and it also comes with a number of overheads &#8211; managing the process, explaining how the projects work, documentation, answering questions &#8211; it all takes time. As raw data, it looks like I actually earned about 60% more per hour from outsourcing projects than I did by developing the iOS counterparts myself. However, once I include the actual development costs of outsourcing, this figure drops dramatically. It turns out doing things myself might still be the way to go.</p>
<p>Keeping track of how I spent my time has turned out to be invaluable. It took very little effort, and has given me a real insight into my business. I&#8217;ll certainly be continuing the process for 2012 and beyond.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aspyreapps.com/blog/what-i-did-for-every-minute-of-2011/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.aspyreapps.com/blog/what-i-did-for-every-minute-of-2011/</feedburner:origLink></item>
		<item>
		<title>Statistics Never Lie</title>
		<link>http://feedproxy.google.com/~r/AspyreApps/~3/WcypKB5rvoM/</link>
		<comments>http://www.aspyreapps.com/blog/statistics-never-lie/#comments</comments>
		<pubDate>Wed, 28 Dec 2011 23:57:28 +0000</pubDate>
		<dc:creator>Ben Williams</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[idevblogaday]]></category>

		<guid isPermaLink="false">http://www.aspyreapps.com/?p=1268</guid>
		<description><![CDATA[One of my goals at the start of 2011 was to spend 50% of my time on in-house ...]]></description>
			<content:encoded><![CDATA[<p>One of my goals at the start of 2011 was to spend 50% of my time on in-house projects. This is an area of my business that I really want to grow, and I find that I often give too much priority to contract work, whilst my own apps get pushed to the side. It quickly occurred to me that the only way I was really going to know where my time was going would be to track what I was doing, for every minute I was at work.</p>
<p>Keep track of everything, you say? That&#8217;s crazy! Don&#8217;t worry, I hear you, and it did take a little getting used to. However, it&#8217;s really not that hard, and I believe the benefits are many. But we&#8217;ll get to that.</p>
<p>The software I use is called <a href="http://stuntsoftware.com/onthejob/">On The Job</a>. You start off by defining a client (eg. myself), a project (eg. an app), and a task (eg. v1.1 update). You then hit the record button and get to work! Whenever you stop working, you hit the stop button &#8211; easy. In case you forget to hit stop, the app also has a timeout feature, where if you stop using your computer for a few minutes, it will throw up a prompt and ask what you&#8217;d like to do.</p>
<p>So what actually counts as work worth recording? The main thing I think is that it&#8217;s important to be honest. If I&#8217;m not sure, I pretend for a minute that I have a boss who has just come up become me unannounced &#8211; would he think I was working or slacking off? If I open up Facebook, I stop the timer. Reading blogs doesn&#8217;t count either, unless it&#8217;s for a specific purpose. If I&#8217;m on the phone with a client though, it&#8217;s all recordable &#8211; even if we&#8217;re just having a chat. For me, this counts as client interaction time. If I head out of the office for a meeting, I count the meeting time, but not the travel time &#8211; unless I&#8217;m working off my laptop on the train. Food breaks, toilet breaks, afternoon naps &#8211; all timer stoppers!</p>
<p>But why bother? That&#8217;s a lot of timer stopping and starting throughout the day. Now that I&#8217;ve been doing it for almost a whole year, I have some solid statistics about what I spend my day doing. I can see exactly how long I spend replying to support emails, chatting to clients, doing paperwork, and creating apps. I think it also helps to keep yourself focused &#8211; if I&#8217;m working on a particular task and an interruption occurs (eg. an email arrives), I&#8217;m much more likely to ignore the interruption, as I&#8217;m recording time against the first task. Where this gets really interesting though is comparing the hours to income &#8211; I can now see what my real income per hour/client is, and compare this to in-house development as well. Every client has overheads which you can&#8217;t charge for, so it&#8217;s very handy to see which clients have more overhead than others.</p>
<p>I think this post is getting long enough, so I&#8217;ll save some actual figures for next time. The new year is fast approaching though, so think about giving this a shot for 2012. It&#8217;s a fairly easy habit to get into, and you&#8217;ll gain a much better understanding of you, your business, and where you should focus your time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aspyreapps.com/blog/statistics-never-lie/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.aspyreapps.com/blog/statistics-never-lie/</feedburner:origLink></item>
		<item>
		<title>Is there still room for a Lite version?</title>
		<link>http://feedproxy.google.com/~r/AspyreApps/~3/DfWlolnOsds/</link>
		<comments>http://www.aspyreapps.com/blog/is-there-still-room-for-a-lite-version/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 07:53:47 +0000</pubDate>
		<dc:creator>Ben Williams</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[idevblogaday]]></category>

		<guid isPermaLink="false">http://www.aspyreapps.com/?p=1202</guid>
		<description><![CDATA[A few months ago I released an app called Photo Academy. This app aims to help any photographer ...]]></description>
			<content:encoded><![CDATA[<p>A few months ago I released an app called <a href="http://www.photoacademyapp.com/" title="Photo Academy">Photo Academy</a>. This app aims to help any photographer take better photos, by offering a large amount of tips, sample photos, and camera settings. Soon after release it was featured by Apple in the App Store, spent some time in the overall top 50 charts, and received a nice amount of <a href="http://www.aspyreapps.com/press/#1058" title="Photo Academy Press">positive press</a>. Overall, I was very happy with how it all went.</p>
<p>As is usually the case, Photo Academy has dropped off the main charts, and has settled down into bringing in lower, but fairly decent and consistent sales. I&#8217;m certainly not unhappy with the income, but I enjoy the business side of iOS development, and business means making more sales. Almost anyone who makes apps is generally seeking out the answer to the age old question &#8211; how can I get my app into the hands of more users?</p>
<p>When the App Store was first opened to third party developers, the first answer to that question reared it&#8217;s head almost immediately &#8211; the &#8220;race to the bottom&#8221;. All of a sudden we were in a world where quality software was being sold for the bare minimum, a measly 99 cents.</p>
<p>It wasn&#8217;t long before the next strategy became commonplace &#8211; the Lite version. Developers would release two versions of their app, the full paid version, and the free cut-down version. All of a sudden we were in a world where you could try out the app for free, and upgrade to the full version for a measly 99 cents.</p>
<p>Fast forward to today, and freemium rules the App Store. Today we live in a world where you can try out the app for free, use it as much as you want, and if you&#8217;re really keen, buy a few add-ons for a measly 99 cents. But only if you&#8217;re really keen.</p>
<p>The future is anyone&#8217;s guess, but I wouldn&#8217;t be too surprised if Apple one day introduces full version trials, at least in the Mac App Store.</p>
<p>So where does this leave Photo Academy and me? Although I priced it at 99c for a small period of time, Photo Academy is now priced at $2.99, and I&#8217;m unlikely to ever drop the price again. I stand behind my product and believe it to be of a high enough quality to justify this price as a minimum. I also don&#8217;t believe the app is well suited to the freemium market &#8211; I think you need mass appeal to be a success in that arena.</p>
<p>This leaves us with the Lite version. The problem is, Lite versions always seem so tacky. Too many restrictions, ugly icons covered in messages proclaiming their free-ness, and user content which doesn&#8217;t transfer to the full version. As you may have guessed, I&#8217;m releasing a lite version of Photo Academy in the near future, but I wanted to reduce that icky feeling &#8211; I want my users to be just as pleased than if they had paid for the full version. Here&#8217;s the things I did a bit differently:</p>
<ol>
<li>I named the app &#8220;Photo Academy: Orientation&#8221;. This fits in well with the educational theme, and doesn&#8217;t scream &#8220;hey I&#8217;ve got a cut-down feature set!&#8221;. It also means users won&#8217;t be stuck with an app called &#8220;something something lite&#8221; on their phone, even after upgrading.</li>
<p><br/></p>
<li>I chose an icon which looks just as nice as the original:
<div align="center">
<table style='border-width:0px'>
<tr style='border-width:0px'>
<td><img src="http://www.aspyreapps.com/wp/wp-content/uploads/2011/12/Icon.png" alt="Photo Academy Icon" title="Photo Academy Icon" width="57" height="57" class="aligncenter size-full wp-image-1204" />Photo Academy</td>
<td><img src="http://www.aspyreapps.com/wp/wp-content/uploads/2011/12/Icon1.png" alt="Photo Academy: Orientation Icon" title="Photo Academy: Orientation Icon" width="57" height="57" class="aligncenter size-full wp-image-1205" />Photo Academy: Orientation</td>
</tr>
</table>
</div>
</li>
<li>I gave users an easy upgrade path. They can unlock full functionality right within the app, without needing to download the full version from the App Store. All user content and settings naturally remain without needing to be transferred, and users aren&#8217;t left with an app covered in Lite stickers.</li>
<p><br/></p>
<li>I&#8217;m overly generous with the amount of content. Using analytics from the full version, I can determine which are the most popular sections of the app &#8211; and I give a decent amount of them away for free.</li>
<p><br/></p>
<li>As well as upgrading to the full version, I also allow users to purchase only the items they&#8217;re interested in (yes, for a measly 99 cents).</li>
</ol>
<p>So is there still room for a Lite version? I think so. People like myself will just buy the full version straight away, while those who are a little more cautious now have some options as well. I&#8217;ll report back to let you know how it goes.</p>
<p>Photo Academy: Orientation launches on December 15, 2011.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aspyreapps.com/blog/is-there-still-room-for-a-lite-version/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.aspyreapps.com/blog/is-there-still-room-for-a-lite-version/</feedburner:origLink></item>
		<item>
		<title>A Healthy Indie Life</title>
		<link>http://feedproxy.google.com/~r/AspyreApps/~3/I58w7RjBjzQ/</link>
		<comments>http://www.aspyreapps.com/blog/a-healthy-indie-life/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 07:05:04 +0000</pubDate>
		<dc:creator>Ben Williams</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[idevblogaday]]></category>

		<guid isPermaLink="false">http://www.aspyreapps.com/?p=1188</guid>
		<description><![CDATA[For the past 2.5 years, I&#8217;ve been working from home as an independent iOS developer. My real love ...]]></description>
			<content:encoded><![CDATA[<p>For the past 2.5 years, I&#8217;ve been working from home as an independent iOS developer. My real love is for developing <a href="http://www.aspyreapps.com/apps">in-house apps</a>, but there&#8217;s a lot of satisfaction to be gained from freelance work as well. It took me a long time to get used to working from home, rather than working in an office. I&#8217;ve always loved the work that I do, and having the freedom to choose what that work will be, but working out of a spare bedroom on your own is a big shift. That said, I&#8217;ve been feeling increasingly happier with my situation over the past 6 months or so, and I&#8217;d like to share a few of the reasons why I think that is.</p>
<h2>Exercise</h2>
<p>I personally think this one is so important that it comes first &#8211; both in this blog post, and in my day. Every morning I wake up at 6.30am, and head off to a <a href="http://www.crossfit.com/">CrossFit</a> session. I&#8217;ve tried a lot of things in the past, but I absolutely love CrossFit. Sessions are typically run by a trainer with a group, and usually involve a high-intensity workout with a variety of exercises (we even get to do handstands). The beauty of it is that everything can be scaled, so it really doesn&#8217;t matter how fit (or unfit) you are. Now that I&#8217;ve been doing this for a few months, not only do I feel great, but I&#8217;ve made some new friends, it gets me out of the house, and no matter what else happens for the rest of the day, I can at least feel good about having done some exercise. Of course, you don&#8217;t have to join a CrossFit group to get the benefits of exercise &#8211; go for a bike ride, join a running group, or just go for a walk. If you can, do it first thing in the morning, so you don&#8217;t have a chance to avoid it. Your mind will be clear, you&#8217;ll feel good, and you&#8217;ll be set for a full productive day.</p>
<h2>Your Environment</h2>
<p>Lately I&#8217;ve been making an effort to keep my desk clean, and my room tidy. I put away all my test devices when I&#8217;m not using them, paperwork gets filed quickly, and the room is dusted and vacuumed once a week. This helps to avoid the mental drain that can come from being surrounded by clutter. I find it&#8217;s really nice to have a full desk to work on as well, rather than the little square that&#8217;s leftover if I leave stacks of books and papers around.</p>
<h2>Some Character</h2>
<p>Just because you don&#8217;t work in an office doesn&#8217;t mean you can&#8217;t spice up your space a little. Some people collect figurines, some people put up posters &#8211; me, I like to have a fish tank. I recently purchased a <a href="http://www.hagen.com/uk/aquatic/addinfo/fluval_edge.cfm">Fluval Edge</a> tank, which is a neat little self contained aquarium. It looks great, and fits really nicely on the desk next to my iMac. Yes, I really am brave enough to put a box full of water next to my computer. Aside from giving me something interesting to look at every now and again, a tank full of fish makes for a great session of <a href="http://en.wikipedia.org/wiki/Rubber_duck_debugging">rubber duck debugging</a>. If you don&#8217;t like what the first fish had to say, move on to the next one!</p>
<h2>Regular Hours</h2>
<p>I believe that keeping to a routine is a key factor in being a successful independent worker. Whilst I&#8217;m not super-strict about it, I generally work weekdays from 9.00am until 12.30pm, break for lunch for an hour, then continue working until about 5.30pm. At which point I stop. There are occasions where I&#8217;ll work longer hours, or work on the weekend, but this is the exception rather than the norm. This helps to give some normality to life, and also helps to avoid that &#8220;always at work&#8221; feeling that can creep in pretty quickly if you&#8217;re not careful.</p>
<h2>Take Breaks</h2>
<p>I&#8217;ve never liked the idea of sitting at my desk for many hours at a time, but it&#8217;s very easy to do, especially if you&#8217;re deep in some code. That&#8217;s why I installed <a href="http://www.dejal.com/timeout/">Time Out</a>, a free app on the Mac App Store. I have it setup so that every half hour I&#8217;m told to take a 10 second break &#8211; just enough to jump up from my chair, stretch my legs, and sit down again. Then, every hour I&#8217;m told to take a 5 minute break. I always try to make sure I walk around during this break, whether it&#8217;s to take the garbage out, check the mail, or just go outside for a moment. Rather than breaking my concentration, I&#8217;ve found on many occasions that these little breaks help me to have an &#8220;aha&#8221; moment, so I actually end up being more productive rather than less.</p>
<h2>Work Isn&#8217;t Everything</h2>
<p>This is a big one. Have you read <a href="http://thenextweb.com/lifehacks/2011/05/31/the-top-5-regrets-people-make-on-their-deathbeds/">The Top 5 Regrets People Have On Their Deathbeds</a>? I&#8217;m particularly interested in point number 2 &#8211; every dying male patient in this article regretted working so hard. Every single one. There&#8217;s nothing wrong with working hard, but don&#8217;t let it come at the expense of your family and friends, because it&#8217;s very easy to do.</p>
<h2>Know When It&#8217;s Time To Quit</h2>
<p>Independent work isn&#8217;t for everybody. If you&#8217;re not happy, try and figure out whether it&#8217;s the work, or the work environment. If it&#8217;s the work environment, try some of the things above &#8211; or think about renting an office, or look into a co-sharing space. If it&#8217;s the work that makes you unhappy, you can always go back to a regular job &#8211; there&#8217;s no shame in trying something that didn&#8217;t work out.</p>
<h2>Find What Works For You</h2>
<p>Everyone is different, and on one can tell you the best way to live your life. However, I do hope that some of these things got you thinking. If you have any other suggestions I&#8217;d love to hear them!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aspyreapps.com/blog/a-healthy-indie-life/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://www.aspyreapps.com/blog/a-healthy-indie-life/</feedburner:origLink></item>
	</channel>
</rss>

