pictures of me

and because people don’t look like their photos irl…here is a distribution over to sample:

ssd’s and ubuntu

So I got fed up with waiting for my new computer to boot or java to find the hundreds of files it needs, I decided to blow my spoils from a recent conference victory on a SSD hard disk for my desktop machine.

First surprise – it came in a flat envelope – thought it was a mistake at first, and they’d sent me an OEM cd, but sure enough it was an Intel 80Gb (SSDSA2MH080G2C1 to be precise…) . These things are really small, packaged in not much and must be quite robust.
Second surprise – well not really surprise, the speed boost is pretty noticeable. Overclocking takes second place to getting one of these on your development machine – top video is with my old HDD (320Gb WD Caviar drive), bottom with the Intel SSD.

So running ubuntu, there are two things I discovered people talked about – erase block alignment and trim support. Because I’ll forget what I did this time, I’ll note it in this blog, however I suspect that by the time anyone uses this, there will be a better guide available.
Erase block alignment
As explained here, when a SSD deletes data, but nuking entire erase blocks. On my intel disk disc drive the erase block size is 128K (128 * 2^10 bytes, different drives, such as the OCZ use different e/block sizes), so we want the sectors of the drive to align to this boundary. I used the instructions here to use the live Ubuntu CD and fdisk to ensure this was the case.
Then I reinstalled ubuntu and booted her up.
Trim support

Trim is an operating system function that tells a drive when pages are no longer in use, and can be handed back to the SSD’s page-allocation system. But the default version of Ubuntu (currently lucid/10.04) uses kernel version 2.6.32, so there’s no trim support. The instructions here give a painless way to upgrade the kernel to 2.6.34, once ubuntu is installed.

normals with structured light

Right, new day new mad idea. Using a naff webcam and a big ol’ TFT to capture normal maps and specular maps for a face. Some academic people have tried this using big illumination rigs and monitors before (but seemed to be working at it too hard).

First up left/right normals. By strobing a white line across the screen and compiling the pixels that light up the most you can build up a convincing normal map (black -> white = left to right):


The grainyness down the left hand side of the image is the light reflecting from a white wall that is next to the monitor :(. This took several passes and blended the results.My next attempt was at extracting specular maps. This is much trickier. Some people have tried this before with mirrored objects, but reading their papers before trying it would have been cheating.

So if you display a chess-board inverted with every frame and composite the difference in maximum and minimum brightness for each pixel over a bunch of flashes you trigger epilepsy. You also get:

(a deoderent bottle with a 20 pence piece attached)

Good – but on the edges between the chess squares you get low change = no specular. Solution: most the squares around in a non-linear fashion (add a translation based on a random rotation).

The response for this algorithm was also very nervous and it acted as edge detection when something was moving a little. But it did pick out the eyes and my greasy nose.

For objects that are shiny but rough (such as the coin above) you get no output because the response is the same for both inverted and non-inverted stages. To differentiate between a matt bit of paper and shiny metal I tried different sizes of squares to display. With 1cm – 30cm sized squares I got the following results.

It looks like you get different responses for different levels of roughness. The differentiator seems to be when it peaks first. I’m also still getting a lot of striping, so supspecting something’s wrong with my averaging!


old website no. 1

From a very old website. When I was a teenager, I thought this was really cool. The website rebranded everytime you visited. Have fun (mash refresh!).

with thanks to swf2js. All trademarks below to their respective owners. Yes, this is a parody.

retro videos

Here are some recovered videos from secondary school! I remember hundreds of hours spent after school playing with the fancy “Media 100” editing suite to get my animations (carefully exported from home on VHS tape then sped up once digital) just right. Unfortunately, much quality was then lost as they were archived to VHS…

This was entered into a film contest. It was shown at the Cambridge Arts Picture House!

Another art project. I suspect I’d been reading too much science fiction and playing too much Warhammer….

Don’t remember creating this one.

The logo for a Media Studies project.

I believe this was a progress report for DofE studies:

old website no. 2

An old flash game from the 2000’s.

(with apologies for the rude, filthy, totally unacceptable language here)

old website no. 3

In the early days of the web I had a showcase of my 3D art from circa 96-99. Sadly lost to the sifting sands of web standards (or lack thereof), here are some examples.

If memory serves, the early images were made with Imagine while the later ones were made with Truespace – both from cover-disks of the venerable PCF. They were created for school and personal projects. I apologise in advance for not-too subtle teenage angst + violence.