Saturday, October 01, 2011

Sarah castille's new website

My sister-in-law has just launched a new website (www.sarahcastille.com) to support her growing career as an author. There is not much there yet, but be sure to check regularly for news on her competition results (3 finalist positions so far) and when her first book is to be published.

www.sarahcastille.com


Tuesday, June 10, 2008

Objective Javascript

OK. so I theorized, and now someone else has done the dirty work...

http://ajaxian.com/archives/an-interview-with-280-north-on-objective-j-and-cappuccino

absolutely brilliant. Will have to look into how they do this, and what the resulting code looks like. But I like it!

And the source will eventually be found at

http://objective-j.org/

though that's not available yet, but you could get a naughty version of it here

http://theunixgeek.blogspot.com/2008/06/objective-j-leaked.html

though that's not very ethical...

What Netbook?

So, I really want a little laptop that has great battery life and is very small and light. I want to use it for reading my (already downloaded) web news on the train, and maybe a little bit of scripting. I don't want windows. I don't want to pay much. It would be cool if it had no moving parts.

Fortunately, Asus have created a new market (that may already have been there, but they really got it moving) with the EEE PC. Cheap, tiny, good battery life, SSD. My mate manages to run eclipse on it - and doesn't hang himself after a coupld of minutes, so it can't be all bad.

That said, the screen is miniscule, taking up a tiny part of the size of the laptop (the rest is for 'speakers'). The new EEE PC (900, 901, 1000) has a reasonable sized screen that doesn't actually increase the size of the laptop, just uses all the available space; great! but suddenly it's a little expensive.

That's ok, 'cos now there's heaps of contenders entering the market place. The ones I am most interested in are

  1. MSI Wind

    This little baby has a reasonable sized screen, good keyboard, ok ram, atom processor and ok price. Seems better that the 901, but is stuck with a moving HD

  2. Acer Aspire One

    This has, again, a reasonable screen, ok keyboard, crap ram, atom processor and GREAT price. Either SSD or HD (guess which for me). They also have more of a committment to Linux



So which to get? And when will they acutally become available, and how much will they cost. Get em out soon or I'll just have to get the EEE 900 right now!!!!

Sunday, May 11, 2008

Rhinounit - for Javascript testing

I've just opensourced my javascript testing framework, the one that I have been using at my current job to make sure that the code we produce is fully tested and to a minimum standard of quality.

Check it out here

http://code.google.com/p/rhinounit/

It is, of course, similar to jUnit and the other nUnits, but tries to take advantage of the features of javascript. It also tries to make sure that you don't do naughty things with your namespacing and so forth.

I have yet to update the Wiki to really describe how best to use the framework, but will be doing so in the coming days, especially the top level stuff like; how to effectively set up your code so you can test it (clue : MVC), and how to do integration tests even though it's really a unit testing framework.

Happy testing!

Tuesday, October 23, 2007

__NoSuchMethod__

Because I always forget what it's called. Surely 'method_missing' is more obvious. (__NoSuchMethod__ is the javascript function that does the same thing as method_missing in Ruby)

Monday, October 15, 2007

Objective Javascript

So my next project is to write a JS parser that will turn

{ my_alert: alert_string | alert(alert_string); }

[map: my_alert onto: \["a","b","c"]]

[node addEvent("click", {event| alert('whatever'); }) ]

into

function my_alert(alertString) { alert(alertString); }

map$onto(alertString, ["a","b","c"]);

node.addEvent("click", function(event){ alert('whatever'); });

yadda ya think? not the best examples...

I just want to introduce named parameters (not using a map!) and quick anonymous function definitions. (So why do I call it objective...)

Is it Javascript...or Lisp?

Well...

lisp(
reduce(
if$(true, add, sub),
map( add_one, [1,2,3])
)
);
// prints 9

...which is it?

Well, of course it's javascript, but I got pretty close hey? The lisp function triggers the inner stuff to evaluate (lazily) and look at least a little lisp like. Note that the if will only evaluate the 'successful' branch - so 'sub' will not even be evaluated!

It all falls down a bit when you try to define a function. The best I could do was something like

function add_one(a_value) {
return add(1, a_value);
}

which is a lot more verbose than lisp, but not tooo many more elements.

Here's the code. First up, the foundations

function LispExpression(originalExpression, expression_arguments) {
this.originalExpression = originalExpression;
this.expression_arguments = expression_arguments;
}

