Johnicholas Hines

Projects
  • I implemented a tiny self-hosting interpreter (Torben AEgidius Mogensen invented it, and used it as a running example in his Inherited Limits paper - as far as I know, the language doesn't have a name.), first in req, and then again in Lua, and then again in Prolog.
  • Using ichbins, I wrote a generator that can parse a syntax tree and output it in three languages corresponding to three simple self-hosting compilers (otccelfcc500bcompiler). The biggest syntax tree I translated with it is a version of jar2.
  • A tool for manually solving job-shop scheduling problems. I hope that anyone who knows what job-shop scheduling is also knows how dumb it is to manually solve them.
  • This is a generator for a particular kind of template class, which I call the wiring idiom. The generator takes a syntax tree and outputs a class that represents that syntax tree. Using the wiring idiom pushes the classes being wired together to be more stateless and reusable.
  • In order to understand P'', I wrote a little simulator for it. It can do Bohm's decrement algorithm, but it's not particularly efficient, well-documented or pretty.
  • I transliterated a tiny functional program into Java's OO style, with mildly interesting results; it blew up enormously and all of the control flow vanished.
  • This is a doodle trying to figure out how that "select/poll-based user multithreading dataflow sockets thing" (which I've seen in a couple places, most notably sfs/sfslite) works.
  • My best tool generates all grammatical strings from a given context free grammar, in length order. It creates a unrank function from the grammar, so you can "skip ahead" in the sequence.
  • Humans (well, programmers) sometimes follow algorithms to solve problems. This tool does the bookkeeping involved in depth-first search for you. The bookkeeping involved in depth-first search is not that much, so it's not that useful, compared to a stack of index cards.
Some of my books

My journal

My (inactive) internet-dating profile.

I am active on LessWrong.

I use TiddlyWiki. This is my tiddlywiki as of 4/12/2011.