Recently about iPhone
The Daily, a newspaper published exclusively for the iPad, has been a hot topic since it's launch last week. The experience, however, is less than spectacular. The app may eventually live up to the hype, but there are too many performance problems for me to even open it anymore.
The most excruciating is the carousel of articles. It looks like a twist on CoverFlow, but the scrolling is an agonizing experience. I'm not the only one to wonder why performance is so terrible. I wasn't the first to try and improve it either. See for yourself how terrible it is...The Daily Carousel Performance
The Daily Carousel Reimplemented
@property(nonatomic, retain) IBOutlet CustomUIActionSheetViewController *customUIActionSheetViewController;
- (void)showCustomView {
[self.navigationController.view
addSubview:self.customUIActionSheetViewController.view];
[self.customUIActionSheetViewController viewWillAppear:NO];
}
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemAction
target:self
action:@selector(showCustomView)] autorelease];
}

@property(nonatomic, retain) IBOutlet UIView *actionSheetView;
- (IBAction) slideOut;
- (void)viewWillAppear:(BOOL)animated {
[self slideIn];
}
- (void)slideIn {
//set initial location at bottom of view
CGRect frame = self.actionSheetView.frame;
frame.origin = CGPointMake(0.0, self.view.bounds.size.height);
self.actionSheetView.frame = frame;
[self.view addSubview:self.actionSheetView];
//animate to new location, determined by height of the view in the NIB
[UIView beginAnimations:@"presentWithSuperview" context:nil];
frame.origin = CGPointMake(0.0,
self.view.bounds.size.height - self.actionSheetView.bounds.size.height);
self.actionSheetView.frame = frame;
[UIView commitAnimations];
}
- (void) slideOut {
[UIView beginAnimations:@"removeFromSuperviewWithAnimation" context:nil];
// Set delegate and selector to remove from superview when animation completes
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
// Move this view to bottom of superview
CGRect frame = self.actionSheetView.frame;
frame.origin = CGPointMake(0.0, self.view.bounds.size.height);
self.actionSheetView.frame = frame;
[UIView commitAnimations];
}
- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
if ([animationID isEqualToString:@"removeFromSuperviewWithAnimation"]) {
[self.view removeFromSuperview];
}
}
At last year's summit, we released Mini Confluence Personal Edition, an iPhone app that individual users can purchase from the app store and run based on Confluence's XML-RPC.
The new version is a custom plugin installed on the server. For people using an iPhone, they still download an app from the app store, but with the Enterprise Edition, it's free. For people with other mobile devices, they get to Mini Confluence through a web client.
This year's version is two times as fast as the original (!), and has some cool new features like filtering on the dashboard based on your favorites, status updates, landscape mode, and multiple user accounts. Find out more about Mini Confluence at www.miniconfluence.com.
We've been talking to lots of the conference attendees the past couple of days. Some of them have already been using the personal edition, and have given us feedback on that. Other people have ideas for MCEE, like an iPad version, support for Confluence instances protected by VPN, and even "make Mini Jira!"
I'm surprised by how many people here are on Android. It's still mostly iPhones, but a lot less Blackberry users than last year.
A lot of people have been signing up for the beta program -- we're sending out copies of the plugin for free to anyone who's interested and letting them try it out for three months. I'm anxious to hear the feedback so we can improve it before people start paying for it.
If you try it out, let us know what you think!
And now... I think it's time for some Ghirardelli Chocolate :-)
I just bought Keynote Remote for my iPhone. It is very simple, has the option to display presenter notes, and is absurdly simple to link to Keynote and start controlling presentations. What was a little more involved was that I wanted to use it regardless of whether there is a wireless network around or not. Since Keynote Remote requires a wi-fi connection here's what I'm doing to get around this little annoyance. Basically all you need to do is set up an ad-hoc wireless network with your Mac, and have your iPhone connect to that network. Voila! So, when there's no wireless network available, I just use my handy-dandy Verizon Wireless USB760 Modem to connect to the Internet, and I can still control presentations with Keynote Remote.
So, after having actually written a blog entry covering each day of the iPhone bootcamp at Big Nerd Ranch, I thought a more broad summary would be in order. (That, and I'm sitting in the airport waiting for my flight this evening.) Anyway, the iPhone bootcamp was my second BNR class (I took the Cocoa bootcamp last April and wrote a summary blog about it here.)
As with the Cocoa bootcamp, I had a great time and learned a ton about iPhone development. I met a lot of really cool and interesting people with a wide range of backgrounds and experiences. This seems to be a trend at BNR, that the people who attend are people who have a variety of knowledge and experience, and bring totally different perspectives to the class. The students who attend are also highly motivated people in general, which, when combined with excellent instruction and great lab coding exercises all week, makes for a great learning environment.
Another interesting thing that happens at BNR is that in this environment, you somehow don't burn out and can basically write code all day every day and many people keep at it into the night hours. I think this is due to the way the BNR classes combine short, targeted lecture with lots and lots and lots of hands-on coding. In addition, taking an afternoon hike through untouched nature really helps to refresh you and keep energy levels up. (Maybe if more companies, and the USA for that matter, encouraged this kind of thing people would actually be more productive rather than less.) And because of the diversity of the students, every meal combines good food with interesting conversation.
So, thanks to our instructors Joe and Brian for a great week of learning and to all the students for making it a great experience. Can't wait to take the OpenGL bootcamp sometime in the future.

