From 0376f48a52154856457f35acabf98ea25057ae11 Mon Sep 17 00:00:00 2001 From: Neale Pickett Date: Tue, 10 Nov 2009 23:06:12 -0600 Subject: [PATCH] Move back to m4, but with Jam this time. --- .gitignore | 5 +- DsLinks.mdwn | 13 -- HouseTodo.mdwn | 8 - Jamfile | 8 + Jamrules | 41 +++++ Makefile | 2 - bees.mdwn | 9 - biketodo.mdwn | 62 ------- blog.mdwn | 4 - blogarchive.mdwn | 2 - datedblog.mdwn | 10 - default.css | 223 ++--------------------- dirlist | 13 ++ logo.png => face.png | Bin index.mdwn | 8 +- mdwntohtml | 16 ++ ourbikes.mdwn | 34 ---- ourbikes/bike-measure.png | Bin 47320 -> 0 bytes papers.mdwn | 7 - papers/Jamfile | 3 + papers/digimatrix.mdwn | 30 ++- papers/html-tutorial.html | 110 ----------- papers/html-tutorial.mdwn | 107 +++++++++++ papers/index.mdwn | 17 ++ papers/reply-to-still-harmful.mdwn | 2 +- papers/sockets.mdwn | 2 +- poems.mdwn | 7 - poems/Jamfile | 4 + poems/bagel-girl.mdwn | 3 +- poems/ducks.mdwn | 2 +- poems/goldfish.mdwn | 8 +- poems/index.mdwn | 14 ++ poems/lake.mdwn | 2 +- poems/mice.mdwn | 2 +- poems/optimized.mdwn | 6 +- poems/poopy-music.png | Bin 0 -> 744 bytes poems/poopy.mdwn | 2 +- poems/sap.mdwn | 2 +- poems/snark.mdwn | 2 +- poems/winders.mdwn | 2 +- print.css | 14 +- smileys.mdwn | 33 ---- src.mdwn | 10 - src/Jamfile | 11 ++ src/dwm/Jamfile | 6 + src/dwm/index.mdwn | 25 +++ src/eguile/Jamfile | 3 + src/{eguile.mdwn => eguile/index.mdwn} | 29 ++- src/escm.mdwn | 2 +- src/firebot.mdwn | 2 +- src/index.mdwn | 30 +++ src/ipqueue/Jamfile | 3 + src/{ipqueue.mdwn => ipqueue/index.mdwn} | 42 ++--- src/misc/9p.scm | 9 +- src/misc/Jamfile | 4 + src/misc/Makefile | 18 -- src/misc/index.head.mdwn | 2 + src/postscript/Jamfile | 4 + src/postscript/Makefile | 13 -- src/postscript/index.head.mdwn | 5 + src/postscript/index.html | 82 --------- src/python.mdwn | 3 - src/python/Jamfile | 6 + src/python/index.head.mdwn | 3 + src/python/ndstrunc.py | 2 +- src/xss.mdwn | 8 +- template.xml | 29 +++ toys.mdwn | 14 -- toys/Jamfile | 3 + toys/{omg-magic => cards}/1.png | Bin toys/{omg-magic => cards}/10.png | Bin toys/{omg-magic => cards}/11.png | Bin toys/{omg-magic => cards}/12.png | Bin toys/{omg-magic => cards}/13.png | Bin toys/{omg-magic => cards}/14.png | Bin toys/{omg-magic => cards}/15.png | Bin toys/{omg-magic => cards}/16.png | Bin toys/{omg-magic => cards}/17.png | Bin toys/{omg-magic => cards}/18.png | Bin toys/{omg-magic => cards}/19.png | Bin toys/{omg-magic => cards}/2.png | Bin toys/{omg-magic => cards}/20.png | Bin toys/{omg-magic => cards}/21.png | Bin toys/{omg-magic => cards}/22.png | Bin toys/{omg-magic => cards}/23.png | Bin toys/{omg-magic => cards}/24.png | Bin toys/{omg-magic => cards}/25.png | Bin toys/{omg-magic => cards}/26.png | Bin toys/{omg-magic => cards}/27.png | Bin toys/{omg-magic => cards}/28.png | Bin toys/{omg-magic => cards}/29.png | Bin toys/{omg-magic => cards}/3.png | Bin toys/{omg-magic => cards}/30.png | Bin toys/{omg-magic => cards}/31.png | Bin toys/{omg-magic => cards}/32.png | Bin toys/{omg-magic => cards}/33.png | Bin toys/{omg-magic => cards}/34.png | Bin toys/{omg-magic => cards}/35.png | Bin toys/{omg-magic => cards}/36.png | Bin toys/{omg-magic => cards}/37.png | Bin toys/{omg-magic => cards}/38.png | Bin toys/{omg-magic => cards}/39.png | Bin toys/{omg-magic => cards}/4.png | Bin toys/{omg-magic => cards}/40.png | Bin toys/{omg-magic => cards}/41.png | Bin toys/{omg-magic => cards}/42.png | Bin toys/{omg-magic => cards}/43.png | Bin toys/{omg-magic => cards}/44.png | Bin toys/{omg-magic => cards}/45.png | Bin toys/{omg-magic => cards}/46.png | Bin toys/{omg-magic => cards}/47.png | Bin toys/{omg-magic => cards}/48.png | Bin toys/{omg-magic => cards}/49.png | Bin toys/{omg-magic => cards}/5.png | Bin toys/{omg-magic => cards}/50.png | Bin toys/{omg-magic => cards}/51.png | Bin toys/{omg-magic => cards}/52.png | Bin toys/{omg-magic => cards}/53.png | Bin toys/{omg-magic => cards}/54.png | Bin toys/{omg-magic => cards}/6.png | Bin toys/{omg-magic => cards}/7.png | Bin toys/{omg-magic => cards}/8.png | Bin toys/{omg-magic => cards}/9.png | Bin toys/crunt.cgi | 31 ++++ toys/crunt.php | 20 -- toys/fungame.mdwn | 2 +- toys/index.mdwn | 11 ++ toys/omg-magic.html | 72 -------- toys/omg-magic.mdwn | 58 ++++++ toys/smalltalk.cgi | 112 ++++++++++++ woozletodo.mdwn | 5 - 131 files changed, 679 insertions(+), 839 deletions(-) delete mode 100644 DsLinks.mdwn delete mode 100644 HouseTodo.mdwn create mode 100644 Jamfile create mode 100644 Jamrules delete mode 100644 Makefile delete mode 100644 bees.mdwn delete mode 100644 biketodo.mdwn delete mode 100644 blog.mdwn delete mode 100644 blogarchive.mdwn delete mode 100644 datedblog.mdwn create mode 100755 dirlist rename logo.png => face.png (100%) create mode 100755 mdwntohtml delete mode 100644 ourbikes.mdwn delete mode 100644 ourbikes/bike-measure.png delete mode 100644 papers.mdwn create mode 100644 papers/Jamfile delete mode 100644 papers/html-tutorial.html create mode 100644 papers/html-tutorial.mdwn create mode 100644 papers/index.mdwn delete mode 100644 poems.mdwn create mode 100644 poems/Jamfile create mode 100644 poems/index.mdwn create mode 100644 poems/poopy-music.png delete mode 100644 smileys.mdwn delete mode 100644 src.mdwn create mode 100644 src/Jamfile create mode 100644 src/dwm/Jamfile create mode 100644 src/dwm/index.mdwn create mode 100644 src/eguile/Jamfile rename src/{eguile.mdwn => eguile/index.mdwn} (74%) create mode 100644 src/index.mdwn create mode 100644 src/ipqueue/Jamfile rename src/{ipqueue.mdwn => ipqueue/index.mdwn} (63%) create mode 100644 src/misc/Jamfile delete mode 100644 src/misc/Makefile create mode 100644 src/misc/index.head.mdwn create mode 100644 src/postscript/Jamfile delete mode 100644 src/postscript/Makefile create mode 100644 src/postscript/index.head.mdwn delete mode 100644 src/postscript/index.html delete mode 100644 src/python.mdwn create mode 100644 src/python/Jamfile create mode 100644 src/python/index.head.mdwn create mode 100644 template.xml delete mode 100644 toys.mdwn create mode 100644 toys/Jamfile rename toys/{omg-magic => cards}/1.png (100%) rename toys/{omg-magic => cards}/10.png (100%) rename toys/{omg-magic => cards}/11.png (100%) rename toys/{omg-magic => cards}/12.png (100%) rename toys/{omg-magic => cards}/13.png (100%) rename toys/{omg-magic => cards}/14.png (100%) rename toys/{omg-magic => cards}/15.png (100%) rename toys/{omg-magic => cards}/16.png (100%) rename toys/{omg-magic => cards}/17.png (100%) rename toys/{omg-magic => cards}/18.png (100%) rename toys/{omg-magic => cards}/19.png (100%) rename toys/{omg-magic => cards}/2.png (100%) rename toys/{omg-magic => cards}/20.png (100%) rename toys/{omg-magic => cards}/21.png (100%) rename toys/{omg-magic => cards}/22.png (100%) rename toys/{omg-magic => cards}/23.png (100%) rename toys/{omg-magic => cards}/24.png (100%) rename toys/{omg-magic => cards}/25.png (100%) rename toys/{omg-magic => cards}/26.png (100%) rename toys/{omg-magic => cards}/27.png (100%) rename toys/{omg-magic => cards}/28.png (100%) rename toys/{omg-magic => cards}/29.png (100%) rename toys/{omg-magic => cards}/3.png (100%) rename toys/{omg-magic => cards}/30.png (100%) rename toys/{omg-magic => cards}/31.png (100%) rename toys/{omg-magic => cards}/32.png (100%) rename toys/{omg-magic => cards}/33.png (100%) rename toys/{omg-magic => cards}/34.png (100%) rename toys/{omg-magic => cards}/35.png (100%) rename toys/{omg-magic => cards}/36.png (100%) rename toys/{omg-magic => cards}/37.png (100%) rename toys/{omg-magic => cards}/38.png (100%) rename toys/{omg-magic => cards}/39.png (100%) rename toys/{omg-magic => cards}/4.png (100%) rename toys/{omg-magic => cards}/40.png (100%) rename toys/{omg-magic => cards}/41.png (100%) rename toys/{omg-magic => cards}/42.png (100%) rename toys/{omg-magic => cards}/43.png (100%) rename toys/{omg-magic => cards}/44.png (100%) rename toys/{omg-magic => cards}/45.png (100%) rename toys/{omg-magic => cards}/46.png (100%) rename toys/{omg-magic => cards}/47.png (100%) rename toys/{omg-magic => cards}/48.png (100%) rename toys/{omg-magic => cards}/49.png (100%) rename toys/{omg-magic => cards}/5.png (100%) rename toys/{omg-magic => cards}/50.png (100%) rename toys/{omg-magic => cards}/51.png (100%) rename toys/{omg-magic => cards}/52.png (100%) rename toys/{omg-magic => cards}/53.png (100%) rename toys/{omg-magic => cards}/54.png (100%) rename toys/{omg-magic => cards}/6.png (100%) rename toys/{omg-magic => cards}/7.png (100%) rename toys/{omg-magic => cards}/8.png (100%) rename toys/{omg-magic => cards}/9.png (100%) create mode 100755 toys/crunt.cgi delete mode 100644 toys/crunt.php create mode 100644 toys/index.mdwn delete mode 100644 toys/omg-magic.html create mode 100644 toys/omg-magic.mdwn create mode 100755 toys/smalltalk.cgi delete mode 100644 woozletodo.mdwn diff --git a/.gitignore b/.gitignore index b84c806..7abcfb4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ -/.ikiwiki -/recentchanges +*~ +*.html + diff --git a/DsLinks.mdwn b/DsLinks.mdwn deleted file mode 100644 index 4dcc8e2..0000000 --- a/DsLinks.mdwn +++ /dev/null @@ -1,13 +0,0 @@ -[[meta title="Nintendo DS Links"]] - -* [NDS Homebrew](http://www.ndshb.com/) - ----- - -* [DS Frotz](http://gugusse.central.free.fr/papafuji/DSFrotz.html) for playing Infocom ZIP files -* [Rick Dangerous](http://gpf.dcemu.co.uk/xrickds.shtml) -* [robotfindskitten](http://gpf.dcemu.co.uk/robotfindskitten.shtml) -* [ScummVM](http://scummvm.drunkencoders.com/) -* [Python](http://www.develer.com/~lmancini/dspython/) -* [MythTV Remote](http://grizzly.thewaffleiron.net/mythremote/) -* [PAlib](http://www.palib.info) for writing my own stuff \ No newline at end of file diff --git a/HouseTodo.mdwn b/HouseTodo.mdwn deleted file mode 100644 index e36145c..0000000 --- a/HouseTodo.mdwn +++ /dev/null @@ -1,8 +0,0 @@ -[[meta title="House Todo"]] - -* Front door -* Paint the house -* Take up carpet in living room -* Wood stove -* Fix upstairs attic doors -* Insulate floors diff --git a/Jamfile b/Jamfile new file mode 100644 index 0000000..a80e7cd --- /dev/null +++ b/Jamfile @@ -0,0 +1,8 @@ +SubDir TOP ; + +Webify index.mdwn ; + +SubInclude TOP papers ; +SubInclude TOP poems ; +SubInclude TOP src ; +SubInclude TOP toys ; diff --git a/Jamrules b/Jamrules new file mode 100644 index 0000000..019d6c6 --- /dev/null +++ b/Jamrules @@ -0,0 +1,41 @@ +MDWNTOHTML = $(TOP)/mdwntohtml ; +DIRLIST = $(TOP)/dirlist ; +TEMPLATE = $(TOP)/template.xml ; + +rule Copy { + local tgt = $(1:D=$(SUBDIR)) ; + File $(tgt) : $(2) ; + Clean clean : $(tgt) ; +} + +rule AutoIndex { + local tgt = $(1:D=$(SUBDIR)) ; + local src = $(3:D=$(SUBDIR)) ; + local head = $(2:D=$(SUBDIR)) ; + + HEAD on $(tgt) = $(head) ; + Depends $(tgt) : $(src) $(head) $(DIRLIST) ; + Clean clean : $(tgt) ; + DirList $(tgt) : $(src) ; +} + +rule Webify { + local html ; + + for i in $(1:D=$(SUBDIR)) { + html = $(i:S=.html) ; + + Depends $(html) : $(i) $(TEMPLATE) $(MDWNTOHTML) ; + Depends all : $(html) ; + Clean clean : $(html) ; + MdwnToHtml $(html) : $(i) ; + } +} + +actions MdwnToHtml { + $(MDWNTOHTML) $(TEMPLATE) < $(2) > $(1) +} + +actions DirList { + $(DIRLIST) $(HEAD) $(2) > $(1) +} diff --git a/Makefile b/Makefile deleted file mode 100644 index 57c309e..0000000 --- a/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -all: - ikiwiki --setup ~/lib/wiki/ikiwiki.setup --wrappers diff --git a/bees.mdwn b/bees.mdwn deleted file mode 100644 index 67a85b6..0000000 --- a/bees.mdwn +++ /dev/null @@ -1,9 +0,0 @@ -Amy and I got this crazy notion that we'd keep bees. On this page you can laugh at our follies. - -New Mexico Bee Stuff --------------------- - -* I wish we had known about [Zia Queen Bees](http://ziaqueenbees.com/) before we ordered our package. -* The [Sangre De Cristo Beekeepers List](http://pets.groups.yahoo.com/group/SDCBeekeepers/) is full of helpful people. - -[[!inline pages="link(bees)" show="0" reverse="yes" postform="no" actions="yes" description="Neale's Bees" author="Neale Pickett"]] diff --git a/biketodo.mdwn b/biketodo.mdwn deleted file mode 100644 index 88bd220..0000000 --- a/biketodo.mdwn +++ /dev/null @@ -1,62 +0,0 @@ -[[meta title="Bike Todo"]] - -General -======= - -* Spare shifter cables -* Spare brake cables -* Spare shifter housing -* Spare brake housing -* Spare housing end caps -* Spare cable crimp-on end thingies -* A couple extra patch kits and tire levers for classes - -Amy's Rodriguez -=============== - -* New helmet - - -Doosoo -====== - -* Another rear light -* Spare tube -* Spare tire - -Neale's Rodriguez -================= -* Clean off remaining bug guts -* Maybe put on the Biopace chainrings - - -ALAN -============ - -* Put components back on (derailers, shifters, handlebars) -* Brake and shifter cables -* Needs tires and tubes -* Needs new brake hoods -* Bar tape (yellow, maybe?) -* May as well buy a couple spare 6sp freewheels while I can still get them. Bikeman sells a 6sp Mega-range freewheel. - - -Bike Friday -=========== -* Spare tube -* Spare tire -* Multi-tool -* Tire levers -* Patch kit -* Wedge pack -* Normal brake levers -* Move bar-end shifters from Fuji -* Bar tape (definitely violet) -* Might want to get a couple 7sp freewheels (also for tandem) before they become endangered. Mega-range FTW. - - -Tandem -====== - -* Put the damned fenders on -* Get some 7sp freewheels (also used on Bike Friday) before they become endangered. diff --git a/blog.mdwn b/blog.mdwn deleted file mode 100644 index 528d98d..0000000 --- a/blog.mdwn +++ /dev/null @@ -1,4 +0,0 @@ -[[!meta title="Neale's Blog"]] -[[!meta author="Neale Pickett" authorurl="http://woozle.org/~neale/"]] -[[!inline pages="blog/* and !blog/*/*" show="10" postform="no" actions="yes" description="Neale's Blog" author="Neale Pickett"]] -[[older_entries|BlogArchive]] diff --git a/blogarchive.mdwn b/blogarchive.mdwn deleted file mode 100644 index 2dfcc6c..0000000 --- a/blogarchive.mdwn +++ /dev/null @@ -1,2 +0,0 @@ -[[!meta title="All blog entries"]] -[[!inline pages="blog/* and !blog/*/*" rootpage="blog" feeds="no" archive="yes"]] diff --git a/datedblog.mdwn b/datedblog.mdwn deleted file mode 100644 index da644fd..0000000 --- a/datedblog.mdwn +++ /dev/null @@ -1,10 +0,0 @@ -DatedBlog ---------- - -[[!datedblog pages="blog/* and !blog/*/*" rootpage="blog" archive="yes" show="2"]] - - -Inline --------- - -[[!inline pages="blog/* and !blog/*/*" rootpage="blog" archive="yes" show="2"]] diff --git a/default.css b/default.css index ff6660a..22538ba 100644 --- a/default.css +++ b/default.css @@ -1,25 +1,19 @@ -/* - * Global - */ - -html { - color:#061208; - background:#bfb8a6; +body { + max-width: 40em; + background-color: #eee; } -body { - background:#e1d8c9; - border: solid black 1px; - font-family: serif; - color: #000; - margin: 1em auto; - padding: 2px; - min-width: 20em; - max-width: 50em; +p, li, dd { + text-align: justify; +} + +h1:first-child { + background-color: #cc8; + margin-top: 0; } h1, h2, h3, h4, h5, h6 { - font-family: "MgOpen Moderna", sans-serif; + font-family: "URW Gothic L", sans-serif; color: #c17f6f; } @@ -35,201 +29,24 @@ a:hover { } pre { - background: silver; + background: #ccc; + margin: 1em 2em; + padding: 1em; + border: solid black 1px; } -.notice { - background: yellow; -} - -.figure { - float: right; - text-align: center; - background-color: #eeeeee; - border: solid gray 2px; - padding: 4px; - margin: 5px 15px; -} - -.left { - float: left; -} - -.right { - float: right; -} - -/* - * Header elements - */ - -h1#head { - background:#5c5f80; - border: 1px solid black; - text-align: left; - padding: 0em 0px 1em 10px; - margin: 0em; - font: normal 2em "URW Gothic L" sans-serif; - letter-spacing: 0.33em; -} -#head a { - color: #ffe; -} -#head img { - float: right; - border: 2px solid black; - margin: 0px 30px 5px 0px; -} - - -/* - * Navigation menu - * - * IE6 doesn't understand CSS selectors. So we use the > selector to - * specify stuff IE6 shouldn't see. This has the effect of permanently - * hiding the pop-up menus. - */ - #nav { - position: absolute; - top: 4em; - - text-align: left; - padding: 0em 1em; - margin: 0px auto; + padding: 0; + text-align: center; } - #nav li { display: inline; } -#nav li a { - background: #bdcde4; - color: #5c5f80; - padding: 1px 10px; -} -#nav li a:hover { - color: yellow; -} -#nav li ul { - background:#bdcde4; - display: none; -} -#nav > li ul li { - display: list-item; - padding: 0px; -} -#nav > li:hover { - position: relative; -} -#nav > li:hover ul { - color: white; - text-align: left; - display: block; - position: absolute; - top: 1.2em; - left: 0px; - margin: 0px 0px; - padding: 5px 5px; - min-width: 10em; - list-style-type: square; -} -#nav > li ul li { - display: list-item; - margin-left: 1em; -} -#nav ul.this { - color: #555; -} - - - /* - * Main body - */ - -#body { - margin: 10px; +#nav li + li:before { + content: " | "; } address { - background:#5c5f80; - color: #bdcde4; - border: 1px solid black; - margin: 0; clear: both; - padding: 0.5em; - font-size: 80%; -} -address a { - color: #ffe; -} - -/* - * IkiWiki crap - */ - -.actions { - font-size: 80%; - margin: 0; - padding: 1px 5px; - text-align: right; -} - -.actions:hover ul { - visibility: visible; -} - -.actions ul { - margin: 0; - visibility: hidden; -} - -.actions li { - display: inline; - padding: 2px; - margin: 0; -} - -.inlinepage { - border: solid black 1px; - margin: 1em 2em; - background: #eee; - padding: 0em 1em; -} - -.inlinepage .header a { - font-size: 150%; -} - -/* Orange feed button. */ -.feedbutton { - background: #f60; - color: white; - border: outset black 1px; - padding: 0px 0.5em 0px 0.5em; - font: bold 8pt sans-serif; -} - -.feedbutton:hover { - background: #f90; -} - -.pagedate { - color: #666; - font-size: 75%; -} - -table.img { - float: right; - background-color: #eef; - border: solid #ccd; - border-width: 1px 1px 0px 1px; -} - -table.img caption { - font-size: 80%; - caption-side: bottom; - text-align: center; - background-color: #eef; - border: solid #ccd; - border-width: 0px 1px 1px 1px; + font-size: small; } diff --git a/dirlist b/dirlist new file mode 100755 index 0000000..4b0163a --- /dev/null +++ b/dirlist @@ -0,0 +1,13 @@ +#! /bin/sh + +cat $1; shift + +echo '
' +for i in "$@"; do + size=$(du --si $i | cut -f1) + desc=$(sed -n '1,3 s/.*\(Description: \|Title: \|-- \)//p' $i) + fn=$(basename $i) + echo "
$fn ($size)
" + echo "
$desc
" +done +echo '
' diff --git a/logo.png b/face.png similarity index 100% rename from logo.png rename to face.png diff --git a/index.mdwn b/index.mdwn index 4219f71..4192326 100644 --- a/index.mdwn +++ b/index.mdwn @@ -1,12 +1,8 @@ -[[!meta title="Neale Pickett Page"]] +Title: Neale Pickett Page + One day a pirate walks into a bar with a steering wheel attached to his crotch. So the bartender says to him, "You know you have a steering wheel attached to your crotch?" And the pirate says, "Aaar, it's driving me nuts!" - ----- - -* [Neale's wish list](/wishlists/neale/) -* [Pickett Genealogy](geneweb.cgi?b=pickett) diff --git a/mdwntohtml b/mdwntohtml new file mode 100755 index 0000000..71069bb --- /dev/null +++ b/mdwntohtml @@ -0,0 +1,16 @@ +#! /bin/sh + +while IFS=: read field value; do + case "$field" in + "") + break + ;; + Title) + # echo strips leading and trailing whitespace + title=$(echo $value) + break + ;; + esac +done + +cat | markdown | m4 -DTITLE="$title" $1 - diff --git a/ourbikes.mdwn b/ourbikes.mdwn deleted file mode 100644 index 6c092e1..0000000 --- a/ourbikes.mdwn +++ /dev/null @@ -1,34 +0,0 @@ -![Bike Measurements](bike-measure.png) - -Amy's Stellar -------------- - -a. 67.5cm -b. 95cm -c. 170mm -d. 57.5cm -e. N/A -f. 93cm - - -Neale's Touring ---------------- - -a. 82cm -b. 108cm -c. 170mm -d. 64cm -e. 42cm -f. 107cm - - -Bike Friday ------------ - -a. 82cm -b. 95cm -c. 175mm -d. 75cm -e. 42cm -f. 105cm -effective top-tube length: 57cm diff --git a/ourbikes/bike-measure.png b/ourbikes/bike-measure.png deleted file mode 100644 index a8bc7adad74d3ea27e121c9aa0801b07e57996ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47320 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 diff --git a/papers.mdwn b/papers.mdwn deleted file mode 100644 index 529cf90..0000000 --- a/papers.mdwn +++ /dev/null @@ -1,7 +0,0 @@ -[[!meta title="Papers"]] - -These are papers I have written. Most of them were written to explain a -concept to someone on woozle. Hopefully other people will find them -useful, too. - -[[!map pages="papers/*" show="title"]] diff --git a/papers/Jamfile b/papers/Jamfile new file mode 100644 index 0000000..d97aa7f --- /dev/null +++ b/papers/Jamfile @@ -0,0 +1,3 @@ +SubDir TOP papers ; + +Webify index.mdwn reply-to-still-harmful.mdwn sockets.mdwn DNS.mdwn html-tutorial.mdwn digimatrix.mdwn ; diff --git a/papers/digimatrix.mdwn b/papers/digimatrix.mdwn index 5c934ad..bd271ac 100644 --- a/papers/digimatrix.mdwn +++ b/papers/digimatrix.mdwn @@ -1,10 +1,8 @@ -[[!meta title="Debian on Digimatrix"]] +Title: Debian on Digimatrix -

- Caution: this is what I was running in 2004. Nowadays we just use - MythTV. Some of this stuff (like the X configuration) still applies, - though, which is why I'm leaving the page up. -

+Caution: this is what I was running in 2004. Nowadays we just use +MythTV. Some of this stuff (like the X configuration) still applies, +though, which is why I'm leaving the page up. Introduction ------------ @@ -77,7 +75,7 @@ I installed the following additional packages to help me administer the machine:
-# aptitude install less zile screen ssh strace sudo ntp ntpdate
+# apt-get install less zile screen ssh strace sudo ntp ntpdate
 
@@ -87,8 +85,8 @@ Web server Waldorf needed to run a web server to host photo albums.
-# aptitude install mathopd stunnel4 php4-cgi rssh
-# aptitude install netpbm jhead exiftran libjpeg-mmx-progs libjpeg-progs
+# apt-get install mathopd stunnel4 php4-cgi rssh
+# apt-get install netpbm jhead exiftran libjpeg-mmx-progs libjpeg-progs
 
I won't detail my web server configuration here, since that's unique to me. @@ -97,7 +95,7 @@ X ----
-# aptitude install x-window-system
+# apt-get install x-window-system
 
To my surprise this brought in x.org. I run an HDTV over DVI, so to get @@ -138,7 +136,7 @@ to want to do that very often. I may work on a web interface to XML-TV listings later on.
-# aptitude install kde kdm
+# apt-get install kde kdm
 
I don't know if this is typical or not, but Debian's KDE went on without @@ -148,7 +146,7 @@ asking me a single question. Kudos to the packagers. h2. Sound
-# aptitude install alsa-base alsa-utils
+# apt-get install alsa-base alsa-utils
 
We use the Digimatrix's S/PDIF output (isn't it lame that it comes out @@ -206,7 +204,7 @@ allows you to type in numbers for various actions (play from playlist, play DVD, etc.).
-# aptitude install kaffeine
+# apt-get install kaffeine
 
@@ -237,7 +235,7 @@ In any case, turning on DMA will allows your DVD drive to keep up with the data on the DVD.
-# aptitude install hdparm
+# apt-get install hdparm
 
To turn on DMA, I put the following at the end of `/etc/hdparm.conf`. @@ -288,9 +286,7 @@ interface to various IR recievers and remote controls, and supplies events to whatever wants to listen to it. KDE has a module to listen to it, so I figured I'd give it a go. -
-# aptitude install kdelirc
-
+ # apt-get install kdelirc Unfortunately, lirc 0.7 (the version in debian testing and unstable) does not compile on Linux 2.6.12 and newer, so I had to install from diff --git a/papers/html-tutorial.html b/papers/html-tutorial.html deleted file mode 100644 index 0e84f3d..0000000 --- a/papers/html-tutorial.html +++ /dev/null @@ -1,110 +0,0 @@ -[[!meta title="The 3-minute HTML tutorial"]] - -

As computer formats go, HTML is really easy and logical. It's all just -text that you can edit with any basic text editor, like gedit nder -Gnome, or notepad in Windows. Let's start out with an example. Say you -have a sentence, and you want one word in it to be bold. That sentence -would look like this:

- -
Guess which word is <b>bold</b>?
- -

As should be obvious, the bold word in that sentence is "word". Just -kidding, it's the word "bold", in between <b> and </b> tags. -The sentence will show up like so:

- -
Guess which word is bold?
- -

You now know HTML, the rest is just learning the names of the tags.

- -
- -

Seriously! Here's a slightly larger example:

- -
<title>My first web page</title>
-<h1>Welcome</h1>
-<p>
-  Welcome to my <b>first ever</b> web page!
-  It features:
-</p>
-<ul>
-  <li>A title!</li>
-  <li>A header!</li>
-  <li>A paragraph!</li>
-  <li>An unordered list!</li>
-</ul>
-
- -

So what you end up with in the end is something like this:

- -
-
-
- My first web page - WoozWeb Browser -
-

Welcome

-

- Welcome to my first ever web page! - It features: -

-
    -
  • A title!
  • -
  • A header!
  • -
  • A paragraph!
  • -
  • An unordered list!
  • -
-
-
- -

The part inside the <title> and the </title> is the title of your -page; that's what goes in the window frame at the very top of your web -browser window, above the menus and everything else.

- -

The stuff in between <h1> and </h1> is a "level-1 header". That -means that it's the biggest header you can get. There are also h2, h3, -h4, h5, and h6 headers, with h6 being the smallest.

- -

The stuff inside <p> and </p> is a paragraph. Since HTML treats -spaces the same as line breaks, you need to use paragraph tags around -each paragraph. Inside the example paragraph is our old friend bold.

- -

Then, there's <ul> and </ul>, an "unordered list" (as opposed to an -ordered list, which would have a number by each item). Inside the list -are four "list items", enclosed in <li> and </li>.

- -
- -

Now check this action out:

- -
<p>
-This is an
-<img src="http://www.woozle.org/images/star.png"
-  alt="star"></img> image, and
-<a href="http://woozle.org/">this</a> is a link.
-</p>
-
- -

Which will show up like this:

- -
-

This is an star image, and this is a link. -

- -

The example above has an image tag, with two "attributes", "src" and -"alt". The "src" attribute in an <img> tag gives the -URL to a picture, and the "alt" attribute is the text that's displayed -to people who can't see images (blind users, folks without graphics -capabilities, or if there's a problem on your web server). The "alt" -attribue is required, but you can set it to "" if there's -nothing appropriate for alternate text.

- -

Lastly, the infamous link, enclosed inside of <a> -and </a>. The "href" attribute gives the URL that -the browser will go to if you click the link.

- -
- -

That's it for basic HTML, and it should be enough to get you started -writing your own pages. So go write something! The best way to learn -it is to try stuff out and see what it does. For more neat HTML tags, -check out HTML 3.2 by -Examples, which is what I used to learn HTML.

diff --git a/papers/html-tutorial.mdwn b/papers/html-tutorial.mdwn new file mode 100644 index 0000000..d39a494 --- /dev/null +++ b/papers/html-tutorial.mdwn @@ -0,0 +1,107 @@ +Title: The 3-minute HTML tutorial + +As computer formats go, HTML are really easy and logical. It's all just +text that you can edit with any basic text editor, like gedit nder +Gnome, or notepad in Windows. Let's start out with an example. Say you +have a sentence, and you want one word in it to be bold. That sentence +would look like this: + + Guess which word is bold? + +As should be obvious, the bold word in that sentence is "bold", in +between `` and `` tags. The sentence will show up like so: + +> Guess which word is bold? + +You now know HTML, the rest is just learning the names of the tags. + +--- + +Here's a slightly larger example: + + My first web page +

Welcome

+

+ Welcome to my first ever web page! + It features: +

+
    +
  • A title!
  • +
  • A header!
  • +
  • A paragraph!
  • +
  • An unordered list!
  • +
+ +What you end up with in the end is something like this: + +>
+>
+> My first web page - WoozWeb Browser +>
+>

Welcome

+>

+> Welcome to my first ever web page! +> It features: +>

+>
    +>
  • A title!
  • +>
  • A header!
  • +>
  • A paragraph!
  • +>
  • An unordered list!
  • +>
+>
+ +The part inside the `` and the `` is the title of your +page: that's what goes in the window frame at the very top of your web +browser window, above the menus and everything else. + +The stuff in between `

` and `

` is a "level-1 header". That +means that it's the biggest header you can get. There are also h2, h3, +h4, h5, and h6 headers, with h6 being the smallest. + +The stuff inside `

` and `

` is a paragraph. Since HTML treats +spaces the same as line breaks, you need to use paragraph tags around +each paragraph. Inside the example paragraph is our old friend bold. + +Then, there's `
    ` and `
`, an +"unordered list" (as opposed to an ordered list, which would have a +number by each item). Inside the list are four "list items", enclosed +in `
  • ` and `
  • `. + +---- + +Now, for inline images: + +

    + This is an + woozle head image, and + this is a link. +

    + +Which will show up like this: + +>

    This is an alt="woozle head" /> image, and +> this is a link. + +The example above has an image tag, with two "attributes", "src" and +"alt". The "src" attribute in an `` tag gives the URL to a +picture, and the "alt" attribute is the text that's displayed to people +who can't see images (blind users, folks without graphics capabilities, +or if there's a problem on your web server). The "alt" attribue is +required, but you can set it to `""` if there's nothing appropriate for +alternate text. + +Lastly, the link, enclosed inside of `` and ``. The "href" +attribute gives the URL that the browser will go to if you click the +link. + +--- + +That's it for basic HTML, and it should be enough to get you started +writing your own pages. So go write something! The best way to learn +it is to try stuff out and see what it does. For more neat HTML tags, +check out [HTML 3.2 by +Examples](http://www.cs.tut.fi/~jkorpela/HTML3.2/), which is what I used +to learn HTML. diff --git a/papers/index.mdwn b/papers/index.mdwn new file mode 100644 index 0000000..3c5814a --- /dev/null +++ b/papers/index.mdwn @@ -0,0 +1,17 @@ +Title: Papers + +These are papers I have written. Most of them were written to explain a +concept to someone on woozle. Hopefully other people will find them +useful, too. + +* [Reply-To Munging Still Considered Harmful](reply-to-still-harmful.html) +* [Introduction to TCP Sockets](sockets.html) +* [3-Minute HTML Tutorial](html-tutorial.html) +* [How DNS Works](DNS.html) + +--- + +The rest of these are old, and probably irrelevant, but I'm keeping them +here on the off chance that someone still needs the information. + +* [Debian on the Digimatrix (2004)](digimatrix.html) diff --git a/papers/reply-to-still-harmful.mdwn b/papers/reply-to-still-harmful.mdwn index 87d153e..cdde4e9 100644 --- a/papers/reply-to-still-harmful.mdwn +++ b/papers/reply-to-still-harmful.mdwn @@ -1,4 +1,4 @@ -[[!meta title="“Reply-To” Munging Still Considered Harmful. Really."]] +Title: “Reply-To” Munging Still Considered Harmful. Really. An Earnest Plea to People Still Having This Debate -------------------------------------------------- diff --git a/papers/sockets.mdwn b/papers/sockets.mdwn index 13b365a..d82e399 100644 --- a/papers/sockets.mdwn +++ b/papers/sockets.mdwn @@ -1,4 +1,4 @@ -[[!meta title="Introduction To TCP Sockets"]] +Title: Introduction To TCP Sockets Client Sockets -------------- diff --git a/poems.mdwn b/poems.mdwn deleted file mode 100644 index 9fdf894..0000000 --- a/poems.mdwn +++ /dev/null @@ -1,7 +0,0 @@ -[[!meta title="Poems"]] - -If wishes were horses -And poets were kings -I guess I'd still have my day job. - -[[!map pages="poems/*" show="title"]] diff --git a/poems/Jamfile b/poems/Jamfile new file mode 100644 index 0000000..c9313d1 --- /dev/null +++ b/poems/Jamfile @@ -0,0 +1,4 @@ +SubDir TOP poems ; + +Webify index.mdwn ducks.mdwn goldfish.mdwn lake.mdwn mice.mdwn + optimized.mdwn poopy.mdwn sap.mdwn snark.mdwn ; diff --git a/poems/bagel-girl.mdwn b/poems/bagel-girl.mdwn index 74d01b5..9a537bb 100644 --- a/poems/bagel-girl.mdwn +++ b/poems/bagel-girl.mdwn @@ -1,4 +1,4 @@ -[[!meta title="Ode to the Bagel Girl"]] +Title: Ode to the Bagel Girl We stand waiting for the 253 to Redmond The fog sits lightly on our tongues @@ -22,4 +22,3 @@ I wrote this on the bus home. There was a young girl with a beautiful face sitting at the front of the bus, and I kept looking at her before I started to write. I was laughing so hard as I wrote this, that she started to get pretty self-conscious. - diff --git a/poems/ducks.mdwn b/poems/ducks.mdwn index 5243899..5132fdb 100644 --- a/poems/ducks.mdwn +++ b/poems/ducks.mdwn @@ -1,4 +1,4 @@ -[[!meta title="Ducks"]] +Title: Ducks If ducks ran the country, I'm sure you'll agree Things sure would be different for you and for me! diff --git a/poems/goldfish.mdwn b/poems/goldfish.mdwn index 8d749df..6d415a9 100644 --- a/poems/goldfish.mdwn +++ b/poems/goldfish.mdwn @@ -1,8 +1,8 @@ -[[!meta title="My Goldfish Wish"]] +Title: My Goldfish Wish -I wish a goldfish were my pet! -I'd make sure he was warm and wet. -I'd keep him in the kitchen sink, +I wish a goldfish were my pet! +I'd make sure he was warm and wet. +I'd keep him in the kitchen sink, And wash him when he starts to stink. diff --git a/poems/index.mdwn b/poems/index.mdwn new file mode 100644 index 0000000..4214d52 --- /dev/null +++ b/poems/index.mdwn @@ -0,0 +1,14 @@ +Title: Poems + +If wishes were horses +And poets were kings +I guess I'd still have my day job. + +* [Ducks](ducks.html) +* [My Goldfish Wish](goldfish.html) +* [Poem For A Moonlit Lake With City Lights Reflecting](lake.html) +* [Ode to Mice](mice.html) +* [Optimized](optimized.html) +* [The Poopy Song](poopy.html) +* [Sap](sap.html) +* [Snark Hair](snark.html) diff --git a/poems/lake.mdwn b/poems/lake.mdwn index 5ba90da..ae66586 100644 --- a/poems/lake.mdwn +++ b/poems/lake.mdwn @@ -1,4 +1,4 @@ -[[!meta title="Poem For A Moonlit Lake With City Lights Reflecting"]] +Title: Poem For A Moonlit Lake With City Lights Reflecting It, is getting, diff --git a/poems/mice.mdwn b/poems/mice.mdwn index 4163c72..8f55edd 100644 --- a/poems/mice.mdwn +++ b/poems/mice.mdwn @@ -1,4 +1,4 @@ -[[!meta title="Ode to Mice"]] +Title: Ode to Mice Leave them mice alone Let them wander through your home diff --git a/poems/optimized.mdwn b/poems/optimized.mdwn index 84c58d5..9f523ef 100644 --- a/poems/optimized.mdwn +++ b/poems/optimized.mdwn @@ -1,9 +1,9 @@ -[[!meta title="Optimized"]] +Title: Optimized This poem made for Wooz-Web 8 So please download today. -On my computer, it looks great! -On yours, it might turn gray. +On my computer, it sounds great! +On yours, it might not play. It uses ActivePoetry (By WoozleSoft, v4.3) diff --git a/poems/poopy-music.png b/poems/poopy-music.png new file mode 100644 index 0000000000000000000000000000000000000000..71619eb321995f612ec22b675d5876af61b55456 GIT binary patch literal 744 zcmVP)c#16b9f&QwasMsRR@#64Zdy z4w*U#9SRRYBm_aH93Z2I9>7C~4u;F#pkq%_^awgYhaN$LyK~eaSoujx3MDJ3V3!DB z$KjV>k9?v`bWV1NiVhl!*4Onx{_4@!`2l|2ym}n}KurK&G0(ZwPpzl8uFHQ|Z{Kep zJxdSpza3Bh1fR_)WPP7a^{1{klk1}f>it0pEwKu{eCcGm*Cg;;m;am?nx~}Ilb#Lz ziFEu6;}!B(d%hI9mjXHPp6dhcS-}#zANp@)pna4NeeU>Y+8?`qBIhODA%D#a z+p0r&@`HTCRU|jqs@6yNoc!$U`12gnTddX+|a=3xfPNc0WV?jt`CBan*QP@gkx%Q&gG$6YAP}T>tBzl%Q9(cDYK&V?nHcMZfeC zer8JsFY;?q%(XAGlLfuJWC`}lTz|@}Px?M2i6x_3rkh=_rYHy=<@|^Kxp>b@?6t|q zHt7wTEls}k^!~l=<&#+r{o3aHA1Dc$Q|yWry1{3e<1dFkKpPp4I}iR8-Z=&J4a#%J zzw7*6?{1FGh96(Q&KMjp+;l>dztA&G{ylRi#_gMMa6k@x()rb>=im1{`j-{Plk1n` z{?Fimw;q*Qk9kpTo@|qRGgw_$)>G#*Ha3%wKQgtM [[smileys/smile.png]] -* \\:D [[smileys/smile-big.png]] -* \\:-D [[smileys/smile-big.png]] -* \\;) [[smileys/wink.png]] -* \\;-) [[smileys/wink.png]] -* \\:\ [[smileys/thinking.png]] -* \\:-\ [[smileys/thinking.png]] -* \\:/ [[smileys/thinking.png]] -* \\:-/ [[smileys/thinking.png]] -* \\:| [[smileys/neutral.png]] -* \\:-| [[smileys/neutral.png]] -* \\:( [[smileys/sad.png]] -* \\:-( [[smileys/sad.png]] -* \\:< [[smileys/sad.png]] -* \\:-? [[smileys/tongue.png]] -* \\:-P [[smileys/tongue.png]] -* \\:o [[smileys/shock.png]] - ----- - -To change the supported smileys, just edit the lists on this page. -Note that the format is important; each list item should start with the -text that is turned into the smiley, escaped so that users can see what -produces it, followed by a [[ikiwiki/WikiLink]] to the image to display. - -/!\ Bear in mind that the link to the image needs to be written in a way that -will work if it's copied to other pages on the wiki. So be sure to include the -smileys directory in the path to the file. diff --git a/src.mdwn b/src.mdwn deleted file mode 100644 index 3331377..0000000 --- a/src.mdwn +++ /dev/null @@ -1,10 +0,0 @@ -[[!meta title="Software"]] - -I write software for a living. I like doing it so much that sometimes I -even write software just for fun. - -You might want to browse through my [version control](/~neale/gitweb.cgi), or read about some of the larger projects below: - -[[!map pages="src/*" show="title"]] - - diff --git a/src/Jamfile b/src/Jamfile new file mode 100644 index 0000000..0437a45 --- /dev/null +++ b/src/Jamfile @@ -0,0 +1,11 @@ +SubDir TOP src ; + +Webify index.mdwn xss.mdwn escm.mdwn firebot.mdwn pysieved.mdwn ; + +SubInclude TOP src eguile ; +SubInclude TOP src ipqueue ; +SubInclude TOP src postscript ; +SubInclude TOP src python ; +SubInclude TOP src dwm ; +SubInclude TOP src misc ; + diff --git a/src/dwm/Jamfile b/src/dwm/Jamfile new file mode 100644 index 0000000..d1abdda --- /dev/null +++ b/src/dwm/Jamfile @@ -0,0 +1,6 @@ +SubDir TOP src dwm ; + +Webify index.mdwn ; +Copy config.h : $(HOME)/src/ports/dwm/config.h ; +Copy status.sh : $(HOME)/bin/status ; +Copy dwm-button.sh : $(HOME)/bin/dwm-button ; diff --git a/src/dwm/index.mdwn b/src/dwm/index.mdwn new file mode 100644 index 0000000..080cb78 --- /dev/null +++ b/src/dwm/index.mdwn @@ -0,0 +1,25 @@ +Title: dwm hacks + +I seem to have trouble keeping my attention on the task at hand if there +are little things flashing in the corner of the screen, or even changing +color (like, "you have new email"). The less I have on the screen, the +more productive I seem to be. It is for this reason that I've been +using "tiling" window managers since about 2003. + +I've been using [dwm](http://dwm.suckless.org/) since a friend +introduced me to it around 2008. What I like most about dwm, aside from +helping me stay focused on the task at hand, is that it gets out of my +way. There are no buttons to click, and no windows to drag around or +resize. In fact, I hardly ever use the mouse anymore, outside of my web +browser. + +* [My config.h](config.h) contains a few features I've added, like + restarting dwm, multimedia buttons, and + [xss](http://woozle.org/~neale/src/xss.html) integration (3 lines of + code). +* [My status script](status.sh) is responsible for having DWM show the + current time, load average, battery charge, and wifi status. It + gracefully handles machines that lack one or more of these features. +* [My button script](dwm-button.sh) is invoked when a multimedia button + is pressed, and handles screen brightness, volume, external monitors, + and more. diff --git a/src/eguile/Jamfile b/src/eguile/Jamfile new file mode 100644 index 0000000..18057d8 --- /dev/null +++ b/src/eguile/Jamfile @@ -0,0 +1,3 @@ +SubDir TOP src eguile ; + +Webify index.mdwn ; diff --git a/src/eguile.mdwn b/src/eguile/index.mdwn similarity index 74% rename from src/eguile.mdwn rename to src/eguile/index.mdwn index 27f452f..6a66474 100644 --- a/src/eguile.mdwn +++ b/src/eguile/index.mdwn @@ -1,4 +1,5 @@ -[[!meta title="Eguile : a scheme preprocessor"]] +Title: Eguile : a scheme preprocessor +Author: Neale Pickett If you've ever wished your text preprocessor could do symbolic derivation, eguile is the tool for you! @@ -14,12 +15,14 @@ sort of person that would enjoy something like this, you probably don't need any further description. -## Downloading it +Downloading it +-------------------------- -[eguile.scm](eguile.scm). +[eguile.scm](http://woozle.org/~neale/src/eguile/eguile.scm). -## Reference +Reference +-------------------------- Easy squeezy: @@ -40,7 +43,9 @@ renders as: 2 squared is 4 -## Inspiration + +Inspiration +-------------------------- I modeled eguile after ht2html by Barry Warsaw (a far cooler cat than I). ht2html is a slick package, but it didn't feel enough like @@ -49,17 +54,9 @@ seemed like a better solution, but felt a little too kludgy, and I needed to learn Scheme better anyway. So I stole the layout from ht2html and the syntax from escm. -## License + +License +-------------------------- eguile is distributed under the GNU Public License version 2.0 or later. Please refer to the file COPYING for more information. - - -## Help me help you! - -I don't honestly expect anyone to use eguile, so I'm not going to put -much into it beyond this page and what improvements I personally -need. If you do end up using it, please let me know! I'd be more than -happy to help you through any rough spots, and to consider any -suggestions. If nothing else, I can link to your pages as another -example of eguile in use :) diff --git a/src/escm.mdwn b/src/escm.mdwn index a93183e..3861b90 100644 --- a/src/escm.mdwn +++ b/src/escm.mdwn @@ -1,4 +1,4 @@ -[[!meta title="escm: a scheme preprocessor"]] +Title: escm: a scheme preprocessor This is my port of [eguile](http://woozle.org/~neale/src/eguile) to gauche scheme. It uses regular expressions and as a result is faster diff --git a/src/firebot.mdwn b/src/firebot.mdwn index 871bc38..10c9ebb 100644 --- a/src/firebot.mdwn +++ b/src/firebot.mdwn @@ -1,4 +1,4 @@ -[[!meta title="Firebot: IRC Automaton"]] +Title: Firebot: IRC Automaton FireBot is a winner! diff --git a/src/index.mdwn b/src/index.mdwn new file mode 100644 index 0000000..21e159a --- /dev/null +++ b/src/index.mdwn @@ -0,0 +1,30 @@ +Title: Software + +I write software for a living. I like doing it so much that sometimes I +even write software just for fun. + +My [version control](/~neale/gitweb.cgi), holds the source code to most +of these packages. + +Networky things +------------------------------- +* [pysieved](pysieved/), a Python ManageSieve server +* [Firebot](firebot.html), an easily-extended IRC bot in continuous use since 1996 +* [Python IPQUEUE library](py-ipqueue/) + +X11 things +------------------------------- +* [xss](xss.html), a simple (suckless) screen saver for X11 +* [dwm hacks](dwm/) contains my tweaks to [dwm](http://dwm.suckless.org/) + +Various and sundry things +------------------------------- +* [eguile](eguile/), like PHP for Guile Scheme +* [escm](escm.html), like PHP for Gauche Scheme and others +* [Python hacks](python/) of diminutive size and quality +* [Postscript hacks](postscript/) of diminutive size and quality +* [Other hacks](misc/) of diminutive size and quality + + + + diff --git a/src/ipqueue/Jamfile b/src/ipqueue/Jamfile new file mode 100644 index 0000000..28546be --- /dev/null +++ b/src/ipqueue/Jamfile @@ -0,0 +1,3 @@ +SubDir TOP src ipqueue ; + +Webify index.mdwn ; diff --git a/src/ipqueue.mdwn b/src/ipqueue/index.mdwn similarity index 63% rename from src/ipqueue.mdwn rename to src/ipqueue/index.mdwn index 5dd7d26..06d6dad 100644 --- a/src/ipqueue.mdwn +++ b/src/ipqueue/index.mdwn @@ -1,4 +1,4 @@ -[[!meta title="Python ipqueue"]] +Title: Python ipqueue This is the Netfilter userspace IPQueue module for Python. It allows you to do all your Linux IPQueue stuff from the comfort of Python. This only @@ -17,8 +17,7 @@ Download -------- * [Latest version](ipqueue.tar.gz) -* [Netfilter QUEUE bindings](nfqueue-0.1.tar.bz2) Mike Auty <mike.auty@gmail.com> - +* [Netfilter QUEUE bindings](nfqueue-0.1.tar.bz2) by Mike Auty License ------- @@ -38,29 +37,28 @@ Here's an example program which transparently proxies all traffic it gets to port 25 of 10.1.1.2. This is just an example, a real-world transparent proxy would be much more sophisticated. -

    -#! /usr/bin/env python
    +    #! /usr/bin/env python
     
    -import ipqueue
    -import iputils
    +    import ipqueue
    +    import iputils
     
    -rewrite = 1
    +    rewrite = 1
     
    -q = ipqueue.IPQ(ipqueue.IPQ_COPY_PACKET)
    -while 1:
    -    p = q.read()
    -    tcp = iputils.TCP(p[ipqueue.PAYLOAD])
    -    print "Got %s -> %s on hook %d" % (iputils.ntoa(tcp.saddr),
    -                                       iputils.ntoa(tcp.daddr),
    -                                       p[ipqueue.HOOK])
    +    q = ipqueue.IPQ(ipqueue.IPQ_COPY_PACKET)
    +    while 1:
    +        p = q.read()
    +        tcp = iputils.TCP(p[ipqueue.PAYLOAD])
    +        print "Got %s -> %s on hook %d" % (iputils.ntoa(tcp.saddr),
    +                                           iputils.ntoa(tcp.daddr),
    +                                           p[ipqueue.HOOK])
    +
    +        if rewrite and p[ipqueue.HOOK] == 0:
    +            tcp.daddr = iputils.aton("10.1.1.2")
    +            tcp.th_dport = 25
    +            q.set_verdict(p[0], ipqueue.NF_ACCEPT, tcp.to_str())
    +        else:
    +            q.set_verdict(p[0], ipqueue.NF_ACCEPT)
     
    -    if rewrite and p[ipqueue.HOOK] == 0:
    -        tcp.daddr = iputils.aton("10.1.1.2")
    -        tcp.th_dport = 25
    -        q.set_verdict(p[0], ipqueue.NF_ACCEPT, tcp.to_str())
    -    else:
    -        q.set_verdict(p[0], ipqueue.NF_ACCEPT)
    -
    Help me out ----------- diff --git a/src/misc/9p.scm b/src/misc/9p.scm index fbdd175..534dd3c 100755 --- a/src/misc/9p.scm +++ b/src/misc/9p.scm @@ -1,12 +1,11 @@ #! /usr/bin/gosh -;; -;; Neale Pickett wrote this. -;; +;; Description: 9p implementation in Scheme +;; Author: Neale Pickett ;; This uses gauche's networking stuff, but no other gauche stuff. It -;; should be simple to substitute your implementation's networking -;; procedures. +;; should be possible to substitute your implementation's networking +;; procedures without too much effort. (use gauche.net) (require-extension (srfi 1 4 8 9)) diff --git a/src/misc/Jamfile b/src/misc/Jamfile new file mode 100644 index 0000000..a40e5d3 --- /dev/null +++ b/src/misc/Jamfile @@ -0,0 +1,4 @@ +SubDir TOP src misc ; + +Webify index.mdwn ; +AutoIndex index.mdwn : index.head.mdwn : 9p.scm ; diff --git a/src/misc/Makefile b/src/misc/Makefile deleted file mode 100644 index 5f98566..0000000 --- a/src/misc/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -all: dwm-config.h spamfairy.py mail-expire.sh gourmet.sh deliver.sh - -COPY = cp $< $@ - -dwm-config.h: $(HOME)/opt/src/dwm/config.h - $(COPY) - -spamfairy.py: /usr/local/bin/spamfairy - $(COPY) - -mail-expire.sh: /usr/local/bin/mail-expire - $(COPY) - -gourmet.sh: /usr/local/bin/gourmet - $(COPY) - -deliver.sh: /usr/local/bin/deliver - $(COPY) \ No newline at end of file diff --git a/src/misc/index.head.mdwn b/src/misc/index.head.mdwn new file mode 100644 index 0000000..d391d97 --- /dev/null +++ b/src/misc/index.head.mdwn @@ -0,0 +1,2 @@ +Title: Miscellaneous hacks + diff --git a/src/postscript/Jamfile b/src/postscript/Jamfile new file mode 100644 index 0000000..2ab57ad --- /dev/null +++ b/src/postscript/Jamfile @@ -0,0 +1,4 @@ +SubDir TOP src postscript ; + +Webify index.mdwn ; +AutoIndex index.mdwn : index.head.mdwn : alice.ps banner.ps emergency-card.ps graph-paper.ps logo.ps page_dimensions.ps ruled-paper.ps skel.ps ; \ No newline at end of file diff --git a/src/postscript/Makefile b/src/postscript/Makefile deleted file mode 100644 index e5078f4..0000000 --- a/src/postscript/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -FILES = alice.ps banner.ps emergency-card.ps graph-paper.ps logo.ps -FILES += page_dimensions.ps resume.ps ruled-paper.ps skel.ps - -TARGETS += index.html - -include ../../Makefile - -.INTERMEDIATE: index.txt -index.txt: index.dirlist $(FILES) - $(DIRLIST) $(FILES) > $@ - -%.png: %.ps - pstopnm -portrait -xmax 600 -stdout $< | pnmscale -x 300 | pnmtopng > $@ diff --git a/src/postscript/index.head.mdwn b/src/postscript/index.head.mdwn new file mode 100644 index 0000000..0aa85f1 --- /dev/null +++ b/src/postscript/index.head.mdwn @@ -0,0 +1,5 @@ +Title: PostScript Hacks + +One morning I woke up wondering, "how difficult could PostScript really be?" + +Answer: Not very. diff --git a/src/postscript/index.html b/src/postscript/index.html deleted file mode 100644 index e7c4b89..0000000 --- a/src/postscript/index.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - PostScript Hacks - - - - -

    - - Neale Pickett -

    - -
    -

    PostScript Hacks -

    - -

    Here are some little programs that are either too small or too -self-explanatory to deserve their own web pages.

    - -
    -
    alice.ps (19k)
    -
    Alice in DIGITALand -- an example application of skel.ps
    -
    banner.ps (2.1k)
    -
    Boilerplate for multi-page banners
    -
    emergency-card.ps (11k)
    -
    Emergency card
    -
    graph-paper.ps (1.1k)
    -
    A sheet of graph paper
    -
    logo.ps (1.1k)
    -
    Some functions to make PostScript feel like LOGO
    -
    page_dimensions.ps (2.1k)
    -
    Displays dimensions of the page, and where your printer clips.
    -
    resume.ps (13k)
    -
    Résumé
    -
    ruled-paper.ps (2.1k)
    -
    A sheet of ruled paper
    -
    skel.ps (5.2k)
    -
    Skeleton for typesetting in PostScript.
    -
    - -
    - - - - \ No newline at end of file diff --git a/src/python.mdwn b/src/python.mdwn deleted file mode 100644 index 7009921..0000000 --- a/src/python.mdwn +++ /dev/null @@ -1,3 +0,0 @@ -[[!meta title="Python hacks"]] - -[[!map pages="src/python/*" show="description"]] diff --git a/src/python/Jamfile b/src/python/Jamfile new file mode 100644 index 0000000..c3a45d2 --- /dev/null +++ b/src/python/Jamfile @@ -0,0 +1,6 @@ +SubDir TOP src python ; + +Webify index.mdwn ; +AutoIndex index.mdwn : index.head.mdwn : htmlpp.py ndstrunc.py snpplib.py spampot.py watch.py spamfairy.py mail-expire.py ; +Copy spamfairy.py : /usr/local/bin/spamfairy ; +Copy mail-expire.py : /usr/local/bin/mail-expire ; diff --git a/src/python/index.head.mdwn b/src/python/index.head.mdwn new file mode 100644 index 0000000..c54e246 --- /dev/null +++ b/src/python/index.head.mdwn @@ -0,0 +1,3 @@ +Title: Python hacks + +Here's some junk I did in Python. diff --git a/src/python/ndstrunc.py b/src/python/ndstrunc.py index 3d9c350..30fff6b 100755 --- a/src/python/ndstrunc.py +++ b/src/python/ndstrunc.py @@ -1,6 +1,6 @@ #! /usr/bin/python -"""ndstrunc -- Trims .nds ROM files.""" +### ndstrunc -- Trims .nds ROM files import struct diff --git a/src/xss.mdwn b/src/xss.mdwn index f57aa18..08af411 100644 --- a/src/xss.mdwn +++ b/src/xss.mdwn @@ -1,4 +1,5 @@ -[[!meta title="xss: X Screensaver Construction Kit"]] +Title: xss: X Screensaver Construction Kit +Author: Neale Pickett [xss](http://woozle.org/~neale/src/xss) is a suite of X screensaver utilities. You can use shell scripts to glue the tools together to @@ -104,8 +105,3 @@ else like the rest of the programs, which is why I wrote them. I lifted some code from `beforelight` from the X11 distribution, and from `slock` from [suckless.org](http://suckless.org/). Both have a BSD/X11-like license. - - ------- - -Neale Pickett diff --git a/template.xml b/template.xml new file mode 100644 index 0000000..c38c5ea --- /dev/null +++ b/template.xml @@ -0,0 +1,29 @@ + + + + + TITLE + + + + + + +

    TITLE

    +divert(1) + + +
    + Neale Pickett <neale@woozle.org> +
    + + +divert(0) diff --git a/toys.mdwn b/toys.mdwn deleted file mode 100644 index 7d56015..0000000 --- a/toys.mdwn +++ /dev/null @@ -1,14 +0,0 @@ -[[!meta title="Toys"]] - -Some various junk I've done. Maybe you'll find it amusing. Maybe -you'll just wonder why I spend so much time on this garbage. - -* This [A Mind Forever Voyaging Decoder](amfv-decoder.cgi) is the sort - of thing where you'll only know what it is if you have a need for it. -* Play [a fun game](fungame)! -* Or you could play [robotfindskitten](robotfindskitten.cgi), which is - also fun! -* If you need to write someone a letter but really don't want to, try my - [smalltalk generator](smalltalk.cgi). -* Maybe you'd rather see a [magic trick](omg-magic)? -* How about some [Internet Reiki](reiki)? diff --git a/toys/Jamfile b/toys/Jamfile new file mode 100644 index 0000000..3049b14 --- /dev/null +++ b/toys/Jamfile @@ -0,0 +1,3 @@ +SubDir TOP toys ; + +Webify index.mdwn reiki.mdwn omg-magic.mdwn fungame.mdwn ; \ No newline at end of file diff --git a/toys/omg-magic/1.png b/toys/cards/1.png similarity index 100% rename from toys/omg-magic/1.png rename to toys/cards/1.png diff --git a/toys/omg-magic/10.png b/toys/cards/10.png similarity index 100% rename from toys/omg-magic/10.png rename to toys/cards/10.png diff --git a/toys/omg-magic/11.png b/toys/cards/11.png similarity index 100% rename from toys/omg-magic/11.png rename to toys/cards/11.png diff --git a/toys/omg-magic/12.png b/toys/cards/12.png similarity index 100% rename from toys/omg-magic/12.png rename to toys/cards/12.png diff --git a/toys/omg-magic/13.png b/toys/cards/13.png similarity index 100% rename from toys/omg-magic/13.png rename to toys/cards/13.png diff --git a/toys/omg-magic/14.png b/toys/cards/14.png similarity index 100% rename from toys/omg-magic/14.png rename to toys/cards/14.png diff --git a/toys/omg-magic/15.png b/toys/cards/15.png similarity index 100% rename from toys/omg-magic/15.png rename to toys/cards/15.png diff --git a/toys/omg-magic/16.png b/toys/cards/16.png similarity index 100% rename from toys/omg-magic/16.png rename to toys/cards/16.png diff --git a/toys/omg-magic/17.png b/toys/cards/17.png similarity index 100% rename from toys/omg-magic/17.png rename to toys/cards/17.png diff --git a/toys/omg-magic/18.png b/toys/cards/18.png similarity index 100% rename from toys/omg-magic/18.png rename to toys/cards/18.png diff --git a/toys/omg-magic/19.png b/toys/cards/19.png similarity index 100% rename from toys/omg-magic/19.png rename to toys/cards/19.png diff --git a/toys/omg-magic/2.png b/toys/cards/2.png similarity index 100% rename from toys/omg-magic/2.png rename to toys/cards/2.png diff --git a/toys/omg-magic/20.png b/toys/cards/20.png similarity index 100% rename from toys/omg-magic/20.png rename to toys/cards/20.png diff --git a/toys/omg-magic/21.png b/toys/cards/21.png similarity index 100% rename from toys/omg-magic/21.png rename to toys/cards/21.png diff --git a/toys/omg-magic/22.png b/toys/cards/22.png similarity index 100% rename from toys/omg-magic/22.png rename to toys/cards/22.png diff --git a/toys/omg-magic/23.png b/toys/cards/23.png similarity index 100% rename from toys/omg-magic/23.png rename to toys/cards/23.png diff --git a/toys/omg-magic/24.png b/toys/cards/24.png similarity index 100% rename from toys/omg-magic/24.png rename to toys/cards/24.png diff --git a/toys/omg-magic/25.png b/toys/cards/25.png similarity index 100% rename from toys/omg-magic/25.png rename to toys/cards/25.png diff --git a/toys/omg-magic/26.png b/toys/cards/26.png similarity index 100% rename from toys/omg-magic/26.png rename to toys/cards/26.png diff --git a/toys/omg-magic/27.png b/toys/cards/27.png similarity index 100% rename from toys/omg-magic/27.png rename to toys/cards/27.png diff --git a/toys/omg-magic/28.png b/toys/cards/28.png similarity index 100% rename from toys/omg-magic/28.png rename to toys/cards/28.png diff --git a/toys/omg-magic/29.png b/toys/cards/29.png similarity index 100% rename from toys/omg-magic/29.png rename to toys/cards/29.png diff --git a/toys/omg-magic/3.png b/toys/cards/3.png similarity index 100% rename from toys/omg-magic/3.png rename to toys/cards/3.png diff --git a/toys/omg-magic/30.png b/toys/cards/30.png similarity index 100% rename from toys/omg-magic/30.png rename to toys/cards/30.png diff --git a/toys/omg-magic/31.png b/toys/cards/31.png similarity index 100% rename from toys/omg-magic/31.png rename to toys/cards/31.png diff --git a/toys/omg-magic/32.png b/toys/cards/32.png similarity index 100% rename from toys/omg-magic/32.png rename to toys/cards/32.png diff --git a/toys/omg-magic/33.png b/toys/cards/33.png similarity index 100% rename from toys/omg-magic/33.png rename to toys/cards/33.png diff --git a/toys/omg-magic/34.png b/toys/cards/34.png similarity index 100% rename from toys/omg-magic/34.png rename to toys/cards/34.png diff --git a/toys/omg-magic/35.png b/toys/cards/35.png similarity index 100% rename from toys/omg-magic/35.png rename to toys/cards/35.png diff --git a/toys/omg-magic/36.png b/toys/cards/36.png similarity index 100% rename from toys/omg-magic/36.png rename to toys/cards/36.png diff --git a/toys/omg-magic/37.png b/toys/cards/37.png similarity index 100% rename from toys/omg-magic/37.png rename to toys/cards/37.png diff --git a/toys/omg-magic/38.png b/toys/cards/38.png similarity index 100% rename from toys/omg-magic/38.png rename to toys/cards/38.png diff --git a/toys/omg-magic/39.png b/toys/cards/39.png similarity index 100% rename from toys/omg-magic/39.png rename to toys/cards/39.png diff --git a/toys/omg-magic/4.png b/toys/cards/4.png similarity index 100% rename from toys/omg-magic/4.png rename to toys/cards/4.png diff --git a/toys/omg-magic/40.png b/toys/cards/40.png similarity index 100% rename from toys/omg-magic/40.png rename to toys/cards/40.png diff --git a/toys/omg-magic/41.png b/toys/cards/41.png similarity index 100% rename from toys/omg-magic/41.png rename to toys/cards/41.png diff --git a/toys/omg-magic/42.png b/toys/cards/42.png similarity index 100% rename from toys/omg-magic/42.png rename to toys/cards/42.png diff --git a/toys/omg-magic/43.png b/toys/cards/43.png similarity index 100% rename from toys/omg-magic/43.png rename to toys/cards/43.png diff --git a/toys/omg-magic/44.png b/toys/cards/44.png similarity index 100% rename from toys/omg-magic/44.png rename to toys/cards/44.png diff --git a/toys/omg-magic/45.png b/toys/cards/45.png similarity index 100% rename from toys/omg-magic/45.png rename to toys/cards/45.png diff --git a/toys/omg-magic/46.png b/toys/cards/46.png similarity index 100% rename from toys/omg-magic/46.png rename to toys/cards/46.png diff --git a/toys/omg-magic/47.png b/toys/cards/47.png similarity index 100% rename from toys/omg-magic/47.png rename to toys/cards/47.png diff --git a/toys/omg-magic/48.png b/toys/cards/48.png similarity index 100% rename from toys/omg-magic/48.png rename to toys/cards/48.png diff --git a/toys/omg-magic/49.png b/toys/cards/49.png similarity index 100% rename from toys/omg-magic/49.png rename to toys/cards/49.png diff --git a/toys/omg-magic/5.png b/toys/cards/5.png similarity index 100% rename from toys/omg-magic/5.png rename to toys/cards/5.png diff --git a/toys/omg-magic/50.png b/toys/cards/50.png similarity index 100% rename from toys/omg-magic/50.png rename to toys/cards/50.png diff --git a/toys/omg-magic/51.png b/toys/cards/51.png similarity index 100% rename from toys/omg-magic/51.png rename to toys/cards/51.png diff --git a/toys/omg-magic/52.png b/toys/cards/52.png similarity index 100% rename from toys/omg-magic/52.png rename to toys/cards/52.png diff --git a/toys/omg-magic/53.png b/toys/cards/53.png similarity index 100% rename from toys/omg-magic/53.png rename to toys/cards/53.png diff --git a/toys/omg-magic/54.png b/toys/cards/54.png similarity index 100% rename from toys/omg-magic/54.png rename to toys/cards/54.png diff --git a/toys/omg-magic/6.png b/toys/cards/6.png similarity index 100% rename from toys/omg-magic/6.png rename to toys/cards/6.png diff --git a/toys/omg-magic/7.png b/toys/cards/7.png similarity index 100% rename from toys/omg-magic/7.png rename to toys/cards/7.png diff --git a/toys/omg-magic/8.png b/toys/cards/8.png similarity index 100% rename from toys/omg-magic/8.png rename to toys/cards/8.png diff --git a/toys/omg-magic/9.png b/toys/cards/9.png similarity index 100% rename from toys/omg-magic/9.png rename to toys/cards/9.png diff --git a/toys/crunt.cgi b/toys/crunt.cgi new file mode 100755 index 0000000..a801fe0 --- /dev/null +++ b/toys/crunt.cgi @@ -0,0 +1,31 @@ +#! /bin/sh + +randint () { + seq $1 $2 | shuf -n 1 +} + +crunt () { + shuf -n 1 <' + crunts=$(randint 200 500) + babies=$(expr \( $crunts \* 3 \) / 4) + + while [ $crunts -gt 0 ]; do + crunt + crunts=$(expr $crunts - 1) + done + while [ $babies -gt 0 ]; do + echo crunt + babies=$(expr $babies - 1) + done + echo 'CRUNT!' + echo '

    ' +) | m4 -DTITLE=crunt ../template.xml - diff --git a/toys/crunt.php b/toys/crunt.php deleted file mode 100644 index 871048e..0000000 --- a/toys/crunt.php +++ /dev/null @@ -1,20 +0,0 @@ - - -crunt - - - 7)) { - print "CRUNT "; - } else { - print "crunt "; - } -} -print "CRUNT!"; -?> - - \ No newline at end of file diff --git a/toys/fungame.mdwn b/toys/fungame.mdwn index 8a3c8d9..0786dfd 100644 --- a/toys/fungame.mdwn +++ b/toys/fungame.mdwn @@ -1,4 +1,4 @@ -[[!meta title="Fun Game"]] +Title: Fun Game diff --git a/toys/index.mdwn b/toys/index.mdwn new file mode 100644 index 0000000..4a4ca05 --- /dev/null +++ b/toys/index.mdwn @@ -0,0 +1,11 @@ +Title: Toys + +Here is some various junk I've done. Maybe you'll find it amusing. +Maybe you'll just wonder why I spend so much time on this garbage. + +* Play [a fun game](fungame.html)! +* If you need to write someone a letter but really don't want to, try my + [smalltalk generator](smalltalk.cgi). +* Maybe you'd rather see a [magic trick](omg-magic.html)? +* How about some [Internet Reiki](reiki.html)? +* [Crunt](crunt.cgi). diff --git a/toys/omg-magic.html b/toys/omg-magic.html deleted file mode 100644 index 2e6e918..0000000 --- a/toys/omg-magic.html +++ /dev/null @@ -1,72 +0,0 @@ -[[!meta title="OMG Magic!"]] - -

    - This is a clever magic trick. This paragraph should be filled with - suspenseful leadup to waste your time and get you TOTALLY PUMPED for - this AWESOME MAGIC TRICK that was created by some famous and/or - mystical person and now it's coming directly to you on the - Internets! Can you believe it! -

    - -

    - Pick a card. Stare at it long enough to memorize what card you've - picked, try to burn it into you mind. Don't worry, take your time, - I'll wait. -

    - -
    - card - card - card - card - card -
    - -

    - When you've memorized your card, you may proceed to - the next page. -

    - -
    - - -

    OMG Magic!

    - -

    - Do you remember your card? I'm going to yak at you for a little while - to make you spend some time doing something other than focusing on - those cards. This is called redirection and it's a - fundamental part of most magic tricks. The fact that it works even in - a web page says more about humanity than you in particular, so don't - feel bad. -

    - -

    - Ready to have you mind blown? Let's go! -

    - -
    - - -

    OMG Magic!

    - -

    - I have removed your card from the hand! -

    - -
    - card - card - card - card -
    - -

    - Did it work? -

    - -

    - OMG Magic! -

    - -
    diff --git a/toys/omg-magic.mdwn b/toys/omg-magic.mdwn new file mode 100644 index 0000000..e30d166 --- /dev/null +++ b/toys/omg-magic.mdwn @@ -0,0 +1,58 @@ +Title: OMG Magic! + +This is a clever magic trick. This paragraph should be filled with +suspenseful leadup to waste your time and get you TOTALLY PUMPED for +this AWESOME MAGIC TRICK that was created by some famous and/or mystical +person and now it's coming *directly to you* on the Internets! Can you +believe it! + + +Pick a card. Stare at it long enough to memorize what card you've +picked, try to burn it into you mind. Don't worry, take your time, I'll +wait. + +
    + card + card + card + card + card +
    + +When you've memorized your card, you may proceed to +the next page. + +
    + + +OMG Magic! +========== + +Do you remember your card? I'm going to yak at you for a little while +to make you spend some time doing something other than focusing on those +cards. This is called *redirection* and it's a fundamental part of most +magic tricks. The fact that it works even in a web page says more about +humanity than you in particular, so don't feel bad. + +Ready to have you mind blown? Let's go! + +
    + + +OMG Magic! +========== + +I have removed your card from the hand! + +
    + card + card + card + card +
    + +Did it work? + +OMG Magic! + +
    diff --git a/toys/smalltalk.cgi b/toys/smalltalk.cgi new file mode 100755 index 0000000..bf812ea --- /dev/null +++ b/toys/smalltalk.cgi @@ -0,0 +1,112 @@ +#! /bin/sh + +intro () { + shuf -n 1 <