IE Wishes; Time for a “Best Viewed In Any of These..” day? smtp2web.com: Bridge SMTP to HTTP; Let App Engine accept Email
Jun 09

Finding the right abstraction; Not repeating the same mistakes

Ajax, Tech with tags: Add comments

Abstract Art

I got to meet (and interview) the crew behind 280 Slides, the beginning of “Keynote on the Web.”

The application looks like an Apple.app for a reason. Two of the crew jumped from USC to Apple, and drank the Steve-aid of compelling user experience, the Mac-way.

Francisco built the beginnings of Objective-J at school, and then resurrected it later.

When they wanted to build rich Ajax applications, they wanted to use the toolchain they were used too, and thus they continued the work of porting Objective-C to Objective-J, and Cocoa to Cappuccino.

The podcast talks about how the runtime itself loads .j files and on the fly munges to JavaScript and runs. There isn’t a compilation step (e.g. like GWT generating JavaScript from Java).

280 Slides is the first application built on the framework, and people are talking about it. It seems like we have two differing views:

  • “Why would you go to ALL of that work to build a framework that complicated instead of just building the darn application on a good Ajax framework like jQuery/Dojo/Prototype/…”
  • “Wow, I can’t wait to see this open sourced so I can build Mac-like software too”

I can see the allure of Objective-J / Cappuccino for building desktop-like Web applications. It gives you a very high level abstraction over the browser. No more DOM. No more CSS layouts, which can be the bane of your existence for a complicated and dynamic layout. If done correctly, it can allow you to not keep making the same mistakes.

Do you sometimes feel like you are fixing the same bugs again and again? If you do, then maybe you aren’t at the right abstraction?

Then, think about how hard it is to get copy and paste working across objects. Cappuccino gives this to you, and certain Web applications will love this.

Francisco Tolmasky had a good response to some concerns on the Ajaxian thread:

Let me first lessen your concerns by telling you that can *still* do string = “Today” + date. That’s the beauty of Objective-J, it’s both languages, which means you get all the benefits of JS, while still getting to have real classes and so forth.

Now, completely separate from this, is that no *language* truly makes writing applications easier. Sure, little pet peeves may come up here and there, but 90% of what happens in an application deals with the frameworks you use. I’m sure all the iPhone “problems” you’re having with Objective-C are more than compensated by all the amazing power you get from things like CoreAnimation, which is precisely why we wrote Cappuccino.

JavaScript does not have any way of writing applications today in the same way mature platforms like Cocoa do. Cappuccino provides you with very high level features like copy-paste (of anything), undo and redo, document management and archiving, vector graphics and animation, etc etc. when you write an application for Mac OS X or iPhone, you can truly focus *just* on your application, not whether it will work on some obscure browser or how to get something as simple as undo working, and that’s precisely what we are trying to provide.

Again, Cappuccino is not for everyone. There is an incredibly wide spectrum of web content out there, from completely static pages, to dynamic pages, to full blown applications. We *only* serve the latter. It would not make sense to put Cappuccino on something like Amazon.com, but 280slides would have been an incredibly more difficult task for a 3 person team like ours without having all of the foundation already complete.

Of course, if the high level abstraction is your muse, then you should make sure that you stay in that land. Gone are the days of mashing up other JavaScript code.

Trying to find the right level can be tough, depends on what you are doing, and more importantly…. the mojo that feels right.

Leave a Reply

Spam is a pain, I am sorry to have to do this to you, but can you answer the question below?

Q: What are the first four letters in the word British?