Projects

I build tools that sit at the intersection of engineering and design—where technical depth meets human intuition. My projects explore how we can make complex systems more approachable, whether that's turning high-dimensional data into navigable visual spaces, designing interfaces that respond to natural human gestures, or creating developer tools that prioritize delight alongside functionality. Each experiment represents a belief that technology should amplify human creativity, not constrain it.

Featured Work

All Projects

MorningRadio

Designed to be a healthy "first screen" in the morning. News summaries, updates, and enough information about the latest events that you don't feel the need to endlessly doomscroll.

The goal was to repurpose the tik-tok style endless vertical scroll but instead fill it with interesting and useful websites, tools, and news articles (populated through my Pinboard bookmarks)

I even experimented (unsuccessfully) with creating a home screen widget.

https://res.cloudinary.com/ejf/image/upload/v1749668160/Screenshot_2025-06-11_at_2.55.49_PM.png

SwiftiOSAudio StreamingMobile UX

Smallbot MCP

Smallweb is a really unique tool to create a filesystem based system for rapidly-deployed deno apps, and it pairs really well with a robot companion.

Nowadays when I have an idea for a website and I just want it to exist, without spending three hours setting up a build pipeline configuring DNS. Smallbot is an incredible tool to defeat that particular form of procrastination—a robot that takes "make me a site about northeastern trees" and actually builds the thing.

I made a video with the creator of Smallweb about how easy it is to get setup, and I love how much the project embodies indieweb philosophies

This is a tool built on the MCP (Model Context Protocol) so it can talk to Claude and other AI assistants and give them the tools and documentation to make little Smallweb sites easily, on-the-fly.

MCPAIWeb GenerationNode.js

Cloudinary Backup Tool

I needed to backup thousands of photos from Cloudinary, and couldn't find an easy standalone tool to do so. So I built a little desktop app with Tauri. It handles batch downloads without eating all your RAM (vs an Electron app) and lets you resume if something goes wrong.

TauriRustTypeScriptVite

CLI Tools Collection

I've always believed that if you're going to spend half your life in a terminal, it might as well feel like a cyberpunk movie. These tools explore how joy-drivem devex design can transform the routine into something that makes even doing your chores fun.

Each tool follows the Unix philosophy of doing one thing well, but with enough personality to make you smile when you run them.

They represent my approach to design: functionality first, but never underestimating the power of delight.

Core Development Tools

  • git-status-dash: Multi-repo git status dashboard with ASCII visualization
  • directory-sync-tool: Visual directory comparison and syncing interface
  • cli-delta-dojo: Interactive JSON comparison tool for code review
  • cli-ai-chat: IRC-style terminal interface for LLM conversations
  • scrapbook-cli: Command-line interface for exploring personal knowledge graphs
  • showtouch: Large-scale ASCII keystroke visualizer for presentations
  • ascii_webcam: Real-time webcam-to-ASCII converter
  • The Impact of My LLM-Powered MOTD - Building custom daily CLI tools around existing routines, and getting little poetic directions from a robot inside my computer every time I start a new shell
Node.jsCLIASCII ArtGitAI

Creative Interfaces & Digital Art

These are my attempts to make computers that respond to the way humans actually move and gesture—exploring the design space between human intuition and machine capability. Each project pushes beyond traditional HCI constraints to find new interaction models. Some of these work better than others, but they all represent steps toward interfaces that feel more like extensions of thought than barriers to it.

  1. hand-midi-controller: Professional hand tracking MIDI controller with TouchDesigner integration. Converts hand movements to MIDI with detailed performance timing breakdowns and memory analysis for creative interface exploration.
  2. handtrack-websockets: Real-time gesture streaming pushing the boundaries of browser-based interaction.
  3. flipper-generative-art: Real-time generative art and animated patterns for Flipper Zero with 10 gradient types, Floyd-Steinberg dithering, and smooth 30 FPS animations. Finding art within the constraints of 64KB RAM.
  4. ps5-tmux is a little tool to make it easier to vibe-code; just move between panes with your PS5 controller and accept changes with the X button, or hit the middle button to enter dictation mode.
Computer VisionMIDIWebGLHand TrackingGenerative ArtInteractive Media

Data Visualization & Analysis Suite

After years of making data visualizations for major newsrooms and clients, I kept running into the same problem: how do you make sense of information that exists in too many dimensions for humans to naturally understand? These tools are my attempt to build bridges between the abstract mathematical spaces where modern AI lives and the visual, spatial thinking that humans excel at.

