git @ Cat's Eye Technologies Chrysoberyl / master article / Tools.md
master

Tree @master (Download .tar.gz)

Tools.md @masterview markup · raw · history · blame

Tools

  • image_url: https://static.catseye.tc/images/illustrations/Allen_wrench_and_screw_(PSF).jpg

Note that the precise distinctions between a Tool, a Platform, and a Library are debatable, and entries may be categorized somewhat arbitrarily.

Tools for Retrocomputing platforms might be found in the Retrocomputing article instead.

Formats often have tools for processing them, and those are listed along with the format instead of here.

Note that Cat's Eye Technologies also maintains some forks of some tools.

Note also that there are several novel generators in here, and possibly other kinds of generators, that should probably be in their own "Generators" article rather than here in "Tools".

Chainscape

Chainscape is the name of a project, undertaken during NaNoGenMo 2023, to explore the algebraic properties of Markov chains. In particular, it can be used to find the intersection of two or more Markov chains (which is itself a Markov chain and can be walked randomly to produce a sequence.) It was used to generate the novel The Other and the Same.

DAM

  • summary: You've tried the Document Object Model, now try the Document Awesome Model
  • inception-date: ca 2019
  • development-stage: not fully complete
  • reference-distribution: DAM distribution

DAM is a little Javascript library for creating trees of HTML5 elements in the DOM. It supercedes the element-factory module from yoob.js, and Cat's Eye Technologies' newer gewgaws use it instead of yoob.js for creating their control panels. It's rather a lot like hyperscript except more minimal and, of course, awesomer.

Implementation: DAM (Javascript)

  • reference: true
  • license: Public Domain
  • host-language: Javascript
  • host-platform: HTML5

DiskSumo

DiskSumo main menu DiskSumo during transfer

DiskSumo is a program to transfer disk images off a Commodore 64 over the RS-232 port via the XMODEM protocol at 300 baud.

Implementation: DiskSumo (BASIC)

Dissociated Parse

Dissociated Parse is not really a tool, rather, it is an algorithm; specifically it is an adaptation of the Dissociated Press algorithm to work on parse trees (rather than the sequential list of words it conventionally works on). It was developed during NaNoGenMo 2021 and was used to generate the novel The Lion, the Witches, and the Weird Road.

Implementation: Dissociated Parse (Python)

  • reference: true
  • license: MIT License
  • host-language: Python

define-opaque

define-opaque is a library for R5RS Scheme that adds a facility for creating opaque data types in a simplistic fashion. It was written based on some of the ideas in Information Hiding in Scheme.

It exists partly because I actually wanted to implement some of those ideas in Scheme, to support building things such as LCF-style theorem provers in Scheme, and abstract data types are otherwise difficult to implement in Scheme.

Implementation: define-opaque.scm

  • reference: true
  • license: Public Domain
  • host-language: Scheme

ellsync

  • inception-date: 2018
  • development-stage: work in progress
  • reference-distribution: ellsync distribution

ellsync is an opinionated poka-yoke for rsync. "Opinionated" because it was designed for a particular use case for rsync (offline backups). "Poka-yoke" because it exposes a restricted interface to rsync, which prevents using it in dangerous ways.

Implementation: ellsync (Python)

  • reference: true
  • license: Public Domain
  • host-language: Python

Funicular

  • summary: Scripts to set up dev environments on various OS'es on sundry architectures
  • inception-date: Jun 17 2014
  • development-stage: not fully complete
  • reference-distribution: Funicular distribution

Funicular is a system that semi-automates the creation of development environments on eclectic architectures. "Semi-automate" means it automates what it can, and provides repeatable instructions for you to follow for what it can't.

"Eclectic architectures" is not terribly-well defined, but it includes retrocomputing and esoteric architectures. Basically, if you've got an emulator for it and install images for it, you might be able to outfit and run a system for it, using Funicular.

