Trying Tim's Vermeer

July 6th, 2014

I'm a regular listener of Penn's Sunday School, an excellent podcast by Penn Jillette of Penn & Teller fame. For a while he's been talking about a documentary film they've created called Tim's Vermeer. I got to see it a few weeks back.

It's a film about inventor Tim Jenison, and his 5 year obsession to paint a perfect replica of Vermeer's painting, The Music Lesson. Tim invents a technique/device he created, and shows how Vermeer probably used something rather similar. It's a great film, I suggest you watch it for yourself. In one scene, Tim comments casually that anyone could use his technique...

So I thought I'd give it a go. Now, I'm no painter. I can't sketch. I can't make anything look lifelike with any kind of image creation tools! I've never even touched oil paint before.

I wasn't expecting very good results, but I nipped to the shops and bought a couple of cheap canvasses, a tube of black and white oil paint, a cheap pack of brushes and a cheap compact makeup mirror. I cut and bent some wire into a crude stand and blu-tack'd the mirror to it. I printed out a B&W photo of my father to use as the original, and selotaped it to an old cardboard cat food box. I wasn't trying very hard to make the perfect setup.

I spent an evening setting this up and painting my first attempt. It just looked like a mess. Utterly discouraging to work on, and at the end of the night I just had a smudgy mess of nothing that didn't even match the original in image proportion, let alone look like a person.

The next morning I happened to catch sight of the painting I'd made from across the room. At an extreme angle, suddenly my brain recognised the face of my father. It was hard to see, but it was definitely there. I realised that there's a part of the technique the film doesn't mention - you have to move the mirror. I'd been keeping it as still as possible, assuming that touching it would ruin the painting. That's not the case though. You have to raise/lower it to scan different parts of the source image. What I'd done was squash it dramatically in the Y axis, so it was only about one quarter the height of the original.

The next night I had another go, painting directly over the squished version. I blocked in the frame of the picture first, then filled in reference points like eyes, nose, mouth. Then over the next 5 hours or so applied Tim's technique slowly and carefully. I learned how to change the shade of paint at any one point by adding black/white and mixing it right there on the canvas, or by mixing it first and applying it. I learned how to do detail with a fine brush, manipulating the paint by pushing it around rather than painting anew.

The results astonished me. Now, this is not a patch on what Tim achieved in any of his paintings, but does the technique work? Can any talentless fool with patience do it? Yup!

There are flaws. I got tired and impatient at the shirt, so didn't really follow the technique there and just freehanded it behind the mirror. The head shape isn't quite right and the placement of each feature is a little shifted. I think I'm still introducing a bit of skew overall by not moving my mirror often enough, and not looking straight enough into the setup. The painting isn't central in the canvas, and it is mirrored left-to-right (something I didn't notice until I'd finished).

The technique isn't perfect, or easy. It's not hard to follow, but it is back-breaking leaning over the apparatus while controlling a brush, and it's hard on the eyes. I had to shut one eye most of the time, and it's still difficult. It takes a lot of time and patience overall too, and shows soul-destroyingly little progress until you're a long way into it. Controlling the parallax skew is the hardest part for me so far, although with better thought-out equipment I'm sure I could get round that bit. I have a suspicion a much smaller mirror and an easily adjustable stand might help, as I'd be happier to move it more often.

A Brief History of Chris

May 6th, 2009

I wrote this for a forum entry. It wasn't meant to be this big, but since it is, I thought I could post it here too. Here we go then, with A Brief History of Chris. It was a programming forum, so it's focussed on my professional life rather than personal, if you see what I mean:

1. Faffed about with Amstrad CPCs waaaay back. Started by typing in listings from magazines. I remember typing the first one in without knowing that the enter key gave me a new line, so padded them out with spaces to look like it did in the mag. Needless to say my listing didn't work. I learned fast though, and could code a mean pile of spaghetti in Basic before too long.

2. Got into AMOS Basic on the Amiga. Suddenly there was actual power at my fingertips, which was just great. AMOS Basic was easy to use and gave
you all the hardware's power to do things like overscan scrolling, sprite manipulation, sound and so on really fast (for the time at least).

