Exploring Canvas – An ode to PS301

For me, the most exciting part of downloading a PS3 update is restarting, hearing that sound* and seeing if the shimmering ribbon of glory has been updated. Whether its a new colour, a floatier ribbon or more sparkles, it always seems to get better and better.


Earlier this week, as often happens, I found myself sitting in a darkened room, half reading email on my iPad, and half mesmerised by the PS3 wallpaper. My mind started wandering and I began to think about who made it and what the technology behind it was. I then decided that it was my destiny to try and recreate it. Not having access to any 3D design/animation software I decided to approach the challenge in a more familiar technology… Javascript, or more specifically Canvas.

Progress to date… (Not master branch)

Preview of PS3 style animation

Source on GitHub | Demo of latest version

Right now it’s a bit of a work in progress, it’s got a reasonable interpretation of the organic waves but it’s missing the sparkly bits. Once it’s finished, and if there is any interest (let me know in the comments), I might break it down into some tutorial posts.

DISCLAIMER: It’s only been tested in chrome so far so don’t be disappointed if you’re in another browser and nowt happens.

* The startup sound of the PS3 (which I believe is the sound of an orchestra’s string section tuning up) always reminds me of the opening to Keep the Car Running – Arcade Fire. Once this connection is made in your brain you will never be able to turn on your PS3 without your inner jukebox bursting into song… pretty annoying huh?… I’m sorry.

PS – I just lost the game.

A New Chapter29

A little over five years ago I was blessed with the opportunity to join the web design team at Yell. I had no relevant work experience and no formal training in anything web-related. Luckily I had landed on my feet and had the support of some very knowledgeable, and more importantly, very likeable people.

Sharing a well deserved beer with the UI team - October 2010

Over the years this team tamed my naive enthusiasm and guided it in a very positive direction. Fuelled by their experience and encouragement I was able learn more about the web than I ever thought possible. More importantly I found myself in the very rare and very privileged position of looking forward to going to work on a Monday morning.

This month I was very proud to be promoted to Head of User Interface and take on the leadership of the very team which made me. My only hope is that I can give back half as much to the team as the team has given me.

Thanks – Chris, Rob, Rupert, Jill, Mel, Nick, Leigh, Rachel, Adam, Paul, Matt, Magnet, Grant, Franco, Carlo and everyone else.

Remote-Tilt: Designing the brand01

Backbone.js – Time for Something New20

Backbone.js logo

Last week I was involved in a discussion which amongst other topics covered working with github and building javascript apps with client-side MVC frameworks such as backbone.js. Whilst I had a vague awareness of both I was unable to contribute very much to the conversation due to a lack of hands-on experience. Feeling rather frustrated by this I decided to grab the bull by the horns and jump straight into building a new backbone app and pushing the source code to github.

Last night, as a result, drinklist was born. The app itself is currently very basic and is neither intended to change the world nor make me famous. What I do however hope is that overtime it will evolve into a respectable code example which will cover some skills that I have not yet found an opportunity to implement in my current job.

The technologies involved in the app are:

The first version of the demo app also includes a to “Still to do…” list which outlines where I hope this learning exercise will take me.

Feedback from any more experienced backbone folk or suggested reading links would be much appreciated.

Node.js – Server-side JavaScript24

Last Friday I was lucky enough to attend Remy Sharp‘s one day Node.js workshop in London.

nodejs - server side javascript

The course started, rather conveniently, from the very beginning and concisely covered the basic installation of node.js and getting up and running with node package manager.

Next we used express.js, a node web framework, to rapidly build and deploy a data-driven webapp complete with custom url routing, and EJS page templating. As if this wasn’t already enough, we then wrote another line or two of code to add a fully functional JSON API to provide access our site’s data… amazing!

For me this was the highlight of the day. The speed with which new prototypes can be built and deployed is astonishing. Express JS kind of reminded me of the CodeIgniter PHP framework except it was quicker and easier to work with in almost every respect.

After a very impressive two course lunch, complete with a salad bar (all included in the ticket price) we headed back to the classroom to learn how to create a variety of web servers to support:

For the lazier readers amongst you, there is a good summary of all these technologies over at the HTML5Doctor blog.

Unfortunately, due to evolution of the workshop syllabus throughout Remy’s tour, learning about databases (MongoDB) was no longer in scope for the course. However, thanks to the solid foundation I got from the rest of the course, I am now confident that I can work this part out on my own.

WARNING: After a couple of beers it seems Remy has a tendency to get over-excited whilst demoing his pet projects. If there are any full pints on the table, get your laptop and bag out of the way ASAP!

All in all a great day. I left feeling inspired to build new things, eager to learn more and smelling somewhat beery, thanks Remy.

FriendSync – a New Spotify Feature10

FriendSync is an idea I had for a new Spotify feature that allows you to listen to exactly what your friends are listening to. This kind of functionality accompanied with instant messenger/VOIP would be a great way to share music with friends in real time and discuss the bits of an album that excite you the most. It would be just like you are there in the room, you can skip the tracks that you don’t like and rewind the bits that you think are really special.

How would it work?

The first step needed to enable this kind of feature would be enhancing the friends list to distinguish between friends that are currently online and those that aren’t. This could look something like this…
The more observant amongst you will have also noticed the addition of a FriendSync icon in the top right, next to your user name, but how would it work?

Spotify already utilises a fair bit of drag and drop functionality, for example, dragging songs into playlists and dragging albums into a friend’s inbox. I thought it would be cool to utilise this existing user behaviour for FriendSync to enable you to drag your friends onto the FriendSync icon. This interaction might look something like this…
Once you have dragged a friend onto the FriendSync icon, and they have approved your request, the icon will change to an active state. The same icon will also be duplicated next to the friend with whom you are synced.
Whilst you are synced with a friend you will hear exactly what they hear, they are in control.

If at any point you want to unsync, you can do so by moving the mouse over the FriendSync icon and clicking the cross which appears in the hover state of the icon as shown below…