This past summer I swung by Y Combinator a couple times to scope out the new startups. (Fun fact! I was in Y Combinator during the Summer of 2006.) Out of all the startups there one really caught my eye: AppJet.
They were setting out to build a quick-and-easy way to construct web applications using, their language of choice, JavaScript. They were doing all of this using Rhino, giving each application its own instance to play with. I met up with them to discuss things, how apps were going to be built, what standard libraries to provide; they were on a good track, and by the look of today’s launch, they were quite successful.
Just to list some really-cool things that they’ve done:
- They have a full browser-based, syntax-highlighted, IDE for building the applications
- Each application has its own sub-domain and controlled Rhino instance.
- They have a, really nice, comprehensive API reference.
- You can build dead simple Facebook apps.
- They have persistent server-side storage.
- There’s a public app directory that you can browse.
Just to give you a taste, here’s the full source code to a “shoutbox” application. (Remember, this is server-side/client-side mixed!)
import("storage"); var historySize = 20; if (! storage.msgs) { storage.msgs = new StorableObject(); storage.start = 0; // first msg storage.end = 0; // index after last msg } if (request.isPost) { var newText = request.params.newText; storage.msgs[storage.end++] = request.params.newText; while (storage.end - storage.start > historySize) { delete storage.msgs[storage.start++]; } response.redirect("/"); } else { print(FORM({id:"shoutform",action:"/", method:"post"}, INPUT({type:"text", name:"newText", size:40}), INPUT({type:"submit", value:"shout!"}))); var messageDiv = DIV({id:"msgs"}); for(var i=storage.end-1; i >= storage.start; i--) { messageDiv.push(P(storage.msgs[i])); } print(messageDiv); }
I’m very impressed: Congrats David, Aaron, and J.D.!
.mario (December 13, 2007 at 10:40 am)
Just a detail: Sure it’s Rhino? It seems to support the Script() method and that smells like Spidermonkey. Or maybe I am wrong ;)
Greetings,
.mario
John Resig (December 13, 2007 at 10:42 am)
@.mario: Yep, definitely Rhino. From Aaron himself:
All together, some very cool technology at play here.
G|oS|co (December 13, 2007 at 10:18 pm)
So much better to see you back in a good mood!!! :) Keep up the good work!
Nick Johnson (December 14, 2007 at 8:27 am)
I don’t see any client code in that example – got one with some mixed in? I’d love to see how it works.
Kingsley Joseph (December 18, 2007 at 6:18 pm)
I’m very impressed too. I’ve been playing with Helma for a bit, but this is a nice layer on top that simplifies development.
I’m just a little bit worried that it’s only hosted and that the only provider are the appjet guys, but it won’t stop me from experimenting.