3. Went to uni doing Computer Science. It didn't teach me much about programming, but was did get me a string of really dull programming jobs afterwards. I'm the guy who programmed that little box of hardware that nobody ever sees that sits in a field reporting water levels. Fear my awesome fame! Ok, so it wasn't glamorous, but it did pay the bills.

4. Got intensely bored of writing code that I didn't care about, and learned Flash 6 then MX over about a few months of evenings. The intention was to make a dramatic career swerve into things I enjoyed doing, in a location that I liked. I got a job with Hyperlaunch (a digital marketing agency in Bristol). It was a sizeable drop in pay, but a massive hike in fun. It was also bloody hard work, but I ended up producing many many creative things (very often games) for big names that I'm pretty proud of.

5. Hyperlaunch's "way of the project" was to get things done as quick as possible. It was liberating in a way, but also often led to a feeling of not having given a good idea enough of a chance. It was also high pressure and low pay. I figured I could do high pressure and low pay all by myself and jacked it in to go freelance.

6. Freelance worked out pretty good so far! I had a couple of contracts right off the bat as I left Hyperlaunch, which gave me an encouraging kickstart. Then I sold my first private game, Hanna in a Choppa, to Kong for a decent chunk of money and it's been all go from there.

And that's pretty much it. When I went freelance my main concern was that I'd never find enough work to fill my time and pay the bills. Somehow though, I have even less free time. I have endless ideas I want to try out, but am struggling to find time for. Really must rebuild my ancient website too, and update my blog, and, and...

This week I are mostly been reading...

September 15th, 2007

A pretty book about mathematics and programming

An enlightening book about the mechanism of evolution

A beautifully written yet brutally filthy diary of a London call girl

And I can recommend them all!

Play with knowing the future

September 1st, 2007

This is an experimental gameplay simulation of pool. Don't expect a full finished game - its just a toy really - but you may still be surprised by the way this plays. This is Oracle Pool by Jonathan Blow:

The twist here is that you're playing pool with a superhuman ability to see the future. As you line up the shot (wasd to aim and set power, z/c for fine tuning) the computer quickly figures out the future of your prospective shot and displays the outcome for you.

Granted Team 17 did this with their Amiga pool game years ago, but computers then weren't powerful enough to see to the end of the shot that fast. They are now.

Things to try:

1. Aim at something and set the power to minimum. Gently increase the power and you'll see how the first collision happens. Fine tune the direction to instantly visualise how the direction is affected.

2. Line up an absurd trick shot. Use the above idea to aim the first colliding ball at a second. Adjust the power some more until the second ball is hit. Fine tune and repeat. Can you get all the balls in the corners in one go?

3. See how hard it is to set up a 4 ball cannon. We've all tried a cannon where you hit ball A, intending for it to hit ball B into a pocket. The more ambitious pool player may have tried to set up a 3 ball cannon where ball B then hits C into a pocket. How much harder is it to make the shot with each extra ball added in? Now you can get a feel for the probability of making those sorts of shots.

4. Search for the magic opening game winner shot. I've often wondered with some pool sims whether there's a particular shot that'll pot the black from the break. You'd imagine with the chaotic ill-conditioning of the balls' interactions, the possibility is there. Take a look. Is it? (use 1, 2, 3 keys to set different initial rackings)

5. Get a feeling for the chaos effect. Yes, small changes in the initial conditions will lead to large changes in the outcome. Usually. But line up a break with full power and use the fine tuner. It won't necessarily lead to as much variation in the final positions as you might expect. You'll often see pairs of balls end up in chaotic positions with small changes, but most of the rest of them seem to land more or less in the same place. You should be able to get a feel for how there are windows of continuous change, with singularities of sudden total change (presumably an early collision is now missed or similar). Wouldn't it be great to be able to try this with real life and test if the butterfly effect really exists!

6. Be surprised by still not really knowing the future. You can see how the balls end up, but you can't really see how they get there until you take the shot. Aim at a group of balls with plenty of power, and imagine how the interactions will take place. Take the shot and see if you were right. I bet you get it wrong more often than you nail it.

