Activate your free membership today | Log-in

Friday, December 12th, 2008

Cappuccino 0.6 Released

Category: Apple, Framework, JavaScript

The Cappucinno team has a new release, 0.6 that include:

  • New language addition to Objective-J: The @accessors keyword to eliminate the boiler plate code of writing setters and getters. Read more about it here.
  • Support for more classes like CPTimer.
  • Performance improvements all around, but especially in Objective-J thanks to a major rewrite of the parser.
  • Improved debugging tools and a new debugging “mode”.

Take a walk through and download away.

Posted by Dion Almaer at 7:06 am
Comment here

+++--
3.4 rating from 18 votes

Wednesday, December 10th, 2008

YUI3 PR2 now available - extendable with own widgets and plugins

Category: Framework, Yahoo!

Over at the YUI blog Satyen Desai just announced the release of YUI3 PR2. The main changes are that the widgets from YUI2 are now all getting ported over to the new, leaner YUI3 architecture and that the team made it much easier to write your own YUI widgets and plugins extending the existing ones.

YUI3 widget architecture

Those who played with the YUI2 Rich Text Editor already got a flavour of how that works. If you are interested in the overall direction of YUI3, check out the video explaining YUI3’s ideas and plans.

Posted by Chris Heilmann at 3:53 am
1 Comment

++++-
4.2 rating from 17 votes

Friday, December 5th, 2008

Mozilla, Zazzle, and UIZE

Category: Examples, Framework, Mozilla

Moz Community Store

Mozilla is big on tinkering–making things your own. They recently released a marketplace for their community to upload its own shirt designs. But because they based it on the Ajax-heavy Zazzle platform, consumers can customize the shirts in a variety of ways. We thought this made for a good opportunity to take a closer look at Zazzle.

Easy Zooming

In the overview page showing different shirt designs, simply mousing over a shirt lets you zoom in on it in a smooth, easy motion.

Clicking into a shirt gives more Ajax goodness, like an alternate zooming interface showing the full-view and the detail simultaneously:

And finally, it has a shirt manipulation interface, though most of the design manipulation occurs on the server, it is sent back without a page reload, as we would expect:

Zazzle is built on the UIZE (pronounced “you-eyes”) Ajax framework which we covered briefly in 2006 and have yet to revisit. We’re not sure if UIZE is used by anyone but Zazzle, but it’s got a pretty nice website, docs, widgets, basic effects, an event system, and an inheritance system. We’ll have to give it a closer look!

Posted by Ben Galbraith at 1:01 pm
5 Comments

++++-
4.5 rating from 13 votes

Friday, November 21st, 2008

Memberkit: Another Shot at VB for the Web

Category: Framework

Two years ago we covered JotForm, a Ajax-based web form builder. The folks behind it have been busy in the intervening time and have now released a more general tool: Memberkit.

Three years in development, Memberkit lets you

use the drag and drop tools to create listing pages, display pages or search forms. You can create multiple forms and create relationships between them… without writing any code.

While at present Memberkit targets a particular niche, it has ambitious plans.

We have released this first version specifically for membership and
social sites. Our plan is to first make it perfect for these specific
taks before turning it into a complete web framework.

The interface seems quite polished and responsive, and I like the narrow focus. You can check out a demo of the framework, view a screenshot tour, or watch a video.

What do you think? Do these VB-for-the-Web frameworks have a shot at any mainstream success?

Posted by Ben Galbraith at 8:00 am
6 Comments

+++--
3.4 rating from 31 votes

Thursday, October 30th, 2008

Widgetplus: Server side Ajax widgets

Category: Framework, JavaScript

Mikael Bergkvist has created Widgetplus, a gadget platform. He told us about it.

XML Runtime

The structure of an application is defined in XML.

It’s loaded into the serverside runtime like this: javascript:xin.app(' http://www.naltabyte.se/desktop/xin/demo/programs/basics.xml ');

We get this as a result. (the ‘test this’ link)

Changes to the app remain persistent because on the server, the xml object has changed.

Of course, different users gets different versions of the same widget, because they have their own xml runtimes.

A widget can contain any amount of javascript to execute clientside, and also include any css to style it, like this calendar application.

A widget can also split itself into subsets, this example opens a new widget as a dialog, which is really a part of the same widget, and saves data back to itself from it.

XML objects can access each other on the server within the boundaries of the same account.

It means that widgets can access other widgets and send/recieve data from them.