What started as a need to understand my own research archive evolved into a suite of tools for mapping everything from film aesthetics to code relationships. Each project explores the intersection of machine learning, interface design, and human cognition—taking complex algorithms and making them visually intuitive and actionable.

Project List

  1. criterion-embedding-viz: Vector embeddings for Criterion films enabling searches like "films about existentialism" for cinephiles who want deep thematic connections.

  2. code-network-gen: Generate a graph of nodes/edges from your javascript code. Visualizes codebases as interconnected networks treating software architecture as explorable graphs.

  3. connectology: Network visualization tool with an 11-page README for those who think in connections and need to see how everything relates to everything else.

  4. latent-scope: A scientific instrument for investigating latent spaces. Democratizes advanced ML visualization with extensive documentation making complex embeddings accessible to non-experts.

  5. obsidian-analysis: Generate semantic embeddings for your Obsidian vault using LM Studio and Nomic embeddings. Search your notes using natural language and explore with interactive UMAP visualizations.

Data VisualizationMachine LearningJavaScriptPythonUMAPEmbeddings

Developer Tools & Deployment

I've deployed way too many projects to way too many different platforms, and somewhere along the way I realized that most deployment tools are optimized for companies with dedicated DevOps teams, not for people who just want to push code and have it run somewhere. Same with development tools—most of them assume you have infinite time to configure them.

These are the tools I built out of frustration with the status quo. Each represents a design philosophy: reduce cognitive overhead, eliminate unnecessary complexity, and optimize for the 80% use case.

  1. dockrune: Self-hosted deployment daemon: push-to-deploy from GitHub to Docker VPS.

  2. room302-template: Nuxt template with personality in the name bringing character even to boilerplate code.

  3. smallweb-starter: Lightweight application starter rejecting bloated modern web complexity for focused simplicity.

DockerDeploymentGitHubDevOpsNuxtZMKKeyboard Firmware

Photography & Visual Creation