Bristol Motor Club August AutoSolo

August 17th, 2007

For those who don't know, AutoSolo is a competitive motorsport event. Its a sort of cross between a slow Sprint and fast AutoTest minus the reversing sections. Americans run a similar style event called Autocross, not to be confused with grass track racing in the UK.

Competitors are only allowed to use road cars that have been driven to the event. Each car is timed around several tight courses made from cones. The total time for each car is added up with any penalties incurred for hitting cones, taking the wrong route and so on.

Having not driven competitively for over six months, my first run was a little on the enthusiastic side, with plenty of sideways action. I turned in a respectable time nonetheless, and pushed harder in the second run. Unfortunately the rigours of everybody's first efforts had taken its toll on a section of the tarmac, which had now turned to gravel. Hitting this whilst still overdriving sent me into a rapid spin, filling the car with clouds of dust. With my time spoiled I had fun sliding about on the remainder of the run, and resolved to tone it down for the rest of the day.

Toning everything down worked wonders for my times (it always does) and my next two goes were the fastest of anybody's on the same course. Despite that my overall time for the course was still beaten by the very experienced Carl Streatfield in his bright yellow Elise.

As the day progressed my lack of recent practice manifested itself in somewhat inconsistent times, although I had no more disastrous spins. Another couple of fastest individual runs put me first in class, although first place overall was taken by Carl who drove consistently well the entire day to end up just under 2 seconds ahead of my time.

It was an unusually busy day as a marshal too. In AutoSolo, the competitors take it in turn to marshal each others' runs, and on my first stint I was stood near the hairpin bend. You don't really expect to have to do much marshaling on a Solo. You just have to call in the odd penalty when people tap cones or go the wrong way. There's usually just about nothing to crash into, and cars run by themselves so shouldn't end up in collisions.

A tiny bike-engined Sylva Riot shot past and disappeared out of sight at the corner. After a few seconds I realised everything had gone suspiciously quiet and poked my head out expecting to see the car stalled and unable to restart. Instead I was greeted with the sight of a completely empty track. I briefly questioned if I'd imagined the car passing, before realising where it must have ended up - in the thick bramble bush on the left. I ran to help and found the car lodged right up to the wheels in brambles, but on the wrong side of the bush! It had found its way clean through a gap in the hedge and continued to turn until crashing into the back of the brambles. Thankfully the driver and car were both fine, although it took a little while to dig them out.

Later a Mini slowed in front of my marshal post and rolled to a stop on the grass next to me. After futile efforts to get it running again we had to push it back to the pits over rough grass. Quite a work out in the summer sun!

Overall the day went really very well, and everyone seemed to be smiling lots. I'm booked on the RosSolo for this Sunday, but entry will depend on getting a punctured tyre repaired in time. It seems I've picked up a big chunk of metal in the back left tyre somehow. The rubber I use isn't easily available anymore so I won't be getting a replacement. With a bit of luck I'll be able to get the carcass repaired at a local garage however.

I took lots of photos at the event. Zips of the better ones are available below. Some of the expressions on the competitors faces are well worth the download! Some of the images of the tyres undergoing tarmac-torture are pretty impressive too. I took video of my runs as well, and I'll post these in another article soon.

Best photos (9mb zip)
Other good photos (37mb zip)
Official results (pdf)

Driving tips for the terminally stupid

August 16th, 2007

Its a speed camera, not a slow camera. It goes off only if you speed past it. There's simply no need to panic brake to 15mph for them.

Ancient Four Dimensional Software

August 10th, 2007

A very long time ago I made a computer program to draw 4D surfaces via animated 3D projections. Sadly I haven't got any examples of the animations anymore, it was that long ago. It made images like this however:

Frankly, the program wasn't really much good for doing anything other than making pretty stuff like that. You couldn't easily get it to output anything scientifically useful for example. Still, I did hear a rumour once of some Amiga magazine having put it on their coverdisks. I never saw the magazine and never heard anything from anyone else about it, so kinda forgot about it.

