UP | HOME

Project Ideas

This is a quick capture of notes for various project ideas. See also the ReadingList.

CLOS datastore

A database of CLOS objects that can be preserved across systems.

It probably needs the following fields:

label
a label for which "system" (in the ASDF sense) this belongs to. The closest analogue to SQL is a database name.
class
what is the name of the class? The closest analogue to SQL is a table.

You can load and store CLOS objects using the tuple \(\{label, class, id\}\).

Major questions:

  • How is the data stored on disk?
  • What is the API/RPC interface?

GPS time sync device

The basic idea is a GPS-equipped system to broadcast time over some combination of WiFi, LoRa, and bluetooth. It's specifically intended to be a local device, something useful in Collapse Computing, although the GPS system will likely not be available then.

SSH key storage system

This idea keeps coming up, so I should probably just build it.

  • add host key
  • remove host key
  • get current list of keys
  • tag keys: src (e.g. sr.ht…), authkeys, etc
  • wobsite, api, cli tool?

Command line tools

Busybox

Kyle's System Tools

DNS resolver

Like adsuck.

  • Trie libs?
  • Domain splitting?
  • I think that I can just intercept packets, check to see if it's a query for a banned host, and destroy that.

Service manager

This would be a part of the Lisp DCOS.

kyle's editor

Universal hex utility

Source

The hex-manip program needs to read and inter-convert hex files to and from standard formats such as I-HEX86, S-Rec, raw binary. Hereby, a major function is filling unused code areas with a defined value. Another heavily-used feature is the creation of, for example, a CRC or similar checksum placed at a fixed location in program code and used for verification of program-code-integrity at run-time (e.g. in the idle task).

When we make a HEX mask for, let's say, the beagle bone, we begin with a I-HEX86 extract with objdump or objcopy. We might use a hex-manip program to fill this raw HEX-dump to a given size such as 32kB with a defined fill pattern. Then we need to convert the filled I-HEX86 to raw binary and finally hang a skinny boot header composed of two 32-bit words (size of the image and memory location) at the beginning of the file (such that it boots the bare-metal app with the standard boot-loader). This file is called "MLO" for the case of beagle bone, but other systems have other needs for hex-manip.

It's not really hard to write a hex-manip program. Basically, one needs to specify an input language for buffer manipulation, address-shifting, calculating and placing checksums, etc. Finally, a hex-manip program needs to be worked into the build.

Knowledge management

Graphbook   deprecated

  • Graphbook was a cool project, but I think I put too much into making it a programmer's notebook.
  • A general tag-based notebook might be better.
  • What if you could specify relationships between tags?

Linkage

  • Tags

    There are different ideas for how tags should be applied:

    1. in Roam, a tag is treated like a page name in a wiki. The tag is important for a specific text. The best example I can think for a large knowledge store that does this is C2.
    2. in a lot of other places, a tag applies to a page. The tag page itself tends to just be a link to all the pages that have this tag.

    The first is harder to do, because you have to somehow keep track of where it is in the page.

exocortex

There's a page on this elsewhere.

Miscellaneous project ideas

Skill sharpening

Codecrafters

Codecrafters has you implement systems in your programming language of choice (as long as it's supported).