Fork me on GitHub
isolate.js via AST analysis
interactivate
Recent changes in SDK
nodeconf 2012
Write logic, not mechanics
protocol based polymorphism
(clojurescripting :intro)
namespaces
JS Guards
Packageless modules
Addons in multi process future
Yet another take on inheritance
Shareable private properties
Evolving VS Adjusting
oh my zsh
Git status in bash prompt
CommonJS based Github library
Taskhub

Majority of web applications today are data owners. Yes, even if data is mine, it’s still owned by application, since all the ways to interact with it go through application. In some cases application kindly allows to export and import data, sometimes even delete or access it with other applications, but the point is, that somehow it is always between me, my tooling and my data. For example I just can’t simply move my social activity data access privileges from Facebook to MySpace or vise versa.

Still not sure weather this is fundamentally wrong or just can be better. One way or another, Taskhub is an experiment, trying to make it differently. With Taskhub I am an owner of my data and application itself is just a tool of my choice to interact with my data. To achieve this, Taskhub takes Jekyll like approach and saves tasks as Markdown formatted, plain text [gist]s. This way application respects my freedom of choice by allowing me to switch to any alternative task manager at any moment, making switch as painless as it can get, just stop using it. And if I’ll decide to switch back, Taskhub will just work. Think in summary, data is just mine and it should not bound me to any application. One can say here that it’s bounded to github, but it’s not true, because github in this case is just wire that connects my data to the cloud. In ideal world we will have “Data Clouds”, virtual hard drives with standard data access APIs. Users will buy them to store their data, just like they do with hard drives today.

For the moment Taskhub is just a geek toy, but I hope to see it’s decedents, being more useful to a regular users, one way of doing this is through adding support of saving data in less geeky storage, for example saving data to files in [Dropbox], will make a trick, besides it’s a step towards “Data Clouds”.

I’m not in illusions that, high performance will be easy to achieve with this model, but I do believe in smart people :).

Under the hood

  • HTML5 Offline web applications
    As I mentioned high performance with this model is not easy. To reach acceptable performance application uses HTML5 localStorage for a live data, that concurrently gets synchronized with a gist storage. HTML5 offline application caching APIs are used to make it possible to run application while being offline. All the data is synchronized once user goes back online. So far there is no conflict resolutions, because of limited gist APIs, so browser always gets priority, which leads to a funny results when used with multiple clients. Fixing this is on my taskhub list, so stay tuned.

  • CommonJS
    Application is build on top of CommonJS. It uses yet another CommonJS module loader Teleport, which asynchronously delivers modules from mapped CommonJS packages. One of the main components / packages is [github library] allowing to list, read and write gists straight from a browser and I’ll be posting details about it in the next post.

  • Backendless
    One of the interesting moments of architecture is in it’s selfhostness. That makes it possible to run app from any server, it even can be dropped to [dropbox] or can be used directly from local filesystem.

Demo

Gist plugin for Bespin
Reboot
narwzilla
JSDocs
bespin - JavaScript Server
bespin chromend
Bespin to Helma
bespin multibackend mockup
Adjectives | Ubiquity + Bugzilla love
Some Mock-up around Ubiquity
Mozshell
Ubiquity command Say
ubiquity command dictionary
Picasa Photo Viewer (Linux port) - Updated
Ubiquity command for JIRA & Crucible
Picasa Photo Viewer (Linux port)
VirtualBox
KeyZilla 0.1
XUL Development