I'm a software developer, maker, and Linux nerd. I aim to contribute to software and electronics engineering projects that improve privacy, push for open standards, help people in need, and provide tools and building blocks for other projects. I endorse free (libre) and open source software, open hardware, digital rights, net neutrality, and consumers' right to repair.
Click images to view project info. Circular icons link to the code, demo site, video, etc.

ATinyGame
2021 – Present
ATinyGame is a game console that fits in 1 hand, with a program smaller than 1kB, all for $1 ($1.50 now, thanks chip shortage). Since the microcontroller is so limited, I had to use AVR Assembly to implement the games, such as whack-a-mole, stacker, simon says, etc. I ported the code to JavaScript so you can play a simulated version online. I designed and ordered the printed circuit boards on EasyEDA, and I collaborated with a distribution company to sell the boards online and ship worldwide.

Robotics at Capital One
2022 – Present
Why would a bank need robotics? Well, we have a Cashier's Check Kiosk, and we needed to test the kiosk before setting it up in the wild. So I used robotics to automate the human interactions, such as grabbing a check with a robot arm, and reading the kiosk's screen with computer vision to validate that it's showing the proper step in the flow. We use this to find failure modes when printing thousands of checks, to validate new units as they are manufactured, and to make sure new changes to the software don't cause any regressions. After the robotics was established, I built a microservices framework for physical device testing, to manage a fleet of on-prem robots with a cloud API. I also created simulations of the robot arm and the kiosk electronics, for faster development cycle time and easier testing.

Boggle Online Game
2019 – Present
Boggle is a word game my family likes to play. One day, we were wondering how many words we missed, so I coded up a python program to find all the possible words on any given boggle board. Then we would play normally, enter the board into the script, and instantly feel dumb for missing some obvious ones. The next iteration was an online version, where you can play a game with multiple people, automatically validate and add up points, and see all the words you inevitably missed. Over the years, I have updated the game and recently redesigned it to use Flask, Vue.js, MongoDB, better CSS, and a neural network to take an image of a physical board and import it into the webapp.

MultiBot
2024 – Present
MultiBot is a livestream tool to combine your Twitch, YouTube, Kick, and Owncast chatrooms into one, and forward commands between them. For example, if you have a !songrequest command on Twitch, YouTube chatters will now be able to type !songrequest too, and the bot will type the command in twitch chat to trigger the action. Users can also set a nickname, and the bot will say hello when they join the chat. I wrote the app in JavaScript but migrated to Golang, and deployed it on Kubernetes to enable a multi-tenant architecture that automatically spins up a new container when a new user signs up.

jjv.sh
2019 – Present
My website, which you are looking at now, is hosted on a server in my basement. It runs on Docker Compose, with Caddy to do the subdomain routing. The main site is a combination of a Hugo static site generator and an Owncast livestream, which I have published as Hugowncast. Some of the subdomains I have are some games, a text-based livestream, and a mindmap tool.

Obnoxious Scheme to Convince All to Recycle (OSCAR)
2019
At the University of Maryland Bitcamp hackathon in 2019, OSCAR was born. OSCAR was so amazing that it won Most Entertaining Hack, and the president of the university even tried it out and had a laugh. OSCAR is a talking trash can that insults you (video) if you put recycling in the trash bin, trash in the compost bin, or really anything in any bin because the actual code to make the determination of what type of waste you are holding was not working (thanks a lot, IBM with your so-called "watson waste sorter" which even the IBM folks who were there told us it was trash, no pun intended...). I was in charge of infrastructure and odd jobs -- I set up the Raspberry Pi and showed people how to use ssh, gave people accounts on my home server for easy file sharing, drew portraits of the team members and the logo to enter in the colorwar contest, and helped out here and there with the python code.

Answermator
2021
At University of Maryland, I took a software development class in my senior year where we learned by working on a team to create a software project. My team was Answermator. Answermator is the private, open source tool for DIY’ers to take control of incoming calls from a web interface at home, or call in from a cellphone to run anything that can connect to a Raspberry Pi. A Raspberry Pi attached to a USRobotics USR5637 USB Modem serves as the core of the device, which can be connected to a landline and the user's phone. The Pi is the main user interface, with the user's phone as a secondary interface.

