portfolio/lib/portfolio_web/live/home_live.html.heex

244 lines
11 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<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 Ive begun exploring the world of so-called <strong>algebraic effect systems</strong>,
Ive 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 arent 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>