Eric's Portfolio of Paraphernalia

Art

My fascination with interactive art started at a young age. Early video games, text adventures, and the Exploratorium in San Francisco caught my curiosity about what I could build on our home computer. To this day, I still find myself drawn to exploring the space where art and technology meet.

resonate_glitch screenshot

resonate_glitch

resonate_glitch takes in various inputs: the camera feed, mic input, and accelerometer motion data on your phone. Running these parameters through an algorithm, it produces synthesized electronic "music" with a glitchy camera view.

The aim of the project is to create a synthetic synchronicity. Does the music have any meaning? Are you able to affect it in any way? It's up to the user to experiment and find out.

Tech
JavaScript, HTML5, GitHub Actions
Platform
Web + Smartphones
Lady of the Bay watercolor painting

Lady of the Bay

This site-specific audio walking tour transformed existing physical spaces into a hybrid story world.

Loosely based on my own life, the tale is from the perspective of a rebellious young mermaid who leaves her home world to discover herself among the humans in San Francisco.

Tech
MP3 audio, telephone systems
Platform
Real world + Smartphones
Moshtroncity screenshot

Moshtroncity

Moshtroncity displays a datamosh visualizer that glitches the live camera feed in sync with the beat of any loud music playing.

Runs entirely on-device with no backend server. Rhythm and harmony detection comes from my beatfinder library.

Tech
JavaScript, HTML5, Web Audio, beatfinder, Meyda, datamoshlive, Playwright
Platform
Web + Smartphones
CyberRain screenshot

CyberRain

Displays the live "Matrix Rain" effect based on the camera feed, with auto-gain that adjusts to the environment.

Tech
JavaScript, HTML5
Platform
Web + Smartphones
TriangleVision screenshot

TriangleVision

Transforms your live camera feed into a low-poly triangle view.

Tech
JavaScript, HTML5, TuiCSS
Platform
Web + Smartphones
Pop Art IRL screenshot

Pop Art IRL

Turns your webcam into live pop art. Uses edge detection (Sobel algorithm) with a reduced and blown-out color palette. Dots and stripes replace some of the colors to imitate comic panels and Roy Lichtenstein-style art.

Tech
JavaScript, HTML5
Platform
Web + Smartphones
Photoresistor circuit diagram

RandomNightLight

Fades a set of lights (LEDs, for example) in and out with a random sequence every time via an Arduino and a single photoresistor. Simple and reliable, this code has powered my own nightlight for many years.

Tech
Arduino, C++, Circuits
Platform
Arduino Uno

Web

Since the early days of the web, I've maintained some sort of web presence, starting with a hand-coded website in HTML 2 to host my software projects. After a lengthy stint with LAMP I've since graduated to modern full stack development with Python, React, etc. This list is limited to select personal projects only.

munimet.ro screenshot

munimet.ro

My first "vibe coded" webapp displays the current state of San Francisco's Muni Metro subway via machine learning, using Google Cloud Run as the backend.

Tech
Claude Code, PyTorch, Python, Falcon, Tkinter, Google Cloud Platform, HTML, GitHub Actions
Platform
Web
How Many Bags logo

How Many Bags?

Provides movie ratings from every episode of Tim Heidecker and Gregg Turkington's long-running comedy series, On Cinema at the Cinema.

Tech
HTML, JSON, JavaScript, GitHub Actions
Platform
Web
MrEricSir.com screenshot

MrEricSir.com

My personal blog covers travel, movies, comedy, tech, and whatever I find on the streets of San Francisco.

Also, be prepared for the occasional conspiracy theory and/or rant about "immersive art."

Tech
HTML, CSS, WordPress
Platform
Web
intro.MrEricSir.com screenshot

intro.MrEricSir.com

My personal calling card, in web form.

Tech
HTML, CSS, JavaScript
Platform
Web

Software

I've been developing software since I was a teenager learning to code in QBasic, Turbo Pascal, and HyperCard. In 2009, I earned a Master of Science in Computer Science.

Over the following years, I've become a generalist, tackling projects ranging from embedded Linux systems to reverse engineering Windows applications to the web. This section highlights my work on open source projects.

Creator

Projects I've created and (in some cases) actively maintain.

Fang screenshot

Fang

This easy to use news reader works on Windows, Mac, and Linux. The UI is custom QML. All parsing of RSS/Atom/Sitemap/JSON documents is performed in the C++ layer for maximum performance.

