The Ghost Blogging Platform

Today I'm switching my blog from Wordpress to Ghost. Which means I should apologize for broken links, duplicate items in your RSS reader, etc. You know the drill. I don't have any real reason for moving, other than I'm switching hosting providers and there's no better time to re-evaluate my…

Objective-C Tricks: Scope your Assignments

There's a new Objective-C pattern I've been experimenting with lately, which looks like this: - (void)viewDidLoad; { [super viewDidLoad]; self.shareButton = ({ CGFloat xPos = self.view.width - 80.0f; CGFloat yPos = self.view.bottom - 44.0f; CGRect frame = CGRectMake( xPos, yPos, 70.0f, 44.0f ); UIButton *button = [[UIButton alloc…

Brent Simmons Talks about Sync

If you don't follow Brent Simmons' blog, you're missing an excellent series of posts about Core Data and syncing as he writes the sync engine for Vesper. If you've ever wondered exactly why syncing is a hard problem to solve, even for experienced developers, this is a must read. Check…

Apps I’m Using: 2013 In Review Edition

I’ve always enjoyed reading about other people’s setups, especially when I discover some small utility or tool that I didn’t know existed. After a fresh install of Mavericks a few months ago, I figured this is a good time to write up my own list. Development AppViz…

Blackbar for iOS

Blackbar is one of those rare games that takes a simple idea and nails the execution. It's a word game that's delightfully simple, with an engrossing story behind it. And made in Portland. Get it here.…

NSCache

If you're the type of developer who's always digging into the Cocoa frameworks to find the stuff that makes your life easier, you're probably using NSCache. It's a great class after all. Just store your temporary objects in an NSCache instead of an NSMutableDictionary, and you won't have to worry…