Data can also be sent / retrieved cross domain, without opening the widget on the client at all.

The xml for this app in this example, which is behaving much like a webservice, is here.

File system access

Widgetplus allows complete filesystem access for a widget, but only within the user account.

By default, widgets always access the demo account, but when logged in, they access the users home account, it’s files and folders, and other settings.

This is crossdomain by default, like this example on Blogger, which accesses all files on the demo account.

There are several more ways this can play out:

The API lets anyone build their own solutions/variations of this.

Conclusion

These two parts, together, define what widgetplus is.

It’s a serverside xml runtime for widgets, which can access and manipulate files and folders that belong to the free user account.

Users can always sign up / log in to any widget (by default), the developer wont have to bother about that.

Widgetplus clones all widgets as soon as someone signs up, and also automatically creates a webspace directory for the new user with the default folders in place.

Otherwise, whenever someone logs in, it simply serves the requested xml object(s) associated with that user.

It’s important to note that widgetplus isn’t a BOX.net service, the webspace is for widgets - and whatever they do with it – it’s not for uploading your entire music collection. We will move to a server network in about two months, after which we plan to offer unlimited file storage, but for now, we need to keep a tight leach.

Posted by Dion Almaer at 2:30 am
2 Comments

++---
2.1 rating from 23 votes

Thursday, September 18th, 2008

ZK 3.5 Released with Comet Support

Category: Announcements, Comet, Framework

ZK 3.5, the latest version of the server-side Ajax framework, is out with a raft of new features. Three of those features really stand out for me:

  • Comet server push
  • Customization of look and feel
  • Performance monitoring

Server push via polling has been available in ZK for a while, and Comet in the ZK “Enterprise Edition,” but now it is available to everyone. And it is pretty easy to use: “The implementation of server push is transparent to developers. ZK chooses which implementation to use according to the edition of ZK automatically, but it is configurable.”

Customization of look and feel has gotten much easier. ZK has followed the example of a number of other frameworks in styling its widgets with predictably named CSS styles. Changing the look and feel of an application is now as easy as changing the ZK widget style sheet. Styles can further be overridden on a widget instance-by-instance basis.

Performance monitoring is perhaps the most exciting new feature. Client-side tools such as YSlow can guide optimization efforts and give you point in time performance snapshots. But critical applications need to be monitored and tracked end to end over their lifespan. With ZK 3.5, you now have the plumbing to instrument your application to capture five data points for each request:

  • T1, the time browser sends a request to server
  • T2, the time server receives a request
  • T3, the time server sends a request to browser
  • T4, the time browser receives a request from server
  • T5, the time the browser finishes processing a request

ZKStudio 0.8.2

There’s also a new version of ZKStudio for Eclipse out. The major change is that it now supports auto update via http://studioupdate.zkoss.org/studio/update

Posted by Dietrich Kappe at 3:31 pm
1 Comment

++++-
4.1 rating from 35 votes

Friday, September 5th, 2008

The JavaScript Framework Long Tail

Category: Framework, JavaScript

One of the reasons Dion is such an effective editor here at Ajaxian is his sense for filtering all of the available news from the Ajax community down to about three stories a day. Truth-be-told, with all the submissions we get and what we find on our own, we could easily post 10 stories a day. But in today’s saturated environment, we find three stories is about the right number to keep from overwhelming our readership with too much noise. We hope you agree, and we’re interested in hearing if you feel otherwise.

A consequence of this arbitrary filtering is that some of the lesser known frameworks and libraries simply don’t get covered. We never try to be king-makers, nor do we have that kind of clout–we simply can’t cover everything.

We enjoyed Six Revisions’ recent round-up of 10 new/up-and-coming JavaScript frameworks, many of which we’ve never covered, like Midori, Archetype, JUNE, UIZE, Simple.js, and fleegix.js.

The adventurous among you should take a look! Not too long ago, an up-start named jQuery shook up the existing players… some of these may be next.

Posted by Ben Galbraith at 9:00 am
21 Comments

+++--
3.7 rating from 33 votes

Wednesday, August 20th, 2008

Making creating DOM-based applications less of a hassle

Category: Framework, JavaScript, Library

Creating a lot of HTML using DOM methods can be a real pain. This is what students of the Juku training course that I held two weeks ago found out quite quickly and complained about the verbosity of it all. I listened to their concerns and came up with a framework for JavaScript applications called
ViewsHandler.

