<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Our Beautiful Faces is Jeremy Hunt Schoenherr and he does iPhone development, for now.</description><title>Our Beautiful Faces</title><generator>Tumblr (3.0; @ourbeautifulfaces)</generator><link>http://blog.ourbeautifulfaces.com/</link><item><title>Day Job - Bye Bye MLB, Hello Hot Potato</title><description>&lt;p&gt;So, it’s been 4 or so years since I started at MLB, and it’s been great. But, it’s over. I’ve been lucky enough to become involved in a new venture with some old co-workers and some new friends.&lt;/p&gt;
&lt;p&gt;It’s called &lt;a href="http://www.hotpotato.com"&gt;Hot Potato&lt;/a&gt; and I’ll be working there full time once friday passes, which is my last day at MLB. I’m hoping I’ll be posting here more often, talking about the process we’re going through there to launch our product. I think it’s going to be pretty awesome, and I hope you will too.&lt;/p&gt;
&lt;p&gt;Ok, enough for now. Hopefully, I’ll have some good stuff to share here soon.&lt;/p&gt;</description><link>http://blog.ourbeautifulfaces.com/post/220269349</link><guid>http://blog.ourbeautifulfaces.com/post/220269349</guid><pubDate>Thu, 22 Oct 2009 16:49:49 -0400</pubDate></item><item><title>Day Job - MLB.com At Bat now with Push/In-App Purchases</title><description>&lt;p&gt;Just a quick update. MLB.com updated the iPhone app to have Push Notifications and In-App Purchasing to stream individual games. Pretty fun stuff to work on, and big thanks to all the different teams at MLB.com that brought this together, especially Warner, Emily, Mohammad and Tracy who all did some great dev on the actual client.. Great stuff.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.tuaw.com/2009/09/01/at-bat-adds-in-app-purchases/"&gt;TUAW weighs in on it&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=309327900&amp;mt=8"&gt;iTunes link&lt;/a&gt;.&lt;/p&gt;</description><link>http://blog.ourbeautifulfaces.com/post/177224610</link><guid>http://blog.ourbeautifulfaces.com/post/177224610</guid><pubDate>Tue, 01 Sep 2009 13:22:48 -0400</pubDate><category>iphone</category><category>dayjob</category><category>MLB</category></item><item><title>Touch Factory - Update</title><description>&lt;p&gt;Things are coming along with Touch Factory. We’re talking 80%. But the last 20% will probably be the hardest. I just wanted to let people know it’s not dead.&lt;/p&gt;
&lt;p&gt;Sorry things are taking a while. I want things to be “Just Right”, and if they are not, well, then I don’t want to release it.&lt;/p&gt;
&lt;p&gt;Fingers crossed for finding the time.&lt;/p&gt;
&lt;p&gt;//jeremy&lt;/p&gt;</description><link>http://blog.ourbeautifulfaces.com/post/125230997</link><guid>http://blog.ourbeautifulfaces.com/post/125230997</guid><pubDate>Wed, 17 Jun 2009 10:52:17 -0400</pubDate></item><item><title>Day Job - MLB.com wins Apple Design Award :)</title><description>&lt;a href="http://developer.apple.com/wwdc/ada/"&gt;Day Job - MLB.com wins Apple Design Award :)&lt;/a&gt;</description><link>http://blog.ourbeautifulfaces.com/post/125229399</link><guid>http://blog.ourbeautifulfaces.com/post/125229399</guid><pubDate>Wed, 17 Jun 2009 10:49:13 -0400</pubDate></item><item><title>Day Job - NY Times about MLB.com Streaming Video</title><description>&lt;a href="http://bits.blogs.nytimes.com/2009/06/17/mlbcom-streams-live-baseball-games-to-the-iphone/"&gt;Day Job - NY Times about MLB.com Streaming Video&lt;/a&gt;</description><link>http://blog.ourbeautifulfaces.com/post/125229069</link><guid>http://blog.ourbeautifulfaces.com/post/125229069</guid><pubDate>Wed, 17 Jun 2009 10:48:28 -0400</pubDate></item><item><title>The Rentals iPhone app -- in the App Store</title><description>&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=311086475&amp;mt=8"&gt;The Rentals iPhone app -- in the App Store&lt;/a&gt;</description><link>http://blog.ourbeautifulfaces.com/post/97025566</link><guid>http://blog.ourbeautifulfaces.com/post/97025566</guid><pubDate>Thu, 16 Apr 2009 22:00:52 -0400</pubDate></item><item><title>Day Job - MLB.com At Bat Reviews Boston</title><description>&lt;p&gt;A few reviews so far…&lt;/p&gt;
&lt;p&gt;“Why can’t all iPhone sports apps be as good as MLB.com At Bat?”&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://www.bostonherald.com/business/technology/reviews/view/2009_04_03_Why_can%E2%80%99t_all_iPhone_sports_apps_be_as_good_as_MLB_com_At_Bat_/"&gt;Boston Herald&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;“MLB.com At Bat 2009 hits a home run!”&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://www.tuaw.com/2009/03/30/first-look-mlb-com-at-bat-2009/"&gt;TUAW&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;“The 2009 edition of MLB.com At Bat is out for the iPhone, and it looks great.”&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://daringfireball.net/linked/2009/03/30/mlb-at-bat"&gt;Daring Fireball&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;and lots of tweets on Twitter&lt;/p&gt;
&lt;p&gt;- &lt;a href="https://twitter.com/timeline/home#search?q=mlb+at+bat"&gt;Twitter search&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.ourbeautifulfaces.com/post/92582266</link><guid>http://blog.ourbeautifulfaces.com/post/92582266</guid><pubDate>Fri, 03 Apr 2009 10:40:36 -0400</pubDate></item><item><title>Day Job: MLB.com At Bat 2009 in App Store</title><description>&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=309327900&amp;mt=8"&gt;Day Job: MLB.com At Bat 2009 in App Store&lt;/a&gt;</description><link>http://blog.ourbeautifulfaces.com/post/90968931</link><guid>http://blog.ourbeautifulfaces.com/post/90968931</guid><pubDate>Sun, 29 Mar 2009 14:36:32 -0400</pubDate></item><item><title>DevTip: Abuse threads</title><description>&lt;p&gt;Sometimes your interfaces can become clunky. You hit a button, or slide a slider and things get all stuttery. No good. People hate that and so should you. Usually this is because when your control (button, slider, tab, etc) calls back to your handler, there is too much work going on.&lt;/p&gt;
&lt;p&gt;Just start a new thread. This sounds simple, but sometimes people over look it. I ran into this when I was adding the volume control on the new audio stream player for MLB.com At Bat. I thought, yeah, no problem, I can make a call to the audio session and store the value in my user defaults in real time. Easy! But no, it made the volume control sticky, so I had to spawn threads. See below.&lt;/p&gt;
&lt;p&gt;In Interface Builder, connect your control to your handler for the given event the IBAction below, and then in that method, start a thread and don’t wait around for the result.&lt;/p&gt;
&lt;pre style="font-face:courier, sans-serif;background-color:#f8f8f8;padding:20px;font-size:10px;"&gt;- (void) threadedTargetMethod:(id)object {
   //Do you time consuming stuff
}


