Blog  |   Puzzles  |   Books  |   About

Mosaic Blossom

Mosaic  Blossom #2

I’m currently working on a series of mosaics using landscape and animal photos. Here’s a sample.

UPDATE: I received a letter about this image. Here it is.

I love the work that you do, and I have a question about what an algorithm is. Is it math that you can Javascript, taken from an abstraction of poesy, or is it abstracted image?

I have a Javascript called “fireworks”, and the original colours and pattern of the work conjures up a whole poem by someone admiring a beachline by sunset.

Yours seems to say: Rose image. “I love roses”, and image synthesized from dew delineating rose shaping.

I am an artist, and I see things like this, but I never get to check things out.

How do you make an algorithm? is it hard?

Best regards,


My answer:

An algorithm is a detailed set of instructions. For example, here is an algorithm for acquiring a loaf of bread.

  • Walk out your front door.
  • Walk down the street to the east until you get to the corner market.
  • Walk into the market.
  • Walk to the bread aisle.
  • Choose a load of bread.
  • Take the bread to the counter.
  • Purchase the bread.
  • Walk home.

An algorithm can have more instructions than this. For example, in the above algorithm, I did not provide instructions for opening the front door. I did not provide instructions for the baker who is baking the bread. I did not provide instructions for how to walk. If I were writing such an algorithm for the computer, I would have to be much more detailed, because computers don’t have the common-sense understanding that humans have. I would have to explain everything in excrutiating detail. Walking to the store and buying bread is extremely difficult for a computer, because the algorithm it needs is very long and complicated. This is why we don’t see a lot of robots walking the streets with loaves of bread.

Computer algorithms generally involve manipulating data. That data might be words, colors, sounds, monetary values — all kinds of things. But ultimately, the data is represented as numbers. So, for example, the color pink might be represented as individual RGB values (red=255, blue=190, green=185) or just 255,190,185.

A sound can be represented as a series of numbers which indicate which direction the cone in the speaker moves when the sound plays back. Positive numbers move the cone forward, and negative numbers move the cone backward: 0 20 30 20 0 -20 -30 -20 0

So, the data that is being manipulated is numbers, yet it is also, simultaneously, an abstract image or poetry, or whatever the data represents. The algorithm, which tells the computer what to do with the data, involves math, because it is manipulating numbers, but it can simultaneously involve non-mathematical ideas, such as painting.

Making an algorithm for a computer involves being able to translate from the world of human concerns (painting, cooking, writing, whatever) to the more symbolic and numeric concerns of the computer. It is a skill that is acquired with time. I suspect that some people have a natural affinity for it, and can learn it more easily.

There are also some programmers who are not particuarly interested in human concerns, so they tend to translate one level of computer concerns to another level of computer concerns. These folks are “low level” or “system” programmers.

I myself am a “high level” or “applications” programmer, because I like making software that involves more human-centered issues, such as user interfaces, software toys, art and music.

So yes, making the image above involved some math, but it also says, “I love roses,” or perhaps more accurately, “I love the processes that cause things like roses to happen.”

If you’re interested in learning more about this subject, a good book to read is “The Pattern on the Stone,” by Danny Hillis.

Comments are closed.