Google has released O3D, a browser plugin that gives developers a 3D API. It sits at a slightly higher level than other APIs (such as OpenGL / Canvas 3D type implementations) so it will be interesting to see if developers like the higher level abstraction, especially for building games. These APIs can also be implemented on top of the lower level APIs, so in theory it could sit on top of Canvas 3D.
Interestingly, it embeds V8 as the JavaScript engine which makes for a uniform engine, but unfortunately you can’t use your browser debugger (e.g. no Firebug).
It has also been carefully positioned “This API is shared at an early stage as part of a conversation with the broader developer community about establishing an open web standard for 3D graphics.”
It is interesting to see another new plugin from Google. I always hoped that Gears would be one developer plugin to rule them all but then we have the Earth API, and this (as well as the non developer ones like the defunct Lively).
Anyway, cool to see rich experiments in bringing 3D to Web developers, and I look forward to seeing what people do with it! Leisure Suit Larry 3D anyone? :)
It's a complete re-write of the old plug-in and works on Firefox, IE, and Safari. Here's the feature list:
* No dependencies
* Optional use of easing plugin (still some work needed)
* Close and open content one after the other
* Close and open at the same time
* Choose trigger (mouseover, click ...)
* Easily control through external calls
* Open content on load
* Open content through hash tags in the url (#tab1, #tab2...)
* Position of handle (left, right)
* Mixed handle positions - 2 left , 2 right ...
* Cycle through content by interval
* Events when animations starts and ends
* Hide content until all has been assembled
Joining the world's collection of Growl-related libraries is Notimoo, a beautiful Growl implementation for MooTools. It's a little more sophisticated than most of the Growl ports as it supports persistence messages (that require a user's click to clear and scroll into view) and allows you to configure where on the screen the messages appear:
There are a few CSS features that Microsoft pioneered and has had available to developers in Internet Explorer for a long time now. One of those features is the text-overflow property, which is now in CSS3 and has implementations in Safari, and Opera. Firefox still does not support this feature, but I have heard that it will in Firefox 3.1.
Here is a rundown of what the property does. When text overflows an element’s box, the text-overflow property helps leave a visual hint to the user that there is more text. When a value of ellipsis is used, three dots will be shown before the text is clipped by overflow: hidden.
Lorem ipsum dolor sit amet, c…
I wanted to be able to use this feature in all browsers, so I wrote a small jQuery plugin in order to support Firefox. To use, just call ellipsis() on a jQuery object. For example:
Lloyd Hilalel and the Yahoo! BrowserPlus team have released a BrowserPlus SDK which allows you to easily create your own services:
We're extremely happy to announce the availability of the BrowserPlus SDK. This first SDK and the accompanying documentation gives you all the tools you'll need to start extending the web using BrowserPlus. Getting started is easy, you can hop over to our tutorial and write your first service in about 15 minutes.
In addition to the SDK, we've pushed a new platform version, 2.1.14, that fixes several bugs reported by all of you. We deeply appreciate your continued contributions and hope with the SDK and our ongoing process of open sourcing BrowserPlus we'll empower you to contribute even more to the project.
class MyGreatServiceInstance
def initialize(context)
end
def HelloWorld(transaction, args)
transaction.complete("Hello #{args['who']} from my great service!")
end
end
rubyCoreletDefinition = {
'class' => "MyGreatServiceInstance",
'name' => "MyGreatService",
'major_version' => 0,
'minor_version' => 0,
'micro_version' => 1,
'documentation' => 'A GREAT service.',
'functions' =>
[
{
'name' => 'HelloWorld',
'documentation' => "Say \"hello\" to the world",
'arguments' => [
{
'name' => 'who',
'type' => 'string',
'documentation' => 'who you want to say hello to',
'required' => true
}
]
}
]
}
There is also a new service released:
Welcome the new Zipper service to our collection! A big problem with some web apps today is being able to efficiently attach all file types. Zipper plays nicely with Uploader and lets you compress files or folders on the client before uploading them. This service should be considered alpha, and we look forward to your feedback and ideas on how to make this more useful. We've got lots of ideas of which way to take this service (lzma being first and foremost), but would love to hear your thoughts.
Austin Chau and I are here on the Yahoo campus for the Yahoo BrowserPlus release party. I'm going to blog the event as it happens here (Disclosure: I work for Google with the Open Web Advocacy and Gears teams).
First, Ernest Delgado, Canvas whiz here at Yahoo, sent me a cool demo showing a prototype he and Michael Johnston made of Yahoo Maps and Flickr integrating with Yahoo BrowserPlus using the native gyroscope on Macs. You just hit the side of the laptop, for example, in order to jump to the next Flickr picture, or tip your laptop to zoom around a Yahoo Map:
* Starts with some really nice demos of things you can create in the browser using YUI.
* Underlying technologies driving browsers are very complicated.
* About 7 knowledge areas needed for web development -- each is different than the standard, with bugs and specialized expert knowledge. You get about 672 different permutations of things needed for you to know and test on.
* YUI focused on "A-grade browser support".
* Good to target toolkits like YUI, since it helps you be future-compatible when new browsers appear like iPhone and Google Chrome
* Goal of YUI: Have a sophisticated widget like a rich text editor work cross-browser using just a snippet small snippet of code.
* Also want things to be automatically accessible.
* Progressive enhancement should be easy and possible, showing a cool demo of hierarchical menus still being readable on Lynx, a version of Firefox with no JavaScript, and then a full IE with CSS and JavaScript on.
* YUI is ala carte, file sizes are small, between 15 and 30K for any given component (including gziped)
* Deployed at Yahoo for three years, on every major property, 400 million users/browsers consuming YUI every month. In properties like Flickr and on the front page, well tested.
* YUI in lots of places: iGoogle, Wall Street Journal, Mozilla, LinkedIn, Southwest.com, Obama website, more
* ~1,000,000 external downloads
Now Lloyd Hilaiel is getting up to present on Yahoo BrowserPlus, the focus of today's event:
* The teams motivations: people get browsers -- browsers could be so much more -- plugins aren't working! Takes too long for new innovations to propagate (5-7 years)!
* Non-goals: no fixing web UI, no web outside the web (like AIR or Mozilla Prism), no improving JavaScript (that's the domain of YUI, JQuery, Dojo, etc.)
* YES to new web features with low overhead. Low overhead: low intellectual overhead, low overhead to implement and get it into widespread production
* Plugins have strengths (scriptable, cross-browser), but they have problems... installing them sucks, writing them is hard, sharing doesn't happen, updating is clumsy, securing them is hard
* BrowserPlus enables in-browser desktop applications
* Abstraction layer over web plugins. Implements all the stuff common to web plugs, decreasing cost of development and helping end users with management and installation
* User install core platform just once
* Page requests distinct services it wants to use, if not installed user is prompted to accept services and they are installed on the fly
* Demo of Flickr uploader working in browser using Yahoo BrowserPlus - drag and drop into browser of images, even folders for recursive uploading, 100% leveraging client-side functionality, multiple file selection.
* Demo of a BrowserPlus marble maze game using the Mac's motion sensor that exposes a single function that gives the laptop's x and y position and acceleration. Idea is that you can expose simple functions for custom hardware -- rest of app can just use web technologies.
* Demo where you can drop a file into a page and then work with the files contents, service coming out soon. Took just one day for them to create. Imagine dragging and dropping vCards or iCal files for example for a web-based calendering system.
* Demo showing desktop notifications
* Services installed on demand, no more monolithic plugins -- instead smaller services, installation seemless, no browser restarts
* Authoring of new services currently restricted to Yahoo and partners
* BrowserPlus will be Open Source! Goal is to have Service API and services open source by end of year, everything else by mid next year.
* Need to figure out how to protect end-users while removing Yahoo from the loop of handling serving up the services
* Yahoo roles: consumer of the platform and the project maintainer (bug fixes, feature requested, service adoption)
After a short break the team (Lloyd Hilaiel, Steve Spencer, David Grigsby, and Gordon Durand) did a deep dive on the Yahoo BrowserPlus architecture, security model, user-facing interaction, how web developers interact with it, and how to create your own services. There is some really impressive engineering in here; they've tackled some hard problems. There's lots of great material they went over, too much to summarize here. You can download the presentations from here in Keynote format.
Here's a snippet of using BrowserPlus from some JavaScript:
Services are either binary shared libraries (.so or .dll) or Ruby script! The Ruby interpreter itself is a Yahoo BrowserPlus service that other services can use (services can be composed together and can work with each other, similar to how Unix utilities work with piping).
Chromium gained an important patch over the weekend, with the introduction of Greasemonkey support. The patch came from none other than Aaron Boodman, creator of the original Firefox add-on, and also a Google employee.
For now, it's just a patch and it's not yet clear if and when it will be part of the official Chrome release. As GHacks explains:
Since there is no way of adding extensions to Chrome yet users have to live with some limitations. Only scripts in c:\scripts are loaded and only if the user adds the parameter –enable-greasemonkey by appending it to the program’s shortcut.
The Firefox Greasemonkey extension has been a huge success, and spawned an entire ecosystem of scripts, developers, and users in its own right. Its ultra simplicity has made it immeasurably easier for enthusiasts to "scratch their own back" and patch up a troublesome website in a matter of minutes. It's not hard to see how the pure Javasript approach could be extended to form a more comprehensive extension platform. It will be interesting to see if, as I speculated on my blog today, this patch is to be the seed for Google's overall approach to Chrome extensions.
In any event, the Chrome space has a lot of user-scripting innovations to look forward to in coming months. And I daresay the odd porting effort too.
Adam DuVander over at WebMonkey has compiled a list of their five favorite Firebug extensions. The ever-popular YSlow tops the list, but to that they add:
Firecookie for easy access to cookie information
FirePHP to integrating server-provided PHP debugging information with the Firebug UI
Pixel Perfect for overlaying mock-ups on top of the real thing to ensure you've got a good implementation
Edward Tufte has long had a following of fans in the field of information visualizations. Among his interesting taxonomy of visualization types is the "Sparkline", which he describes as "data-intense, design-simple, word-sized graphics".
While Tufte originally suggested that computer displays are too low-resolution to effectively make use of Sparklines (vs. printed page), James Dempster pointed us to some work the folks at Splunk have done to join a long line of folks who have given it a go anyway.
The resulting jQuery plug-in is really nice. Now if only they had the ability to overlay two line graphs over the same area using a transparent fill... ;-)
Expansion into posting RIA components based on SilverLight & Flex
MiniAjax.com, a site that was doing the same thing and started off with a bang, has since gone stale and it looks like AjaxRain now leads the pack. Are there other sites like these? If so, post the links in the comments.
Overuse a term and it becomes meaningless. How much meaning is still in the term 'Ajax?' Media Machines tries to wring a little more buzz out of it -- first take an X3D and VRML browser plugin with ECMAScript bindings (Flux), combine it with XMLHttpRequest and voila! You've got Ajax3D. At least that's what you have according to their latest press release.
Media Machines, Inc., a leading provider of open source, real time 3D communications on the web, today announced Ajax3Dâ„¢, a Javascript-based software library and development paradigm for deploying online virtual worlds and 3D web applications based on Ajax and X3D. The company also issued an open call for participation in an industry forum at www.ajax3D.org, dedicated to the research and development of online virtual worlds using 3D open standards and Ajax best practices.
A quick look at www.ajax3D.org reveals a somewhat anemic collection of forums and 'tutorials.' You have to view source and download the javascript files to figure out what's going on.
var scene = browser.createX3DFromString(str); var rootnodes = scene.getRootNodes(); var i;
// Do a bit of work to deal with the quirky X3D add/remove root node paradigm
for(i = 0; i <rootnodes.length; i++){
node = rootnodes[i];
scene.removeRootNode(node);
context.addRootNode(node);
}
}
There's no documentation to speak of, unless you head over to www.web3d.org and read through their obtuse standards documents. To Media Machines' credit, they did just release the source of their plugin to open source, so you could crawl through the code to figure out all of the bindings. Even so, how much is the 'Ajax' involved with '3D'? Not a whole lot. Certainly not enough to warrant the coining of a new term and the issuing of a press release.
Update 1: The ajax3d.org site now does have some text to go with the tutorials. Was I too harsh in my assessment of Ajax3D as an excercise in hype? I don't have anything against the 3D or VRML folks, but unless you can show me 3D without a plugin, I'm still a skeptic.