Dojo has some nice new compound effects in the works. Some of the new effects include block fades, disintergrate, explode, shear, and pinwheel.
Each effect can be tweaked with config such as:
You will also see effects that work on the text within divs, as well as pieces of the div itself.

Facelift Image Replacement (or FLIR, pronounced fleer) is an image replacement script that dynamically generates image representations of text on your web page in fonts that otherwise might not be visible to your visitors. The generated image will be automatically inserted into your web page via Javascript and visible to all modern browsers. Any element with text can be replaced: from headers (<h1>, <h2>, etc.) to <span> elements and everything in between!
sIFR takes over the elements and puts small swf files into place. FLIR on the other hand generates images on the server and puts them in place. They both suffer from the progressive switch in place that you often see as you watch the page load.
Also, one downside is that once the text is an image you can't copy and paste it. Ben can once again drool over the typography.

The Humanized folk who now work in Mozilla Labs have taken their Enso work and created Ubiquity, a Firefox plugin that implements the Graphical Keyboard User Interface:
Web applications, much the same as desktop applications, are a bit like isolated cities: it’s difficult for an end-user to arbitrarily share data and functionality between them. This is alleviated to some extent by creations like Firefox Add-ons that add toolbars or sidebars to Firefox’s UI, Bookmarklets, and Greasemonkey, but while all of these solutions are powerful, each comes with its own set of problems. The buttons and bars of many Firefox add-ons don’t scale well because of the valuable screen real-estate they consume; Bookmarklets are restricted in scope because they only have the access privileges of the website they’re running on; and Greasemonkey doesn’t prescribe any kind of interaction model, which makes it difficult to reuse the functionality of a script in a context other than the ones it was expressly designed for.
Ubiquity attempts to alleviate all of these problems by allowing end-users to apply textual commands, or verbs, to whatever they’re looking at. For instance, let’s assume that I’ve found a typo on a friend’s blog, and I want to let him know about it.
Asad Sheth has been playing with a Starfield Sim Picasa Gallery using Prototype. He said:
I think it's an interesting way to think about temporally organized data (I could see RSS feeds navigated through some similar mechanism, with the z-axis being time and the x- and y-axes being some kind of similarity measure), and further display that graphical presentation is not the sole domain of Flash.
Obsessing is a "very alpha" service that allows you to edit and build Processing.js applications on the fly. The editor is a tough flaky, but you can create and save your programs back to the cloud.
And now for something a little bit different on a Friday. Greg Brown from VMWare pointed us to the fruition of nearly a year's worth of R&D: Pivot, a new GUI toolkit for Java.

