BoxLang Express went from basic routing to a full-featured framework across 10 releases (0.1.1→0.1.14): sessions, CSRF, CORS, rate limiting, security headers, uploads, and a SQL-backed session store. Every fix got verified live before being called done, then locked in as one of 149 passing tests. Along the way, express-test grew from a chat demo into a live documentation site, catching stale docs…
BoxExpress brings Express.js-style HTTP endpoints to BoxLang using the JDK's built-in HTTP server. It supports routing, middleware, sub-routers, static files, and view rendering—without requiring a servlet container.
Robert built a Slack clone on BoxLang with no bundler, no database, no auth. Channels are free because addresses are free. Presence isn't stored, it's derived. DMs are channels with computed names. Two bugs taught me more than the features: frames aren't ordered, and `content-length` counts bytes.
Robert rebuilt his 8-year-old Vue D&D combat app in BoxLang, using SocketBox/WebSockets for real-time state. Features SRD 5.2 character creation, turn-based combat with fog-of-war, and a chunked map system with dual-layer tiles and POI markers. Encounter state lives server-side; ~300 TestBox tests cover it.
Robert asked Claude to describe their personality without flattery. Claude analyzed author's configuration files, code projects, and documented preferences to generate detailed personality assessment. Key finding: Claude effectively reverse-engineered personality traits from technical documentation and system design patterns, demonstrating how structured configuration files inadvertently reveal…
Robert ported 1983's Zork to BoxLang to demonstrate natural language parsing without AI models. Transcribed original ZIL (Zork Implementation Language) source from GitHub into BoxLang structs—rooms, objects, exits, synonyms, flags—using Claude for verbatim translation only. Parser handles tokenization and verb resolution like Infocom's original, proving vintage solutions remain viable.
DismalThreads forum implements a gamified achievement system inspired by Dungeon Crawler Carl's snarky tone. Achievements have five tiers (Common to Legendary) plus secret achievements for specific behaviors.
Claude skills are reusable, prompt-based automation shortcuts stored as `SKILL.md` files with YAML frontmatter and Markdown instructions. Best practices: narrow scope (one job per skill), specific instructions with examples, separate process (SKILL.md) from knowledge (REFERENCE.md), use XML tags for structure, control invocation via `disable-model-invocation` and `user-invocable` flags, and…
Robert presents a ColdFusion/BoxLang coding challenge to build a recursive function that converts a flat array of hierarchical category data (using `id` and `parent_id` relationships) into a nested tree structure without using loops. The solution uses `arrayFilter()` to find children of each parent and `arrayMap()` to recursively build the `children` array for each node, with an optional bonus…
`rsync-profiles` is a simple bash wrapper that replaces long, error-prone `rsync` commands with named profiles. Define your source, target, and exclusions in an INI-style config file, then sync with a single command like `rsync-profiles myprofile`. It supports remote servers via SSH, dry-run previews, custom rsync flags, and profile listing. Great for anyone tired of fat-fingering remote paths or…
Robert evolved a web scraping service over several years to extract link metadata (Open Graph, Twitter Cards, oEmbed, JSON-LD) for social sharing features, progressively hardening it against bot detection, timeouts, and SSL errors. The latest version uses a multi-layered extraction strategy—rotating user-agents, disabling certificate validation, adding browser headers only for non-bot UAs to…
CBWire uses data properties for reactive state that persists between requests and supports two-way binding, making them ideal for form inputs and user interactions. Computed properties are read-only, derived values that are automatically cached per request, perfect for expensive operations like database queries or calculations that depend on data properties.
Robert shares his experience building DismalThreads, a modern forum application that evolved from his 2022 project renegade-forums. He rewrote it using BoxLang 1.0 and CBWire, a ColdBox module that enables reactive interfaces without JavaScript. He prefers CBWire over frameworks like Vue or React since it uses plain CFML. The site features nested comments, infinite scrolling feeds, notifications,…
A vendor sent bulk data as Excel instead of JSON, conflicting with an API endpoint's small-payload limit. A quick BoxLang CLI script parsed the CSV, handled Excel currency formatting, and chunked the output into 100-row JSON files. A second script POSTed each file to the endpoint with SHA-1 auth headers. Total time: ~15 minutes. BoxLang's command-line scripting made it a natural fit for the job.
A development folder wipe led to rebuilding this site as Chronicler, a BoxLang/ColdBox 8/CBWire 5 app named after the scribe in Rothfuss's Kingkiller Trilogy. It replaces a static site with a lightweight CMS featuring a CBWire-powered post editor, enabling writing from anywhere. Source release planned once polished.