git » homepage.git » master » tree

[master] / archive / linked-pages / raw / 4448806eafb0c1c3.html

<!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&eacute;sum&eacute;</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 &amp; 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>
     &nbsp; | &nbsp;
     &copy; 1994-2004 by <a href="personal/contact.html">Darius Bacon</a></small></body>
</html>