<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<!-- This document was created with Latte version 2.1 -->
<!-- For information on Latte, see http://www.latte.org/ -->
<html>
<head><meta name="generator" content="Latte 2.1"><meta name="Keywords" content="homepage, Darius Bacon, contract programming, free software, open source, Scheme programs">
<title>Darius Bacon</title></head>
<body bgcolor="ivory"><p><table align="center" width="95%" cellpadding="5" border="0"><tr><td width="20%"><h2>Darius Bacon</h2></td>
<td>This is my old homepage from the
1990s; you may want <a href="http://wry.me">my new one</a> instead.</td></tr></table>
<hr>
<table><tr><td valign="top">
<h2>work</h2>
I'm not currently looking, but here's <a href="work/resume-darius-bacon.html">my résumé</a>.
<p><h2>software</h2>
Programs that I either use or wrote for other people's use.
<ul><li><a href="software/idel/index.html">idel</a>: A virtual machine for efficient cooperation of
mutually-suspicious mobile code modules.</li>
<li><a href="software/clickcheck.html">clickcheck</a>: Lisp and
Python libraries for testing with random test-case generation.</li>
<li><a href="software/uts.tar.gz">uts</a>: A <a href="http://www.schemers.org">Scheme</a> bytecode interpreter
I use for my personal scheming. It includes all of the R4RS
required procedures plus a few extras, like a debugger, yet
it's still very small and hackable. But it's not under
active development, and thus not recommended to others.</li>
<li><a href="software/consp.html">consp</a>: A multiuser dialect
of Scheme illustrating <a
href="http://www.cap-lore.com/CapTheory/">capability security</a>.
<li><a href="http://sourceforge.net/projects/epan">epan</a>: Random
collection of code in <a href="http://erights.org">E</a>, including
<a href="http://www.caplet.com">Mark Miller's</a> SmallCaps virtual
machine and my incomplete E compiler for it. Contributions welcome.</li>
<li><a href="http://github.com/darius/expr">expr</a>: Evaluates arithmetic
expressions with variables, in Java.
There's a <a href="software/expr/doc/user-doc.html">manual</a>.
You may prefer the older <a href="software/expr-1.zip">version 1</a>
for its smaller size; the newer version tries much harder to
give helpful error messages on bad inputs.</li>
<li><a href="software/tush.tgz">tush</a>: Literate testing for
shellscripts. Vaguely like <a
href="http://en.wikipedia.org/wiki/Doctest">doctest</a>, <a
href="http://www.erights.org/elang/tools/updoc.html">UpDoc</a>, and
<a href="http://fit.c2.com/">FIT</a>. <a
href="http://darius.livejournal.com/42878.html">More explanation.</a>
<li><a href="software/yabe.tar.gz">yabe</a>: A Java bytecode emitter library. Comes with a Scheme
to JVM compiler descended from the `teeny' interpreter (see
'alg_gen' in the right column),
to test out the Java bytecode emission. (Check out <a
href="http://jscheme.sourceforge.net/">Jscheme</a> for a more
industrial-strength Scheme on Java.)</li>
<li><a href="http://vapour.sourceforge.net/">vapour</a>: I created a systems-programming dialect of Lisp for this
operating system that unfortunately is living
up to its name right now: the code's still unreleased.</li>
<li><a href="software/miasma/index.html">miasma</a>: A machine-code
toolkit for x86 CPUs usable from C and Python, written in Scheme, extracted
from Vapour. With contributions by Brian Spilsbury.</li>
<li><a href="software/scheme-data-structures.tar.gz">datastruct</a>: Scheme data structures & algorithms. Includes purely
functional queues, priority queues (pairing heaps), and
unordered sets, plus mutable tries and Boyer-Moore-Horspool
string searching.</li>
<li><a href="software/bench.tar.gz">bench</a>: A multi-language set of tiny benchmarks that try to exercise
compilers in different ways. They're not a serious measure
of performance, but a first cut meant to winnow out
hopelessly slow systems quickly. Like the later <a
href="http://shootout.alioth.debian.org/great/">Computer Language Shootout</a>.</li>
<li><a href="software/req.tar.gz">req</a>: A calculator programmable with rewrite rules. Very
old and another one of those programs I use daily but don't
recommend to others.</li>
<li><a href="http://world.std.com/~wware/ncad.html">nanocad</a>: A free molecular modeler I contributed to.</li>
<li><a href="software/ridarama/index.html">ridarama</a>: Public-transit trip planning, with scope for lots more cool
stuff; this would be a good project for someone else to take
further.</li>
<li><a href="software/wishlist.awk">amazon rescuer</a>: Takes the books from an Amazon wishlist and builds a new
wishlist page pointing to another site like
<a href="http://www.booksense.com">booksense</a>.</li>
<li><a href="http://sourceforge.net/projects/skwiki">skwiki</a>:
A Wiki server by <a href="http://www.bluetail.com/~luke/">Luke
Gorrie</a> that runs Scheme code users can place inline on Wiki
pages. (My role was just design advice and some Scheme snippets.)
</li></ul>
<p><h2>writings</h2>
<ul>
<li><a href="writings/abecedarius.html">abecedarius</a>: ABCs of
programming languages.</li>
<li><a href="writings/peval/">hacker's intro to partial evaluation</a>: Popularizes an undeservedly obscure technique.</li>
<li><a href="writings/language-ranking.html">the superiority of actor languages</a>: The Anagram Oracle ranks the programming languages.</li>
<li><a href="writings/scheme-for-lispers.html">Scheme for Lispers</a>: Summarizes what's different about Scheme for programmers
coming to it from Common Lisp.</li>
<li><a href="writings/dynatail.html">tail recursion with dynamic scope</a>: A technical note on two language features often thought to be
incompatible.</li>
<li><a href="writings/memory.html">memory</a>: A non-cache-coherent sonnet.</li>
<li><a href="writings/notes.text">language-oriented programming</a>: Some old and jumbled notes.</li>
<li><a href="writings/immortal.html">strange aeons</a>: Musings on facing life or death.</li>
<li><code>up-dn</code>: <a href="writings/a-poem.html">This</a> and
<a href="writings/deus-am.html">this</a> are the first (and probably
the last) instances of an art form I invented: invertible
`poetry'. They appeared in
<a href="http://www.realchange.org/pal/"><cite>The Palindromist</cite></a>
#4.</li></ul>
<p><h2>personal</h2>
<ul><li><a href="personal/contact.html">contact</a>: How to reach me, plus my PGP public key.</li>
<li><a href="personal/books.html">books I like</a>: Recommendations.</li>
<li><a href="personal/sale.html">sale</a>: Books and stuff I used
to be selling (currently inactive).</li>
<li><a href="personal/to-read.html">to read</a>: Books I would like to check out but have not yet found.</li>
<li><a href="http://wry.me/blog/">wry.me</a>: My blog.</li>
<li><a href="http://www.livejournal.com/users/darius/">livejournal</a>: My online diary for regular people.</li>
<li><a href="http://advogato.org/person/demoncrat">advogato</a>: Another one for free-software hackers.</li>
<li><a href="personal/futurism.html">futurism</a>: Some links about where we're going with technology in the
longer term.</li>
<li><a href="personal/vitals.html">vitals</a>: Random info about me
(somewhat outdated).</li></ul>
</td>
<td valign="top"><h2>hacks</h2>
These I made more for fun or point-proving than utility.
<ul>
<li><a href="hacks/icbins/icbins.tar.gz">icbins</a>: A self-hosting
Lisp-to-C compiler and interactive interpreter in about 10 pages of
code. No, not scrunched and obfuscated code. New: <a
href="hacks/ichbins.tar.gz">ichbins</a>, a rewrite in 6 pages, sans
interpreter.</li>
<li><a href="hacks/Hypercode.sit">hypercode</a>: A <a href="http://docs.info.apple.com/article.html?artnum=24522">HyperCard</a> stack
prototyping some ideas about end-user programming.</li>
<li><a href="hacks/emacscard/emacscard.tar.gz">emacscard</a>: A variation on
those ideas, in Emacs Lisp; one way to think of it is as a primitive
"spreadsheet for text". You can
<a href="hacks/emacscard/">browse the source</a> online.</li>
<li><a href="hacks/howtodothingswithdocs.tar.gz">scheme wiki</a>: a
wiki that runs literate programs in Scheme. This is a bit like the
later <a href="http://www.logowiki.net/">Logo Wiki</a> without
the graphics, or the earlier skwiki (at left) with better
modularity. Written in Python. Needs a real name and a server, but I hadn't
meant to release it yet.</li>
<li><a href="hacks/ikiwiki.tar.gz">ikiwiki</a>: A prototype webserver/Wiki in C. Makes its own code
publically editable. The Scheme wiki above is a more
interesting development of this.</li>
<li><a href="hacks/mixal.tar.gz">mixal</a>: An assembler and interpreter for the MIX machine in Knuth's
<cite>The Art of Computer Programming</cite>. This code became the
starting point of <a href="http://www.gnu.org/software/mdk/mdk.html">GNU MDK</a>.</li>
<li><a href="http://github.com/darius/halp/tree/master">halp</a>: Haskell Active Literate
Programming. Run your Haskell literate program as you're editing
it, with results inserted in place: a quickie hack in Elisp with <a
href="http://www.ugcs.caltech.edu/~brandon/">Brandon Moore</a>. A
more serious version of this ought to be pretty useful.</li>
<li><a href="hacks/plonk.tar.gz">plonk</a>: A Java port of the bytecode engine of <code>uts</code>. This was
the world's first full-scale Scheme for Java, but I considered
it too slow to be worth developing further. It's only known
to work in Java 1.0.
<a href="hacks/plonk-scm.tar.gz">This all-Scheme version</a>
of the engine also includes source for the bytecode compiler
and runtime.</li>
<li><a href="hacks/screenfuls/screen3.html">screenfuls</a>: A `screenful' is the programming analog of
<a href="http://www.wunderland.com/WTS/Andy/Nanofiction.html">nanofiction</a>: a
readable program that does something interesting and fits in
one screen. Send me more!</li>
<li><a href="hacks/lambda-papers.tar.gz">lambda papers</a>: code
from the Steele & Sussman <a
href="http://library.readscheme.org/page1.html">papers on
Scheme</a> running on a Common Lisp substrate.</li>
<li><a href="hacks/RABBIT">annotated rabbit</a>: Guy Steele's
<a href="http://library.readscheme.org/page1.html">RABBIT</a>
compiler, with extra notes I added while studying it.</li>
<li><a href="hacks/awklisp.tar.gz">awklisp</a>: A Lisp interpreter in Awk that ran faster than a commercially
available Basic interpreter at the time it was written.
Version 1.2 includes a contributed port to Perl with some
extra features.</li>
<li><a href="hacks/classfile.scm">classfile</a>: Parses and unparses Java classfiles. Written in Scheme.</li>
<li><a href="hacks/pisa.tar.gz">pisa</a>: An instruction-level simulator for the MIT Pendulum
<a href="http://www.ai.mit.edu/~cvieri/reversible.html">reversible computer</a>,
in Scheme.</li>
<li><a href="hacks/doe/doe-0.1.2.tar.gz">doe</a>: Yet another tiny
Emacs clone. While <strike>even I don't use it</strike> (actually
I do use a version of it now, which I ought to upload), its
design and code influenced
<a href="http://www.bluetail.com/~luke/ermacs/">Ermacs</a>. There's
also a simpler
<a href="hacks/doe/doe-0.1.1.tar.gz">older version</a>.</li>
<li><a href="hacks/bdd.tar.gz">bdd</a>: Binary decision diagrams in Scheme.</li>
<li><a href="hacks/mlish.tar.gz">mlish</a>: An infix syntax frontend for Scheme.</li>
<li><a href="hacks/indent.tar.gz">indent</a>: A more Python/Haskell-like syntax, using indentation in place
of parentheses. Also included are similar hacks by Paul
Fernhout and Egil Moeller.</li>
<li><a href="hacks/spelling.tar.gz">spelling</a>: Corrects spelling using minimal edit distance from dictionary
words. Also in Scheme. Add
<a href="hacks/f-sf-competition.scm">this code</a> to
enumerate <a href="http://www.livejournal.com/users/darius/3726.html">mangled
book titles</a> like <cite>Nice Princes in Amber</cite>.
See also <a href="http://norvig.com/spell-correct.html">Peter
Norvig on spelling correction</a> for a complementary
treatment. Both programs are short.</li>
<li><a href="hacks/compiler.tar.gz">toy compiler</a>: My first compiler from a semi-real language to assembly code,
in SML. Based on ideas from Kelsey's ``A Correspondence
between Continuation Passing Style and Static Single
Assignment Form''.</li>
<li><a href="hacks/alg_gen.zip">alg_gen</a>: A variation on Will Ware's <a href="http://world.std.com/~wware/agj/ag.html">Algorithmic Generation
of Molecular Structures</a>.
Includes a teeny Lisp in Java by
<a href="http://www.bluetail.com/~luke/">Luke Gorrie</a> and
me. This wasn't meant as a fork in Ware's code so much as
``why don't you do it this way?''</li>
<li>dcalc: A simplified C version of the Java expression calculator above, used by
the #C bot named <a href="http://www.rm-f.net/~algorith/">algorithm</a>.
See <a href="hacks/dcalc.h">dcalc.h</a>
and <a href="hacks/dcalc.c">dcalc.c</a>.</li>
<li><a href="hacks/lisp-study.scm">lisp study</a>: The result of my
participation in <a href="http://www.flownet.com/gat/">Erann Gat</a>'s
<a href="http://www-aig.jpl.nasa.gov/public/home/gat/lisp-study.html">study</a>
comparing Lisp programmers to C/C++/Java ones.
<a href="http://www.norvig.com/">Peter Norvig</a> also
tackled the problem later on, totally
<a href="http://www.norvig.com/java-lisp.html">kicking my butt</a>.</li>
<li><a href="hacks/anagrams.tar.gz">amoral carnage</a>: The Lisp-study code was easily adapted to generate anagrams
instead of `phone-a-grams'. There are much fancier anagram
programs out there, but this one's short and simple and fast
enough.</li>
<li><a href="hacks/icfp2001-demoncrat.tar.gz">haste</a>: My <a href="http://cristal.inria.fr/ICFP2001/prog-contest/">ICFP 2001 contest</a>
entry. (You can find it in the results under `demoncrat'.)
Described <a href="http://www.livejournal.com/users/darius/day/2001/08/01">here</a>.</li>
<li><a href="hacks/icfp1999.tar.gz">icfp 1999</a>: In 1999 I forgot the contest was coming up, wasted time
trying to assemble a team, and hacked up a fairly anemic
optimizer in Scheme. I was too embarrassed to submit it,
but from
<a href="http://www.eecs.harvard.edu/~nr/pubs/icfp99-abstract.html">the results</a>
it looks like it would have placed decently. That's why I
went ahead and submitted my 2001 entry.</li>
<li><a href="hacks/factor.c">factor</a>: Factors numbers. Another ancient utility I call on
sometimes, that's too trivial to put under
`software'.</li></ul>
<p><h2>art</h2>
<ul>
<li><a href="http://djb.deviantart.com">deviantart</a>: Digital
images created by interactive evolution.</li>
<li><a href="gallery/index.html">gallery</a>: Earlier results from
the same program.</li>
<li><a href="hacks/evoart/index.html">evoart</a>: My first efforts
in this line, including program source code.</li>
</ul>
</td></tr></table>
<hr>
<small><a href="index.html">Home</a>
|
© 1994-2004 by <a href="personal/contact.html">Darius Bacon</a></small></body>
</html>