Web Info & Tutorials

February 5th, 2008

BMO, CIBC, ROYAL AND SCOTIABANK AGREE TO PLAY ROLE IN ABCP RESTRUCTURING

"The support of the major Canadian banks is an important component of the plan, and we are pleased to confirm their participation, which further reflects the spirit of compromise and goodwill that has prevailed throughout this process."

- Four of Canada's largest banks have agreed in principle to join a group of lenders working with Bay Street lawyer Purdy Crawford on a restructuring of about $35 billion worth of Canadian asset-backed commercial paper that was managed by non-bank companies.

Crawford's committee announced Monday that Bank of Montreal (TSX:BMO), CIBC (TSX:CM), Royal Bank (TSX:RY) and Scotiabank (TSX:BNS) have indicated they will participate as lenders in a $14-billion margin call funding facility which could be drawn on if further problems erupt. Read more

February 5th, 2008

CANVAS PIE CHART FROM DATATABLE

I love it when a plan comes together (removes cigar): After I played with Google charts and porting the idea of generating charts from accessible table data over to YUI charts Stoyan Stevanof had to use the same idea to generate his own, home-made Canvas-driven charts:

Example chart generated from a data table using canvas

His solution shows in a few lines not only how to get the data from a table, but also how to do a pie chart in canvas.

February 5th, 2008

MYSPACE ANNOUNCES DEVELOPER PLATFORM

In an obvious move to counter FaceBook’s expanding developer platform, MySpace, the top trafficked social network announced today the availability of the MySpace Developer Platform. News of the imminent release had been circulating for weeks and MySpace finally gave developers the keys to its playground.

The MySpace Developer Platform (MDP) allows developers to create applications that interact with MySpace members and their social data. With MDP you will be able to create compelling new products that integrate directly into MySpace pages and get exposure to millions of people around the world.

While still in it’s early stages, the sandbox will allow developers to start getting their apps ready. The fact that they’ve chosen to support the OpenSocial API should make it extremely attractive to developers that want to have some level of cross-social network integration.

JavaScript at the Forefront

As with FaceBook, JavaScript-based technology, especially Ajax, will play a crucial role in building MySpace applications. Acknowledging their issues with JavaScript exploits in the past, MySpace has tapped OpenSocial as a means to provide a rich development environment while protecting it’s users from the spammers and hackers that have plagued the site in the past.

As spammers propagated through the site, MySpace began blacklisting certain types of JavaScript, HTML, and CSS. We tried very hard to keep as much JavaScript as possible, but slowly and surely illegitimate users hacked away at our filters until finally JavaScript was banned entirely. That left third party application developers with only one dyanmic alternative: Flash. Sites like YouTube saw their birth as widely disseminated Flash decorations for MySpace profiles. Unfortunately, by this time such applications were completely locked out of the MySpace data stream.

So–why is MySpace doing OpenSocial? Because every time we locked down a new JavaScript exploit we were sad, because we knew that legitimate application developers were getting hobbled as a result. For every ten spammers we blocked, we were blocking at least a few people trying to make a living by entertaining our users in a positive way. The OpenSocial platform gives us a chance to let MySpace users play again–this time in a safer, more structured, but at the same time more flexible way.

Providing this level of abstraction should “hopefully” provide much greater flexibility for an expanded user experience especially with the new set of capabilities that will be included in the MySpace API. These include:

  • A suite of online tools for creating and publishing applications (and debugging them).set of RESTful APIs (provided in json, xml, and other formats as needed) that provide endpoints for browser-to-site and site-to-site interaction. These are implemented over the http protocol using a simple, intuitive uri scheme.
  • A mechanism for your application to exchange data with your own site.
  • A system for end users to find and install applications on their profiles.
  • Security mechanisms for protecting end users’ identity, as well as communications verification between MySpace servers and your site.

