windows executable (.zip file)
C++ source code (requires OpenGL & GLUT)
sample ~/.xsession for a toddler's UNIX/Linux account
/dev/dsp
and read a stream
of unsigned bytes encoding an 8-bit raw signal. Below are
plots of the raw waveform, the one-sided power spectrum,
and a Symmetrized Dot Pattern (or "sound flake")
as described in Clifford Pickover's "Computers, Pattern, Chaos and Beauty".
If you want to implement this yourself, get a passive microphone, plug it into the pink port on your soundcard, and try to get "rec" (a script that serves as a front end to "sox") to record something, and play it back with "play". If that doesn't work, it may be that your microphone is muted or disabled. Try running "aumix" (or maybe "xmix" or "smix") and select the microphone for reading.
report - source code - requirements: Unix / X11, OpenGL, GLUT
more pics - source code - requirements: Unix / X11 and OpenGL
pics and source code - requirements: OpenGL and GLUT
The applications that were written for K-OS include "mawm shell" (a command interpreter), a clock, and a 3D burr puzzle (not depicted below) which strained the limits of our 32K RAM.
Authors:
Derrick Moser, Phil Armstrong, Brian Wong, Michael McGuffin.
--- K-OS v1.0 ----------- E&CE 354, Winter 1997 -------------+------------------
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::| >KTerm 04
:::::::::::::::::::::+- KTerm 03 ------------------------+:::| KTerm 03
:::+- clock -----+:::|mawm shell : type man for help. |:::|* KTerm 02
:::| 2:34:17 pm |:::|+> |:::| clock
:::+-------------+:::| |:::| KTerm 01
:::::::::::::::::::::| |:::+------------------
:::::::::::::::::::::| ## KTerm 04 ################################::::
:::::::::::::::::::::| #mawm shell : type man for help. #::::
::+- KTerm 01 -------| #+> man #::::
::|mawm shell : type | #clear [wipe shell window] #::::
::|+> &clock | #setprompt string [customize prompt] #::::
::|+> &shell | #settime hh:mm:ss [set internal clock] #::::
::|+> &shell +----------#ls [list runnable programs] #::::
::|+> &shell #ps [list running processes] #::::
::|+> #program_name [start in foreground] #::::
::| #&program_name [start in background] #::::
::| #kill 0xPID [terminate process] #::::
::| #exit [quit shell] #::::
::+-----------------------------#+> _ #::::
::::::::::::::::::::::::::::::::# #::::
::::::::::::::::::::::::::::::::############################################::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
source code - requirements: Unix / X11
Windows 3.1 executables: 3d tic-tac-toe - mine sweeper solver
source code - written for DOS
The program works by creating a 2-dimensional array corresponding to tile positions on the plane. Each element of the array contains a list of all possible tiles in that position, except for odd-odd elements which are constrained to contain the black tiles. The program then performs constraint propagation, looping like this:
Loop { For each element in the array { Check the lists of possible tiles in this element's neighbours, and eliminate any tiles in this element's list that are impossible. If all tiles are eliminated from this element's list, then we took a wrong turn somewhere and must start over. } If no tiles were eliminated (i.e. we've reached a steady state) then { Perturb things by picking an element at random and removing a tile from its list. } If every element now has a list of just one tile, then { We're done. } }This algorithm was rather time consuming, even for small regions of the plane, when run on a 16 MHz Intel 386. I have since learned there is a much more straight-forward algorithm for tiling the plane with Robinson's tiles (see Undecidability and Nonperiodicity for Tilings of the Plane by Raphael M. Robinson, in Inventiones Mathematicae, vol. 12 (1971), pages 177-209).
6 years later, I ported the code to X11 and ran it on an SGI. Below is the result of zooming in a few times. As can be seen, this fractal has a most boring scale invariance.