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 C89+ R5RS Scheme interpreter using Universal Service for garbage collection. It is meant as a demo and stress-test, and not for real programming. It will be a complete implementation of the R5RS core. (Currently the CPS transformer, written in C, is done.)
-
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.