- A computer science student who likes a good type system.
- I maintain Mapv as an embeddable and hackable tool to learn and experiment with register machines in OCaml. To make tinkering even more fun, it comes equipped with built-in tracers and a visualizer built using raylib. It implements a rather complex generational heap and garbage collection strategy with a NIF (native implemented functions; thanks Erlang) interface to expose native OCaml functions and values to the VM.
- I am currently researching and building Miru. It is a strictly evaluated functional language that borrows much of its syntax from languages like Clojure, Carp et al. while implementing the semantics of languages like OCaml and Haskell with great premise on Algebraic Effects and Effect tracking. It was and still is heavily inspired by Shen and Koka.
- I built Knot, a pure λ-calculus reduction engine with optional type inference! I always wanted to experiment with β-reduction, and building a small reduction engine sounded like fun. While untyped λ-calculus is neat, I specifically wanted to implement the simply-typed subsystem (STLC). STLC isn't Turing complete because it enforces strong normalization; but it is a small proof assistant for rudimentary propositional logic via the Curry-Howard Isomorphism.
- I also like reproducible systems and almost all[0] of my projects can be
scaffolded using Nix.
- Check my bespoke bootstrapping framework .bootstrap if you want to get started with NixOS and NixOps in general.
- It implements the Dendritic pattern, packages a lot of software not in nixpkgs such as Helium, CLAP plugins like NeuralRack and Ratatouille that can load NeuralAmpModeler files and other WaveNET based formats, CUDA-enabled Blender and OBS-Studio among other things.
- I also maintain my artifacts cache registry @ debarchito.cachix.org which makes it easy to distribute packages built on GitHub Actions and/or SourceHut Builds.
- The repository also implements a simple templating engine creatively named
generate
since nixpkgs's default templating system leaves a lot to be desired
(parameter substitution is one of them). It can scaffold idiomatic projects
for Haskell (using haskell-flake),
OCaml (using opam-nix), Rust (using
crane for better cache utilization), and
Python (using uv2nix). For
example, get started with a Rust project using:
nix run sourcehut:~debarchito/.bootstrap#generate \ rust ./hello-world \ name="hello-world" description="Say hello to the world!" # You can build and/or run the demo application directly using Nix: nix build ./hello-world ./result/bin/hello-world # or: nix run ./hello-world # The development shells come pre-configured with direnv: cd hello-world && direnv allow
- If you own an Arturia MiniFuse 1 or MiniFuse 2, you can try mfctl to control these interfaces from your terminal. It's a partial replacement for the Windows/macOS-only MiniFuse Control Center on Linux. It also includes a kernel module for non-sudo use-cases.
- If you play Minecraft, you might be interested in minework to help you manage your mods, modpacks, etc. I didn't find a satisfying tool to manage it all from the terminal, so I did it myself. I'm still adding QoL things like interactive fields with special fallback support for headless/non-interactive environments like servers.
- Some of my old experiments include reinforced-shrine-adventure, which was an original story-based game turned training ground for an custom PPO agent to find the best ending.
- I also write prose and poetry, a collection of which can be found in my digital garden.
[0] Some old projects are yet to be Nix-ified.
Feel free to email me at debarchiton@proton.me if you want to talk about type systems, compilers, functional programming, free software, game emulation, FPGAs, digital sovereignty, space, archaeology, progressive music, or just about anything.
Of note, this GitHub profile is largely a discoverability asset. I also use it when I want to fork repositories on GitHub or contribute to projects. Other than that, I do most of my development on git.sr.ht/~debarchito. I do enjoy the mailing-list aspect of decentralized VCS :D.




