Big Projects
-
Upsilon is a 100% FOSS platform (including the build system) for controlling equipment on Digilent Arty A7 FPGAs using Linux. Upsilon runs mainline Linux on a RISC-V softcore, and has built-in support for adding ADCs, DACs, and PicoRV32 softcores by modifying a python build script. It automatically generates interface files for both C and Micropython to interact with gateware modules attached to the main softcore. It also has a interface for fine-grained manual control of hardware resources by allocating them to independently running modules.
Upsilon was originally developed when I was an undergraduate working in Guangxin Ni’s lab at the National High Magnetic Field Laboratory. A more up-to-date version can be found here under the “picorv32” branch.
-
Universal Service is a work-in-progress C library implementing different garbage collectors with a common interface.
-
Universal Service LISP is a work-in-progress R7RS bytecode compiler written in R3RS. It is designed to compile to GLLV, a basic bytecode interpreter with garbage collection by Universal Service. Not designed for “real world” use, it can be used for as a bootstrapping tool and as a very portable implementation of Scheme.
-
Periodic table searcher in OCaml, using a SQL database. Supports fuzzy search.
-
Hyugens principle simulation in Javascript for physics education.
-
Windows Local Backup was an attempt at making a compressing hashing backup program for old Windows systems (particularly, Windows XP). The project was abandoned because Fossil was better suited.
Libraries
C
- Creole is an extremely simple bytecode format and bytecode interpreter. Instructions are encoded in a variant of UTF-8 (the encoding is self-synchronizing). The macro assembler is a Python library. I wrote a blog post about using UTF-8 to encode non-Unicode codepoints.
- Modified libraw1394 where address requests are handled by function handlers instead of being stored in buffers. This allows for requests to be handled by dynamic methods such as network resources.
- Spyderta is a compatability library for Sederta FireWire cards. It is designed to emulate the DLL interface and send data over a local IPv4 connection to a Linux computer with a FireWire card. The code was never finished.
- AATree implementation in a single header file. C89+, imperative, freestanding.
Verilog
The following libraries have been verified to work on an Arty A7-100T.
Misc
- Monadic SQLite interface in OCaml.
Documents
- Reference manual pages for the SI unit system, periodic table of the elements, and CODATA constants.
- I am translating the Aramaic of the Book of Daniel for Wikisource.