Archive for February 6, 2013

Wednesday, February 6, 2013

Dropbox Sync API for Mobile Developers

Dropbox:

Get ready to add some Dropbox magic to your apps with the Sync API for iOS and Android, a powerful new library that makes it easier than ever to sync with Dropbox. The API takes care of all the complexity around caching, syncing, and working offline so that you can focus on creating the best mobile apps—it’s like having your own private Dropbox client built right into your app!

The syncing works with app-specific folders. It would be great if Dropbox had a companion SDK for Mac OS X.

Random Observations

Gus Mueller:

Here’s the other random observation—Mac App Store sales of VoodooPad and Acorn have been going down over the past couple of months, but direct sales have been going up. And I don’t know why. It’s the same price, and previously the trend had been in the opposite direction, but…well there it is.

I’m seeing the same thing with DropDMG and EagleFiler. Overall sales are up, but sales via the Mac App Store are much lower (both percentagewise and in absolute terms), even though the apps now have more good ratings and reviews.

And, like me, he’s seeing lots of customers continuing to use Snow Leopard.

Block Debugging

Damien DeVille:

We are mostly interested about the first method argument (the third argument of the objc_msgSend function) which happens to be a stack block. Now, obviously we know exactly what the arguments, return value and body of this block are since we wrote it, but think if you were stepping through framework code and you find such an instance, you would have no idea. And from experience, the actual interesting bits often happen to be in that very block. Well, this is unfortunately where most people would stop investigating but it is also exactly where any debugging aficionado starts to have some fun!

Update (2013-02-07): Ole Begemann notes that in this case much of the introspection could have been done using CTBlockDescription. I agree that in most cases it’s better to put reusable functionality like this in code, rather than typing it into the debugger.

Objective-C Blocks Quiz

Bryan Klimt:

Do you really know how blocks work in Objective-C? Take this quiz to find out.

Educational, although I think it confuses what works in the current implementation with what is contractually guaranteed to work.

Functional Reactive in the Netflix API With RxJava

Ben Christensen and Jafar Husain:

The Observable data type can be thought of as a “push” equivalent to Iterable which is “pull.” With an Iterable, the consumer pulls values from the producer and the thread blocks until those values arrive. By contrast with the Observable type, the producer pushes values to the consumer whenever values are available. This approach is more flexible, because values can arrive synchronously or asynchronously.