One of the tasks I had given the class is to create a thumbnail show with image information from a link pointing to Flickr using the JSON API. The following is a solution using and showing the options of ViewsHandler:

A flickr show created with ViewsHandler

A flickr show created with ViewsHandler

ViewsHandler is not another JavaScript templating solution but works on the assumption that in most cases you'll have to create a lot of HTML initially but you'll only have to change the content of some elements dynamically as new information gets loaded or users interact with the app. So instead of creating a lot of HTML over and over again all I wanted to provide is a way to create all the needed HTML upfront and then have easy access to the parts of the HTML that need updating.

The first thing you'll need to do to define your application is to create an object with the different views and pointers to the methods that populate the views:

JAVASCRIPT:
  1.  
  2. var views = {
  3.     index:{
  4.       create:createIndex
  5.     },
  6.     detail:{
  7.       create:createDetail
  8.     },
  9.    info:{
  10.     create:createInfo
  11.   }
  12. };
  13.  

ViewsHandler then creates DIV elements for each of these views and hides them for you. In your methods you create all the HTML the different views need to have and apply it with an add() method. You then define the parts of the HTML that should change later on as fields using the define() method and you can use the set() method to change the content of these fields and the view() method to change between views.

The benefit is that for setting the data you don't need to access the DOM any longer or use innerHTML or nodeValue. ViewsHandler created a pointer to the element all of this is cached. The set() method also allows you to either add a new node as the value or a string. In the latter case it'll create a text node for you.

One convenience method is linkto() which creates links pointing to the different views for you. None of this is rocket science, but it helped the class to create large applications with complex views without losing track of what they are doing. Maybe it can help you, too.

Posted by Chris Heilmann at 11:13 am
13 Comments

+++--
3.3 rating from 18 votes

Thursday, July 31st, 2008

Adobe AMF Support in Zend Framework

Category: Adobe, Framework

Andi Gutmans of Zend has posted on a proposal for AMF support in the Zend Framework, which is being lead by the AMFPHP project leader, Wade Arnold.

This ZF component will allow for client-side applications built with Flex and Adobe AIR to communicate easily and efficiently with PHP on the server-side.

We are excited about this proposal as it is consistent with our emphasis to be a heterogeneous “use-at-will” framework and as it substantially strengthens Zend Framework’s RIA story. It is also another industry heavyweight joining as an official ZF contributor and joining the likes of IBM, Google and Microsoft in doing so.

Now that we have the Dojo integration ready for ZF 1.6 as a great Ajax story, AMF will complement that with more of an Enterprise oriented solution. We are currently planning to have AMF support aligned with the ZF 1.7 release but we will know better once the proposal has made it through the proposal process.

The proposal itself is here and its overview is:

Zend_Amf_Server provides Action Message Format (AMF3) support for the Zend Framework that is compatible with the Flash Player 9 and above. The Adobe Integrated Runtime (AIR) and Flash Player uses AMF to communicate between an application and a remote server. AMF encodes remote procedure calls (RPC) into a compact binary representation that can be transferred over HTTP/HTTPS protocol. Objects and data values are serialized into this binary format, which increases performance as the AMF serialization is a highly optimized procedure in the Flash Player. Zend_Amf_Server will act as an AMF gateway to the Zend Framework by exposing through introspection custom class objects and functions that will respond as callbacks through the Zend_Amf_Server gateway.

Posted by Dion Almaer at 7:43 am
Comment here

+++--
3.6 rating from 14 votes

Monday, July 28th, 2008

Dojango: Two great tastes in one can!

Category: Dojo, Framework, Python

Dojango, a template Django application that includes full Dojo support baked in, has been released by Tobias Klipstein, Nikolai Onken, and Wolfram Kriesing.

  • It provides capabilities to easily switch between several Dojo versions and sources (e.g. aol, google, local)
  • Delivers helping utilities, that makes the development of rich internet applications in combination with dojo more comfortable.
  • It makes the building of your own packed Dojo release easier.
  • It includes a reusable django app that provides Dojo
  • It includes helper functions, i.e. JSON conversion

Posted by Dion Almaer at 10:22 am
1 Comment

+++--
3.5 rating from 42 votes

Wednesday, July 2nd, 2008

Loom: Annotation based Java framework

Category: Framework, Java

