Rob Gonda's Blog

Audible Ajax Episode 15: Kevin Hakman of TIBCO

Ajaxian.com put together a nice podcast with Kevin Hakman of Tibco. They covered all the points below.

  • When did TIBCO start in the Ajax business?
  • Why did you decide to get into the Ajax business…why now?
  • What exactly is TIBCO GI? Is it a tool? Is it an API? What do you get with this?
  • Do you see people actually using the libraries separate from the GUI builder or do most customers use them directly together?
  • What does your tool do to make parsing SOAP messages easier?
  • A lot of users start with something like Prototype of Dojo for Ajax. What does TIBCO GI offer (use cases, applications?) over one of those frameworks?
  • What is the authoring experience like with your tool?
  • TIBCO GI sounds a lot like the modern incarnation of Flash (xml markup for vector-based UI, ActionScript, JavaScript event handlers). How does your tool compare? Are they similar or distinct in implementation?
  • How sophisticated is your auto-completion? How limited is it and what other IDE static-language type goodies have you given the environment?
  • The GI Builder is a JavaScript app that uses your technology (you eat your own dog food). Are you waiting for a JIT to come out to help with performance issues or are you finding in practice that JavaScript can perform adequately on the client?
  • Why is your product limited to Internet Explorer? Do you have plans to expand that?
  • What were some of the porting issues that you found going from this IE codebase to Firefox?
  • We’re excited to see a business application for some of Firefox’s newer more exotic features like SVG and Canvas. Are you going to be able to utilize some of those in your product as well?
  • Java engineers think about multi-threaded applications a lot. With JavaScript being single-threaded, do you have performance concerns? What are some techniques you’ve used to achieve this very responsive UI?
  • IE is known for its memory leaks. Does your tool handle some of those? How do you work around it?
  • Is your tool capable of creating something like Zimbra’s UI?
  • Is your tool agnostic; integrating with any backend?
  • RE: Desktop UI technologies. How competitive is your windowing system with more traditional desktop technologies? Do you acknowledge a point where someone should look at a desktop technology, or do you think your tool can facilitate the creation of arbitrarily complex user interfaces?
  • Have you done any benchmarks on what makes sense to use for exchanging data (XML, JSON, etc.)?
  • What’s the model for creating custom widgets in your tool?
  • Can you tell us about today’s release? Where to download, etc.?
  • So someone can create a free web-hosted alternative to Zimbra or MS Office using your tool to visually create it and do all the data manipulation — then release it for free?
  • Once I start charging for access to the website/product, what is the pricing model? What about charging for a commercial software product release?
  • Why should we check out your product in today’s overwhelmingly crowded toolkit/framework market?

Spring < br /> Conference 2006

I'll be speaking at a rather large Macromedia UserGroup Conference (Ohio MUG). It's a full day with four different tracks, which some unfortunately I'll miss while I'm speaking :) I'll present two sessions, one on Ajax basics, and the second one will be for ColdFusion users.

The conference is extremely inexpensive too, but do not be fooled by the price; if you're in the area, do not miss this for anything.

Speaking at our local South Florida CFUG

I will be speaking at the South Florida CFUG this coming February 23rd. Guess the topic, lol, Ajax indeed. I will be covering all Ajax101 basics. Overview of AJAX (Asynchronous JavaScript and XML) including ajaxCFC, CFajax, and JSON. I’ll talk about the history of Ajax, what it means to you, why you should pay attention, who is using it, what is available, and how to implement it. This session will get you up to speed with Ajax, compare the different existing frameworks, and provide you with helpful tips of do’s and don'ts.

If you’re local, I hope to see you there. BTW, iChameleon Group is hiring, so if you’re interested in a career boosting opportunity to work at the greatests CF projects of the year, stop by and drop your resume.

Going to CFUnited / pre-conference classes poll

I forgot to mention, I bought the conference pass to CFUnited last week! This is the first year I get to go; I've been trying for the longest time, but there is always something.

