Follows is a list of programs, software architectures, or problem statements that I want to develop and solve at some point in my career. I'll add repo links to items as I implement them.
- Lisp (impl1, impl2)
- Requirements include: standard library, closures
- novel Turing-complete language
- Requirements include: standard library, closures, compiler, macros
- module bundler
- Requirements include: parallel processing, plugin architecture
- package manager
- Requirements include: peer dependency resolution, mangling, compilation steps, lifecycle hooks, caching, workspaces
- language server (preferably for C)
- text editor (impl)
- Requirements include: syntax highlighting, diffing, read/write, search
- memory-mapped database (impl)
- compiler
- Requirements include: linker, compiler macros, IR
- contribute to a real compiler (could be the frontend, backend, doesn't matter). Thus far Kotlin looks pretty interesting albeit daunting
- browser-based implementation of multi-paxos (something crazy like state consensus between browser tabs)
- memchached / caching db implementation (impl1, impl2)
- an implementation of RAFT
- an implementation of Multi-Paxos (impl)
- reactivity library (impl1, impl2)
- test harness (I'll probably just contribute to vitest)
- frontend framework (I'm thinking something like Vue SFCs but strictly with JSX)
- an SSR frontend framework
- atomic css utility library (or contribute to unocss)
- general purpose diffing tool
- coroutines library
- build a version control system
- a frontend framework with C and WASM
- contribute to nodejs
- build a bespoke kernel-space process manager and use it
- build a userspace process manager (think
top
) - contribute to a user-space libc
- build a POSIX-compliant OS
- build a database with indexing, conflict-resolution, memory mapping, query language