Sep
21
2009
Vladimir Vukićević, the pioneer of bringing the well known OpenGL standard to the web, has just blogged using Firefox to render Spore creatures. Check it out, it’s a pretty impressive demo of this upcoming web standard.
Development on what would become WebGL started back in 2007 with Canvas 3D as an extension for Mozilla Firefox 3.0. Since then it has grown from a single project to an open web standard through the Khronos standards group. The standard is currently under development with a target release date of first half 2010.
Firefox isn’t the only web browser to be experimenting with WebGL, Google and Opera have also pledged to support this standard. The WebKit source code has recently picked up preliminary support.
The web has mostly stayed 2D, but with the advent of CSS Transforms and WebGL, the browser is moving into new territory. The web is evolving into the most important platform of the future.
no comments | tags: Firefox, OpenGL, WebGL, WebKit | posted in Web
Aug
9
2009

Ever wanted your web application to be able to show notifications even if the user may be in another browser tab or application? Now you can!
The relatively new Yip extension for Firefox adds notification functionality. This is not a small JavaScript notification that pops up in the browser tab, but one that integrates directly with the users Operating System.
Yip uses libnotify/notify-osd on Ubuntu Linux, Growl on Mac, and Snarl or Growl for Windows on Windows. If none of these notification applications are installed, it will use Firefox's simple and not as pretty notification system. Ubuntu Linux users have notify-osd installed by default, Growl is popular with Mac users, yet Windows users probably don't have Snarl or Growler for Windows installed.
When building with notifications remember that they are meant to enhance the user experience, not require it.
The Yip extension supports both the Fluid and Prism APIs, but recommends Fluid because of support for an onclick callback function.
The API is simple and straight to the point:
JAVASCRIPT:
-
window.fluid.showGrowlNotification({
-
title: "your notification title",
-
description: "some description",
-
onclick: optionalCallbackFunction,
-
icon: "URL to an icon"
-
});
Since Yip may not be installed on the users computer, just wrap it with a check for fluid. A complete example looks like this:
JAVASCRIPT:
-
if (typeof(fluid) !== 'undefined') {
-
window.fluid.showGrowlNotification({
-
title: "Hello World",
-
description: "The Google icon says Hi",
-
icon: "http://www.google.com/favicon.ico"
-
});
-
}
Related Projects
- Roar: Embed notifications into a web page (powered by MooTools).
- growl.js: Windows only notifications using Growl for Windows.
- NotificationAPI: Notifications in Google Gears
Of all these options, Yip is the best solution by far; its fully cross platform, has a simple to use API, and is ready to use. Install Yip now.
2 comments | tags: Cross Platform, Firefox, Firefox Extension, JavaScript, notifications | posted in Web
Aug
2
2009
The symfony web framework provides two methods for building the database model files when using the Propel Object-relational mapping (ORM) toolkit. The recommended method by the symfony team is to use the schema.yml file, where you explicitly explain your table structure. The second method is to generate a schema.xml file directly from the database.
schema.yml:
Just edit config/schema.yml and list your tables, columns, column types, and foreign keys in YAML form. Build the model files by running:
./symfony propel-build-model
Pros:
- Interfaces better with plugins because most, if not all, plugins use the schema.yml method
- Can be used to create the database tables
- Overall easier to use because it is the most common method
Cons:
- Requires duplicate data by having the database structure in a text file, which can be outdated when the database is updated directly
schema.xml:
To create the model files simply run:
./symfony propel-build-schema xml
./symfony propel-build-model
Pros:
- Supports ALL database features
- Supports the most complex schemas
Cons:
- Errors while building the XML file are cryptic and time consuming to track down (eg: om-template)
Comparison
The schema.yml method supports most projects with relative ease, but is limiting if you need to use more advanced database features that are not supported (propel only supports limited column types). Although, there are tricks to get around these limitations. For example, if you need to use column types that aren't supported, like ENUM, you can simply declare the column as a varchar and Propel won't know any better. This works fine for ENUM because it's simply a text field, but may work for other column types too.
I recommend the schema.xml file for projects that have a very complex schema that cannot be represented in the yml file, or for projects already using XML files to define the database scheme.
I have used both methods on different large projects and have found the schema.yml method to provide faster application development, have more developer support, and easier to work with. I full recommend use of the schema.yml method in all but the most exceptional projects.
1 comment | tags: database schema, Propel, symfony | posted in Web
Jul
19
2009
Recently the WebKit team added support for CSS transformations with 3D GPU acceleration. This means that soon we can built web applications that mimic desktop applications in graphical responsiveness. Charles Ying wrote a simple image gallery application that demos this new functionality.
This is definitely not yet ready for end users but it demonstrates the power of the web platform and where it is heading. With the native video tag, local and session storage, plus much faster JavaScript engines, browsers are changing from simply presenting information to being a fully interactive platform. It's no surprise that Google is developing a web-browser operating system, called Chrome OS.
It is also quite encouraging to see the second browser war bring fresh ideas and increase the possibilities to the browser. Competition is great.

Snow Stack in WebKit Nightly r46091
The CSS Transforms were originally created at Apple by Dean Jackson, David Hyatt and Chris Marrin for the iPhone. Apple then improved the spec and submitted it to standardization at the W3C. Firefox 3.5 supports 2D css transforms but does not yet support the newer accelerated 3D animations.
So how does it work?
The images are put on the page using standard CSS and HTML, and they are then animated by JavaScript using these CSS properties:
CSS:
-
-webkit-transition-property: -webkit-transform;
-
-webkit-transform: rotateY(45deg);
-
-webkit-transition-duration: 2s;
The transition property is set to transform, the transform is set to rotate the image in Y-space by 45 degrees, and the duration is set to 2s. With that, the web browser will take the current position of the image and rotate it by 45 degrees in 2 seconds, which produces an animation effect. How beautifully simple it is!
2 comments | tags: Chrome OS, CSS, CSS Transform, Safari, WebKit | posted in Web
Jul
7
2009
Since Firefox, Safari, and recently Chrome hit the browser scene, the web has been growing and improving at a much faster pace. The next evolution of the web comes in the form of HTML 5, the latest HTML standard that brings native video playback, offline storage, 2D drawing via the canvas tag among others features. Of those, the video tag is the most important and critical to the continued success of the open web.
Native video playback inside a web browser will now be as simple as embedding an image into a page:
<video src="http://example.com/yourvideo.ogg" controls></video>
The benefits of this are immediately obvious to any software developer. It's a native tag so it fits in much better to the web platform, it can be controlled through JavaScript, and no more messing around with a black-box flash embed. Side benefits of this are bringing video to all users, not just the platforms that Flash supports (stable 64 bit version + iPhone version).
So far only Firefox 3.5 and Safari 4 have built in support for the video tag; Opera and Chrome support is in the works.
The web has flourished and grown to where it is today because it is based on open standards and because it is not controlled by any one company or organization. Lets continue to keep the web open and successful by using the new video tag.
2 comments | tags: Firefox, HTML5, Open Web, Safari | posted in Web