# tjw.dev > Devlog and portfolio of Justin Walsh — game dev, creative tech, and interactive experiences. Building tools for real-time graphics and audio on the web. ## Projects - [Three Flatland](https://tjw.dev/projects/three-flatland): A WebGPU-native 2D rendering library for Three.js with composable TSL shaders, automatic batching, and first-class React Three Fiber support. - Source: https://github.com/thejustinwalsh/three-flatland - Live: https://tjw.dev/three-flatland/ - [ZzFX Studio](https://tjw.dev/projects/zzfx-studio): An algorithmic 4-channel chiptune tracker that generates complete retro game music in milliseconds using pure math — no samples, no AI, no network calls. - Source: https://github.com/thejustinwalsh/zzfx-studio - Live: https://tjw.dev/zzfx-studio/ - [Tubetape](https://tjw.dev/projects/tubetape): A native desktop app for extracting audio from YouTube, slicing precise samples with BPM detection, and building a local library — no yt-dlp installation required. - Source: https://github.com/thejustinwalsh/tubetape - [ts-defold/create](https://tjw.dev/projects/ts-defold-create): One-command project scaffolding for Defold games written in TypeScript, with a community template registry and zero manual setup. - Source: https://github.com/ts-defold/create - Live: https://ts-defold.dev - [CastleDB for Godot](https://tjw.dev/projects/castledb-godot): A Godot 3 plugin that imports CastleDB files and generates typed GDScript for fully autocompleted static game data. - Source: https://github.com/thejustinwalsh/castledb-godot - [React Concurrent Store](https://tjw.dev/projects/react-concurrent-store): A ponyfill for React's upcoming concurrent stores API that lets you safely mutate state during non-blocking transitions today. - Source: https://github.com/thejustinwalsh/react-concurrent-store - Live: https://tjw.dev/react-concurrent-store/ - [Defold xMath](https://tjw.dev/projects/defold-xmath): A Defold native extension reimagining vmath with allocation-free vector and quaternion math for performance-critical game loops. - Source: https://github.com/thejustinwalsh/defold-xmath - Live: https://tjw.dev/defold-xmath/ - [sh-raylib](https://tjw.dev/projects/sh-raylib): Experimental raylib bindings for Static Hermes that let you write real-time 2D games and visualizations in TypeScript with near-native performance. - Source: https://github.com/thejustinwalsh/sh-raylib - [Textproto Grammar](https://tjw.dev/projects/textproto-grammar): Syntax Highlighting for the Protocol Buffer Text Format - Source: https://github.com/thejustinwalsh/textproto-grammar - Live: https://marketplace.visualstudio.com/items?itemName=thejustinwalsh.textproto-grammer - [TestFlightANE](https://tjw.dev/projects/testflightane) (archived): An Adobe AIR Native Extension that wraps the TestFlight SDK for iOS, bringing beta testing and crash reporting to AIR-based mobile apps. - Source: https://github.com/thejustinwalsh/TestFlightANE - [Heaps iOS](https://tjw.dev/projects/heaps-ios): A working example of the Heaps game engine running on iOS, bridging Haxe's HashLink runtime to Apple's mobile platform. - Source: https://github.com/thejustinwalsh/heaps-ios - [libBulletML](https://tjw.dev/projects/libbulletml): A modernized fork of libBulletML that strips Boost dependencies and upgrades the codebase to contemporary C++ standards. - Source: https://github.com/thejustinwalsh/libbulletml - [UXP Starter React](https://tjw.dev/projects/uxp-starter-react): A production-ready starter template for building Adobe UXP plugins with React, TypeScript, and Adobe Spectrum components. - Source: https://github.com/thejustinwalsh/uxp-starter-react - [UXP Types](https://tjw.dev/projects/uxp-types) (archived): TypeScript type definitions for the Adobe UXP and Photoshop APIs, generated from the live runtime and hand-refined for accuracy. - Source: https://github.com/thejustinwalsh/uxp-types - [Self Hosted](https://tjw.dev/projects/self-hosted): Infrastructure configuration for self-hosted services on TrueNAS, routed through a Cloudflare Tunnel with zero open ports on the home network. - Source: https://github.com/thejustinwalsh/self-hosted - [Brew Keeper](https://tjw.dev/projects/brew-keeper): An Oh My Zsh plugin that silently keeps your curated Homebrew packages current via a native macOS LaunchAgent. - Source: https://github.com/thejustinwalsh/brew-keeper - [Defold ZzFX](https://tjw.dev/projects/defold-zzfx): A Defold native extension porting the ZzFX procedural sound synthesizer for in-engine audio generation without asset files. - Source: https://github.com/thejustinwalsh/defold-zzfx - Live: https://tjw.dev/defold-zzfx/ - [Hyper Space Wave](https://tjw.dev/projects/hyper-space-wave): A cross-platform wave-based shoot-em-up prototype built as a TypeScript monorepo targeting both web and mobile with shared game logic. - Source: https://github.com/thejustinwalsh/hyper-space-wave - [React UXP Spectrum](https://tjw.dev/projects/react-uxp-spectrum): A complete set of React wrappers for Adobe's UXP Spectrum Web Components, taming the quirks of web-component-based UI inside Adobe plugin extensions. - Source: https://github.com/thejustinwalsh/react-uxp-spectrum - [ServerSocketANE](https://tjw.dev/projects/serversocketane) (archived): An Adobe AIR Native Extension that unlocks server socket functionality on iOS, filling a critical gap Adobe left in the mobile AIR SDK. - Source: https://github.com/thejustinwalsh/ServerSocketANE - [Catchy Links](https://tjw.dev/projects/catchy-links): A self-hosted link shortener that generates collision-free, human-friendly slugs backed by Upstash Redis on Vercel. - Source: https://github.com/thejustinwalsh/catchy-links - Live: https://catchy-links.vercel.app - [React Defold](https://tjw.dev/projects/react-defold): React components and a bidirectional message-passing bridge for embedding Defold game engine builds in web applications. - Source: https://github.com/thejustinwalsh/react-defold - Live: https://tjw.dev/react-defold/ - [DevChallenges](https://tjw.dev/projects/dev-challenges): TypeScript solutions to DevChallenges.io UI component challenges, focused on accessible, production-quality implementations. - Source: https://github.com/thejustinwalsh/dev-challenges - Live: https://tjw.dev/dev-challenges/ - [InfiniSTG](https://tjw.dev/projects/infinistg): A browser-based shoot-em-up built for React Jam Spring 2024 using Pixi React for rendering and Zustand for game state. - Source: https://github.com/thejustinwalsh/infinistg - Live: https://tjw.dev/infinistg/ - [Gatsby Astroturf Tailwind](https://tjw.dev/projects/gatsby-astroturf-tailwind): A Gatsby starter that combines Astroturf scoped CSS-in-JS with Tailwind utility classes, wired for zero-config GitHub Pages deployment. - Source: https://github.com/thejustinwalsh/gatsby-astroturf-tailwind - Live: https://tjw.dev/gatsby-astroturf-tailwind/ - [LD41](https://tjw.dev/projects/ld41): A 72-hour Ludum Dare 41 compo entry built in Haxe around the theme 'Combine 2 Incompatible Genres'. - Source: https://github.com/thejustinwalsh/LD41 - Live: https://tjw.dev/LD41/ - [Sol NFT Viewer](https://tjw.dev/projects/sol-nft-viewer): A fast, no-frills browser for viewing Solana NFT collections directly from the blockchain, built with Next.js. - Source: https://github.com/thejustinwalsh/sol-nft-viewer - Live: https://sol-nft-viewer.vercel.app - [Flash Player Target Extension](https://tjw.dev/projects/flash-player-target-extension): Adobe Flash CS6 extension that patches the Publish Settings dialog to expose Flash Player 11.5, 11.6, and 11.7 as compile targets. - Source: https://github.com/thejustinwalsh/flash-player-target-extension - [Sol Souls Afterlife](https://tjw.dev/projects/sol-souls-afterlife): Community gathering hub for the Sol Souls NFT collection, connecting holders through a social portal built on Solana. - Source: https://github.com/thejustinwalsh/sol-souls-afterlife - Live: https://sol-souls-afterlife.vercel.app - [theFEELS](https://tjw.dev/projects/thefeels): A daily vibe-tracking app that makes emotional check-ins fast and frictionless, so you actually stick with it. - Source: https://github.com/thejustinwalsh/thefeels - Live: https://thefeels.tjw.dev - [Unity Roguelike Tutorial](https://tjw.dev/projects/unity-roguelike-tutorial): A completed playthrough of Unity's official 2D Roguelike tutorial project, exploring procedural level generation, turn-based movement, and tile-based combat in C#. - Source: https://github.com/thejustinwalsh/unity-roguelike-tutorial - Live: https://tjw.dev/unity-roguelike-tutorial/ - [AirEJDB](https://tjw.dev/projects/airejdb) (archived): An Adobe AIR Native Extension that brings EJDB's fast MongoDB-style document storage to iOS, Mac, and Windows. - Source: https://github.com/thejustinwalsh/airejdb - [K2D2](https://tjw.dev/projects/unrealphx-k2d2): A collaborative Unity game built by the UnrealPhx group in 2017, titled Kill Kill Die Die. - Source: https://github.com/UnrealPhx/K2D2 - [Web3 Wallet Functions](https://tjw.dev/projects/web3-wallet-functions): A lightweight TypeScript server that proxies the Zerion Wallet API with open CORS headers, built for rapid prototyping and Expo Snack demos. - Source: https://github.com/thejustinwalsh/web3-wallet-functions - [Deque](https://tjw.dev/projects/deque): A work-in-progress desktop todo app built on Tauri, exploring a full-stack Rust backend paired with a React frontend. - Source: https://github.com/thejustinwalsh/deque - [Dice Caster](https://tjw.dev/projects/dice-caster): A hosted dice rolling API with standard notation support and statistically sound distribution, built on TypeScript and Redis. - Source: https://github.com/thejustinwalsh/dice-caster - [raylib Game Jam Template](https://tjw.dev/projects/raylib-gamejam-template): A zero-friction CMake template for raylib C++ game jam entries with GitHub Actions CI for both desktop and web builds. - Source: https://github.com/thejustinwalsh/raylib-gamejam-template - [RotMG Minimal](https://tjw.dev/projects/rotmg-minimal): A Chrome extension that strips the Realm of the Mad God website down to just the game, scaling it to fill the entire browser window. - Source: https://github.com/thejustinwalsh/rotmg-minimal - [Untile](https://tjw.dev/projects/untile): A .NET CLI tool that splits packed tilesheet images into individual tile files, given a target tile size. - Source: https://github.com/thejustinwalsh/Untile - [protoparse](https://tjw.dev/projects/protoparse): A TypeScript library that parses Protocol Buffer text format documents into plain JSON objects. - Source: https://github.com/thejustinwalsh/protoparse - [Jenkins Status App](https://tjw.dev/projects/jenkins-status-app): A React Native multi-platform Jenkins dashboard that runs natively on Android, iOS, macOS, and Windows from a single TypeScript codebase. - Source: https://github.com/thejustinwalsh/jenkins-status-app - [tjw.dev](https://tjw.dev/projects/thejustinwalsh-github-io): Justin Walsh's personal devlog and portfolio — a dark, fast, Astro-powered site for game dev writing, creative tech projects, and interactive experiments. - Source: https://github.com/thejustinwalsh/thejustinwalsh.github.io - Live: https://tjw.dev/ ## Recent Devlog - [Human Content Prompts](https://tjw.dev/devlog/human-content-prompts) (2026-03-13) - [Hello World](https://tjw.dev/devlog/hello-world) (2026-03-09) ## Articles - [Writing for the Web in Obsidian](https://tjw.dev/articles/sample-article) (2026-03-09): How this site uses Obsidian as a CMS and what that workflow looks like in practice. ## Links - GitHub: https://github.com/thejustinwalsh - X/Twitter: https://x.com/thejustinwalsh