Right up to my first topic: Sproutcore.
You can get my demo application from github.
This totally changes the concepts of web pages, and leads to a model that’s very close to desktop development.
So far, this is actually nothing unusual. There are many other frameworks like this, like GWT and Cappucino. The special thing about Sproutcore is that it’s based on concepts known from Cocoa, like Key-Value Observing, Key-Value Coding and Binding. These allow creating a very dynamic application without having to write any code to update the content after the initial setup. For example, if the storage layer receives new data from the server, it can be inserted into the data store, which automatically updates the user interface, while still adhering to the MVC concept.
I used the storage layer I mentioned earlier for communicating with the server. Creating a message locally means sending it to the server, new messages that are received are created from the storage layer. This allows a clear separation between network protocol and application logic. Due to the dynamic nature of Sproutcore, this works perfectly.
I’ll probably followup with more specific Sproutcore-related things later, since I’m using it for multiple rather large projects. There’s a lot to discover and learn.