It replaces Amiga Gondola. It can handle such OS/emulator combinations as NetBSD under QEMU, FreeDOS under QEMU, AmigaDOS 1.3 on an Amiga 500 under E-UAE, Applesoft BASIC on an Apple II under linapple, and Commodore BASIC 2.0 on a Commodore 64 under VICE.

Implementation: funicular

  • reference: true
  • license: Public Domain
  • host-language: Bourne shell

hatoucan

  • summary: Tokenizer for Commodore BASIC 2.0 programs
  • inception-date: 2015
  • development-stage: not fully complete
  • reference-distribution: hatoucan distribution

hatoucan is a tokenizer for Commodore BASIC 2.0 programs. It is compatible with a subset of petcat, but is written in Python and is in the public domain.

Implementation: hatoucan (Python)

  • reference: true
  • license: Public Domain
  • host-language: Python

kinoje

  • inception-date: 2017
  • development-stage: work in progress
  • reference-distribution: kinoje distribution

kinoje is a templating-based animation tool. A provided template is filled out once for each frame of the animation; the result of the template expansion is used to create a still image; and the resulting sequence of images is compiled into the finished movie.

Implementation: kinoje (Python)

  • reference: true
  • license: Public Domain
  • host-language: Python

Lariat

  • inception-date: 2021
  • development-stage: work in progress
  • reference-distribution: Lariat distribution

Lariat is an abstract data type for proper lambda terms, consisting of four operations: app, abs, var, and destruct. Each of the operations produces a proper lambda term as its result, i.e. bound terms are never exposed to the user of the ADT. Lariat is a total data type in the sense that all of the operations are defined on all properly-typed input values. It is a higher-order data type in the sense that destruct takes function values as parameters.

Implementation: Data.Lariat

  • reference: false
  • license: Unknown license
  • host-language: Haskell

MARYSUE

  • summary: An engine for generating non-interactive fiction
  • inception-date: Nov 2015
  • development-stage: not fully complete
  • reference-distribution: MARYSUE distribution

MARYSUE is the story generator used to generate the novel A Time for Destiny for NaNoGenMo 2015.

Implementation: MARYSUE (Python)

  • reference: true
  • license: Public Domain
  • host-language: Python

Parc

  • summary: The simplest parser combinator library that could possibly work
  • inception-date: Dec 2022
  • development-stage: not fully complete
  • reference-distribution: Parc distribution

Parc is a particularly simple parser combinator library, and a series of experimental variations on this theme, written in Haskell.

Implementation: Parc.hs

  • reference: true
  • license: MIT License
  • host-language: Haskell

Philomath

  • summary: An LCF-style theorem prover written in ANSI C
  • inception-date: Feb 2022
  • development-stage: not fully complete
  • reference-distribution: Philomath distribution

Philomath is an LCF-style theorem prover written in ANSI C. It supports classical propositional logic in a Natural Deduction system with labelled assumptions.

Implementation: Philomath (ANSI C)

  • reference: true
  • license: Public Domain
  • host-language: ANSI C

relwrite

  • summary: relates strings to strings via a grammar in the Chomsky hierarchy
  • inception-date: Nov 2022
  • development-stage: not fully complete
  • reference-distribution: relwrite distribution

relwrite relates strings to strings via a grammar in the Chomsky hierarchy.

Implementation: relwrite

  • reference: true
  • license: MIT License
  • host-language: Python

shelf

  • summary: A "package manager" that doesn't actually install anything
  • inception-date: 2016
  • development-stage: work in progress
  • reference-distribution: shelf distribution

shelf is a "package manager" which doesn't actually install any files. Instead, it stores the source trees of sundry packages in a single directory, creates link farms to the interesting files within those trees, and manages your search paths to include those link farms. those trees. The source trees are typically the working directories of local git or Mercurial clones, or they can be source distributions from tarballs. shelf, written in Bourne shell, is a replacement for toolshelf, which was written in Python.

Implementation: shelf.sh

  • reference: true
  • license: Public Domain
  • host-language: Bourne shell

SITU-MON

SITU-MON