LispExpression.prototype.evaluate = function evaluate(){
return this.originalExpression.apply(null, this.expression_arguments);
}

function lisp(lispExpression){
if( lispExpression instanceof LispExpression) {
return lispExpression.evaluate();
}
return lispExpression;
}

function lisp_function(the_function, arguments) {
return new LispExpression(
the_function,
arguments
);
}

This is all put together so we don't evaluate functions until they are 'called'. Remember that JS, just like most other algol derived languages will evaluate the inner most functions first - while lisp will evaluate the outermost.

Next we define some basic building blocks. Note that the 'control structures' are all just functions - after this we will be a little functional and a little lisp like.

function reduce(reducer, argument_list) {
return lisp_function(
function reduce() {
if(arguments.length > 0) {
var total = null;
reducer = lisp(reducer);
argument_list = lisp(argument_list);
for( var i=0; i<argument_list.length; i++) {
total = lisp(reducer(total, argument_list[i]));
}
return total;
}
return null;
},
arguments
);
}

function map(mapper, argument_list) {
return lisp_function(
function map() {
if(arguments.length > 1) {
var result = [];
for( var i=0; i<argument_list.length; i++) {
result.push( lisp(mapper(argument_list[i])) );
}
return result;
}
return null;
},
arguments
);
}

function if$() {
return lisp_function(
function(condition, trueExpression, falseExpression) {
if( lisp(condition) ) {
return lisp( trueExpression );
} else if(falseExpression) {
return lisp( falseExpression );
}
return null;
},
arguments);
}

function seq() {
return lisp_function(
function () {
var last_argument = arguments.length-1;
for( var i=0; i<last_argument; i++) {
lisp(arguments[i]);
}
return lisp(arguments[last_argument]);
},
arguments
);
}

obviously I should have cond and stuff in there, but whatever :) I do have map and reduce, for list goodness.

Some more building blocks follow. These don't have to use the lisp_function stuff anymore - that's all covered above - they can now comfortably be built up with the above plus simple javascript features (like adding...)

function add() {
return reduce(
function add(running_total, value){
return running_total == null ? lisp(value) : running_total + lisp(value);
},
arguments);
}

function sub() {
return reduce(
function add(running_total, value){
return running_total == null ? lisp(value) : running_total - lisp(value);
},
arguments);
}

function print() {
return reduce(
function print(running_total, value){
out.println(lisp(value));
return null;
},
arguments);
}

(out.println is provided by the Rhino runtime I am doing thsi work in) One would like to keep these JS polluted functions to a minimum, of course.

Finally some examples

function printAndReturn(aString, aValue) {
return seq(print(aString), aValue);
}

lisp(if$(false, print("got true"), print("got false")));
// got false
// null

function additup() {
return add(
1,
if$(
false,
printAndReturn("two", 2),
printAndReturn("three",3)),
4);
}

lisp(print(1,2,"fkfkfk"));
// 1
// 2
// fkfkfk

lisp( additup() );
// three
// 8

function add_one(a_value) {
return add(1, a_value);
}

lisp( map(add_one, [1,2,3]) );
// 2,3,4

lisp(
reduce(
if$(true, add, sub),
map( add_one, [1,2,3])
)
);
// 9

Well, I think it's neat :P

Tuesday, June 12, 2007

A bit more javascript

Actually this little snippet sums up quite a bit of what I am doing these days...

function ensure_package(package_name, package_block) {
var package_parts = package_name.split(".");
var package_so_far = this;
for(var i=0; i<package_parts.length; i++) {
var package_part = package_parts[i];
if( ! package_so_far[ package_part ] ) {
package_so_far[ package_part ] = {};
}
package_so_far = package_so_far[ package_part ];
}
if( package_block ) {
package_block( package_so_far );
}
return package_so_far;
}


The above function ensures that there is a 'package' (global variable) with the path specified by package_name.

It returns the package ready to add some objects or functions to, or you can even pass in a function that receives the package as a parameter.

The following demonstrates some tests/usage of the above function


ensure_package("tiest");
tiest.id = 89
ensure_package("tiest");
alert( tiest.id );

