Lab notes and source

The lab.tar.gz archive contains the source for all lab sessions described in the Inferno Programmer's Notebook.

Download

The package below contains software projects I work on in my spare time. I program using Inferno and Plan9 operating systems. Some of the tools are original while others are modifications to existing plan9 or inferno commands.

Limbo code

  • tq queries files served by lookfs (see below).
  • tickfs is a rewrite in limbo of lookfs aimed at processing time series data. Supports indexing and searching of data using keywords and dates. See below for more detail. taq queries tickfs files in the same way as tq, but uses the new interface.
  • comm, fortune, fmt, look, freq Plan9 commands ported to Inferno.
  • mount hack to inferno command to allow tunnel through http proxy.
  • localcron ported to Inferno.
  • search returns documents containing a list of keywords; documents must previously have been indexed into lookfs using a script like creatind. Tdbquery is the similar code but uses the cgi interface for the Inferno http server.
  • nsearch and tickquery are similar to the above but apply to the files served by tickfs.
  • rng converts ed style date ranges (1, 1,3 20010101;.+30) to seconds since the epoch ranges, useful for range queries using tq
  • libdbm ported to limbo. This version of libdbm is taken from Geoff Collyer's software page, which in turn is from V7 UNIX.
  • Statistic a module implementing graphical and quantative techniques for exploratory data analysis. Examples of use are Plot4, which plots a histogram, lag plot, normal probability plot and runtime plot of a set of data. And similar Plot6, which explores Y versus X fit. This is described in the e-handbook at NIST.
  • Treemap limbo module implements some of the Treemap algorithms from UMD HCI Lab. (TODO add a screen shot) tmap is a little application that takes output from du -a and displays the treemap for the filesystem.

C code

  • lookfs is a Sytx protocol file system. It implements inverted indexes of bi-temporal relations.
  • tea was an experiment in creating a simple interface to the tdb tools below. Here's a tutorial describing how to use it.
  • tdbjoin joins temporal relations.
  • tdbadd adds entries to temporal relations.
  • tdbcoin does a coincidence join on a temporal relation.
  • PostDate is a language for managing time varying data and code. It uses a reverse Polish notation loosely based on PostScript. It uses the same temporal relations as all the tools above. This was an experiment in creating procedures and variables whose definition varied along the valid time line. Some more notes. (I'm not developing this any further since I believe I can do the same thing using a combination of tickfs, vacfs, and limbo modules.)

The download contains the programs mentioned and more. It's a snapshot of my home directory and should install to the directory /usr/caerwyn, within Inferno; the following commands will install the package.

gunzip caerwyn.arch.gz
install/inst -r / caerwyn.arch

The tools written in C can be ported to UNIX quite easily using Russ Cox's port of the Plan 9 libraries to UNIX.