Automatons & Widgets
Self‐contained software devices to entertain and enlighten. Step right up…
Most of the following items require browsers to support both Javascript, and the Scalable Vector Graphics (SVG) standard.
Circa June 2012, versions of the “WebKit” browsers (Apple’s Safari, Google’s Chrome, etc.) and the “Gecko” browsers (Mozilla’s Firefox, etc.) run these automatons beautifully, with WebKit browsers having the edge in speed, and Gecko browsers often superior in fine detail.
Horology & Astronomy
Clock I
A twelve hour analog clock, as a trivial demonstration of using Javascript to animate Scalable Vector Graphics (SVG). (See also the related blog entry.) If you want to experiment with these technologies, this is a good example starting point.
Clock III
A year clock made of Javascript and SVG. More specifically, a clock graphically representing the location of the current moment within this year, month, week, day, hour and minute. Thrown‐in for good measure are high‐accuracy computations of equinoxes, solstices and moon phases (lunar illumination). (Thanks to Jean Meeus’ superb applied mathematics, accuracy is respectably close to the US Naval Observatory, and superior, for instance, to Wolfram Alpha.) ⓘ
Shortcomings:
One goal was to experiment with information density and clarity in a spatial time representation. The clarity seems good. However, the density is uneven, with the inner rings comparing poorly to the outer rings, but—perhaps—in acceptable proportion to their area.
Another goal was to provide viewers a spatial aid to perceiving time, including—but unconstrained by—artificial boundaries like weeks and months, which distort perception. On the clock’s outermost ring, one can look past some of those boundaries to see a linear progression of moments, each equally significant. One cannot, however, see beyond the Gregorian calendar’s year boundary (although its arbitrariness—its failure to coincide with any moment of astronomical significance, such as the December solstice—is seen easily). Thus, the clock fails to inform viewers’ understanding of the present moment’s relationship to any moment of the year before or ahead. Furthermore, the clock’s utility varies over the course of a year; steadily losing utility to those looking ahead, or gradually gaining utility to those looking back, while forever useless to those whose vision exceeds a year.
I’ve experimented with a clock having only a single, unmoving hand—the current moment is forever at twelve o’clock—and a face always rotating to show the half year gone, and the half to come. It has virtues, but a temporal horizon only six months away makes a small world of time, and the discontinuity at six o’clock on the clock‐face, where the past vanishes and the future emerges, is as visually troubling as mentally limiting.
Spatially representing time to provide the viewer a meaningful future and past, along with the bad news lunch is over, remains a problem to be solved.
Controls: Space‐bar and return keys toggle full‐screen mode. Drag to rotate. Click to undo rotation.
Moon Illumination, A Perpetual Table
A moon illumination table always representing the current month, forever avoiding obsolescence. (Accuracy equal to Clock III.) Controls: Click the left and right arrows to see previous and upcoming months. Click the month’s name to choose an arbitrary year.
Equinoxes & Solstices, A Perpetual Table
A perpetually current table of equinox and solstice dates and times, from ten years ago to ten years hence. (Accuracy equal to Clock III.)
Sociology & Psychology
Surveys from The Authoritarians by Bob Altemeyer
- RWA Scale – A survey to quantify attitudes toward authoritarianism.
- RF Scale – A survey to quantify religious fundamentalism.
All survey answers and results are completely private – only you see them.
Computation
Floating‐Point Number Examiner (IEEE 754‐1985, Binary 64)
All floating‐point numeric representations have limitations, but they are routinely overlooked, which can create bugs and/or bad data in software. Using the common IEEE 754‐1985, Binary 64 floating‐point standard (employed by Java, languages executed by the Java VM, Javascript, various other programming languages, and any language using a platform’s native floating‐point format—C, C++, C#, Python, etc.—on a CPU implementing IEEE 754‐1985), this page demonstrates those limitations. For instance, enter the number 0.1, and see how the number is distorted by its floating‐point representation. Then enter 0.125, and observe its representation is perfect. Why? Because it’s a power of two (2⁻³), unlike 0.1.
Rule 30 One‐Dimensional Cellular Automaton
One‐dimensional cellular automata are among the simplest programs possible, yet some produce behavior of limitless, irreducible complexity. Stephen Wolfram’s famous “rule 30” cellular automaton is the best example, and is demonstrated by the two programs below. Both compute the same, randomly seeded, 192‐cell automaton, whose left and right edges wraparound (eliminating the distortion of left and right boundaries, albeit by using a more tolerable distortion). The first implementation represents the automaton’s output as the conventional two‐dimensional grid. The second implementation removes the illusory left and right edges by representing the output as a hollow cylinder’s inner surface.
Controls: Click to start or stop. Use the space bar or return key to toggle full‐screen mode.
- Rule 30 Cellular Automaton
- Rule 30 Cellular Automaton, Cylindrical Mapping – Drag to rotate.
See also the related blog entry Rule 30 Automaton Cylindrical Projection.
Nifty Graphics / Experiments
Rotating Spiral
You are getting sleepy, very sleeeeepy.... Some people attribute hypnotic qualities to these spirals. I just think they create an interesting visual illusion. A Google award winner. Controls: Click to start, stop or reverse. Toggle full‐screen mode using the space bar or return key.
Maze
A random maze generator – see a new maze every time. (Reload the maze and watch it change!) To alter maze
complexity, save the maze page’s “source” to your disk, open it in a text editor, and change the two
integers (height and width) passed to the Maze
function (look for the line
“new Maze(75, 75);
” very near the file’s end). Open the edited file in your browser, and enjoy
your custom‐sized mazes.