mdr: Terminal Markdown Reader
A terminal markdown reader built with Rust, ratatui, and crossterm. Renders markdown with syntax highlighting, word wrapping, and live file watching — all without leaving the terminal. Run mdr with no arguments to get a file browser that lists .md and .markdown files in the current directory. Select a file to open it in reader mode. Run mdr <file.md> to jump straight to reading. Features File browser — directories first, then markdown files, hidden files excluded. Navigate with arrow keys or j/k Markdown rendering — headings, bold, italic, code blocks with syntax highlighting, blockquotes, ordered/unordered lists, task lists, horizontal rules Word wrapping — proper continuation indentation for nested lists Live reload — file watcher detects changes and re-renders automatically Search — press / to search, n/N to jump between matches 6 themes — synthwave, monochrome, ocean, sunset, matrix, tokyo night moon — cycle with t or open the theme picker External editor — press e to open the file in $EDITOR Help modal — press ? for a keybinding reference Key bindings Key Action j / k / arrows Scroll up/down g / G Jump to top/bottom Ctrl-f / Ctrl-b Page scroll / Search n / N Next/previous match t Cycle theme e Open in $EDITOR ? Help Esc Back to browser q Quit Architecture Single-threaded event loop with a minimal UI — a single status bar shows the app name, current file or directory, and contextual hints. Input is polled via crossterm, and an AtomicBool flag set by the notify file watcher triggers reloads. The rendering pipeline parses the full markdown source into styled lines using pulldown-cmark on each draw, slices by scroll offset, and hands it to ratatui. Only redraws when state actually changes. ...
Anki Decks for Amateur Radio Exams
An automated pipeline that turns the official FCC amateur radio exam question pools into Anki flashcard decks. It scrapes the latest question pools from NCVEC, parses the .docx files, and generates .apkg decks directly using genanki — no running Anki instance needed. Covers all three license classes: Technician, General, and Extra — about 1,300 questions total, with all pool diagrams (circuit schematics, Smith charts, antenna patterns) embedded directly in the cards. ...
nudge: Apple Reminders from the Terminal
A terminal tool for Apple Reminders. Add, complete, search, and organize reminders without leaving the shell. Built with Rust for the CLI and TUI, with a Swift bridge binary that talks to EventKit natively. Running nudge with no arguments opens an interactive TUI. Reminders are listed with their priority and list name. Press a to add one inline, Enter to mark it done, / to search. CLI subcommands cover the same operations for scripting and shell aliases. ...
tome: Apple Notes from the Terminal
A terminal tool for Apple Notes. Quick capture, full-text search, and editing in your $EDITOR — without leaving the shell. Built with Rust, talking to Notes.app through AppleScript. Running tome with no arguments launches an interactive TUI. Notes are listed with their folder, navigable with vim keys or arrows. Press / to search, Enter to edit in your editor, d to delete. A set of CLI subcommands covers the same operations for scripting. ...
termwave: Terminal Audio Visualizer
A real-time audio visualizer that runs in the terminal. Built with Rust using cpal for audio capture and ratatui for rendering. A companion Swift binary handles system audio capture via ScreenCaptureKit, so you can visualize whatever’s playing on your Mac — Apple Music, Spotify, YouTube, anything. Four visualization modes: spectrum bars with logarithmic frequency binning, a waveform plot, a zero-crossing-triggered oscilloscope, and a stereo mode that mirrors left and right channels above and below a center line. Press m to cycle through them. ...
MuseBar: Apple Music in the Menu Bar
A companion to muse — this one lives in the menu bar instead of the terminal. MuseBar shows the currently playing track from Apple Music directly in the macOS menu bar: artist, title, and a tiny album art thumbnail. Click it to open a dropdown with full artwork, a seekable progress bar, and playback controls. Features Menu bar display — artist, title, and album art at a glance Album artwork — full size in the dropdown, thumbnail in the bar Seekable progress bar — click or drag to scrub Playback controls — previous, play/pause, next No Dock icon — runs entirely in the menu bar How it works Built with SwiftUI’s MenuBarExtra (macOS 13+). Track info and artwork come from AppleScript queries to Music.app, with distributed notifications providing real-time updates on track changes. Playback commands are also sent via AppleScript. ...
muse: A Terminal UI for Apple Music
A small terminal app for controlling Apple Music from the command line. Built in Swift with no dependencies — just raw ANSI escape codes and AppleScript talking to Music.app. The interface is a single unified screen: the now-playing panel sits at the top with track info, a progress bar, and playback controls, while a tabbed panel below lets you switch between your queue, library, search, lyrics, and themes without ever leaving the player view. ...
Julia Sets Explorer
The Julia set for a complex number $c$ is the boundary between points that escape to infinity and those that remain bounded under iteration of: $$z_{n+1} = z_n^2 + c$$Each value of $c$ produces a different fractal. Connected Julia sets correspond to points inside the Mandelbrot set; disconnected “dust” fractals come from points outside. Controls: Click the Mandelbrot set (left) to choose $c$. Drag to pan, scroll to zoom the Julia set. ...
Fun with Chaos Attractors
The Clifford attractor is a 2D strange attractor defined by the iterative map: $$ \begin{aligned} x_{n+1} &= \sin(a \cdot y_n) + c \cdot \cos(a \cdot x_n) \\ y_{n+1} &= \sin(b \cdot x_n) + d \cdot \cos(b \cdot y_n) \end{aligned} $$With parameters $a = 1.8$, $b = -1.9$, $c = 1.0$, $d = 1.5$, the system traces out intricate fractal structures. The image above was generated from 300 million iterations, rendered as a density histogram with logarithmic scaling to reveal the fine detail in regions where the trajectory lingers. ...
Replicating the Chrono Trigger Time Gate in GLSL
The time gates in Chrono Trigger have a distinctive swirling blue portal effect. This shader recreates that look using layered sine waves, procedural hash noise for texture, and a spiral distortion centered slightly off-axis. The color gradient shifts from deep blue at the edges through cyan to near-white at the peaks, with a soft vignette that fades the portal into darkness at the rim. ...