Actiontastic Forks Self, Feels Lighter

I don’t know about you, but I sure miss seeing new versions of Actiontastic showing up on this blog every few weeks. If I had to guess, I would even say frequent releases were more exciting than my occasional dives into CloudKit and the vision for cross-platform synchronized data using only web technologies.

This isn’t to say that the work on CloudKit is unimportant but only to say that delivering working software has more immediate benefits to readers of this blog than status updates on a project that probably seems invisible to people who don’t follow me on GitHub. Further, the JavaScript portion of CloudKit is holding up several other exciting projects. So here’s what I’m going to do…

Actionatr Absorbs Open Source Actiontastic

Open source Actiontastic and Actionatr are the same thing, so from now on I will refer to the open source Actiontastic as Actionatr, because that’s exactly what it is. CloudKit is still its foundation. It is still being actively developed and already has some really cool features as a platform.

For example, a one-liner will generate a data model that has routes on it plus a matching JavaScript version that runs in a browser or inside Adobe AIR. (When Mozilla Prism gains HTML5 client database storage, things might change.) Another one-liner will publish an upgrade to all desktop clients and migrate data models to match the server models. This includes the offline SQLite models for AIR. It also has the beginnings of AMQP support so that RabbitMQ can push realtime updates to the browser.

None of this is going away. I have, however, realized that the project has such a large scope that Actiontastic 1.0 shouldn’t have to wait on it.

Actiontastic 1.0

Actiontastic 1.0 will still sync across desktop clients as planned, but it will not have a Windows or Linux version. Those will show up when Actionatr arrives. This will allow me to focus on the data/sync part of CloudKit minus the JavaScript/SSB part of it and execute more quickly. It is sort of a Pragmatic CloudKit that includes web tech on the server and Cocoa on the desktop. “Purist CloudKit” will not use Cocoa.

Adobe AIR for Linux

A few hours ago, Adobe released a public version of AIR for Linux. This makes it the first cross-platform WebKit runtime that supports local SQLite storage. They are the only player in this space at the moment. Although many lump AIR in with Gears, Flash, and Silverlight, it is operating entirely in its own space and this should not be underestimated.

When CloudKit is released, likely on Monday of next week (quickly followed by Actionatr), it will include support for Adobe AIR but the pieces that are AIR-specific have been isolated into their own surprisingly small implementation classes. The end result may come in at less than 100 lines of code. Because of this, I have been working on a Qt wrapped version of the latest WebKit runtime that supports HTML 5 local SQLite storage without having to use a top level “air” namespace. If you have experience with the Qt toolkit or WebKit builds in general and would be interested in working on this cross-platform wrapper, please leave a message in the comments or send an email to my first name at this domain.

CloudKit on the Citizen Garden Podcast

A big thank you to Larry Halff (Ma.gnolia, thmbnl) and Chris Messina for hosting Todd Ditchendorf (Fluid) and me on the Citizen Garden Podcast. If you’re interested in site specific browsers, check it out. CloudKit, the “data everywhere” platform powering Actionatr, is discussed along with Fluid, Prism, AIR and other juicy bits.

A New Way of Looking at Your Data

Here’s an annotated peek at some Actiontastic and Actionatr source code for the 1.0 releases. I don’t like Photoshop hype nor do I like showing a raw un-styled UI, so this is my attempt to show real working code and highlight some of the new features that it enables.

Code

1. All Actions View

Sometimes you just want to see everything on your list, regardless of what project or context contains the items.

2. Project List View

The new project list view shows all projects with their actions listed underneath in a tree-like view. Projects can also be marked as complete.

3. Tags Instead of Contexts

Tags are a great way to build a scalable user interface. By scalable, I mean an interface that grows with the user. Contexts are canonical to GTD but tags are more universally understood, not to mention expendable. If you don’t do full-on GTD, tags are easier to ignore than the imposing “Contexts” button in the toolbar of Actiontastic today. (As an aside, the toolbar is going away in favor of an iTunes-like source list.)

So, you can still have tags for contexts like “calls” or “errands” but you can also use them in a more free form manner as your personal system grows. Beyond this, there is no more “one context per action” rule; you can apply as many tags to an item as you desire. Tag collections are in the works too, for things like “important” and “calls” in a single click.

4. Time Travel

Go back in time to see what was completed on each day.

5. Trash

Just in case you delete something that you didn’t mean to delete, these apps now have a Trash Can, just like your desktop.

Developer Release: GWT on Rails

Just over two weeks after the release of GWT-REST, the next layer of the Actionatr stack is ready for release.

GWT on Rails

http://code.google.com/p/gwt-on-rails/

GWT on Rails integrates GWT client side compiled JavaScript with Rails RESTful web services by providing client and resource generators, migration support, asynchronous RESTful client support, and Rake automation. A summary follows.

GWT Client Generator

Until now, building a GWT interface for a Rails project required the use of either an IDE or command line tools to build a GWT “module” which then had to be tweaked for use with Rails instead of the default embedded Tomcat server. Using Rails conventions as a starting point, the GWT client generator allows one to generate a GWT interface (or any number of them) with a single command:

script/generate gwt_client dashboard /Users/jdoe/java_libs/gwt-mac-1.4.61

Rake support is included so that cleaning, compiling, and running your hybrid project are also one-liners:

rake dashboard:compile

rake dashboard:hosted

rake dashboard:clean

GWT Resource Generator

Any ActiveRecord model can be exposed on the client side by simply running the GWT resource generator:

script/generate gwt_resource Project dashboard

Migration Support

Once the resource generator has created a client side resource/model, your ActiveRecord migrations will transparently keep everything in sync. Any fields that are added, altered or removed will likewise be updated in JavaScript-land. By generating a base class that is recreated after each migration and a corresponding model that extends this base, custom code can remain intact while the basic model changes.

GWT-REST

The GWT-REST module comes bundled with this plugin, allowing easy CRUD operations with the built in RailsJsonResourceCollection class.

More details are available on the Google Code project site. Enjoy!