Heroku is a new YCombinator startup that joins the growing number of "use your browser to build your apps" type of applications.
You can create new Rails applications, and they are magically hosted up in the cloud. You can import your own Rails application, or you can use the inline editor and tools to built the application directly in the browser.
Heroku itself is a Rails application. I wonder if they now self hosting :)
Being able to quickly build an application and have it running live is great (using Amazon EC2), and this is just the beginning. They already tie into the usual tools like Rake, but there is room to go further and have nice DB utilities, cloning of functionality, and much more.
The editor itself could use a bunch of work too. I can never see where the cursor is, let alone have all of the Textmate / Aptana / IntelliJ goodness.
Derek Gaw gave an ignite talk tonight onAIR which showed off his Uncluttr project.
Derek works for Amazon, but this is outside of his company work. He is frustrated seeing 1.5MB of content being downloaded when you login, find a book, and then view the detail page. That is too much.
Uncluttr uses the Amazon Web Services and is written with Prototype and Rails.
CalendarDateSelect is a prototype.js based datepicker capable of picking a Date and a Date/Time. It’s fully integrated with Rails, and is pleasantly easy to start using (install the plugin, restart the server, add <%= calendar_date_select_includes%> , and you’re ready to go! It’s light weight so you’re applications will load faster.
Also, integration with ActiveScaffold has been released.
Rails
calendar
JavaScript
opensource
open-source
Prototype
datepicker
37 Signals has released Highrise, a "shared contact manager and task list". Basecamp is about projects. Highrise is about people.
There is a healthy amount of Ajax used, but not in a flashy way. You will find a lot of inline editing, and sections expanding and contracting allowing you to get a lot of work done in a small area (as apposed to bouncing between pages).
All in all it looks very much like other 37 Signals products, and there are some subtle differences. I noticed that they are getting CSS/JavaScript from different subdomains now.
In the past you would see "/javascript/application.js" whereas now you see "http://asset1.highrisehq.com/stylesheets/print/application.css?1174401102" so I wonder if the architecture is slightly changed, and what their reason was for making this explicit.
You will see an "Add Person" button all over. Clicking on that has the page getting taken over with a form to add your buddy (and doesn't take you to the /person/create page). It doesn't appear that the back button has been hacked here, so if you hit back expecting to go to the page before you clicked on add person, you will go back a page.
The only slightly disappointment was how the free account is really bare bones. You don't get any of the cool features such as cases, and 25 contacts is pretty meaningless. I also noticed that when you signup the order of accounts had flipped. Subtle. Of course, I do not blame them for trying to sell accounts and make money. All power to them.
They are creating a nice portfolio of products. I am interested to see if they will integrate more (they do a good job with integrating writeboard / basecamp / chats) both within their own product line, and even more so with email (they do a good job at letting you email the system).
Finally, I see a large whole out there. I want a contacts/address book service that lives up in the cloud, that I can use an API to talk too. I don't want to type in my contacts more than once. On the Mac my apps share the address book, and I want the same on the web.
It must be Friday. Web-O-Random is a new website I created to spend hours exploring random websites the Ajax way ;). A list of URLs is fetched from the server, placed into an animated carousel/slider component, and you can then navigate through the carousel to preview the websites.
Technologies:
More info in this blog post and the FAQ.
Richard McMahon has wrapped the oft-seen resizable text areas in a simple Prototype component ResizingTextArea:
JavaScript
UJS Rule
It responds to keystrokes by parsing the text value into lines, accounts for a bit of line wrapping, and ensures that the number of rows presented grows (and shrinks) to match what has been typed in. The solution is best suited where the text entry is likely to be in the 0-50 line range.

Apparently Santa was listening to my request for more docs in this last post: Sergio Pereira has updated his outstanding developer notes for Prototype to cover 1.5rc2.
Scott Raymond and Sergio also worked together to create the Prototype Quick Reference, a PDF that expands on Sergio's web site. The PDF will also be updated to cover 1.5 final, whenever that happens. There is also Ajax on Rails, written by Scott with Prototype-specific info contributed by Sergio. It also covers Scriptactulous and of RJS and other Rails specific methods for developing ajax.
Does anyone have any reviews of either they could link up or contribute?
With so much discussion happening recently about the state of Prototype, it’s great to see some updates finally rolling in. Hopefully this is only the beginning of what’s to come.
Here is the changelog as of around 7:00 CST:
Make destructive Element, Form, and Form.Element methods return their first argument, so that multiple calls can be chained together. [sam]
ex. $(“sidebar”).addClassName(“selected”).show();
The following methods now return their first argument: Element.toggle, Element.hide, Element.show, Element.remove, Element.update, Element.replace, Element.addClassName, Element.removeClassName, Element.observe, Element.stopObserving, Element.cleanWhitespace, Element.scrollTo, Element.setStyle, Element.makePositioned, Element.undoPositioned, Element.makeClipping, Element.undoClipping, Form.reset, Form.disable, Form.enable, Form.focusFirstElement, Form.Element.focus, Form.Element.select, Form.Element.clear, Form.Element.activate, Form.Element.disable, Form.Element.enable.
For consistency, Element.toggle, Element.show, and Element.hide no longer take an arbitrary number of arguments. [sam]
!! BACKWARDS COMPATIBILITY CHANGE !!
If you have code that looks like this: Element.show(‘page’, ‘sidebar’, ‘content’); You need to replace it with code like this: [‘page’, ‘sidebar’, ‘content’].each(Element.show);
Add Array.prototype.reduce [sam]:
Add Object.keys and Object.values [sam]
New to Prototype is Object.keys and Object.values. There are a couple things to be aware of however. These methods won’t work on Prototype classes the way you might expect. So for instance, this will not work:
var Foo = Class.create();
Foo.prototype = {
intialize: function(str) {
console.log(str);
},
bar: function(str) {
console.log(str);
}
}
console.log(Object.keys(Foo));
// ["prototype","bind","bindAsEventListener"]
The reason for this is that Foo is a Function and you’ll get the keys for the Function object. A relatively easy work around for this is ask for the keys on Foos prototype object:
console.log(Object.keys(Foo.prototype)); //["intialize","bar"]
Of course, you don’t get the class methods with this so you can use something like this. Not a particularly useful class, but you get the idea:
var Inspector = Class.create();
Inspector.prototype = {
initialize: function(obj) {
var instanceMethods = Object.keys(obj.prototype);
var classMethods = Object.keys(obj).reject(function(method) {
return ['bind', 'bindAsEventListener', 'prototype'].include(method);
});
console.log(instanceMethods, classMethods);
}
}
This is great and well help put an end to some of those very verbose Form operations. Now you can do stuff like:
<form action="/search" id="searchform">
<input type="text" value="this is text" name="q" id="search" />
<input type="submit" value="submit">
</form>
//Javascript
console.log($('searchform').getElements());
// [<input type="text" id="search" name="q" value="this is text">,<input type="submit" value="submit">]
Dan Webb’s very old patch for event observing went in. This means we can now do:
$('element').observe('click', function(e) { alert(e); });
All the methods listed in the CHANGELOG overview above now return their first argument.
$('sweet').observe('click', function(e) {
console.log("%s was clicked", Event.element(e));
}).setStyle({color: 'red'});
This is just a quick overview of what is going into Prototype as we speak. It seems Sam is on the move today and there is a flurry of activity so we’ll likely see more before the day is over with. I’ll try to update this post as soon as I learn more.
We've covered the very cool UJS (Unobtrusive Javascript) plugin for Rails previously. Now the creators have extracted the javascript pieces to allow easy unobtrusive scripting with prototype and released it as Low Pro (download here). Low Pro features code from folks like Dean Edwards and Justin Palmer, among others. Its compatible with Prototype 1.5 and adds or enhances functionality without breaking backwards compatibility.
The library adds the following:
All in all it looks like a great add on to prototype - my only wish is that some of this stuff looks like it should be in the main code base, and not a third party add-on!
I started writing a blog article on how to integrate the cool prototype windows and ajax_scaffold, half way through I got bored of writing it and just decided to upload my mutated version of it.
You need to manually install the prototype window javascript. Any one with basic rails knowledge should be able to do this.
Its just a quick hack by the way..
opensource: del.icio.us tag/opensource
Ajax
Ruby
Rails
presentation
Programming
JavaScript
opensource
Conference
Prototype
opensource: del.icio.us tag/opensource
Ruby
Rails
Programming
JavaScript
Web2.0
HOWTO
opensource
Prototype