• Book of Bad Video Game Translations ↗️

    This be book bad translation, video games!: A book collecting classic examples of bad translations in video games. Lots of pictures, and examples from a long period of time. A fun read, and given it is just $15, well worth it for anyone who wants a few more examples beyond “All your base”.

  • A Blog Reboot

    Welcome to the reboot of scottr.org. This is the third version of my site. The original is still available. The second was at iosdevelopmentjournal.com, which is now just all the posts before this one.

    This iteration is heavily inspired by kottke.org and Daring Fireball. I plan to post links of things I find interesting, and longer posts about stuff. My personal posts will range from commentary on other stuff online, programming things, games, and probably a burger review or something.

    The site is still very much in development. Posts have tags, but there isn’t a way to view all posts with a certain tag. Link posts’ titles are links to their site, but the RSS and JSON feed don’t respect this (ala Daring Fireball). The design is a modification of Jekyll’s default theme. Code highlighting is lame at the moment.

  • NSURLSession delegateQueue Silently Fails if Passed The Main Queue

    Of important note: If you want your callbacks to come on the main queue, you cannot create an NSURLSession with sessionWithConfiguration:delegate:delegateQueue: and pass [NSOperationQueue mainQueue] as the delegateQueue argument. All requests will silently fail, and never return if you do.

    Instead you must continue to us dispatch_async(dispatch_get_main_queue(), ...) or [[NSOperationQueue mainQueue] addOperationWithBlock:...].

  • Asynchronous Networking with NSURLSession

    iOS 7 introduces an entire new networking stack for developers, NSURLSession. Generally it makes the common tasks simple, and the hard tasks possible. It also drives the new background fetch capabilities as well.

    Like my earlier post, offloading your networking from the main thread is a simple way to help keep an app responsive. Doing this with NSURLSession is actually quite easy.

    NSURL *url = [NSURL urlWithString:@"http://iosdevelopmentjournal.com"];
    NSURLSessionTask *task = [[NSURLSession sharedSession] dataTaskWithURL:url
                                                         completionHandler:
                              ^(NSData *data, NSURLResponse *response, NSError *error) {
        if (data) {
            // Do stuff with the data
        } else {
            NSLog(@"Failed to fetch %@: %@", url, error);
        }
    }];
    [task resume];

    This will run the networking off of the main thread, and the callback will come from a system network queue. Generally this is what we want. If you want to have control over what queue the callback comes from, or to be able to handle authentication requests, you should create your own NSURLSession and delegate.

  • Verifying UIKit is Running on the Main Thread

    As previously mentioned: to get the UI to update, you need to run your UIKit configuring code on the main thread. Peter Stienberger has posted a great snippet of code that raises an assertion whenever you attempt to access UIKit code from off of the main thread. Simply add the file to your project (and swap out the PSPDFLogError with an NSLog) and build and run. Everytime you call UIKit code off of the main thread, it’ll crash your app. Great for finding bugs.

subscribe via RSS or via JSON