I have always loved programming - its like Lego without gravity.

Basic on my ZX81 graduating to assembler and Turbo Pascal during my teens.

Developed phone OS software - engineer, architect, product manager - but got made irrelevant by the iPhone and redundant by Android.

These days I mostly work with data, big data and fitting big data onto small boxes.

UPDATE: blog post describing how these mosaics are made

I knew my mosaic script was doing a poor job of placing the images.

The approach it’d be taking was greedy: it’d place the closest matching image on its tile, and then the next closest matching and so on.  The outcome in in the middle column above.

After talking a bit with Roy, I couldn’t really leave it doing such a poor job.

So in what way is the greedy approach sub-optimal?  It may be that swapping two images or three or more images around will lead to a lower overall error score.

And what’s the simplest improvement to make?  Rather than tackling the true dynamic programming or other classic approach to optimisation, I simply went for random swaps.

The script will now perform random swaps if they improve the image, until you interrupt it with ^C.

And the results, as seen in the left column above, are stunning :)

jump to ↓



performance
Faster searches with non-prefix fields in composite indices
Compressing MySQL databases
What highscalability.com says about Scaling my Server
Scaling my Server: follow-up
old classics
The kid's computer
Making the History of Worlds Religions map
If you defend those involved in the OpenGL ES specification, you are an idiot
Stackoverflow unwinding?
general
Why Swift?
Python annotations and type checking
pycon 2014 Sweden: the bad bits
Table-based Template Translation in C++
recreation
games programming
Perlin Noise
Perlin Noise
Drawing RTS maps fast
WillCity update
ludum-dare
Ludum Dare #35 Mosaic
LudumDare 33 wallpapers
SSIM vs MSE for Mosaics
Ludum Dare 30 results are in!