Jeffrey R. Fetzer

Posts

Musings on math, science, and other explorations.

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. ...

March 14, 2026

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. ...

March 14, 2026

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. ...

March 14, 2026

sonitus: 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. ...

March 14, 2026

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. ...

March 13, 2026

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. ...

March 12, 2026

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. ...

June 1, 2025

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. ...

May 30, 2025

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. ...

May 30, 2025