Apart from the security benefits, the use of OpenSocial is a big enticement as developers will now have the hooks to integrate between MySpace and other social networks such as Bebo, Ning, Plaxo and Six Apart. This alone could be a huge factor in future growth for MySpace which has seen FaceBook slowly cut away at it’s dominance. It will be interesting to see how FaceBook replies to this. While they’ve recently released their JavaScript library to the development community at large and have opened up their “walled garden”, their lack of support for a “standard” social network API and MySpace’s announcement may force them to reconsider integrating with OpenSocial; much to the pleasure of Google.

You can see a video demonstration of an OpenSocial MySpace Application, presented by Chris Bissell, Chief Software Architect at MySpace, here:


February 5th, 2008

COLLABORATIVE DRAWING WITH SKETCH

Roberto Saccon has taken the Dojo example program sketch, which itself “fully implements the idea of pipelining the drawing process based on sequential commands for adding, modifying or deleting objects” and has Cometized it:

Very little additional code was necessary to combine the chat app and the drawing app into a collaborative example app. I added a single line of code to the drawing app to let it publish its demands using Comet. Another line was added to the chat app for sending incoming drawing commands to the drawing application (any additional code only served to make things prettier, more readable, or easier to extend).

The application has been tested on ErlyComet (and there is also the source code), but there are no server-side dependencies, so in theory it should run equally well on any Bayeux-compliant Comet server. And there is also a short screencast.

What is missing to make such an example application suitable for real life tasks? A lot, of course: the whole server-side logic, for one. And deciding (automatically or based on human interaction) which incoming changes should be applied to the master document (like conflict resolution in version control systems, just in quasi-real time).

Very nicely done.

Comet Sketch

February 5th, 2008

CONTINOUS INTEGRATION FOR THE FRONT END

Gareth Rushgrove has posted on continous integration for the front end.

He talks about a new site, inursite.com that does one thing:

The premise is simple; enter a few of your sites and inursite will visit them once a day and run a markup validation service over the page. You then get a feed of the pass or failure status. It’s simple but brilliant. For example, I have this very site added to the service. If I put some invalid markup in this post, tomorrow morning I’ll get an item in my feedreader telling me of my mistake. I’ll get that every day until I fix the problem.

This green/red (pass/fail) type approach to simple tests is what I find most powerful about continuous integration systems like Cruise Control.

Gareth also has some ideas for improvement:

  • Has all the CSS been compressed using something like CSSTidy.
  • Has all the javascript been compressed using something like JSMin.
  • Does any Javascript pass the harsh taskmaster that is JSLint.
  • If my markup a little bloated? Maybe I could set a maximum size for the markup and get a fail is I go over that.
  • Ditto CSS file size.
  • Ditt Javascript.
  • Ditto images.
  • If pages have associated feeds, then validate them as well according to the relevant specification (probably RSS or Atom).
  • How many HTTP Requests does it take to load the whole page, including all the relevant assets.
  • How many hosts are required to load the whole page? I’d like to be able to set a maximum number and get a fail if I go over that.
  • Is the page gzipped on the server.
  • And just to keep this topical, does the page have either the IE8 meta element or the associated HTTP header set to a particular value.

This sounds like setting up YSlow to run in a continous manner.

February 5th, 2008

RANDOM THOUGHTS FROM A FIREFOX

Robert O’Callahan has a nice recap of BaaCamp down under.

Robert talks about various talks that he went too, for example on AIR which touted:

features that can and should be provided by browsers too, possibly via extensions like Gears for the laggards, ideally via standard APIs like HTML5.

Robert feels like there is still a bit difference between the browser and Flash:

There are few philosophical differences between AIR and the browser. The biggest one is that AIR doesn’t sandbox apps, so users have to make a trust decision to use an AIR app. I don’t know how high a barrier that is to AIR app adoption; I hope it’s a high one, because users should be reluctant to let applications abuse them! Another, related difference is that AIR lets apps escape browser chrome such as the forward/back buttons and the address bar. I can see that app designers would love that — yay for integrity of artistic vision! — but I’m not sure users would. Browser navigation (back, forward, bookmarks, addresses and autocomplete) is a powerful mental model that is not only deeply entrenched but is actually very useful.

