I'm at The ServerSide Java Symposium, blogging live.

Let me use this forum to list the people I'd like to meet here: Ben Galbraith, Howard Lewis Ship, Matt Raible, The Bile Blogger. If you see me, please say hi.

I just attended Dion Almaer and Ben Galbraith's talk on ajax. Here are my notes.

I The Myth:

  Not possible too create rich ui only inbrowser

II What is ajax

  A. History: HTML->JS->Applets->Flash (Back Button) and SVG (Not impl)

  B. JS Pain 1998
  
   debugging was nightmare

   xp pain

 C. Defining

    Asynchronous JavaScript and XmlHttpRequest

    Standards based presentation

    Use XML to manipulate data with XSLT

  D. Client model

     No more single request/response restrictions, more flexibility to
     go back to server at will.

  E. Can do it asynchronous, it's a big deal because it changes the
     request/response paradigm.  Gets rid of submit button

  F. A bit on how

     a. still have to do the browser detection thing, but can be abstracted.

     b. showed the code to do the request, handle the response, by
        installing a JS callback.  Get the response as XML, use dom to
        extract info, use dom to put it back into the form.

  G. History of the XmlHttpRequest, methods on it.

    open(), send(), can pass basic auth credentials. (What about certs?)

    JS has function pointers

  H. Ecmascript for XML (E4X)

     Build dom straight into Ecmascript
  
III Who's doing it

  A. Google: maps

    images are tiled.  Requested asynchronously, that's how panning
    works.  JS supports layering, with transparent images.  

     They use IFRAME, which allows history to work.  

  B. Google maps becomes a platform

   When you get into this world, you are building a platform
    
   If you are lucky, there will be a Google hacks on the way.

   Lots of cool hack out there already

  C. Google suggest

    aim: let you know what people are searching

  D. TadaList

    Built on Ruby on Rails

    Simple List component, keeps server side component updated.

IV General Framework

  A. General Solns

    CRUD on the DOM

    Ideal for portals

    Animations, feedback messages

      Feedback messages: just show a message and not re-display the
      whole page.

    Deleting from the Admin Panel

      A tree control, delete a node, don't re-render the tree: just nuke
      it from the DOM.

    Recalculate:

      Why not recalculate on the fly?

  B. SOAP access

     RESTful web services.

  C. Frameworks: Custom...

     Listed examples of common things you can specify as patterns of usage.  

  D. JSON: JavaScript Object Notation

     Lightweight format to get objects back that are not XML.  Built on
      Object, Array, String, Number, etc

  E. JSON RPC: essentially a Java ORB

  F. JavaScript Templates

     Manipulating the DOM is a pain.  Use templating.  Basically, allow
      parameterized DOM access.

  G. AOP with JavaScript?  Yes, you can.  

  H. How to fit with frameworks?

    Have component that integrates this functionality.

    You can register a component with tapestry that will receive all the
      requests dynamically.

   (I'll be talking with Ben immediately after this talk)

  I. JSUnit: how to do test first with JavaScript.

   Solenium

V RSS Reader Demo

  Show you can build an offline capable application with AJAX.

VI Conclusion, warnings

  A. Warnings

  Don't use for technoligies sake.

  Understand Usability testing

  Understand restrictions

  Still in creative mode

    Frameworks will be coming, take the work out of it

  B. JS Survival tips

    You'll miss the IDE

    Packaging as source only lets people see source code

    Debugging, tougher, firefox, mozilla has something

    Packaging libraries: be wary of namespace.  The packaging scheme is
      basic

  C. JS Limitations,

    Can't access resources on other sites: wrong, must sign code.

    Signed code can also read from and write to the local filesystem.

    You have to get permission in every function.

  D. ajaxian.com

     Don't build your own framework.  It's probably been done before.