Dynamic Website Script

This web site is generated by a little perl script I wrote. The script interprets an HTML template language, understands HTML form input, and maintains a simple file-based database. The template language is simple, but powerful enough to generate websites with nice features like browser-based cooperative authoring, automatically generated indexes, interactive content and browser-sensitive page formatting.

Click here for more information on dbfon.pl.

Life Screensaver

Here's a little screensaver I wrote for Windows a few years ago. I've also written screensavers for the Mac and Next systems (and somebody's been porting them to the Be Os), but I haven't managed to find them anywhere on the net anymore. If you locate any copies, please let me know.

To use the screensaver, copy this file into your windows directory. Then, on Windows 95, you can right-click on the file and click "Install".

Postscript Maze

The little postscript file pasted as text below prints as a different maze every time you send it to a postscript printer. Since the printer actually computes the maze as it goes, it may take a little while to print out.

You can change the paramters at the beginning of the postscript file to change the kind of maze that's printed out.

I wrote this while I was a student at Cornell; a version of this file won the obfuscated postscript contest.

%! % Expert Labyrinth for Postscript printers, Copyright 1992 by David Bau .00 .15 % line weights (0..1) % This file is free puzzleware. :) -.70 % tunnel shape(-1..1) % Please distribute it and its output only for 40 % twistiness (0..100) % free, and keep my original comments intact. true % tunnel crossings % If you like it or if you have a suggestion, 612 792 % page dimensions % send me a postcard from your home town! 18 18 % page margins % 777 South Avenue; Weston, MA 02193; USA 12 % cell size % davidbau@hotmail.com /`/def/*/repeat/~/lineto/!/mod/@/if/#/ifelse/$/dup/^/add/|/stroke/'/put/S/gsave /./exit/,/and/&/sub/-/or/_/loop/=/exch/+/eq/Z/ne/"/bind/:/get/;/bitshift/W/exec /N/mul/O/translate/P/neg/Q/for/?/moveto/T/grestore/X/showpage/$/dup/V/arc/M/pop /Y/setlinewidth/R/div 73 dict begin 35{load def}repeat(,b5;-'/aabaCPbzN^`/bbw4! `}{/bb3^4!`}#}_}"WYI$0Z{SXTIYH}{M}#XT)(31)({.}@}_c1eK$G4-'c0eK5'cfdK$G1-'cfdKw5 '/hfwdK`/a0eK`/b0`{ah+{.}@aGbJ,0Z{caaG)(ge)(gf2R&)(abs)(;`b4+{.}@/abaCPbzNa^`}# }_{/eghw`/dghw`de&)(-5)(,k5;-}@'}_caaGk$5;=J--'}{/baG)(lt{15 xor 31)(-6h3)(16)( `caaGbJ-'baC{BcaaG)(xor)({{l$i=:d{.}@M}_}{4}#}#`b4Z{/kb2)(100 h n ge ,{b}{false i{d -}forall)('}Q}*/afhwghwK`/bl`ca45;'{/b/i[013{aC}Q]`ib:d)(16)(;`SaEOb{L}*mw4 !b+{L}@umb^2!:WTah+{.}@/bm`baCP{BSaEOb2!{L}*1y?sy~ry?0y~|T}_}_}D{01px{c=0'}Q01o po&1p0opoxop4{x{c=)(-5)(,0Z/nA013{$Ji,0Z{/kA/lk`/ml`4{/mmw4!`LmJi,0Z{tl4^m&4!:W /lm`}@km+{.}@}*.}@LM}QT}Q}D/H{/a0eK`/b0`{/maG)(15 ,/i A 16)(abz^`x$0+{M.}@}D/I{ 01px{/aASaEOaG$)(/L{90 rotate 0 -1 O}D /B{/a)(,FZ{P.}@}_}D)(15)(,0+{M.}@)(31)(# /FA0{w/jjv^`jG$)({10}{5})(0V|}"}{{0y?yy~y1~|}"}#]`/l{{5h$4Z{.}@M}_}D/C{/jA$z/vA 1,0+)(270)([{1y?0y~|}"e{{01y)(/u)(V|}"}{{1r?sr~s0~|}"}#]`)(90 180)(V|}"}{{1r?rr ~rs~1s~|}"{1r?rr~r1~|}"}#{1r?0r~n{s0?sr~r0?rr~}@|}"e{{10r)(180 270)(V1r~|}"{11s )(90 270)(x}D/z{[1o1PoP]=:}D/J{1=;}D/G{c=:}D/t[e{{1s?yyq)(idiv)(=!}D/K{oN^}D/E{ $o!x=o)S(/c p array `/w{1 ^}D/x{1 &}D/h{rand)(2R/qA/ryq&`/syq^`/of2^`/pog2^N`)( ge/e A/y .5 ` abs)({{1+}}#"/dA/nA$0)(scale{{1 ge}})($/fAcN&2R/oAopOcc)(cvi)($/g AcN&2R/pA$o&cR)(cvi)(/k/b/a3{0`}*/D{"`}"`/A{=`}D/cA$^/pA$^/oA$p&cR)()/j{F = i $ 1 ^/i = ` = '}/F 2157 string/i 0/m{32 j}/v{forall}5{`}* 27{{j}v m{$ j 47 Z{m}@} v}* F cvx W end