Photo of Jamie & Lion

The personal site of Jamie Knight, an autistic web developer, speaker and mountain biker who is never seen far from his plush sidekick Lion. View the Archive

Topics: Autism Development

Paranorman Review

Paranorman is a fun twist on a classic format. It superbly manages to mix comedy and horror… arghhh! I can’t do it!

Right, this is my first ever film review. I could write all the normal fluffly bullshit or i can cut to the chase. Go see Paranorman if you can, it’s a good film and well woth the price of admission. Here’s why.

Story

The story centres on the life of Norman, an 11 year old somewhere in America. He has the ability see ghosts and he is exhiled by his community. Over the course of the film he wins the trust of the community and solves a 300 year old curse.

On the way he unleashes zombies, makes friends and learns it’s okay to be different. I wont go into to much more detail as i dont want to spoil the film. But it ultimately boils down to Norman learning to value his difference and then convincing a fellow oddity that they dont have to respond with a wrong when they have been wronged.

Characters

The characters are pretty good, my favorite character is the zombies. They are central to the plot of the film, Norman has to forgive and help them in order to help everyone.

By understanding the zombies norman has to figure out his own issues.

Apart from Norman and the zombies, the other characters are pretty robust. It’s nice to see a bully be revealed as a cowered who comes through in the end. If a little clichéd.

Animation & Tech stuff

Paranorman has an unique animation style. It seems to be a mix between stop motion and CGI. The overal affect is pleasing, Towards the end of the film the visual effects kick into a higher gear for the grand fanalie. The animation becomes more fluid and the effects take over.

The film is respectful of the tools used to make it, the matt paintings are clearly chalk artwork but they fit the feel of the film well.

From my personal tech perspective the film was very impressive. All the effects were believable and well delivered. 3D was used to help tell the story rather than bludeon the audience with gawdy shocks and suprises.

2012 Haloween Films.

I saw all the Halloween films this year (eventully). Each film had its own qualities and will appeal to different audiences.

The most kid freindly film is Hotel Translavania, as it has few scary parts a very simple storyline and easily understood characters. Paranorman has a few to many scary parts to work with younger audiences. I saw many parents removing bawling kids form the thetre during some of the more intense scenes. Frankenweenie is a little complex and has to many slow parts for kids.

Paranorman has he most advanced look of the three films. Frankenweenie is brave in being black and white but i am not convinced it works that well. It’s a good talking point but i don’t see it enhancing the telling of the story. Hotel transalvania looks like most other animated films. It’s somewhere between pixar and shrek quality not really as convincing or fluid as either.

Final words

Paranormal is out of season now, so its often being put on for the cheap kids showing. Thats not a bad thing in and of itself, it was an enjoyable mornings entertainment and was incredibly cheap. If you find yourself bored of a saturday morning the early morning shows certainly give you something to do.

I paid £1.75 to see Paranorman and that was a bargain. As films go it’s firmly in the top half but has it’s moments where it genuinely sets the standard. If you can catch on the big screen i would encorage you to do so.

Published: 2 February 2013 Permalink

Coding & Lego

I’m tremendosly crap at video games. I just don’t have the patience. I enjoy some games (Portal, driving games) but even then i only play them for an hour or so. This leaves me with long evenings to fill. However, filling this time is bloody hard.

Its a pretty common aspergers thing, we tend to come a little unstuck when we are given large amounts of “unstructured time”. While i am fully aware i need down time i have a dearth of activities which actully provide me with down time. I don’t find consuming media to be all that relaxing and as mentioned most games leave me bored.

One activity which does provide me some relief is coding. Getting engrossed in the code and the problem is quite theraputic. In this regard coding is alot like lego. With lego its easy to loose yourself for hours engineering away. Finding a more elegant solution, fixing bugs and exploring limits. I know, building lego gearboxs is a very specific form of “relaxing” but sometimes it works for me.

Coding and lego are the same toy. They serve a purpose but they dont fill the entire gap. I need to be in the right mood for both, after writing code in work all day i often find by the evening i have become a zombie. Not wanting to code, not wanting to lego not knowing what to do. I tend to then wonder the flat tidying, obbsessing over things.

So thats how i am now. I felt restless and bored so this is my attempt to write about it.

Published: 30 January 2013 Permalink

Using PubSub with Javascript.

Inspired by BBC responsive news i have spent a lot of time over the last few months investigating and then buiding around EventEmitter. EventEmitter is a lightweight PubSub library with a node.js ancestry.

I have never developed using custom events before, so it’s been a tight learning curve. I guess many people are in this position so hopefully sharing these notes with give you a head start.

Event Naming.

I have found event naming to be really difficult. In an ideal world an event name is self describing, for example, “carousel:load:tab” seems pretty clear. However, on deeper inspection its not quite as clear as it could be. Its not clear if its a request (eg, please show a tab) or a command (here is a tab and some data, display it).

I went with a “carousel:load” prefix for requests which gave us “carousel:load:tab” and “carousle:load:next” etc. On command side i went with a “carousel:display” prefix.

This seems to work well, though it’s a little nugget of infomation you need to know in order to understand our architecture. For the next iteration i suspect i may take a more declarative style. Something more like “carousel:display:request” i guess. Not sure.

Which data to send with events.

The events (or messages in PubSub parlence) have consisted of a name and a payload of data. Following on form the last example, “carousel:load:tab” carries a payload object with two properties. The tab name and the tab url.

At first i tried to keep events to a minimuim, with each module only have one or two events associated. This led to many event having massive payloads which contained everything i knew about the object to support all of the use cases. This led to some complex event handlers which did way too much.

I have now adopted a model with a few more events but with less data per event. So for example, “carousel:display:start” got split into “carousel:display:uncached” and “carousel:display:cached”. The event names are more explcit which on balence i feel is a good thing…. Its not perfect though.

Naming events this way does reveals some of the inner workings of the carousel. In this case, it expliciting indicates a difference between cached displays and uncachced displays. The alternative was to have a property on a more generic event. I figuired explcit naming would be easier to understand for developers in the future.

Structuring Features via modules.

Roughly speaking most features split into two modules. A Core module (with the business logic) and a UI module which deals with the DOM. The modules then commuincate using events.

Heres an example of the event stream which results form clicking the “next tab” button on a carousel.

1. The UI Module converts DOM click events to a pubsub events called “carousel:load:next”. It does very little logic at this level.

2. The Core module listens for the “carousel:load:next” event. The core then figures out the correct response, in this case loading some data and firing a “carousel:display” event with the data attached.
3. The UI module listens for “carousel:display” event and then updates the page accordingly.

Having the Core in the middle decouples the business logic form the UI. You can swap the UI out to whatever makes sense at the time. You can also reuse the core across platforms. I also store state in the core. The core knows the current tab and everything else defers to it for actions requiring that information.

Final words.

So thats about it for now, i am still working this stuff out but i am also having alot of fun. If you have never tried pubsub based JS development i would encorage you to give it a go.

Published: 29 January 2013 | Categories: Permalink

Older Articles

Newer Articles