By the way, I will be teaching a pre-conference class: Intensive Ajax for ColdFusion Developers. I putting together my class material now, so it there is anything you wish to see, now is the time. (link to be posted soon)

I will also be participating at the Birds-of-Feather open discussions. I hope to see you guys there.

IBM Leads Open AJAX Initiative

AJAX news just in: this just came out on e-week today.

"The new initiative, known as Open AJAX, includes such prominent supporters as BEA Systems, Borland, the Dojo Foundation, the Eclipse Foundation, Google, IBM, Laszlo Systems, Mozilla, Novell, Openwave Systems, Oracle, Red Hat, Yahoo, Zend and Zimbra. The group plans to promote the use of Asynchronous JavaScript and XML and its use on various devices, applications, desktops or operating systems.

To promote the adoption of AJAX, IBM recently proposed the Eclipse AJAX Toolkit Framework."

The Ajax Experience 2006: May 10-12th

Ajaxian and NoFluffJustStuff Java Symposiums (NFJS) are pleased to announce The Ajax Experience 2006. This international event will take place May 10-12th at the beautiful Westin St. Francis Hotel in San Francisco, California.

The Ajax Experience will feature over 30 technically focused sessions across two (2) full days spanning four (4) parallel tracks covering effective web architecture, enterprise systems, and agile process.

Speakers

The conference is all about the quality of the people, and the speakers list keeps growing.

  • Alex Russell: Founder of The Dojo Toolkit
  • Bill Scott: Creator of Rico, and Yahoo! Ajax Evangelist
  • Bob Ippolito: Creator of MochiKit
  • Brad Neuberg: Really Simple History library and the new dojo.storage work
  • Bram Smeets: Interface21
  • Brendan Eich: Creator of JavaScript
  • Brent Ashley: Ajax Expert
  • David Geary: JSF, Rails Expert
  • Douglas Crockford: Creator of JSON
  • Dylan Schiemann: Co-founder of The Dojo Toolkit
  • Eric Pascarello: Author, Ajax in Action
  • Glenn Vanderburg: JavaScript guru
  • Greg Murray: Ajax/Servlet Lead at Sun
  • Jason Hunter: Greasemonkey and Ajax
  • Jesse James Garrett: Father of Ajax, Adaptive Path
  • Joe Walker: Creator of DWR
  • Jonathan Hawkins: Microsoft Atlas Lead
  • Max Carlson: OpenLaszlo and Ajax
  • Michael Mahemoff: Creator, Ajax Patterns
  • Patrick Lightbody: WebWork 2, and Struts Ti committer
  • Rich Manalang: Creator of MonkeyGrease, and Oracle
  • Rob Gonda: Ajax Dev Journal EinC and ajaxCFC author
  • Rod Smith: IBM and tooling around Ajax
  • Sam Stephenson: Creator of Prototype, and 37 Signals employee
  • Scott Dietsen: CTO of Zimbra
  • Thomas Fuchs: Creator of Script.aculo.us

Location

Westin St. Francis
335 Powell Street
San Francisco, CA 94102

Check out the conference website for more information.

Know your ColdFusion Server: ajax monitoring

Steve Brownlee put together a basic application that you can run to provide you with realtime graphs and charts displaying your JVM memory usage using AJAX, thus no page refresh. You have the choice of the following views.

1.    Total JVM
2.    Eden Space
3.    Survivor Space
4.    Tenured Gen
5.    Permanent Gen
6.    All memory spaces

In each view, you can choose to have the charts update every 2.5, 5, 15, 30 or 60 seconds. Having shorter intervals is great for when you are actively watching the memory to identify problems or monitor your usage, and then switch to long intervals for historical charts.

It's still in its first stages, but it’s free, growing, and has a huge potential to become a must-have tool for every ColdFusion Administrator. If Steve could add active threads, queues, cpu time, and keep expanding, I'll be running this tool 24/7.

