/proj
These are some of my projects that I think are actually useful. Some are simpler than others. Follow the links to the repos or project pages to learn more. They are roughly organized chronologically (newer on top).
jamimation
sourceA desktop app for creating animated images (gif, webp, apng). Made this for an artist to work with. The frame ordering is done through the regular file manager and the applciation just listens to file events and updates the animation frames automatically, so it works nicely with the artist's drawing program.
oven
sourceAn oven for firing ceramics. It includes a custom PCB PID temperature controller driving an SSR connected to a heater. It has a bunch of safety features and is driven via USB/UART commands from a GUI app I made in Rust, that also plots the current values and lets you select pre-defined temperature profiles. One of my largest projects so far that took me almost a year to complete (with on-off work).
jiren
sourceA simple device for counting occupancy of a room with two ToF sensors. I use this to turn my PC monitor off when no one is in the room.
weather station | no name yet
[WIP] A custom remote "weather" station for measuring particulate matter concentrations. Still concepting.
zheli
source[Unfinished] Human presence detection using a reverse-engineered chinese radar module. I got the hardware ready and received some radar data and would have to create an algo for it (probably no time though...).
sagi (サギ)
[Abandoned] GUI to a database of a personal inventory of electronic components, tools, devices, and so on. I did not finish this because I thought it would be too much hassle for too little gain. Embrace the chaos! Also helped me learn Rust.
flake
sourceMy NixOS configuration. This is a constant WIP, but I like it so far!
obs-tools
sourceSome scripts and tools for streaming with OBS (not for me). Including scrolling background, automatic face detection and zoom, and a script for triggering source visibilities with gamepad buttons. It also includes a very cool project for creating an animated "racing avatar": The idea was to do a live video capture of a racing game (Gran Turismo 4) and specifically its digital speedometer display. I trained a neural network to turn the frames into an integer for the speed values. This was then fed over a socket to a Godot program that calculates and filters acceleration, jerk, and so on and finally uses that to have an avatar sprite react to the speed changes of the car in-game. It also animated the steering and gearing.
Prototype:
Nicer version:
chinese-tracker
sourceGTK4 desktop app for tracking chinese characters learned. Its basically a frontend to a CSV file. Was very good for practicing Rust but I think I hate GTK in Rust ~.~
stylobot
sourceA robot that plays a stylophone. Me and some friends put this together in less than a day, and later took another evening to actually make it work properly. You can find a demo video in the linked repo.
ample
sourceA custom headphone amplifier with a Cirrus 24 bit optical SPDIF codec. This was kind of overengineered but fun to build. First time I used my reflow oven. The codec ended up not working because I literally forgot to connect a pin and was unable to use a wire. A new revision would have been too expensive. Maybe I will make a new design in the future!
geotastic-country-translator
sourceA little userscript for geotastic to translate and TTS the selected countries to chinese for language learning. I think it's currently broken due to upstream updates but it used to work very well. ^^
air-gesture
source[Abandoned] Hand gesture recognition using an infrared ToF sensor and custom PCB. It worked OK for swiping left and right but was not very robust. I used it for switching desktop workspaces but did not pursue it further though.
matching circuit optimization
s1 s2I needed some way of simulating and optimizing the effect of antenna matching circuits based on touchstone measurement data from a VNA, where the possible circuit elements were discrete real-world components (from manufacturer simulation files). This was split in two projects, one using Qucs and one "standalone" using a python library. Both of these are very messy and slow but they worked! And they were some of my first "larger" projects. I wanted to go with a genetic algorithm but ended up just brute forcing ^^