Hosted

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.

<.project title="Hide and Seek" href="https://hideandseek.live" date="12 Apr 2024"> Realtime hide-and-seek application for the town of Fort Collins, built using <.link_blank href="https://www.phoenixframework.org/">Phoenix and <.link_blank href="https://react.dev/">React. Group up with friends, designate a hider, and allow the rest of the group to find the hider in a city-wide search. Use various clues to narrow down the search space at the cost of potentially giving the hider means of thwarting the search. <.project title="Notebook" href="https://notebook.jrpotter.com" date="30 Jan 2024"> A static site generated with <.link_blank href="https://quartz.jzhao.xyz/">Quartz. Contains a collection of my transcribed notes, primarily Markdown managed using <.link_blank href="https://obsidian.md/">Obsidian. Hidden within are a collection of <.link_blank href="https://apps.ankiweb.net/">Anki flashcards synced using <.link_blank href="https://github.com/ObsidianToAnki/Obsidian_to_Anki"> Obsidian_to_Anki . <.project title="Forgejo" href="https://git.jrpotter.com" date="23 Dec 2023"> A self-hosted <.link_blank href="https://forgejo.org/">Forgejo instance. For the most part, my <.link_blank href="https://github.com">GitHub repositories are a mirror of those found here. There do exist a few repos though that live exclusively on either site. <.project title="BoardWise" href="https://boardwise.gg" date="26 Nov 2023"> A <.link_blank href="https://www.phoenixframework.org/">Phoenix- and <.link_blank href="https://react.dev/">React-based project that provides an interface for finding chess coaches. This serves as an alternative to those found on <.link_blank href="https://lichess.org/coach">Lichess and <.link_blank href="https://www.chess.com/coaches">Chess.com. Based on the <.link_blank href="https://tailwindui.com/templates/studio">Tailwind Studio theme. <.project title="Bookshelf" href="https://bookshelf.jrpotter.com" date="05 Feb 2023"> A collection of books I am actively studying. Usually mathematics or computer-science based, I aim to prove concepts as I encounter them using the <.link_blank href="https://lean-lang.org/">Lean interactive theorem prover. All proofs are also available in <.link_blank href="https://www.latex-project.org/">LaTeX. <.project title="Looped" href="" date="04 Apr 2021"> VP of engineering at Looped, the "Ultimate Virtual Venue". Featured on <.link_blank href="https://www.forbes.com/sites/ericfuller/2021/01/06/loopedthe-app-helping-fans-mingle-and-meet-artists-personally-during-live-streamed-events"> Forbes and <.link_blank href="https://techcrunch.com/2021/03/02/looped-raises-7-7m-to-expand-its-interactive-live-event-platform"> TechCrunch . Led development on the Kotlin-based <.link_blank href="https://play.google.com/store/apps/details?id=com.vipvr.android"> Android app (50K+ downloads, 4.5 star review), the Swift-based iOS app (100K+ downloads, 4.8 star review), the Vue-based web app, and the Django-based backend.

Projects

Other notable projects I've worked on or am currently working on.

<.project title="Bookshelf Doc Generator" href="https://git.jrpotter.com/r/bookshelf-doc" date="14 Dec 2023" > A fork of <.link_blank href="https://github.com/leanprover/doc-gen4">doc-gen4 tightly coupled to my <.link_blank href="https://git.jrpotter.com/r/bookshelf">bookshelf project. This augments the :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.

Blog

Long-form writing on topics that I found interesting.

<.blog title="Effect Systems" href={~p"/blog/effect-systems"} date="20 Mar 2022"> As I’ve begun exploring the world of so-called algebraic effect systems, I’ve become increasingly frustrated in the level of documentation around them. Learning to use them (and moreso understanding how they work) requires diving into library internals, watching various videos, and hoping to grok why certain effects aren’t being interpreted the way you might have hoped. My goal in this post is to address this issue, at least to some degree, in a focused, pedagogical fashion. <.blog title="Tagless Final Parsing" href={~p"/blog/tagless-final-parsing"} date="25 Dec 2021" > In his <.link_blank href="/files/tagless-final-parsing/kiselyov-interpreters.pdf"> introductory text , Oleg Kiselyov discusses the tagless final strategy for implementing DSLs. The approach permits leveraging the strong typing provided by some host language in a performant way. This post combines key thoughts from a selection of papers and code written on the topic. We conclude with an implementation of an interpreter for a toy language that runs quickly, remains strongly-typed, and can be extended without modification.