Activate your free membership today | Log-in

Tuesday, April 21st, 2009

O3D: Google releases 3D API in a Browser Plugin

Category: Google, Plugins

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.

There are plenty of demos, samples of code and shaders (they created a O3D shading language.

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? :)

Posted by Dion Almaer at 2:23 pm
13 Comments

++++-
4 rating from 48 votes

Wednesday, April 15th, 2009

Horizontal Accordion 2.0 for jQuery

Category: Plugins, UI, jQuery

Alexander Graef wrote in to tell us about the excellent Horizontal Accordion jQuery plug-in, which takes an unordered list:

HTML:
  1. <ul class="test">
  2.   <li><div class="handle"><img src='images/title1.png'/></div><img src='images/image_test.gif' align='left'/>
  3.     <h3>Content 1</h3>
  4.     <p>...</p>
  5.   </li>
  6.   <li><div class="handle"><img src='images/title2.png'/></div><img src='images/image_test.gif' align='left'/>
  7.     <h3>Content 2</h3>
  8.     <p>...</p>
  9.   </li>
  10.   <li><div class="handle"><img src='images/title3.png'/></div><img src='images/image_test.gif' align='left'/>
  11.     <h3>Content 3</h3>
  12.     <p>...</p>
  13.   </li>
  14.   <li><div class="handle"><img src='images/title4.png'/></div><img src='images/image_test.gif' align='left'/>
  15.     <h3>Content 4</h3>
  16.     <p>...</p>
  17.   </li>
  18. </ul>

and transforms it into this:

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

Check out the demos.

Posted by Ben Galbraith at 8:06 am
7 Comments

++---
2.5 rating from 45 votes

Monday, April 13th, 2009

Notimoo Brings Growl to MooTools

Category: MooTools, Plugins, UI

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:

JavaScript:
  1. // Now I create the manager so it will display notifications from the left bottom corner
  2. var notimooManager = new Notimoo({
  3.    locationVType: 'bottom',
  4.    locationHType: 'left'
  5. });
  6.  
  7. // Showing a notification that does not disappear.
  8. notimooManager.show({
  9.         title: 'Testing notification',
  10.     message: 'This notification will not disapper on its own. You must click on it to close.',
  11.     sticky: true
  12. });

The Notimoo project is hosted on Google Code under an MIT license.

Posted by Ben Galbraith at 11:30 am
2 Comments

++++-
4.1 rating from 31 votes

Tuesday, April 7th, 2009

Text-Overflow for Firefox via jQuery

Category: Firefox, Plugins, jQuery

Devon Govett is a fan of the new CSS3 property text-overflow:

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:

$("span").ellipsis();

Check out the plug-in, and also a demo of it in action.

Posted by Ben Galbraith at 9:03 am
25 Comments

+++--
3.2 rating from 23 votes

Friday, December 19th, 2008

Write your own Yahoo! BrowserPlus service with new SDK

Category: Browsers, Plugins, Yahoo!

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.

A Ruby example service is shown:

RUBY:
     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.

Posted by Dion Almaer at 5:13 pm
Comment here

++++-
4.3 rating from 30 votes

Tuesday, November 18th, 2008

Live Blogging the Yahoo BrowserPlus Release Party

Category: Browsers, Plugins, Yahoo!

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:

Eric Miraglia is opening the release party up with a nice Introduction to YUI:

* 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:

Desktop notifications:

JAVASCRIPT:
  1.  
  2. BPTool.Notify.create().show("My Title", "My Message");
  3.  

Drop-in uploading widget:

JAVASCRIPT:
  1.  
  2. BPTool.Uploader.create("uploader", {uploadUrl: "up.php"}).render();
  3.  

Check out the full developer docs that went live for more details.

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).

Posted by Brad Neuberg at 7:36 pm
1 Comment

+++--
3.7 rating from 18 votes

Monday, October 20th, 2008

Greasemonkey, Chrome Edition

Category: Browsers, Chrome, Plugins

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.

Posted by Michael Mahemoff at 5:09 pm
4 Comments

++++-
4.1 rating from 22 votes

Monday, July 21st, 2008

WebMonkey’s Five Best Firebug Extensions

Category: Debugging, Plugins

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
  • Rainbow for JavaScript syntax highlighting

Nice list!

Posted by Ben Galbraith at 9:06 am
11 Comments

++++-
4.7 rating from 26 votes

jQuery: Sparklines Plug-in

Category: Plugins, jQuery

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... ;-)

(Oh, and there's also a simple Sparkline generator for Google Charts over at style.org.)

Posted by Ben Galbraith at 8:21 am
9 Comments

+++--
3.8 rating from 31 votes

Friday, October 19th, 2007

jQuery Logging

Category: Library, Plugins, Tip, jQuery

Dominic Mitchell has created a mini jQuery logging plugin that ties Firebug to the call chain.

This means that if you are debugging something you can quickly add a .log("....") in the chain:

JAVASCRIPT:
  1.  
  2.   jQuery.fn.log = function (msg) {
  3.       console.log("%s: %o", msg, this);
  4.       return this;
  5.   };
  6.  

Now, I can just stuff a call to .log() in the middle of what I’m doing to see what I’m currently addressing. e.g.

JAVASCRIPT:
  1.  
  2. $(root).find('li.source> input:checkbox').log("sources to uncheck").removeAttr("checked");
  3.  

The nice thing about logging to firebug is that each node becomes clickable in the console, so you can immediately see the context.

Posted by Dion Almaer at 11:05 am
13 Comments

++---
2.9 rating from 82 votes

Wednesday, August 29th, 2007

AjaxRain.com gets a facelift, tops 600+ Ajax/JS/RIA controls

Category: Ajax, Plugins, Roundup

AjaxRain.com, the site dedicated to aggregating Ajax, JavaScript and RIA controls & libraries, has gotten a cool facelift and some much needed features. On top of that, they continue to post controls at an amazing rate with 638 submissions at last count.

Some of the new nuggets include:

  • Storing favorites
  • Comments
  • Voting on entries
  • Date that a submission was posted
  • Enhanced search
  • 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.

Posted by Rey Bango at 1:00 pm
10 Comments

++---
2.7 rating from 3 votes

Monday, August 7th, 2006

Ajax3D - the Next Arc up the Hype Curve

Category: Editorial, Plugins

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.

JAVASCRIPT:
  1. //ajax3d.js
  2. var browser = null; var context = null; var listener = null; var listenersSetup = false;
  3. function initAjax3d(filename)
  4. {
  5.    browser = null;   context = null;   listenersSetup = false;
  6.    browser = document.FLUX.getBrowser();
  7.    if (browser != null) {
  8.       listener = new Object();
  9.       listener.browserChanged = browserChanged;
  10.       browser.addBrowserListener(listener);
  11.       if (filename != null)
  12.          browser.loadUrlS (filename);
  13.       else
  14.          context = browser.getExecutionContext();
  15.    }
  16. }
  17. // [snip]
  18. function createX3DFromString(str) {
  19.    var scene = browser.createX3DFromString(str);    var rootnodes = scene.getRootNodes();    var i;
  20.    // Do a bit of work to deal with the quirky X3D add/remove root node paradigm
  21.    for (i = 0; i <rootnodes.length; i++) {
  22.        node = rootnodes[i];
  23.        scene.removeRootNode(node);
  24.        context.addRootNode(node);
  25.    }
  26. }

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.

Posted by Dietrich Kappe at 5:45 pm
12 Comments

+++--
3.2 rating from 26 votes