<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>GigaOM &#187; Henry Balanon Archives</title>
	<atom:link href="http://gigaom.com/author/balanon/feed/" rel="self" type="application/rss+xml" />
	<link>http://gigaom.com</link>
	<description></description>
	<lastBuildDate>Mon, 20 May 2013 04:00:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='gigaom.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/0db8f6557d022075dbbf010c54d46d93?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>GigaOM &#187; Henry Balanon Archives</title>
		<link>http://gigaom.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://gigaom.com/osd.xml" title="GigaOM" />
	<atom:link rel='hub' href='http://gigaom.com/?pushpress=hub'/>
		<item>
		<title>MacHeist Nano Bundle Unleashed&#8230;for Free</title>
		<link>http://gigaom.com/2009/11/05/macheist-nano-bundle-unleashed-for-free/</link>
		<comments>http://gigaom.com/2009/11/05/macheist-nano-bundle-unleashed-for-free/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 01:08:41 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[MacHeist]]></category>

		<guid isPermaLink="false">http://theappleblog.com/?p=35352</guid>
		<description><![CDATA[MacHeist announced its newest Mac app bundle, the MacHeist Nano.  The traditional MacHeist software bundle is usually severely discounted and there has always been a price. But, for this one, they&#8217;re giving the software bundle for free. MacHeist is offering six apps instead of the usual [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gigaom.com&#038;blog=14960843&#038;post=173593&#038;subd=gigaom2&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><img  title="macheist_nano" src="http://gigapple.files.wordpress.com/2009/11/macheist_nano.jpg?w=210&#038;h=210" alt="macheist_nano" width="210" height="210" class=" alignleft" /></p>
<p class="excerpt"><a href="http://macheist.com">MacHeist</a> announced its newest Mac app bundle, the MacHeist Nano.  The traditional MacHeist software bundle is usually severely discounted and there has always been a price. But, for this one, they&#8217;re giving the software bundle for free.</p>
<p>MacHeist is offering six apps instead of the usual dozen or so it usually does with its regular offering&#8230;hence the &#8220;nano&#8221; part.</p>
<div class="clear"><img  title="ShoveBox" src="http://gigapple.files.wordpress.com/2009/11/shovebox.png?w=128&#038;h=128" alt="ShoveBox" width="128" height="128" class=" alignleft" />
<p>&nbsp;</p>
<h3>ShoveBox</h3>
<p>(Retail: $24.95)</p>
<p>ShoveBox catches all those little scraps of information that you can&#8217;t act on now but would rather not forget. It sits in your menubar, waiting for you to drag in text, images, URL&#8217;s and more.</p>
</div>
<p><span id="more-173593"></span></p>
<div class="clear"><img  title="WriteRoom" src="http://gigapple.files.wordpress.com/2009/11/writeroom.png?w=128&#038;h=128" alt="WriteRoom" width="128" height="128" class=" alignleft" />
<p>&nbsp;</p>
<h3>WriteRoom</h3>
<p>(Retail: $24.95)</p>
<p>For people who enjoy the simplicity of a typewriter, but live in the digital world. <a href="http://theappleblog.com/2007/01/05/writeroom/">WriteRoom</a> is a distraction-free writing environment. Unlike the cluttered word processors you&#8217;re used to, WriteRoom lets you focus on writing.</p>
</div>
<div class="clear"><img  title="Twitterrific" src="http://gigapple.files.wordpress.com/2009/11/twitterrific.png?w=128&#038;h=128" alt="Twitterrific" width="128" height="128" class=" alignleft" />
<p>&nbsp;</p>
<h3>Twitterrific</h3>
<p>(Retail: $14.95)</p>
<p>Twitterrific is a fun application that lets you both read and publish posts or tweets to Twitter. The application&#8217;s user interface is clean, concise and designed to take up a minimum amount of real estate on your Mac&#8217;s desktop. This is from the same guys who brought us the Twitterrific iPhone app.</p>
</div>
<div class="clear"><img  title="TinyGrab_128x128" src="http://gigapple.files.wordpress.com/2009/11/tinygrab_128x128.png?w=128&#038;h=128" alt="TinyGrab_128x128" width="128" height="128" class=" alignleft" />
<p>&nbsp;</p>
<h3>TinyGrab</h3>
<p>(Retail: $14)</p>
<p>Harnessing the power of pre-existing and new OS screenshot taking capabilities, TinyGrab instantly uploads and allows you to share with a small URL &#8212; all in under 30 seconds.</p>
</div>
<div class="clear"><img  title="Hordes of Orcs" src="http://gigapple.files.wordpress.com/2009/11/hordes-of-orcs.png?w=128&#038;h=128" alt="Hordes of Orcs" width="128" height="128" class=" alignleft" />
<p>&nbsp;</p>
<h3>Hords of Orcs</h3>
<p>(Retail: $24.95)</p>
<p>Hordes of Orcs is a tower defense game in which you must build walls and lethal towers to defend your village from the Orcs emerging from, what the village elders call, “The Glowing Portal of Really Bad Things That We Should Have Bricked-Up a Long Time Ago.” It&#8217;s made by Freeverse, the guys who made the popular Skee-ball and Flick Fishing iPhone apps.</p>
</div>
<div class="clear"><img  title="Mariner Write" src="http://gigapple.files.wordpress.com/2009/11/mariner-write.png?w=128&#038;h=128" alt="Mariner Write" width="128" height="128" class=" alignleft" />
<p>&nbsp;</p>
<h3>Mariner Write</h3>
<p>(Retail: $49.95)</p>
<p>Mariner Write is a powerful, yet streamlined word processor for Mac OS X. It&#8217;s for everyone from professional writers, to educators, students, to the average user. It&#8217;s also been touted by Macworld as the one of the best Microsoft Word alternatives.</p>
</div>
<p>This isn&#8217;t the full-blown MacHeist 4. This is a smaller bundle to hold us over for the next few months.</p>
<p>For those who don&#8217;t know about MacHeist, it&#8217;s a site that sells Mac OS X software. The unique thing is that the users are asked to complete certain challenges to get free and discounted applications and the software bundle grows as more customers purchase the bundle.</p>
<br />  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gigaom.com&#038;blog=14960843&#038;post=173593&#038;subd=gigaom2&#038;ref=&#038;feed=1" width="1" height="1" /><p><a href="http://pubads.g.doubleclick.net/gampad/jump?iu=/1008864/GigaOM_RSS_300x250&#038;sz=300x250&#038;c=175575"><img src="http://pubads.g.doubleclick.net/gampad/ad?iu=/1008864/GigaOM_RSS_300x250&#038;sz=300x250&#038;c=175575" /></a></p><p><strong>Related research and analysis from GigaOM Pro:</strong><br />Subscriber content. <a href="http://pro.gigaom.com/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=173593+macheist-nano-bundle-unleashed-for-free&utm_content=balanon">Sign up for a free trial</a>.</p><ul><li><a href="http://pro.gigaom.com/2012/02/how-do-developers-ride-the-siri-wave/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=173593+macheist-nano-bundle-unleashed-for-free&utm_content=balanon">How do developers ride the Siri wave?</a></li><li><a href="http://pro.gigaom.com/2011/11/connectivity-means-making-the-machine-disappear/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=173593+macheist-nano-bundle-unleashed-for-free&utm_content=balanon">Connectivity means making the machine disappear</a></li><li><a href="http://pro.gigaom.com/2011/10/access-vs-ownership-why-ultraviolet-has-already-lost/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=173593+macheist-nano-bundle-unleashed-for-free&utm_content=balanon">Access vs. ownership: Why UltraViolet has already lost</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://gigaom.com/2009/11/05/macheist-nano-bundle-unleashed-for-free/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
	
		<media:content url="http://gigapple.files.wordpress.com/2009/11/macheist_nano.jpg" medium="image">
			<media:title type="html">macheist_nano</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/11/shovebox.png" medium="image">
			<media:title type="html">ShoveBox</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/11/writeroom.png" medium="image">
			<media:title type="html">WriteRoom</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/11/twitterrific.png" medium="image">
			<media:title type="html">Twitterrific</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/11/tinygrab_128x128.png" medium="image">
			<media:title type="html">TinyGrab_128x128</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/11/hordes-of-orcs.png" medium="image">
			<media:title type="html">Hordes of Orcs</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/11/mariner-write.png" medium="image">
			<media:title type="html">Mariner Write</media:title>
		</media:content>
	</item>
		<item>
		<title>iPhone Dev Sessions:  Adding Analytics to Your App</title>
		<link>http://gigaom.com/2009/08/10/iphone-dev-sessions-adding-analytics-to-your-app/</link>
		<comments>http://gigaom.com/2009/08/10/iphone-dev-sessions-adding-analytics-to-your-app/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 14:50:41 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Walkthroughs]]></category>
		<category><![CDATA[bickboxx]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iphone dev sessions]]></category>
		<category><![CDATA[pinch media]]></category>

		<guid isPermaLink="false">http://theappleblog.com/?p=30352</guid>
		<description><![CDATA[Welcome to another episode of TheAppleBlog’s iPhone Dev Sessions. We left off with a drum app tutorial called Bickboxx. For this tutorial, we’re building off of the first Bickboxx project, so go back and finish it if you haven’t already. Or if you want to cheat, [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gigaom.com&#038;blog=14960843&#038;post=173214&#038;subd=gigaom2&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><img  title="2009-08-09_1936" src="http://gigapple.files.wordpress.com/2009/08/2009-08-09_1936.png?w=200&#038;h=200" alt="2009-08-09_1936" width="200" height="200" class=" alignleft" /></p>
<p class="excerpt">Welcome to another episode of <a href="http://theappleblog.com/tag/iphone-dev-sessions/">TheAppleBlog’s iPhone Dev Sessions</a>. We left off with a <a href="http://theappleblog.com/2009/05/11/iphone-dev-sessions-create-a-drum-app/">drum app tutorial called Bickboxx</a>. For this tutorial, we’re building off of the first Bickboxx project, so go back and finish it if you haven’t already. Or if you want to cheat, grab the <a href="http://github.com/balanon/bickboxx/tree/master">Bickboxx code from Github</a>.</p>
<h3>The Story</h3>
<p>The Boss is happy we’ve released <a title="iPhone Dev Sessions: Create a Drum App" href="http://theappleblog.com/2009/05/11/iphone-dev-sessions-create-a-drum-app/">Bickboxx, the iPhone drum app</a>, but now he wants to know how it’s doing. Not just sales-wise.</p>
<p>How many people use our app? How many times have they used the app? How much time do they spend using our app? How many users do we have in each city, state and country? How many illegal haxored versions are out there? How many people open the app once and never use it again?</p>
<p>Yikes. That’s a lot of questions.</p>
<p>Lucky for us, we don’t have to write hundreds of lines of code and roll our own analytics server to track the answer to these questions.</p>
<p>There are dozens of iPhone analytics APIs that will do all of the heavy lifting for us. <a href="http://www.flurry.com/">Flurry</a>, <a href="http://www.mobclix.com/">Mobclix</a>, and <a href="http://www.medialets.com/">Medialets</a> come to mind.</p>
<p>There isn’t a clear leader in iPhone analytics yet but for this tutorial we’ll be using <a href="http://www.pinchmedia.com/">Pinch Analytics</a>. It has comprehensive documentation and its reporting is detailed as well. <span id="more-173214"></span></p>
<h3>Signing Up for a Pinch Media Account</h3>
<p>The first thing you want to do is <a title="Pinch Media - Register" href="http://developer.pinchmedia.com/users/register">sign up for a Pinch Media account</a>. The first part of registration is the usual username/email/password page. The second part detailing your app takes you to this:</p>
<p><img  title="2009-08-09_1248" src="http://gigapple.files.wordpress.com/2009/08/2009-08-09_1248.png?w=570&#038;h=512" alt="2009-08-09_1248" width="570" height="512" class=" alignleft" /></p>
<p>Since Bickboxx isn’t a real app that you’ll be distributing, you don’t have to fill out any of this. You can skip this part by clicking the “I’ll do it later” button.</p>
<p>When you are adding analytics to your real-life app, I’ve filled out some sample data for you to go by. Note that if you don’t add an app into Pinch Media, you won’t be able to view any analytics reports.</p>
<h3>Download and Install the Pinch Media SDK</h3>
<p>After you’ve signed up for an account, <a href="http://developer.pinchmedia.com/analytics/library/download">download and unzip the SDK</a>.</p>
<p>Open up the Bickboxx project in Xcode. Drag the <strong>Beacon+FBConnect.h</strong> and <strong>Beacon.h</strong> files into the Classes directory in the Xcode project.</p>
<p><img  title="2009-08-09_1433" src="http://gigapple.files.wordpress.com/2009/08/2009-08-09_1433.png?w=570&#038;h=360" alt="2009-08-09_1433" width="570" height="360" class=" alignleft" /></p>
<p>Make sure the “Copy items into destination group’s folder (if needed)” checkbox is checked. Click Add. We do this so our code knows how to access the Pinch Media methods in the <strong>libPMAnalytics-rXX.a</strong> library.</p>
<p><img  title="2009-08-09_1430" src="http://gigapple.files.wordpress.com/2009/08/2009-08-09_1430.png?w=570&#038;h=360" alt="2009-08-09_1430" width="570" height="360" class=" alignleft" /></p>
<p>We’ll need to import the <strong>libPMAnalytics-rXX.a</strong> library next. Do this by dragging the <strong>libPMAnalytics-rXX.a</strong> file to the Frameworks folder in Xcode. Again, make sure the “Copy items into destination group’s folder (if needed)” checkbox is checked. Click Add.</p>
<p><img  title="2009-08-09_1433a" src="http://gigapple.files.wordpress.com/2009/08/2009-08-09_1433a.png?w=570&#038;h=360" alt="2009-08-09_1433a" width="570" height="360" class=" alignleft" /></p>
<h3>Install the Supporting SDKs</h3>
<p>We need a few more frameworks to get going. We may not use these frameworks directly, but Pinch Analytics does.</p>
<p>Ctrl-Click the Frameworks folder and choose <strong>Add → Existing Frameworks&#8230;</strong></p>
<p><img  title="2009-08-09_1441" src="http://gigapple.files.wordpress.com/2009/08/2009-08-09_1441.png?w=528&#038;h=267" alt="2009-08-09_1441" width="528" height="267" class=" alignleft" /></p>
<p>Select <strong>libsqlite3.dylib</strong> and click Add.</p>
<p><img  title="2009-08-09_1442" src="http://gigapple.files.wordpress.com/2009/08/2009-08-09_1442.png?w=338&#038;h=534" alt="2009-08-09_1442" width="338" height="534" class=" alignleft" /></p>
<p>Do the same for the <strong>SystemConfiguration.framework</strong>.</p>
<p><img  title="2009-08-09_1501" src="http://gigapple.files.wordpress.com/2009/08/2009-08-09_1501.png?w=338&#038;h=534" alt="2009-08-09_1501" width="338" height="534" class=" alignleft" /></p>
<p>Lastly, do the same for <strong>CoreLocation.framework</strong>.</p>
<p><img  title="2009-08-09_1502" src="http://gigapple.files.wordpress.com/2009/08/2009-08-09_1502.png?w=338&#038;h=534" alt="2009-08-09_1502" width="338" height="534" class=" alignleft" /></p>
<p>Build the project to make sure everything is in place. It should compile. Got it? Good.</p>
<h3>Adding the Pinch Analytics Code</h3>
<p>Add this import statement for the <strong>Beacon.h</strong> file into <strong>BickBoxxAppDelegate.h</strong>.</p>
<pre class="brush: csharp; title: ; notranslate">
#import “Beacon.h”
</pre>
<p>Adding this will allow us access to the Pinch Analytics methods from inside our <strong>BickBoxxAppDelegate.m</strong> file. Your <strong>BickboxxAppDelegate.h</strong> file should now look like this. Our change is in line 2.</p>
<pre class="brush: csharp; title: ; notranslate">
#import &lt;UIKit/UIKit.h&gt;
#import &quot;Beacon.h&quot;

@class BickBoxxViewController;

@interface BickBoxxAppDelegate : NSObject &lt;UIApplicationDelegate&gt; {
  UIWindow *window;
  BickBoxxViewController *viewController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet BickBoxxViewController *viewController;

@end
</pre>
<p>Open up <strong>BickBoxxAppDelegate.m</strong> and locate the <code>applicationDidFinishLaunching</code> method. Add this line of code.</p>
<pre class="brush: csharp; title: ; notranslate">
NSString *applicationCode = @"REPLACE THIS WITH YOUR APPLICATION CODE";
</pre>
<p>Replace the <code>REPLACE THIS WITH YOUR APPLICATION CODE</code> with your Application Code from Pinch Media. You can find your application code in <a href="http://developer.pinchmedia.com/applications/">your Pinch Media account</a>.</p>
<p><img  title="2009-08-09_1559" src="http://gigapple.files.wordpress.com/2009/08/2009-08-09_1559.png?w=570&#038;h=327" alt="2009-08-09_1559" width="570" height="327" class=" alignleft" /></p>
<p>This is your unique ID that Pinch Media uses to identify which app is sending data to them. If you opted to not setup an app during registration, you need to do this to get an Application Code. If you don’t put in a valid Application Code, you won’t get any analytics reports and you’re wasting your time.</p>
<p>We’re going to use this <code>applicationCode</code> NSString to activate our analytics beacon. Add this line of code to the <code>applicationDidFinishLaunching</code> method.</p>
<pre class="brush: csharp; title: ; notranslate">
[Beacon initAndStartBeaconWithApplicationCode:applicationCode
    useCoreLocation:YES useOnlyWiFi:NO];
</pre>
<p>This fires up the analytics code when the app launches. Note that we’re sending in the <code>applicationCode</code> NSString that we inserted in the previous step. Also note the <code>useCoreLocation</code> parameter. You can set this to <code>YES</code> or <code>NO</code> depending on whether you want to capture location statistics.</p>
<p>Use this with caution. If you think you’ll offend your users by asking for their location, set this to <code>NO</code>.</p>
<p>Another parameter is <code>useOnlyWiFi</code>. Not everyone in the world has an unlimited data plan. They&#8217;ll be none to happy if your app is sending data over the mobile network when they don’t want it to.</p>
<p>Like the <code>useCoreLocation</code> parameter, use this parameter with caution. If set to <code>YES</code>, the analytics data will be sent to Pinch Media only when they’re connected to Wi-Fi. This way, the people who pay their mobile carrier per kilobyte won’t get mad. The downside is that you will miss usage statistics if they never connect to Wi-Fi.</p>
<p>If you’re not worried about being responsible for someone’s data overages, set this to <code>NO</code>.</p>
<p>Your code in <strong>BickBoxxAppDelegate.m</strong> for the <code>applicationDidFinishLaunching</code> method should now look like this.</p>
<pre class="brush: csharp; title: ; notranslate">
- (void)applicationDidFinishLaunching:(UIApplication *)application {

	// New code below this
	NSString *applicationCode = @"REPLACE THIS WITH YOUR APPLICATION CODE";
  [Beacon initAndStartBeaconWithApplicationCode:applicationCode
								 useCoreLocation:YES useOnlyWiFi:NO];

  // Old code below this
	[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO];

  // Override point for customization after app launch
  [window addSubview:viewController.view];
  [window makeKeyAndVisible];
}
</pre>
<p>Finally, when we exit the app or your app crashes (your apps never crash right?), we need to stop the analytics beacon.</p>
<p>Add this method to the <strong>BickBoxxAppDelegate.m</strong> file.</p>
<pre class="brush: csharp; title: ; notranslate">
- (void)applicationWillTerminate:(UIApplication *)application {
  [[Beacon shared] endBeacon];
}
</pre>
<p>Build and run your app.</p>
<h3>You’re Done!</h3>
<p>That’s it &#8212; you’re done! Go to lunch and have a sandwich. Nothing’s changed to the user except it’s going to ask if it’s okay that Bickboxx uses their location. You can now login to Pinch Media’s site and see all your pretty statistics and graphs. Worth noting is that the data isn’t real-time &#8212; it’s only updated twice a day.</p>
<h3>Homework</h3>
<p>The Boss is happy now that we can measure the performance of our app. He wants more detail on which buttons are pressed the most. You can do this by adding sub-beacons, which you can read about at <a href="http://resources.pinchmedia.com/docs/Pinch_Analytics/">the documentation site</a>.</p>
<h3>BickBoxx On Github and the iTunes App Store</h3>
<p><a href="http://theappleblog.com/2009/05/11/iphone-dev-sessions-create-a-drum-app/">Like last time</a>, the code is <a href="http://github.com/balanon/bickboxx/tree/master">open-sourced on Github</a>. You can check your code against the code here if you start to stumble.</p>
<p>We’re here to show you how to build actual apps. You can download the app as it’s built at the <a href="http://a.bickbot.com/boxx">iTunes App Store</a>. More info on the open-source/open-tutorialized efforts on <a href="http://bickbot.com/bickboxx">the BickBoxx website</a>.</p>
<br />  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gigaom.com&#038;blog=14960843&#038;post=173214&#038;subd=gigaom2&#038;ref=&#038;feed=1" width="1" height="1" /><p><a href="http://pubads.g.doubleclick.net/gampad/jump?iu=/1008864/GigaOM_RSS_300x250&#038;sz=300x250&#038;c=734555"><img src="http://pubads.g.doubleclick.net/gampad/ad?iu=/1008864/GigaOM_RSS_300x250&#038;sz=300x250&#038;c=734555" /></a></p><p><strong>Related research and analysis from GigaOM Pro:</strong><br />Subscriber content. <a href="http://pro.gigaom.com/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=173214+iphone-dev-sessions-adding-analytics-to-your-app&utm_content=balanon">Sign up for a free trial</a>.</p><ul><li><a href="http://pro.gigaom.com/2011/07/mobile-q2-smartphone-growth-surges-ipads-rule-continues/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=173214+iphone-dev-sessions-adding-analytics-to-your-app&utm_content=balanon">Mobile Q2: Smartphone growth surges; iPad&#8217;s rule continues</a></li><li><a href="http://pro.gigaom.com/2010/09/how-to-market-your-iphone-app-a-developers-guide/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=173214+iphone-dev-sessions-adding-analytics-to-your-app&utm_content=balanon">How to Market Your iPhone App: A Developer&#8217;s Guide</a></li><li><a href="http://pro.gigaom.com/2010/06/report-the-in-app-advertising-landscape/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=173214+iphone-dev-sessions-adding-analytics-to-your-app&utm_content=balanon">Report: The In-App Advertising Landscape</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://gigaom.com/2009/08/10/iphone-dev-sessions-adding-analytics-to-your-app/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
	
		<media:content url="http://gigapple.files.wordpress.com/2009/08/2009-08-09_1936.png" medium="image">
			<media:title type="html">2009-08-09_1936</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/08/2009-08-09_1248.png?w=570" medium="image">
			<media:title type="html">2009-08-09_1248</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/08/2009-08-09_1433.png?w=570" medium="image">
			<media:title type="html">2009-08-09_1433</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/08/2009-08-09_1430.png?w=570" medium="image">
			<media:title type="html">2009-08-09_1430</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/08/2009-08-09_1433a.png?w=570" medium="image">
			<media:title type="html">2009-08-09_1433a</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/08/2009-08-09_1441.png" medium="image">
			<media:title type="html">2009-08-09_1441</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/08/2009-08-09_1442.png" medium="image">
			<media:title type="html">2009-08-09_1442</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/08/2009-08-09_1501.png" medium="image">
			<media:title type="html">2009-08-09_1501</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/08/2009-08-09_1502.png" medium="image">
			<media:title type="html">2009-08-09_1502</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/08/2009-08-09_1559.png?w=570" medium="image">
			<media:title type="html">2009-08-09_1559</media:title>
		</media:content>
	</item>
		<item>
		<title>WWDC Announcements: Smule&#8217;s Ge Wang and Twitterers Respond</title>
		<link>http://gigaom.com/2009/06/08/wwdc-announcements-smules-ge-wang-and-twitterers-respond/</link>
		<comments>http://gigaom.com/2009/06/08/wwdc-announcements-smules-ge-wang-and-twitterers-respond/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 23:11:52 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[hardware]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[SYN Feature Enterprise]]></category>
		<category><![CDATA[announcements]]></category>
		<category><![CDATA[feedback]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[wwdc]]></category>

		<guid isPermaLink="false">http://theappleblog.com/?p=25637</guid>
		<description><![CDATA[We had a chance to talk to Dr. Ge Wang of Smule, makers of iPhone apps Ocarina and Leaf Trombone: World Stage. He, and some of our Twitter followers, share their thoughts about the new hardware and software announcements. With our Twitter followers, we asked for [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gigaom.com&#038;blog=14960843&#038;post=172887&#038;subd=gigaom2&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p class="excerpt">We had a chance to talk to Dr. Ge Wang of Smule, makers of iPhone apps Ocarina and Leaf Trombone: World Stage. He, and some of our Twitter followers, share their thoughts about the new hardware and software announcements.</p>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='604' height='370' src='http://www.youtube.com/embed/tmqSCyg5z-E?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span>
<p>With our Twitter followers, we asked for their reaction and it was definitely a mixed bag.</p>
<p>Our question: <em>What are your reactions to the new hardware announcements? What are the game changers?</em> <span id="more-172887"></span></p>
<p><strong><a href="http://twitter.com/mattbdunn">mattbdunn</a>:</strong> ipod touch still $400 for 32Gb when u can pay $300 for a 32Gb 3GS iphone! Where&#8217;s the 64Gb touch? No one will b buying those<br />
<strong><a href="http://twitter.com/odaynasser">odaynasser</a>:</strong> they flopped big time<br />
<strong><a href="http://twitter.com/KevYocha">KevYocha</a>:</strong> as an ATT customer lack of tethering and MMS is unforgivable. The update seems great for anyone else. My 3G is new too :(<br />
<strong><a href="http://twitter.com/vicener">vicener</a>:</strong> Frankly I was a bit disappointed with the iPhone 3Gs, but I am looking forward to OSX Snow Leopard and iPhone OS 3.0<br />
<strong><a href="http://twitter.com/bonxtivalis">bonxtivalis</a>:</strong> Zzzzz&#8230;<br />
<strong><a href="http://twitter.com/ryan_doughty">ryan_doughty</a>:</strong> New hardware is fine, For me it will be the prices and tariffs on O2 UK that could make or break this as my next phone.<br />
<strong><a href="http://twitter.com/freddytaul">freddytaul</a>:</strong> new iphone and MB pros def stole the show. great new options and prices on the MBP&#8217;s. my ibook might be headed out.<br />
<strong><a href="http://twitter.com/mmccl267">mmccl267</a>:</strong> pretty lame that AT&amp;T doesn&#8217;t support tethering. Any hope that they will change that?<br />
<strong><a href="http://twitter.com/andreaguiar">andreaguiar</a>:</strong> machine hardware = excellent news + $. new iphone is nice but I think it could have used a bit more new features (3mp only?)<br />
<strong><a href="http://twitter.com/askbal">askbal</a>:</strong> I am surprised no Video in the firmware upgrade for 3G. Probably just for a feature differentiation with new 3GS?<br />
<strong><a href="http://twitter.com/mike20">mike20</a>:</strong> apathy and none, in that order, lol! #wwdc<br />
<strong><a href="http://twitter.com/cmdotkom">cmdotkom</a>:</strong> I am really liking the sound of the new MacBook Pro line. I need a computer for work and will look into it as an option.<br />
<strong><a href="http://twitter.com/decti">decti</a>:</strong> still no 13&#8243; mb with 1440 resolution == sucks</p>
<p>And my favorite:<br />
<strong><a href="http://twitter.com/aaroncflores">aaroncflores</a>:</strong> @theappleblog will the Dev Team have jail break ready by the 17th?</p>
<p>What do you think about today&#8217;s announcements?</p>
<br />  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gigaom.com&#038;blog=14960843&#038;post=172887&#038;subd=gigaom2&#038;ref=&#038;feed=1" width="1" height="1" /><p><a href="http://pubads.g.doubleclick.net/gampad/jump?iu=/1008864/GigaOM_RSS_300x250&#038;sz=300x250&#038;c=104605"><img src="http://pubads.g.doubleclick.net/gampad/ad?iu=/1008864/GigaOM_RSS_300x250&#038;sz=300x250&#038;c=104605" /></a></p><p><strong>Related research and analysis from GigaOM Pro:</strong><br />Subscriber content. <a href="http://pro.gigaom.com/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=172887+wwdc-announcements-smules-ge-wang-and-twitterers-respond&utm_content=balanon">Sign up for a free trial</a>.</p><ul><li><a href="http://pro.gigaom.com/2011/11/connectivity-means-making-the-machine-disappear/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=172887+wwdc-announcements-smules-ge-wang-and-twitterers-respond&utm_content=balanon">Connectivity means making the machine disappear</a></li><li><a href="http://pro.gigaom.com/2010/09/how-to-market-your-iphone-app-a-developers-guide/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=172887+wwdc-announcements-smules-ge-wang-and-twitterers-respond&utm_content=balanon">How to Market Your iPhone App: A Developer&#8217;s Guide</a></li><li><a href="http://pro.gigaom.com/2010/06/report-the-in-app-advertising-landscape/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=172887+wwdc-announcements-smules-ge-wang-and-twitterers-respond&utm_content=balanon">Report: The In-App Advertising Landscape</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://gigaom.com/2009/06/08/wwdc-announcements-smules-ge-wang-and-twitterers-respond/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>43 iPhone Development Resources</title>
		<link>http://gigaom.com/2009/06/01/43-iphone-development-resources/</link>
		<comments>http://gigaom.com/2009/06/01/43-iphone-development-resources/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 18:00:32 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[CNN Mobile]]></category>
		<category><![CDATA[NYT Enterprise]]></category>
		<category><![CDATA[SYN Feature Enterprise]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[roundup]]></category>

		<guid isPermaLink="false">http://theappleblog.com/?p=24622</guid>
		<description><![CDATA[Programming for the iPhone is still pretty new. It might be a bit tougher to find iPhone developer resources, but we found a bunch that will get you through building any iPhone app you might be starting on. Check out our list of our favorite developer [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gigaom.com&#038;blog=14960843&#038;post=172799&#038;subd=gigaom2&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p class="excerpt">Programming for the iPhone is still pretty new. It might be a bit tougher to find iPhone developer resources, but we found a bunch that will get you through building any iPhone app you might be starting on. Check out our list of our favorite developer books, blogs, podcasts, screencasts, open-source libraries, communities, forums, conferences, training, and more!</p>
<h2>Books</h2>
<p><img title="Beginning iPhone Development" src="http://gigapple.files.wordpress.com/2009/05/41lv4d3yu6l1.jpg?w=228&#038;h=293" alt="Beginning iPhone Development" width="228" height="293"  class=" alignright" /></p>
<h3><a href="http://www.amazon.com/gp/product/1430216263">Beginning iPhone Development: Exploring the iPhone SDK</a></h3>
<p>This is the go-to book for beginning iPhone developers by <a href="http://twitter.com/jeff_lamarche">Jeff Lamarche</a> and <a href="http://twitter.com/davemark">Dave Mark</a>. It takes you from downloading the SDK to creating your very own apps. The official page and support site: <a href="http://iphonedevbook.com/">http://iphonedevbook.com/</a></p>
<h3><a href="http://www.amazon.com/gp/product/0321566157">Programming in Objective-C 2.0</a></h3>
<p>This is the book to get if you&#8217;re just starting out programming. It assumes you have no prior programming knowledge before picking it up. It&#8217;s highly recommended for people who don&#8217;t know any programming and want to learn Objective-C.  Not a lot of iPhone-specific stuff in this one, but a lot of this knowledge will carry over when you do want to create iPhone apps.</p>
<h3><a href="http://www.amazon.com/gp/product/0321503619">Cocoa Programming for Mac OS X</a></h3>
<p>This book assumes you know a bit of C/C++, and it&#8217;s a really good book for getting started with Apple&#8217;s developer frameworks. There isn&#8217;t a lot of iPhone-specific stuff in this book, but a lot of what you learn carries over into iPhone development.</p>
<h3><a href="http://www.pragprog.com/titles/amiphd/iphone-sdk-development">Pragmatic Programmers iPhone SDK Development</a></h3>
<p>This book is in beta still, so you can only get the PDF. It was originally scheduled to be released by now, but they are updating it to include iPhone SDK 3.0. It&#8217;s still worth it to get the PDF. I&#8217;ve gone through it, and it is fantastic. The book is now set to be released in September.</p>
<h3><a href="http://www.amazon.com/gp/product/03215554577">The iPhone Developer&#8217;s Cookbook: Building Applications with the iPhone SDK</a></h3>
<p>This book is full of code snippets that will help a lot of people with common tasks that Apple&#8217;s iPhone SDK doesn&#8217;t provide. There are some code blunders in this book, but luckily they&#8217;ve fixed the code and put it up <a href="http://code.google.com/p/cookbooksamples/downloads/list">here</a>. They also have movies at this site that demonstrate what each mini-project does.</p>
<h3><a href="http://www.amazon.com/gp/product/193398886X">iPhone in Action: Introduction to Web and SDK Development</a></h3>
<p>The iPhone in Action book covers both native and web programming in step-by-step tutorials. It&#8217;s a complete primer to iPhone development.<br />
<span id="more-172799"></span></p>
<h2>Blogs</h2>
<p><img  title="Mobile Orchard" src="http://gigapple.files.wordpress.com/2009/05/00000274.png?w=228&#038;h=284" alt="Mobile Orchard" width="228" height="284" class=" alignleft" /></p>
<h3><a href="http://www.mobileorchard.com/">Mobile Orchard</a></h3>
<p>The best iPhone developer blog I&#8217;ve seen. It&#8217;s written by <a href="http://twitter.com/dcgrigsby">Dan Grigsby</a> and <a href="http://twitter.com/lemonkey">Ari Braginsky</a>. I recommend you start with the top posts on the right sidebar and go through all the archives. Pretty much all of the articles are gold.</p>
<h3><a href="http://icodeblog.com/">iCodeBlog</a></h3>
<p>This blog has some of the best iPhone app building tutorials on the web. They have newbie tutorials as well as multi-part advanced tutorials ranging from Hello World to game development. The &#8220;ToDo List Using SQLite&#8221; tutorial series is a good start for a new developer to learn a breadth of concepts.</p>
<h3><a href="http://iphonedevcentral.org/">iPhone Development Central</a></h3>
<p>The meat of this site is the video tutorials. The videos are separated into different levels of complexity. Good site for audio/visual learners.</p>
<h3><a href="http://drobnik.com/touch">Dr. Touch</a></h3>
<p>Dr. Touch gives us a mix of specific programming solutions as well his experiences with the App Store and his sales. The recipes section of his blog have really useful code snippets to help you build your app.</p>
<h3><a href="http://iphonedevelopment.blogspot.com/">iPhone Development</a></h3>
<p><a href="http://twitter.com/jeff_lamarche">Jeff Lamarche</a> is also the author of <a href="http://www.amazon.com/gp/product/1430216263">Beginning iPhone Development: Exploring the iPhone SDK</a>. He keeps his blog updated constantly with cutting-edge code and even a guide to <a href="http://iphonedevelopment.blogspot.com/2009/05/wwdc-first-timer-guide-redux.html">surviving WWDC</a>.</p>
<h3><a href="http://iphone.keyvisuals.com/">Keyvisuals iPhone Development</a></h3>
<p>This blog isn&#8217;t updated as often as some of the others, but the articles that do come out are really useful. My favorite recent one is <a href="http://iphone.keyvisuals.com/code-snippets/how-to-detect-network-availability-in-apps/">How to Detect Network Availability</a>.</p>
<h3><a href="http://www.71squared.co.uk/">71squared</a></h3>
<p>71squared has some great iPhone game development tutorial collections. It is updated quite often, and anyone interested in iPhone game development should check it out.</p>
<h3><a href="http://howtomakeiphoneapps.com/">How to Make iPhone Apps</a></h3>
<p>It&#8217;s a fusion of iPhone app marketing and coding. Most of the site is focused on marketing your app.</p>
<h3><a href="http://www.iphonesdkarticles.com/">iPhone SDK Articles</a></h3>
<p>This blog isn&#8217;t updated that much these days, but the articles are still useful. It&#8217;s 100 percent dedicated to code tutorials.</p>
<h3><a href="http://148apps.biz/">148apps.biz</a></h3>
<p><a href="http://twitter.com/jeff148apps">Jeff Scott</a> writes about various iPhone app marketing tips and analytics. The blog is focused on the business side of iPhone apps. It&#8217;s fairly new and looks very promising.</p>
<h3><a href="http://iphonedevelopertips.com/">iPhone developer:tips</a></h3>
<p>A how-to focused blog run by <a href="http://twitter.com/iPDT">John Muchow</a>. The posts are put together in nice bite-size pieces.</p>
<h3><a href="http://bill.dudney.net/roller/objc/">PrEV</a></h3>
<p><a href="http://twitter.com/bdudney">Bill Dudney</a> is an author/screencaster with the <a href="http://pragprog.com">Pragmatic Programmers</a> family. The books and screencasts he makes are good for beginners, but a lot of the stuff on his blog address more complicated coding issues and bugs in the SDK.</p>
<h2>Podcasts/Screencasts</h2>
<p><img  title="iPhone Application Programming" src="http://gigapple.files.wordpress.com/2009/05/00000275.png?w=228&#038;h=279" alt="iPhone Application Programming" width="228" height="279" class=" alignleft" /></p>
<h3><a href="http://www.stanford.edu/class/cs193p/cgi-bin/index.php">Stanford iPhone Application Programming Course</a></h3>
<p>Stanford open-sourced its lecture, slides, and course material to the world. It&#8217;s available for free in iTunes. Watch the presentation by <a href="http://twitter.com/atebits">Loren Brichter</a> of Tweetie fame when you get a chance.</p>
<h3><a href="http://www.mobileorchard.com/category/podcast/">Mobile Orchard Podcast</a></h3>
<p>Awesome podcast series with iPhone app developers and their successes (and struggles) running iPhone app businesses. They always have A-list guests.</p>
<h3><a href="http://www.pragprog.com/screencasts">Pragmatic Programmer&#8217;s Screencast Series</a></h3>
<p>If you&#8217;re more of a video learner, start with the <a href="http://www.pragprog.com/screencasts/v-bdobjc/coding-in-objective-c-2-0">Coding in Objective-C 2.0</a> and <a href="http://www.pragprog.com/screencasts/v-mcxcode/becoming-productive-in-xcode">Becoming Productive in Xcode</a> screencasts. Follow that with the five-part <a href="http://www.pragprog.com/screencasts/v-bdiphone/writing-your-first-iphone-application">Writing Your First iPhone Application</a> screencast. If you really want to get fancy with transitions and animations, check out the <a href="http://www.pragprog.com/screencasts/v-bdcora/creating-a-compelling-user-interface-with-core-animation">Creating a Compelling User Interface with Core Animation</a> screencast.</p>
<h3><a href="http://peepcode.com/products/objective-c-for-rubyists">Objective-C for Rubyists</a></h3>
<p>Peepcode is usually known for its Ruby resources, but it has a great screencast that teaches you about Objective-C. It&#8217;s edited by Scott Stevenson of great Objective-C resource, <a href="http://www.CocoaDevCentral.com">CocoaDevCentral</a>.</p>
<h3><a href="http://www.theappshow.com/">The App Show</a></h3>
<p>Great conversations about everything related to iPhone apps. The podcasts are about an hour or so long.</p>
<h3><a href="http://www.iphonealley.com/podcast">iPhone Alley</a></h3>
<p>The iPhone Alley Podcast is a weekly roundtable with different iPhone app media peeps and creators. Each episode is very entertaining.</p>
<h3><a href="http://www.schenkstudios.com/Downloads.html">Schenk Studios</a></h3>
<p>This site has some great video tutorials &#8212; and a lot of them, too. He&#8217;s made 25 of them, including a sneak peek at some new 3.0 features.</p>
<h2>Open-Source Libraries</h2>
<p><img  title="Three 20" src="http://gigapple.files.wordpress.com/2009/05/00000277.png?w=570&#038;h=179" alt="Three 20" width="570" height="179" class=" alignleft" /></p>
<h3><a href="http://github.com/joehewitt/three20">Joe Hewitt&#8217;s Three20 Open-Source Objective-C library</a></h3>
<p>Three20 is a collection of iPhone UI classes, like a photo viewer, and general utilities, like an HTTP disk cache. Three20 is derived from the Facebook iPhone app, which is one of the most downloaded iPhone apps ever.</p>
<h3><a href="http://code.google.com/p/bullet/">Bullet Physics Engine</a></h3>
<p>Bullet is a free, professional 3D game multiphysics library used in some popular games in the App Store.</p>
<h3><a href="http://code.google.com/p/cocos2d-iphone/">Cocos2d Framework</a></h3>
<p>Cocos2d for the iPhone is a framework for building 2D games for the iPhone and iPod touch. There&#8217;s a great community around this open-source engine, so there&#8217;s plenty of support to help you get your iPhone game out there.</p>
<h3><a href="http://mattgemmell.com/source">Matt Legend Gemmell &#8211; Cocoa Source Code </a></h3>
<p><a href="https://twitter.com/mattgemmell">Matt Gemmell</a> has some great code out there for the community, including MGTwitterEngine, the Twitter API used in iPhone apps Birdhouse and Twitteriffic.</p>
<h3><a href="http://www.appsamuck.com/">Appsamuck</a></h3>
<p>An open-source collection of 31 mini-iPhone app projects to get you up and running fast.</p>
<h2>Communities/Forums</h2>
<p><img  title="iPhone Dev SDK" src="http://gigapple.files.wordpress.com/2009/05/000002731.png?w=228&#038;h=292" alt="iPhone Dev SDK" width="228" height="292" class=" alignleft" /></p>
<h3><a href="http://www.iphonedevelopersdk.com/">iPhone Dev SDK</a></h3>
<p>The greatest iPhone developer community on the Internet. <a href="http://twitter.com/chrisstewart">Chris Stewart&#8217;s</a> site boasts nearly 6,000 registered users. The forums are very active. You&#8217;ll find yourself visiting this site at least once a day.</p>
<h3><a href="http://stackoverflow.com/questions/tagged/objective-c">Stack Overflow</a></h3>
<p>Stack Overflow is a collaboratively edited question and answer site for programmers &#8212; regardless of platform or language. Every question asked on the site will almost always get a correct answer.</p>
<h3><a href="http://forums.macrumors.com/forumdisplay.php?f=135">MacRumors Forums for iPhone Programming</a></h3>
<p>Great community of developers on this forum. They even include some nice guides for getting started with iPhone development.</p>
<h2>Conferences/Training</h2>
<p><img  title="WWDC" src="http://gigapple.files.wordpress.com/2009/05/00000276.png?w=570&#038;h=233" alt="WWDC" width="570" height="233" class=" alignleft" /></p>
<h3><a href="http://developer.apple.com/WWDC/">Apple Worldwide Developers Conference</a></h3>
<p>WWDC is Apple&#8217;s official developer conference. All the cutting-edge programming topics are taught here. The 2009 one runs from June 8-12. WWDC is the Mac daddy of all iPhone conferences. Get it? Mac daddy? I&#8217;m here all night, folks.</p>
<h3><a href="http://www.360idev.com/">360|iDev</a></h3>
<p>360|iDev is the premiere iPhone, iPod touch developer conference in the world. The next one will be a four-day event and will take place September 27-30, 2009 in Denver, Colo. They have a call for papers right now if you want to make a debut as a conference speaker.</p>
<h3><a href="http://pragmaticstudio.com/iphone/">Pragmatic Studio&#8217;s iPhone Development Course</a></h3>
<p>Here you will learn how to build iPhone applications from experienced iPhone developers <a href="http://twitter.com/bdudney">Bill Dudney</a> and Daniel Steinberg in this four-day training course. The next one runs August 4-7, 2009 in Reston, Va.</p>
<h3><a href="http://www.iphonedevcamp.org/">iPhoneDevCamp</a></h3>
<p>iPhoneDevCamp is the brainchild of <a href="http://twitter.com/ravenme">Raven</a> and <a href="http://twitter.com/dom">Dom</a>. The event format is &#8220;unconference&#8221; or Barcamp-style, featuring content from the participants themselves.  There are satellite events held all over the country.  The next one is this August.</p>
<h3><a href="http://www.gdconf.com/">Game Developers Conference</a></h3>
<p>This conference is for all game developers, and there&#8217;s an increasing number of mobile app game developers. If you&#8217;re a game developer or want to be one, this is the one game developer conference to go to.</p>
<h3><a href="http://stackoverflow.carsonified.com/">StackOverflow DevDays</a></h3>
<p>This is more of a general developer conference, not just iPhone developers. The beauty of this conference is that it&#8217;s in multiple locations and dates, and it only costs $99. Plus, you get to hang out with <a href="http://twitter.com/spolsky">Joel Spolsky</a>.</p>
<h2>Other Collections Of Resources</h2>
<p><img  title="iPhone Dev Center" src="http://gigapple.files.wordpress.com/2009/05/00000278.png?w=228&#038;h=264" alt="iPhone Dev Center" width="228" height="264" class=" alignleft" /></p>
<h3><a href="http://developer.apple.com/iphone/index.action">Apple&#8217;s Official iPhone Dev Resources</a></h3>
<p>The Apple engineers give us a lot of information to get started with app development. There are a lot of resources that Apple provides including documentation, how-tos, videos, code samples and forums.</p>
<h3><a href="http://www.iphoneflow.com/">iPhone Flow</a></h3>
<p>This site is updated daily with the best iPhone developer links on the web. It&#8217;s driven by the community submissions, and all the links are top-quality here. The site is maintained by the <a href="http://www.mobileorchard.com">Mobile Orchard</a> crew.</p>
<h3><a href="http://xcake.org/wiki/Resources">XCake iPhone Dev Resources</a></h3>
<p>MattJ&#8217;s collection of iPhone developer resources. A lot of good stuff here including our very own <a href="http://theappleblog.com/2009/05/11/iphone-dev-sessions-create-a-drum-app/">Create A Drum App </a>tutorial.</p>
<h3><a href="http://www.theflyingjalapenolives.com/2009/05/my-greatest-iphone-development-resource/">The Flying Jalapeno Lives</a></h3>
<p>Great list of iPhone development blogs written by Corey.</p>
<p>Those are my favorites. I&#8217;m not a human Google, so I may have missed some gems. What are your favorite iPhone developer resources?</p>
<br />  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gigaom.com&#038;blog=14960843&#038;post=172799&#038;subd=gigaom2&#038;ref=&#038;feed=1" width="1" height="1" /><p><a href="http://pubads.g.doubleclick.net/gampad/jump?iu=/1008864/GigaOM_RSS_300x250&#038;sz=300x250&#038;c=511709"><img src="http://pubads.g.doubleclick.net/gampad/ad?iu=/1008864/GigaOM_RSS_300x250&#038;sz=300x250&#038;c=511709" /></a></p><p><strong>Related research and analysis from GigaOM Pro:</strong><br />Subscriber content. <a href="http://pro.gigaom.com/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=172799+43-iphone-development-resources&utm_content=balanon">Sign up for a free trial</a>.</p><ul><li><a href="http://pro.gigaom.com/2011/12/migrating-media-applications-to-the-private-cloud-best-practices-for-businesses/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=172799+43-iphone-development-resources&utm_content=balanon">Migrating media applications to the private cloud: best practices for businesses</a></li><li><a href="http://pro.gigaom.com/2011/07/mobile-q2-smartphone-growth-surges-ipads-rule-continues/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=172799+43-iphone-development-resources&utm_content=balanon">Mobile Q2: Smartphone growth surges; iPad&#8217;s rule continues</a></li><li><a href="http://pro.gigaom.com/2010/09/how-to-market-your-iphone-app-a-developers-guide/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=172799+43-iphone-development-resources&utm_content=balanon">How to Market Your iPhone App: A Developer&#8217;s Guide</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://gigaom.com/2009/06/01/43-iphone-development-resources/feed/</wfw:commentRss>
		<slash:comments>125</slash:comments>
	
		<media:content url="http://gigapple.files.wordpress.com/2009/05/41lv4d3yu6l1.jpg" medium="image">
			<media:title type="html">Beginning iPhone Development</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/05/00000274.png" medium="image">
			<media:title type="html">Mobile Orchard</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/05/00000275.png" medium="image">
			<media:title type="html">iPhone Application Programming</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/05/00000277.png" medium="image">
			<media:title type="html">Three 20</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/05/000002731.png" medium="image">
			<media:title type="html">iPhone Dev SDK</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/05/00000276.png" medium="image">
			<media:title type="html">WWDC</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/05/00000278.png" medium="image">
			<media:title type="html">iPhone Dev Center</media:title>
		</media:content>
	</item>
		<item>
		<title>iPhone Dev Sessions: Create a Drum App</title>
		<link>http://gigaom.com/2009/05/11/iphone-dev-sessions-create-a-drum-app/</link>
		<comments>http://gigaom.com/2009/05/11/iphone-dev-sessions-create-a-drum-app/#comments</comments>
		<pubDate>Mon, 11 May 2009 18:00:10 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[CNN Mobile]]></category>
		<category><![CDATA[SYN Feature Enterprise]]></category>
		<category><![CDATA[Walkthroughs]]></category>
		<category><![CDATA[bickboxx]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iphone dev sessions]]></category>

		<guid isPermaLink="false">http://theappleblog.com/?p=22658</guid>
		<description><![CDATA[You’ve seen all the different drum apps, right? Well, they’re really easy to make. In this iPhone Dev Sessions article, I want to teach you how to make Bickboxx, an actual app that’s in the iTunes App Store. Grab Bickboxx (FREE) from the iTunes App Store [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gigaom.com&#038;blog=14960843&#038;post=172691&#038;subd=gigaom2&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><img  title="BickBoxx-1" src="http://gigapple.files.wordpress.com/2009/05/bickboxx-1.jpg?w=250&#038;h=248" alt="BickBoxx-1" width="250" height="248" class=" alignleft" /></p>
<p class="excerpt">You’ve seen all the different drum apps, right? Well, they’re really easy to make. In this <a href="http://theappleblog.com/tag/iphone-dev-sessions/">iPhone Dev Sessions</a> article, I want to teach you how to make Bickboxx, an actual app that’s in the <a href="http://a.bickbot.com/boxx">iTunes App Store</a>.</p>
<p>Grab <a href="http://a.bickbot.com/boxx">Bickboxx</a> (FREE) from the iTunes App Store if you want to see this puppy in action so you have an idea of what you&#8217;re building. Also, I’ve opened up the <a href="http://github.com/balanon/bickboxx/">source code</a> for free at Github. Feel free to download it, report issues, or even fork your own version and change it as you see fit.</p>
<p>More info on the open-source community project at <a href="http://bickbot.com/bickboxx/">Bickbot&#8217;s Bickboxx page</a>.</p>
<p>Note: You don’t need to download the code from Github to get through the tutorial.</p>
<h3>An On-going Project</h3>
<p>I plan on adding more tutorials with enhancements to this project. Here are a couple of things that could be featured in future iPhone Dev Sessions.</p>
<ul>
<li>Key logger</li>
<li>Adding analytics tracking</li>
<li>Adding application preferences</li>
<li>Track recorder and editor</li>
<li>Vibration feedback</li>
<li>Add your own custom sounds</li>
<li>Access your iPod library as a background track</li>
</ul>
<p>Leave a comment with other enhancements you want to learn.</p>
<p>OK, let&#8217;s get to creating Bickboxx! <span id="more-172691"></span></p>
<h3>Get Started</h3>
<p>Create a new View-based project in XCode. Name the project &#8220;Bickboxx&#8221;.</p>
<p><img src="http://gigapple.files.wordpress.com/2009/04/createnewproject.png?w=708" alt="" class=" alignleft" /></p>
<p><a href="http://a.theappleblog.com/downloads/BickboxxAssets.zip">Download this zip file</a> and unzip it. These are all the sounds, images, and icons you need for Bickboxx. Drag all these files to the Resources. Hat tip to <a href="http://twitter.com/ellenich">John Ellenich</a> for the graphics/sounds.</p>
<p><img src="http://gigapple.files.wordpress.com/2009/04/dragtoresources.png?w=708" alt="" class=" alignleft" /></p>
<p>You need to copy the item to the project’s directory, so put a check mark next to “Copy items into destination group’s folder (if needed).” Your settings should look similar to this. Click Add.</p>
<p><img src="http://gigapple.files.wordpress.com/2009/04/copyitems.png?w=708" alt="" class=" alignleft" /></p>
<h3>Adding the background image in Interface Builder</h3>
<p>Double-click <em><strong>BickboxxViewController.xib</strong></em> to open it in Interface Builder. Drag an Image View (<code>UIImageView</code>) from the Library to the View window. This will act as a placement holder for our background image.</p>
<p><img src="http://gigapple.files.wordpress.com/2009/04/image-5101.png?w=510&amp;h=415" alt="" class=" alignleft" /></p>
<p>Bring up the Attributes Inspector. Set the Image to <code>Background.png</code>.</p>
<p><img src="http://gigapple.files.wordpress.com/2009/04/background_png.png?w=708" alt="" class=" alignleft" /></p>
<h3>Creating the Button in Interface Builder</h3>
<p>Drag a Round Rect Button (<code>UIButton</code>) to the View.</p>
<p><img src="http://gigapple.files.wordpress.com/2009/04/dragbutton.png?w=708" alt="" class=" alignleft" /></p>
<p>Bring up the Attributes Inspector. We don’t want the button to look like an ugly white rectangle. Set the Type to Custom.</p>
<p><img src="http://gigapple.files.wordpress.com/2009/04/custombutton.png?w=708" alt="" class=" alignleft" /></p>
<p>Further down the Attributes Inspector, set the button’s state to Normal (or Default State Configuration depending on your version of Xcode). This is what the button looks like when it’s not doing anything.</p>
<p><img src="http://gigapple.files.wordpress.com/2009/04/normalbutton.png?w=708" alt="" class=" alignleft" /></p>
<p>Set the button’s Image to <code>B Inactive.png</code>.  You need to resize the button in the View to make sure the “B” button is fully shown.</p>
<p><img src="http://gigapple.files.wordpress.com/2009/04/binactive.png?w=708" alt="" class=" alignleft" /></p>
<p>Now, change the button’s state to Highlighted (or Highlighted State Configuration depending on your version of Xcode). This is what the button looks like when it’s pressed down.</p>
<p><img src="http://gigapple.files.wordpress.com/2009/04/bactive.png?w=708" alt="" class=" alignleft" /></p>
<p>Set the button’s Image to <code>B Active.png</code>.</p>
<p>Drag another Round Rect Button (<code>UIButton</code>) to the View and repeat this section for the letters “E”, “A”, and “T”. Your View should now look like this:</p>
<p><img src="http://gigapple.files.wordpress.com/2009/04/beatfull.png?w=708" alt="" class=" alignleft" /></p>
<p>Close Interface Builder for now.</p>
<p>Build and Go to make sure everything is still working. Touch the buttons, and they should light up.</p>
<h3>Adding the Sounds Code</h3>
<p>We have an interface that doesn’t do anything. Let’s fix that. The audio framework we need isn’t added by default. We have to add the AudioToolbox framework.</p>
<p>Control+Click the Frameworks folder on the left. Go to <strong>Add → Existing Frameworks&#8230;</strong></p>
<p><img src="http://gigapple.files.wordpress.com/2009/04/addframework.png?w=708" alt="" class=" alignleft" /></p>
<p>Select the <em><strong>AudioToolbox.framework</strong></em> from <em><strong>/System/Library/Frameworks</strong></em>.</p>
<p><img src="http://gigapple.files.wordpress.com/2009/04/audiotoolbox.png?w=708" alt="" class=" alignleft" /></p>
<p>Click OK and add it to the project.</p>
<p>Open <em><strong>BickboxxViewController.h</strong></em> and add this code to it.</p>
<pre class="brush: csharp; title: ; notranslate">

#import &lt;UIKit/UIKit.h&gt;
#import &lt;AudioToolbox/AudioServices.h&gt;

@interface BickboxxViewController : UIViewController {
    CFURLRef        bNoteFileURLRef;
    SystemSoundID    bNoteFileObject;
    CFURLRef        eNoteFileURLRef;
    SystemSoundID    eNoteFileObject;
    CFURLRef        aNoteFileURLRef;
    SystemSoundID    aNoteFileObject;
    CFURLRef        tNoteFileURLRef;
    SystemSoundID    tNoteFileObject;
}

@property (readwrite)    CFURLRef        bNoteFileURLRef;
@property (readonly)    SystemSoundID    bNoteFileObject;
@property (readwrite)    CFURLRef        eNoteFileURLRef;
@property (readonly)    SystemSoundID    eNoteFileObject;
@property (readwrite)    CFURLRef        aNoteFileURLRef;
@property (readonly)    SystemSoundID    aNoteFileObject;
@property (readwrite)    CFURLRef        tNoteFileURLRef;
@property (readonly)    SystemSoundID    tNoteFileObject;

@end

</pre>
<p>At the top, we’re referencing <strong>AudioServices.h</strong> from the AudioToolbox framework we imported earlier.</p>
<p>Below that is the declaration of properties for four sounds for the “B”, “E”, “A” and “T” buttons.</p>
<p><code>bNoteFileURLRef</code> is the file location reference for the <code>bNoteFileObject</code>. This is the sound the “B” button will make.</p>
<p>These are the properties for the “E”, “A” and “T” sounds as well.</p>
<h3>The BickboxxViewController.m File</h3>
<p>Open <em><strong>BickboxxViewController.m</strong></em>. We need to synthesize the getters/setters for our properties.</p>
<p>You can do this by adding this after <code>@implementation BickBoxxViewController</code>:</p>
<pre class="brush: csharp; title: ; notranslate">

@synthesize bNoteFileURLRef, bNoteFileObject, eNoteFileURLRef,
eNoteFileObject, aNoteFileURLRef, aNoteFileObject,
tNoteFileURLRef, tNoteFileObject;

</pre>
<h3>Changing the viewDidLoad Method</h3>
<p>Locate the <code>viewDidLoad</code> method. It will be commented out. You want to uncomment it to activate it.</p>
<p>The <code>viewDidLoad</code> method gets called after all the UI components are created. This is a good place for any startup code you need your app to perform. In this case, we’ll need to set our properties to the correct sounds.</p>
<p>The first thing we need to do in <code>viewDidLoad</code> is get the main bundle for the app. The main bundle allows you to use a folder hierarchy to organize and locate many types of application resources including images, sounds, localized strings, and executable code.</p>
<p>After <code>[super viewDidLoad];</code>, add this code to get the main bundle for the app.</p>
<pre class="brush: csharp; title: ; notranslate">

// Get the main bundle for the app
CFBundleRef mainBundle;
mainBundle = CFBundleGetMainBundle ();

</pre>
<p>To build the sound for the “B” button, we need to get the path of the sound file we want to play. The name of the sound file is <em><strong>B.aifc</strong></em>. This is the code to get the URL to the found file to play. Put this code after the code where you get the main bundle.</p>
<pre class="brush: csharp; title: ; notranslate">

// Get the URL to the sound file to play
bNoteFileURLRef  =    CFBundleCopyResourceURL (
                                             mainBundle,
                                             CFSTR ("B"),
                                             CFSTR ("aifc"),
                                             NULL
                                             );

</pre>
<p>Note that valid system sound packages are <code>.wav</code>, <code>.aif</code> and <code>.caf</code> files.</p>
<p>Now that we have <code>bNoteFileURLRef</code> set we can associate the sound file with the system sound object <code>bNoteFileObject</code>. The <code>AudioServicesPlaySystemSound</code> function lets you very simply play short sound files.</p>
<p>Add this code after the code that gets the sound file URL.</p>
<pre class="brush: csharp; title: ; notranslate">

// Create a system sound object representing the sound file
AudioServicesCreateSystemSoundID (bNoteFileURLRef, &#038;bNoteFileObject);

</pre>
<p>We finished loading up the sound for the &#8220;B&#8221; button. We’ll need to load up the sounds for the “E”, “A” and “T” buttons.</p>
<p>Try to code this part yourself. If you get stuck, the <code>viewDidLoad</code> method should look like this when you&#8217;re done.</p>
<pre class="brush: csharp; title: ; notranslate">

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];

    // Get the main bundle for the app
    CFBundleRef mainBundle;
    mainBundle = CFBundleGetMainBundle ();

    // Get the URL to the sound file to play
    bNoteFileURLRef  =    CFBundleCopyResourceURL (
                                                 mainBundle,
                                                 CFSTR ("B"),
                                                 CFSTR ("aifc"),
                                                 NULL
                                                 );

    // Create a system sound object representing the sound file
    AudioServicesCreateSystemSoundID (bNoteFileURLRef, &#038;bNoteFileObject);

    // Get the URL to the sound file to play
    eNoteFileURLRef  =    CFBundleCopyResourceURL (
                                                 mainBundle,
                                                 CFSTR ("E"),
                                                 CFSTR ("aifc"),
                                                 NULL
                                                 );

    // Create a system sound object representing the sound file
    AudioServicesCreateSystemSoundID (eNoteFileURLRef, &#038;eNoteFileObject);

    // Get the URL to the sound file to play
    aNoteFileURLRef  =    CFBundleCopyResourceURL (
                                                 mainBundle,
                                                 CFSTR ("A"),
                                                 CFSTR ("aifc"),
                                                 NULL
                                                 );
    // Create a system sound object representing the sound file
    AudioServicesCreateSystemSoundID (aNoteFileURLRef, &#038;aNoteFileObject);

    // Get the URL to the sound file to play
    tNoteFileURLRef  =    CFBundleCopyResourceURL (
                                                 mainBundle,
                                                 CFSTR ("T"),
                                                 CFSTR ("aifc"),
                                                 NULL
                                                 );

    // Create a system sound object representing the sound file
    AudioServicesCreateSystemSoundID (tNoteFileURLRef, &#038;tNoteFileObject);
}

</pre>
<h3>Creating Our IBActions</h3>
<p>Our BEAT buttons need to be associated with IBActions to make them do something. First, let’s declare the methods. Open <em><strong>BickboxxViewController.h</strong></em> and add this code before the <code>@end</code> line.</p>
<pre class="brush: csharp; title: ; notranslate">
- (IBAction)bSound:(id)sender;
- (IBAction)eSound:(id)sender;
- (IBAction)aSound:(id)sender;
- (IBAction)tSound:(id)sender;
</pre>
<p>Your <em><strong>BickboxxViewController.h</strong></em> should now look like:</p>
<pre class="brush: csharp; title: ; notranslate">

#import &lt;UIKit/UIKit.h&gt;
#import &lt;AudioToolbox/AudioServices.h&gt;

@interface BickBoxxViewController : UIViewController {
    CFURLRef        bNoteFileURLRef;
    SystemSoundID    bNoteFileObject;
    CFURLRef        eNoteFileURLRef;
    SystemSoundID    eNoteFileObject;
    CFURLRef        aNoteFileURLRef;
    SystemSoundID    aNoteFileObject;
    CFURLRef        tNoteFileURLRef;
    SystemSoundID    tNoteFileObject;
}

@property (readwrite)    CFURLRef        bNoteFileURLRef;
@property (readonly)    SystemSoundID    bNoteFileObject;
@property (readwrite)    CFURLRef        eNoteFileURLRef;
@property (readonly)    SystemSoundID    eNoteFileObject;
@property (readwrite)    CFURLRef        aNoteFileURLRef;
@property (readonly)    SystemSoundID    aNoteFileObject;
@property (readwrite)    CFURLRef        tNoteFileURLRef;
@property (readonly)    SystemSoundID    tNoteFileObject;

// The new code you added
- (IBAction)bSound:(id)sender;
- (IBAction)eSound:(id)sender;
- (IBAction)aSound:(id)sender;
- (IBAction)tSound:(id)sender;

@end

</pre>
<p>Close the file and open <em><strong>BickboxxViewController.m</strong></em>. Add the implementation to make the IBAction methods make the appropriate system sounds by invoking the <code>AudioServicesPlaySystemSound</code> method.</p>
<p>To play the “B” sound, the implemented method should make a call to <code>AudioServicesPlaySystemSound</code> and use the <code>bNoteFileObject</code> we created above. Add this after the property synthesis code:</p>
<pre class="brush: csharp; title: ; notranslate">
- (IBAction)bSound:(id)sender {
AudioServicesPlaySystemSound (self.bNoteFileObject);
}
</pre>
<p>Add similar implementations for the “E”, “A” and “T” sounds as well.</p>
<p>For reference, the top of <em><strong>BickboxxViewController.m</strong></em> should look like:</p>
<pre class="brush: csharp; title: ; notranslate">

#import "BickBoxxViewController.h" 

@implementation BickBoxxViewController

@synthesize bNoteFileURLRef, bNoteFileObject, eNoteFileURLRef,
eNoteFileObject, aNoteFileURLRef, aNoteFileObject,
tNoteFileURLRef, tNoteFileObject;

- (IBAction)bSound:(id)sender {
    AudioServicesPlaySystemSound (self.bNoteFileObject);
}

- (IBAction)eSound:(id)sender {
    AudioServicesPlaySystemSound (self.eNoteFileObject);
}

- (IBAction)aSound:(id)sender {
    AudioServicesPlaySystemSound (self.aNoteFileObject);
}

- (IBAction)tSound:(id)sender {
    AudioServicesPlaySystemSound (self.tNoteFileObject);
}

</pre>
<p>For the last piece of code, we need to clean up our mess so we don’t have memory leaks. At the bottom of <em><strong>BickboxxViewController.m</strong></em>, add these lines to your <code>dealloc</code> method:</p>
<pre class="brush: csharp; title: ; notranslate">

- (void)dealloc {
    [super dealloc];
    AudioServicesDisposeSystemSoundID (self.bNoteFileObject);
    AudioServicesDisposeSystemSoundID (self.eNoteFileObject);
    AudioServicesDisposeSystemSoundID (self.aNoteFileObject);
    AudioServicesDisposeSystemSoundID (self.tNoteFileObject);
    CFRelease (bNoteFileURLRef);
    CFRelease (eNoteFileURLRef);
    CFRelease (aNoteFileURLRef);
    CFRelease (tNoteFileURLRef);
}

</pre>
<p>We&#8217;re done coding. Build and Go the project to make sure nothing is on fire. Your buttons won&#8217;t make any sounds yet. We&#8217;ll need to link our code to our interface.</p>
<h3>Linking the buttons to the code in Interface Builder</h3>
<p>Now that our code is done, we can link our buttons to our code. We’ll start with the “B” button link it with the <code>bsound</code> method. To do this, open up <em><strong>BickboxxViewController.xib</strong></em>.</p>
<p>Control+Click on the File’s Owner object so we can link our “B” button to our <code>bsound</code>.</p>
<p><img src="http://gigapple.files.wordpress.com/2009/04/rightclickfilesowner.png?w=708" alt="" class=" alignleft" /></p>
<p>Drag from the <code>bSound</code> in File’s Owner to the “B” button in the View.</p>
<p><img src="http://gigapple.files.wordpress.com/2009/04/fromfilesownertobutton.png?w=708" alt="" class=" alignleft" /></p>
<p>An overlay should pop up. Choose Touch Down. The normal default is to execute the action when the finger is lifted from the button. We don’t want that. Soundboards don’t work that way. This will call the <code>bSound</code> IBAction method when the button is pressed down.</p>
<p><img src="http://gigapple.files.wordpress.com/2009/04/touchdown.png?w=708" alt="" class=" alignleft" /></p>
<p>Do this linking with the rest of the buttons. When you’re done, Control+Clicking File’s owner should look like this.</p>
<p><img src="http://gigapple.files.wordpress.com/2009/04/allbuttonslinked.png?w=708" alt="" class=" alignleft" /></p>
<p>Here&#8217;s a video of me using Bickboxx to practice for my opening act for Paul Oakenfold.</p>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='604' height='370' src='http://www.youtube.com/embed/OBUA_cpSm1A?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span>
<h3>You’re done!</h3>
<p>That’s it &#8212; you’re done! Compile and run this and you’ll be DJ-ing parties with Moby in no time.</p>
<p>Again, you can download the source from social coding site <a href="http://github.com/balanon/bickboxx/">Github</a>. Feel free to file issues here if the code needs fixing or enhancing.</p>
<h3>Homework</h3>
<p>Are you ready to apply your newfound knowledge? Solidify it with this extra credit assignment.</p>
<p>Your homework: Add a new button and a new sound to the project.</p>
<p>If there are any typos, problems, suggestions, or questions, let me know here in the comments.</p>
<br />  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gigaom.com&#038;blog=14960843&#038;post=172691&#038;subd=gigaom2&#038;ref=&#038;feed=1" width="1" height="1" /><p><a href="http://pubads.g.doubleclick.net/gampad/jump?iu=/1008864/GigaOM_RSS_300x250&#038;sz=300x250&#038;c=712453"><img src="http://pubads.g.doubleclick.net/gampad/ad?iu=/1008864/GigaOM_RSS_300x250&#038;sz=300x250&#038;c=712453" /></a></p><p><strong>Related research and analysis from GigaOM Pro:</strong><br />Subscriber content. <a href="http://pro.gigaom.com/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=172691+iphone-dev-sessions-create-a-drum-app&utm_content=balanon">Sign up for a free trial</a>.</p><ul><li><a href="http://pro.gigaom.com/2011/07/mobile-q2-smartphone-growth-surges-ipads-rule-continues/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=172691+iphone-dev-sessions-create-a-drum-app&utm_content=balanon">Mobile Q2: Smartphone growth surges; iPad&#8217;s rule continues</a></li><li><a href="http://pro.gigaom.com/2010/09/how-to-market-your-iphone-app-a-developers-guide/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=172691+iphone-dev-sessions-create-a-drum-app&utm_content=balanon">How to Market Your iPhone App: A Developer&#8217;s Guide</a></li><li><a href="http://pro.gigaom.com/2010/04/why-the-ipad-is-right-for-the-enterprise/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=172691+iphone-dev-sessions-create-a-drum-app&utm_content=balanon">Why the iPad is Right for the Enterprise</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://gigaom.com/2009/05/11/iphone-dev-sessions-create-a-drum-app/feed/</wfw:commentRss>
		<slash:comments>56</slash:comments>
	
		<media:content url="http://gigapple.files.wordpress.com/2009/05/bickboxx-1.jpg" medium="image">
			<media:title type="html">BickBoxx-1</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/04/createnewproject.png" medium="image" />

		<media:content url="http://gigapple.files.wordpress.com/2009/04/dragtoresources.png" medium="image" />

		<media:content url="http://gigapple.files.wordpress.com/2009/04/copyitems.png" medium="image" />

		<media:content url="http://gigapple.files.wordpress.com/2009/04/image-5101.png?w=510&#38;h=415" medium="image" />

		<media:content url="http://gigapple.files.wordpress.com/2009/04/background_png.png" medium="image" />

		<media:content url="http://gigapple.files.wordpress.com/2009/04/dragbutton.png" medium="image" />

		<media:content url="http://gigapple.files.wordpress.com/2009/04/custombutton.png" medium="image" />

		<media:content url="http://gigapple.files.wordpress.com/2009/04/normalbutton.png" medium="image" />

		<media:content url="http://gigapple.files.wordpress.com/2009/04/binactive.png" medium="image" />

		<media:content url="http://gigapple.files.wordpress.com/2009/04/bactive.png" medium="image" />

		<media:content url="http://gigapple.files.wordpress.com/2009/04/beatfull.png" medium="image" />

		<media:content url="http://gigapple.files.wordpress.com/2009/04/addframework.png" medium="image" />

		<media:content url="http://gigapple.files.wordpress.com/2009/04/audiotoolbox.png" medium="image" />

		<media:content url="http://gigapple.files.wordpress.com/2009/04/rightclickfilesowner.png" medium="image" />

		<media:content url="http://gigapple.files.wordpress.com/2009/04/fromfilesownertobutton.png" medium="image" />

		<media:content url="http://gigapple.files.wordpress.com/2009/04/touchdown.png" medium="image" />

		<media:content url="http://gigapple.files.wordpress.com/2009/04/allbuttonslinked.png" medium="image" />
	</item>
		<item>
		<title>iPhone Dev Sessions: How To Make An Orientation-Aware Clock</title>
		<link>http://gigaom.com/2009/04/08/iphone-dev-sessions-how-to-make-an-orientation-aware-clock/</link>
		<comments>http://gigaom.com/2009/04/08/iphone-dev-sessions-how-to-make-an-orientation-aware-clock/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 17:00:19 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[SYN Feature Enterprise]]></category>
		<category><![CDATA[Walkthroughs]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iphone dev sessions]]></category>

		<guid isPermaLink="false">http://theappleblog.com/?p=20939</guid>
		<description><![CDATA[For this tutorial we&#8217;re going to build a simple clock that is orientation-aware, meaning that when you rotate your iPhone, the time rotates with it. I&#8217;m assuming you have a basic knowledge of the iPhone SDK. To get started, you will need a label for the [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gigaom.com&#038;blog=14960843&#038;post=172581&#038;subd=gigaom2&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><img  title="iphone_clock" src="http://gigapple.files.wordpress.com/2009/04/iphone_clock.png?w=570&#038;h=296" alt="iphone_clock" width="570" height="296" class=" alignleft" /></p>
<p class="excerpt">For this tutorial we&#8217;re going to build a simple clock that is orientation-aware, meaning that when you rotate your iPhone, the time rotates with it. I&#8217;m assuming you have a basic knowledge of the <a title="iPhone Dev Center - Apple Developer Connection" href="http://developer.apple.com/iphone/">iPhone SDK</a>.</p>
<p>To get started, you will need a label for the time and a background image. You will also need a timer. To get started, you must declare your outlets in code before Interface Builder will be able to use them. I&#8217;ll show you how to do that now.</p>
<h3>Let&#8217;s Get Our Hands in Some Code</h3>
<p>Edit <em><strong>SimpleClockViewController.h</strong></em> so it looks like this:</p>
<pre class="brush: csharp; title: ; notranslate">

#import &lt;UIKit/UIKit.h&gt;

@interface SimpleClockViewController : UIViewController {
	IBOutlet UILabel* clockLabel;
	NSTimer *myTicker;
}

@end

</pre>
<p>The <code>myTicker</code> is going to be responsible for updating the <code>clockLabel</code>. We will implement that code later. <span id="more-172581"></span></p>
<p>The next thing you want to do is drag <code>background_image.png</code> to your project (see image below). You can get the image <a href="http://gigapple.files.wordpress.com/2009/04/background_image.png">here</a>.</p>
<p><img  title="image-510" src="http://gigapple.files.wordpress.com/2009/04/image-510.png?w=510&#038;h=248" alt="image-510" width="510" height="248" class=" alignleft" /></p>
<p>You want to copy the item to the project&#8217;s directory so put a check mark next to &#8220;Copy items into destination group&#8217;s folder (if needed).&#8221; Your settings should look similar to this. Click Add.</p>
<p><img  title="2009-03-09_1229" src="http://gigapple.files.wordpress.com/2009/04/2009-03-09_1229.png?w=400&#038;h=374" alt="2009-03-09_1229" width="400" height="374" class=" alignleft" /></p>
<p>Open <em><strong>SimpleClockViewController.xib</strong></em>. Drag <code>UIImageView</code> from the Library to the View window. This will act as a placement holder for our background image.</p>
<p><img  title="image-5101" src="http://gigapple.files.wordpress.com/2009/04/image-5101.png?w=510&#038;h=415" alt="image-5101" width="510" height="415" class=" alignleft" /></p>
<p>Bring up the Attributes Inspector. Set the Image to <code>background_image.png</code>. Set the Mode to <strong>Scale To Fill</strong> so that the <code>background_image.png</code> stretches out when we rotate the iPhone.</p>
<p><img  title="2009-03-06_15431" src="http://gigapple.files.wordpress.com/2009/04/2009-03-06_15431.png?w=287&#038;h=339" alt="2009-03-06_15431" width="287" height="339" class=" alignleft" /></p>
<p>Bring up the Size Inspector and change the Autosizing settings to look like this. The arrows in the Autosizing box act as outward springs, which cause the view to resize itself proportionally based on the width or height of its superview. The &#8220;I&#8221;s act as struts that keep a fixed distance when the View is changed when you rotate the iPhone. If that&#8217;s hard to visualize, Interface Builder has an animation to the right of the Autosizing box will help you visualize its current settings.</p>
<p><img  title="2009-03-06_1545" src="http://gigapple.files.wordpress.com/2009/04/2009-03-06_1545.png?w=287&#038;h=465" alt="2009-03-06_1545" width="287" height="465" class=" alignleft" /></p>
<p>Drag a Label to the View window and resize to approximately the width of the window. Center it. This makes the time larger and also positions the time to be rotated around its center point when you turn the iPhone into landscape mode.</p>
<p><img  title="image-5102" src="http://gigapple.files.wordpress.com/2009/04/image-5102.png?w=510&#038;h=381" alt="image-5102" width="510" height="381" class=" alignleft" /></p>
<p>Change the font of the label by selecting the Label and hitting Command-T. Change the settings so you&#8217;re using Helvetica, Bold, size 48.</p>
<p><img  title="2009-03-06_15561" src="http://gigapple.files.wordpress.com/2009/04/2009-03-06_15561.png?w=445&#038;h=270" alt="2009-03-06_15561" width="445" height="270" class=" alignleft" /></p>
<p>Bring up the Attributes Inspector. Change the Layout Alignment to Center. Again, we&#8217;re doing this so the time rotates around its center.  Change the font color to white so it looks good on the dark background. It should look similar to this:</p>
<p><img  title="2009-03-06_1557" src="http://gigapple.files.wordpress.com/2009/04/2009-03-06_1557.png?w=287&#038;h=663" alt="2009-03-06_1557" width="287" height="663" class=" alignleft" /></p>
<p>Bring up the Size Inspector and change your Autosizing settings to look like the image below. This makes sure the time rotates and positions itself correctly around its center.</p>
<p><img  title="2009-03-06_1557a" src="http://gigapple.files.wordpress.com/2009/04/2009-03-06_1557a.png?w=287&#038;h=663" alt="2009-03-06_1557a" width="287" height="663" class=" alignleft" /></p>
<p>Lastly, Control-Drag from File&#8217;s Owner to the Label and choose <code>clockLabel</code> when the outlet box pops up. This tells your Label which variable it is in the code.</p>
<p><img  title="2009-03-09_1311" src="http://gigapple.files.wordpress.com/2009/04/2009-03-09_1311.png?w=434&#038;h=240" alt="2009-03-09_1311" width="434" height="240" class=" alignleft" /></p>
<p>Save and close Interface Builder. Back in Xcode, open <em><strong>SimpleClockViewController.h</strong></em> and add <code>runTimer</code> and <code>showActivity</code> methods. These declare the functions we&#8217;re going to write.</p>
<pre class="brush: csharp; title: ; notranslate">

#import &lt;UIKit/UIKit.h&gt;

@interface SimpleClockViewController : UIViewController {
	IBOutlet UILabel* clockLabel;
	NSTimer *myTicker;
}

/* New Methods */
- (void) runTimer;
- (void)showActivity;

</pre>
<p>Open <em><strong>SimpleClockViewController.m</strong></em> and add the methods we just declared.</p>
<pre class="brush: csharp; title: ; notranslate">

- (void)runTimer {
  // This starts the timer which fires the showActivity
  // method every 0.5 seconds
  myTicker = [NSTimer scheduledTimerWithTimeInterval: 0.5
                        target: self
                        selector: @selector(showActivity)
                        userInfo: nil
                         repeats: YES];

}

// This method is run every 0.5 seconds by the timer created
// in the function runTimer
- (void)showActivity {

  NSDateFormatter *formatter =
          [[[NSDateFormatter alloc] init] autorelease];
    NSDate *date = [NSDate date];

    // This will produce a time that looks like &quot;12:15:00 PM&quot;.
    [formatter setTimeStyle:NSDateFormatterMediumStyle];

  // This sets the label with the updated time.
  [clockLabel setText:[formatter stringFromDate:date]];

}

</pre>
<p>The <code>runTimer</code> method only has 1 line of code split into multiple lines. All it does is call the <code>showActivity</code> method every 0.5 seconds.</p>
<p>The <code>showActivity</code> method formats the <code>clockLabel</code> so it looks like &#8220;12:15:00 PM&#8221; and sets it to the current time. As mentioned above, this method is called every 0.5 seconds.</p>
<p>We want to call <code>runTimer</code> after the view loads. This is a common method that, when Xcode generated <em><strong>SimpleClockViewController.m</strong></em>, they included a method called <code>viewDidLoad</code>. This method is called immediately after the View items are loaded. Find the <code>viewDidLoad</code> method and uncomment it.</p>
<p>Add <code>[self runTimer];</code> to the end of the method. It should now look like this:</p>
<pre class="brush: csharp; title: ; notranslate">

// Implement viewDidLoad to do additional
// setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];

// This calls the runTimer method after loading
// SimpleClockViewController.xib
  [self runTimer];
}

</pre>
<p>When Xcode generated <em><strong>SimpleClockViewController.m</strong></em>, they also included <code>shouldAutorotateToInterfaceOrientation</code>. By default, views display only in portrait orientation, so you need to implement <code>shouldAutorotateToInterfaceOrientation</code> method if you want to support other orientations.</p>
<p>Locate the <code>shouldAutorotateToInterfaceOrientation</code> method and uncomment it. You can support only <em>some</em> orientations such as portrait or landscape with Home button on the right, but we don&#8217;t need to limit ourselves to those scenarios. We want to support <strong>all</strong> orientations so the view rotates correctly no matter how we&#8217;re holding the iPhone. To do this, replace <code>return (interfaceOrientation == UIInterfaceOrientationPortrait);</code> with <code>return YES;</code>.</p>
<pre class="brush: csharp; title: ; notranslate">

// Override to allow orientations other than
// the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return YES;
}

</pre>
<p>Now you can build and run it! Hit Command-Left to see your UI rotate with the iPhone simulator. You can Build and Run the project to make sure everything is compiling and running.</p>
<br />  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gigaom.com&#038;blog=14960843&#038;post=172581&#038;subd=gigaom2&#038;ref=&#038;feed=1" width="1" height="1" /><p><a href="http://pubads.g.doubleclick.net/gampad/jump?iu=/1008864/GigaOM_RSS_300x250&#038;sz=300x250&#038;c=394251"><img src="http://pubads.g.doubleclick.net/gampad/ad?iu=/1008864/GigaOM_RSS_300x250&#038;sz=300x250&#038;c=394251" /></a></p><p><strong>Related research and analysis from GigaOM Pro:</strong><br />Subscriber content. <a href="http://pro.gigaom.com/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=172581+iphone-dev-sessions-how-to-make-an-orientation-aware-clock&utm_content=balanon">Sign up for a free trial</a>.</p><ul><li><a href="http://pro.gigaom.com/2011/07/mobile-q2-smartphone-growth-surges-ipads-rule-continues/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=172581+iphone-dev-sessions-how-to-make-an-orientation-aware-clock&utm_content=balanon">Mobile Q2: Smartphone growth surges; iPad&#8217;s rule continues</a></li><li><a href="http://pro.gigaom.com/2010/09/how-to-market-your-iphone-app-a-developers-guide/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=172581+iphone-dev-sessions-how-to-make-an-orientation-aware-clock&utm_content=balanon">How to Market Your iPhone App: A Developer&#8217;s Guide</a></li><li><a href="http://pro.gigaom.com/2010/04/why-the-ipad-is-right-for-the-enterprise/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=172581+iphone-dev-sessions-how-to-make-an-orientation-aware-clock&utm_content=balanon">Why the iPad is Right for the Enterprise</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://gigaom.com/2009/04/08/iphone-dev-sessions-how-to-make-an-orientation-aware-clock/feed/</wfw:commentRss>
		<slash:comments>57</slash:comments>
	
		<media:content url="http://gigapple.files.wordpress.com/2009/04/iphone_clock.png?w=570" medium="image">
			<media:title type="html">iphone_clock</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/04/image-510.png" medium="image">
			<media:title type="html">image-510</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/04/2009-03-09_1229.png" medium="image">
			<media:title type="html">2009-03-09_1229</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/04/image-5101.png" medium="image">
			<media:title type="html">image-5101</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/04/2009-03-06_15431.png" medium="image">
			<media:title type="html">2009-03-06_15431</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/04/2009-03-06_1545.png" medium="image">
			<media:title type="html">2009-03-06_1545</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/04/image-5102.png" medium="image">
			<media:title type="html">image-5102</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/04/2009-03-06_15561.png" medium="image">
			<media:title type="html">2009-03-06_15561</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/04/2009-03-06_1557.png" medium="image">
			<media:title type="html">2009-03-06_1557</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/04/2009-03-06_1557a.png" medium="image">
			<media:title type="html">2009-03-06_1557a</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2009/04/2009-03-09_1311.png" medium="image">
			<media:title type="html">2009-03-09_1311</media:title>
		</media:content>
	</item>
	</channel>
</rss>
