ficd.sh/content/projects.md
2025-07-02 16:02:49 -04:00

6.3 KiB

title
Projects

Projects

I really enjoy programming, especially writing simple utilities to solve common problems. Here, I list project I've written on my own time. For my academic work, please see the research section.

Static Site Builder

Zona

  • Static site builder written in Python and optimized for lightweight blogs following minimalist design principles.
  • Support for templates, declarative metadata, and configuration files.
  • Interprets inline image "alt text" as Markdown, rendered as an image tag.
  • In active development, plans for many more features.
  • Used to build this website.

Libraries

Typst

  • typpres
    • Provides functions to make creating slideshows with polylux more convenient.
  • reflib
    • Provides functions to make typesetting label references more convenient.

Utilities

System Maintenance

  • AutoYADM
    • Shell utility to automate managing dot files with yadm.
    • Intelligently auto-tracks newly created children of tracked subdirectories.
    • Consists of two Bash scripts; very lightweight.
      • Fish port in the works.
    • I use this daily to keep my dotfiles in sync.

Email

  • Email Parser
    • Forked and maintains a Tree-sitter parser for mail files.
    • Extended formal grammar definitions, supporting additional syntax elements & fixing critical bugs.
    • Wrote highlight and text object queries implementing mail support for Helix; contributed the feature upstream.
    • Currently researching how to leverage the parser to contribute mail support to the Harper grammar checker.
  • Email Formatter
    • Wrote a lightweight email formatter in Python, intended to format outgoing plaintext emails.
    • Wraps paragraphs at specified column width.
    • Automatically reflows uneven paragraphs.
    • Preserves long words, quoted lines, indented lines, lists, code blocks, and signature blocks.
    • Custom heuristic for preserving two-line signoffs.

Desktop

Repository

  • Screen Recording Utility
  • Niri Window Status
    • Python server that integrates with Niri to provide a live indicator of windows open on active workspaces.
    • Designed for use with Waybar and similar software.
  • Niri Window Picker
    • Simple Python script that spawns a fuzzy picker allowing users to fuzzily select an open window to switch focus to.

Keyboard

  • Self-built wireless corne keyboard.
  • Colemak-DH (non-QWERTY, ergonomic layout).
  • Custom columnar split layout leveraging overloaded modifiers and layers to maximize efficiency.
  • Custom ANSI layout intended to make my ThinkPad internal keyboard as ergonomic as possible without conflicting with external keyboards.

Ashen

Ashen

  • Original color scheme designed by me.
  • Carefully tuned to fill a particular niche.
  • Opinionated, clean, muted, and dark.
  • Active user base, receives contributions.
  • Ported to a wide variety of software, including (but not limited to):
    • Helix (text editor).
    • Terminal emulators (Most popular emulators covered)
    • Firefox
    • CLI tools (eza, bat)
    • TUI tools (lazygit, yazi)

Plugins

Kakoune

  • kak-wrap-nav
    • Implementation of Vim's gj/gk (visual vertical navigation) for Kakoune.
    • Contains 1:1 implementation of Kakoune's visual wrapping algorithm in Go (needed to calculate offsets for visual navigation)
    • Work in progress.
  • kak-autospell
    • Automatically refreshes and clears spellchecker highlighting.
    • Provides convenience mappings for using built-in spellchecker.
  • kak-ashen
    • Official implementation of Ashen for Kakoune.
    • Features toggle-able mode-indicating dynamic cursor with optional EOL variants.
    • Additional tree-sitter support, including Helix capture groups.
    • kakoune-lsp support.
  • kak-title-bar
    • Asynchronously renders a bufferlist as the terminal's window title for tight integration with the window manager.
    • Indicates buffer modified states and active buffer.

Fish

  • jrnl.fish
    • Small utility for managing daily journal entries.
    • Template support.
  • smartcd.fish
    • Adds contextual smart behavior to the cd command.
  • Fisher (contribution)
    • Added support for sourcehut plugins and fixed a critical issue with unsafe tilde path expansion.
    • PR

Helix

Mandatory caveat: Helix does not have a plugin system! However, it does allow your to invoke shell commands, making it possible to implement some very hacky functionality.

  • hx-typ-zathura
    • Easily open a PDF preview of your current Typst file in Zathura.
  • justfile formatter
    • Workaround for formatting justfiles without any dependencies.

Neovim

  • Academic.nvim

    • Neovim plugin.
    • Automatically installs and configures an Academic English spelling dictionary.
    • Minimal performance overhead.
  • Ashen.nvim

    • Implementation of Ashen for Neovim.
    • Supports numerous plugin integrations.