While traditionally Java Applets and the Web have mixed together about as well as concrete and peanut butter, the upcoming revised Java plug-in might give a window for Java-based GUI toolkits to be of interest to Web folks.
While Pivot's source code is still forthcoming, a quick glance at its classes shows an architecture with a strong resemblance to Java's built-in Swing GUI toolkit, but with many of Swing's rough edges smoothed out. As a long-time Swing developer, I'd characterize it as attempt to create Swing++.
Similarities to Swing include a light-weight rendering model (i.e., it doesn't wrap native components), a nearly identical component contract, a very similar system of UI delegates, and a very similar event model. Differences include a cleaner API (by virtue of nixing direct interoperability with Java's ancient AWT toolkit), different approach to layout, fresh implementations of common GUI components, and a new collections framework (inspired by Java's collections framework but... different).
Thinlet is another, older alternate GUI toolkit for Java that draws its own components and targets Applet developers (though a new version is under development).
Paul Bakaus & the jQuery UI Team has released a major update jQuery UI 1.5.
There seem to be three major pieces to the news:
API Refactoring
What we came up with, was an API that removed 95% of our exposed methods, and kept only one single overloaded method per plugin. For example:
- $(”div”).draggable() creates a draggable
- $(”div”).draggable(”destroy”) destroys it
- $(”div”).draggable(”method”) calls another method on the plugin.
The new API also makes all callbacks behave similarly, exposes the default options for each plugin and intelligently cleans up plugins using remove(). We also made it possible to update plugin options on the fly, and added smaller updates that make UI feel like one suite.
In order to make this happen, we removed the jquery.dimensions.js (which can now be found in jQuery core), the ui.mouse.js and the *.ext.js dependancies, introduced a ui.core.js (which includes many useful helpers) and created the jQuery UI widget factory which makes creating a new plugin for UI amazingly simple while making it very difficult to break the API.
Effects: Internalizing Enchant
One of the great things in being able to take a step back is that it offers a totally different perspective on what a full-featured UI solution should offer. While jQuery UI v1.0 was currently offering a nice suite of UI controls, users were in need of solid effects like those offered in libraries such as script.aculo.us and jQuery UI’s former inspiration, Interface. Unfortunately, Interface was no longer being updated which left a bit of a hole in terms of effects; hence a new project called “Enchant” was born. Originally planned to be released as a complementary library to jQuery and jQuery UI, we realized that it made perfect sense to merge Enchant with jQuery UI allowing users easy access to advanced effects and UI controls from one solution.
We’re proud to announce that Enchant is now a part of jQuery UI and jQuery users now have a unified solution for their effects and UI needs. The jQuery UI effects can be used standalone or together with UI and have a separate core which extends the jQuery core to introduce advanced easing, class transitions (morphing) and color animations. All effects are tightly integrated into the main API and can be used as standalone ( $(..).effect() ) or directly from within jQuery methods you already know ( hide()/show() ).
Overall, we already have more than 15 ready-to-use effects for you to use in your projects, not only those provided by script.aculo.us (blind,bounce,drop,fold,slide …), but also fresh, new effects (transfer, explode. clip, scale) that make jQuery UI a great library enhancing your applications!
As promised in one of the last blog posts, it comes with a complete documentation and a combined demo page to let you see them in action.
Create your own Themes, with help
ThemeRoller is an application itself that allows you to create themes on the fly and save them out. The Filament Group did the work and blogged about how.
The jQuery team also wanted to give a shout out to Liferay, "who invested countless hours into the development of the new UI website, and with whom we worked closely together to stabilize jQuery UI for all kinds of enterprise situations."
The folks at Y!DN have released Yahoo! Design Stencil Kit 1.0, which contains a full set of stencils that cover Web components in various states including:
Whip out Omnigraffle or your tool of choice and get going :)
You can download the artifacts in various formats: OmniGraffle,
Visio (XML),
PDF,
PNG,
SVG.
One of the examples that Ben and I give in our State of Ajax talk at Google I/O today revolves around form history.
We were thinking about the case for Undo on the Web that Aza Raskin is proposing and it got us thinking about the usage patterns of form data.
An example that got me was the Address Book application on the Mac. I find myself storing past addresses in the general "Notes" section at the bottom, but what if history was built into the system so I could go back in time? This could be a nice metaphor in general that goes beyond undo.
I took this use case and put together a working example that uses Gears to store the history locally so it can be speedy through the history.
The slider component comes from Script.aculo.us, and you can check out all of the code.
In the video below I show the application in action and then do a quick code walk through:
This is just the beginning of course. A slider if fun, but it would probably be more usable if it was simply left and right arrows that click through the versions, or at least putting tacks onto the slider.
Kristian Thornley had a unique requirement for displaying data change overtime and thought that he would build a Mac Leopard JS Time Machine.
Kristian told us that "currently the effect suffers if the data in the panels are too detailed and I will probably set up some event handlers e.g. onScale preScale postScale which could trigger Ajax calls and preload data a bit like Livegrid."
Vladimir Olexa of CNET has released CiUI a iUI inspired iPhone JavaScript libary that mimics the iPhone UI behavior.
It's already being used on CNET¹s iPhone page (http://iphone.cnet.com). It's been greatly inspired by iUI with a few key differences:
To create a sliding load you simply annotate the link (iUI takes over automatically, in contrast):
Check out the source and an enclosed working example or go to iphone.cnet.com to see it in live action. You can download the library from our download page.

Firefox 3 has support for Animated PNG:
One of many new features added to Firefox 3 is the support of a new file format, the Animated PNG! Browsers have supported animated GIFs for more than a decade, but the GIF image format has a number of limitations and is overdue for replacement. The PNG image format is now widely accepted as a superior replacement for static GIF images, but for animated GIFs there has not yet been a clear successor. The new Animated PNG format (APNG) is a simple extension to PNG, making it superior for animations too.
-Justin Dolske
There are some fun examples, if you can fire up FF3:
Hopefully we don’t get too much abuse of animated images like we did when animated gifs came around.
CuePrompter (via DownloadSquad) is an browser-based teleprompt tool. Cut-and-paste some or insert some text and the application will scroll it forward or back, at your desired speed. A variant of the Ajax e-reader concept.
Peeking at the source, it's been around since 2005. Implementation is small and straightforward. It works using a timer and manipulation of the top CSS property to continuously re-position the top of the entire text. (A negative top value means the top of the passage is "above" the browser window; hence you'll see text further along in the passage.)
Triggit has created a very interesting tool. The problem they are trying to solve is that many people want to muck around with their websites, but don't want to grok HTML. They want to integrate with services (mash them up in a manual one off way) such as insert their videos from YouTube, photos from Flickr, and other publishing items. One big one is being able to add advertising to the site.
As techies we often think that things are easy enough, "What? You just put in some embed code.... how hard is that!" Triggit allows you to go meta and put in only one embed code, and then offer a toolbar for users to add content in WYSIWYG style.
How does this all work?
When you put in that script code on your site, it has a hook back to the Triggit platform. Say you want to add a photo from Flickr: In the tool you find the photo and place it on the screen and hit save. The action is saved back to Triggit 'add this photo to that location with this style'. Then when a visitor hits the site, the page is loaded, the JavaScript is run, and the action is sent down to the browser and the DOM is changed to add this image. Zach said that one of the biggest challenges was getting this working across the various browsers, so when you put an image at some place using Firefox (the first browser that is supported for the editor side), it ends up in the right place no matter which browser is used from the visitor perspective.
This means that you now have a logical page, but content is split between you real backend, and the Triggit servers. The advantage to this method is that you can integrate with anything. You don't need to have special code that groks a particular backend service, it is all generic.
So, this is a little out there. You are balancing between making it incredibly easy to update pages, and adding complexity by having content in separate places. The page could jump a little depending on the amount of information coming down, if Triggit gets dugg, or what have you. If successful though, you can see as developers that you could write plugins for the system and allow John Doe to easily tie in your content. That is the future promise.
Fancy giving it a go? Zach gave Ajaxian readers 300 invites (as the product IS in beta!). Head over to the signup page and use the code "ajaxian" and if you are in the first 300 you should be good to go. Oh, and for coolness factor, I believe that Rails, Erlang, and crazy JavaScript skills were used to make this happen.
I got to sit down with Zach Coelius and he discusses the product, and gives us a walk through:
I also have a short demo of it running on my own blog:
And, finally, they have their own screencast of the tool at work.
Press Release
Triggit, a San Francisco based startup, with the aim of making life a lot simpler for web publishers, today announced the beta launch of the first ever WYSIWYG web application for integrating third party elements into websites.
With Triggit, any web publisher can now drag and drop advertisements, Flickr pictures, YouTube videos and more, directly into their site without any skills in web programming. Triggit is free to use, and works on any site that accepts JavaScript. It does not require any downloads, access to FTP, or APIs, and installs easily by pasting one small piece of code in the site.
“Triggit is here to help anyone who would like to take full advantage of the resources of the web for their site who isn’t a programmer and who doesn’t think in code,” says Susan Coelius-Keplinger, Triggit’s COO.
At a time when more and more non-technical publishers are coming online, Triggit is focused on removing the complexity of using code to add third party objects to a page. Whether it is widget, a video of a dog skateboarding, or a banner ad, current technology still requires the use of embedded code to integrate these elements into a website. For publishers accustomed to using graphical user interfaces for all their computing, it can be a daunting task to modify and integrate code into their websites. One area where this is a particular problem is for online advertising networks who continue to lose hundreds of millions of dollars of potential earnings annually to web publishers who can’t integrate and optimize their ad units.
Triggit’s goal is to serve as a feature-rich tool whereby publishers can quickly and easily integrate all manner of widgets, content, advertising units, APIs and data from third party sites. In doing so, it operates as a distribution arm for companies seeking to spread the reach of their advertisements, widgets, content and data on the web. By making it easier for web publishers to integrate these objects into their websites, Triggit helps to expand the ability of these companies to reach larger online audiences and add new revenue streams. Ryan Tecco, Triggit’s CTO says “It is really early days for this technology. There are a lot of things waiting in the wings that we haven’t yet put into the tool. We are very excited to see where this goes”.
Adding to the long list of generator-style sites is the latest addition called Genfavicon.
Using jQuery for it's DOM manipulation and Ajax work, the site actually does a pretty decent job of creating the cool little favicons used throughout the web. You have the option of either specifying a URL for the image you'd like to convert or uploading it to the site for processing. Once loaded, the full image is presented in a neat cropping pane letting you decide which section of the image you want as your favicon. Once you're ready, just choose an image size between 16x16 through 128x128, click the "Capture & Preview" button and download your favicon. Pretty painless.
The site was created by the group at Ferca Network as a pet project. If you can read Spanish, you can get more details via their blog.
Now and then we weave the Ajaxian car into the designer fast lane from the developer one as we see something interesting. This time around we have Amy Hoy talking about product pages as an example of how to do good UX(P|D|).
She starts out with UX 101:
And then continues to use these rules to rip apart landing pages for Opera and Firefox. You can see her red and green pens at work:

Ray Cromwell and the Timepedia team have released Chronoscope, a charting and visualization platform for Google Web Toolkit, as open source.
Chronoscope provides a rich Java API for you to play with:
We also have a piece over at devphone on GWT and Android: A marriage made in heaven?
In an ongoing exercise to become more familiar with MooTools and Canvas, Greg Houston has created an extension to MooTools called Mocha UI which provides a new UI class made with canvas tag graphics.
The new class provides the following set of features:
Greg is also considering the following enhancements:
Raymond Penners has launched sosymbol, a site with a collection of web2.0 (read: big?) style buttons and symbols that can be mashed up online and exported to svg/screensaver.
Glen Lipka has been thinking about Trees. He looked around for patterns for building them, and couldn't find anything. Then he looked at examples such as the Ext Tree component and ended up writing up his dream tree:
- Hover. This is a problem with Vista as well. If it’s clickable, then it should afford clicking. The best way to do this is with a color change in the background. EXT and Vista do this very well in Menus, but they forget about it in the Tree. Trees need clear hover states. This is my number one pattern in general for trees and it is missing in tons of JS trees out there.
- Bigger target. The hover in the above step needs to be wide. As wide as the whole tree. Plus it needs to have a little padding. Give the user a decent target to hit. Don’t make them hit a tiny spot. Give them breathing room. David Foltz says, “Don’t make the user play target practice”. He is right.
- Keyboard shortcuts are good when the tree is focused, but what about when it’s blurred. Keyboard shortcuts don’t work when tree is blurred. In Vista the “on state” changes to be lower contrast on blur, so that it’s easier to tell that moving the mouse will have no effect. In the EXT example, it doesn’t change. This causes issues. I actually asked the engineers to turn keyboard shortcuts off, and it seems that the keyboard option is not easily turn-off-able.
The pattern I actually like with keyboard shortcuts better than this example is to move the “selector” or “hover” with the keyboard, and NOT the onstate. Moving the onstate changes the right side. This is OK in an operating system, but not OK in a web application, where latency is much greater. Interestingly, Vista is different than XP on this score. Vista moves the hover state, although it looks like the onstate. And XP actually moves the onstate. Ugh, this is all a mess.
Ok, the bottom line is: Keyboard shortcuts for web trees should move the hover state and require an enter or spacebar. This is the same pattern as keyboard shortcuts in raw HTML.
- Bigger On state. It should be clearer that you are ON a selection. It should be a background color going as wide as the whole tree.
- Should not collapse the entire tree. The root node on a tree with only one root node should not collapse. Even though I see this in lots of trees including Microsoft, I think its terrible. Why would the user want to collapse the tree down to one node? It makes no sense to me.
Max Kiesler has been doing some nice roundup posts recently. He just published Ajax Javascript Galleries, Slideshows and Effects Redux, a piece that goes through a large group of libraries and apps that show off image related functionality.
He ends up discussing:

TechCrunch reports Flickr is to gain photo editing. It will use IFrame-based integration with Flash editing tool Picnik.
Flickr has chosen Seattle-based Picnik (profile) to handle the long requested photo editing feature for Flickr users.
Currently, you can rotate photos on Flickr, but the editing stops there. When the new tools launch, users will be able to edit photos more extensively using the Picnik Flash based tools (see our review here).
With users relying on online storage more and more, it's a no-brainer for those tools to offer editing capability. We can expect to see the trend continue with image sites as well as audio and video. And while image editing is possible with pure HTML/Javascript, Flash is generally the platform of choice right now.
Michal Migurski implemented the two-finger drag of a multi-touch interface in Flash:
//
var so = new SWFObject("http://mike.teczno.com/img/right-triangles/RightTriangles.swf", "right-triangles", "300", "300", "9", "#EEEEEE");
so.write("right-triangles");
// ]]>
In his example he visually shows how the implementation calculates a third point of the triangle. He explains this all:
There are two main difficulties: figuring out how precisely the two contacts should act on an object, and then translating those into the appropriate placement, sizing, and rotation of the object. We start with two rules: the object can be moved and turned, but not skewed, squashed, or otherwise deformed, and the fingers should stay in contact with the same points on the object throughout their movement.
Both troubles can be solved with the use of affine transformation matrices, the closest thing computer science has to a true, working hammer. I've described before how to derive a complete transformation from just three example points, so we need to figure out where to place a third point to complement the two fingers above. If we assume that the line between the two fingers is the hypotenuse of a right equilateral triangle, the we can guarantee a stable position for the invisible third finger by working out the two legs of the complete triangle. See it in action above when you drag.
Aza Raskin, whose company created the Enso "Quicksilver-ish" PC launcher and the perpetual scrolling blog, wrote "Never Use a Warning When You Mean Undo" for A List Apart a few months ago, echoing the advice given by his father Jef Raskin in The Human Interface.
I don't think anyone refutes the wisdom of this suggestion, but many folks responded to Aza's article with the complaint that the implementation of undo is too hard to be generally feasible. Aza has now come back with his thoughts on a simple client-side implementation of undo for Ajax (part 1).
I admit I personally cut corners all the time in this matter, violating my own beliefs and issuing warnings. :-) Has anyone in the community had experience implementing a robust undo?
Our own Michael Mahemoff has been at it again, and this time with a real twist.
Michael has packaged Bitjuice, a Javascript API that lets you draw graphics by creating complex HTML tables that are styled. Yup, not Canvas, not SVG, but HTML tables!
You can take it for a spin with the interactive scratchpad.
Interface Elements is to jQuery, as Script.aculo.us is to Prototype.
It contains a slew of UI controls such as:
You can see these all in action via the demos which include some real world-like examples.
OpensIFRr is a new tool that enables you to create sIFR flash files that represent fonts that you need.
Ben and I demonstrated sIFR at JavaOne last week. We took the typography of ajaxian.com and spruced it up in an unobtrusive way.
Here is a simple hello world recap of how to use sIFR:
Check out a download of OpensIFR.
Jesse Kuhnert was looking at the Google Rounded Corners and decided to implement his own, using the same URL structure.
You can see his demo at work, and you can add corners by doing this:
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:
Kevin Miller has released LightWindow 1.1, another in the trend of light boxes.
Another one?
After researching every single modal window, lightbox, slimbox, etc out there nothing fit the bill. Granted some of them were very nice but only fit a specific purpose, others were a nightmare on the code end, and others were just hacks of another. None of them truly supported all of the features we needed and those that were close could not be easily adapted without a bottle of Prozac near by.
This puppy works nicely, and supports various media such as PDF, movies, Flash, and more. It also supports every way that you probably want to use a lightbox.
And, they do have a sense of humour:
This library is 52k uncompressed & requires both prototype 1.5+ and scriptaculous 1.7+, if you just screamed, then it's probably time to learn how to publish your files like a grown-up. Compressed, this library is 9k.