yishy

Things I build, mostly for fun.

Self-hosted services, physics simulations, small games and a desktop with a cat-eared mascot. Everything here runs on hardware in my house.

Alter Music logo: a black ghost wearing pink headphones

Alter

A self-hosted media server and music player for the household. The server at home holds the whole library in lossless quality; native Android and desktop apps stream it anywhere, with offline downloads, playlists, radio and a DJ mode, lyrics, Android Auto, and playback that picks up on one device where another left off. Changes sync live across every screen. A weekly discovery playlist and artist follows bring in what you haven't heard yet.

Python · FastAPIPostgresKotlin · ComposeSvelte · TauriSelf-hosted
Darts scoring web app showing a live board feed with detected darts and the match scoreboard

Alter Darts

Automatic dart scoring from a single side-mounted phone camera. The board is found and flattened with a homography, each new dart is picked out by frame differencing, and the tip is located to the millimetre and scored. A browser scoreboard tracks the match live.

PythonOpenCVComputer visionWeb app
Cutaway render of a bowling ball showing its asymmetric core

Bowling Ball

A fully 3D model of a real bowling ball, built around its core rather than a sphere with a number attached. The core is a signed distance field fitted so the integrated inertia tensor reproduces the manufacturer's spec sheet, and the solver keeps the gyroscopic term, so precession and axis migration emerge from the physics instead of being scripted.

C++Box3DOpenGLRigid-body physics
Pixel-art bowling alley with a scorecard and an upgrade panel

Lazy Bowlers

An idle bowling-manager game in pixel art. Buy lanes, hire janitors, train your bowlers and watch the pins fall. The pin scatter is a real 2.5D rigid-body simulation, not canned animation, so no two strikes look the same.

Pythonpygame-ceCustom physicsGame
Top-down view of a 3D 9-ball pool table at the break

9-Ball

Three-dimensional 9-ball on a regulation WPA table, with cue spin, a free camera and AI opponents at adjustable skill levels. The table geometry and ball dynamics started life as a validated 2D simulation and were lifted into 3D in metres.

PythonPanda3DPhysicsAI opponents
A family of glossy pink-and-black app icons for nekoterm and nekodesk

nekoterm & nekodesk

A terminal with a cat-eared mascot living in the top bar, reacting to what the shell is doing, plus a matching GNOME dock and a full Hyprland desktop. Built-in system monitor, web tabs, music player and remote sessions. Her art is kept consistent with a custom-trained LoRA.

Python · GTKVTE · WebKitHyprlandStable Diffusion LoRA

Physics sim

A Unity rigid-body sandbox: things roll, collide and knock each other around under real physics. Windows build.

UnityC#Rigid-body physics

About

I like building the whole thing: the physics, the server, the app on the phone, and the box in the closet it all runs on. Most of what's here is in daily use at home.

Alter is private and invite-only. If you're family, you already have the link.