ensure_package("tiest.vilee");
tiest.vilee.rocks = true;
ensure_package("tiest.vilee", function(public_interface) {

var private_interface = {};
private_interface.private_method = function() {
return 'private method';
}

public_interface.public_method = function() {
return 'public method:' + private_interface.private_method();
}
});
alert( tiest.vilee.rocks + ' ' + tiest.vilee.public_method() );


I really like to use packages to namespace my stuff, and I really like to use the public/private objects within my object definition bit to differentiate between the different function/variable types. Makes it all very clear and easy to read. Now if only javascript weren't so verbose....

Saturday, April 14, 2007

Javascript can be prototypical

The following JS code can be used to beget (a la Douglas Crockford, with a bit of _prototype spice) and to do a 'real' shallow clone. The object you clone will have the same parent as the cloned object, rather than just inheriting from Object.

This makes javascript work like a 'real' prototypical language (SELF) so we can follow the patterns that that implies.


function object(o){
if( !o ) {
o = this;
}
var builder = function(){};
builder.prototype = o;
var result = new builder();
result._prototype = o;
return result;
}

function clone(objectToClone, objectsParent) {
if(!objectToClone) {
objectToClone = this;
}
if(objectToClone._prototype) {
objectsParent = objectToClone._prototype;
}
if(!objectsParent) {
throw "no parent defined for this object";
}

// create new object with prototype
var result = object(objectsParent);

// copy over new stuff
for(var key in objectToClone) {
if( objectToClone.hasOwnProperty(key) ) {
result[key] = objectToClone[key];
}
}
return result;
}

Object.prototype.clone = clone;
Object.prototype.beget = object;

Friday, July 14, 2006

Hello everyone - I'm back

though I can't guarantee for how long....
Anyway, a quick note while I wait for my current build to finish.
I've recently started (June 5) working with Thoughtworks, 'the' agile development company (Martin Fowler, Sam Newman, Erik D et al) and am so far immensely enjoying myself. It's great to see this stuff in the wild, warts and all.
I have also been tripping around a bit. The other week I went to Finland for a friend's (John and Anne) wedding. Anne's father runs a castle in Savonlina and so the wedding was held there - it was amazing!
After Finland Sharon, Tam, Karen and I caught a ferry to Tallinn in Estonia. It was a great tourist destination, really well set up for us - we all had a great time. Sharon wasn't too horrified by the hostel we stayed in, though I don't think she could cope with much worse ;-)
This weekend I'm taking Sharon to Paris, but don't tell her as it's a surprise. It's our one year anniversary, and we've been living together for 5 months now.

Friday, June 10, 2005

MAGIC : Derren Brown

Wow. He really is amazing. Combining magic with mind tricks, and admitting it all as such (no claims to psychic powers here) Derren dumbfounds an audience for a whole night. I never thought I'd enjoy a magic show but I did.
Derren's biggest ace is his showmanship and charisma (Jo totally loves him) so when he performs the same glass walking trick as I saw a guy in Egypt do, he makes it that much better by claiming that he is going to cut off the flow of his blood (with nurse from audience verifying that his pulse has stopped) by asphyxiating himself first. And a good few minutes making sure that audience members are happy that the brand new broken glass is real.
Good stuff.
And Jo even got pulled up to slap him in the face! She had to get a tray, load it with buttons from a jar, cover it up, then hit him as hard as she could (which is why he got the nearest girl - otherwise it could have been me!) to 'inspire' him to be able to count the buttons really fast.
And when I say fast I mean fast! He basically just glances at the board, looks away and yells our a number. both times right - first time 69, second time (with board being moved around by Jo so the buttons are moving) 84. Amazing, I can't imagine there's a trick to that one. (Actually I just thought of one way, but it's quite involved and I am more inclined to believe he can count fast)
Anyway, I won't give any more away, just go see it! (If you're in London :)

MOVIES : Sin City

A Clockwork Orange popularised a term that applies to this film : Ultra-Violence.
This film is ridiculously and stupidly violent. And I don't mean a guy mowing down 100 hundred others with a machine gun. I mean savouring torture.
A review I read said the stories were cliched. Fair call, but a cliche becomes a cliche because at some point it was good - so got copied lots - so it could be good again. In fact the film noir aspects of this moview were great - very stylish and sexy and I really enjoyed.
That same review said the movie was morally unambiguous. I guess this means you know who the goodies are and who the baddies are. I thought it was actually quite ambiguous, because I don't consider anyone to be a 'goody' if they delight in chopping a man's arms off in such a way that he is still alive, and then getting his dog to eat him (while still alive). That is an evil person, and yet his vendetta of vengence is presented in a 'goody' light - seems ambiguous or at least ambivilent to me.
And that is sort of the flavour of the film. I wouldn't see it. If you enjoyed it then you would know that you were a sick fuck, and otherwise you wouldn't enjoy it.
The most annoying thing is there were some aspects I loved about the film. The chic. The style. The black and white with flashes of colour. The ham acting, with voice overs.
Oh well.

