Given the zero dollar budget and the fact that I don’t know people who do the press conference thing, I’ll just deliver the details here and now.
I was targeting today for the CloudKit release. On Friday evening, I began a code-a-thon of sorts to wrap up the last bits of the platform prior to release. The weekend was spent entirely at the computer, bachelor style, with pizza, coffee, soda, and various other forms of sugar in the shape of rabbits. Each remaining bit was scribbled on a white board with a plan to get to Monday morning with the goods.
Sometime on Saturday, I chose to take a risk and drastically reduce the hosting requirements for CloudKit apps (and give it a massive boost in performance as well). Knowing that this kind of change would be a pain for users after a first release (it included an ORM and web framework switch), the risk/reward ratio seemed about right. This part of the work is now done and I am back on track for wrapping up (again).
So, thanks for sticking with me, for being awesome, and for the encouraging comments and emails. Building free software is its own reward but having enthusiastic users makes it even better.
Sneak Peek
For the curious, CloudKit is coming together as an SDK delivered by way of a ruby gem. The installed gem will allow anyone to generate a small, fast web app that supports OpenID logins and OAuth API authorization right out of the box. Stealing liberally from my GWT on Rails plugin, CloudKit will keep data models in your web app in sync with the models in your distributed, online/offline desktop apps (built with the same HTML, CSS, and JavaScript UI on both sides). The center of it all is a tightly optimized bit of JavaScript known as the Application Context.
This Application Context is kind of like the MCP in Tron, minus the evil part. It knows when it is running in a browser or on the desktop and makes decisions about what to do when the network connection is unavailable. Local SQLite storage is used for both speed and network fault tolerance. Based on launch times, network state, and web service information, the wannabe MCP updates client apps to the latest version, migrates their data models to match the server versions, and synchronizes data that is stale on either side.
There is probably a day or two of work left at this point, to be distributed over spaces between the best full time job ever and my role as the luckiest husband and father ever. Let’s touch base again next Monday, shall we?