May 6th, 2009
The latest edition of Daniel Jalkut and Manton Reece’s excellent Core Intuition podcast discusses “sync” as a general infrastructure problem.
Apple has a great sync story called MobileMe. It allows mail, calendar appointments, contacts, and a few other things to automatically sync via the cloud. Alas, Apple offers no public synchronization API. Apple’s home-grown apps sync up over MobileMe; Cocoa developers are left stranded, forced to “roll their own” sync solution.
Read the rest of this entry »
April 29th, 2009
I’m speaking this year at Google I|O in San Francisco.
I’ll be there with my friends Jesse and Josh; we’re going to talk about building highly scalable applications using Google AppEngine and Amazon’s Web Services. Jesse, Josh, and I built the Walk Score API using AppEngine, EC2, and S3. The API gets tens of millions of daily hits from big-name customers like Zillow and Redfin. Best of all, it costs pennies to maintain.
We’re looking forward to meeting you there. We promise fireworks and/or leprechauns at our talk!
April 23rd, 2009
I’ve written some code that reproduces the flick-to-scroll dynamics that you typically find on the iPhone. What’s useful about this code is that it is independent of coordinate system and can easily be nested in a custom view class of your choosing.
The iPhone’s default flick-to-scroll behavior is interesting. If you hold your finger down for a long time and move it in a variety of directions, you’ll see that only the very last direction is used to compute the scrolling motion.
If you try to build this code yourself, however, you’ll quickly discover that simply using the last two points to compute the direction of motion isn’t going to cut it. Instead, my code keeps a short history of touches and uses linear interpolation to determine where the touch “would have been” some small amount of time ago. This interpolated point is used as the basis for computing the motion vector. This leads to a very pleasing interaction.
The code is available on github, here: http://gist.github.com/100855. It is released under the BSD license.