Okay, I've got my E8 root rotating Java applet up, enjoy:
http://www.measurementalgebra.com/E8.html
It starts up with a random rotating view of the roots, but you can change the parameters to give some other view. You can also change the colors of the individual roots.
There are 240 roots. I've listed the 112 so(16) roots first, then the 128 16_{S+}. To change the color of them you would have to go through a lot of grief. I know, I'll be updating it with improvements as I go along.
The root structure shows how the fermions and bosons are kept separate. [edit] This is completely wrong, but a nice description of the roots anyway. I'm editing it to make it compatible with Lisi's particle assignments.[/edit]
The root vectors are 8 dimensional, that is, they are vectors of length 8. 128 of the roots carry quantum numbers of +-1/2, but there are an even number of +s (and therefore an even number of -s too). A typical root vector (set of 8 quantum numbers) is:
(+0.5, -0.5, -0.5, -0.5, +0.5, -0.5, +0.5, +0.5)
Note that the above has 4 - signs and 4 + signs. Since "4" is an even number, this is a legal fermion vector. The other 112 roots are defined by the minimal changes between these first 128. That is, define a distance function on the roots given by the sum of squares of the differences between the roots. The first 128 have even numbers of +s and -s, so this means that two roots have to change. The change is from +1/2 to -1/2 or back. Thus the other 112 roots are all the ways of choosing two quantum numbers out of 8, with those two quantum numbers being +1 or -1independently.
For example, here are two of the first 128 roots that are separated by the minimal distance:
(+0.5, -0.5, -0.5, -0.5, +0.5, -0.5, +0.5, +0.5)
(+0.5, +0.5, -0.5, +0.5, +0.5, -0.5, +0.5, +0.5)
The difference between them is a typical element from the last 112 roots:
(0.0,+1.0, 0.0, +1.0, 0.0, 0.0, 0.0, 0.0)
These last 112 roots have two non zero elements. But they can be positive or negative. And they can be anywhere in the vector. Another typical case:
(0.0,-1.0, 0.0, 0.0, 0.0, 0.0, +1.0, 0.0)
This has preon model written all over it. More later.