Future(?) Project List

Posted: 2023-02-04
Last Modified: 2023-03-21
Word Count: 1404
Tags: c-programing lua java programming python ruby vaporware

Mostly for my own sake, here’s a list of programming projects I’d like to do. I lack the time, energy, and skills to undertake most of them. Enjoy.

Pri Name I.L. Description Status
A++ codepoint java library to read and write Unicode code points preliminary version on GitHub1
A+ JSONPP java JSON Pull Parser preliminary version on GitHub1
A ELTNPP java ELTN Pull Parser in Java implementation barely started
A FM Cache java Simple in-memory caches partly coded, doesn’t work yet
A Tiny Projects various assorted small projects to learn various languages only three (of 80+ possible) done
A- SLAN-J java Scheme-like alternative to JSON, YAML, etc. spec written and amended, implementation barely started
B+ ELTN-Lua lua ELTN Parser in pure Lua mostly2 vapor
B+ Estimation Framework ? estimate time a calculation takes for more accurate progress bars still exploring3
B CConv c portable unicode conversion library vaporware
B CPort c portable library for I/O in embedded and non-standard C vaporware
B CSymbol c portable library for interned C-strings vaporware
B CTable c portable hashtable implementation vaporware
B ELTNPP-C c, … ELTN Pull Parser with C, Ruby, Python, etc. bindings vapor
B JSONPP-C c, … JSON Pull Parser with C, Ruby, Python, etc. bindings vapor
B Statiki go? lua? py? rb? hugo for wikis a few experiments, mostly vapor
B- ExpObj c objects in C mostly vapor
B- M-String c memory-managed Unicode strings (and other things?) mostly vapor
B- SLAN-C c Scheme-like file format vapor
C Bookmark DB ? database of ALLLLL my bookmarks vapor
C Dependency Tracer java, js/py/rb trace code dependencies and unused classes in Java and JSPs some half-baked programs, but mostly vapor4
C E-Book DB ? database of ALLLL my pdfs and epubs, including if I’ve read them (yet?) vapor
C JSON-RPC Server c library for a non-blocking HTTP(S)-based JSON-RPC server frontend vapor
C luaenv lua rbenv for Lua vapor
C Lua CSP lua, c Communicating Sequential Processes in Lua vapor
C TIDL java, c language and parser for generating stub code in a hybrid function-oriented/object-oriented multiprocess component model vapor
C TPP ? Template Pre-Parser, for non-C source/library version incompatibilities vapor
C TypeLib (formerly M-Lib) c extending M-Strings to useful datatypes, data structures, and a hybrid XPCOM/CORBA component model vapor
D Agile Project Tracker ? index cards and whiteboards automated vapor, plus there’s at least a dozen
D Game Table ? play tabletop games on your browser! vapor, plus there’s at least half a dozen now
D Language Construction Tools ? write your own Klingon! vapor, plus https://www.vulgarlang.com does it better.5
D Lending Library ? database and app for friends who borrow books vapor
D Teufel c, teufel The best parts of Eiffel, Java, SML, and Go total vapor
D TTRPG Character Generator html, js chargen for my current favorite table top role-playing game6 very vapor
E Inventory and Invoicing ? toy enterprise app for educational purposes vapor
E Messaging Framework ? exorcizing ghosts from my message-oriented-middleware startup past7 very, very vapor
E Space Game ? live your Star Trek8 and Last Starfighter9 dreams! oh so vapor
E Text Adventure Engine ? write your own Infocom game! so very vapor
E Trade and Market Data ? exorcizing ghosts from my trading desk support past very, very vapor

Yes, many of these come from an old list I found. I’ll add more when I come up with new ideas or act on these old ones.

Priorities

Priorities get a letter grade, as above. Rough definitions:

Priority Meaning
A+++ Occupies my every waking moment.
A++ Working on it right now.
A+ Will work on it ASAP.
A Probably do it next.
A- Lower priority, but in the queue.
B+ Right after some other things are done.
B Sooner rather than later.
B- Real Soon Now.
C+ Might be fun, if I find the time.
C Might be educational or useful, if I find the time.
D Maybe if I’m really motivated at some point.
E Only when I have infinite time.

Dependencies

Some things have to be done before other things. Here are the known dependencies.

Java Projects

Project Project Dependencies “External” Dependencies
codepoint JDK 8+ config files in jars, Java reflection, java.nio.Buffer
ELTNPP codepoint10
JSONPP codepoint10 maybe Jakarta’s JSONP
SLAN-J JDK 11+11 read/write locks12 (java.util.concurrency)
TIDL-J JDK 11+, TypeLib or ExpObj ANTLR, CongoCC, etc.