Ignacio Coloma has announced Loom 1.0 RC 1. Loom is an annotation-based java web framework that includes a ton of new features in this release. After some selective process, these are the bits that could be of most interest for Ajax developers:

  • Generates HTML 5 markup (with data-* fields), including CSS classes
    with the property type.
  • Based on prototype
  • An ever-growing list of (progressive-enhancement) web components,
    including: multiple file upload, tabs, menus...
  • Dead-simple javascript validation library with i18n support.
  • ...which mimics the process at the server, in case javascript is disabled.

Just give it a try at the demo. Try introducing invalid input, and check the sources by clicking the "View source" link at the top right of the page. Everything in the demo should work with javascript disabled, including multiple file upload.

The framework also includes a libraries repository which pulls debug/optimized javascript from the google CDN:

HTML:
  1.  
  2. <l :script resource="prototype"/>
  3. <l :script resource="scriptaculous">
  4.  <l :param name="load" value="builder,effects"/>
  5. </l>
  6.  

This snippet of code would translate into this, if development is disabled:

HTML:
  1.  
  2. <script type="text/javascript"
  3. src="//ajax.googleapis.com/ajax/libs/prototype/1.6.0.2/prototype.js">
  4. </script>
  5. <script type="text/javascript"
  6. src="//ajax.googleapis.com/ajax/libs/scriptaculous/1.8.1/scriptaculous.js?load=builder,effects">
  7. </script>
  8.  

Or this if not:

HTML:
  1.  
  2. <script src="/js/prototype-1.6.0/prototype-1.6.0.2-shrinkvars.js"
  3. type="text/javascript"></script>
  4. <script type="text/javascript"
  5. src="//ajax.googleapis.com/ajax/libs/scriptaculous/1.8.1/scriptaculous.js?load=builder,effects">
  6. </script>
  7.  

More details about the framework are at the reference guide. Ignacio would be grateful for any feedback!

Posted by Dion Almaer at 10:28 am
1 Comment

+++--
3.8 rating from 16 votes

Wednesday, June 25th, 2008

SymbolicWeb: Ajax and Comet with Lisp

Category: Framework

No matter how much Paul Graham talks about his Web success, we don't hear too often about Lisp-powered Web applications.

SymbolicWeb is offering up a new type of framework to help change that.

SymbolicWeb aims to create a GUI framework similar to GTK+ and QT for Common Lisp. It differs in that it uses the browser to render the UI elements.

There are a slew of examples, such as this simple echo chat program:

