Projects

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

Coach Artie Ecosystem

I created Coach Artie to serve as our Discord studio assistant. He's evolved into a powerful AI tool with persistent memory and tool usage - helping our team coordinate and manage creative workflows.

Coach Artie v2: Production AI with MCP Tools

Currently in development.

Memory & Consciousness Analysis

Explores AI consciousness emergence through memory patterns with scientific rigor applied to existential questions. This research component investigates how persistent memory systems in AI assistants might lead to emergent conscious-like behaviors.

Node.jsDiscord.jsOpenAI APIPostgreSQLMCPAI Consciousness Research

COVIDcast

During the early COVID-19 pandemic, I worked with Carnegie Mellon University's COVIDcast project, prototyping data visualizations and user interactions to help the public understand hospitalization, transmission, and movement trends across the country.

Data VisualizationJavaScriptCOVID-19 DataPublic Health

Dataproofer

Along with Gerald Rich and the Vocativ data team, I received a Knight Prototype Fund grant to create Dataproofer - an open source tool to check data for reliability, missing data, and outliers. Built as an Electron desktop app for journalists.

 dataproofer Criterion\ Channel\ videos\ v1.2.0-20190621\ -\ v1.2.0-20190621.csv
 
total rows 5035
rows sampled 1259
 
Missing or duplicate column headers: passed
Numeric cells: info
String cells: info
Empty Cells: warn
Special Letters & Characters: warn
Duplicate Rows: passed
Potentially missing rows: passed
Words at their character limit: failed
Integer at its SQL upper limit: passed
Summed integer at its upper limit: passed
Small integer at its SQL upper limit: passed
Big integer at its SQL upper limit: passed
Outliers from the mean: info
Outliers from the median: info
Invalid coordinates: passed
Void coordinates: passed
 
75%
9 tests passed out of 12
 
### PROOFED ###
JavaScriptElectronData QualityCSV