MOVIES : The Jacket

I loved this!
It's like Twelve Monkeys only emotionally based rather than action based, and with a far more ambiguous ending.
The actor is the guy from the Pianist and his acting makes up for everyone elses, including the very sexy Keira Knightly who couldn't act her way out of my bed (did I give anything away then?). He plays a guy who was shot in the head in the first gulf war (or was he) who is accused of murdering a cop and sent to an insane asylum for naughty people. There he is subjected to total sensory deprevation with drugs! Sounds like fun. While under he travels into the future (maybe)
There is one section of the movie where one of the actors suddenly changes their attitude completely, which I just put down to the director not bothering with showing the period of time they spent coming to this descision, but one of my friends found this disconcerting to say the least.
There are some plot holes, but I managed to not notice them until after, and the ending is a little too ambiguous for some of my friends, but I really liked it and recommend it (unless you are Mark, in which case you are probably to pedantic to overlook the gaping holes, or are they holes?)

MOVIE : Millions

This was a fun film about a boy who is a little 'different' who receives a bag of £200,000 from god (or actually a robber on a train who threw it out a window). This boy sees saints, who help morally guide him, and cover his arse a few times.
It is light hearted and fun, and surprisingly didn't make me feel sick with all the god talk. The boys in it do a good job, and the story is both entertaining and, um, educational? Maybe a little simplistic and obvious.
You'll have a bit of fun if you see this, and is probably not too bad to take kids to.

Some Nerdy (thanks Elton) math humour

check out this Redhanded Post, it talks about a conerence involving fractal applique. And don't forget my link at the bottom to fractal vegetables - it's awesome!

Tuesday, June 07, 2005

MOVIES : Strings

I think I was looking forward to this one a little _too_ much. It is the combination of a Danish master puppeteer and Danish mythology. I suppose I was excited about it because they were drawing on the puppets as part of the story, as opposed to a gimic, and mythology is often a good place to get good stories - as they've had to survive countless generations of weeding out of crap ones.
But that doesn't mean that your particular retelling can't be boring as bat shit, with little to no connection with the various characters (except maybe the 'innocent sister who sacrifices herself').
Sure, the puppets were beautiful, and their handling exquisite; there was more acting by these lumps of wood and string than any of the actors in Sin City managed....
A couple of guys in front of me actually left, they were that bored (I think they were also a bit drunk).
So, if you are intrigued about the venture, get it on DVD and have a look, but otherwise steer well clear.

Friday, May 27, 2005

BOOKS : The Last Family in England

By Matt Haig
This was crap. At first it seems OK, but it's when you get a few pages in that you realise all his chapters are only 2 pages long because he can't write - as soon as he ventures to more than 3 pages he waffles and loses my interest.
The story is from the point of view of a Labrador and revolves about the Labrador's attempts to save his family from falling apart; in line with the 'Labrador Pact'. It was supposed to be poignant and full of pathos - well I guess it was pathetic (I've always wanted to say that!)
Anyway, I dog eared (heh) a page about half way through (p158) because I though it epitomized his inability to write. It is a single page chapter where in a doggie friend of the main character insists on telling him about the strange things happening in the park. Over and Over. Until the main character gets called away and we never find out what the strange thing was. Oooh mysterious. Or maybe just crap writing.
The first 15 pages of the last 20 pages (makes sense?) were actually not too bad, but the final 5 pages unfortunately reverted to the crappiness of the preceding book.
What a waste of time.

GIGS : They Might Be Giants