Chatbot with Automatic and Rapid Learning (CARL)
2015, 2018
CARL was born in July 2015 on Scratch, a programming learning website I was using at the time. CARL learns from the phrases you type in, looking for close matches and links between phrases. I also wrote a Spanish version called CARLA (Chatbot con Aprendizaje Rápido, Lógico, y Automático), which didn't receive as much training data because fewer people who followed my scratch profile spoke Spanish :(. CARL was later upgraded in January 2018 at Hoya Hacks, a hackathon at Georgetown University, to a python web application. Please talk to CARL so he can learn more phrases!

Home Server
2018 – Present
My friend and I set up a server in my house running Nextcloud, an open source file storage and collaboration platform. We learned how to register a domain name (confuzer.cloud), update DNS entries, forward ports on a router, and manage a Nextcloud installation. We also chose to use ZFS (software RAID) for redundancy against physical failure of the hard drives. Then we back up all the data to another computer in a different location with ZFS's incremental data stream capability. After a year, we started renting out our unused disk space with storj.io running in a docker container.

Stoichiometry
2016 – 2017
This is a Java application that I wrote for AP Computer Science that balances chemical equations. You can try it out here. It converts the input string into a symbolic chemical format, then into a system of fractional mathematical equations, which it solves (I rewrote a linear equation solver to use fractions) and displays the balanced equation. It can also set the number of moles or grams of any compound, updating the quantities of the other compounds. It includes a Java enum with all the elements and atomic mass, which I generated with a python program that scraped the properties from a set of text files I downloaded. And yes, it does take into account the atomic mass of an electron into the calculations.

JHUAPL Internship
2015 – 2016, 2018 – 2019
I interned for JHUAPL (Johns Hopkins University Applied Physics Laboratory) multiple times, first in highschool, where I explored proposal options for a miniature satellite (cubesat), helped develop curriculum for a professor's intro to cubesats class, worked on a prototype for combining computer vision and voice recognition, and learned OpenCV vision processing for an Android phone camera. Then I interned again in college, where I developed position history sharing between multiple LiDAR mapping backpacks (the featured image, from this article), then integrated a new model of camera to the mapper backpacks and started developing OpenCV algorithms for the new camera, creating documentation for the process along the way.

FIRST Tech Challenge (FTC) Robotics
2013 – 2017
I competed in FTC robotics in highschool, and now I serve as a mentor. In 2016, we won East Super-Regionals, and received a finalist nomination for control systems at the World Festival (season review video). As the co-programmer, I helped write an Android app to control the robot's motors and sensors through an Android phone. We separated our code into libraries for other teams to use, including a Java state machine library, and an Android library with a lot of our generic code. We taught an OpenCV computer vision class to 35 people at a state-wide season kickoff event. For one of our motor controller boards, we designed custom PCB's to make the wiring easier. Then we printed out a few hundred and handed them out to other teams. The company that makes the motor control boards contacted us and bought some of our boards to sell online for a time. I also worked on the team website to thank our sponsors and to publish info about the team.

state-machine-framework
2016 – 2018
I co-wrote this Java library to manage states and transitions during my time in FTC robotics. Although we used it to help control the robot, it does not have any robot-specific code in it, so it can be used in any project involving a state machine. We wrote documentation for other teams to use detailing how to import it into a project and create a simple state machine.

Eagle Scout Project
2016
For my Eagle Scout Project, I led the scouts in building a flagstone walkway for a homeschool theatre group I was in. They used someone's house to store the props and costumes, and the path to the costume shed would get muddy when it rained. So the project connected the house to the shed which provided a safe and clean path for the costume team. The project was funded by raking leaves, and with a brick landing in front of the costume shed with donor's names engraved in the bricks (using a laser engraver with special bricks). You can view some pictures that we compiled from my scouting career and from the project.