- (IBAction) targetMethod:(id)sender {
   [self performSelectorOnMainThread:@selector(threadedTargetMethod:) 
                          withObject:nil 
                       waitUntilDone:NO];
}

&lt;/pre&gt;</description><link>http://blog.ourbeautifulfaces.com/post/90074215</link><guid>http://blog.ourbeautifulfaces.com/post/90074215</guid><pubDate>Thu, 26 Mar 2009 13:30:00 -0400</pubDate><category>devtip</category><category>iphone</category><category>iphone sdk</category><category>iphone development</category></item><item><title>Day Job - TUAW loves MLB.com At Bat before it's out.</title><description>&lt;a href="http://www.tuaw.com/2009/03/05/mlb-at-bat-ready-for-2009/"&gt;Day Job - TUAW loves MLB.com At Bat before it's out.&lt;/a&gt;</description><link>http://blog.ourbeautifulfaces.com/post/83800097</link><guid>http://blog.ourbeautifulfaces.com/post/83800097</guid><pubDate>Thu, 05 Mar 2009 10:44:59 -0500</pubDate><category>dayjob</category><category>iphone</category></item><item><title>Touch Factory - New OBF project due this summer........</title><description>&lt;a href="http://www.touchfactory.com/?ref=obf"&gt;Touch Factory - New OBF project due this summer........&lt;/a&gt;</description><link>http://blog.ourbeautifulfaces.com/post/82091334</link><guid>http://blog.ourbeautifulfaces.com/post/82091334</guid><pubDate>Fri, 27 Feb 2009 15:31:41 -0500</pubDate></item><item><title>Analysis: CRM Daily Talks Artists Apps</title><description>&lt;a href="http://www.crm-daily.com/story.xhtml?story_id=64914&amp;full_skip=1"&gt;Analysis: CRM Daily Talks Artists Apps&lt;/a&gt;</description><link>http://blog.ourbeautifulfaces.com/post/81869200</link><guid>http://blog.ourbeautifulfaces.com/post/81869200</guid><pubDate>Thu, 26 Feb 2009 21:13:56 -0500</pubDate><category>DCfC</category><category>iPhone</category></item><item><title>So, update from the day job at MLB.com. It’s the first day...</title><description>&lt;img src="http://25.media.tumblr.com/McGN1GU5fkdwadi5LMp4AvBro1_400.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;So, update from the day job at &lt;a href="http://www.mlb.com/mobile"&gt;MLB.com&lt;/a&gt;. It’s the first day of Spring Training. &lt;b&gt;Go grab the &lt;/b&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=281969989&amp;mt=8"&gt;&lt;b&gt;At Bat Lite&lt;/b&gt;&lt;/a&gt;&lt;b&gt; iPhone app.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Everyone who had At Bat last year should have this as a free update. The Lite version will give you a pretty Scoreboard + Gameday for spring training games and WBC games that have it. In a few weeks, we’ll have At Bat 2009 out there. &lt;b&gt;Gameday Audio + Gameday + In-Game video highlights&lt;/b&gt; to make you happy for the whole season.&lt;/p&gt;</description><link>http://blog.ourbeautifulfaces.com/post/81456544</link><guid>http://blog.ourbeautifulfaces.com/post/81456544</guid><pubDate>Wed, 25 Feb 2009 13:38:00 -0500</pubDate><category>dayjob</category><category>mlb</category><category>iPhone</category><category>baseball</category></item><item><title>DevTip: Always check your distribution builds</title><description>&lt;p&gt;Old post, but very useful, &lt;a href="http://furbo.org/2008/11/12/the-final-test/"&gt;Craig Hockenberry walks you through testing your distribution builds&lt;/a&gt;.  Do this to make sure you know exactly what you are submitting to iTunes Connect.  Sometimes build settings vary between targets/build configs, and the only way to know what you have is to run what you submit.&lt;/p&gt;</description><link>http://blog.ourbeautifulfaces.com/post/79976769</link><guid>http://blog.ourbeautifulfaces.com/post/79976769</guid><pubDate>Fri, 20 Feb 2009 10:33:34 -0500</pubDate><category>devtip</category><category>iphone sdk</category><category>iphone</category><category>iphone development</category></item><item><title>Shut Up Review - Just Another iPhone Blog</title><description>&lt;a href="http://justanotheriphoneblog.com/wordpress/2009/02/10/novelty-iphone-apps-shut-up/"&gt;Shut Up Review - Just Another iPhone Blog&lt;/a&gt;</description><link>http://blog.ourbeautifulfaces.com/post/77238122</link><guid>http://blog.ourbeautifulfaces.com/post/77238122</guid><pubDate>Tue, 10 Feb 2009 14:01:32 -0500</pubDate></item><item><title>Death Cab for Cutie iPhone App featured on Apple’s App...</title><description>&lt;img src="http://29.media.tumblr.com/McGN1GU5fjsg6wj9kWNLBIHTo1_400.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Death Cab for Cutie iPhone App featured on Apple’s App Store.&lt;/p&gt;
&lt;p&gt;Designed and Developed by &lt;a href="http://www.ourbeautifulfaces.com"&gt;Our Beautiful Faces&lt;/a&gt;.&lt;/p&gt;</description><link>http://blog.ourbeautifulfaces.com/post/77230234</link><guid>http://blog.ourbeautifulfaces.com/post/77230234</guid><pubDate>Tue, 10 Feb 2009 13:25:13 -0500</pubDate></item><item><title>Gameday Audio in MLB.com's At Bat</title><description>&lt;p&gt;So, more news from the day job. Our CEO, announced in NY Times that At Bat will include Gameday Audio and be less than $10. Take that, baseball fans.. :)&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Bob Bowman, chief executive of MLB.com, said the company was also adding to its offerings for mobile phones, including bringing radio broadcasts to its applications for Apple’s iPhone and Research in Motion’s BlackBerry. That will let iPhone and BlackBerry users who buy the At Bat application, which MLB.com says will cost less than $10, to listen to any game, anywhere they get cellphone coverage.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.nytimes.com/2009/02/09/technology/internet/09mlb.html?_r=1&amp;emc=eta1"&gt;from NYTimes.com&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.ourbeautifulfaces.com/post/76903122</link><guid>http://blog.ourbeautifulfaces.com/post/76903122</guid><pubDate>Mon, 09 Feb 2009 10:39:20 -0500</pubDate></item><item><title>DevTip: Don't always recycle UITableViewCells</title><description>&lt;p&gt;So, &lt;a href="http://www.ourbeautifulfaces.com"&gt;Our Beautiful Faces&lt;/a&gt; is one thing, and my day job is another. During the day I work for &lt;a href="http://www.mlb.com/mobile"&gt;MLB.com&lt;/a&gt;, mostly working on their iPhone app &lt;a href="http://mlb.com/mobile/iphone/"&gt;At Bat&lt;/a&gt; and other mobile stuff. Anyway, I am in the middle of refactoring At Bat for this season, and have been trying to optimize certain things.&lt;/p&gt;
&lt;p&gt;One thing that always needs to be optimized is table scrolling. Choppy is bad. Real bad. Drives people crazy.  And it inevitably happens. You have add a lot of subviews because there is a lot of data to display in each UITableViewCell, and eventually, you get to a point where rendering these cells take a little too long.&lt;/p&gt;
&lt;p&gt;There’s lots of things you can do for this. You can stop using subviews and just draw everything to the cell’s contentView when drawRect is called. Sounds like a lot of work.  You can make everything opaque. This does render faster, but I’ve never noticed it making much of a difference visually. You can only update subViews if they’ve actually changed. If you have a UIImageView as a subview, don’t blindly call setImage on it over and over, unless that image is actually different.&lt;/p&gt;
&lt;p&gt;But there’s something else you can do which is a little less obvious. Cell reuse is awesome and for the most part, should always be used. Especially for UITableView’s of arbitrary length. However, if you always have a reasonable number of cells, let’s say 5-50, and you know you will never really need more than that, then why not have all of them in memory? It’s not gonna break the bank to have them all ready so why keep making it render all the new information each time?&lt;/p&gt;
&lt;p&gt;So, what do you need? Not much. Basically, instead of trying to dequeue cells from the UITableView, keep track of them yourself in a dictionary. See in the following code snippet.&lt;/p&gt;
&lt;pre style="font-face:courier, sans-serif;background-color:#f8f8f8;padding:20px;font-size:10px;"&gt;NSMutableDictionary *myDictionary;

