Wednesday, December 10, 2008

The Cloud Is Angry and Other Lessons From Gartner

I attended the Gartner Application Development Conference this week and drank from the proverbial firehouse as Gartner analysts presented their vision for cloud computing

Anthony Bradley, the Web 2.0 analyst for Gartner, beat the drum for front end tools (mashup builders) to complement back end SOA systems. His take was "mashups take the benefits of SOA and make them visible to users - mashups are the face of SOA."

Mark Driver, the open source software analyst for Gartner, said that cloud computing is early in its maturity cycle. He said, "if the cloud were a child, it would be an angry two year old. The challenge for the industry now is how to make it through the terrible twos."

Mark also pointed out some big benefits for IT with cloud computing. "The cloud enables rapid application maintenance - iterating application functionality on a daily basis." The apps can change as quickly as the business situation changes, making IT much more of a real partner in business change rather than an impediment to business change.

Mark introduced the idea of a cloud development platform or platform as a service (PaaS), noting that in PaaS, the developer should never encounter the concept of a server. Instead, the platform abstracts all deployment complexity from the developer, making it ideal for business unit developers who don't have deployment resources readily at hand.

According to Gartner, the important criteria for a cloud development platform include:
  • Interoperability: how well does the platform integrate with other web assets like open id and google maps?
  • Collaboration: how well does the platform support source code control and social programming (Facebook meets SVN)
  • RIA & mobile clients: cross browser and cross smart-phone support. According to Mark, reach wins over richness - supporting more browsers is more important than supporting more widgets.
  • Legacy: ability to integrate with enterprise data, security and web services
  • Performance: ability to scale significantly with no additional effort/programming
  • Longevity: the market momentum of the platform vendor - will they be around in 3 years? The winner will be less about the raw technology and more about the quality of partners and customers the vendor has attracted.
This is a particularly interesting list for us at WaveMaker, as we just released the WaveMaker cloud development platform that does quite well against Gartner's list. In particular, WaveMaker scores highly interoperability, both of component and of applications. WaveMaker is the first cloud development platform to offer portability between the cloud and the data center.

Gartner believes that the market for cloud development tools is very similar to the 4GL market of the early 90s. They see many innovative vendors today offering unique/proprietary solutions, thinning out over the next three years to a handful of winners. Naturally we are doing everything we can to make sure that WaveMaker is one of those winners!

Thursday, October 9, 2008

Learn About Ext From The Master - Hands On Ext, Oct 16 @ 12PST

The next Visual Ajax User Group Meeting is entitled "Hands-On Ext" featuring Aaron Conran, Senior Software Architect and Ext Services Team Leader. Hands-On Ext is a fast-paced session in which we will explore how to build an Ext application in less than an hour. This session demonstrates how to get started using Ext JS and how quickly you can put together a simple application from scratch. Learn how to utilize Ext's high-level UI widgets like GridPanel, TabPanel and FormPanel instead of re-inventing the wheel. REGISTER HERE

Thursday, September 18, 2008

Kevin Hakman Presenting today, 9/18 at 12PST

Kevin Hakman, Director of Product Marketing, Aptana, will be presenting at the monthly Visual Ajax user group meeting on The End-to-End Open Web: Combining Cloud Computing and Open Source App Engines. Aptana has been a leader in making serious JavaScript development possible both on the client and on the server with their Jaxer product. This should be a great session!

If you want to join via webinar or in person, please send an email to:

As always, a write-up of the presentation will be available on afterwards.

Wednesday, September 10, 2008

Ajax Experience Conference in Boston 9/29 - 10/1

The Ajax Experience (TAE) will be in Boston, Massachusetts from September 29 - October 1. The conference agenda includes 40+ breakout sessions, keynotes, tutorials, tech demos, lightening rounds and excellent networking opportunities. TAE was created by in 2006 as the ultimate learning destination for Ajax/RIA developers.

  • Evaluate open source and vendor solutions in an unbiased community environment
  • Dive deep into frameworks and testing tools that make development easier
  • Get developers and designers working together and producing useable ideas
  • Balance Web 2.0 design and features with the need for speed and scalability
  • See how to make JSON, Mashups and SOA work for you
  • Make the case for Ajax and RIAs in your enterprise

View the conference agenda at-a-glance here. As a member of, use the code 'VisualAjax' to save an extra $100 off the registration fee. Reserve your spot by clicking here.

Thursday, August 21, 2008

WaveMaker in Top 10 Apple Downloads

WaveMaker was selected as a Staff Pick for the Apple download site, and broke into the top 10 Apple downloads today, edging out Google Earth for the tenth slot!

WaveMaker 4 features a Mac installer and the WaveMaker Ajax Studio runs best in the Safari browser (of course, to be fair, almost everything that runs in a browser runs best in Safari). 

WaveMaker's visual studio lowers the learning curve for building Ajax apps and greatly increases productivity over traditional hand-coded Javascript web clients.

WaveMaker uses a Model-View-Controller approach to building Ajax web applications, making it an ideal tool for developers who are familiar with Apple's xCode development tools (or any other visual development tool for that matter).

WaveMaker was also written up on the MacNN web site as a one stop shop for developing web applications. MacNN also particularly taken by how WaveMaker democratizes the development of web applications:
The folks at WaveMaker think big, calling their Visual Ajax Studio 4.0 web app development tool "a fundamental breakthrough" -- and they may just be right. In a demonstration for MacNN it took about three minutes to build a simple database web app -- something that traditionally takes a team of developers to manage the complex weaving of web and server functions. This could be especially good news for the growing number of Mac Developers, since WaveMaker is browser-based.

