The Isomorphic Blog

The Ajax Renaissance

In his blog “The Clever Monkey“, Curl’s VP of Developer Relations, Richard Monson-Haefel, writes about a new feature coming in IE8, stunningly, citing new Ajax features in IE as signs of the “End of Ajax”.

Richard does not seem to be aware that the XMLHttpRequest API – sometimes called the “X” in Ajax – was a Microsoft proprietary extension first.

It is now an international standard present in all major browsers.

Proprietary innovations that have value get copied and become standards.   It is precisely this kind of innovation – innovation by multiple vendors trying to leapfrog each other – that moves standards forward quickly.

You only need to look as far as, for example, the Surfin Safari blog to understand how this works.  In the past months, major new features for Ajax – including CSS-based image transformations, CSS-based animations, and CSS-based reflections – have been added to Safari and simultaneously put forward as drafts for future international CSS standards.  At the same time, even though Firefox 3.0 provided gigantic performance improvements for JavaScript and Ajax in general, Safari 3.1.1 shipped with a yet faster JavaScript engine, with more improvements on the horizon.

So of course the IE team starts announcing IE8 features to build buzz.  Look at what’s at stake – the Mozilla Foundation had revenues of $56.8 million in 2006 attributed to search royalties alone(source: Wikipedia).  Based on market share hovering around 15% throughout the year, that makes every percentage point of market share worth around $3.8 million per year to the Mozilla Foundation.  It could be argued that the same market share is worth even more to Apple or to Microsoft.

All of these browser vendors understand that the best way to gain market share is to provide features that are compelling to developers and which provide a path to future standardization.  Before Microsoft dominated the browser market, that was exactly what was happening, and that’s where JavaScript (you know – the “J” in Ajax), HTML, CSS and the DOM API came from.  Now that there is renewed competition for browser market share, the innovation is accelerating again.

This is the exact opposite of the “End of Ajax”. This is the Ajax Renaissance. 

SmartClient 7.0

This is a sneak peak at some of the features planned for SmartClient 7.0.

FilterBuilder / AdvancedCriteria

The FilterBuilder is a form that allows the user to input advanced search criteria, including operators on field values such as “less than”, and sub-clauses using “AND” and “OR” operators.  See screenshot below:

Filter Builder Component

As you can guess, the green plus icons allow the user to add new expressions and the button with a “+()” allows sub-clauses to be created, grouped by a logical operator.  As shown, the user has set up criteria that will find South American countries with some kind of federal government, above a certain threshold of either population or gdp.

Part of what’s cool here is how neatly this component fits into the existing DataSource system.  This is the actual code to create a FilterBuilder:

isc.FilterBuilder.create({ dataSource:”countryDS” });

The DataSource tells us what all the fields are, what all the field types are, and can optionally define what operators are allowed on which fields.  The FilterBuilder is type-sensitive, so for example, for a field of type:”date”, the FilterBuilder will show a date picker automatically.

All of this is highly customizable and extensible – you can even define new operators, and define custom FormItems allowing users to pick values to compare against – eg, if you define a “zipCode” type, maybe the picker opens a Google map.

The DataSource subsystem provides the ability to actually execute the search, client-side or server-side as necessary, similar to existing simple criteria searches.

This is another core ListGrid feature that, like grouping, frozen columns, inline filtering, charting, etc, can be enabled for any grid by just setting a flag.  The overall thrust here is to give end users the level of control over the data that ordinarily only the developers have access to.  That way the developers take more vacations :)


This is a component that renders objects in a grid of tiles, frequently found in online stores, photo sharing apps, directory sites and the like.  It has a rich set of UI interactions: rollover, selection (including shift- and ctrl-select), hoop selection, etc.  Animations and drag and drop are planned as well.

TileList Component

But again what really shines is the databinding system – TileLists are a DataBoundComponent, so they use a DataSource and ResultSet just like a ListGrid.  As with a ListGrid, you get a reasonable, type-sensitive default view by just binding to a DataSource, for example, fields of type “image” will actually show the image, as in the view above.  Likewise, because the TileList uses a ResultSet, it supports the full set of sorting, filtering, data paging, and other data-related features supported by a ListGrid, with the same APIs.

The TileList also has incremental rendering support, so it’s safe for use with very very large datasets.

The upshot is, because of the uniformity in how a TileList is configured and accesses data, a menu item on a ListGrid for “Show as tiles” makes sense, and we’ll have a ListGrid flag that enables this with no further configuration.

.. these are quite substantial features, but they are just a part of what’s planned in 7.0.  Stay tuned for more – we plan to make beta versions available via this blog for those who like to live on the edge.



So we’ve started a blog.

The idea is communicate more with our customers, people evaluating or otherwise investigating SmartClient, and basically, anyone with insight and intelligent opinions to share :)

In this blog you will find:

  • roadmap info about the future of SmartClient and what to expect in the next few versions
  • stories and anecdotes about the use of SmartClient and Ajax in general
  • tips and tricks for working with SmartClient
  • commentary from Isomorphicants on industry trends and technology
  • occasional early access releases or live demos

Feedback is welcome.


Page 10 of 10« First...«678910