A favorite of the Aussie alternative scene since the debut (along with JJJ) of 'Bird House in your Soul' back in 89/91, they Might Be Giants have a special place in my heart. Today, while trying to describe them to friends at work, I eventually ended describing them as 'wacky folk' (well they do have an accordion). Having heard them tonight that definition expands as their repertoire covers rock and reggae and, well, pop.
Anyway, the Gig was pretty darn good. Everyone sang along, really loud, to the oldies, and rocked along to the newies. There was a bit in the middle where they played songs they'd written while on the current tour, inspired by the venue they were playing in (pretty much just the inspiration of the name really). This was quite fun, and introduced by a 'personality' called Jonathan Ross (kind of big over here). Unfortunately it probably went on a bit long _and_there_wasn't_one_for_the_current_venue.
From a professionalism point of view the first half of the Gig was a bit sloppy. Right up to the point when the boys joked about 'I don't go to their gigs anymore, they're just too slick'. After that they stopped pausing between songs and generally fucking about and the show picked up the pace and felt a whole lot better.
The Lighting operators don't get any marks though, not only were they very dull, the follow spots were hopeless, generally more accurately referred to as 'follow a few feet behind' spots.
Overall the 15 years (20?) of live experience won through - they had a lot of fun with the audience, and the audience had a lot of fun straight back, from anthems, to ballads, to participation, to just plain weird.
(Oh, the support were some uninspiring 2*girl fronted band. Didn't find out their name, don't really care, though the bass player was cute - the singer was too thin)

Friday, May 20, 2005

PLAY : A life in the theatre

Don't remember much of this because it was a while ago that I saw it. I went with Murray and His mate Brett. Brett isn't really a theatre person - and pretty much fell asleep.
Anyway, the play is about an older actor and a younger actor, following their backstage antics as their 'life in the theatre' unfolds. The younger actor starts holding the older actor in high, if not so serious, esteem. He grows beyond the older actor and this is where the Pathos comes from.
The older character was played by Patrick Stewart, who did a pretty good job (he has an amazing body for a not young person!). He largely hit all the marks.
The younger character was played by some kid from Dawson's Creek. He was pretty ordinary, and couldn't really grow the character, or change his style from off-stage to on-stage.
The play lightens the mood by showing some on-stage work. All these 'plays within plays' are not only terribly written, but they are very ham-ily performed by our two actors. This is fine, and fun, my only problem being that I didn't think there was nearly enough difference between the ham acting on-stage and the 'real' acting off. Maybe the director was trying to be subtle, or maybe say that 'we're all acting in real life anyway', but it just didn't work for me. I think it was proabaly down to the younger guy's lesser acting ability.
Anyway, it was fun, but only because of Stewart and Mammet, no one else.

OPERA : 1984

I don't know if I would have liked this opera as much if I didn't love 1984, but there you go.
Having almost arrived late, the curtain raised on an amazing set (These big productions just have such stupidly huge sets - and so many people in the chorus) and a wall or block of people shouting (as much as you can in Opera) at the hate-flicks. And you know, yelling at a TV at the top of your lungs just doesn't sound like a bunch of people singing, no matter how 20th century the music is. But when they end up singing the national anthem of Oceania that's when it comes to the fore.
I think that is a fair summary of the whole opera. The first two acts were pretty by the by; they were alright, but not something that I was that blown away by. The third act (in which Wilston is tortured) was great. The power and tragedy of the breaking of Wilston is torturous to watch, and I found quite effective.
The orchestration was a little mundane. While there were a bunch of cliches in there, some of the nice ones were left out (like themes for characters, how blasé, _but_it_works_!). Most of the music was 20th century, reflecting the abrasive, emaciated 1984 world. Every now and then we had a bit of melodic Prole nursey rhyme, which made me want more melody - especially in the duet. And just to tease us more, the torturer in the third act has a little bit of melodic work which is similar to the Prole stuff, only twisted and manic. It was a nice change, but I don't see why it couldn't be used a little more.
Standing there in the auditorium at interval I was wondering if it was all worth it. Clapping the performers at the end and I had not doubt.

Tuesday, May 17, 2005

MOVIES : Ong Bak