Tuesday, August 12, 2008


I recently read a good article on how Apple is fighting the drumbeat of proprietary browser plugins like Flash and Silverlight. Daniel Eran Dilger wrote a good article on how Apple's Sproutcore toolkit for JavaScript provides an alternative to flash for building rich internet applications. You can find out more about Sproutcore here. Daniel says:

Over the last year, I’ve outlined Apple’s efforts to starve Adobe’s Flash and AIR (and by extension, Microsoft’s me-too Flash plugin called Silverlight), at a time when pundits have insisted that Flash was a vital missing element on the iPhone and that Apple could/should/would be scrambling to port Flash to it. It might be a surprise to find that Apple’s air supply attack on Flash and its interest in dusting Windows with Cocoa are actually related.

Wednesday, August 6, 2008

What Google Can Teach Ajax Developers

With Google Gadgets, Google has arguably pushed Ajax scalability and testing harder than any other single vendor. But that was only the beginning. Adam Sah, architect of Google Gadgets, has been experimenting with using Gadgets to display ads. In June, 2008, he gave a talk on this work for the Visual Ajax User Group.

Google Gadgets are XML files that run inside an iframe on your web page, complete with embedded Javascript. The XML file itself is divided into 3 parts: module preferences, user preferences and content (html with inline css and javascript). SEOish has a good Google Gadgets tutorial for Ajax Developers.

The next logical step for Google is inserting gadgets into Google's ad infrastructure - introducing rich content ads, such as ads that show pictures of things for sale. Rich media also allows advertisers to combine branding with lead generation, giving them the best of banner ads and click-through ads.

Google gadgets themselves represent an interesting proving ground for Ajax technology. Incorporating Google Gadgets into adsense takes Ajax to a whole new level. Adam described "unpausing" an Ajax ad without the proper infrastructure in place as "a very fast way to do a denial of service attack on yourself."

Here are some of the lessons learned from working in the high volume world of Google Gadget ads:

  1. Relevancy trumps latency. Rich ad widgets can make multiple Ajax calls and take ten times longer to load (sometimes several seconds), but get a much higher click through rate. In a nutshell, this is why Web 2.0/Rich Internet Apps/Ajax are taking over from the old internet - people are willing to wait for content that is more relevant and interactive.
  2. Context is difficult. Because syndicated ads live in their own isolated iframes, it is hard to create context-aware ads. Of course, having a good WYSIWYG Ajax tool to build iframe applications could help!
  3. Scalability is a challenge. Every ad impression hits a database, so going live with an Ajax ad on a high volume site creates a huge amount of database traffic. This is even worse for ads which have a number of images. On the other hand, the size limit for a Google Gadget is 50K, which at least sets an upper limit on the damage you can do.
  4. Testing is difficult. When ads are created on the fly, it is literally impossible to test all combinations of content, browsers and interaction.

With Google Gadgets, a developer can create a Google ad that includes images and interactivity. The ad publisher gets to define what a "click" means within their gadget. Their incentive to cheat is low because if they don't have a way to measure clicks, they will never win a bid!

Adam also gave a good perspective on how Google fights the proprietary web (what Alex Russell calls the unweb) - with Gadgets and standards! People choose proprietary solutions when good open alternatives are not available. Google is trying to make it so easy and cheap to work with open standards that proprietary standards lose their appeal.

Thursday, July 24, 2008

Visualizing Web Services: WaveMaker and Xignite

Seth Godin, the marketing guru, defines a mashup as a distinct way of spreading ideas. In particular, Web 2.0 mashups allow developers to combine interesting data and then visualize that data through a web application. In practice, a mashup requires a data source and a web visualization platform.

WaveMaker and Xignite announced their own bit of mashup magic today.

Xignite provides financial data as a web service. Real-time financial data that would otherwise cost a minimum of $50K to access through Reuters or Bloomberg is available at a fraction of that cost through Xignite. These services can include foreign exchange pricing, commodities pricing and real time stock quotes.

The problem is that it takes a web application platform to call the Xignite web service, marshall the resulting data and display it in a web page. That's where WaveMaker comes in. With Wavemaker, a web developer can create a ticker widget that calls Xignite services in less than 5 minutes.

Click here to see the Exignite/WaveMaker ticker example. Click here for more Web 2.0 definitions.

Wednesday, July 16, 2008

Ajax Master Class Webinar Series

While there are many entry level tutorials on Ajax (and even more definitions of Ajax), there are relatively few advanced training classes for Ajax in general and Dojo in particular. Over the next 3 months, WaveMaker will offer a series of advanced courses on Dojo development.

Ajax File Upload/Download Master Tutorial
29 July 2008, 11am PT
Matt Small, Senior Software Engineer, WaveMaker

File Upload and Download in Ajax applications can be tricky. This tutorial provides introduction to upload and download widget configuration and their backing Java services. Advanced topics include writing uploaded files to a database and serving files directly from database content.

Debugging Ajax Applications With Firebug Master Tutorial
26 August 2008, 11am PT
Ed Callahan, Director of Technical Services, WaveMaker

