Showing posts with label dojo. Show all posts
Showing posts with label dojo. Show all posts

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!

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"
store="csvStore"
query="{ Title: '*' }"
clientSort="true"
style="width: 800px; height: 300px;">
<thead>
<tr>
<th width="300px" field="Title">Title</th>
<th width="5em">Year</th>
</tr>
<tr>
<th colspan="2">Producer</th>
</tr>
</thead>
</table>

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}
]]
};
</script>

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}, {},
}]

Summary

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 http://www.wavemaker.com/downloads

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":

<SPAN DOJOTYPE=" dojox.data.CsvStore"
JSID=" csvStore" URL=" names.csv" >
</SPAN>

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

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 rsvp@visualajax.org

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!

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 rsvp@visualajax.org.

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 javascriptmvc.com/include

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:
rsvp@visualajax.org
 
ss_blog_claim=3447bca5887ddff6d0ca4a390cd980a4