Blog


Instant JavaScript Apps

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:

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.!

Tags: javascript, server, applications

Subethaedit

There's not many truly revolutionary desktop writing applications - but the real-time, collaborative, editor SubEthaEdit from CodingMonkeys is definitely near the top of the list. It has certainly influenced a number of web application developers, as sort of a 'gold standard' for what online collaboration could be like.

For a long time Subethaedit was a shareware program - but they recently switched to a pay-only structure (which made me sad inside). However, have no fear! If you're not familiar with BLOGZOT 2.0 on MacZOT.com, it's this opportunity where an app developer 'donates' a number of copies of their application in return for page rank a link back to their site. If enough people actually add the links back, then MacZOT and TheCodingMonkeys will award $105,000 in Mac software to all those who participated. Regardless, I think this is a great opportunity to get a free serial key for Subethaedit, if nothing else. So, check it out and if you have a blog, send a little link love - if anyone deserves it, it's the developers of Subethaedit.

Tags: subethaedit, osx, applications, programming

A Solution to Death on the Internet

I was reading an article yesterday discussing the problem of when people die (in real life) their virtual data is left to live (potentially forever) in the system. Now, according to a Metafilter post, a number of potential solutions have cropped up and seemingly died (no pun intended) off. Most of these applications are set up to send out an email to all of your friends or relatives after a period of time of no contact (usually by email). However, when thinking about it, I say that they don't go far enough.

Take into consideration the possibility of a data access API both for communication and for retreival. Let's break it down into those two steps:

  • Communication: A vital aspect to this application is determining if someone is, in fact, still alive. So, the first part of the application would ask the user how long it should wait before it begins making preparations for the user having passed away. (One week, one month, one year?) After a specified time frame has been chosen, the user sets up a variety of contact options (and sample settings), for example: Instant Messenger - If I'm online, or message you, then I'm not dead, Email - If I email you, then I'm not dead, Phone - If I call you, or text message you, then I'm not dead, CVS - If I make a CVS commit... a message board post, usenet post, weblog update, journal update, etc. The potential for determining if someone is still 'active' is very feasible and even easily integratable with existing communication mediums. This whole extendable communication API would have to be the first step to making this work.
  • Retreival: - These are the tasks that the user wants us to commit after they have died. I'd imagine that a user would want to perform different operations on different types of data (delete private data, save public data, send letters). Again, the importance of some sort of extendable API becomes apparent, example: Delete a file/folder from my server, Send a file/folder to my friend(s)/family, Upload some text to my web site, post a message to my favorite message board, etc. Being able to access data on a variety of mediums would be essential (ssh, vpn, ftp, smb), which would hopefully be transparent.

It's kind of hard to gauge a market for this sort of application, as there hasn't been any prior, successful, implementations. Although, that in itself could be the note that it simply wouldn't work in the current state of the Internet. I'd imagine that within the next 40 years, when the Internet generation begins to get old and thinking of the end times, that an application of this nature will be become much more popular and its usage much more widespread. Again, it's very hard to say right now, but I personally hope that something like this will exist as I really don't want those that I've met and communicated with to have to try and tie up my loose ends.

Tags: api, applications, death, internet, web

Social Computing in Business

With some recent buzz concerning social computing applications specifically targeted at making business connections, and I think some of them deserve a mention here (at the very least).

  • LinkedIn - I got the chance to play around with this site and really enjoy this one concept: endorsements. To make a connection with someone, you must 'endorse' someone's work. This is very interesting: You end up getting this network built purely on trust. My assumption is that you won't add someone unless you feel completely secure in the fact that they'll be a good reference for you. Then, when it comes time to search for people to fill a position at a job you can easily see which people are most trusted and respected. I like this a lot. The amount of information that LinkedIn allows you to put up is impressive too, it gives you a better feel of who someone is. I'm definitely going to play around with this more and report back. (My Profile)
  • Orkut - Google's semi-failed social computing application. One notable difference between this and the rest of the generic social applications is the ability to add business contact information. Profils have three views: Social, Romantic, and Business. This is interesting because Orkut has obviously pinpointed three target groups for their application and are hoping to provide specific information for each. Their business information leaves a lot to be desired, but it's a start in the right direction, I suppose. (Username: jeresig)
  • Ryze - Another application similar to LinkedIn, with a notable difference: The amount of information that you are able to provide is severly limited. For example, there is no way to list skills that you may possess, clubs that you participate in, or even any information concerning your schooling. I'm not very pleased with the interface or with the way that personal information is presented. I really recommend LinkedIn over this application. (My Profile)
  • Eliyon - This isn't purely social computing, per se, but more of an advanced search engine (and feels very scammy, but anyway). I was contacted a while back by one of their spiders requesting that I provide more information for my profile - I was intrigured. What this web site does is spider around the Internet looking for references to people and when they may have worked at a certain company - it seems to be very effective at doing this and is rather exciting! For example, I was able to find my old boss (when I worked at BrandLogic), even though no information was physically entered by him. The big issue with this 'service', however, is that in order to search for everyone from a corporation you must pay money, which kind of puts a crimp in the 'social' aspect of this application. (My Profile)

One interesting point about all of these applications: They all implement utilities to restrict the amount of communication (and potential spam) that you could receive. They set it up such that you can limit the number of connections away someone can be to view your profile, or even contact you. For the time being, I've placed no restrictions on my accounts to see the level of spam that is received.

Tags: applications, business, computing, social

Social Club Presentation

At tonight's Social Computing Club meeting I'm going to be presenting the new Schedule Maker Demo and giving my thoughts as to how I feel Social networking will come to play in this particular application. For all those interested, you are welcome to attend. The meeting will be at 6pm in Building 70, Room 2400.

Tags: applications, computing, rit, social

Macworld Keynote '05

I'm currently trying to follow the Macworld Keynote, however all the servers that I'm reading off of are getting pounded. An assortment, for those interested:

  • Engadget's Coverage - Lots of info, getting pounded, but they have the bandwidth to handle it.
  • Mac Rumors - Rather unresponsive, but worth a shot.
  • Macrumors IRC: irc.tecknohost.com #macrumors - only short quips, but real time.

I gotta get back to watching it, they just announced iWork...

Update: Mac Mini
Mac Mini

Update: iPod Shuffle
iPod Shuffle

Tags: applications, corp:apple, macworld, products

Current Projects

jQuery JavaScript Library

jQuery

Comprehensive DOM, Event, Animation, and Ajax JavaScript Library.

Recent Projects

Pro JavaScript Techniques

JavaScript Book

The best techniques for professional JavaScript. Published by Apress.