Where there is development, there is debugging. In this session, we will discuss techniques for debugging issues commonly encountered while developing Ajax web-apps. We will use the Firebug add-on to Firefox to debug client side errors. We will also discuss the logging features available in the WaveMaker framework to diagnose server side issues.

Dojo Data Grid Master Tutorial23 September 2008, 11am PT
Steve Orvell, Senior Architect, WaveMaker
A grid is a fantastic way to view complex data at a glance. Whether it's data from a database, web service, or java service, WaveMaker provides a simple way to produce complex grids quickly. We'll review how to setup a basic grid and then dive into some advanced ways to manipulate the grid widget in WaveMaker.

Dojo Getting Greater Grids

The Ajaxian has a good posting on the new Dojo Grid Widget. The Ajaxian post points to a very detailed Dojo Grid tutorial from the SitePen Blog that goes into gory detail about how to work with the new grid widget in code.

At WaveMaker, we have found that creating a drag and drop interface for the grid widget is by far the most difficult task in building a visual tool for web application development. Having a more powerful grid widget makes our task easier!

Friday, July 11, 2008

Buzzwords 2.0: What is Web 2.0? What is RIA? What is Ajax?

The much-hyped but poorly defined terms Web 2.0, Rich Internet Application (RIA) and Ajax are best understood when they are defined together.

Buzzwords represent job security for entrepreneurs like me who would be practically unemployable were it not for our secret knowledge of the true meaning of words like Web 2.0. However, even I must admit that these Buzzwords 2.0 get in the way of clear communication.

In addition, while there are many standalone definitions of terms like Web 2.0, it is much easier to understand these buzzwords mean by considering them together. With that in mind, here are my definitions of Web 2.0, Rich Internet Application and Ajax, complete with helpful graphics:
  • Web 2.0 represents a market shift in consumer attention from expert-generated content (Yahoo) to user-generated content (Google)
  • Rich Internet Applications represents a requirements shift for more interactive, PC-like web sites to simplify consumer creation of content (Blogger, MySpace)
  • Ajax is an architectural shift to support RIA requirements
What is Web 2.0, What is RIA, What is Ajax

Definition of Web 2.0 - Shift In Consumer Attention

Consumer eyeballs still rule the web. The huge power shift over the last 5 years has been from expert-driven content (which could be created using expert tools like Adobe Dreamweaver) to user-driven content (which requires web based tools that are easy to use). The shift in consumer attention is also driving a shift in business focus as corporations look at ways to engage more effectively with their customers and employees.

Definition of Rich Internet Application - Shift in Web Requirements

In order for more people to participate in creating content for the Internet, the content creation tools have to be both simpler and more interactive. Rich Internet Applications seek to erase the difference in user experience between browser-based applications (Gmail) and traditional client/server applications (Outlook). A quick comparison of Gmail versus Outlook shows that RIAs have a big usability gap, but the Internet brings the offsetting benefit of dramatically simpler application distribution.

Definition of Ajax - Shift in Web Architecture

Ajax is an architecture which makes the browser smarter and more interactive by running Javascript programs on the client. Don't tell anyone, but the old name for putting logic on the client was fat client programming. Everything old is new again and it turns out the only way to make an interactive client is to do more processing in the browser.

The following diagram shows the fundamental changes between the Web 1.0 architecture (circa 2000) and the Ajax architecture.

What is Web 2.0, What is RIA, What is Ajax

Where is all of this leading?

Web 2.0 is driving new application requirements and in turn creating a demand for new development tools that can meet those application requirements. Building increasingly visual and interactive web applications requires a WYSIWYG Ajax tool - something like a Microsoft Access for the Web. Flex and Silverlight, Adobe and Microsoft are providing proprietary tools for building RIA applications.

For an example of an open-source tool for building RIA applications based on Spring, Hibernate and Dojo, check out WaveMaker . Download Wavemaker to see what a visual Ajax tool looks like! Wikipedia also lists a number of other Ajax frameworks for building RIA applications.