LISP:
    ;;;; http://nostdal.org/ ;;;;

    (in-package #:sw)

    (defparameter *max-chat-pane-size* 100)

    (defapp chat-app (empty-page-app)
      ((input (mk-text-input))
       (chat-pane :allocation :class (mk-container nil))))

    (defuri chat-app "chat")

    (defmethod main ((chat-app chat-app))
      (with-slots (input chat-pane) chat-app
        (setf (on-enterpress-of input
                              :callback-data `((:input-value . ,(js-code-of (value-of input)))) ;; Include some data when the event fires.
                              :js-after (js-code-of (setf (value-of input) "")))                ;; Clear the input field after the event has been fired and sent.
              (lambda (&key input-value)
                (prepend (mk-span (escape-for-html input-value) :display "block")
                         chat-pane)
                ;; Don't let it grow too big; delete some chat history.
                (when (> (length (children-of chat-pane)) *max-chat-pane-size*)
                  (dolist (span (subseq (children-of chat-pane) *max-chat-pane-size*))
                    (remove span)))))
        (add-to *root*
                (mk-span (who (:p "Type something in and press enter. New content is added at the top.")))
                input
                chat-pane)))

Posted by Dion Almaer at 5:00 am
6 Comments

+++--
3.7 rating from 23 votes

Monday, June 9th, 2008

TileStack: HyperCard for the Web

Category: Framework

LtU pointed me to TileStack, the latest attempt to resurrect HyperCard and bring it back to the Web (they are closely related of course).

Running online there are going to be limitations about which stacks can be ported, which may reduce the usefulness and impact of this project, but maybe a standalone version will come later.

The system compiles Speak (the TileStack version of HyperTalk) to Javascript. If the result is not obfuscated, something I haven't verified, it may be possible to augment the output from TileStack with additional capabilities not supported or not yet implemented.

From the compatibility angle it is interesting to note that they renamed the language and seem to imply they are going to extend it beyond HyperTalk, without giving any specific guarantee about future compatibility. I'd suggest releasing the compiler that's as close to full HyperTalk compatibility as a separate product (or even, if they can bring themselves to do it, releasing it as open source).

What does Speak look like (remember, not Squeak!):

Speak is the name of the language that all TileStack's use to describe what should happen when someone interacts with a stack you've created. It is directly related to the HyperTalk language that was used by HyperCard for the same purpose.

It is in the same vein as the "kinda like English" languages like AppleScript, COBOL, BASIC, ...

set the name of card field 1 to "My Field"

go to the next tile

get the first word in field "First Name"

The team is working on being able to embed these Tiles anywhere on the Web (gadgets, etc).

Posted by Dion Almaer at 3:31 am
Comment here

++---
2.9 rating from 16 votes

Tuesday, April 22nd, 2008

Making application modules communicate with each other using Decoupling

Category: Component, Examples, Framework, JavaScript, Yahoo!

I've been talking about event driven application design in JavaScript in January last year and inspired Caridy Patiño to write his Bubbling Library based on these ideas.

Caridy now upped the ante a bit by talking about decoupling using the bubbling library over on the YUI blog.

In essence, his solution allows you to have custom events on application modules and listen to them independent of execution order or availability. Simply using custom events can get you in a pickle if you make yourself dependent on their order. With the decoupling solution proposed by Caridy this becomes one less issue to worry about.

Posted by Chris Heilmann at 5:17 pm
10 Comments

++++-
4.2 rating from 23 votes

Wednesday, April 9th, 2008

DOMAssistant 2.7 is Out, Strong Unicode Support and Enhanced Performance

Category: Framework, JavaScript

Now that DOMAssistant has a formal team behind it, the updates keep coming fast and furious. The team announced last night the release of DOMAssistant 2.7, with a host of new features and big improvements in CSS selector performance:

After a lot of hard work, we’re more pleased than ever to present the new version of DOMAssistant: faster, less code, better support and improved stability. And more features, of course.

While we have actually made the code file size smaller, at the same time we have added a number of useful features and improved CSS selector performance.

Along with several fixes, the team added a number of enhancements most notably strong support for Unicode and performance increases for Internet Explorer:

With this release, we wanted to target the world outside our English-speaking box, by adding Unicode support and a complete documentation in Chinese. When that was in place, improving CSS selector performance in Internet Explorer and adding well-needed and requested features was next on the bill.

Happily, we succeded as well as exceeded our goals!"

The newest features include:

  • Unicode support added, implying support for basically any source document language.
  • Method cssSelect added to the Core module, to allow CSS selections of an object reference's children.
  • Method ajax added for making more customized AJAX calls, with more options.
  • Method setStyle added to the CSS module.
  • Method setErrorHandling added to the DOMLoad module.
  • Method first added to get the first of any matches.
  • Added support for attribute selectors E[att|=val], E[att~=val], and pseudo-class :lang.
  • Added support for multiple pseudo-classes, eg. tr:nth-child(odd):not([id]).
  • Added support for nested pseudo-classes within :not, eg. tr:not(:first-of-type).
  • Added full compliance for the an+b expression in :nth-child and :nth-of-type, including negative a.
  • Significant CSS selector performance improvement in Internet Explorer.
  • Updated documentation in Chinese.

DOMAssistant 2.7 is available for download via SVN or HTTP and is released via MIT license.

Posted by Rey Bango at 9:03 am
1 Comment

+++--
3.4 rating from 12 votes

Wednesday, March 19th, 2008

Echo 3 releases client side component model

Category: Framework, Java, JavaScript

Echo has been known as a Java server side component framework, but with the release of Echo 3, they have added a way to build component applications using JavaScript:

Client-side Echo applications do not require an application server, and can also be run entirely offline.

With Echo3, the formerly server-side-only component framework has been recreated in client-side JavaScript. This was not a direct “port”, but rather a re-imagining of the framework with the ideals of JavaScript development in mind. For example, the client-side version of the framework takes advantage of JavaScript's object and array literal syntaxes to create a capability called "hierarchal component construction", where an entire hierarchy of components can be created in a single call. Such code winds up being extremely readable, as, when naturally indented, it resembles the component tree.

Core.js framework

A low-level framework, called “Core.js” was created to ease development of object-oriented and event-driven code in JavaScript. Core.js provides an inheritance model for building JavaScript objects using class-based (rather than prototype-based) inheritance. It additionally offers the capability to specify abstract classes and methods, and features “pseudo-private variables” where a class can reserve internal method/field names that cannot be overridden by subclasses. The framework includ