Skip to: Navigation Content Search


Archive for April, 2008

On WWWriting Monday, April 28th, 2008

Here’s an exercise we were taught in writing school to help free our minds from the conciseness and blandness used by politically-correct trogologytes with nothing better to do than to force us all to use non-figurative, monosyllabic grunts expressly devised to be comprehensible to a sock puppet.

What you do is think of someone you know well and write ten metaphorical sentences about them. It starts by thinking:

“If my friend were a vehicle, what type of vehicle would he/she be?”

The answer might be something like:

“She is a wheat harvester on its back wheels.”

The idea is taken from a poet, whose named I cannot remember, who used this device to describe English poet laureate, Ted Hughes.

For example, here’s one I made up about a person I know:

His shoulders are two oversized furcoats, draped over a telegraph pole.
His voice, a shotgun ringing through a bowling alley on a Saturday night.
His eyes blink over an early evening at the equator.
He uses his nose like a vacuum cleaner sucks up marbles.

As you can see, you can create a fairly vivid image of a person through the association of ideas. My example is rubbish, but give it a go, it’s not only simple but fun - like throwing a hair dryer in the fish tank.

Party on with the Youtube JavaScript API Wednesday, April 16th, 2008

Spewing out Youtube videos on to your page has just become easier. Now you can load, control and search Youtube videos using nothing but JavaScript and a bit of patience. I know, I know. Your excitement is palpable through my DSL exchange.

So what can you do? You can embed two players onto your page:

  1. The chrome player - with all of Youtube’s standard controls
  2. The chromeless player - you guessed it, with no controls

For some, probably sane reason (although I’m yet to ascertain why), when using the chrome interface you cannot load new videos into the same player using the loadVideoById function, which is available to the chromeless player. Therefore if you would like to employ this highly useful method and be able to control playback, you have to build your own controls. Fortunately, the API methods make it rather easy.

Having nothing to do one rainy day, I decided to give it a go. My motivation was related to the fact that we go to a lot of parties but neither I nor my lazy friends are bothered to bring music and whine incessantly if we have to change a CD. Given the wealth of music videos on Youtube these days I thought that I could make a rudimentary jukebox so that you can play and cue music at will, even when plastered on tins of lager.

Naturally, it will play whatever video you feed it, but I don’t really want to watch some inane mashup of the Star Wars movies dubbed to a Linkin Park sountrack or other shit. One application that I thought might be rather splendid would be to create a playlist to join all the parts of a movie or TV episode. I am grateful to all the folk who take the time to splice and upload these treats but, by no fault of theirs, it’s  a chore to click to the next part every nine minutes and twenty four seconds.

Here’s my first attempt. Of course I will excuse myself with the following:

  • it’s alpha
  • code review to come
  • design change inevitable (maybe in the shape of a jukebox, that would be original)
  • predictably, I couldn’t give a wet sock if it worked in IE6
  • ideas for the future: saveable playlists, editable playlist order using sortable behaviour, auto-download of next video for smoother playback, fullscreen (or bigger at least), save /cache searches, tally favourites, plug into last.fm for recommendations, get artist data from musicbrainz, blah blah

At the very least, it’s great for listening to music at work.

Peeing on flies Thursday, April 10th, 2008

Ahh, Amsterdam - the watery princess of the North looking up into the oceans. Exuding chaos and beauty through its sinewy canals. Home to a thousand bicycles and iron hooks from which you can dangle furniture from your storage lofts. Magnet for people of all persuasions - particularly young continentals looking to get stoned.

The novelty of Amsterdam takes a few visits to wear down because you’re hardly on the plane on the way back from wherever you came from and you’re planning your next weekend to the city. This of course is due to your still altered state of consciousness whereby you hold the unwavering belief that you could subsist on joints, hot chips and cake for the rest of your terrestrial existence. Reality often kicks in when you are asked to communicate with someone born of the prevailing system and all you can manage is a string of warbling nonsense surrounded by pauses long enough in which to pour a pint of Guinness.

However Amsterdam is more than this: you will notice, if you are a male, or care to frequent the male toilets, that they paint tiny flies on the urinals. The idea is that you will instinctively aim at the fly when you piss and not on the floor, nor presumably on the person standing next to you. This can only mean that people in the Netherlands either take great delight in urinating on insects or on the floor, but not both at the same time.

You can also see the world’s largest collection of working bikes near the Central Station, crammed into a split-level parking lot on the canal. It is a marvel to witness how this modern city functions without reliance on the car, unlike so many other western metropolises. The prevalence of the bike has led to some astonishingly innovative two-wheeled contraptions such as the bike/trailer combination; the “bike for the whole family” bike, with a seat for mum and dad and two kids; and the reclining bike, which is the only personal displacement vehicle in which you can rest, smoke a doobie and exercise at the same time. The unicycle is notably absent.

Diplomatic immunity through JavaScript Saturday, April 5th, 2008

Would you love to be able to waltz in to a place, piss all over the floor, without anybody saying or doing anything to you? Even if they wanted to punish you, they would have to follow a process that you yourself defined. Haw haw!

Anonymous, self-executing functions can allow you to do this. They’re kind of like diplomatic immunity for your browser and can be very powerful.

(function(){/*
    Oooh it’s so cozy in here. I have access to all
    global variables but I can do what
    I like and no-one will know!
    Now I’m going to do some private things.
*/

var privateVar = “I’m so lonely in here”;
var privateFunction = function(s){ alert(s) };

/*

Okay, maybe I want to share something with the
    outside world but let’s namespace it just in case:

*/

return namespace = {
           publicFunction : function(q){
               return function(a) {
                privateFunction(q + privateVar + a)
               }
            }
};

})();

We can’t access any of the private variables or functions from outside our anonymous function, thus avoiding collisions and overwriting, but we can return public functions that do! namespace.publicFunction is able to see, use and modify our private variables, but only in the way in which we want it.

It’s even possible to throw a bit of curry in there to spice it up. Calling namespace.publicFunction and passing it an argument (in this case a question) returns another anonymous function that expects an argument (an answer) and will then use our private variables to construct a little dialogue.

We would call it like this:

namespace.publicFunction("How are you?\n")("\nThat's too bad");

The example is basic and doesn’t make much practical sense but it demonstrates the way scope works in JavaScript and it can be a simple but handy tool to have in your arsenal.