244 lines
11 KiB
Plaintext
244 lines
11 KiB
Plaintext
<div class="flex flex-col gap-12">
|
||
<div>
|
||
<h1>Hosted</h1>
|
||
<p class="pt-4 pb-8">
|
||
The applications listed below are served from
|
||
<.link_blank href="https://nixos.org/">NixOS</.link_blank>
|
||
machines hosted on
|
||
<.link_blank href="https://www.digitalocean.com/">Digital Ocean</.link_blank>.
|
||
Configuration files for each of my machines can be found
|
||
<.link_blank href="https://git.jrpotter.com/r/nixos-configuration">here</.link_blank>.
|
||
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</.link_blank>.
|
||
</p>
|
||
|
||
<div class="pl-4 grid grid-cols-1 lg:grid-cols-2 gap-8">
|
||
<.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</.link_blank>
|
||
and
|
||
<.link_blank href="https://react.dev/">React</.link_blank>.
|
||
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>
|
||
|
||
<.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</.link_blank>.
|
||
Contains a collection of my transcribed notes, primarily Markdown
|
||
managed using
|
||
<.link_blank href="https://obsidian.md/">Obsidian</.link_blank>.
|
||
Hidden within are a collection of
|
||
<.link_blank href="https://apps.ankiweb.net/">Anki</.link_blank>
|
||
flashcards synced using
|
||
<.link_blank href="https://github.com/ObsidianToAnki/Obsidian_to_Anki">
|
||
Obsidian_to_Anki
|
||
</.link_blank>.
|
||
</.project>
|
||
|
||
<.project title="Forgejo" href="https://git.jrpotter.com" date="23 Dec 2023">
|
||
A self-hosted
|
||
<.link_blank href="https://forgejo.org/">Forgejo</.link_blank>
|
||
instance. For the most part, my
|
||
<.link_blank href="https://github.com">GitHub</.link_blank>
|
||
repositories are a mirror of those found here. There do exist a few
|
||
repos though that live exclusively on either site.
|
||
</.project>
|
||
|
||
<.project title="BoardWise" href="https://boardwise.gg" date="26 Nov 2023">
|
||
A
|
||
<.link_blank href="https://www.phoenixframework.org/">Phoenix</.link_blank>- and
|
||
<.link_blank href="https://react.dev/">React</.link_blank>-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</.link_blank>
|
||
and
|
||
<.link_blank href="https://www.chess.com/coaches">Chess.com</.link_blank>.
|
||
Based on the
|
||
<.link_blank href="https://tailwindui.com/templates/studio">Tailwind Studio</.link_blank>
|
||
theme.
|
||
</.project>
|
||
|
||
<.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</.link_blank>
|
||
interactive theorem prover. All proofs are also available in
|
||
<.link_blank href="https://www.latex-project.org/">LaTeX</.link_blank>.
|
||
</.project>
|
||
|
||
<.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
|
||
</.link_blank>
|
||
and
|
||
<.link_blank href="https://techcrunch.com/2021/03/02/looped-raises-7-7m-to-expand-its-interactive-live-event-platform">
|
||
TechCrunch
|
||
</.link_blank>.
|
||
Led development on the Kotlin-based
|
||
<.link_blank href="https://play.google.com/store/apps/details?id=com.vipvr.android">
|
||
Android app
|
||
</.link_blank>
|
||
(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.
|
||
</.project>
|
||
</div>
|
||
</div>
|
||
|
||
<div>
|
||
<h1>Projects</h1>
|
||
<p class="pt-4 pb-8">
|
||
Other notable projects I've worked on or am currently working on.
|
||
</p>
|
||
<div class="pl-4 grid grid-cols-1 lg:grid-cols-2 gap-8">
|
||
<.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</.link_blank>
|
||
tightly coupled to my
|
||
<.link_blank href="https://git.jrpotter.com/r/bookshelf">bookshelf</.link_blank>
|
||
project. This augments the <code>:docs</code> facet to convert LaTeX
|
||
files into PDFs and then list them in the generated navbar.
|
||
</.project>
|
||
|
||
<.project
|
||
title="NixOS Configuration"
|
||
href="https://git.jrpotter.com/r/nixos-configuration"
|
||
date="10 Dec 2023"
|
||
>
|
||
The
|
||
<.link_blank href="https://nixos.org">nix</.link_blank>
|
||
configuration files used to declaratively describe my local and remote
|
||
machines. The site you are on now is declared within this project!
|
||
</.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</.link_blank>,
|
||
<code>bootstrap</code> allows you to provide different parameters to
|
||
custom initialization scripts akin to <code>npm init</code>,
|
||
<code>django-admin startproject</code>, etc.
|
||
</.project>
|
||
|
||
<.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</.link_blank>
|
||
plugin for specifying synonyms within flashcard question and answer
|
||
prompts.
|
||
</.project>
|
||
|
||
<.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>
|
||
|
||
<.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
|
||
</.link_blank>.
|
||
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>
|
||
|
||
<.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 <code>textwidth</code> parameter.
|
||
This enables re-flowing a set of lines similar in manner to
|
||
<code>fold</code> or <code>fmt</code>.
|
||
</.project>
|
||
|
||
<.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>
|
||
|
||
<.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: <code>.text 0x0000</code> and <code>.data 0x2000</code>.
|
||
A memory mapped IO scheme is used to draw to the monitor and interact
|
||
with the keyboard.
|
||
</.project>
|
||
|
||
<.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</.link_blank>.
|
||
For instance, this library parses ruleset <code>B3/S23</code> and then
|
||
produces a running visualization of Conway's Game of Life.
|
||
</.project>
|
||
|
||
<.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
|
||
<code>miniJava</code>. In particular, this implementation supports
|
||
various primitives, array types, and, to a certain degree, classes.
|
||
</.project>
|
||
</div>
|
||
</div>
|
||
|
||
<div>
|
||
<h1>Blog</h1>
|
||
<p class="pt-4 pb-8">
|
||
Long-form writing on topics that I found interesting.
|
||
</p>
|
||
|
||
<div class="pl-4 grid grid-cols-1 gap-8">
|
||
<.blog title="Effect Systems" href={~p"/blog/effect-systems"} date="20 Mar 2022">
|
||
As I’ve begun exploring the world of so-called <strong>algebraic effect systems</strong>,
|
||
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>
|
||
|
||
<.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
|
||
</.link_blank>,
|
||
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.
|
||
</.blog>
|
||
</div>
|
||
</div>
|
||
</div>
|