Tech
C++, Qt, QML, CEF, WebSocket, JavaScript, SQLite, RSS, XML, HTML, JSON, CSS, GitHub Actions
Platforms
Windows, macOS, Linux, Android (experimental)
Screenshot of Beatfinder intro user interface

beatfinder

A simple JavaScript library that stitches together some other JavaScript libraries to react to live music via an event system. Geared toward developers making HTML5 visualizations for live music, raves, etc. Works best with electronic beats such as EDM, electronica, house, hip hop, etc. All processing is performed locally on-device.

Tech
JavaScript, GitHub Actions, npm
Platforms
Web
Photo of the Golden Gate Bridge (public domain)

selenium-webext-bridge

This JavaScript library is aimed at engineers developing Firefox extensions who wish to verify them with Selenium tests. This grew out of a Firefox extension I was working on, as there was no obvious way for Selenium to deal with Firefox tabs or easily communicate with extensions once they were installed.

Tech
JavaScript, Selenium, Firefox, WebExtension, GitHub Actions, npm
Platforms
Windows, macOS, Linux
QMLRearrangeableTreeView screenshot

QMLRearrangeableTreeView

QML user interface for a drag and drop rearrangeable list with one-level deep folders. Supports both desktop and mobile touch screens. Example provided in both pure QML for rapid prototyping as well as a C++ backend.

Tech
QML, Qt, C++, JavaScript
Platforms
Windows, macOS, Linux, Android, iOS
He is the one

QSingleInstanceCheck

Originally developed for Fang, this simple C++ header-only library can be used to not only ensure that one and only one instance of your app is running, but also send a signal to the original instance. In Fang, this signal is primarily used on Windows to show the app when it's been minimized to the system tray.

Tech
C++, Qt, shared memory, local socket/named pipe
Platforms
Windows, macOS, Linux
Power button

QAutoStart

Also developed for Fang, this C++ library allows your Qt application to launch at user login. Designed to be easy to use, with only a single line of code to enable or disable the feature.

Tech
C++, Qt
Platforms
Windows, macOS, Linux
GI Joe parody, Stop all the downloading

QWebDownload

Simple Qt/C++ library for downloading content from the web (HTTP and HTTPS) asynchronously with sensible defaults and retry options. Includes support for batch downloads.

Tech
C++, Qt, HTTP
Platforms
Windows, macOS, Linux
Modiuplate Lua screenshot

Modipulate

Tracker music library for playing music and responding to musical cues. Intended to be used in video game development. Includes C and Lua bindings.

Tech
C++, PortAudio, Lua
Platforms
Windows, macOS, Linux
InjectCrash screenshot

InjectCrash

Windows command line utility to crash another process. Useful for testing crash reporters.

Tech
C++, Win32
Platforms
Windows

Contributor

Projects I have contributed to, either as an employee or volunteer.

Cardo screenshot

Cardo

Desktop podcast client. Contributed additional search engines, bug fixes, and translations. Officially a project collaborator as of March 2026.

Tech
TypeScript, React, Tauri, Tailwind
Platforms
Windows, macOS, Linux
Jellyfin Desktop screenshot

Jellyfin Desktop

Desktop client for the Jellyfin Media System (deprecated version). Contributed build and setup scripts and bug fixes.

Tech
C++, Qt, QML
Platforms
Windows, macOS, Linux
Geary screenshot

Geary

Easy to use email client for GNOME and compatible Linux desktops.

Contributed initial UI, HTML email support, and parts of IMAP backend as an employee of the Yorba Foundation.

Tech
Vala, GTK+, SQLite, IMAP, SMTP
Platforms
Linux
Shotwell screenshot

Shotwell

Easy to use photo manager for GNOME and compatible Linux desktops.

Contributed RAW+JPEG support, custom MOV parser, and search UI as an employee of the Yorba Foundation.

Tech
Vala, GTK+, GStreamer, SQLite
Platforms
Linux
Ubuntu Touch Gallery app screenshot

Gallery for Ubuntu Touch

Photo gallery app commissioned by Canonical for Ubuntu Phone, intended to ship with the (unreleased) Ubuntu Edge handset.

Contributed SQLite storage backend and iterated on UI as an employee of the Yorba Foundation.

Tech
C++, Qt, QML, JavaScript, SQLite
Platforms
Linux