If the idea of a Tut-Tut chase around the streets of Bangkok doesn't sound like something you want to see, then this probably isn't a film for you.
A fairly standard story line, some ordinary acting with a few extraordinary over-actors thrown in, and 2D characters all round, what could I possibly like about this film? The Muay Thai Kickboxing!
I've long considered Kickboxing to be the most effective street martial art there is, but not a pretty one. Was I wrong! This film highlighted the utterly deadly moves of this martial art, as well as the beautiful forms and stances of a very grounded fighting form. It reminds me of when I went to see the Misfits, they wore these huge boots that started at the knee and went out - imbuing them with a great sense of being 'grounded'. The earth cracking stomps of this film made for the same effect.
The other thing it did was change my view of Capoeira. While C is still a dance/martial art rather than a martial art/dance, I came to appreciate that many of the kicks I consider useless and only for show, can be very effective in the hands of a Kickboxer - so why not me as well?!!
Anyway, this is up there with Drunken Master 3 for me (though not as funny)

Monday, May 16, 2005

BOOKS : Saturday by Ian McEwan

I read a review of this in the Guardian and thought, well everyone likes this guy, I might give him a try, and why not with this book.
What a great decision! I love this book. While the plot isn't anything fantastic, I love the writing, I love the way he moves off on tangents, but never far enough away from the story to make you think 'get back to the story' and I love the underlying tension that pervades, but with no obvious source. (OK, there might be an obvious source, but the maintenance of tension when that source isn't around is well done).
If you ever want to know how my brain works, read this book and realise that the main character thinks very similarly to me, only as a neurosurgeon rather than prog'er. Thing being, I suspect that most people do behave/think like this, it's just no that often put in writing (that I read at least).
Other reasons I am particularly likely to enjoy this book; the main character is father in an atomic family, a family very like mine. His age makes him halfway between my Dad and myself; I can empathise with my father through his thoughts, but I can also imagine myself in his position in the not too distant future. He also likes his sport, but not too much, and allows his competitiveness to get the better of him. Finally, he is a middle class liberal tainted by the ability to see more than one side in an argument.
Haven't really said much about the book, more the character, but I guess that like in Ulysses by JJ the story is the character (BTW, it's called Saturday because the whole book takes place on one Saturday, hence the Ulysses comparison).
Anyway, if you want an insight into my inner workings, give this book a go and you'll come close.

PLAYS : Julius Ceaser

I;ll admit I was a little apprehensive about this production; weighing in at 2 hours 50 I was worried this uncut version was going to drag somewhat. Was I wrong! The first half, all 2 hours of it, was fantastic, drawing you in to the to-ing and fro-ing, the scheming and over all the crowd swaying speeches.
The text was easily communicated, I don't know if this was because of excellent direction or if the language of the play was easier than some of others, but I hardly had to decode at all as I was watching.
The show was on at the Barbican, which seems to like spending stupid amounts of money - there was a cast of some 50 or more chorus, and the sets were enormous and expensive. It's not something I really understand, coming from a relatively minimalist background, but maybe the audiences they are aiming at wouldn't understand it if they didn't see a horse when the actors rode in on one... Of course lighting was excellent and the sound was pretty good if a bit obvious (underpinned by a single, low, droning note all the way through. not too original)
What was the one thing I found missing? Brutus. Sure, the character was there, but his plight, his motivations and therefore his tragedy were not a strong focus. In fact, there were a number of times when I didn't even recognise him, which made some scenes confusing (especially the one where some guy pretends to be him - which I didn't realise because I don't recognise the guy myself!). I ended up having to piece together what was happening to him intellectually rather than the play telling me. This rather detracted from the emotional aspect of his story.
All in all, I came away thanking Jo for distracting me from seeing Electric Eel Shock and Mika Bomb (my two other options for the evening, though I was originally going to Anthony's - makes four things in one night!). I think it was probably better than the King Lear I saw earlier in the year, but not as new as I'm more familiar with the play.

A Dirty Shame

This is John Waters at his less offensive; this film is more in the vein of Serial Mom and Cry Baby, rather than Pink Flamingos. Which is good, because I really like SM and CB. Basically it's about a sex hating middle-class american house-wife who gets a know on the head. Upon being revived by the Jesus of sex she becomes a sex addict; hilarity ensues.
Well, hilarity is an exaggeration, but it was quite funny, and an entertaining night. Probably a video rather than a film.
It didn't really have anything to say, though it did do some nice piss-taking on both the conservative and liberal sides. Certainly not for the 'easily offended,' it's almost purely off taste sex jokes including sex with trees that grown genitals, the 'resurrection' of Jesus by listing a series of 'sex acts' to try to get him excited, though you don't see any rude bits, sorry to say.
Any rate, kinda fun, and 'Go the Bears, aaarrgggghhh'