SITU-MON is a machine language monitor for 6502-based systems, written (by hand!) during RetroChallenge 2015/07 and entered into an emulated Commodore 64 using SITU-PAN. It was in turn used to enter SITU-SOL.

Implementation: SITU-MON (Commodore 64)

SITU-PAN

SITU-PAN

SITU-PAN is a front-panel switches simulator for the Commodore 64. It displays 8 virtual LEDs and 8 virtual dip switches on the screen. The LEDs display the bit pattern at the current address in memory. Via the keyboard, the switches may be toggled, a new bit pattern written into memory, and the address advanced. In this way, machine code programs may be entered into memory, and then run. SITU-PAN was written during RetroChallenge 2015/07 for the purposes of entering SITU-MON into an emulated C64.

Implementation: frontpanel.bas

tagfarm

  • inception-date: Apr 2020
  • development-stage: not fully complete
  • reference-distribution: tagfarm distribution

tagfarm is an ultra-lightweight, filesystem-based categorization system for arbitrary files. Each tag is implemented as a directory full of symbolic links to files with that tag.

Implementation: tagfarm (Python)

  • reference: true
  • license: Public Domain
  • host-language: Python

The Swallows Engine

  • summary: An engine for generating non-interactive fiction
  • inception-date: Nov 2013
  • development-stage: not fully complete
  • reference-distribution: The Swallows distribution

The Swallows Engine is the engine used to generate The Swallows series of generated novels for NaNoGenMo 2013.

Implementation: The Swallows Engine (Python)

  • reference: true
  • license: Public Domain
  • host-language: Python

tree

  • inception-date: 2014
  • development-stage: mature
  • reference-distribution: tree distribution

Cat's Eye Technologies' tree is a command-line tool that displays an indented directory tree, similar to "The Tree Command for Linux" except simpler.

Implementation: tree (Python)

  • reference: true
  • license: Public Domain
  • host-language: Python

T-Rext

  • summary: Tidier-upper for generated text
  • inception-date: Nov 2014
  • development-stage: mature
  • reference-distribution: T-Rext distribution

T-Rext is a command-line filter that attempts to clean up spaces and punctuation in a text file. Its purpose is so that, when you are writing a text generator, such as a Markov processor, you need not worry too much about its output format; just toss its output through T-Rext when you're done to make it more presentable.

Implementation: t-rext (Python)

  • reference: true
  • license: Public Domain
  • host-language: Python

yastasoti

yastasoti is yet another script for archiving stuff off teh internets. It supports consulting an archive router to determine where each stuff is archived to.

Implementation: yastasoti (Python)

  • reference: true
  • license: Public Domain
  • host-language: Python

yucca

  • summary: Static analyzer for 8-bit BASIC programs
  • inception-date: 2012
  • reference-distribution: yucca distribution

yucca is a dialect-agnostic static analyzer for 8-bit BASIC programs. It can find GOTO's and GOSUB's which refer to non-existent line numbers, or line numbers which contain only a REM, among a few other modest features.

Implementation: yucca (Python)

  • reference: true
  • license: MIT License
  • host-language: Python

Archival Tools

TPiS

  • subtitle: Total Procedures in Scheme
  • summary: Totality-checker for Scheme procedures
  • inception-date: ca 2006
  • development-stage: archival
  • reference-distribution: TPiS distribution

This is a static analyzer, written in Scheme, which can check if given Scheme procedures are total (always terminate, on any input) by checking that they are specified primitive-recursively. What's more, it is written almost entirely in a primitive-recursive style, so it can check itself!

Implementation: TPiS (Scheme)

  • reference: true
  • license: BSD license
  • host-language: Scheme

yoob.js

  • summary: A framework for interactive esolang implementation
  • inception-date: Oct 4 2012
  • development-stage: not fully complete
  • reference-distribution: yoob.js distribution

yoob.js is a framework for implementing esoteric programming languages in Javascript/HTML5. It has some differences from the earlier yoob framework, which is in Java.

Implementation: yoob.js (Javascript)

  • reference: true
  • implementation-type: framework
  • license: Public Domain
  • host-language: Javascript