He then goes into detail on the IE 8 features, and finishes up on bug hunting with Firefox 3. I have been using that on the Mac, along with Webkit, and I am impressed. It is fast, and doesn’t churn the memory as much. I couldn’t use Firefox 2 anymore!

February 5th, 2008

OPENSOCIAL 0.7: COMING TO PRIME TIME

The latest version of the OpenSocial spec has been released, 0.7:

The best news is that, based on numerous discussions with both app developers as well as container sites, we believe OpenSocial 0.7 has all the necessary pieces to launch OpenSocial apps to users at scale. In fact, both hi5 and orkut will be using OpenSocial 0.7 for their upcoming user-facing launches.

There are two major pieces to this release:

Updating OpenSocial

The OpenSocial APIs have been upgraded:

  • Standardized profile information fields. This release adds a slew of standard fields that you can access about a Person. These include location, schools, pets, movies, sports, and more. However, keep in mind that a container may not have all of this information available so your application should always check first by using the supportsField method.

  • Support for viral growth. Two new methods allow your application to send messages on behalf of a user. You can invite a user's friends to install your application with the requestShareApp method. You can also send an application-specific message with the requestSendMessage method. Both of these methods require the user sending the message to authorize the request first.

  • Activity templates. You can now define activity messages with placeholders for pieces of applicaton or user data. This separation of data and presentation allows multiple activities to be combined into activity summaries—consolidated bundles of activities that let users know what their friends are up to without having to wade through a flood of messages. For example, instead of seeing five new updates about friends that installed a new application, you would see one update that says five of your friends added the application. For details on how to use activity templates in your application, see opensocial.Activity in the OpenSocial API reference.

  • Simplified persistence API. Support for global and instance-scoped application data has been removed from the API. Global application data can be implemented using feeds (that can be prefetched for performance) and other web standards. Instance-scoped application data can be implemented on top of user-scoped data by including the module ID of the application in the key.

Gadgets Open Sourced

As promised, the full Gadgets engine has been open sourced:

As part of the Apache Shindig project, gadgets have been open sourced. The new Gadgets Specification defines the gadgets.* JavaScript namespace where you'll find that some of your favorite methods from the Gadgets API have been re-namespaced into a cleaner API for your convenience and clarity. For example, _IG_Adjust_IFrame_Height is now available as
gadgets.window.adjustHeight

If you are in the bay area, you can visit a hackathon on February 7-8 and February 14-15 at the Googleplex in Mountain View where you can hang with the technical folk and get your apps approved for Orkut.

February 5th, 2008

SUPER TUESDAY: AJAX ENDORSEMENTS

Super Tuesday

TechCrunch got semipolitical and got into the endorsement business, ostensibly supported on their school policy.

So, sure Ajaxian needs to intend in on this action. How meliorate to do so than verify a countenance at what toolkits are utilised by the crowning runners:

Barack Obama

Barack is disagreeable to be comprehensive by weilding Prototype, Scriptaculous, and jQuery in the aforementioned page. This is a venturous move as it adds weight, and could incurvature the rivals against apiece other.

Hillary Clinton

Hillary has also absent for Prototype and is using Ben Nolan’s Behaviour accumulation to add JavaScript unobtrusively, and is patch her Flash with SWFObject.

John McCain

This is a taste of a band foul. A analyse maker on McCain’s website shows you Dreamweaver every over. There are more MM_* functions than you crapper stroke a monkey at.

Mitt Romney

Mitt has absent for a assorted approach. He is hoping that an grey of Mootools lovers module vantage him through.

Conclusion

I module hit to go for Barack with a offense edge. His website is rattling nicely designed, and I idolized how it utilised to move soured meet with a recording of his message.