AI Projects
Experiments, tools, and odd little builds โ all with a cat-shaped sense of humor.
Generative Drift
Live, ever-shifting visuals tuned to ambient synth.
Generative ArtA self-contained audio-visual toy: the music is synthesized live in your browser with the Web Audio API โ there is no audio file. An FFT analyser reads that sound in real time and drives every pixel of the cat.
- Synthesized live โ an upbeat four-on-the-floor groove generated entirely in code with the Web Audio API; there is no audio file, every kick, bass note, and melody is produced at playback.
- Warps & morphs to the beat โ an SVG turbulence + displacement filter liquifies the cat, distorting harder on every kick.
- Reactive everything โ pulsing glow ring, spinning color field, and beat-driven hue shifts, all tied to the live mix.
- Zero assets โ no audio or video files; the sound and motion are 100% code.
Tap play โ the cat pulses to a live, generative beat synthesized in your browser.
Open the full experience โArt Gallery
A fast, modern viewer split into two curated sections.
WebA hand-built gallery with two sections โ Found Art (a large collection of sourced and discovered imagery) and My Photoshops (original edits made with photo manipulation tools). Any piece opens into a full-screen lightbox with keyboard navigation.
*grid thumbnails are embedded as base64 and streamed in lazy chunks โ the grid paints instantly with no per-thumbnail round-trips.
How images are added
- Processed locally โ source images are converted to WebP, resized, and stripped of all metadata before anything leaves the machine.
- Encrypted upload โ images are pushed to the server over a TLS 1.3 connection; the password is stored encrypted at rest and decrypted only in memory at upload time.
- Base64 thumbnails โ a small preview of each image is embedded directly into JSON chunk files; full-resolution images are only fetched when a piece is opened.
- Live updates โ single images can be added or removed without reprocessing the whole collection; the chunk index updates and syncs to the server in one step.
Tapestry Generator
Weaves the gallery art into psychedelic kaleidoscopes.
Generative ArtAn in-browser generator that pulls a random piece from the gallery and weaves it into a seamless, symmetric tapestry โ then lets you grade it into something properly psychedelic and download it.
- Kaleidoscopic symmetry โ 4-, 6-, 8-, or 12-fold mirrored wedges, tiled with mirrored neighbours so the weave is seamless.
- Live colour grade โ hue, vibrance, and a shimmer mode push it into psychedelic territory.
- Sourced from the gallery โ every generate draws a new piece; the whole thing runs in your browser.
- Download โ export your tapestry as a high-res PNG.
Dark Room
An ambient space with live sound and drifting quotes.
Generative ArtA quiet, full-screen ambient experience โ click to enter and let it drift. The soundscape is synthesized live in your browser, with no audio file.
- Live ambient audio โ slow oscillators and an LFO generate an evolving drone entirely in code.
- Animated canvas โ a soft, breathing visual field rendered frame by frame.
- Drifting quotes โ fragments fade in and out as you sit with it.
- Zero assets โ sound and motion are 100% code.
Automated Website Upload
Encrypted deploy that pushes local edits live instantly.
AutomationA Python script that pushes every changed file from the local folder to the live site over an encrypted TLS 1.3 connection. One command, no manual steps.
The site is edited locally.
One command kicks off the deploy.
It builds, obfuscates, connects over TLS, and the site is live โ usually under 10 seconds.
Encrypted Chat
End-to-end encrypted rooms โ no accounts, no logs.
SecurityPrivate chat rooms where every message is encrypted in your browser before it ever touches the network. The server only ever stores ciphertext โ it cannot read a single word.
- AES-256-GCM end-to-end โ the key is derived in your browser from the room name and an optional passphrase; the server never sees it.
- No accounts, no IP logging โ pick a handle and go; nothing identifying is stored.
- Room names are hashed โ the backend stores a one-way hash, never the plaintext room name.
- Ephemeral โ messages auto-expire, and a key fingerprint lets both sides verify they share the same key.
Anonymous Drop
Zero-knowledge file sharing that self-deletes in 24h.
SecurityDrop a file, get a link. The file is encrypted in your browser first; the decryption key lives only in the link's # fragment and is never sent to the server. The server stores nothing but opaque ciphertext.
- Zero-knowledge โ filename, type, and contents are all encrypted client-side; the server can't read any of it.
- Up to 300 MB โ uploads are chunked so large files transfer reliably.
- Self-deletes in 24h โ every drop expires automatically; nothing lingers.
- Hardened โ unguessable links, size and download caps, and stored blobs are never executed or served inline.
Encrypted Paste
Zero-knowledge text sharing with burn-after-read.
SecurityPaste text or code, get a link. Itโs encrypted in your browser first; the key lives only in the linkโs # fragment and never reaches the server, which stores nothing but ciphertext.
- Zero-knowledge โ AES-256-GCM in the browser; the server canโt read the paste.
- Burn after reading โ optionally destroy the paste the moment itโs first opened.
- Expires in 24h โ everything self-deletes automatically.
- Shared hardened backend โ same unguessable-ID, capped, never-executed storage as the file drop.
Disposable Email
Anonymous inbox that self-destructs in 24 hours.
SecurityGet a random throwaway email address, use it to sign up for anything, and let it vanish. No account, no personal info โ and the whole address self-deletes after a day.
- Anonymous โ no signup, no IP logging; a fresh random address on demand, with a QR code for mobile.
- Self-destructs โ pick a 1h, 6h, or 24h lifetime, or burn the inbox instantly; the address and its mail are then purged.
- Anti-tracking โ messages are shown as plain text with remote images and scripts stripped, so tracking pixels canโt fire.
- Optional PGP โ generate an ephemeral key in your browser; mail a sender encrypts to it is end-to-end encrypted, decrypted only in your browser.
- Honest scope โ receive-only; plain email isnโt end-to-end encrypted (inbound SMTP is plaintext), so without PGP it isnโt zero-knowledge like the chat and file drop.
Anonymous Forum
A message board with no accounts and no IP logs.
CommunityA privacy-first message board where you post without ever making an account. Pick a handle, or don't โ either way nothing identifying is kept. It comes in two flavours: public boards anyone can read, and encrypted boards only you and your passphrase can open.
- No accounts, no IP logging โ you just start typing; nothing that points back to you gets stored.
- Optional tripcodes โ add a secret to your handle (
name#secret) to prove a post is really you across visits, still with no account behind it. - IP-free rate limiting โ abuse throttling uses one-way HMAC buckets that store no IP address, so speed limits work without a log of who you are.
- Public boards โ posts are plaintext and moderated by a server-side word filter; these are the ones listed on the front page.
- Encrypted boards are zero-knowledge โ the board id and key are derived in your browser from a board name plus a passphrase; the server only ever holds ciphertext and can't read or moderate them.
Checksum Verifier
Hash a file locally and compare โ fully offline.
SecurityDrop in a file to compute its SHA-256, SHA-512, and SHA-1 and check it against an expected value โ handy for confirming a download wasnโt tampered with.
- Runs entirely in your browser โ Web Crypto hashing, nothing is uploaded.
- Provably offline โ the page ships a
connect-src 'none'policy, so it physically cannot make a network request. - Instant compare โ paste an expected hash and get a match / no-match verdict against any of the three algorithms.
Security Contact
Report a bug โ encrypted before it leaves your browser.
SecurityFound a hole in one of these dens? A coordinated disclosure page where you write up the bug and it is encrypted in your browser to a key only the operator holds โ then you email the ciphertext. Nobody in between can read a word of it.
- PGP-encrypted in your browser โ the report is sealed client-side with OpenPGP to the operator's public key; the plaintext never leaves your device.
- RSA-4096 disclosure key โ reports are encrypted to a 4096-bit public key that only the operator's private key can open.
- Report body is end-to-end encrypted โ you email ciphertext, so even though email transport isn't private, the contents are only ever readable by the operator.
- Auto-discovered public key โ the browser pulls the operator's key from the standardized
/.well-known/location; you can also paste one in yourself. - Operator tools stay local โ the built-in keypair generator and report decryptor run entirely in-browser; the private key and its passphrase never leave the page.
Panda Lyrics
A synced-lyrics desktop widget with a mischievous cat.
DesktopA compact Windows 11 desktop widget that follows whatever is playing in the TIDAL desktop app and shows line-synchronized lyrics โ the previous, current, and next line drifting past in time with the song. It is built in C# on .NET 10 (WPF), reads the now-playing track through Windows' own media controls, and pulls timed lyrics from the community LRCLIB database. It runs entirely on your own machine.
- Reads the song, not your files โ title, artist, playback position, and album art come from Windows' Global System Media Transport Controls; the widget extrapolates the playhead while music plays and re-anchors whenever the timeline jumps.
- Whole-window kinetic themes โ the lyric style switches the entire surface at once (typography, tint, border, album frame, glow, and particle palette), backed by optional particle fields and a low-key etched PANDACAT header mark.
- Honest audio reactivity โ the visualizer moves to a single normalized loudness value read only from TIDAL's own audio session; it carries no frequency bands and never claims to measure bass, and it keeps a calm resting shape during real silence instead of inventing energy.
- A cat lives here โ a dependency-free, green-eyed vector cat walks the widget's edge and, if you let it, goes on occasional desktop adventures: chasing a butterfly across a cloud, hitching a ride on a little biplane, or being caught by a portal when you fling the window around.
- Considerate by default โ it honors Windows reduced-motion and High Contrast, settling into a static pose and stripping decoration; the cat and text scale to taste, and every choice is remembered between launches.
Panda Art Showcase
A music-mapped psychedelic gallery that turns a picture folder into a living visual set.
DesktopA Windows desktop gallery for presenting a folder of artwork as a fluid, music-responsive slideshow. Point it at a directory โ subfolders included โ and the current image becomes a continuously moving canvas: pixels flow, color channels bloom, the frame breathes and drifts, and musical ripples travel through the composition. It targets a smooth 60 FPS and can sit in a compact snap-friendly window or expand into a full-screen visual installation.
- Motion with a real visual vocabulary โ five live controls separate liquid flow, animation tempo, color travel, musical pulse, and whole-picture drift. Mellow, Dreamy, and Expressive presets make the range approachable, while Custom mode exposes the full shader without turning ordinary settings into a strobe.
- Mapped to the song โ when TIDAL is playing, the app estimates tempo and follows verified playback energy, onsets, sustained passages, and song position. It gradually builds a local per-song motion map, then reuses that beat grid after a seek or on a later listen while continuing to refine sections it has actually heard.
- True-color text art โ an optional Chafa-inspired mode reconstructs each picture from real ASCII glyph shapes with independent foreground and background colors, then sends that textual image through the same warping, crossfade, hue, and music-motion pipeline. The fixed-width grid can be copied raw or wrapped for Markdown.
- A gallery, not a format fight โ it walks nested folders and accepts AVIF, BMP, GIF, HEIC/HEIF, JPEG, PNG, TIFF, and WebP whenever the matching Windows codec is installed. Previous, next, pause, motion, ASCII, and fullscreen controls stay deliberately compact so the artwork keeps the room.
- Panda Lyrics built into the frame โ a dedicated lower strip shows Windows-provided album art, track and artist, the emphasized current lyric, the next lyric, BPM, mapping progress, and the same restrained TIDAL pulse used by the standalone widget.
Pagan Reborn
A clean-room engine remake of a 1994 classic, in Rust.
GamesA ground-up, open-source reimplementation of the Ultima 8: Pagan game engine in Rust โ in the spirit of OpenMW and Exult. Modern rendering, widescreen, a smooth framerate; the original world, story, and mechanics. It ships no game assets whatsoever โ it reads the data from your own legally-owned copy and extracts everything locally.
- Bring your own copy โ the engine parses the original files from your install; generated art and audio land in a gitignored folder that is never committed or shared.
- Hand-written parsers, no
unsafeโ the file-format decoders are pure safe Rust, so a whole class of memory-corruption bugs simply cannot happen. - Hardened against hostile data โ parsers return errors instead of crashing, with fuzz-style tests proving they never panic on malformed or garbage input.
- Clean-room lineage โ the formats were documented from public open-source references, then reimplemented from those specs and released under the GPL.
- In active development โ the extraction toolchain and art pipeline are done and verified; world rendering is the next milestone. Not yet a playable game โ but the engine is being built in the open.
Crusader Reborn
An open-source new engine for a 1995 classic.
GamesA ground-up, open-source engine reimplementation of Crusader: No Remorse (Origin Systems, 1995), written in Rust. Same idea as OpenMW, Exult, and devilutionX: a brand-new engine that reads the original game's data from your own legally-owned copy. This one is early โ in active development, so it's more workshop than playground right now.
- Ships zero game assets โ the repository is original code only; you bring your own copy, and everything the tools extract stays in a local, git-ignored folder.
- Hardened data parsers โ the format readers use no
unsafeRust and are built to never panic on malformed or corrupted input, with fuzz-style robustness tests. - Clean-room lineage โ file formats are documented from a study of an open-source reference engine plus real game files; the Rust code is written from those specs, then adversarially re-verified claim by claim.
- The goal โ the original missions, story, and mechanics preserved exactly, with modernized presentation and an optional modern control scheme layered on top of a faithful classic mode.
Where it is right now
The toolchain and asset-extraction pipeline are working โ a full-corpus extraction run completed with zero decode errors. The Bevy-based asset viewer is the next milestone and the gate out of the current phase. Rendering, controls, and the game simulation itself are still ahead on the roadmap โ no promises the cat can't keep.
PandaVault
An offline password manager and encrypted vault, in Rust.
SecurityA local, offline vault for Windows and Linux that keeps two things in one application: a password manager โ usernames, passwords, passphrase generation, secure notes, and live TOTP codes โ and an encrypted data vault for images, video, and arbitrary files. The whole store is a single portable encrypted file you control: no account, no cloud, no telemetry, no network client. It is written in Rust and is pre-release โ a workshop project under active security-debugging, not something to trust with real secrets yet.
- Established crypto, not hand-rolled โ Argon2id key derivation and XChaCha20-Poly1305 authenticated encryption from the vetted RustCrypto and dalek libraries, with the entire vault header authenticated so a parameter-downgrade attempt simply fails to decrypt.
- Layered unlock โ the master password can be combined with an optional keyfile and an optional hybrid X25519 + ML-KEM-1024 identity file, mixing a classical and a post-quantum secret so the extra factor rests on neither alone.
- Every imported file is treated as hostile โ images, archives, and video are decoded in disposable, out-of-process workers that hold no vault keys, over a framed protocol with strict size and geometry bounds, parent-side revalidation, and watchdogs that kill anything that stalls.
- Media stays sealed โ each file lives in its own chunked, streaming-encrypted sidecar under a unique per-file key, and supported media is viewed straight from RAM without ever landing in the clear on disk.
- Panic and auto-lock โ a panic hotkey locks the vault, zeroizes keys, and clears the clipboard; a dead-man timer locks on idle, session-lock, or suspend; and root secrets sit in guarded, page-locked memory that wipes on drop.
- Tamper-evident history โ a keyed hash-chain audit log anchored inside the encrypted vault, with a forward-secure per-entry ratchet, so committed history cannot be silently rewritten or rolled back.
Where it is right now
The cryptography, vault format, memory hardening, and out-of-process decoding all work today, with a large adversarial test suite proving that malformed vaults and hostile files fail closed. A release is deliberately gated on moving every untrusted parser into fresh, hardware-isolated sandboxes on both platforms โ that pipeline is designed but not built yet โ so this is shared as serious work in progress, not a finished product.
PandaSOS
A security substrate, still on the drawing board.
SystemsA research and design effort โ not a shipping product yet. PandaSOS is a Rust security substrate that would sit between applications and the operating system, deciding what an app is allowed to do from capability-based policy, enforcing that at the OS boundary, and leaving tamper-evident evidence of every decision. Right now it exists as an architecture and a formal specification; no implementation has shipped.
- Design stage, stated plainly โ the specification is written and the crate layout is planned, but essentially the whole system is still conceptual; there is no running code yet.
- Rides on your existing OS โ it is deliberately not a new kernel, hypervisor, antivirus, or blockchain. It is meant to mediate execution on top of Linux and Windows rather than replace them.
- Capabilities, not ambient trust โ the design binds each capability to the hardware page table, so a permission is enforced by the MMU and privilege escalation would require compromising the kernel itself.
- A tiny trusted core โ a framekernel discipline is designed to confine all
unsafeRust to a single small kernel crate, leaving every other crate as ordinary safe Rust and shrinking the trusted computing base. - Built to be proven, not just tested โ the goal is machine-checked correctness: a formal state machine, capability rules, and a breach-probability bound expressed as proof obligations for tools like TLA+ and Verus.
An honest snapshot: this is the ambitious end of the workshop โ a substrate we are still designing and reasoning about, shared here as work in progress rather than something you can run today.
This Website
pandacat.vip โ a hand-built, hardened, audio-reactive static site.
WebEvery page is hand-written and ships as static files โ no build framework, no analytics, no tracking, and zero third-party requests: even the fonts are self-hosted, so the whole site loads only from its own origin. The interactive tools (chat, file drop) are backed by small, hardened, same-origin endpoints that only ever see encrypted data.
*on the homepage all artwork is embedded inline as base64, so the page itself makes no extra image requests.
Security hardening
unsafe-inline, no unsafe-eval; all script and style is external and self-hosted.nosniff, frame-ancestors, a locked-down Permissions-Policy (camera/mic/geo off), and no directory listing.sha384 hash, so the browser refuses to run a tampered or corrupted file.Under the hood
- The ambient music is synthesized live with the Web Audio API and the visuals are audio-reactive โ no audio files; sound and motion are pure code.
- The interactive tools all run in the browser: the tapestry and dark room are fully client-side, the gallery streams its (public) art on demand, and the chat and file drop are end-to-end encrypted โ their backends only ever store ciphertext.
- Mobile visitors get a separate, hand-tuned layout.
- Deploys run over an encrypted TLS 1.3 connection, publishing only obfuscated, content-hashed output.