I love his work, both SF and math and CA! I met Rudy at the Hackers conference decades ago and gave him a demo of an early version of my CAM6 simulator running on my SparcStation 2, and he showed me Cellab that he and John Walker developed at Autodesk, and we've been exchanging ideas about CA since then. A few years ago he pointed out a very subtle bug in my CAM6 heat diffusion code that I fixed.

Flickercladding:

https://www.fourmilab.ch/cellab/manual/rules.html#Flick

>Flick is named after “flickercladding,” the CA skin which covers the robots in my books Software and Wetware. In Flick, we see an AutoShade®d office whose rug is made of flickercladding that runs the TimeTun rule. You can tell which parts of the picture are “rug” because these cells have their bit #7 set to 1.

Flickercladding Interior Decoration

Conceived by Rudy Rucker
Drawn by Gary Wells
Modeled with AutoCAD
Rendered by AutoShade
Perpetrated by Kelvin R. Throop.

In this rule, we only change the cells whose high
bits are on. These cells are updated according to
the TimeTun rule.

http://www.technovelgy.com/ct/content.asp?Bnum=299

>Some looked humanoid, some looked like spiders, some looked like snakes ...All were covered with flickercladding, a microwired imipolex compound that could absorb and emit light.

https://en.wikipedia.org/wiki/Wetware_(novel)

>The plot goes disastrously awry, and a human corporation called ISDN retaliates against the boppers by infecting them with a genetically modified organism called chipmold. The artificial disease succeeds in killing off the boppers, but when it infects the boppers' outer coating, a kind of smart plastic known as flickercladding, it creates a new race of intelligent symbiotes known as moldies — thus fulfilling Berenice's dream of an organic/synthetic hybrid.

https://news.ycombinator.com/item?id=15546769

DonHopkins on Oct 25, 2017 | parent | context | favorite | on: Boustrophedon

The Floyd Steinberg error diffusion dithering algorithm can use a boustrophedonous scan order to eliminate the diagonal geometric artifacts you get by scanning each row the same direction.

https://en.wikipedia.org/wiki/Floyd%E2%80%93Steinberg_dither...

"In some implementations, the horizontal direction of scan alternates between lines; this is called "serpentine scanning" or boustrophedon transform dithering."

I implemented some eight bit cellular automata heat diffusion rules with error diffusion, which accumulated an unfortunate drift up and to the right because of the scan order.

Rudy Rucker pointed out the problem:

https://web.archive.org/web/20180909074032/http://donhopkins...

"Rudy Rucker: I feel like you might have some kind of bug in your update code, an off-by-one thing or a problem with the buffer flipping. My reason is that I see persistent upward drift in the action, like if I mouse drag a blob it generally moves up. Also the patterns appearing in the blob aren't uniform. I mean...this IS supposed to be the 2D Rug rule, isn't it?"

So instead of scanning back and forth boustrophedoniously (which wouldn't eliminate the vertical drift, just the horizontal drift), I rotated the direction of scanning 90 degrees each frame ("spinning scan") to spread the drift out evenly in all directions over time.

https://github.com/SimHacker/CAM6/blob/master/javascript/CAM...

// Rotate the direction of scanning 90 degrees every step,
// to cancel out the dithering artifacts that would cause the
// heat to drift up and to the right.

That totally canceled out the unwanted drifting and geometric dithering artifacts! That made it possible to cultivate much more subtle (or not-so-subtle) effects, like dynamically switching per-cell between different anisotropic convolution kernels (see the "Twistier Marble" rule for an extreme example).

http://donhopkins.com/home/CAM6

CAM6 Demo:

https://www.youtube.com/watch?v=LyLMHxRNuck

Demo of Don Hopkins' CAM6 Cellular Automata Machine simulator.

Live App: https://donhopkins.com/home/CAM6

Github Repo: https://github.com/SimHacker/CAM6

Javacript Source Code: https://github.com/SimHacker/CAM6/blob/master/javascript/CAM...

Comments from the code:

// This code originally started life as a CAM6 simulator written in C
// and Forth, based on the original CAM6 hardware and compatible with
// the brilliant Forth software developed by Toffoli and Margolus. But
// then it took on a life of its own (not to mention a lot of other CA
// rules), and evolved into supporting many other cellular automata
// rules and image processing effects. Eventually it was translated to
// C++ and Python, and then more recently it has finally been
// rewritten from the ground up in JavaScript.
// The CAM6 hardware and Forth software for defining rules and
// orchestrating simulations is thoroughly described in this wonderful
// book by Tommaso Toffoli and Norman Margolus of MIT.
// Cellular Automata Machines: A New Environment for Modeling
// Published April 1987 by MIT Press. ISBN: 9780262200608.
// http://mitpress.mit.edu/9780262526319/