I’m Loren Crain, a generalist software engineer and indie game developer in southwest Missouri. I build across the stack, from frontend and backend applications to game engines, gameplay systems, creative tools, graphics, and infrastructure.
I’m the person behind bluehexagons and the solo developer of Antistatic. My professional experience spans financial technology, e-commerce, and games.
Antistatic on Steam · itch.io · Humble Bundle
Antistatic is a crisp, uncompromising platform fighter focused on exploring competitive mechanics. I built the game and its custom C and TypeScript engine as a solo project, including its animation, 3D art, music, and sound.
Antistatic’s related repositories include the lobby server, animation tool, and translation files. The Trace language, @bluehexagons/easing, and Capacitor also began as supporting technologies for the game.
End of Blackjack is an atmospheric first-person take on classic blackjack. Built in Godot, it focuses on the rhythm of cards, machines, and risk in a post-apocalyptic setting.
At Zazzle, I worked extensively on public-facing and internal websites and tools, including a full-featured rich-text editor built on Slate.
Antistatic predates Air Dash Online. Its team hired me as lead programmer after seeing an early demo of the project—then called Blastzone—and knowing me through the local competitive Super Smash Bros. scene.
Basaltwater is my toolkit for automating setup and operations across Debian control planes, servers, workstations, and Proxmox guests. It combines repeatable, machine-aware configuration with diagnostics, security hardening, deployments, coding-agent workflows, and browser automation. I use it to manage this website and my internal tools, services, and workstations.
Read the Basaltwater case study for the engineering decisions and links to implementation details.
I’m actively revisiting older projects such as Generator, modernizing them for current browsers and platforms while preserving their original character.
- Hex Strategy — a real-time procedural systems toy on a large canvas lattice, with evolving forms, autonomous motes, and a playable browser demo.
- Corvus — a wireframe, side-scrolling shooter rebuilt from a 2010 browser experiment. Play it in the browser.
- A Simple Snake Game — a Godot game with classic, pitfall, and obstacle modes plus keyboard, controller, mouse, and touch support.
- You Only Get 1s — a refreshed version of my Ludum Dare 28 entry. Play it in the browser.
- Nuzlike — a Canvas2D sprite and game-engine prototype with a browser demo.
- Survival Shooter 2011 — a preserved, browser-playable build of an older game project. Play it.
- Easing Lab — an interactive browser workbench for plotting, composing, and experimenting with easing curves. Open the lab.
- vector-pose — vector-based skeletal rigging and posing software with Electron, React, and a browser edition. Try the browser edition.
- Trace Sandbox — an interactive environment for running and exploring Trace, a specialized functional language developed for Antistatic. Open the sandbox.
- Generator — a deterministic, dependency-free plasma image generator for the browser. Open Generator.
- Pixel Generator — a browser pattern toy made in 2010. Try it.
- Waveplayer — a browser-native TypeScript waveform audio player with an interactive demo.
- Gomoose — a minimal, self-contained Go web server. Its name is a pronounceable form of GoMWS: Go Minimal Web Server.
- The Unofficial Don’t Starve Food Guide — a recipe calculator and crock-pot simulator that I originally created and continue to maintain. Open the Food Guide.
- Food Guide desktop edition — an Electron desktop wrapper for the Food Guide, with Windows and Linux release builds.
- EV Yield Planner — a static Pokémon effort-value search and training tracker with local autosave and shareable setups. Open the planner.
- Minimal Clicker — an early account-based web experiment with authentication and a small interactive app.
- Terminalarg — a terminal-based browser experience and precursor to some of Antistatic’s fake terminal interfaces. Try it.
- bluehexagons.com — the source for my portfolio site.
See all repositories for the complete and current list.
I work most often with TypeScript, JavaScript, Go, C/C++, C#, SQL, HTML, CSS, React, Electron, Godot, Vite, Node.js, SQLite, AWS Lambda, and Linux.
I’m open to full-time software engineering roles, freelance projects, and contract work. I can help with full-stack web applications, general software and game development, infrastructure, and technical consulting. I’m especially interested in nonprofits, wildlife conservation and environmental work, expanding access to science and technology, and human rights causes. If you’d like to work together, email me at loren@bluehexagons.com or connect with me on LinkedIn.
Website · Bluesky · itch.io · YouTube
npm ci && npm run build creates the static site in dist/ for hosting at /.
For the GitHub Pages project URL, build with
VITE_BASE_PATH=/bluehexagons/ npm run build. The Pages workflow runs that
build and publishes dist/ to
bluehexagons.github.io/bluehexagons.
The shop and account UI is excluded from the default static build because it
requires the separate API service.
The homepage includes a short HTML summary that remains readable without
JavaScript. Keep it aligned with the interactive homepage and the concise
profile.md when career details change. The static
basaltwater.html case study provides a direct URL for
the project; llms.txt links these public sources for
automated readers. Canonical URLs and the sitemap point to bluehexagons.com,
which is the primary copy of the site.