A number of others have gone before me in defining these terms individually. Jonathan Schwartz recently pointed out that Java has always had RIA capabilities (but he also admits they didn't work very well until recently). Here are my personal favorites definitions:

Tuesday, June 17, 2008

Cool PHP code generator for Ajax

AjaxCRUD is an open-source PHP API created by Sean Dempsey which allows you to connect to a mySQL database and easily perform the necessary CRUD operations (create, read, update, & delete rows). The web site doesn't say what Ajax library they are using, but looks like an interesting approach.

Monday, June 16, 2008

Webinar - Google Gadgets for Fun and Profit - 6/19 at 12PST

Want to know where Google is going with their popular Gadgets project? Join the Visual Ajax User Group webinar Thursday, June 19 at 12 PST.

This month's meeting will feature Adam Sah, Architect, Google Gadgets, on Ajax-enabled Widgets/Gadgets and Ads. Adam has been the founder and technical visionary behind 4 successful startups.

Adam will give you the inside scoop on how to develop new Google gadgets, use gadgets in your Ajax applications and demystify Google ads via gadgets.

Register for this webinar!

If you are in San Francisco, you can also register to attend in person by emailing

If you missed our past meetings, here are write-ups:

Tuesday, June 10, 2008

Aptana Enters The Cloud

Ajaxian has a good first look at the Aptana Cloud product. The nifty feature here is the ability to deploy an application into a cloud computing environment as easily as publishing it locally. From Ajaxian:
When you click on the project under the cloud menu you are taken through a (very easy to use) wizard for configuration. This runs your through a few steps, setting up a site name, picking a payment plan (the beta is free), payment details and so on.
With some luck, we may be able to lure Kevin Hakman to present the Aptana Cloud to the Visual Ajax user group!

[UPDATE: Kevin will be talking to the Visual Ajax User Group on September 18!]

Friday, May 2, 2008

The dangers of the proprietary web

ZDNet has a good article describing a talk by Tristan Nitot of Mozilla, warning that:
companies building websites should beware of proprietary rich-media technologies like Adobe's Flash and Microsoft's Silverlight.

According to Tristan

the upcoming revision of the HTML specification would make it unnecessary to use proprietary technology. Nitot was speaking on the subject of "the dangers of the proprietary web". He described the nature of the web at the moment as open, but suggested that "proprietary solutions running on top of the web are trying to take over". Referring specifically to Flash and Silverlight, he said that "people depend on the vendor to provide them with the runtime.

This all may be true, but as long as Flash is the only way to get multi-media into my web app, the proprietary web will continue to gain ground over the laudable but less capable "Ajax" web.

Tuesday, April 29, 2008

The Case For WYSIWYG Ajax Tools

[This article is based on a talk by Scott Miles, WaveMaker architect and module owner for Dojo Grid, and Steve Orvell, WaveMaker engineer and core committer for Dojo, that they gave at the Visual Ajax User Group]

Ajax developers expect too little of their tools! Why do we put up with endless code/debug cycles with our favorite Ajax library just because there is no way to visualize a UI while you are developing it?

Imagine life without Firebug. Now estimate the amount of time you spend in Firebug just trying to figure out why a particular widget didn’t render the way you wanted it too. A WYSIWYG Ajax editor takes away a great deal of needless widget layout pain.

Just as importantly, a WYSIWYG Ajax editor provides a much easier on-ramp to learning Ajax programming, opening up a much larger market opportunity. Today, the perceived difficulty of learning Ajax can drive developers often choose proprietary solutions by default.

Until it is easy to build Ajax user interfaces, the ability to build rich internet applications will be restricted to only the most skilled developers. Broad adoption of Ajax requires easy-to-use, WYSIWYG Ajax tools.

Why Visualize Your UI?

Why do you want to visualize your UI while you are building it? As the client gets thicker, the interactions get more complex. As interactions get richer, the potential for wasting a lot of time coding grows. To torture a metaphor: in Ajax, a picture of your UI can save a thousand lines of code.

Alex Russell of Sitepen talked about saving ourselves from the unweb at the Visual Ajax User Group on the value of Semantic HTML for building Ajax apps. From our perspective, the semantic web may be coming, but it ain’t here yet (look here for more on the open web). In particular, HTML parsing and rendering can be slow. While other visual design tools may take different paths, the particular approach that WaveMaker chose was to use JSON (Javascript Object Notation) instead HTML/XML.

How a WYSYWYG Ajax editor works

A WYSYWYG Ajax editor is meant to make Ajax widget layout easy, without hamstringing the developer. The general things that any visual Ajax editor needs to be able to do include:

  1. Ajax page designer: the page designer includes palettes of widgets, a WYSIWYS page editor, and property inspectors to change widget properties.

  2. Drag and drop: developers can move widgets from the palette onto the page designer.

  3. Visual feedback loop: developers can see how their page will look and change widgets on the fly to see the effect on the design (e.g., sizing, positioning).

  4. Generate Ajax code: the Ajax editor generates the appropriate css, html and JavaScript to implement the design at runtime.

  5. Import/export widgets: there is a straightforward way to create new widgets and import them into the Ajax editor to create a robust ecosystem of 3rd party widgets.

Rules for making WYSYWYG-able Widgets

Ideally, a WYSYWYG editor should be widget agnostic – it should be able to support several different Ajax widget libraries. More importantly, people who build widgets should design the widgets up front for visual tool-ability. Good widget design can reduce or even eliminate the back-end coding needed to bring a widget into a visual Ajax tool.

WaveMaker is a visual Ajax designer that can host a variety of toolkits and widgets. Our experience developing WaveMaker has enabled us to crystallize seven widget design principles that simplify the task of hosting the widgets in a visual design tool:

  • Portability is critical: no matter how good a tool is, developers need the flexibility to switch tools. If the output of a WYSIWYG Ajax editor can’t be edited in vi, then the proprietary lock-in may outweigh the tool’s short-term benefits. Similarly, a widget that introduces its own markup language will require its own proprietary tools (think Silverlight).

  • Performance counts: an Ajax editor needs to produce Ajax apps that have acceptable load times and responsiveness, making it easy, for example, to produce minified JavaScript.

  • Well defined dependencies: make it easy for the tool to discover and incorporate images, css and other libraries required by a widget.

  • Limit create only functionality: a WYSIWYG tool need to be able to change properties like sizing and positioning dynamically, not just at the time of widget creation. Having to recreate the object every time a property changes is inefficient.

  • Straightforward APIs: widgets should follow an API naming convention (e.g., for getting and setting attributes) that simplifies exposing properties through a visual tool.

  • Automatic re-rendering: Widgets should also be responsible for updating their visual representation when their properties change. One good way to do this is via property setter methods.

  • Make it easy to expose events: a naming convention where all event methods start with onFoo makes it easier for a tool to be smart about what events a widget can respond to and then expose them in a straightforward way.

A good example of a WYSYWYG-able Widget is FCKEdit. This is a heavy-weight widget that is completely self-contained and comes with an Ajax-friendly JavaScript integration technique. On the other hand, FCKEditor does not expose resizing hooks (we had to figure that part out on our own).

Dojo Dijits contains a whole library of WYSYWYG-able Widgets. A visual Ajax tool like Wavemaker can easily wrap Dojo widgets with Javascript “meta-data” descriptors that allows the studio to create generalized property editors. The same process can be used to make other Ajax widget libraries available within studio, such as Google Gadgets and Ext.

Tooling the Dojo grid

The trick in tooling a complex widget is to determine what behaviors to tool. The goal is to provide the right subset of features through the tool without preventing the developer from going in afterwards and creating what they need.

For example, the Dojo grid is tremendously capable. Not all these capabilities are accessible through WaveMaker, such as fixed columns, combined cells and subrows. Think about all the things you can do with Excel and how long it took for Excel to get it’s grid tooling right. In the same way, WaveMaker is exposing a subset of Dojo grid features today, and will increase the richness of those capabilities over time.

Options for representing the Dojo grid data included raw javascript, table markup and json.

An equally difficult challenge is deciding what code to generate to implement a given Dojo grid definition. In general, there are three options:

  1. Semantic HTML: generate HTML that includes rich Dojo grid semantics

  2. Raw Javascript: chuck HTML and define the grid in Javascript

  3. JSON: uses an object notation instead of semantic HTML to speed parsing

The following three sections give examples of these different approaches

Semantic HTML Markup definition for a Dojo grid

The following example comes from the Dojo Nightly builds grid tests. It shows a way to use “enriched” HTML to define a Dojo Grid (a la Alex Russell). The really cool thing is that this code runs even if JavaScrip is turned off in the browser.

If you already know how to code html tables, this is an elegant approach. However, its elegance and readability is offset by the performance hit the application takes in parsing the HTML.

<table dojoType="dojox.grid.Grid"
query="{ Title: '*' }"
style="width: 800px; height: 300px;">
<th width="300px" field="Title">Title</th>
<th width="5em">Year</th>
<th colspan="2">Producer</th>

Raw Javascript definition for a Dojo grid

The following example shows setting up a Dojo grid using raw JavaScript. Although JavaScript is powerful and expressive, this essentially junks sSemantic HTML concept in favor of just getting ‘er done. is, however, confusing and difficult to read.

<script type="text/javascript">
// a grid view is a group of columns
var view1 = {
cells: [[
{name: 'Column 0'}, {name: 'Column 1', width: "150px"},
{name: 'Column 8', field: 3, colSpan: 2}

Json definition for a Dojo grid:

Json (JavaScript Object Notation) represents a third way to represent grids. To see this in action, look at the widget source tab in the WaveMaker page designer. The main benefit is that it is readable and plugs easily into a visual Ajax tool JSON provides a highly readable, name/value pair approach to defining widget parameters. Best of all, it provides a format for widgets that parses and renders quickly and enables easy data interchange between the visual studio, the browser and the application server.

dataGrid1: ["turbo.DataGrid", {}, {}, {
column: ["turbo.DataGridColumn",
{caption: "Name", columnWidth: "50px"}, {},
column1: ["turbo.DataGridColumn",
{caption: "Addr", columnWidth: "100px", index: 1}, {},


Until there are visual tools that simplify the task of building Ajax user interfaces, the ability to create rich internet applications will be restricted to only the most skilled developers. Broad adoption of Ajax requires easy-to-use, WYSIWYG Ajax tools. WaveMaker is an example of an open source development platform that includes a WYSIWYG Ajax editor. Try it out and let us know what you think at

Monday, April 14, 2008

Visual Ajax Webinar Thursday, April 17 at 12 PST

The next Visual Ajax User Group webinar and meeting will be next Thursday, April 17 at 12 PST. The speakers will be Scott Miles and Steve Orvell. Scott is the module owner for the Dojo Grid and Steve is a core contributor for the Dojo Grid. They will be talking about "Ajax Grids - Taming and Tooling The Widget Beast."

To attend the webinar, send an email to

Our last meeting was a lively discussion led by Alex Russell on how to overcome the structural challenges of Ajax entitled, Saving Ourselves from the Unweb.

If you wish to attend in person, the meeting will be at the offices of WaveMaker Software, 301 Howard Street, 22nd Floor

Our next two meeting will feature Ajax experts from two ends of the mashup spectrum:
Please let us know if there is a topic or speaker you would like to see in an upcoming meeting by sending email to For more information on the Visual Ajax User Group, click here.

Thursday, April 3, 2008

Web 2.0 Rock Star Competition At MySQL Conference

MySQL Conference & Expo 2008 If you are planning on attending the MySQL conference in Santa Clara next week, you should definitely check out the BoF session Tuesday night 4/15 @ 8:30 Ballroom E, titled "Be a Web 2.0 Rock Star"

Anand Pandey of MySQL will be conducting a hands-on training session on the open source WaveMaker visual Ajax studio.

For added excitement, there will also be a speed Web 2.0 code-a-thon with judging by Jay Pipes and cool prizes (not to mention free beer and roving Elvis impersonators)

Release your inner geek at this festive Web 2.0 code-athon!
  • For newbies, get an up-close look at the latest Ajax and Web 2.0 technologies.
  • For rock stars, prove that you've got what it takes to be a Web 2.0 rock star!
This BoF mixes hands on tutorials for Ajax and Web 2.0 newbies with the action and excitement of a white knuckle coding competition.

Rules for the Web 2.0 Rock Star competition:
  1. Start with a blank screen and your favorite Web 2.0 tools
  2. Build a cool Web 2.0/MySQL app in 30 minutes or less
  3. There is no rule 3
Wanna Be Elvis for an Evening? Here's How
Our panel of distinguished gearheads will award prizes in 5 categories:
  1. Fastest Web 2.0 in the West - most functionality in the shortest time
  2. Coolest Web 2.0 app - most likely to appear on TechCrunch
  3. Funkiest Ajax widget - most strangely fascinating UI
  4. Gnarliest database call - unleash the beast inside of every MySQL server!
  5. Geekiest Ajax app - most Knuth-worthy implementation

Wednesday, April 2, 2008

7 Reasons Not To Use Flex

Thomas Hansen of Gaia has an entertaining anti-Flex rant here (with even more entertaining comments featuring an array of Adobe Flex stooges all commenting as Anonymous).

I'm not sure I agree with all his points (see my State of the RIA market post or Really Idiotic Approches to RIA), but sometimes it's just fun to stir the pot. Here are his top 7 reasons not to use Flex:
  1. Adobe Flex effectively don't care about any of the web standards we have spent the last 4 decades building
  2. Adobe Flex is a BINARY RIA Framework
  3. Adobe Flex will effectively render your website invisible to Search Engines
  4. You don't know the technology needed to use Adobe Flex
  5. You don't know who'll win
  6. Adobe Flex is immature technology
  7. Adobe Flex is lock-in technology

As the commenters very ably point out, however, Flex is beautiful, cross-browser and works today. Us Ajax folks have got some catchin' up to do!

Friday, March 28, 2008

Saving Ourselves From the Unweb

[This article is based on a talk by Alex Russell, the co-founder of Dojo (and Director of R&D at Sitepen), that he gave at the Visual Ajax User Group, with added editorializing and pontification by Chris Keene, CEO of WaveMaker. You can safely assume that anything insightful and true came from Alex's talk and anything smarmy and argumentative is part of Chris' "value add"]

The original use case for the web - researchers working with static documents - doesn't bear much resemblance to the multi-media, consumer-oriented web we have today. The HTML web browser infrastructure that got us this far won't get us the rest of the way.

The web has always been about the worst platform for any particular task (unless your task is to display a poorly formatted doctoral thesis). Ubiquity, searchability and combinability have always made up for the web's many weaknesses.

We are reaching a fork in the road, however, where the web's traditional strengths may be dramatically eroded by a "hollowing out" of the HTML semantics. There are basically two responses to this challenge of evolving the web. They are:
  1. Evolve HTML = Better Semantics, Smarter Clients. Evolve the existing web by pushing browser vendors to add semantic HTML capabilities that support next generation web apps. This allows for the web to remain a collaborative community that preserves the advantages which the web has traditionally enjoyed even sa it transitions to handle new tasks.
  2. Hollow out HTML = the "Un-web". Abandon HTML and replace it with a powerful but proprietary alternative like Adobe Flex or Microsoft Silverlight. Let's call this the Un-web, as it carves out walled gardens which will curtail the web's traditional openness.
The web needs to evolve to support building the Rich Internet Applications that people want to use. At the same time, web tools need to evolve to be able to handle the increasing complexity of building these apps.

Example of Semantic HTML - The Dojo Grid

Web development and customer expectations have far outstripped the table management capabilities of HTML. Why do we expect so little from HTML? Is it too much to ask for capabilities like locked columns and subcolumn formatting? Is the only solution to improve the grid to break HTML by going to a proprietary solution like Silverlight?

A great example of how to evolve the web through semantic HTML is the Dojo grid, which was contributed to the Dojo project by WaveMaker engineers Scott Miles and Steve Orvell.

Here is a screenshot of a Dojo Grid:

With Dojo 1.1, we can use HTML that has additional semantics "layered on" to create a grid like this. Note that it looks a lot like normal HTML beefed up with extra attributes to encode the semantics that allow us to "say what we mean":

JSID=" csvStore" URL=" names.csv" >

<TABLE DOJOTYPE=" dojox.grid.Grid"
STORE=" csvStore" QUERY=" { Title: '*' }" CLIENTSORT=" true"
STYLE=" width: 800px; height: 300px;" >
<TH WIDTH=" 300px" FIELD=" lastName" > Last</TH>
<TH FIELD=" firstName" > First</TH>

The Dojo grid also showcases a core strength of Dojo - it's disciplined architectural approach. The Dojo architecture focuses on extending HTML semantics in an layered way that still give us room for HTML to evolve to meet usage like this half-way in the future (e.g., with the HTML 5 tag). Note that we use a non-semantic tag (a span) to denote something that exposes a fundamentally new capability (data stores), but extend existing HTML semantics for grid configuration.

The result is a very clean layering of Dojo semantics on top of vanilla HTML and css. For example, even with Javascript turned off in the browser, you can still tell what the Dojo grid is supposed to be doing. We can even supply the data via an HTML table in order to get full downward-compatibility.

Replacing HTML with Javascript is enticing but dangerous. Dojo uses Javascript to extend HTML semantically rather than throwing it away. Adding semantics to HTML gives HTML the carrying capacity to support next generation of web design.

Hollowing Out HTML - The Un-Web

While parts of the web evolve, there are also web constraints that don't change, such as the latency of communication and the static application deployment environment (aka browser + plugins). There are huge restrictions in not being able to send down an execution binary along with each web app, but huge deployment efficiencies as well.

One way to overcome the limitations of HTML is to replace HTML with proprietary web technologies like Flex and Silverlight. These technologies pose the risk is that the searchable, collaborative HTML web that we know and love gets hollowed out from the inside. This effectively carves out areas of the web that are not searchable or combinable with anything that has gone before.

Save The Web - One Browser At A Time

It is up to the Ajax and open source communities to "liberate" the HTML web from the Unweb. For example, "liberating" the Dojo grid is an on-going community effort involving large amounts of goodwill, time and cash.

Rapid evolution of the HTML browser can get us to the future, but only if we get a lot more demanding of the web browser manufacturers. What we can't afford is another 6 year drought like what we got when Netscape abandoned the browser wars and Microsoft IE had the world all to itself.

The key to the web's future is real competition between the browser vendors that will force them to evolve the browser quickly. These features include:
  • Auto update capabilities
  • 3-d rendering
  • Support for new semantics in HTML
  • In short, give us native ability within the browser to do what we otherwise have to do in Javascript libraries
What we know is that we have never gotten good browser enhancements and tools from the market leader. So now you know what you need to do to save the web - download and use the underdog web browser and give it all the love you can ;-)

Thursday, March 13, 2008

Visual Ajax Webinar with Alex Russell - March 20 at 12PST

The first Visual Ajax User Group webinar will be next Thursday, March 20 at 12 PST. The speaker will be Alex Russell, co-author of the Dojo toolkit. He will be talking about "The Zen of Web 2.0 - How to Make Web App Development Effortless."

To sign up, send an email to

The meeting will be at the offices of WaveMaker Software, 301 Howard Street, 22nd Floor, but space is limited and we are nearing capacity. There is plenty of room on the webinar though :-)

We also wanted to solicit input on future meetings. The next two meetings have been scheduled as follows:

  • April 17 - Scott Miles, Dojo Grid Creator- Tooling the Ajax Grid
  • May 15 - Stefan Andreasen, CTO, Kapow - Visualizing the Mashup
We do not yet have speakers for the remaining meetings for the year. Here are some of the people we think it would be interesting to have speak:
  • Jack Slocum, CEO, Ext
  • Daya Baran, WebGuild
  • John Brennan, Adobe
  • Kevin Hakman, Tibco General Interface
  • Paul Colton, Aptana
  • Adam Sah, Google Gadgets

Who do you think we should invite? Please leave your suggestions in the comments.

Wednesday, March 5, 2008

Ajax Studio for Mac - iWebMvc

Ajaxian has an interesting article on a visual Ajax IDE for the mac that creates apps that run on Dojo, Spring, Hibernate. Joe Walker's blog also talks about the objectives of the project, which include:
  • Is based on Java
    Although supporting Grooy / JRuby is a plus
  • Helps me to kick start a project
    But simplifying the process by giving me the best (and this can be tricky) set of frameworks for each task
  • Integrates both server and client sides
    And it's lightweight, robust and extensible. Read enterprise quality.
  • Supports all the common tasks a web app has to handle
    I include here: User Management, CRUD operations, i18n support (both framework & data), AJAX and astounding visuals
It looks like the momentum for a Dojo/Spring/Hibernate stack continues to build!

Monday, March 3, 2008

More hot AIR

Tim Anderson's blog has a good, "fair and balanced" ;-) entry entitled Adobe AIR 10 reasons to love it, 10 reasons to hate it.

To summarize, he lists
  • Reasons to Love AIR: strong visuals, cross platform, fast
  • Reasons to Hate AIR: limited extensibility, limited database access, security
Ron Schmelzer, a Zapthink analyst, also wrote about AIR security holes in Infoworld, with more security folks weighing in here. There is also a fairly curmudgeonly rant from I'm Mike on the proprietary nature of the Flash platform, which, BTW, can't be wished away by open sourcing the tool while keeping the underlying platform locked up.

By the way, this is not to say that Flash/Flex is bad per se, or that it is any worse than other proprietary platforms like Microsoft Silverlight. In fact there are many good reasons for Ajax developers to use Flex when needed to add graphic/audiovisual capabilities not yet present in Ajax toolkits like Dojo (O'Reilly has a good article about Dojo and Adobe).

It is more to get a sense of urgency in the Ajax community that we gotta lotta work to do around robust look/feel, as well as some blocking and tackling work to do around the FUD that platforms like Flex/AIR have the database, security and data handling capabilities needed to work inside the corporate firewall.

Wednesday, February 27, 2008

Why is there Air - Bill Cosby versus Kevin Lynch

I know I'm dating myself, but Bill Cosby had a pretty funny routine where a PE Teacher explains that the purpose of air is to pump up basketballs and volleyballs.

Now Adobe has launched their Air product (with a matching Kevin Lynch NY Times article, and GigaOm fan dance) to allow platform to allow browser apps to escape from their little Firefox and IE prisons and flit gaily across the desktop like "real" apps.

Now what exactly are the benefits here? According to the NY Times article:
  1. I can click an icon on my desktop instead of a bookmark in my browser. Yawn.
  2. I can run an application without the browser border. Snore.
  3. I can run an application offline. Now this is cool, but hardly new, following earlier moves by Google Gears, Dojo Offline and Mozilla Prism
Excuse me, but I prefer Bill's definition of why we need air.

As I have written, Air, Flex and Silverlight are"back to the future" approaches for Rich Internet Applications that would have us believe that the future of the web lies in a proprietary animation engine (Flash) or an ancient and proprietary fat client architecture (Silverlight).

At WaveMaker, we believe open-source toolkits like Dojo are the best enterprise Ajax choice a more flexible, open-source browser choice. To be fair, we in the Ajax community still have a lot of work to do to be truly ready to take on giants like Adobe and Microsoft - but that's where the power of the community can make a difference.

Speaking of community, you can come find out more about the the Dojo toolkit at the upcoming Visual Ajax User Group meeting. On Thursday, March 20 from 12-1:30 PST, Alex Russell, one of the co-creators of Dojo, will be talking about the Zen of Dojo - how to make Dojo development effortless for beginner and expert alike. Come in person or sign up for the webinar by sending email to

Monday, February 25, 2008

Compressing Javascript for zippy Ajax apps

A constant challenge with Ajax development is figuring how to get the widget code you need over to the browser as efficiently as possible. There are two issues here: 1) how to figure out exactly what Javascript needs to go on the client; and 2) how to make that Javascript download as small as possible.

The good counterexample here is the old Dojo download which was roundly criticized for being too large but Dojo has since trimmed down to a svelte 25K (take that jQuery fans!)

So the trick is to figure out what Javascript widgets need to get loaded to make your application run, then compress them to make them download faster. On the other hand, you need to make sure that uncompressing the download doesn't take more time than you saved in the download, as John Resig points out in his article on Javascript library loading speeds.

Brian Moschel of Jupiter IT in Chicago pinged me about a cool Javascript tool they developed called Include, that "makes compressing and including scripts ridiculously easy. It determines which files to compress at runtime and automatically compresses them using Dean Edwards'Packer." Check it out at

Friday, February 22, 2008

Top Ten Ajax Mistakes

Ajax is powerful, but its very power can get Ajax developers into trouble. This list of top Ajax mistakes was compiled by Alex Bosworth. Unfortunately, his original posting has been lost in the great URL broken link black hole, so I summarized his main points here:
  1. Using Ajax for the sake of Ajax: a lot of the new Ajax applications are really just little toys, not developed for any real purpose (see the Ajaxian post, Why Ajax?)

  2. Breaking the back button: the back button doesn't mesh very well with Javascript. Keeping back button functionality is a major reason not to go with a pure Javascript web app. O'Reilly has a good post on fixing the back button.

  3. Not giving immediate visual cues for clicking: if something I'm clicking on is triggering Ajax actions, you have to give me a visual cue that something is going on.

  4. Leaving offline people behind: web application design should at least consider supporting offline Ajax access.

  5. Sucking wind on slow networks: if I have poor network connectivity, every time I do something I have to wait for the server to return a response, giving me poor Ajax performance.

  6. Sending sensitive information in the clear: all traffic must be vetted to make sure security is not compromised. Because Ajax apps tend to be more chatty, there are more opportunities for security breaches.

  7. Assuming AJAX development is single platform development: it's not enough just to code to JavaScript standards, you need to test on all major browers and versions. Quirksmode has a good discussion of javascript browser compatibility.

  8. Inventing new UI conventions: a major mistake that is easy to make with Ajax is: 'click on this non obvious thing to drive this other non obvious result'.

  9. Not using links I can pass to friends or bookmark: I need to be able to pass people "permalink" URLs to my Ajax web app. There is a good article in the Content with Style blog on fixing Ajax bookmarking.

  10. Blocking Spidering: Ajax applications that load large amounts of text without a reload can cause a big problem for search engines. This is related to the lack of permanent URLs. Google has a good discussion of the Ajax spidering issue.

Saturday, February 16, 2008

Alex Russell on the Zen of Dojo - Thursday March 20

We are very please to announce that Alex Russell, one of the co-creators of Dojo, will be presenting to the Bay Area Visual Ajax Group on Thursday, March 20 from 12-1:30.

Alex (his blog is here) will be talking about the Zen of Dojo - how to make Dojo development effortless for beginner and expert alike.

The meeting will be at WaveMaker, 301 Howard Street (at Beale), 22nd Floor (BART stop Embarcadero). For more information, to reserve a space, or to get webinar dial-in information, send an email to:

Friday, February 15, 2008

Microsoft .NET and AJAX

Ajaxian has a good article today about some of the new AJAX solutions that are based on .NET. Given .NETs strong visual tooling, this is starting to be a good way to get more visual in building AJAX apps.

The Ajax Data Controls is a DotNetSlackers project. You can read more about the AJAX Data Controls project on CodePlex

Thursday, February 14, 2008

Getting Started

This is the first posting for the Visual Ajax blog. I look forward to inviting various Ajax thought leaders to present at our monthly user group meetings in San Francisco as well as post to this blog!

The goal of this blog is to promote the use of AJAX tools to build rich internet applications (RIA). We are looking for ways to make AJAX programming as easy (and as ubiquitous) as VB programming.

If you want to know more about me, check out my "day blog" at or my "day job" at

Some other resources to check out include: