<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CodeFab LLC&#187; Training</title>
	<atom:link href="http://www.codefab.com/category/geek-out/training/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.codefab.com</link>
	<description>News about fevered minds at CodeFab</description>
	<lastBuildDate>Tue, 20 Jul 2010 05:22:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>iPadDevCamp NYC Contest Results</title>
		<link>http://www.codefab.com/2010/06/21/results-ipaddevcamp-nyc/</link>
		<comments>http://www.codefab.com/2010/06/21/results-ipaddevcamp-nyc/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 15:50:48 +0000</pubDate>
		<dc:creator>arden</dc:creator>
				<category><![CDATA[CodeFab News]]></category>
		<category><![CDATA[Geek Out]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone Training]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[iPad]]></category>

		<guid isPermaLink="false">http://www.codefab.com/?p=404</guid>
		<description><![CDATA[Thank you to all who attended and developed, original apps at this New York&#8217;s first iPad DevCamp event!  It was a great success and we are definitely looking forward to many more in the nearby future! The heart of a DevCamp is the Hack-a-thon and we are happy to (belatedly) post the results of the [...]]]></description>
			<content:encoded><![CDATA[<p>Thank you to all who attended and developed, original apps at this New York&#8217;s first iPad DevCamp event!  It was a great success and we are definitely looking forward to many more in the nearby future!</p>
<p>The heart of a DevCamp is the Hack-a-thon and we are happy to (belatedly) post the results of the DevCamp hacking contest.  Below is a list of teams that created some of the most inventive, fun, and useful applications at DevCamp and we&#8217;ve additional descriptions, links, and some contact information.  If you have additional information you want us to post about your entry, email us at <a href="mailto:info@codefab.com">info@codefab.com</a>.</p>
<p><strong>Campfire Application</strong> &#8211; <em>Most original!</em></p>
<ul>
<li><strong>Created by</strong>: Vincent Youmans, James Sabia, Ron Anderson, Harry Bowen, Chris Welsh, Jean Leong</li>
<li><strong>Description</strong>: Great campfire effect, in which sound from iPad campfire cooks iPhone marshmallows. Proximity detection or shake to reset marshmallow</li>
<li><strong>Watch the App in use: <a href="http://www.youtube.com/watch?v=fgvwaaYBFeQ">http://www.youtube.com/watch?v=fgvwaaYBFeQ</a></strong></li>
<li>For more information you can contact: : <a href="mailto:james.sabia@team.aol.com">james.sabia@team.aol.com</a></li>
</ul>
<p><strong>Bread Application</strong> &#8211; <em>Most likely to be used by Steve Jobs in an iPad presentation!</em></p>
<ul>
<li><strong>Created by</strong>: Sean, Sandira, Ariel, Steve Liu, Staney Sulamet</li>
<li><strong>Description</strong>: Runs as an application in Safari that rotates and manipulates images on the canvas to make pages more magazine like without Adobe Suite.</li>
<li>For more information you can contact: <a href="mailto:sulamet@yahoo.com">sulamet@yahoo.com</a></li>
</ul>
<p><strong>I Peel Onion Application</strong> &#8211; <em>Coolest app!</em></p>
<ul>
<li><strong>Created by: </strong>Jesse Pickard, Lucy Zhang</li>
<li><strong>Description: </strong>Cut through the noise of lots of tweets, and shows tweets and dial and graph.  Add metadata to tweet</li>
<li>Real time voting on events for people!</li>
</ul>
<p><strong>NSTeam Application</strong> &#8211; <em>Most likely to be used by developers!</em></p>
<ul>
<li><strong>Created by: </strong>Andy Rifkin, Jeff Barg, Devin Duty
</li>
<li><strong>Description: </strong>Syntax editor for iPad, Split view with list of files and edit space with syntax highlights, Uses core text
</li>
<li>To see photos and read more about the app go to: <a href="http://www.4-iPad.com">http://www.4-iPad.com</a>
</li>
</ul>
<p><strong>Stewie</strong>- <em>Most likely to be used by Jason Calicanis</em></p>
<ul>
<li><strong>Created by: </strong>Daria, Gilad, Mike Feola, Martin Volerich, Steve
</li>
<li><strong>Description: </strong>Social gaming, ipad server, iphones clients, Bluetooth, game kit, universal app, players connect.</li>
</ul>
<p><strong>Wee Atlas Application</strong> &#8211; <em>Most useful!</em></p>
<ul>
<li><strong>Created by: </strong>Steve, Joshua Vickery, Matt Ferry, Seanita, Nir Pengas
</li>
<li><strong>Description: </strong>Zoom in on country and interact with pictures, slide show under each category
</li>
<li>To learn more, visit: <a href="http://jsv.mine.nu/gallery/v/misc/iPadDevCampNYC/">http://jsv.mine.nu/gallery/v/misc/iPadDevCampNYC/</a></li>
</ul>
<p><strong>Dragonflies Application</strong> &#8211; <em>Most educational!</em></p>
<ul>
<li><strong>Created by: </strong>Tom Fruenhoffer, Eva Potter, Praveen Aravamudham, Steve Bull, Charissa Smith, Ann McDermott, Hiroumi Mitani</li>
<li><strong>Description: </strong>Backyard bugs! Catch bugs or squish, look in jar, get info about bugs and uses cocos2d</li>
</ul>
<p><strong>Twitter All Stars: Heltweetic.3 Application</strong> &#8211; <em>Best social app!</em></p>
<ul>
<li><strong>Created by: </strong>Thomas Alvarez, Lucius Kwok,  Jeff Soto</li>
<li><strong>Description: </strong>Shows twitter avatars in a grid, allows user to randomly choose one.</li>
<li>For more information you can contact: <a href="mailto:jeff@indiancode.net">jeff@indiancode.net</a> or <a href="mailto:dmthomas@mac.com">dmthomas@mac.com</a></li>
</ul>
<p><strong>VectorZombie Application</strong> &#8211; <em>Best game!</em></p>
<ul>
<li><strong>Created by: </strong>Jonathan Miller and Karen Jones
</li>
<li><strong>Description</strong>: Snowboarding through a field of zombies!
</li>
<li><strong>To see more go to: <a href="http://cryptogram.com/zombieboard/">http://cryptogram.com/zombieboard/</a></strong>
</li>
<li>if you have any questions you can contact: <a href="mailto:jm@jonathanmillertechnology.com">jm@jonathanmillertechnology.com</a> : @notjonathan on Twitter and <a href="mailto:Karen@geekgirl.com">Karen@geekgirl.com</a></li>
</ul>
<p><strong>Ghost in the Machine</strong> &#8211; <em>Best iPad app!</em></p>
<ul>
<li><strong>Created by: </strong>Dominic Tancredi, Danny Sand, Peter Levine, Carolyn Gargano, Catrina Lohan, Scott Benglo, Yan Wong, John Fitzpatrick
</li>
<li><strong>Description: </strong>Ghost in the machine ouija board, and has sound, animation takes finger input.
</li>
<li><strong>To see the App in use go here: <a href="http://www.youtube.com/watch?v=wCTtI2TMdqA">http://www.youtube.com/watch?v=wCTtI2TMdqA</a></strong>
</li>
<li>if you more questions you can contact: <a href="mailto:meta.phx@gmail.com">meta.phx@gmail.com</a></li>
</ul>
<p><strong>BoomBox Application</strong> -<em> Most commercial!</em></p>
<ul>
<li><strong>Created by: </strong>Steven Levy, Erin Disselhorst, Rob Kelley, Matt
</li>
<li><strong>Description: </strong>Plays music and looks good</li>
</ul>
<p><strong>CookIt</strong> &#8211; <em>Best Under Pressure (cooker)</em></p>
<ul>
<li><strong>Created by: </strong>Tim Kaminski, Dana
</li>
<li><strong>Description:</strong> Sound activated ipad cookbook, you can move to the next step in the recipe with a sound</li>
</ul>
<p>If we got your name wrong, or lost a last name or contact email, or even if you just want to update the description, ping us at <a href="mailto:info@codefab.com">info@codefab.com</a> &#8211; we want to get it right!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codefab.com/2010/06/21/results-ipaddevcamp-nyc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alex Cone Speaks at Cornell Club w/ Dr Kevin Fountain</title>
		<link>http://www.codefab.com/2010/06/01/alex-cone-speaks-at-cornell-club-w-dr-kevin-fountain/</link>
		<comments>http://www.codefab.com/2010/06/01/alex-cone-speaks-at-cornell-club-w-dr-kevin-fountain/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 20:18:16 +0000</pubDate>
		<dc:creator>abc</dc:creator>
				<category><![CDATA[CodeFab News]]></category>
		<category><![CDATA[Geek Out]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone Training]]></category>
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.codefab.com/2010/06/01/alex-cone-speaks-at-cornell-club-w-dr-kevin-fountain/</guid>
		<description><![CDATA[Title: Alex Cone Speaks at Cornell Club w/ Dr Kevin FountainLocation: Cornell Club, 6 East 44th Street New York, NY 10017Link out: Click hereDescription: Do you have a great idea for an app? What does it take to develop an app? This interactive session features two app developers, Alex Cone and Dr. Kevin Fountain.Start Time: [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Title: </strong>Alex Cone Speaks at Cornell Club w/ Dr Kevin Fountain<br /><strong>Location: </strong>Cornell Club, 6 East 44th Street New York, NY 10017<br /><strong>Link out: </strong><a href="http://cornellclubnyc.com/escal/popups/escalEV.php4?ev=14761&#038;readFile=1&#038;readSQL=0" target="_blanck">Click here</a><br /><strong>Description: </strong>Do you have a great idea for an app? What does it take to develop an app? This interactive session features two app developers, Alex Cone and Dr. Kevin Fountain.<br /><strong>Start Time: </strong>18:00<br /><strong>Date: </strong>2010-06-01<br /><strong>End Time: </strong>20:00</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codefab.com/2010/06/01/alex-cone-speaks-at-cornell-club-w-dr-kevin-fountain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodeFab iPhone/iPad After Hours Party</title>
		<link>http://www.codefab.com/2010/06/01/codefab-iphoneipad-after-hours-party/</link>
		<comments>http://www.codefab.com/2010/06/01/codefab-iphoneipad-after-hours-party/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 09:23:53 +0000</pubDate>
		<dc:creator>abc</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[CodeFab News]]></category>
		<category><![CDATA[Friends]]></category>
		<category><![CDATA[Geek Out]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone Training]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[Parties]]></category>

		<guid isPermaLink="false">http://www.codefab.com/2010/06/01/codefab-iphoneipad-after-hours-party/</guid>
		<description><![CDATA[Title: CodeFab iPhone/iPad After Hours PartyLocation: CodeFab iPhone Mansion SFLink out: Click hereDescription: Late night party for iPhone/iPad/Cocoa coders and all our crazy friends at the CodeFab iPhone Mansion in SF (1045 Divisidero St, SF CA) starting at 9:30. Big victorian mansion. Great music. Hot tub (clothing optional). Beer and tequila and late night munchies. [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Title: </strong>CodeFab iPhone/iPad After Hours Party<br /><strong>Location: </strong>CodeFab iPhone Mansion SF<br /><strong>Link out: </strong><a href="http://whitepalacesf.com/" target="_blanck">Click here</a><br /><strong>Description: </strong>Late night party for iPhone/iPad/Cocoa coders and all our crazy friends at the CodeFab iPhone Mansion in SF (1045 Divisidero St, SF CA) starting at 9:30.  Big victorian mansion.  Great music.  Hot tub (clothing optional).  Beer and tequila and late night munchies.  Bring your latest masterpiece to show off to all!!  Let&#8217;s out-do last year&#8217;s crazy bash!<br /><strong>Start Time: </strong>21:00<br /><strong>Date: </strong>2010-06-08</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codefab.com/2010/06/01/codefab-iphoneipad-after-hours-party/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>NSNotifications &#8211; Your friend except when they aren&#8217;t&#8230;</title>
		<link>http://www.codefab.com/2010/05/31/nsnotifications-your-friend-except-when-they-arent/</link>
		<comments>http://www.codefab.com/2010/05/31/nsnotifications-your-friend-except-when-they-arent/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 04:02:19 +0000</pubDate>
		<dc:creator>abc</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Geek Out]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone Training]]></category>
		<category><![CDATA[Class]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Friends]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[Parties]]></category>

		<guid isPermaLink="false">http://www.codefab.com/?p=392</guid>
		<description><![CDATA[So here is the question just asked of me: Is it better to have a single notification (name) sent out and have all interested parties check the user info to see if the notification contains information for them, or to have the differentiator encoded in the notification name, thus having potentially hundreds or thousands of [...]]]></description>
			<content:encoded><![CDATA[<p>So here is the question just asked of me:  <em>Is it better to have a single notification (name) sent out and have all interested parties check the user info to see if the notification contains information for them, or to have the differentiator encoded in the notification name, thus having potentially hundreds or thousands of &#8220;types&#8221; of notifications sent out, but have only one listener get the message?</em></p>
<p>Well, in the simplest cases, when there are only a few messages, and only a few listeners, and few objects that wake up to look at the userInfo to see if it is interesting, one might opt for the simpler programming / inheritance model and have very little code, reused via inheritance that does all the work.  E.G. all objects inheriting from BaseObject listen for message &#8220;foo&#8221; and then inherit the code for:<br />
<code><br />
-(void)fooNotification:(NSNotification *)notif {<br />
&nbsp;&nbsp;if ([self.id isEqual:[notif.userInfo objectForKey:@"id"]]) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;[self handleFoo:userInfo]; // do something<br />
&nbsp;&nbsp;}<br />
}<br />
</code><br />
The BaseObject class has the id filter notification handler (above), a no-op handleFoo:, which sub-classes can override, and the sender always sends out the same &#8220;foo&#8221; notification, with the differentiator tucked away in the userInfo for the recipient.</p>
<p>Sounds good, no?  Lots of inheritance, code reuse, simplicity.  The &#8220;leaf-node&#8221; classes just implement handleFoo: if they need to.  All works great.  But where does this break down?</p>
<p>Say you had a thousand BaseObject subclass instances.  When they are created, they ask a Loader for some resource and listen for loaderDone Notifications.  Loader finishes each request, sends a notification, moves on to the next.  (You are using an NSOperationsQueue to manage your Loader pool, right?)  Instances get pinged after operations complete and one says &#8220;Hey!  That&#8217;s me!&#8221; and does something significant, like update a bit of UI, while the others pass.  The rub?  One thousand objects wake up and run a few lines of code for each one that does anything.  Code is simple, easy to test.  Low message dispatch cost.  Probably insignificant overhead on your spiffy new PowerMac.  Zero problem in testing with a few objects.  But on the iPhone / iPad this is 9,999 objects too many involved in handling the event.</p>
<p>What do you do?  </p>
<p>First is just good practice:  if you don&#8217;t care, don&#8217;t listen.  Don&#8217;t register to observe a notification until you are sure you care, then if you no longer need to listen, unregister.  For our pseudo-code, only listen between &#8220;I need a foo&#8221; and &#8220;I got a foo&#8221; &#8211; outside that take yourself out of the loop.  That can only help.</p>
<p>The real trick, when you see this pattern, is to find a way from our default case above, where response time depends on number of potentially interested objects, to a response time dependent on just number of actual interested objects.  In the base case, where we have N potentially interested objects and just 1 interested object, we are going from a fluctuating case, based on set size N, to a stable linear case.  This in turn leads to more predictable and scale-free (or close to it) response times.</p>
<p>(In our initial example above, response time is equal to &#8220;([number of objects] * ([filter time per object] + [message time per object])) + ([number of interested objects] * [handle time per object])&#8221;.  What we want is to only message the interested objects, so we can be &#8220;[number of interested objects] * ([message time per object] + [handle time per object])&#8221;.)</p>
<p>So what is the simple trick to do this?  Have the listening objects listen for a NSNotification with a name like:</p>
<p><code>&nbsp;&nbsp;NSString *notifName = [NSString stringWithFormat:@"foo-%@-notification", self.id];</code></p>
<p>and have the Loaders post matching notifications.  The observer lookup table will be a bit larger, with more messages registered, but the observer count will be the same.  The lookup will mostly be a hashed lookup based on the memory location of the notification name&#8217;s unique string, and on ObjC / Foundation, that kind of lookup is FAST for the set size we are looking at.  And even for large sets, we are so much better off paying the price to look up a single observer, than to have to run 4 lines of code in a very large number of objects. </p>
<p>Things that can make the bad case worse?  </p>
<ol>
<li>Side-effect cost: You never know what the cost is of asking an object you haven&#8217;t written yet a simple question.  (&#8220;My id?  Sure, that&#8217;s stored in my NIB file.  Which needs to be (re)loaded sometimes.  Which instantiates other objects.  Which do stuff.&#8221;)</li>
<li>Threads: An even worse cost is the per-object code that does something that launches or spans thread boundaries.  (&#8220;My id?  Let me fetch that in a new thread.  Or in the main thread, which could block stuff.&#8221;)  Opportunity for thread overload or lock-ups with contention for resources.</li>
</ol>
<p>Linear response is your friend.  Do a little extra work.  Easier to debug.  Easier to optimize.  Happier users.</p>
<p>Remember &#8211; your iPhone is like a 100mhz Pentium.  CPU cycles are your most precious resource.  And less executing code in less objects usually means less less memory, which is our second most precious resource.  Less work, less memory, app runs faster, users happier.  Everyone wins.</p>
<p><em><strong>NOTE:</strong> For everyone going to WWDC this year, CodeFab will be hosting several iPad/iPhone related events at the <a href="http://whitepalacesf.com/">SF iPhone Mansion</a> again.  On the Saturday and Sunday before WWDC we will be hosting a Mini iPad/iPhone DevCamp (<a href="http://www.eventbrite.com/event/668296894">Register Here</a>) in conjunction with our LA iPhone DevCamp/Developer Meetup partners.  We will also be hosting a fabulous iPhone Party on (tentative) Tuesday Night.  (Hope you remember last year&#8217;s blast!)<br />
</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.codefab.com/2010/05/31/nsnotifications-your-friend-except-when-they-arent/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Registration Now Open For NYC, LA and Chicago iPad Classes</title>
		<link>http://www.codefab.com/2010/03/09/registration-now-open-for-nyc-la-and-chicago-ipad-classes/</link>
		<comments>http://www.codefab.com/2010/03/09/registration-now-open-for-nyc-la-and-chicago-ipad-classes/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 06:51:44 +0000</pubDate>
		<dc:creator>abc</dc:creator>
				<category><![CDATA[CodeFab News]]></category>
		<category><![CDATA[Geek Out]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone Training]]></category>
		<category><![CDATA[Class]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[iPad]]></category>

		<guid isPermaLink="false">http://www.codefab.com/?p=334</guid>
		<description><![CDATA[Register now and get Early Bird Discount pricing! April 24-25 &#8211; LA iPhone/iPad Developer Special Ops Advanced Class Register here: http://laipadtraining.eventbrite.com/ May 8-9 &#8211; NYC iPhone/iPad Developer Special Ops Advanced Class Register here: http://nycipadtraining.eventbrite.com/ May 22-23 &#8211; Chicago iPhone/iPad Developer Special Ops Advanced Class Register here: http://chicagoipadtraining.eventbrite.com/]]></description>
			<content:encoded><![CDATA[<p>Register now and get Early Bird Discount pricing!</p>
<p><strong>April 24-25 &#8211; LA iPhone/iPad Developer Special Ops Advanced Class</strong><br />
                      Register here: <a href="http://laipadtraining.eventbrite.com/">http://laipadtraining.eventbrite.com/</a></p>
<p><strong>May 8-9 &#8211; NYC iPhone/iPad Developer Special Ops Advanced Class</strong><br />
                      Register here: <a href="http://nycipadtraining.eventbrite.com/">http://nycipadtraining.eventbrite.com/</a></p>
<p><strong>May 22-23 &#8211; Chicago iPhone/iPad Developer Special Ops Advanced Class</strong><br />
                      Register here: <a href="http://chicagoipadtraining.eventbrite.com/">http://chicagoipadtraining.eventbrite.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.codefab.com/2010/03/09/registration-now-open-for-nyc-la-and-chicago-ipad-classes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
