16967 items (390 unread) in 196 feeds
globalwarming awareness2007
(16 unread)
I hope Joe had a nice warm beer last night after he released the final version of DWR 2.0.
We have been talking about this release for awhile, and it is great stuff. Now you can do amazing things with Reverse Ajax, and know that security is core to the framework.
We asked Joe now that this version is out of the door, what is he looking to do for future releases:
JMS support, and OpenAjax Hub support so you can do pub/sub across
reverse ajax from one browser to another and back onto an enterprise
message bus.ImageConverter to take Swing Images and turn them into Gifs. This would
make things like JCaptcha easy, but it also enable sexy things like
running a Swing app with -headless, taking screenshots and broadcasting
them to browsers. Add some event handling and you have multi-user X over
Ajax.A Reverse Ajax compiler so we can take a large Javascript API (like for
example GI ;-) and create a Java version that generates script that can
be posted over reverse ajax.An a million dull things like a better API to convert from
ScriptSessions to HttpSessions, session delete on window close, etc.
Good stuff to come!
Real Editor is a real-time CSS editor, built on SAJA.
It let’s MySpace users change their styles inline via simple dialogs, menus, and pickers.
DD Tab Menu is a standards compliant, 2 level tab menu. Move your mouse over a tab, and a 2nd level content appears beneath it. The script uses CSS to control all of its appearance, and plain HTML to implement the entire menu tabs and contents.
Highlights of this script are:
Note that the “auto select tab” feature mentioned above is rudimentary
and isn’t meant to replace directly selecting or using server side
scripting to identify which tab corresponds to the current page. It
won’t account for all possibilities where two URLs are the same. Use it
as a convenience and fallback plan!
Thomas Steiner has released Google REST Describe, a GWT application, open-sourced, that groks WADL:
The application is based on the idea that creating a description for a Web Service should be a rather simple task given the information already contained in requests. Let’s take a very simple imaginary online bookmarking Web Service to make the idea clear:
http://bookmarks-online.com/api/v1/getBookmarks?userId=tom&tags=rest&limit=10Simply by looking at the URI we can extract the following information:
And all this information just from one example request. This is basically what the Google REST Describe approach is based on. It takes an ideally complete list of URIs, analyzes the structure, does some type estimations, and afterwards creates an XML representation of the request.
http://bookmarks-online.com: there is a Web Service at this base address./api/v1/: this is the path to access the service components.getBookmarks: there is an operation called getBookmarks?userId=tom&tags=rest&limit=10: it takes three arguments, userId, tags, and limit. When we have a closer look, we could guess that “userId” and “tags” are both strings, and that “limit” is an integer value.
(NOTE: This is not an official Google project)
We love to play with the plumbing don't we. jscsscomp is the latest compressor that uses Nicolas Martin PHP version of the Dean Edwards JavaScript Compressor.
With a swish of mod_rewrite:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*.)(js|css)$ jscsscomp/jscsscomp.php?q=$1$2 [L,NC]
you can get your JavaScript like this:
PLAIN TEXT HTML:
Matthew Batchelder has been looking at the impact of latency on web applications with respect to downloading lots of images as icons, based on thoughts he heard from Zimbra when they presented at The Ajax Experience.
His piece on Faster Page Loads With Image Concatenation goes into why and how:
For complex web apps, the quantity and resulting latency of icons and images used can greatly impact page load times...and developers, in most cases, generally try to reduce page load time with a sweet web app rather than increase it.
To reduce latency in my apps, I use Image Concatenation! Coupled with a bit of CSS magic, performance improves and life is great.
He also discusses using CSS to handle inactive icons (instead of duplicate images):
PLAIN TEXT CSS:
Radius IM is a mashup of Google Maps (location) with IM (teh social).
It’s the only site that shows you where your friends are hanging out and lets you surf for other people based on location. It supports all the major networks: MSN, AIM/ICQ, Yahoo, and GTalk/Jabber. And you can use radiusIM from anywhere because there are no downloads.
It uses Ajax heavily, and is built on the Dojo Toolkit.

