AngularJS… by Google

AngularJS is by far one of the most promising frameworks to fill the gap of JavaScript development in the RIA developer’s toolbox…. so regardless of me posting about it before, I felt compelled to do it again…


The übercool thing about AngularJS is that its entirely unobtrusive and an excellent system citizen, it works perfectly fine together with any other framework you may depend on…

Brackets is build using jQuery, so targeting technology agnosticism when choosing an application framework is empiric… enter AngularJS.

Comparing to KnockoutJS and BackboneJS; AngularJS is definitely comparable in features and the coding elegance is by far higher than with either of the aforementioned…

Check it out (again)…

Google, JavaScript

Google MiniMessage… now anywhere you need it

One of the things you notice quickly when building gadgets for the Google Apps Platform is that there are significant inconsistencies between the different environments, the API’s available and the way they needs to be configured and deployed… some of the time the differences are more or less logic and self-explanatory, however in other cases it’s difficult to make sense from it… and its made even less logic when it comes to the lack of proper documentation which in some cases is erroneous or at best, entirely absent… one of those cases is the availability of the MiniMessage API

…since it’s not available in the Gmail Contextual Gadget environment, I decided to implement it myself with the same interface as the Google implementation so the code wouldn’t have to undergo a lot of change when switched between different environments…

MiniMessage = function( container ) {

	this.messages = $( "<ul></ul>" );
	this.messages.addClass( "miniMessage" );

	this.container = container != null ? container : $( document.body );
	this.container.append( this.messages );

MiniMessage.prototype.container = null;
MiniMessage.prototype.messages = null;

MiniMessage.prototype.dismissMessage = function( message ) {

	try {
		$( message ).remove();
	catch( Error ) {
		// ignore

MiniMessage.prototype.createMessage = function( message ) {

	var messageElement = $( "<li>"+ message.toString() +"</li>" );
	messageElement.addClass( "miniMessageItem" );
	this.messages.append( messageElement );
	return messageElement;

MiniMessage.prototype.createStaticMessage = function( message ) {

	return this.createMessage( message );

MiniMessage.prototype.createTimerMessage = function( message, seconds, callback ) {

	var messageElement = this.createMessage( message );

	var me = this;
	var dismissMessageFn = function() {
			me.dismissMessage( messageElement ); me, messageElement );
	window.setTimeout( dismissMessageFn, seconds * 1000 )

	return messageElement

MiniMessage.prototype.createDismissableMessage = function( message ) {

	var message = this.createMessage( message ); this.messageClickHandler.bind( this ) );

MiniMessage.prototype.messageClickHandler = function( event ) {
	this.dismissMessage( )

Since basically every JavaScript project I do in some way or another uses jQuery, I opted to allow dependency on this, however should it be necessary to omit the use of jQuery (which is only used for DOM manipulation anyways), it would to change the constructor to use native DOM management functions…


Current Waves… Adobe & Google

The tides are over us in terms of waves rolling and breaking all over the online ecosystems.
Two of these are the Adobe and the Google Wave.

AdobeWave_LogoGoogle Wave Logo

Essentially their business model is somewhat similar, however their initial exhibition displays somewhat differences in focus and application (not in the technical sense of the word “application”, but in the sense in which way it can and is expected to be used).

Whereas the focus for the Google Team is to display the collaborative element of creating and “riding” waves, Adobe seems to focus more in the initial phases on offering organizations to create “buzzes” to which subscribers can stay tuned. The technologies and implementation underneath the applications are quite similar in terms of fundamental features, however the Google implementation does offer more flexibility, features and eventually better prospects for playing a major role in the near future communication landscape.

In essence “Adobe Wave is an all-purpose aggregator designed to let you keep up to date on a variety of different media streams. The application is a simple AIR app that connects to a variety of different services and displays a small alert when new content is available.” (

On the other hand, “Google Wave…is a new model for communication and collaboration on the web.”
The description continues with defining that “a wave is equal parts conversation and document. People can communicate and work together with richly formatted text, photos, videos, maps, and more.
A wave is shared. Any participant can reply anywhere in the message, edit the content and add participants at any point in the process. Then playback lets anyone rewind the wave to see who said what and when.
A wave is live. With live transmission as you type, participants on a wave can have faster conversations, see edits and interact with extensions in real-time.” (

So, to clarify… the current application of the two “waves” have very few things in common and the common word “wave should in this case not be considered to be anything but a an abstract term and not something indicative for either application or implementation.

ActionScript 3.0

Google Wave… likely now not waporware, and now with an AS API

Google Wave will now suddenly not become waporware… I never thought it would, however lots or credible people have spoken about the chance that Google Wave would either never see the day of light or if then, only for a short time.

Google Wave Logo

If you want to get started with utilizing the Google Wave API’s and like I am currently, mostly building systems based on ActionScript and Flex, you don’t need to start implementing your own delegate API Google’s API, a couple of guys from the Google Developer Community has created a simple ActionScript implementation already.

Check it out…

A couple of notes…
* it uses ExternalInterface to call the actual JavaScript implementation (so no new communication logic)
* its released on the Apache License
* its very recent and active (last commit at the time of this post was 28 hrs ago)

Home Automation

Introducing Google's PowerMeter…

How much does it cost to leave your TV on all day? What about turning your air conditioning 1 degree cooler? Which uses more power every month — your dishwasher or your washing machine? Is your household more or less energy efficient than similar homes in your neighborhood ?

Its nearly impossible to make informed choices about electricity. This is a problem but also a huge opportunity for us all to save money and help the environment by reducing our power usage. Studies show that access to your household’s personal energy information is likely to save you 5–15% on your monthly bill. Even greater savings are possible if you use this information to see the value of retiring your old refrigerator, installing a new air conditioner or insulating your home. The potential impact of large numbers of people achieving similar efficiencies is even more exciting. For every six households that save 10% on electricity, for instance, we reduce carbon emissions as much as taking one conventional car off the road.

In Denmark we have Elsparefonden’s MyHome project and some clever legislation forcing Utility Companies to share consumption data with the clients. However, its far from the situation in most other places in the world which is why its so interesting what Google is doing with their PowerMeter application. At Google they’re doing their helping enable a future where access to personal electricity information helps everyone make smarter energy choices. Google PowerMeter shows consumers their electricity consumption in a secure Google gadget. Currently they are testing the product with utility partners in the US, India and Canada and they plan to expand the rollout of Google PowerMeter later this year.

Google PowerMeter

Google PowerMeter Screenshot

Check it out…


Join other Google Developers… at I/O


For two days in May, more specifically the 27 – 18th of May 2009, thousands of web developers will come together to learn how to develop web applications with Google and open technologies. Its a chance to learn from product experts about Android, App Engine, Chrome, Google Web Toolkit, AJAX APIs and more Google related stuff…


If you are in to any of that stuff, you should consider attending… its in the Moscone West Conference Center in San Francisco (same venue for MAX 2008 NA).

Check it out…


SRWare Iron : Google Chrome without privacy controversy

If you are thrilled by the fast rendering, sleek design and innovative features of Google Chrome… but are concerned about what and who Google may be tempted to sell your usage patterns to: SRWare Iron is the answer…

It’s based on the Chromium-source and therefore offers the same features as Chrome, but without the critical privacy problems.

Check it out…