Until the other day that is. A project at work requiring isometric projection reminded me of the DGraph program. I wondered if I could find any images it had made anywhere online. A search didn't find what I wanted, but it did turn up an archive with scans of the magazine

I'm not angry that they used my work without permission. I'd have appreciated them contacting me beforehand of course, but I'm just happy the program was seen by someone! Granted I've now built games that have been played by quite literally millions of people, but there's something special about being published in print and immortalised on a coverdisk. The era of homemade software appearing on magazine covers has well and truly passed.

They even used a screenshot from the program on the disk itself. I wonder if anyone bought the magazine expecting to get some amazing free 3D software. Hope they weren't too disappointed.

Full size scan of the coverdisk page.

Popup hell still exists

August 10th, 2007

Cast your mind back to the dark ages of the Internet, if you were involved with it back then. If you weren't, you may struggle to believe just how pure things like email and the web were. They weren't full of adverts, or spam. There were very few malicious tricks being pulled like phishing or 419 scamming.

Eventually the con-men cottoned on to the lucrative potential and wrecked email with spam and scams. Good honest programmers made filters and so on to combat this. Banner adverts appeared on every popular webpage. People began to automatically filter out the distinctive banner shape whilst browsing, so the evildoers invented popup adverts, which leap in front of the page you're reading demanding your attention at least long enough to find the browser-close button.

Of course, the popup ad problem on the web has been mostly solved now. Browsers have popup stoppers built in these days so you don't even have to go and find a 3rd party one for yourself.

But popups aren't dead. Oh no. They're alive and well, albeit in a cunning new disguise. They aren't adverts anymore, but they're just as annoying. I'm talking about the scourge of the automatic update.

What's that you say? You like your programs being updated automatically? Well, I'd happily debate whether automatic updates should happen at all, but that's not what I'm trying to say here. What I want to know is why on Earth do I need to be told about it with a popup dialog? If its automatic, do it silently and behind my back! Don't require a reboot. Don't even require the restarting of the program being updated should it be in use. Just do it without annoying me.

When I start my computer at work, I get pestered for Windows updates, antivirus definition updates, Adobe software updates, backup reminders, Messenger updates and more. All I ever do is acknowledge each dialog until it buggers off. I'm not making any real choices for the software that I need to be involved in. I'm just wading through crap that's getting in the way of work.

Message to Adobe: When I open Acrobat Reader by double-clicking on a PDF, there's a fair chance I want to read the document. Five seconds after I start reading is exactly the wrong time to shove a giant and incomprehensible update box in my face. I just want to read my document. When I open Photoshop or Flash, I have a project to complete and a deadline to meet. I don't need to update some random bit of crap I never use. I just need to get on with what I'm doing. Go away please!

Message to Microsoft: My work computer gets rebooted every day. Please don't make me do it more often than that. Surely the latest update can wait until tomorrow morning? At least give me a "sod off updater popup" button that really does make it go away. As it stands the dialog contains options for reboot now, interrupting everything you were in flow working on, and reboot later which translates as "annoy me in five minutes with another popup when I'm typing something important".

Message to antivirus manufacturers: Your software is important to me and I like being protected by it. I don't however need to be told all the time that it is behaving itself like a good little program. I only care when there's a problem. Bother me when my PC is infected, not when its updating itself happily. Better yet, silently prevent the infections in the first place and don't tell me at all.

And, finally, to anyone who makes software anywhere in the world: Don't steal the system focus when I'm working on something else. If you absolutely must bring something to my attention, pop something up that sits to one side until I've had a chance to react to it. If your dialog is that vital in the first place, why risk the chance that I may be pressing space or enter at the exact time the options appear? All that will happen is I won't see the dialog because I'll accidentally choose the default option with the keyboard shortcut to it.

Phut phut you're dead

July 22nd, 2007

I went paintballing on a mates stag do yesterday. This is where you split into teams and play wargames with airguns. The premise is pretty simple: Get shot with a ball of paint and you're out until the next game.

I got a bit lost finding the appropriate entrance and ended up riding my bike down a loose rubble farm road. I was in the right place, but at the wrong entrance. I began to realise this when I smelled the distinctive scent of recent explosives and smoke was floating over the road. Full realisation only occurred when I noticed people popping up out of the treeline on either side of the road with guns. No harm done - just a tricky 3-point turn with a backdrop of a fierce firefight and I was on the right track again.