Brad Neuberg and the SitePen team has been working tirelessly to get this beta out of the door. Now we have the Dojo Offline Toolkit in beta, released to the world:
Dojo Offline is a free, open source toolkit that makes it easy for web applications to work offline. It consists of two pieces: a JavaScript library bundled with your web page and a small (~300K) cross-platform, cross-browser download that helps to cache your web application’s user-interface for use offline.
You can try out the Moxie demo, view source on the Hello World example, or go ahead and download the SDK.
Building offline apps isn’t simple. It isn’t a case of magically waving a “make my app work offline” wand. Developers need to re-think their architecture most of the time, and think about what it means to be offline. What can work. What can’t. How do I sync when I go back online. All tough questions for many applications. DOT gives us a nice playground to try out some of these ideas.
Rico was one of the early libraries to show us nice effects on top of Ajax libraries. There has been a murmor that Rico 2.0 was in the works, and Tobie was right.
Rico 2.0 has a beta release available. What is new in Rico 2.0?
Components
Rico 2.0 extends the component set from the previous versions. The LiveGrid has been expanded to include filtering, column resizing, and many more features. The core of Rico 2.0 has been designed to enable custom components to be more easily built.
Animation Effects
Rico 2.0 provides responsive animation for smooth effects and transitions that that can communicate change in richer ways than traditional web applications have explored before. Unlike most effects, Rico 2.0 animation can be interrupted, paused, resumed, or have other effects applied to it to enable responsive interaction that the user does not have to wait on.
Rico 2 is built on top of the latest Prototype (1.5.1_rc2 as of this writing), which brings it up to speed.
It is good to have you back Rico. We look forward to seeing what you come up with next.
Eric Popivker has released AutoSuggestMenu 1.1, a .NET component for doing the old-faithful-autosuggest feature that helped to get Ajax on the map (pun intended).
Features
When Christian Effenberger searched for a browser based slide show system he found the infamous S5 (Simple Standards-based Slide Show System) from Eric Meyer.
There were some features that Christian wish he had access too, so he created them:
Auto-scaling of text/images/objects/charts
If you’re setting up to present your 1600×1200 slide show and find
out the projector available to you only goes up to 800×600, don’t
worry. S5 will auto-scale the images/objects accordingly to the text
in the presentation to match the browser window, no matter what size
you make it. Put class=”scale” on any image/object/chart, and it’ll
be shown scaled.
Soft transitions (fading)
Transitions are made through browser compatible fading (softly and
evenly). Only the content of <div class=”slide”> and <img
class=”incremental” /> will be faded. The header, the footer and the
background remain unaffected. The overall duration for slides and
incrementals is adjustable.
Auto Play (autorun)
The automatic play was still missing for kiosk mode. Auto Play
supports overall delay for slides and is adjustable through the
control panel while running. Runs in an endless loop or only once to
the last slide and is also adjustable through the control panel while
running.
Sound support
Audio support is done through SoundManager 2 (Javascript Sound for the Web).
Chart Support (pie/bar/line)
Chart Support is done through parsing html tables at runtime and
dynamic generation of scalable canvas graphics. The <table> must
include class=”piechart” or class=”barchart” or class=”linechart” and
an id with the suffix “_data”. The <canvas> must include width and
height attributes and the same id like the table, but with the suffix
“_canvas”. Further instructions can be found at References.
Extended control panel
The Themes with the suffix “_utf” uses a scalable control panel with
unicode characters to make all adjustments available via mouse click
(invoke the control panel at the lower center of the window). The
Themes with the suffix “_gfx” uses a fixed dimension control panel
with PNG images (invoke the control panel at the bottom of the window).
Advanced New Themes
The new themes makes use of the auto-scaling feature of images and
objects. The Advanced theme e.g. shows a scaling logo image in the
left and an analogue clock flash in the right of the header area. The
Sunny and the School themes shows scaling images in the left top and
right bottom.
Viktor Zeman, of Quality Unit, has created Support Center, a support ticket application based on Dojo.
In fact, they have extended Dojo to deal with problems such as:
They plan to publish this work. Support Center itself bears a little resemblance to Google Reader and company.
Over on my personal blog I discussed Unobtrusive JavaScript, Microformats, and the Google AJAX Feed API.
The posting discusses an example that creates a Feed Billboard using the Google AJAX Feed API released the other day.
Here is the outcome:
The fun part was creating a microformat that would degrade nicely:
PLAIN TEXT HTML:I have gone into more detail over there.
Scott Schiller is a great participate on Ajaxian, and works over at Yahoo!
How I hadn’t found his DHTML Arkanoid before amazes me, and it is the perfect Friday game.
This is a real labour of love. Not only did he create a great version of the game, but he stores high scores, and users can create levels. User generated content? He should sell that to the big boys!
Charlie Hubbard has released Flexjson, a lightweight JSON library for Java. Most JSON serializers mimic object serialization libraries and try to serialize the entire object graph from the object being turned into JSON. This causes problems when you want a connected object model on your server, but you can't send that object model to the client because the serialization library will try to send the entire object graph. This is terrible for performance, causes most JSON libraries to blow up if they encounter circular references, makes it difficult to follow good OO practices, and makes it nearly impossible to use libraries such as Hibernate. Other JSON libraries require you to create a lot of boiler plate code to translate your object representation into a JSON object.
Flexjson tries to solve both of these problems by using a DSL approach to sending JSON. You don't have to create lots of boiler plate code or modify your object model to make it work.
Examples:
PLAIN TEXT JAVASCRIPT:
Dan Yoder has released Specifications, a BDD framework built on top of Prototype.
This is different to the builtin framework that comes with Script.aculo.us.
You write a spec such as:
PLAIN TEXT JAVASCRIPT:
Christian Effenberger was inspired by the reflection code and decided to implement Corner.js.
The library uses unobtrusive JavaScript and microformats to allow users to simply add class names to an img tag to render them with corner effects, all via Canvas.
If you wanted to add a shaded corner you would say:
PLAIN TEXT HTML:
Tobie Langel fearlessly deals with browser quirks so Prototype users will not have too.
His latest battle revolves around a Regex bug that causes Safari to crash when the string is large.
/(.)+/.test(string);
They fixed the usage of this in some areas but still have issues with JSON sanitization.
The good news is that WebKit nightly seems happy. Come on Leopard! It makes you wish that the browser vendors could try {} catch {} around these issues so you don’t get crashes.
There were several people showing off the latest S60 browser software (built on WebKit) running on Nokia phones.
There is richer Ajax support, and was even a nudge, nudge, wink wink comment regarding support of canvas and the like.
Still, although it is great to have Safari on the phone, and zooming around the page is fun, there are still huge issues around screen size. In a world where we see more 30″ monitors, or duals, remembering the little guys can get hard. Ajax brings challenges such as changing multiple areas of the screen at the same time.
Has anyone had particularly good experiences with Ajax on the phone? Maybe someone living in a country where you actually have decent service? :)
Handling Keyboard Shortcuts in JavaScript is a simple script that allows you to declare shortcut event handling in your applications.
PLAIN TEXT JAVASCRIPT:You can also pass in options:
Very cheap and cheerful.
Download shortcuts.js to check it out.
The Google AJAX API team has announced a genuinely useful Feed API that gives an Ajax developer the ability to access feeds, cached in the fast Google edge cache where appropriate, from across the web using a simple JavaScript API.
This is a subtle service that does one thing that is currently a pain-point for developers of certain applications. Ajax developers now have a clean way to access public feeds on any domain, and get access to the content in a uniform way.
Gone is the need for us to create a proxy on the server to access feeds from other domains.
Gone is the need to have to deal with all of the feed types. RSS, Atom, RDF, we can now use either MIXED_FORMAT or JSON_FORMAT to use the uniform access. The full set of feed formats supported is Atom 1.0, Atom 0.3, RSS 2.0, RSS 1.0, RSS 0.94, RSS 0.93, RSS 0.92, RSS 0.91, RSS 0.9. The unified feed result elements are: title, link, description, author and a list of entries[]. The entries[] list has the following elements: title, link, content, contentSnippet, publishDate, and categories.
XML and mixed formats allow you to also get access to the XML document itself, and then you can use standard DOM tactics to get what you want from that content (e.g. getElementsByTagName). You would want to use XML if you needed to grab out something specific from the feed, such as the digg:count.
RSSBling Redone
Funny story. Ben and I created Ajaxian.com as a place to host RSS Bling back in 2005, as you can see via the Wayback Machine. It was only later that we started the blog.
RSS Bling was an offline RSS reader that we create as an example of doing offline and Ajax before it was cool. We got a lot of mileage out of doing presentations and unplugging the net and seeing that it still worked.
One of our problems was getting access to feeds. We could have created a proxy to feeds, but instead we used bloglines as the proxy, and got the data from there.
With the new Feed API we can go directly to the feeds itself. We ported RSS Bling to use the API, and you can view it here.
Once you load the Feed API, you can grab a feed using google.feeds.Feed, passing in the feed URL, setting any values on it (e.g. the mode to use, how many entries you want in the result size, etc.), and then calling load(callback). The callback allows the API to grab the feed asynchronously, and holds the result itself.
Here is an example from RSS Bling that loads a feed and shows the entries in the main window:
PLAIN TEXT JAVASCRIPT:I am really looking forward to seeing how the API is used.
Ryan Breen put out a call for help on a distributed performance test that had many people hitting a Dojo charting system.
The results are now in and the data seems to show:
At 37ms, Safari is easily the fastest implementation, over 3 times faster than Firefox. Internet Explorer is by far the slowest, but this may be a generic statement for the speed of VML operations. Opera was the 2nd fastest browser, narrowly losing out to Safari and turning in a time over twice as fast as Firefox.
There may be some bias in the data given that the majority of people running WebKit Nightlies are likely doing so on sexy multicore Mac hardware.
Firefox on Mac is significantly slower than Firefox on Windows. OK, so either all Firefox Mac users are on boring old PowerPC tech, the Firefox SVG implementation on Mac is slower than Windows, or my Safari hardware bias theory is totally busted. Perhaps a combination of the three. Any way you slice it, Safari’s dominating performance can’t be rationalized away — the WebKit guys have done some seriously good work on the SVG front.
Looks like Microsoft made some improvements to the VML engine in IE7 — there is a significant improvement from IE6. In the SVG space, Firefox appears to have made some marginal improvements in 2.0. Safari SVG support is new, and the per-version sample size on Opera is too low to draw any trend conclusions.
Thanks a lot to the community for helping with the test, and thanks to Ryan for compiling the data.
In low-level land, the try/catch trick that Prototype uses was king for 'most fun way to get the XHR object'.
Nicolas Faugout has put his hat in the ring with:
PLAIN TEXT JAVASCRIPT:This feels like the Just Another Perl Hacker hacks in Perl land. Next we will see examples with rot13.
We previously announced extjs.com launching, and now Ext JS 1.0 has been released.
You can see screenshots showing off the nice looking stuff and you can now customize your own build.
First, you will select the base library (Prototype, jQuery, YUI) and then you will get a list of all of the components allowing you get bite off only what you want to chew. It would be really nice if you could save off your builds so you can come back and tweak them.
James Coglan wanted to create a generally useful JavaScript library that does vector and matrix math well.
He has released Sylvester, which let's developers write readable object-oriented code for dealing with vector and matrix mathematics. Its first release includes classes for vectors, matrices, and lines and planes in 3D space. Future releases will add more sophisticated geometry functions and hopefully a 3D rendering engine for the canvas element.
The initial version is available for download, and there are API docs for the vector and matrix components available, with more documentation coming.
Vector math
PLAIN TEXT JAVASCRIPT:Matrices
PLAIN TEXT JAVASCRIPT: