4.7.6 The responseText attribute
The responseText attribute must return the result of running these steps:
1. If the state is not LOADING or DONE return the empty string and terminate these steps.
2. Return the text response entity body.
He then goes on to test this out by having a response with delimiters such as:
A lot of great news is coming in via Twitter. I make a lot of Ajax comments under @dalmaer and wanted to give you a roundup on the month of October via Tweets. Always interesting to take a glance at the month. What do you think?
Dave Shea's elevation is cool indeed "A free, open source route visualizer that renders GPS data in 3D space" 1:50 PM Oct 28th
iBeans is a cool new project that helps you with integration to the backend from MuleSoft 10:29 AM Oct 28th
RT @tolmasky: the web requires a constant 20% commitment from your CPU to do absolutely nothing with Flash. Im COMPILING and Flash tops it11:05 PM Oct 27th
RT @jdalton: Prototype+NWMatcher and P+Sizzle ops/sec benchmarks and updated the match() benchmarks 11:10 PM Oct 24th
The Web offers incredible diversity in many areas, so kinda strange that JS is the only viable language on the client, even though it morphs 2:45 PM Oct 24th
RT @dberlind: Sir Tim Berners-Lee @ #w2s: W3C things to pay attention to: Web apps, mobile web, SVG, HTML (now at 5) 5:50 PM Oct 22nd
Wave and Raindrop may have a similar front cover, but the story is sooo different. Squint past "messaging" and see the massive differences. 5:16 PM Oct 22nd
Raindrop announced; Hacking your email again; Getting personal: I am really jazzed to see the work of the Mozilla M... 3:48 PM Oct 22nd
RT @davidascher: Pleased to announce the launch of Raindrop -- our experiment for messaging on the Open Web: labs.mozilla.com/raindrop 1:46 PM Oct 22nd
Addy Osmani has posted on using YUI SWFStore as a storage solution a la Dojo Storage 12:52 PM Oct 22nd
RT @glazou: "in 1997 I wrote this and 12 years later, the #whatwg discovers the power of link dereferencing :-) #w3c" 12:19 PM Oct 22nd
RT @WebReflection: ...and we wonder why Microsoft does not want canvas into HTML5, uh? 90% of Silverlight almost everywhere in microsoft.com 12:00 PM Oct 22nd
RT @WebReflection: Dean Edwards always ends up with ultra useful snippets: IE color value to hex 11:22 AM Oct 22nd
RT @jobsworth: Pichai: Most operating systems of today were designed before the web existed; most of the time we use OS we use for web. #w2s9:24 AM Oct 22nd
Alexander Kirk is doing fun work with Colorillo, the collaborative drawing app using Canvas 8:58 AM Oct 22nd
RT @Pre101: "I just opened up http://webos101.com as a resource for webOS development." 2:56 PM Oct 18th
“I really need to build a plugin system for #PhoneGap. I just successfully created support for adding native toolbars / buttons!” -@NachoMan 3:17 PM Oct 17th
It will be fun to have a naming scheme for lists (already seeing them e.g. @company/team) & then being able 2 ask @dalmaer;@bgalbs/jsgurus 9:11 PM Oct 15th
Daniel Bogan rules for taking Ben's Web Directions talk and doing this! 8:41 PM Oct 15th
Fun to be setting up some public lists. jsgurus and ajaxians Who am I missing? 8:30 PM Oct 15th
RT @webos_school: Acceleroto, Nice post about developing for webOS. We've also taken a look at your App. Great work. 8:01 PM Oct 15th
RT @edwk: Firefox 3.6b1 launches so much faster! Good work Mozilla team! 8:01 PM Oct 15th
“Titanium's addition of an embedded PHP interpreter is gonna be big, I think. Opens up a massive community to desktop app dev.” -@funkatron 12:12 PM Oct 15th
“IntelliJ IDEA Community Edition released! Free and open-source. http://jetbrains.org/ cool!” awesome. If only they did this years back! 11:54 AM Oct 15th
ClickToFlash has an awesome tagline "any crash if probably Flash" http://rentzsch.github.com/...11:58 PM Oct 14th
RT @diveintomark: Damn, I wish this were simpler #html5 #video 10:15 PM Oct 14th
Hamish Friedlander has a nice new jQuery Concrete library for adding functionality to DOM elements w/ a new CSS engine 8:12 PM Oct 14th
That @srobbin is always doing cool shizzle. This time he has jQuery Approach which animates content based on proximity 4:29 PM Oct 14th
RT @thomasfuchs: Awesome slides on Interface Design Basics by @smoofles. Highly rec'd for devs. 11:47 PM Oct 10th
Perlito == MiniPerl6 compiler self-hosted in Javascript, Lisp and in Perl 5. 10:08 PM Oct 10th
RT @nathansmith: Page count for jQuery Cookbook = 468 pages. Looking over a PDF preview. Excited to see it near completion. 10:06 PM Oct 10th
Codepad is interesting in that it lets you collaboratively run code :) Nice work @sahazel look at embedding @bespin! 10:02 PM Oct 10th
Love how Adam Barth answered "When will Chrome 4 be released?" A: "When these bugs are done" instead of "We have not publicly announced.." 8:59 PM Oct 10th
Met the Taptu folks who have a search "machine" that uses how mobile friendly websites are to the scoring algorithm 12:17 PM Oct 9th
RT @BenWard: Google's front page is using CSS animations to fade in the peripheral chrome when you move the mouse. Actually pretty cool. 11:13 PM Oct 6th
I love that the What Browser? site by Google (for dummies?) has a section with terms such as "V8 Benchmark Suite." http://whatbrowser.org/ 10:49 PM Oct 6th
Gilad Bracha discusses the pros and cons of the SmallTalk Image 10:22 PM Oct 6th
I've been afraid of changing / because I've built my app / around SQL Features get bolder / schemas get older / Code's getting older 2 @al3x 3:52 PM Oct 5th
Crazy times: parsing HTML and rendering it using Canvas tag: http://github.com/jamesu/ht... #html5 (via @bradneuberg) 3:17 PM Oct 5th
James Hall has a really nice roundup of cool FF features: full screen video; drag and drop; WebGL; -moz-image-rect 9:42 AM Oct 5th
Kevin Decker keeps kicking arse with Firediff. His latest version offers revert, search, snapshot, and safe diff 11:27 PM Oct 4th
Another HTML builder with(HTML). Firebug has one. mkup is one and this is @cramforce's 10:11 PM Oct 4th
RT @erikdahlstrom: Script-driven demo exploding a playing video, paper describing some of the nice svg demos 2:34 PM Oct 4th
RT @codedread: @danfooo "There's no such thing as the Mobile Web" Fully agree! #svgopen (via @erikdahlstrom) 10:41 AM Oct 4th
Looking forward to seeing the classes flushed out for @webos_school. Let us know if you need anything guys! 8:37 AM Oct 4th
RT @silentlennie "Big 3 <video> improvements: quality (Theora 1.1), seek performance and fullscreen-support. It seems to be maturing nicely"8:34 AM Oct 4th
The best and most important talk I've seen in years. Rich Hickey on Clojure's approach to Identity & State http://is.gd/3SLeI (via @jboner) 1:01 PM Oct 2nd
RT @bradneuberg: "Google urges Web adoption of vector graphics": CNet News: Stephen Shankland: http://tinyurl.com/yexawat #svgweb #svg 12:01 PM Oct 2nd
Steve Faulkner has tested ARIA support in Windows browsers. FF/IE = 44/43 http://www.paciellogroup.co... 12:00 PM Oct 2nd
An Engineer's Guide to Bandwidth, a nice right up by YDN http://bit.ly/9HuNP 11:10 AM Oct 2nd
RT @gruber: Rather than dropping calls, AT&T's new strategy seems to be not ringing your iPhone in the first place when calls come in. 10:23 AM Oct 2nd
RT @kirillcool > @swingrocks Interesting, #JavaOne is listed on the Moscone center website! http://j.mp/10y7nh OracleOne is here! :) 9:44 AM Oct 2nd
Joonas Lehtinen has created GWT Graphics, an open source wrapper on SVG and VML http://bit.ly/123rFA 9:36 AM Oct 2nd
Weave is way faster and reliable now. The team has been cranking the last few months! http://bit.ly/HklpC 11:13 PM Oct 1st
"processing.js is already amazing. Imagine if we took 8 students, finished it & added 3D support from C3DL?" http://vocamus.net/dave/?p=771 11:07 PM Oct 1st
David Humphrey shows Cathy Leung's Motionview 3D web goodness http://vocamus.net/dave/?p=771 and ... 11:06 PM Oct 1st
Nice! The @cloudera folks have created a MooTools based rich web app view for Hadoop: Cloudera Desktop http://bit.ly/3938cT 11:00 PM Oct 1st
RT @mozhacks new guest post by @humphd: WebGL in the wild: http://bit.ly/10KH4V 10:34 PM Oct 1st
Just when I get excited about the Web as an app platform.... I use Google Docs :/ 9:45 PM Oct 1st
Tamura Jones goes into detail on various ways to detect and utilize Chrome Frame, e.g., how to turn it on for all pages http://bit.ly/xjTv2 8:01 PM Oct 1st
RT @bradneuberg > @sil That's like putting the HTML 4.1 DOCTYPE onto an HTML 2 document & calling it HTML 4.1. Technically but actually no:) 2:44 PM Oct 1st
Got to see dynaTrace as well as @souders. Some nice work coming there. http://bit.ly/1IgdPD 2:40 PM Oct 1st
RT @kriszyp > @WebReflection Persevere truly preserves the JS paradigm all the way down where CouchDB fails to: dates, circ refs, functions 9:56 PM Sep 28th
Mojo SDK 1.2 has followed up after webOS 1.2. New tools (e.g. palm-log), new APIs (e.g. Download Manager API), and more 3:15 PM Sep 28th
Dean Edwards: "I'm currently writing a JavaScript implementation of the <video> element." Ahhhhh yeah :) Good news for us ;) 1:43 PM Sep 28th
This Friday, August 28 marks the $100 off early-bird deadline for The Ajax Experience conference, September 14-16 in Boston, MA. Friday is your last chance to save $100 off the registration fee. Visit the conference site to register now!
Below is the latest agenda at-a-glance with over 40 essential sessions, case studies, interactive panels and insightful keynotes from Dion and Ben of Ajaxian.com, Brendan Eich, Douglas Crockford and Ross Boucher. Register now to take advantage of $100 early-bird savings and join your peers right in Boston. This great offer expires on Friday, August 28.
9:45 - 10:10 a.m. Refreshment Break, Peer and Vendor Networking
10:10 - 11:10 a.m. Choose between:
‘Design Tips for Dynamic UIs' with Patrick Lightbody
‘Beyond IFrames: Web Sandboxes' with Scott Isaacs
‘Building Accessible User Interfaces with jQuery and Fluid Infusion' with Colin Clark
‘From Desktop to Web - Getting it Right' with John Trelfa
11:20 - 12:00 p.m. Luncheon Keynote
12:00 - 12:50 p.m. Lunch and Peer Networking
1:00 - 2:15 p.m. Panel: ‘ES5: ECMAScript Standards for a Better Web' led by Allen Wirfs-Brock
Panelists: Brendan Eich, Douglas Crockford, Mark Miller
2:25 - 3:25 p.m. Choose between:
‘Interoperable Ajax Tools and Mashups' with Adam Peller
‘API Doc Smackdown: YUI Doc versus JS Doc Toolkit' with Ted Husted
‘Even Faster Web Sites' with Steve Souders
‘Designing for Interesting Moments' with Bill Scott
3:25 - 3:50 p.m. Refreshment Break, Peer and Vendor Networking
3:50 - 4:15 p.m. New Technology Launch
4:15 - 5:15 p.m. Keynote: ‘The JSON Saga' with Douglas Crockford, Author, ‘JavaScript: The Good Parts'; Creator, JSON
5:15 p.m. Ajax Experience Evening Event
DAY TWO - Tuesday, September 15
7:30 - 8:00 a.m. Registration and Welcome Refreshments
8:05 - 9:05 a.m. Keynote: ‘ECMAScript Harmony and the Future of JavaScript' with Brendan Eich, Creator, JavaScript; CTO, Mozilla Foundation
9:35 - 10:00 a.m. Refreshment Break, Peer and Vendor Networking
10:00 - 11:30 a.m. Choose between:
Standards Session with Brendan Eich
‘Web Compatibility and Performance Testing in a Multi-Browser World' with Imad Mouline & Ryan Breen
11:40 - 12:20 p.m. Luncheon Keynote
12:20 - 1:10 p.m. Lunch and Peer Networking
1:20 - 1:50 p.m. Vendor Tech Sessions
2:00 - 3:00 p.m. Choose between:
‘Advanced Web Application Security' with Joe Walker
‘Adaptive Static Resource Optimization in the Ajax World' with David Wei & Changhao Jiang
‘Object-Oriented CSS: for Scalable, Fast and Beautiful Web Applications' with Nicole Sullivan
‘JavaScript: The Good Parts' with Douglas Crockford
3:00 - 3:25 p.m. Refreshment Break, Peer and Vendor Networking
3:25 - 4:25 p.m. Choose between:
‘Ample SDK: Standards-based Runtime for Client-side Applications' with Sergey Ilinsky
‘How to Simplify and Automate Testing Ajax Applications' with Ted Husted
‘Web Services and JavaScript - Using and Offering Data on the Web for All of Us' with Christian Heilmann
4:25 - 5:25 p.m. Ask the Expert Discussion Groups (Meet one-on-one with speakers)
5:25 p.m. Ajax Experience Evening Event
DAY THREE - Wednesday, September 16
7:30 - 8:00 a.m. Welcome Refreshments
8:05 - 9:05 a.m. Keynote: ‘The Future of Development Tools' with Ross Boucher, Co-founder, 280 North
9:30 - 10:30 a.m. Choose between:
‘Improving Facebook's Performance with Ajax and Browser Caching' with David Wei & Changhao Jiang
‘Bringing Data to Life in the Browser with the YUI Library' with Jenny Han Donnelly
‘Designing for the Mobile Web with JavaScript' with Brian LeRoux
‘Building Voice Recognition and Audio Recording into Web Applications with WAMI' with Andrew Sutherland
10:30 - 10:55 a.m. Refreshment Break, Peer and Vendor Networking
10:55 - 12:55 p.m. Panel: ‘Secure Mashups: Getting to Safe Web Plug-ins' with Douglas Crockford, Scott Isaacs, Mike Samuel, Marcel Laverdet
12:25 - 1:15 p.m. Lunch and Peer Networking
1:25 - 2:25 p.m. Choose between:
‘The Challenges and Rewards of Writing a 100K-line JavaScript Application with Laurens van den Oever
‘Building Rich Web Applications with Ext JS 3.0' with Rich Waters
‘Cappuccino Web Framework' with Ross Boucher
2:35 - 3:35 p.m. Choose between:
‘Testing the Testers: YUI Unit versus QUnit' with Ted Husted
‘Building a Web Application with Atlas, Start to Finish' with Ross Boucher
‘Web. Smartphone. Future. Now.' with Jason O'Keefe
‘ARIA - Pushing Accessibility Even Further and How to Get Your Boss to Join in' with Joe McCann
Most articles on using the URL Fragment technique advocate the target iFrame polling its Location to detect changes in the fragment… perhaps checking 5 times a second. Julien Lecomte describes a variant that creates throw away proxy iFrame’s. These can check their location within an onload event handler, extract the message, then make a call to the target iFrame, passing in the message. Once complete, the iFrame can be deleted. This means polling is no longer required. Also, when combined with caching, it should be fast and remove the risk of missing a message.
This post by Michael Mahemoff provides a good introduction to both techniques.
I came across these blog entries after I had come up with something similar, but with a slight twist… it may not be new but I didn’t find any other examples along these lines. I used a permanent proxy frame instead of throw away proxies. However, rather than polling the Location, I signalled a new “message” was ready to be processed by resizing the proxy iFrame. The JavaScript within the proxy iFrame registers a resize handler which when triggered reads the message. This approach is more immediate than both the polling and the dynamic iFrame techniques. I’m not 100% sure on whether threading within browser could allow messages to be lost in the case of several being sent close together, but I don’t believe so.
The Parent Page hosts two iFrames. One contains the Content to be displayed, the second is a Proxy that is moved out of sight (both iFrames are served by the same domain);
The Parent Page sends messages to the Content iFrame by changing the URL Fragment of the Proxy iFrame and signalling that a new message is available (by toggling the size of the Proxy):
The Proxy registers a handler that is called as its size is changed. The handler inspects the URL Fragment and passes the message on to the Content iFrame (this is allowed as it is not a cross domain call). It is this call that fails with Opera… there does not appear to be a way for the Proxy iFrame to get a handle to the Content iFrame. Internet Explorer and Firefox can use parent.frames["hostFrame"] to find the Content iFrame.
Kyle has take the XHR API that we all know and.... wrap.... and married it with a JSON-P transport to make jXHR.
He tells us more:
I've put out a very simple little project called jXHR which does cross-domain Ajax via JSON-P calls (meaning, totally javascript based), but does so with an emulation of the native XHR API ("onreadystatechange", "open", "send", etc). It also provides some basic error handling capabilities, which is something most JSON-P solutions don't currently offer, at least not without complicated timers, etc.
The goal was to provide a simpler interface for making cross-domain Ajax calls with JSON-P, but in nearly the same way you make same-domain calls, by using the standard XHR API. Also, I wanted the solution to be framework independent for those who don't or can't use jQuery, Dojo, etc
Frameworks such as Dojo allow you to choose an transport independent of their API (e.g. iframe transport versus XHR).
Ajaxian.com's The Ajax Experience gives you access to over 40 sessions presented by framework founders, independent experts and development leaders - all focused on proven solutions for current and emerging challenges plaguing Ajax developers, like performance, cross-browser rendering, security and architecture.
Keynote presentations examine advancements being made in JavaScript, CSS and browser implementations that you can leverage now to create quality Ajax apps. Plus you gain key insights into development tools that you can use today to cut weeks off development timelines.
See how to leverage new browser technologies on the horizon (and in most cases, largely already here) that will power the future of Ajax applications. Drawing from real-life examples of cutting-edge applications, Ben and Dion showcase Ajax innovations that you can tap into today to create compelling applications that users demand - including Canvas, faster JavaScript, Web Workers, Bespin and more.
There are many different development tools available and choosing the one that best meets your needs, and getting the most out of that tool, can be challenging and time-consuming. Ross Boucher shares little-known tips for developing applications versus web pages and websites, with a focus on JavaScript debugging and profiling tools as well as existing and upcoming development IDEs, including the much anticipated Atlas.
'A Web of Confusion' with Douglas Crockford, Author of JavaScript: The Good Parts
The browser is generally regarded as an incompetent blunder, crafted with horrendous security vulnerabilities which, 14 years on, still have not been repaired. Yet, despite the browser's lousy reputation, when it comes to security, it is significantly better than everything else. Attend and hear Douglas Crockford uncover emerging security threats in the browser and the necessary steps to avoid putting your apps at risk.
----------------------------------------------
These are just a few key highlights of what promises to be the most educational web development event of the year or your money back - no questions asked. Sessions are being finalized but many are ready for your review right now! View the full agenda.
And don't forget to take advantage of the special $300 savings before the discount expires July 31!
"When the heck are you guys going to open registration for The Ajax Experience this year!?"
Over the last 3 months that is, without question, the most frequently received email we've had from Ajaxian members like you. The good news is that the wait is finally over! Registration has officially opened for this year's Ajax Experience conference and best of all, we're offering you $300 off when you register by July 31st. Check out our just-launched Web site right here for all the benefits we have lined up for you this year: The Ajax Experience, September 14-16 in Boston, MA
Please Note: While we'll be adding the bulk of our sessions to our individual conference tracks over the next few weeks, we want to be sure you take advantage of the early-bird discount now. That said, we've once again confirmed today's best and brightest Ajax minds from across the globe and we're featuring a number of these keynote presenters and session experts for your review on the site right now, including:
* Ben Galbraith and Dion Almaer, Co-founders of Ajaxian.com
* Brendan Eich, Creator of JavaScript and CTO of Mozilla
* Douglas Crockford, Creator of JSON and Author of JavaScript: The Good Parts * Bill Scott, Director of UX at Netflix
* Ross Boucher, Co-founder of 280 North and the Cappuccino & Atlas frameworks
* Joe Walker, Creator of DWR
* Nicole Sullivan, Creator of Object-Oriented CSS
* David Wei and Xiang Chaong, Research Scientists at Facebook
* And more!
More essential speakers and sessions to be announced in the coming weeks, so stay tuned and start planning. One feature we think you're going to love this year is "session previews." Each morning we're featuring 5-minute lightning rounds where presenters entice the audience to attend their session by giving them a brief synopsis of what they will learn. Now you'll have even more exposure to new, cutting-edge technologies and proven solutions - and a better idea of how to spend your days.
Don't delay, register now for The Ajax Experience to take advantage of your $300 early bird savings.
Micah Snyder of Digg posted on DUI.Stream, an experimental library that implements a multipart XHR technique to bundle resources into one request and then breaks them out at the other end:
One of the ways that high-performance websites like Yahoo suggest speeding up load times is by reducing the number of HTTP requests per page. We started thinking about what we could do to reduce HTTP overhead, and where we could get the biggest benefits from it. Well, one thing led to another and the next thing we knew we were talking about writing a generalized framework for bundling files, sending them through a single request, then separating them for use once they head down the pipe.
We call this technique MXHR (short for Multipart XMLHttpRequests), and we wrote an addition to our Digg User Interface library called DUI.Stream to implement it. Specifically, DUI.Stream opens and reads multipart HTTP responses piece-by-piece through an XHR, passing each chunk to a JavaScript handler as it loads.
Why do this? Well, DUI.Stream will allow developers to drastically improve the speed of uncached page loads by bundling most of their resources into a single HTTP request, with a single time-to-first-byte and no request throttling by the user agent. Additionally, the size of the response has no effect on the rendering time of each chunk, as the client handles each piece of the response on the fly and can inject it into the DOM for rendering immediately, in the exact order you specify. On a high traffic, high-activity site like Digg, we have to display incredible amounts of data on each permalink — typically hundreds of user images within the first 50 comment threads on a page alone, not to mention the UI chrome and actual comment data. (You can see this for yourself: notice the number of HTTP requests that queue up when you expand a page of comments). So our primary use case for DUI.Stream is turning that first long, arduous page load on an empty cache into something nearly indistinguishable from a page of data with fully cached resources.
You can take a look at a demo in action. Reloading the puppy shows how life varies so much on each request. The demos looks like this:
Let’s talk a bit about the architectural benefits of implementing MXHRs with DUI.Stream. Back when the web was based largely on a page metaphor (i.e.: one central document with external references), whenever you loaded the page, the page requested its images, stylesheets, etc, then you were done. These days you’re just as often loading an application; the page progressively enhances into a stateful UI by loading extra stylesheets, scripts and a whole mess of UI chrome after the initial request. Yet, we’re still using the old model flow of get markup –> render markup –> request external resources –> load and display externals.
Take our modal login dialog box for example. In order to reduce requests we bundle its JavaScript in with the rest of the page, we put its CSS up in the header with the rest of the styles, then we request only the markup for the dialog box, render it, and let it fire its own HTTP requests for the images that make up its chrome. In this broken model, HTTP connections and rendering behaviors split our UI architecture up into different parts of the page that all render at different times at the browser’s discretion. Even if we put everything into one cohesive structure and loaded the CSS link, script tag and markup together, they’d still all fire their own HTTP requests and the images would still come in afterwards on the first page load. This just won’t do.
Now, let’s rethink how our login dialog could work using DUI.Stream. We can request a Stream that contains everything needed to render and use the dialog box. As each part comes in, it gets passed through to be built, and renders immediately with no image backfill or delayed JS behavior. The DUI.Stream framework can then pass those resources back into cacheable elements for our next page load, which can happily 302 its way quickly through the rendering process. Pretty sweet right? Right.
Why choose which Ajax framework you can use, when you can let The Machine tell you! Jim Briggs of Athenz has pointed his decision machine at the age old problem of choosing which darn library to script src!
Here is what Jim told us about the new service:
There has been some discussion lately on Ajaxian about “What is the best framework?” As Dion said in another post, “It is agonizing. It is hard. It isn't pretty.” Both newbies and gurus have weighed in on the subject. As a Ajax programmer, the issue is personally important to me, but rather than cast out another opinion, I’ve created a web site, The Ajax Frameworks Decision Center, that allows anybody to evaluate and select the Ajax or RIA framework that best meets their particular needs. The Decision Center includes a 100-plus requirements model, tools to prioritize, compare, and evaluate frameworks, and a 35 page guide that elaborates on the requirements and the features that you find in frameworks.
In addition, anyone can publish an evaluation of any framework and vendors can publish product information inside the Decision Center. All of this is free.
Objectively, the choice of a framework can be difficult. Subjectively, the choice can be agonizing. The Decision Center doesn’t eliminate all the difficulty, but it provides a way to make a good and justifiable decision and feel confident about it in the end.
This is a brand new service and I’ll respond quickly to any feedback so I can make the site better and so I can help you make better technology decisions now and in the future.
Or see it at work:
You have to signup to check it out, and it may feel like you are filling out a TPS form ;)
Matt Raible has posted on the analysis the he has done for a client on choosing an Ajax framework. This is the age old question "which Ajax framework should I use?" It is agonizing. It is hard. It isn't pretty. We created a dartboard:
Matts take compares Dojo, Ext JS, GWT, and YUI using various criteria that you can see here (including his ratings):
What you quickly see is that it is fairly hard to choose between the popular frameworks (and this is a specific subset that was narrowed down, hence no jQuery, Prototype, Mootools, etc).
I am interested in seeing what other criteria people use to choose.
Launched in June, 2007, AjaxRain.com has continued its steady growth of aggregating awesome extensions for the popular JavaScript frameworks. It was a late starter coming after the popular site MiniAjax but while MiniAjax unfortunately stopped updates, AjaxRain continued loading up with top scripts from around the web. Currently listing 1200+ scripts, it has become the starting place for finding cool features to leverage in your apps.
Looking at the jQuery, MooTools & Prototype categories you can see a wealth of options for all types of functionality.
They've also just updated the site:
Enhancing the UI
Improving advanced search options to increase discoverability
Tags for every aspect of UI design
In addition, they've now started to leverage Twitter and Facebook to spread the word about new scripts.
Finding good scripts is tough as it is with so many being hosted all over the web. So it's good to see a service which is offering to wrap all of these up in a nice centralized manner.
We're seeking a few good technologists and speakers for The Ajax Experience 2009, to be held in Boston on September 14-16, 2009. If you have experience with frameworks, techniques, or technologies that drive high performance Web applications, or build frameworks or other tools to enable the creation or test of Ajax applications, take a look at our call for papers to see where your talk may fit in.
Please click here for more details on what we're looking for and how to submit your proposals. Here is the official submission form. Deadline for submissions is April 1st.
I enjoy the US show Chuck (maybe because a geeky guy gets to hang with a beautiful woman? :) and there is a 3D episode to launch their new season. Our 2009 Ajax season relaunches an old favourite meme, the Ajax loaders (e.g. ajaxload.info) with a new 3D special.
Timur Gafforov has given us Preloaders which allows you to select size, speed, and from a set of 3D spinners. Make your users wait in style! :)
He talks about how some frameworks have code paths for specific browsers to shorten the if (foo) type overhead. Having a compile step like GWT does makes this easy. TIBCO GI "builds an optimized code tree for each major browser release (the opposite of the approach jQuery 1.3 and others have taken, as code only makes it into a build for that browser if that browser is known to support that functionality)."
excludeStart(”webkitMobile”)
Dylan then discusses what is happening in the Dojo community:
In recent discussions on the Dojo mailing list, discussions turned to how to make Dojo faster for mobile users. In most cases, this involves removing code and features that are not needed on that platform given the precious resources available on mobile devices and over mobile networks.
Alex Russell checked in some work he started last year that looks like this:
While we would love to switch to pure feature detection over browser version detection like John has done with jQuery 1.3, version detection is generally more concise and precise, and does not necessarily make Dojo any less forwards compatible.
Version detection also makes it easy to exclude code created solely for browsers that require major workarounds, such as IE 6. To get the most out of this though would require doing something similar for each major browser, which would make Dojo more challenging to understand and maintain, would probably require a build step even during development (not just in production to improve performance).
At this point, there are no clear answers, just a lot of questions on how to create a toolkit that offers edge of the web features for desktop users, and still preserves performance for mobile web users. What approach do you think is best?
John Allsopp has a thoughtful piece that races some old concerns about the new tag set in HTML 5, and how we will ever be able to jump on that train when the cabooze still has IE.old train cars.
It is great to have new semantics for <section> and all, but what will browsers do with these new tags?
John walks through a simple example with the new tags, shows some issues, and then wonders if we could use the existing extension points (attributes):
Let’s invent a new attribute. I’ll call it “structure,” but the particular name isn’t important. We can use it like this:
<div structure="header">
Let’s see how our browsers fare with this.
Of course, all our browsers will style this element with CSS.
In fact, almost all browsers, including IE7, style the div with an attribute of structure, even if there is no such thing as the structure attribute! Sadly, our luck runs out there, as IE6 does not. But we can use the attribute in HTML and have all existing browsers recognize it. We can even use CSS to style our HTML using the attribute in all modern browsers. And, if we want a workaround for older browsers, we can add a class value to the element for styling. Compare this with the HTML 5 solution, which adds new elements that cannot be styled in Internet Explorer 6 or 7 and you’ll see that this is definitely a more backward-compatible solution.
John then goes on to discuss the potential use of the role attribute, and more.
It feels like there are two issues here:
Are new tags the right way to provide new semantic value
Are there work arounds to back/forward compatibility.
Without compatibility, it will be impossible to get this off the ground for many people. What if we mix both worlds, and a shim is put in place to convert the new tags to divs and the like at runtime for browsers that don't support it. Is that enough?
It comes to the age old issue of how "desktop-y" do you make your Web application? Herb believes that having them look like desktop apps is natural. I think that I disagree. I like Gmail because it is a great blend of web-y and desktop-y. In fact, it is more like pine on the Web than Outlook on the Web :)
The best applications seem to nail that blend of both worlds. What do you think?
This is Herb's conclusion:
Most SaaS/Web 2.0 applications today look and feel pretty much the way GUI applications looked and felt like on DOS, before technologies like Windows and OS/2 PM existed. Around the late 1980s, people wrote lots of GUI applications that ran on DOS, but we didn’t have a widely-used common GUI infrastructure that handled basic windows and menus and events, much less standards like CUA that tried to say how to use such a common infrastructure if we had it. So they each did their own thing, borrowing where possible from what seemed to work well for GUIs on other platforms.
Twenty years ago, everyone writing GUIs on DOS designed the UIs as best they could, borrowing where possible from what they saw worked on platforms like the Macintosh and Xerox Alto and Star — but the results were all over the map, and would stay that way until a standard environment, followed by standard guidelines, came into being.
Today, everyone writing rich Web 2.0 applications is doing their own thing, borrowing as best they can from Macs and Windows and others — but the results are all over the map, and will continue to be until there actually is such a thing as a UI standard for rich-GUI web applications. You can see that in the differences between Zimbra and Outlook Web Access. In the meantime, it’s not just okay to borrow from what we’ve learned on the desktop; it’s necessary.
And the question isn’t whether metaphors users already understand on the desktop will migrate to the web, but which ones and how soon, because it’s the whole point of SaaS. The industry will soon be going well beyond Google Apps; with offerings like Office Online already announced for the short term, which puts still more rich-client GUI apps like word processors and spreadsheets in the browser (with functionality somewhere between Google Apps and the desktop version of Office).
Zimbra and Outlook Web Access aren’t examples of poor web app design, but exactly the opposite: They’re just the beginning of the next wave of rich web apps.