...

- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{

    NSString *cellId = [NSString:stringWithFormat:@"id_%d_%d];

    UITableViewCell *cell;

    if ([myDictionary objectForKey:cellId]) {

        cell = (UITableViewCell*)[myDictionary objectForKey:cellId];
        //update cell if necessary

    } else {
        cell = [self createYourCell:indexPath];
        [myDictionary setObject:cell forKey:cellId];
    }
    return cell;

}

&lt;/pre&gt;
&lt;p&gt;Obviously, if you have too many cells, this won’t work. Also, make sure your prepareForReuse method on your cell isn’t wiping things out. The only reason this helps out at all, is because it doesn’t need to redraw all the subviews. So, if you wipe them all out by resetting them in your prepareForReuse, then you are defeating the purpose.&lt;/p&gt;
&lt;p&gt;One thing, the first time you scroll, it may still be a little choppy. This is because we are still creating the cells as we scroll. Yuck. So how do we get around this? Easy, after the UITableView loads, or maybe after you have loaded your data from the network and parsed it, iterate through all the cells manually. Create an NSIndexPath for every cell you will need and then call your method that is creating the actual cell. In the example above that method is  [self createYourCell:indexPath]. Then store the result in the NSMutableDictionary. Done.&lt;/p&gt;
&lt;p&gt;This is a simple way to make scrolling fly when developing on the iPhone SDK if you have a reasonable number of cells that don’t change too often.&lt;/p&gt;
&lt;p&gt;Hopefully I’ll have more developer tips as time go on, but I found this particular thing to really help me out, and hopefully it will help you as well.&lt;/p&gt;
&lt;p&gt;//jeremy&lt;/p&gt;</description><link>http://blog.ourbeautifulfaces.com/post/76428376</link><guid>http://blog.ourbeautifulfaces.com/post/76428376</guid><pubDate>Sat, 07 Feb 2009 12:36:00 -0500</pubDate><category>iphone developement</category><category>iphone</category><category>devtip</category><category>iphone sdk</category></item><item><title>soundsvicio.us weighs in on Artist Apps</title><description>&lt;a href="http://soundsvicio.us/archives/160"&gt;soundsvicio.us weighs in on Artist Apps&lt;/a&gt;</description><link>http://blog.ourbeautifulfaces.com/post/75920216</link><guid>http://blog.ourbeautifulfaces.com/post/75920216</guid><pubDate>Thu, 05 Feb 2009 13:01:11 -0500</pubDate></item><item><title>Shut Up</title><description>&lt;p&gt;So my stupid novelty app hits the App Store today.. 99 cents.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://bit.ly/shutupapp"&gt;iTunes Link&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://bit.ly/shutupvid"&gt;YouTube demo video&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.ourbeautifulfaces.com/post/75887814</link><guid>http://blog.ourbeautifulfaces.com/post/75887814</guid><pubDate>Thu, 05 Feb 2009 10:39:52 -0500</pubDate></item></channel></rss>
