The applications listed below are served from <.link_blank href="https://nixos.org/">NixOS machines hosted on <.link_blank href="https://www.digitalocean.com/">Digital Ocean. Configuration files for each of my machines can be found <.link_blank href="https://git.jrpotter.com/r/nixos-configuration">here. If interested in starting a similar hosting solution, consider getting a $200 credit using my <.link_blank href="https://m.do.co/c/c65b89434c1b">referral link.
Other notable projects I've worked on or am currently working on.
:docs
facet to convert LaTeX
files into PDFs and then list them in the generated navbar.
<.project
title="NixOS Configuration"
href="https://git.jrpotter.com/r/nixos-configuration"
date="10 Dec 2023"
>
The
<.link_blank href="https://nixos.org">nix
configuration files used to declaratively describe my local and remote
machines. The site you are on now is declared within this project!
<.project title="Bootstrap" href="https://git.jrpotter.com/r/bootstrap" date="17 Nov 2023">
A C-based CLI for initializing projects in a flexible but deterministic
way. Originally motivated to serve as a better alternative to
<.link_blank href="https://github.com/NixOS/templates">Nix flake templates,
bootstrap
allows you to provide different parameters to
custom initialization scripts akin to npm init
,
django-admin startproject
, etc.
<.project
title="Anki Synonyms"
href="https://git.jrpotter.com/r/anki-synonyms"
date="02 Jul 2022"
>
An
<.link_blank href="https://apps.ankiweb.net/">Anki
plugin for specifying synonyms within flashcard question and answer
prompts.
<.project title="Homesync" href="https://git.jrpotter.com/r/homesync" date="28 Dec 2021">
An experimental Rust-based project for automatically syncing files
across your desktop to a git repository. Allows upstream and downstream
syncing with a single command, without any need to copy files manually
to and from a git repository. Separately, a daemon can be spawned that
watches files for changes and pushes/pulls them as they happen.
<.project title="Postlude" href="https://git.jrpotter.com/r/postlude" date="29 Mar 2020">
An example of a custom-rolled
<.link_blank href="https://hackage.haskell.org/package/base-4.19.0.0/docs/Prelude.html">
Prelude
.
Serves as a fairly comprehensive list of imports I found relevant
across the various Haskell projects I worked on as well as a
demonstration on how forwarding imports with Haskell works.
<.project title="Vim Join" href="https://git.jrpotter.com/r/vim-join" date="25 Jul 2017">
A small Vim plugin that joins a number of lines together and then
breaks them again with respect to the textwidth
parameter.
This enables re-flowing a set of lines similar in manner to
fold
or fmt
.
<.project
title="Vim Highlight"
href="https://git.jrpotter.com/r/vim-highlight"
date="25 Jul 2017"
>
A small Vim plugin that maintains a custom registry for manipulating
highlights. This registry allows highlighting different keywords
without overriding previous searches. Includes a small snippet for
including the active highlight from within the statusline.
<.project title="Pong" href="https://git.jrpotter.com/r/pong" date="01 Oct 2015">
An implementation of the classic pong video game, written from scratch
on an Artix FPGA using System Verilog. This works on a custom ALU
intended to process an arbitrary MIPS program with modified memory
configuration: .text 0x0000
and .data 0x2000
.
A memory mapped IO scheme is used to draw to the monitor and interact
with the keyboard.
<.project title="Fifth" href="https://git.jrpotter.com/r/fifth" date="20 Jun 2015">
A library for parsing various rulesets for cellular automata machines
(CAMs). The parsed CAM is displayed using
<.link_blank href="https://matplotlib.org">matplotlib.
For instance, this library parses ruleset B3/S23
and then
produces a running visualization of Conway's Game of Life.
<.project title="Mini Java" href="https://git.jrpotter.com/r/mini-java" date="24 Mar 2015">
A Java implemention of a subset of Java. Generates code that targets
mJAM, an abstract machine included in the source that supports running
miniJava
. In particular, this implementation supports
various primitives, array types, and, to a certain degree, classes.
Long-form writing on topics that I found interesting.