I had to write some code today to convert words into colors, which was a lot of fun. I liked it so such I had to put a working example online.

The code is a simple function. How it works:

- We have three channels: red, green, and blue.
- Iterate over the word, with the first character adding to red, the second to green, and the third to blue. This continues for the whole word.
- Add the Unicode value of the character to a sum. Each time you add a new letter, multiply the value by a multiplier. This multiplier starts at 11 and is multiplied by 11 every time you go through three letters.
- Mod each sum by 256 to get the channel value.

```
function colorHash(str) {
var mul = 11;
var sums = [0, 0, 0];
var i;
if (str.length === 0) { return [255, 255, 255] }
for (i = 0; i < str.length; i++) {
sums[i % 3] += (str.charCodeAt(i) * mul);
if ((i % 3) == 2) {
mul *= 11;
}
}
for (i = 0; i < 3; i++) {
sums[i] = sums[i] % 256;
}
return sums;
}
function toRGBA(sums, alpha) {
var rgba = "rgba(";
rgba += sums.map(function (x) { return x.toString() }).join(",")
rgba += "," + alpha + ")";
return rgba;
}
```