check out the Orbwave Memory Explorer 0.1.103.

AJAX real barriers to entry

AJAX is not a new technology, it was not invented recently, and it is a great Venture Capital magnet. However, it is not the technology aspect what defines the barriers to enter the AJAX market, but the overall vision of architecture change that an RIA involves. An _AJAX_ expect is not who knows JavaScript, but the one who can design an interactive user experience that will attract new customers without becoming too complicated for the existing ones.

Now in a technical point of view, the common JavaScript developer will leave all the business logic in the client side, jeopardizing the entire application, leaving your soul exposed. What has evolved in the last year is applying common object oriented programming and design patterns to maintain your core business logic in the server, and leave only connectivity scripts in the client side, hence, creating enterprise level AJAX sites.

ASP.NET "Atlas" First Look

Microsoft released their first take integrating AJAX to the .NET framework, aka 'Atlas'.

"Nikhil Kothari provides a brief overview of ASP.NET "Atlas", a framework to build rich Web apps on top of ASP.NET 2.0. The demo shows an app that uses the new server controls from the December CTP to incrementally enrich standard ASP.NET pages and an app that shows client-centric app development."

ajaxCFC for Model-Glue Explained

While this is not the final documentation, I know some people are starting to play with ajaxCFC/MG and my implementation is not straightforward. This is my first draft to get the feeling on how to document it.

Ajax.cfc is just another model in your MG application, used by the controller to manipulate data. You can initialize it in your Controller’s init function and store in persistently in the controller’s variables scope.

The Ajax remote request call flows exactly (or almost) like a traditional call. It flows as follow:

  1. Page triggers an AJAX request.
  2. The event will be caught by the MG framework.
  3. The MG event-handler will broadcast a message.
  4. The controller will pickup the message.
  5. The controller will AJAX model to parse it (onRequestStart)
  6. The controller can use other models at will (theEvent)
  7. The controller uses the AJAX model to prepare the reponse.
  8. The controller sets the ‘ajaxResponse’ value back to be used by the view
  9. The modelGlue.xml includes ajaxResponse.cfm as the view that will transmit the response back to the JavaScript callback function.

Alright, so this may sound complicated, but it really isn’t. The flow is exactly like any other page with the exception of:

  1. You need to parse the Ajax request with the Ajax model.
    1. You will received a structure with two elements

                                                              i.      id: the unique identifier of the Ajax remote call request

                                                            ii.      params[type array]: this includes all arguments passed by the JavaScript function. Because the arguments are unnamed, you will receive them in an array in the same order that they were passed.

    1. My example parses the values in the controller’s onRequestStart and place them in the request scope to be picked up later by the requested method.
    2. Optionally, you may invoke security and debugging functions contained in the Ajax model.
  1. You need to prepare the response before sending it back to the framework. You will use the Ajax.returnAjax method to do so. The returnAjax method always takes your response and the Ajax call unique identifier.
  2. You need to set the ajaxResponse value to be used by the view.
  3. Finally, include the ajaxResponse.cfm file that simply displays the ajaxResponse value sent by the controller.

Your JavaScript callback function will receive any response you sent as an argument.

That is pretty much the basis; nothing fancy, nothing different than what you usually do with the MG framework. Ajax.cfc is just facilitating the seamless communication between your JavaScript and ColdFusion side; that is all.

Note that the main event (the one making the Ajax call) needs to include the ajax.js file, the _ajaxConfig JavaScript object, and of course, your JavaScript calls and callback functions.

While I do not recommend leaving business logic at the client side, because it defeats the entire MVC and thus MG framework, it is the easiest way to get started with Ajax.

In my next example, I will show how to leave all the business logic in the server side, contained in views, and leave only connectivity functions in the client side.

If you have any comments / requests, do not hesitate to comment or contact me and I will do my best to add them to the framework.

More Entries

This blog is running version 5.9.003. Contact Blog Owner