Friday, 2 November 2007

Impro class (part two)

Impro class Two

Story and Interesting

The following are notes are the second part of an comedy/theatre improvisation (impro) class I recently gave.

(In case further explaination is required, by impro I mean getting up on a stage without any prepared material and making up a show/sketch/play/story on the spot. Theatresports and Whose line is anyway are two well known examples of this.)

As I said in part one, this is how I think about impro. It's a collection of ideas which I've sopped up over many years of improvising, and which probably owe much to well known impro improsarios, such as Kieth Johnston or Viola Spolin - although I couldn't tell you which ideas are mine and which are there's

It's worth looking over class one first, but to summarise it: Impro is about lying to an audience. You invent random thoughts and statements for your character, which you sell as reality to the audience. Your main weapons in maintaining this facade are justification and reaction.

Now we need to work on making our realistic improvisations interesting.

The Air-plane Analogy:

I think improvising is much like flying an airplane. Let me explain. At this point I have defined three components to improvising - Emotional Reactions, Justification and Random Ideas. Lets look at them in turn.

Reaction: Reacting is the driving force behind impro. It's what keeps everything moving. Look at this scene that contains no emotional reaction.

Bob: Mary, look I've just been attacked by a shark.
Mary: Would you like a sandwich?
Bob: The winds getting stronger.
Mary: I've forgotten to take back my library book.

Or try doing this scene in an emotionless monotone voice:

Bob: The house is on fire.
Mary: Oh dear, shall we go outside.
Bob: I think the kids are burning.
Mary: I'll get a blanket.

Rubbish. Reacting moves you forward. Reacting is the engine of the plane. It moves you forward and makes everything else work.

Justification: "She canny take it captain" shouts scotty from the engine room. Every plane can cope with certain stresses and strains before the wings fall off and it crumbles. Justification is that inherant airworthyness. Justification is used to sell the lies that we are creating. If you are week at justification, if you let it out that this is all a lie and you don't know what you are doing, then everything comes apart. If, on the other hand, you can justify yourself out of anything then your stories can go where ever you want them to. The harder you pull back on the control leaver the stronger your plane needs to be before bits starts shooting off.

Random Ideas: Randomness, the adding of new information that is unexpected is the upthrust of our plane. The injection of the unexpected make a scene interesting. It raises questions that must be answered, it breaks routines. Think of Pulp fiction as a perfect example of the power of randomness; Mia Wallace over doses - didn't see that coming, Marvin gets his head shot off - a twist that came out of no-where. New ideas have the same effect on a story as pulling back the control stick of an airplane. You go up. You take off. The weirder the idea the faster you climb.

The key to good impro is to learn how hard you can pull back on that control stick. How steeply you can make your plane ascend(Ideas) depends on the power to your engines (Reactions) and the airworthyness of your plane (Justification). How wild can the ideas you use get? Too little and the plane stays on the runway. Too much and the plane goes vertical, stalls, the passengers puke, and the whole thing plunges into the ground.

The three components above work in tandom. You can have the most airworth plane in the world, you can yank the joystick back and forth, but if the engine isn't running it won't make an ounce of difference. Likewise an air worthy aircraft pelting along at full tilt won't go very far if you never pullback on the stick.

Our aim is to fly, but what sort of flight are we giving:

The Aeronaughtic display: Tiny planes flying in crazy whirls and loops, exciting fast, and we secretly don't care if the odd wing comes off. This is the impro of short games, of theatresports and other performances done for the hell of it. Quickly get the take off with big ideas and in the short time available thrill the audience with the impossible. A few points:
1 - Randomness is a key here, you want to be throwing that joystick about and making the audience gasp. You can throw mad ideas into the pot, but to make this work you have to have a tough plane - lots of justification. Lots of power - lots of over the top reactions. Little offers, weak reactions and mundane ideas will be dull.
2 - Often in this kind of display we set up stunts to try, a scene in reverse, a scene in gibberish. Knowing what you are attempting to do will thrill the audience (even if you don't pull it off, which brings us to the next point).
3 - Although exciting this kind of thing can get dull fast. "Ohh his 15th loop the loop", they know you can do it now, they don't really care anymore. They want to believe that you might crash, they want it to look like the propeller will fly off at any second. Being too good is a almost a curse. Crashing can be a great thing - but only if you jump from the wreckage of an exploded scene with a smile and a "Ta-Dah!". They don't want you to get hurt, but they want excitement. Dare to Fail. Dare to fail big. You do this by pushing yourself beyond your limits of control - but with a huge smile on your face.

The Passenger flight: The telling of a story or narrative. The very basis of a passenger flight is that you are taking someone somewhere. A journey. With an aeronaughtic display, we don't care if the story goes no where. In a passenger flight it's essential. ("This is passenger flight 757 from London to London" - no good). Going somewhere means story, which is what I'll cover next. First some pointers:
1 - The longer the passenger flight the more confort the passenger requires. If it's a short 20 minute hope on a seaplane you can afford to lash your passengers to wooden benches and bank up into the sky at 30G. But it's kind of essential that a long distance flight affords your travellers with comfort and safety. Boeing 757 jets don't take off so fast that everyone in heaving before you've reached cruising altitude. In this respect I'm talking about Randomness. To many big offers too soon and you're creating a roller coaster ride. Take it easy, take it slow. They should barely notice the take off and landing.
2 - You need big engines for a long distance plane: Emotional Reaction has to be key in a long narrative. If Romeo and Juliet ended with "Juliets dead, arse, still plenty more fish in the sea" it would be rubbish.

To continue this analogy we need to take a look at story.


Story is (to my mind) about change. There are three things that can change in a story; The world, The relationships, The characters.

The world: Someone builds a bridge. This is a change in the world. From a story perspective this isn't that interesting or important. You can often skip over world changes. We don't need to see the bridge being built, you can just time jump between scenes. "I'm going to build a bridge", three years later "What a lovely bridge".

The Relationships: Gary and Matilda fall in love. This is a change in relationship. It's interesting, it's important. We want to see it. Mid summer nights dream contains a lot of relationship change. It starts with some people in love, and some people in hate. The fairies come along with their magic and change round the relationships. The bulk of the play is then the reaction to that change. Finally the fairies change them back and we have more reaction. Relationships are important and interesting. Disagree - look up the viewer figures for Big Brother.

The Characters: Gary realises that he's a failure, he is a broken man. This is a change to a character. These are the most important changes. They take the longest to happen, maybe only one major change per story. The change in character is the most powerful of our changes. Think of every Disney film you've ever seen. The little spoon was scared but now he's beaten the dragon and he's changed - he's a hero.

Three types of change: Change to the world (physical changes), relationship changes and emotional changes. Now note this: You can't have change if you don't have a an initial situation. Everything has to start somewhere - much like a plane journey.

Imagine a situation where everything will always be the same. Every day Gary gets up and goes to work. Everyday he stares at Gina, who he adores, but will never ask out. Instead he photocopies paper, then goes home and gets drunk.

This is the setup of the story. It's a state of being that will keep repeating itself. Every day Gary goes through the same routine. That's not a story, but it can be the beginning of a story.

One day Gary gets hit by a car. It is this event that will allow our story to happen. It is where change starts to occur. It is the first event in a long string that will result in the breaking of Gary's continual routine. During the setup the plane taxied down the runway, we see where we are, and the pilots tell us what sort of journey we're going on (this is flight 345 from Gary's horrid life to what ever happens to Gary. This will take around an hour, please enjoy). When the car hits Gary the joystick is pulled back and we take off. Before take off the actors are just reacting, motoring down the runway, just as in the story Gary is just reacting, everyday, in exactly the same way.

After take off our pilots orient the plane down the path is will fly, more adjustments to the joystick (new ideas, justified by our new set of circumstances):

In hospital Gary meets Ted a circus juggler, he promises to teach him how to juggle.

It's really random, but who cares. It's justified. Gary is bored, Hospitals contain random people.

We are on our way. The pilots put the thrust on full (react, react, react), and the make only minor adjustments to keep us going on a straight course. Below the plane there is change. Land and oceans fly by. That should be your rule. As long as there is change in the direction you want to go, that's fine. Don't worry too much where you are now. Just move forward.

At the circus school Gary is rubbish at juggling and falls out with Ted (change of relationship). He goes back to work where Gina talks to him out of sympathy (change of relationship). Gina and he go on a date, but it's a disaster (change of relationship). Gary calls Ted the only other freind he has and they meet up (Change of relationship). Ted tells Gary he needs to stick at stuff and gets him to try juggling again, he succeeds and feels new confidence (change in Character). Gary tells work he's quitting, Gina is impressed and they make up (Changes in relationship, and further change in Gary). Gary and Gina are together. Gary is confident and happy. His life no longer needs to change. Everyday he gets up and sees the woman he loves. Events that got started by a crash have led him to a new place where he is at rest.

The plane has landed.

Lets recap: You start with somewhere, anywhere, and you start with a routine that will keep repeating. A state of no change. You introduce something that destabilizes that routine. Then reaction to the new situation drives our story along. As long as there is constant change the audience will know that they are moving along. Eventually there will be no more change because our hero's have reached a new comfortable place. That to is driven by reaction, the same reaction over and over again "I am happy here, I do not need to change". At which point we have reached our destination and the story is over.

This method of journeying isn't planned. It's guided. The skill of the improviser is knowing what corrections to add in - what tugs on the control stick:
1 - Where are we going: It's bad to know where a story is going, but that destination is inevitably announced during the take off portion of the story. "Every day Gary gets up and goes to work. Everyday he stares at Gina, who he adores, but will never ask out. Instead he photocopies paper, then goes home and gets drunk."
That is what the story is about. There are many ways that Gary's life can change, but the promise of the story is that it will change.
2 - War and Peace is a story. The Train that could is a story. When you're storytelling you usually have an idea of the time space you want the story to fill. My advice. Keep it simple. If you want to go longer, explore the moments. Most impro is short on that. If you can feel a story coming to land, pull up on the throttle a bit with a new idea - but be warned - nothing is more frustrating than an obvious ending that is just delayed for a while. That's just circling the runway. If you do chuck in a new idea at the last minute, land somewhere else. Somewhere unexpected.
3 - I want to re-itterate the types of change we have available. World change, relationship change and character change. I include this because it is your measuring stick. Every scene should include change. World change is dull - make it quick. Relationship change - good stuff, make these scenes go longer. Character change - The best stuff, take your time with this. Often the character change is less of a single scene and more the whole story.

This post has taken about 9 months to get finished - only about 2 hours in real time, but I've been rather distracted in life for a long while.

I hope it makes sense and I've no doubt I'll revisit these ideas later.

Thursday, 1 November 2007

How to improvise (part 1)

My impro method

The following are notes on an comedy/theatre improvisation (impro) class I recently gave. This is how I think about impro. There are many other ways to teach it, and there are many other impro theories. That is only right, impro is making stuff up, only an idiot would claim to know the definitive way to do it. These ideas aren't unique or even all mine. Most are variations on well known impro ideas - Kieth Johnston, and other impro-ie people...

(In case further explaination is required, by impro I mean getting up on a stage without any prepared material and making up a show/sketch/play/story on the spot. Theatresports and Whose line is anyway are two well known examples of this.)

This whole first class can be summarised very quickly. Class one is about learning to lie as a group. You stand on a stage and pretend to be people you are not in places you are not. The second class. The blog that comes next is about how you make those lies into an interesting story.

Class One

Step 1 - You can't think your way through an impro show.

Playwriters spend months and years creating the perfect script. Comedians may seem off the cuff, but most have been working on their material for a lifetime. As an improviser you are not writting a script as you go. You don't think up lines and jokes then say them. It would be way to hard for a mere mortal to do. Impro looks clever, but it isn't made by being clever.

That should be a relief to thicko's that want to improvise. Lack of brain won't be a hinderance.

If you are more-than-a-mere-mortal. A really really brainy type who can re-write shakespere to 14 decimal places, do suduko's in the dark, etc, then stop thinking, now... right this minute... Heed my words for I want you to succeed. When you improvise it would be daft to use your brain to get through it, a waste of decent thoughts.

Impro isn't about thinking. So lets say it again; "You can't think your way through an impro show".

Step 2 - Impro is about lying.

Imagine yourself on stage. Maybe you're pretending to be Balm Steadfast the intergalactic adventurer, or Nucko the pox ridden peasant slave. What are you doing? You're lying.

The world is full of lies. Mostly we consider lies to be morally bad. Impro lies aren't bad lies. They're not stupid, nasty little fibs. In impro we revel in lies. Lie big, lie huge. Tell the audience that you are King Kong and that you flew here in a space ship. They will love it. If you're not used to lying it can be tough at first, so practice. Say a little lie right now. You might feel a bit silly at first, but look - no one was harmed, gravity is still switched on.

Lets lie again. Say a big lie. I'll do it with you. I eat shoes. Proposterous! Very silly. Well actually it's true. Not any shoes. I eat flip flops, thongs as they are sometimes called. It's the material, it's very soft and spongey, easy to bite. It first happened as a dare on holiday with my ex. Now It's a bit like chewing my nails, just something I do. I like the feeling of the rubber in my mouth. There, the lie is over (I don't eat shoes, you knew that right).

To lie well try a couple of things:

1 - Say it like you mean it: I wrote the shoe paragraph with a lot of conviction.

2 - Details: The more details you can get in the better. Don't say "I stole something from a shop". Say "when I was 12 I stole a pink biro from the newsagents next to my school". Detail is great. Remember you can say whatever you want - complete freedom to lie.
Make up the details at your own pace. You don't have to make them big details: "I smoke 30 a day. Have done since I was 12. I smoke marlboroughs". Simple facts, and very believable. Don't try to be clever: "I smoke 2000 a day, started in the womb, I only smoke dried bunyan tree leafs from Karakas". Small details are simple and believable.
You might say "but I can't think of any details", no problem we'll cover that in more detail later.

Step 2 - Justification. It's great, because it is.

In murder mysteries the detective looks for the means, the method and the motive. Could they have done it? How did they do it? Why did they do it? If you have these three things then you've found the murderer! A great lie needs these things. A great lie needs to be justified.

I threw the wedding cake at my wife during our wedding reception. It hit her in the face and splattered her Mum and Dad (Detail). I did it because she told me she had slept with my best man (justification). That last line sells it. It's the motive that led me to do an otherwise unthinkable thing. Great.

Lets look at this another way. Can you lift a car? No? What if it was a toy car? What if you had a car jack? What if you're actually a Werewolf and it was a full moon? What if you lifted it, but not off the ground?

When you improvise you are lying about everything. Who you are, where you are, your past, your present, your future. It's all lies. That being the case anything can happen. So, with that in mind, have you played poker with God? Yes - of course you have. Maybe you're the angel Gabrielle, maybe you're dead, maybe you see god as being in everyone, maybe you're so good at poker even God wants to play you.

If you can justify it, you can do it.

Try justifying a few of these: You just shot your dad. You just robbed a bank. You just ate a shoe horn.

Lets take a step back. It is possible to do anything if you can justify it, but we're also trying to sell a lie to our audience. This should effect the justifications we use: A monkey rides into the room on a bicycle. If this happened in the story line of a Harry Potter movie we'd be happy to accept that the monkey is transmogrified first year magic student. If it happened in CSI then that excuse wouldn't wash. A better lie would be that Grisham has arrested a circus ring master, and he'd brought along his performing monkey. There are several points here:

1 - The wierder the lie, the harder it is to justify.
2 - The justification of a lie needs to fit the kind of world you are in.

Point 2 is very important. It's a Catch22. The sort of world you are in depends on the sorts of justifications you use:
Your story starts with a man flying. How do we justify this. We could say it's magic, but is this the sort of story that contains magic? We could say he's a super hero, but is this the sort of story that has super heros in? The answer: if you say it was magic, then that makes it a magic story. Say he's a super hero it's a super hero story. The justifications you use set what kind of story you are in, and the kind of story you are in sets up what kind of justifications you can use.

Step 3 - Say anything.

The key to impro is learning to allow yourself to talk rubbish. Learning to say any old thing that comes into your head. This is easy to do, but it's also very hard. It's easy because you did this as a kid, and because you're a human with a brain. Human brains are full of rubbish and great at creating tosh. It's hard because (like lying) we sensor ourselves. Most common reasons are thus:

1 - You don't want to look stupid: Just saying anything (teapot, french fry, spanner) feels daft. Parents tell you off for talking rubbish. If you do it out loud in a bar it's a great way to get the place to yourself. But we're improvising, so I give you the right to talk gibberish. Embrase it.

2 - What if they're not the right anything: Life has rules. It's hard to believe that there isn't a right and wrong way to do things. You might be thinking he said just say anything, but what he really means is say a list of words so wild and crazy that they are actually very funny. You think like this because you want to be good at saying anything, you want to get it right. Say anything means say anything. Really it does. If you said "shoe, shoe, shoe, shoe , shoe..." That would be great. If that's really what just popped into your head, and you said it, then you is a winner. If you try to filter your thoughts to say the right thing, you will dry up. Again, there is no right anything - anything means anything. Don't try to get it right.

3 - Poo Poo, I want to sleep with my sister, at night I cry for Jesus: People don't like to say things that might end them up in trouble. Nobody wants to be embarrised. Nobody wants to reveal themselves to an audience. So you sensor yourself and kill your own spontenaity. Get over it. Just say whatever you want. It's unlikely that you're actually going to say anything dreadful. If you care enough to worry about what you say, then you're not the sort of evil person with a mind like a sewer that's going to shout out obcenities on stage. I promise that you will be safe, free your mind and let it out.

Learn to push back the boudaries of letting yourself just say anything. It is to my mind the basis of creativity and astonishingly liberating.

Saying anything is a very powerfull skill, and something you can practise. Start with lists. To yourself just list things - anything. Try to list for as long as you can. Create lists of related things (hammer, nail, wall, floor, carpet, curtains), then lists of unrelated things (bucket, monkey, bob sleigh, nappy). Never tell yourself off for getting a list wrong. This is essential. When a baby falls down learning to walk, you cheer and help it up again. List things you'd like to do (write a book, fly to the moon, drill a hole in my bosses coffee cup). List things you'll never do (kiss my dad, catch an eagle, ride a zebra).

Just list and enjoy it. It's not excercising a muscle, it's unblocking a drain. The more ideas that flow down that blocked up pipe the clearer it will be.

Step 4 - Justifying together.

Impro is predominanly a group activity. We get up on the stage as a group, we lie to the audience as a group. It's a group lie. The one simple key to a group lie is back each other up. Help each others lies. Even if it's not the lie you wanted to tell, back it up. Doing anything different would proove to the audience that you're just a bunch of liars. The audience don't want that. They want to believe you. So if Betty says "I'm actually decended from a bee", use your lying skills to support her. "That explains your love of honey", go further, "I always wondered why you wore a black and yellow stripped jumper, but now I see it's you fur".

Help each other with the details. Help each other with the justifications. Lie together. Don't let the audience know it's not true.

(For existing improvisers: As far as I'm concerned, the fundemental basis for rules like "Yes, and", blocking etc are to back up a lie. To often I see beginner improvisers utterly confused by the definition of blocking and when to say "yes". Thinking of it as a group lie is so much easier.)

Step 5 - React.

Reacting to stuff is the genius of impro. In real life we react all the time. Everyday we react to everything we encounter. It isn't something you think your way through, you just do it. If the door swung open and a naked man walked in right this moment, you'd react. You wouldn't conciously think, what's my motivation here, you'd point, or scream, or sigh and just get on with it. Reacting is the reason why impro doesn't require you to be clever.

In impro we react to the things that are said. If Brian tells you he was raised by wolves, react. "WOW! That's amazing", back up the lie "That explains why you sleep in the garden". By reacting like a human (which is what you are) you add the final block of concrete to your lie. If the lie is really true and you believe it, then you will and should react to it as if it was reality.

Why did Juliet kill herself? Cause she reacted to Romeo being dead. Why was he dead? because he reacted to her pretending to be dead? Why was she pretending to be dead? because she was reacting to her love for Romeo and her parents reaction to her love for Romeo. What is the story about? Romeo fell in love with Juliet and they reacted to each other. Reaction drives story.

How you react depends on who you are. If you are a warrior and a bear runs out the bush you hit it with your sword. If a bear rushes you, and you're a ballet dancer you probably scream and faint, (or if a brave ballerina you might high kick it and run). If you were Harry Potter you might turn it into an acorn.

How you react depends on who you are, but conversly who you are depends on how you react. It's another Catch 22. But it's a great catch 22 because it means you can't go wrong. Lets pretend you're on stage and your fellow actor pulls a gun on you. If you cower then your character is a coward. If you punch him your character is a hero.

Who you react also depends on your circumstances. In impro your circumstances are what you make them. It's all a great big lie.

Step 6 - Bring it all together

You've learnt you can say anything, You've learnt to build a big lie and you've learnt to justify the lie, you've learnt to react to the lies. It comes together thus:

1 - Step on the stage like a confident liar.
2 - Pretend to be someone that you're not. Do this by lying. Say anything and be anyone. (I am Gusto the builder I've come to build your new outside toilet).
3 - Back up each others lies (Hello Gusto, I don't have a toilet, so I phoned you. I want the toilet just here by the hedge).
4 - React to the lies (Wow, How have you survived without a toilet).
5 - React to the lies (I'm so ashamed, we use this giant hole.)
6 - React to the lies (Yuk! that's digusting. It's a health hazzard!)
7 - React to the lies (I know, I've been so ill)
8 - React to the lies (Oh gosh, is it anything contageous?)

And so on, and so on. Not a great example, but I hope you get the point.

That's a lot of talk to reach such a simple ending. The stuff above is the how to paint. It doesn't include what to paint or how to make what you paint interesting. It puts you on a stage and allows you to live in a make believe world. Class two is about how to make it interesting.

Here resteth the cursor.

Monday, 22 October 2007

Rule number one

I cocked something up this morning. I've been rebuilding an important background system which handles time sensitive data. This morning it did an update, but I'd been so busy thinking about the complicated data processing bit that I forgot to update the part that puts the data on to the website. It was quickly mended, but it was a stupid mistake to make.

Here's todays lesson. It doesn't matter how much work you put in behind the scenes. If the bit that everyone see's is broken then you're stuffed.

That's applies to everything, particularly comedy. I love performing, but I'm a background system kind of a guy. I often forget to update the bit that everyone see's. The simple bits, like learning material, talking at a speed that everyone can hear, getting the words right. That bit bores me. It seems trivial in the face of everything else, so I let it slide.

Stupid, stupid boy.

Friday, 19 October 2007


Some amazing stuff here, but it did get me thinking. The world is falling to pieces, but the great creative minds of our time seem more interested in how to improve social networking.

Frustration.. the refrain

Calmed down since that last post. Had a ciggy which was extra specially good, cause I quit last week.

Two points that continue on from that last post:

Firstly all programming is essentially object oriented. You write programs using a set of command. Each command does a descrete task, print to the screen, compare two quantities. These commands are the limited set of objects you have to build with. They are based on even simpler commands; the machine code that runs the computer, tells it to move a bunch of 1's and 0's from one part of the computer to another.

Simple little commands build up to produce larger commands, which are combined to make the programs we use everyday. Molecules make materials, materials make bricks, bricks make houses, houses make cities, cities make countries etc etc etc. On each step up that ladder we set in stone (no pun.. achieved) the functionality of the new object. A house is a house, it's made of bricks, but you can't use a house to make a well (not without tearing the house down). We loose something of the properties of the constituent parts. A house is a better place to live than a pile of bricks, but does not have as much potential.

Point two. A program is a tool to solve a problem. If the tool doesn't fit the problem, the problem doesn't go away.

If the tool doesn't fit the problem we have two solutions:

The problem must change. This happens all the time. I want to sell my books online, but the website can't do that. I want the text on the left, but that's not possible. The problem doesn't get solved, until the tool is changed.

Solution two, some middle man/ware has to make up for the tools shortfall. Some intermediate that fills in between the tool and the problem. Ussualy that's a human. How many people have jobs that involve collating information into a specific format because the system it needs to be fed into can't cope with it any other way. The user has to serve the computer. A great example are automated switchboards, it really isn't easier for the user to have to wade through the comuters list of annoying options. It's a reversal of subject/object - who is the captain and who is the ship.

This human as middle ware issue is very common. It's slightly depressing (so many things are). In the past we did all the brain work. We calculated the accounts, we maintained the Human Resources records. Now computerised tools do lots of the work for us. But we still have work to do. Ussualy it's a task of data entry or mediation between systems. Our skills shift. Who needs brain maths when you have spreadsheet or calculator. Labour saving often includes thought saving. This is a negative path to travel. What I'm implying is that we the human middleware no longer need to perform the clever stuff, just often repeatitive and dull gap filling between the tools we use and the problems that actually exist. That's not rewarding work. It's not even mentally demanding work. It's akin to factory labour.

The more monolithic an application, the worse designed it is, the more unflexible it becomes and the more we are forced into the middleware role.



Damn I'm getting frustrated. Trying to build a DAO in CFC. A DAO is a Data Access Object. In Object Oriented Programming (OOP) you build mini programs called objects (that's not how a technical person would describe it, but f*** em). Each object does a job, so in a calculator you might have a display object that prints out the numbers on the display, a set of button objects that can be pressed - each one with a different value, a calculation object that does the maths etc etc. It's a method of building a program in the same way that we build things in the real world.

Another example would be building a house. Building an OOP house would involve designing a Brick object - you would then replicate that brick object and connect all the brick objects together to produce your walls. You'd also have window and door objects which you would replicate and use as... windows and doors. it's a duff example in that you wouldn't build a house program - please don't get confused an think I'm describing how a 3d model of a house is constructed - It's the concept we're looking at. Our naff house has been built using three things - Bricks, windows and doors. As I the builder I designed each of these things once, then replicated them. This is the OOP fundemental - reuse. Lots of little objects that can be reused and repurposed.

It's a great idea, except it is hellishly frustrating. A key principals is that every object you make is free standing. What good is a brick if it needs to be used in confunction with a window! A brick is a unique unit that doesn't rely on anything else. Imagine building a house in the real world and watching the side wall crumble because you didn't insert a window in it. This principal that everything is free standing makes sense - but it's a git!

Making something free standing is hellishly hard.

You might think the problem is in the detail. but lets go back to that house. Bricks, Windows and Doors. Ahh, but what about the tricky bits in a house like the bricks at the corners that have to be shorter to fit in. Or the pipe work that goes round the house, that must require all sorts of different lengths and angles. Surely that makes things very hard. Well it does complicate things, but it's actually OK. OO allows for that. You can build a basic brick, and then create a variation of that brick called Half-Brick. It's still a brick, it's just a variation of one. It shares most of the same properties. It's just different in the one respect of length. (To any programmers gnawwing the qwerty keys and protesting that length should be a property, half-brick is stupid - get stuffed I'm illustating a point. Hold your nubbin and be patient).

To me the difficulty lies not in the detail, but in the wide picture. The stuff that is taken for granted. The house is built on land. Land is not flat. The house needs footings to plumb it into the ground. There needs to be a road going to the house. It needs to know it's orientation to the road. It needs an address if letters are to arrive. It needs plans to be legal.

I'm straying to far down an analogy. What I'm ranting about is the fact that every OOP project I'm involved in seems flawed by the fact that at some point the application meets the real world. The real world has infinate variation. To intigrate with the real world you need to know certain things. As soon as those certain things come into play the objects need to be subtly varied to make them fit. But that subtle variation ain't so subtle. They're the same variations that had to be written in non Object Oreinted code. They're the same conditionals that were there before. Trying to create an object that fits all circumstances nearly always becomes a lie.

Let me put it a less meladramatic way.

Programs are tools. They are there to do a job. The job that needs to be done defines the logic that we must code into our tool. The program fits around the problem, not vice versa.

Whatever form the program takes it must fit around the problem that is there to be solved. Building it in objects doesn't seem to take away that underlying fact.

I s'pose I've ranted myself into a conclusion to my own unpossed question. An object oriented approach isn't better than a Proceedural approach (the old school way of programming). It's just different. It will suit some situations better than others. The programmer is still required to understand the problem that the tool is solving. The twisted logic required to fit in with the world will still be there in either case.

It shouldn't matter how you approach a problem. What matters is the quality of the solution. (In a program that is ease of use, ease of maintenance, cost etc... it's a long list). What bugs me about programming, and technology as a whole, are those that say "Do it this way", "This way is best", "This way is standard". The illusion that there are standard problems exaserbates this issue. rarely are two things the same when you look at the details. Our society believe there is white and black, when there is only grey (and green, yellow, blue, red, pink, misty, opaque, checked and lost-in-the-post).

Thursday, 18 October 2007

Where to get started

I'm currently learning how to do Object Oriented programming (OO). What OO is I'll no doubt talk about at a later date, but for now it's enough to say that it's a more complicated way of creating computer programs than I am used to.

It's only in the last few weeks that I've actually programmed anything in OO, but depressingly its taken me about 2 years to get to this stage. What have I been doing in all that time? To begin with I had to become aware that this method of programming existed. Then I had to realise that it was worth learning; That was a big step, because it would be much easier to pass it over. Lots of people talk about the benefits of OO, but those opinions meant very little. I can program just fine without it. Indeed it took getting stuck to make me realise that this could be a way to go.

Finally I had to work out where to start. As a programmer you pick up a lot of new programming languages. A programming language is like a spoken language. "Tickle my armpit" in English versus "Tickle my armpit" in French is the same thing: words represent objects and actions, they're just different words, possibly in a different order. The principal is the same. Ask me to mime "Tickle my armpit" or sculpt it, then I'm on a new track. New concepts are involved. OO isn't a new language it's a new set of concepts. Look at a piece of OO code and although I can make guesses at what's happening I really don't have much of a clue. Things are being done for a purpose, but I don't know what that purpose is.

Where do you start to learn? To me there seem three ingredients: examples, concepts and experiments:

An example shows you how to achieve something, but just copying an example doesn't necessarily provide any understanding of the concepts that under pin it.

Take Flat Pack Furniture (FPF, lets keep the abbreviation count up). Great stuff - I built a table the other day. FPF instruction are usually step by step diagrams proceeded by a list of the parts you should have, but probably don't. 4 x screws, 8 x wooden pins, 3 x angle bits and 7 x tapered bolt things that swivel. To begin with you look at the pieces and wonder how this collection of pointless junk could ever constitute a table. Then you build. Lets dream the dream and pretend you get it right first time. Suddenly you understood what each of those parts do. It's obvious now why you need 7 x tapered bolt things; they join the flat bit of the table to legs. You know what they do and why.

You've made the table first time. You're feeling cocky. You decide build a flat pack chair. In light of the table you expect the seat to be held on with tapered bolt things, after all, it worked for the table. But no, the chair comes with 16 reversible self lubricated "L" pegs. They do the same job, but in a different way. If your desire was to become a furniture designer you then this could be a depressing moment. Some where there is a reason behind the two different methods for doing seemingly the same thing. Someone somewhere knows something you don't.

Imagine now that you use your table and chair experiences to designing and build a shed. It's probably a deathtrap waiting to happen, that's if you even manage to get started. Reversible self lubricated "L" pegs don't grow on trees, and I doubt you'll have any idea how to select, plane and mill a piece of wood.

Lets move onto Concepts. These usually take the form of an open ended list of all the knowledge you need to understand a particular process. It can be an incredibly long and hard route.

I studied engineering at university. 4 very long years spent studying. I know (or did know) how to analyse both the static and dynamic stresses in materials under a range of loads. I know how to work out the sheering forces in a screw thread, can calculate the center of gravity of a large object, and the frictional forces exerted on a flat plane. With all that knowledge can I design and build you a table? Well yes probably. it would be 6 months of complex maths and planning. The study of wood types and selection, theories on tools and sawing. The textbooks would pile high (presumably on a table not unlike the one I was designing). The work involved would be disproportionate to the problem. It would be very boring and seemingly unnecessary to go to such lengths. (There's an Ikea in Edmonton).

Experimenting is the process where by you try and fail! Then you try and fail again. You can loose limbs experimenting. With time you will get somewhere. Often where you get has been previously documented. When your front room is full of experimental tables, not a leg of equal length between them, you do wonder would it not be better to just copy an example. The time cost of reading a relevant text book might have been worth it.

I'm probably stating the obvious: When you learn something new you need all three of these qualities.

Examples are the quick start into learning a new skill. If you want to be a comedian, watch comedy. Imitating isn't a bad way to get started. At the very least it gets you started, and that's a big step.

Experiment, find out the traps and problems. Try to do something you don't have an example for. Rearrange that which you have to find out it's limits. Write your first joke, die on stage and realise you don't get it yet. This should make you aware of your current limits. It should create questions.

When you have questions look to the concepts. Find enough to get you unstuck. Answer the questions by digging deeper to understand how the examples you already have work.

I ussualy get to a point where I cycle between the three qualities. If I'm stuck I look for examples. If they don't work. I look for concepts. If they don't work I experiment. If that doesn't work I look for other examples based on what I have discovered. From this back and forth comes something new. Creation. That's the most rewarding bit. When experimentation combines with existing knowledge be it concepts or examples - and you create something that wasn't there before.

Two observations:

Object Oriented Programming is full of concepts. Most of them hidden behind complex words that aren't really necessary. It took a long time to get my head around the concepts. I probably did too much theory and too little playing. If you want to start OO I recommend starting small. Lots of examples. Read lots and try to sort the useful information from the tonnes of words and rules. You will get there, don't be put off.

If you don't balance out concepts, examples and experimenting then you can get stuck. In comedy I have got bogged down in the theories and concepts. I stopped watching it and I don't experiment enough. That's a killer. Interesting that it's almost the same trap I got into as OO.

Long post. Hope useful to someone.

Wednesday, 17 October 2007

My passions: Programming and Comedy

I've tried Blogs before and I never keep them up. I think the main reasons are that a) I'm not a confident writter and b) I never pick a subject I'm interested in. The later is a stupid reason because I have two subjects that I obcess about all the time. By day I'm a computer programmer and by night I'm a comedian. Zen and the Art of motorcycle maintenance is the inspiration between merging the two. So here we go. How to be funny and how to program. They share many of the same issues and they overlap more than you would expect.

Lets see how we do this time.