ViF
Live on this siteA real-time terminal game that turns Vim motions and typing into a roguelike shooter, on a custom ECS engine with adaptive enemies and online multiplayer.
A real-time terminal game that turns Vim motions and typing into a roguelike shooter, on a custom ECS engine with adaptive enemies and online multiplayer.
A Go chess server with a REST API, Stockfish for validation and computer play, optional accounts, and durable replay. Three different clients share it.
A single-binary log transport in Go. It collects from files, stdin or other LogWisp nodes, then filters, rate-limits and formats entries for files, consoles, live streams, or the next node.
Terminal I/O for Go with no terminfo: double-buffered cell diffing, true colour with automatic 256-colour fallback, raw key and mouse input, and the same API in a browser through xterm.js.
A song advances one chord at a time on a 3×3 grid; you move across lanes and rows to collect notes and dodge walls. One deterministic engine drives two frontends, a terminal and a graphical raylib window.
A buffered, rotating file logger for Go with disk-space management, operational heartbeats and hot reconfiguration.
Thread-safe configuration for Go from defaults, TOML files, environment and flags, with configurable precedence and per-value source tracking.
LogWisp was born from a familiar devops frustration: the daily ritual of SSHing into multiple servers to tail and grep log files! While powerful, enterprise-grade logging platforms exist, they often felt like overkill for my small projects and low traffic use cases. I wanted a simple, self-contained, single-binary solution that could stream, aggregate, and filter logs with minimal fuss. This is the story of how that idea evolved into a flexible, pipeline-based log transport system.