First Xbox 360 Elite pics? Nope.
We can’t guarantee that any black Xboxen from here until the launch of the Xbox 360 Elite won’t just be shots of the original 360 dev kit that was sent around, but we’ve already got our first batch of “confirmada” Elite pics that sprung up. Let’s be honest here — the only thing that’s gonna be different is the black plastic (which we’ve been seeing for a while) and some new box art. The real and important differences, friends, will be under the hood, and it’s those things we’re stoked to find out more about.
Update: Our trusted source that confirmed the Elite let us know that these shots are quite fishy; they don’t have the same plastics details as the real Elite, nor does the retail box match up. Sorry folks, chalk this one up to the usual group of bored, fanatical photoshoppers.
(Via Engadget.)
OpenLaszlo 4.0 Released – Now with Ajax
The Laszlo guys caused some buzz when they said they were going to support Ajax and Flash as runtime platforms for their new release. That release, OpenLaszlo 4.0 has just been released.
With or Without Flash
OpenLaszlo is designed to support deployment of Ajax applications across multiple runtimes and devices. OpenLaszlo 3.x can deploy applications running Flash 7 or higher, and OpenLaszlo 4, now in Beta, provides DHTML support.
OpenLaszlo 4 gives developers the option to run applications using Flash or DHTML, an open standard built into most browsers. Future extensions include embedded runtimes in consumer devices, such as mobile phones and TV set-tops. Adopt OpenLaszlo today and open a new world of options for deploying compelling Web 2.0 applications now and in the future.
Power with Flexibility
OpenLaszlo LZX is a declarative XML markup language with embedded JavaScript designed expressly for advanced Web applications. Its syntax is familiar to developers experienced with JavaScript, HTML and XML, and it provides advanced language features such as animation, layout, drawing, data binding, and server communication (persistent connections, SOAP, XML-RPC and XMLHttpRequest) to create an extraordinarily rich user experience. OpenLaszlo comes with a robust set of components and is supported by extensive documentation.
Are you looking for tools like this that can deploy to multiple platforms, or do you prefer staying closer to the platform?
(Via Ajaxian.)
Parallax Effect for Backgrounds
Brett Taylor wanted to see if he could make a parallax effect in HTML+CSS+JS and make it cross-browser and came up with Parallax Backgrounds.
Scroll around and you will see that the text and content scrolls normally, but the different background layers scroll at different speed.
Maybe as useful as SKIP INTRO, but a nice experiment.
(Via Ajaxian.)
Web performance book could use examples of slowwwwww Ajax
By Tim O’Reilly
Andy Oram writes on the O’Reilly editors’ list: “Steve Souders at Yahoo! is writing a book for us on Web performance. The focus of the book is on speeding up downloads and browser behavior. He doesn’t concentrate on Ajax, but some of what he writes is definitely relevant, and he is asking us for get examples of sites where Ajax updates seem to be slow.” That seemed like a good job for Radar readers! Please nominate your candidates, your exercises in frustration, in the comments.
(Via O’Reilly Radar.)
Firefox 2.0.0.3 and Firefox 1.5.0.11 Security and Stability Update
As part of Mozilla Corporation’s ongoing stability and security update process, Firefox 1.5.0.11 and Firefox 2.0.0.3 are now available for Windows, Mac, and Linux for free download from http://getfirefox.com.
Due to the security fixes, we strongly recommend that all Firefox users upgrade to these latest releases.
Note: Firefox 1.5.0.x will be maintained with security and stability updates until April 24, 2007. All users are encouraged to upgrade to Firefox 2. Firefox 1.5.0.11 is available for download from http://www.mozilla.com/firefox/all-older.html.
If you already have Firefox 1.5.0.x or Firefox 2.0.0.x, you will receive an automated update notification within 24 to 48 hours. This update can also be applied manually by selecting “Check for Updates…” from the Help menu starting later today.
For a list of changes and more information, please review the Firefox 1.5.0.11 Release Notes and the Firefox 2.0.0.3 Release Notes.
(Via Mozilla Developer News.)
Xbox 360 Elite: new, black limited edition Xbox with HDMI and 120GB drive