I love being able to reference the technical details when editing photography—aperture, shutter speed, ISO, all the little choices that go into making a photograph. But most photo prints completely ignore this data, treating it like metadata to be hidden away in EXIF tags that nobody ever sees. So I made a little app to add the EXIF data to the margins of prints you might get from CVS, Walgreens, or Wal-Mart (don't use them for photo prints, I learned the hard way.)

exif-printer: Creates printable photos with camera settings displayed in the borders - a photographer's tool that treats metadata as part of the art.

PhotographyEXIFPrint DesignWeb DesignCamera Metadata

🦊 EJ's Code Directory

Auto-generated on 8/18/2025

🚀 Active Projects

towntuner

A dedicated podcast player for all 360 episodes of Harmontown, designed specifically for nightly sleep listening with gamification elements. Features a prestige system, brutalist monochrome design, an... Last updated: 8/16/2025

website2

A personal website and blog built with Nuxt 3, Vue 3, and D3.js. Content is managed through Obsidian and processed through a custom pipeline for seamless publishing. Think of it as a digital garden, b... Last updated: 8/16/2025

glassbox

What's Working: Last updated: 8/16/2025

ps5-tmux

or: how i learned to stop worrying and love the gamepad Last updated: 8/13/2025

coachartie2

🚀 Production-grade AI system with embedded MCP tools, free model fallbacks, and bulletproof Docker architecture Last updated: 8/13/2025

ejfox-news

Look at the Nuxt documentation to learn more. Last updated: 8/12/2025

criterion-embedding-viz

This project is designed to create vector embeddings for Criterion movie titles and descriptions using the Nomic Embedding API. The embeddings can be used for advanced data analysis, clustering, and v... Last updated: 8/11/2025

rescuetime-scrape

rescuetime-scrape/ ├── analysis/ # 🔬 All analysis scripts ├── data/ # 📊 Raw RescueTime data ├── web/ # 🌐 Interactive dashboard ├── visualizations/ # 📈 Generated charts & images ├── docs/ # 📚 Docu... Last updated: 8/11/2025

discord-arena-bridge

DISCORD ⟷ ARE.NA BRIDGE (v0.1.0-bidirectional) =============================================== A bidirectional bridge for your digital garden. Est. 2024 | Made with ☕ and 🎷 Last updated: 8/10/2025

spacepunk-logi

A server-authoritative space trucking game where you manage the corporate nightmare of interstellar logistics through deliberately terrible enterprise software. Last updated: 8/8/2025

scrap-enlightener

Transform your Pinboard bookmarks into a knowledge graph with AI-powered enrichment, semantic search, and automatic tagging. Last updated: 8/8/2025

dockrune

self-hosted deployment daemon. receives github webhooks, deploys your stuff. Last updated: 8/7/2025

mission-control

Welcome to Mission Control – your cyberpunk-themed dashboard for visualizing Netlify deploys, GitHub activity, and project milestones in the style of an '80s digital dreamscape. Dive into the neon-lit... Last updated: 8/5/2025

electology

README not found Last updated: 8/2/2025

zmk-config2

ZMK firmware configuration for custom keyboard builds. Last updated: 8/2/2025

smallbot-mcp

MCP server that generates small websites from natural language prompts using LLMs. Last updated: 8/2/2025

docgrind

A gamified reading experience for MDN JavaScript documentation with progress tracking, exercises, and streak management. Last updated: 8/2/2025

obsidian-analysis

Generate semantic embeddings for your Obsidian vault using LM Studio and Nomic embeddings. Search your notes using natural language! Last updated: 8/2/2025

connectology2

Connectology is a powerful network visualization and management application built with Nuxt.js. It allows users to create, manipulate, and analyze complex networks of interconnected nodes. Last updated: 8/1/2025

vzcode

VZCode offers a multiplayer code editing environment that caters to a real-time collaborative development experience. It's the code editor component of VizHub, and can also be used independently from... Last updated: 8/1/2025

glasses-hud

Simple prototyping tool for AR glasses data visualizations. Built with Nuxt 3 + Vue. Last updated: 8/1/2025

gear

A comprehensive gear tracking and management system with both web and terminal interfaces. Last updated: 7/31/2025

flipper-space-calculators

A collection of minimalist space and physics calculators for the Flipper Zero. No games, no gimmicks - just the essential calculations for when you need them most. Last updated: 7/30/2025

retroscope

No description available Last updated: 7/27/2025

photos

This README document describes the development of a custom media organizing and publishing application using bash scripts, Apple Automator, and Cloudinary on a Nuxt.js framework. Last updated: 7/27/2025

cloudinary-backup

A desktop application to backup all your photos from Cloudinary with complete metadata preservation and photo management features. Last updated: 7/27/2025

hand-midi-controller

A comprehensive suite of real-time motion detection MIDI controllers using MediaPipe and OpenCV. Transform hand movements, video motion, and sequential chord progressions into MIDI control signals for... Last updated: 7/26/2025

code-network-gen

parses js/vue codebases and outputs function call networks as csv or gexf files. useful for understanding code structure, dependencies, and architectural patterns. Last updated: 7/24/2025

electology_ingest

A data pipeline that transforms election data into a structured, queryable database in Postgres/Supabase. Last updated: 7/24/2025

exif-printer-simple

A minimal desktop application for creating printable photos with EXIF camera data displayed in clean borders. Last updated: 7/24/2025

weddings

Live Site: weddings.ejfox.tools Last updated: 7/24/2025

exif-printer-website

Beautiful, minimal marketing website for the EXIF Photo Printer app. Last updated: 7/24/2025

anime-beta

No description available Last updated: 7/8/2025

llm-honeypot

A defensive security honeypot that only allows robots - the inverse of "prove you are human". Last updated: 7/6/2025

flipper-generative-art

A beautiful, lightweight application that generates mesmerizing animated patterns in real-time using advanced dithering algorithms optimized for the Flipper Zero's 128x64 monochrome display. Last updated: 6/27/2025

MorningRadio

README not found Last updated: 6/23/2025

MorningRadio_BACKUP_20250623_103149

README not found Last updated: 6/14/2025

hexagram_news

A modern news aggregation platform built with Nuxt 3, featuring both traditional newspaper-style layout and a data-dense terminal aesthetic view. Last updated: 6/13/2025

webhook-desktop-color

/\ \ /\ /\ /\ \ /\ \ /\ \ /\ \ /\ \ /\ / \ \ \ /\ \ \ \ \ \L\ \ \ \L\ \ \ \ \ \//\ \ //\ \ \ /| \ \ \ \ \ \ \ \ \ \ <\ \ \ \ \ \ \ \ \ \ \ `\ \ \ / \ \ \ /\ \ \ \L\ \ \ \ \ \ \ \ \ \ \... Last updated: 6/9/2025

git-status-dash

A beautiful, blazingly fast git repository monitor that watches all your repos in real-time. Stop tab-switching to check git status – see everything at once in a gorgeous TUI that adapts to your workf... Last updated: 6/8/2025

vulpecula-loom

Vulpecula Loom is a desktop application that combines the power of modern AI language models with seamless Obsidian vault integration. Built with Electron, Vue 3, and TypeScript, it offers a polished... Last updated: 6/5/2025

vizhub-benchmarks

AI code editing benchmarks for interactive visuals + training dataset generation Last updated: 6/5/2025

lilfox-mcp

A lightweight, MCP-compliant server for local development tools and utilities. Last updated: 6/1/2025

election-helpers

election-helpers is a lightweight JavaScript utility library that makes it easier to work with U.S. election data—FIPS codes, vote tallies, boundary checks, and more. Each helper is fully unit-tested... Last updated: 6/1/2025

🗄️ Other Projects

  • latent-scope - Quickly embed, project, cluster and explore a dataset with open models locally or via API. This project is a new kind of workflow + tool for visualizing and exploring datasets through the lens of late... (5/16/2025)
  • ui-brand-pattern - This is a Next.js project bootstrapped with create-next-app. (4/30/2025)
  • ui-brand-pattern_2SHARE - This is a Next.js project bootstrapped with create-next-app. (4/29/2025)
  • vulpes-spotify-mcp - A Model Context Protocol (MCP) server that enables AI assistants like Claude to interact with Spotify, allowing them to search for and play tracks. (3/22/2025)
  • cavapalooza - Central organizing space for our annual summer gathering and year-round shenanigans! Built with Nuxt 3 + Supabase. (3/3/2025)
  • issuebuilder - npx room302-template (2/27/2025)
  • handtrack-websockets - Real-time hand tracking over WebSockets using MediaPipe, OpenCV, and FastAPI. Track hand position and rotation in 3D space with a cyberpunk visualization layer. (2/25/2025)
  • nuxt-template - npx room302-template (2/25/2025)
  • room302-template - This wizard sets up a development environment for a project, including checks for necessary tools and installation prompts. The focus is on quickly going from idea to publishable project. (2/25/2025)
  • zackgaydos - create table zackposts ( id uuid default genrandomuuid() primary key, content text not null, phonenumber text, createdat timestamp with time zone default timezone('utc'::text, now()) not null, updated... (2/23/2025)
  • smallweb-starter - README not found (12/24/2024)
  • scrapbook-cli - A cyberpunk-inspired, terminal-based interface for your digital scrapbook. Dive into your memories, search through your digital artifacts, and relive your online adventures - all from the comfort of y... (11/29/2024)
  • scrapbook-electron - README not found (11/19/2024)
  • Dataproofer - Every day, more and more data is created. Journalists, analysts, and data visualizers turn that data into stories and insights. (8/18/2021)
  • alertfox - A comprehensive, lightweight Node.js application that continuously monitors the internet for threats against your personal identity, credentials, and digital assets. AlertFox runs automated scans acro... (Unknown)
  • anime-beta-docs-scrape - README not found (Unknown)
  • ayout-management-service - README not found (Unknown)
  • coachartie_memory_analysis - Comprehensive multi-dimensional analysis of AI consciousness emergence through memory reflection patterns. (Unknown)
  • countdown-central - README not found (Unknown)
  • data - README not found (Unknown)
  • forestpunks-com - README not found (Unknown)
  • labelgraphinator - README not found (Unknown)
  • mapping-ice - A data visualization project mapping publicly available information on immigration enforcement facilities and operations. (Unknown)
  • motorcycle-engine-sounds - A super lightweight Nuxt 3 + Vue application for browsing and uploading motorcycle engine sounds. (Unknown)
  • newburgh-crime - Comprehensive crime data analysis for Newburgh, NY (1990-2024) with socioeconomic correlation factors. (Unknown)
  • opencv-artcut - A journey through surveillance aesthetics, 3D reconstruction hell, and cyberpunk glitch effects (Unknown)
  • scripts - README not found (Unknown)
  • tempo - A Swift/SwiftUI iOS application for tempo and rhythm management, designed to help users maintain consistent timing and rhythm in various contexts. (Unknown)
  • vulpes-things-mcp - An MCP server for interacting with the Things app on macOS. This MCP allows Claude to manage your tasks in Things, including: (Unknown)
  • week-note-append-mcp - MCP server for automatically appending project updates to your weekly notes in Obsidian. (Unknown)

Generated by node generate-index.mjs - run this script to refresh