Tom Insam

Core Data is also a supported engine for iCloud syncing. It’s supposed to be no more complex than just using Core Data on its own, so imagine everyone’s surprise when it was just as complex as using Core Data on its own.

It’s not so hard to write a script that puts your strings in compiled code and lets you avoid a whole class of bugs. After all, asset catalogs are just nested folder structures with JSON metadata, and storyboards are a pretty readable dialect of XML.

objc-assetgen takes your asset catalogs and objc-identifierconstants takes your storyboards and outputs a couple of small source code files that turn this code:

UIImage *buttonImage = [UIImage imageNamed:@"GreenButton"];
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"Cell with Switch" forIndexPath:indexPath];

into this code:

UIImage *buttonImage = [AppCatalog greenButtonImage];
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:AppStoryboardCellWithSwitchIdentifier forIndexPath:indexPath];

Square Engineering Blog


Somebody is going to say something like, “Dan, lighten up. It’s just coffee. You don’t need to have so many feelings about it. Go out and change the world instead of fretting about coffee on the internet.” This will not be somebody who drinks much coffee.

We were having the staff play against other people. And a journalist — a game journalist, a Japanese guy — approached me and said, “Hey, check this out. I found this crazy Magic Throw with Guile.” And he showed it to me. When I first saw that, the first thing I thought was, “I have to quit. I can’t do this anymore. I think I’m gonna quit my job.”

People taking bugs more seriously than I do on Street Fighter 2: An Oral History