I hadn't been paintballing before. I learned many things.

  • Good road bikes make bad off-road bikes
  • Its quite surreal to accidentally ride a motorbike into a gunfight
  • Wearing glasses under a protective mask is difficult and uncomfortable
  • For each and every lens you wear, your probability of misting up and becoming effectively blind quadruples
  • Running around, running crouched, crouching behind cover, jumping about and climbing muddy hills is physically hard work and makes your legs ache a lot the next day
  • Hiding in good yet obvious cover may seem clever at the time, but you'll regret it. See this classic Monty Python sketch for details.
  • When hiding in good yet obvious cover, make sure you watch the rear entrance in case the enemy decide to flank round the back.
  • Getting shot in the back hurts
  • Getting shot in the finger hurts
  • Getting shot in the leg hurts
  • Getting shot in the arm hurts
  • Getting shot in the face: Hurts surprisingly little due the protective gear. Its still a surprise when everything goes orange though
  • No matter how much ammo you have, you'll always need more
  • Ammo is expensive
  • No matter how much you promise yourself you'll conserve ammo before a battle, you'll always open fire like its unlimited
  • Spheres make poor shapes for projectiles (See the Magnus Effect for details)
  • Taking the time to take aim on someone is wasted effort when your gun fires every shot along a different path
  • Taking the time to take aim on someone also lets them take equivalent aim on you
  • Taking the time to take aim on someone also lets them fire multiple shots at you
  • Corollary: Taking aim on someone who can see you will probably make them shoot back lots. This principal seems to work over and over until your opponents runs out of ammo. You can then stroll over feeling smug and finally shoot him. Assuming he hasn't got any mates nearby at least
  • Playing paintball can give you some appreciation of what real war would be like

Most of that list is clearly rather flippant. The last point is serious however, and is is one of the reasons I hadn't played paintball before. As a boy all things war/fighting/guns were exciting and fun. That's the same for most boys of course, at least partly because at a younger age we don't really understand mortality.

As we grow older we appreciate the reality better. War is about a large group of people fighting to the death. Each soldier is a person, with tens of years of elapsed lifetime including growing up, forming social ties, education, work, play etc. Each is expected to try and cause injuries to the people in the opposing side such that they cannot continue fighting. Each is asked to risk everything they can ever have on the random chances involved in things like firefights.

I went into the paintball games thinking I was probably a bit better trained than most of the other newbie players (I was an army cadet a long time ago and have fired plenty of guns). I was thinking my experience might lead me to survive in the games for longer than others. Might help me make less silly mistakes, or to shoot more effectively.

I don't think it made any difference. Getting shot seemed pretty random. Mostly I was hit by people I couldn't have seen, or by lucky shots that caught something not entirely behind cover like my hand steadying the gun. If it were real war, I'd be dead several times over.

If it were real war, I'd also have killed several times over. In one game I found myself in a particularly effective position. I picked off five opponents before running out of ammo and getting shot. In real life I'd have killed five people. In peacetime that would qualify me as a serial murderer. In wartime a hero, but still deceased.

A paintball travels at 170mph, stings and leaves a welt when it hits. An assault rifle bullet travels at 1900mph and smashes through skin, bones and internal organs when it hits. Clearly paintballing isn't the same as fighting with real guns as you are not risking your life or taking others. I'm capable of separating the two mentally like any intelligent adult. The analogy is still painfully obvious whilst playing however.

So many legs

June 27th, 2007

Just snapped this monstrous horror in my bathroom.

Why do these things love bathrooms so much? You'd think with the daily steam from the shower and the general cleanliness that it would be a hostile environment with little food.

Every morning and evening my motorbike is covered in new webs too. Not from such enormous terrors as the bathroom beastie above, but well made webs across the mirror stalks, handlebars and behind the windshield. Again, you'd think that the 70mph+ winds and vibrations it generates daily would be enough to put them off or at least shred the webs, but no.