We’ve confirmed with trusted sources that the black Xbox 360 is indeed coming (the image above is of the original 360 dev kit, FYI), and will be dubbed the Xbox 360 Elite. Here’s what you need to know about it:
- The Elite will be limited quantities only; that may be as much or as little as a couple hundred thousand.
- The case, controller, and Live headset will all be black. It will have all new packaging.
- Elite will cost $479, and will be a 3rd SKU; it will be sold alongside Premium and Core packs.
- Eventually Elite hardware (in white plastics) will take the role of the Xbox Premium. That is to say, after the Elite is launched and sold out, future Xbox Premiums will have 120GB / HDMI.
- We do not yet know exactly when 120GB / HDMI will become the standard for Premium, but it is loosely estimated to be late summer or fall.
- Elite models run cooler than normal 360s, but they are not yet confirmed to have 65nm chips.
- Prices may remain the same with the 120GB / HDMI hardware upgrade in the Premium Xbox, but we may still see a price cut on the line when 65nm chips start shipping.
- The HD DVD drive will not be internal or bundled — Microsoft never did or nor does not currently have plans to put an HD DVD drive in the 360.
- There are no current plans to integrate WiFi into the Elite or future Premiums (although that can always change).
(Via Engadget.)
VMware Fusion Beta 2 now available