C Projects

Beyond specific libraries, these projects need a collection of techniques to adapt to various compilers, operating systems, and environments. My goal is to be as portable as Lua which doesn’t even need autoconf. (I may need to write my own “nanoconf” to adapt to 16, 32, or 64-bit pointers since I’ll likely end up implementing opaque and foolproof object handles with pointer swizzling.)

Ord. Project Project Dependencies External Dependencies
1 CTable none
2 CConv maybe CTable iconv or equivalents
3 CSymbol CTable pthreads (mutexes) or equivalents
4 CPort CConv, maybe CTable, maybe CSymbol optionally <stdio.h>, http, ftp, etc.
5 M-String CConv, CSymbol, CTable, memory manager13
5 E-String14 CConv, CSymbol, CTable
6 JSONPP-C CPort, maybe M-String or E-String
6 ELTNPP-C CPort, maybe M-String or E-String
6 SLAN-C CPort, maybe M-String or E-String
7 TypeLib M-String
7 ExpObj E-String, CSymbol, CTable
8 TIDL TypeLib or ExpObj
9 JSON-RPC JSONPP-C or equivalent http server libs, non-blocking I/O (select, …)
10 Lua CSP maybe JSON-RPC thread libraries (pthreads, …)

  1. Early progress report here. Also now on GitHub↩︎ ↩︎

  2. Early progress report here ↩︎

  3. Using duplicate-files.rb as a test case, I need to make tools to develop and implement more accurate estimation functions. ↩︎

  4. Mike Clark’s JDepend also does this, although I just wanted to trace the strands of spaghetti code I was dealing with at the time. (And at the Java class, not package, level.) The JSP part was tough considering we were using a proprietary app server and so pre-compiling JSPs for my little toy wouldn’t be easy. (End old man mode.) ↩︎

  5. About the only thing I’d add are more detail about syntax and sentence structure and a way to translate sentences into your new conlang … and they may have that by now. ↩︎

  6. Variously Cypher, D100 (BRP / OpenQuest / Mythras) Everywhen (based on BoL), Traveller / Cepheus, Year Zero System (Mutant Year Zero / Coriolis / Vaesen / etc.) … ↩︎

  7. What I intended to be the URL/HTTPS of asynchronous messaging … in the days before before AJAX, XML-RPC, JSON, node.js, socket.io, etc. Even if I did come up with something, didn’t XKCD have a comic about the standard to unify 14 standards becoming a 15th standard? ↩︎

  8. Inspired by a really old PC game where you played a ship exploring sectors and defeating Klangons or whatever they called them so as not get sued. I’m sure you could do it in JavaScript now. ↩︎

  9. Based on a FPS for NeXTSTEP (yes I’m old) where you shot down enemy fighters with a “space turkey” sound alerting you a new enemy had arrived. ↩︎

  10. The CodePoint class acts as a facade for all the work I need to do in the background, so hopefully JSONPP, ELTONPP, and any other projects can use the (working) API as-is while Codepoint work finishes. ↩︎ ↩︎

  11. SLAN implementations have as few external dependencies as possible: all documents are UTF-8, IO uses ubiquitous platform features on Java. ↩︎

  12. I intended SLAN as persistent storage of data and configuration. Apart from the parser and emitter, SLAN currently includes an API to coordinate access to SLAN files as a poor man’s version of ACID. I’ve maybe got ACI, minus transactions between different SLAN “resources”. (Even then, a crash while writing SLAN files currently can corrupt the data.) Clients don’t have to worry with I/O (much), only with the parser and emitter APIs and the URI(s) of their SLAN document(s). ↩︎

  13. The point is to have memory-managed strings (and other things) without using Boehm-Demers-Weiser conservative collection . I’m planning a combination of reference counting, precise mark-and-sweep, and copying memory chunks protected from the usual C shenanigans. (That’s why I’m starting with strings: no internal references, but that just makes the interface between “managed” and “unmanaged” memory harder to design, implement, and explain to prospective users.) If/when I get to “other things” I’ll add a reimplementation of tri-color marking and implement GC as a co-routine to application activity, drawing just a little inspiration from Apple’s Objective-C retain / release / autorelease pool paradigm. (E.g. temp objects get held in “Scopes”; when the Scope ends, the abandoned objects get collected..) ↩︎

  14. A purely reference-counted string, less ambitious than M-String↩︎