VMware, the top banana in the virtualization market though relative new comer to the Mac, has just released Fusion Beta 2, their Mac virtualization client. Fusion, much like Parallels, allows you to run Windows (and many other operating systems) on your Mac just like you would any other application.
Fusion Beta 2 adds some interesting features:
- Support for DirectX8.1 on Windows XP virtual machines (DirectX is Microsoft’s APIs for multimedia applications, i.e. games that use graphics acceleration).
- Snapshots of virtual machines: take a snapshot of one of your virtual machines, and you can always recover to that point in time.
- Support for Vista (both 32 and 64-bit flavors)
- Much better networking: including seamless switching between Airport networks and support for up to 10 virtual network interfaces (very cool, if you ask me)
All in all, Fusion is shaping up to be very nice, though they are still missing Coherence mode which is Parallels killer feature. The Fusion Beta 2 is free (while it is in beta).
Update: It is true that Fusion Beta 2 is available now, but it was also available a few weeks ago! I am the victim of a poor memory and a tardy PR email. However, now is a good chance to check Fusion if you haven’t (see how I saved this post from irrelevance? That’s the mark of a pro blogger).
Wayne Beaton: EclipseLink Project Proposal
I have to admit that I’m darned excited (though apparently not quite excited enough to unleash a stronger expletive) about the Eclipse Java Persistence Platform (EclipseLink) project proposal. The name “EclipseLink” is an obvious play on the name “TopLink” which is the name of the Oracle Product from which the initial code contribution will come from.
Why am I so excited about this project? There’s a couple of good reasons. A big reason is that TopLink is a darned good product that’s used by a lot of companies (small-, medium-, and large-sized). It’s a product that has evolved in a very “Eclipsey” (Eclipsish?) way: customer feedback is continually driven back into the product; it’s a platform that helps developers do what they really need to do based on actual field experience.
Another reason why I’m excited about this project is that it pretty much brings me full circle. TopLink was the first commercial product that I ever worked on. Granted, I worked on TopLink Smalltalk way back in the early 90s, but the TopLink for Java developers did give me an opportunity to rant here and there about what I thought the Java version should do.
So… this project is exciting for me because it adds high-value, high-quality functionality to the Eclipse stack; it adds top-quality developers to the Eclipse committer list; and I get to hang out with a bunch of old friends.
Check out the project proposal here.
(Via Planet Eclipse.)
10.4: Avoid the 10.4.9 Eject key activation delay
Users who have installed the recent OS 10.4.9 update have probably noticed that it introduced a delay between the time the Eject key is pressed and when the eject function is activated. This delay also carries over to the Control-Eject shortcut for bringing up the Shutdown dialogue. Whereas a delay might be useful in preventing accidental presses of the Eject key, the Control-Eject combination is far less likely to be pressed accidentally, so the delay is a bit of a nuisance.
Fortunately, the shutdown dialogue can be summoned quickly without waiting for the delay. Instead of using the usual simultaneous Control-Eject combination, use Eject-Control. That is, press and hold the Eject key first, and then quickly (before an eject is triggered) press Control.
And if you’d like an immediate eject action, use Eject-Option in the same manner as above. The same seems to apply when …
(Via MacOSXHints.com.)
getElementsByClassName Speed Comparison
Mark Finkle suggested that I do some speed testing, now that a native implementation of getElementsByClassName has landed in the Mozilla trunk (destined for Firefox 3).
So I went around and dug up all of the different, existing, implementations that I could find. Currently, implementations fall into one of three categories (with some straddling more than one):
- Pure DOM
This usually involves a calls to.getElementsByClassName("*")and traversing through all matched elements, analyzing each element’sclassNameattribute along the way. Generally, the fastest method is to use a pre-compiled RegExp to test the value of the className attribute. - DOM Tree Walker
Is a less-popular means of traversing DOM documents by setting some simple parameters, as specified by the DOM Level 2 Spec. For example, you could traverse through all text nodes in a document (something that you can’t easily do in any other way). - XPath
The most recent technique, to be popularized, was the use of XPath to find elements by classname. The implementation is generally simple: Building a single expressions and letting the XPath engine traverse through the document, finding all the relevant elements.
I’ve chosen some implementations that were representative of each of these techniques.
Tree Walker
An implementation using the DOM Level 2 Tree Walker methods. Builds a generic filter function and traverses through all elements.
- document.getElementsByClass = function(needle) {
- function acceptNode(node) {
- if (node.hasAttribute(“class”)) {
- var c = ” “ + node.className + ” “;
- if (c.indexOf(” “ + needle + ” “) != -1)
- return NodeFilter.FILTER_ACCEPT;
- }
- return NodeFilter.FILTER_SKIP;
- }
- var treeWalker = document.createTreeWalker(document.documentElement,
- NodeFilter.SHOW_ELEMENT, acceptNode, true);
- var outArray = new Array();
- if (treeWalker) {
- var node = treeWalker.nextNode();
- while (node) {
- outArray.push(node);
- node = treeWalker.nextNode();
- }
- }
- return outArray;
- }
The Ultimate getElementsByClassName
Uses a pure DOM implementation, tries to make some optimizations for Internet Explorer.
- function getElementsByClassName(oElm, strTagName, strClassName){
- var arrElements = (strTagName == “*” && oElm.all)? oElm.all :
- oElm.getElementsByTagName(strTagName);
- var arrReturnElements = new Array();
- strClassName = strClassName.replace(/\-/g, “\\-”);
- var oRegExp = new RegExp(“(^|\\s)” + strClassName + “(\\s|$)”);
- var oElement;
- for(var i=0; i<arrElements.length; i++){
- oElement = arrElements[i];
- if(oRegExp.test(oElement.className)){
- arrReturnElements.push(oElement);
- }
- }
- return (arrReturnElements)
- }
Dustin Diaz’s getElementsByClass
A pure DOM implementation, caches the regexp, and is generally quite simple and easy to use.
- function getElementsByClass(searchClass,node,tag) {
- var classElements = new Array();
- if ( node == null )
- node = document;
- if ( tag == null )
- tag = ‘*’;
- var els = node.getElementsByTagName(tag);
- var elsLen = els.length;
- var pattern = new RegExp(“(^|\\s)”+searchClass+“(\\s|$)”);
- for (i = 0, j = 0; i < elsLen; i++) {
- if ( pattern.test(els[i].className) ) {
- classElements[j] = els[i];
- j++;
- }
- }
- return classElements;
- }
Prototype 1.5.0 (XPath)
Mixes an XPath and DOM implementation; using XPath wherever possible.
- document.getElementsByClassName = function(className, parentElement) {
- if (Prototype.BrowserFeatures.XPath) {
- var q = “.//*[contains(concat(' ', @class, ' '), ' " + className + " ')]“;
- return document._getElementsByXPath(q, parentElement);
- } else {
- var children = ($(parentElement) || document.body).getElementsByTagName(‘*’);
- var elements = [], child;
- for (var i = 0, length = children.length; i < length; i++) {
- child = children[i];
- if (Element.hasClassName(child, className))
- elements.push(Element.extend(child));
- }
- return elements;
- }
- };
Native, Firefox 3
A native implementation, written in C++; is a part of the current CVS version of Firefox, will be included in Firefox 3.
- document.getElementsByClassName
The Speed Results
For the speed tests I copied the Yahoo homepage into a single HTML file and used that as the test bed. They make good use of class names (both single and multiple) and is a considerably large file with lots of elements to consider.
You can find the test files, for each of the implementations, here:
http://ejohn.org/apps/classname/
Note: “XPath” is just Prototype’s implementation.
From these figures we can see that the native implementation of getElementsByClassName, in Firefox 3, is a full 8x faster than the XPath implementation. Additionally, it’s a stunning 77x faster than the fastest DOM implementation.
Note: These numbers have been revised from what was originally posted as the lazy-loading nature of
document.getElementsByClassNamewasn’t taken into account. The resulting arrays are completely looped-through now, making sure that all elements are accounted for.
Currently, Prototype has the best general-use implementation: Use XPath selectors wherever possible, fall back to fast DOM parsing.
Interestingly, only Prototype actually tries to implement the document.getElementsByClassName interface (all others do one-off names). However, Prototype doesn’t check to see if the document.getElementsByClassName property already exists, and completely overwrites the, incredibly fast, native implementation that Firefox 3 provides (oops!).
In all, the results are quite astounding. The native implementation is absolutely much faster than anything I could’ve imagined. It completely decimates all the other pieces of code. I can’t wait until this hits the general public – users will, absolutely, feel a significant increase in speed.
(Via John Resig.)


leave a comment