Blog

Luis Majano

April 08, 2026

Spread the word


Share your thoughts

We believe the best way to learn a programming language is by writing code — real code, with real feedback, and real tests. That's exactly why we built BoxLings.

Inspired by the beloved rustlings project, BoxLings is an interactive CLI tool that teaches you BoxLang through hands-on exercises. You read failing tests, fix broken code, and level up — one exercise at a time.

Oh, and the whole thing is written in BoxLang itself. 🥊 Dogfooding at its finest.


What Is BoxLings?

BoxLings gives you 129 progressive exercises across 28 topics — from the basics of variables and functions all the way to async programming, Java interop, destructuring, and CLI app development.

But here's what makes BoxLings different: we teach TDD/BDD as a first-class skill, not an afterthought, using TestBox; our BDD/TDD testing library.

From day one, you'll read TestBox specs before touching any implementation code. You'll learn to think in tests. By the time you hit the intermediate exercises, you'll be writing your own. By Phase 3, you'll be doing the full red-green-refactor cycle like a pro.


The Full Learning Path

BoxLings is organized into three progressive phases, with 28 topics and 129 exercises total.

🟢 Phase 1 — Core Fundamentals (50 Exercises)

Perfect for beginners and developers new to BoxLang:

#TopicExercisesWhat You Learn
1Introduction2Get started with BoxLings and BoxLang basics
2Variables6Dynamic typing, the var keyword, scoping basics
3Functions6UDFs, closures, lambdas
4Conditionals4if/else, ternary, switch
5Data Types8Strings, numbers, booleans, arrays, structs
6Arrays4Array operations and member functions
7Scopes5variables, local, this, arguments scopes
8Structs5Struct manipulation and operations
9Strings6Interpolation, multi-line strings, string operations
10Imports4Importing classes and the java: prefix

🟡 Phase 2 — Intermediate (40 Exercises)

Dive deeper into BoxLang's power features:

#TopicExercisesWhat You Learn
11Structs Advanced4Deep operations, merging, complex manipulation
12Null Handling4Elvis operator, safe navigation
13Error Handling6try/catch, throw, custom exceptions
14Interfaces4Implementing Java interfaces from BoxLang
15Testing5Write your own TestBox specs!
16Functional8map, filter, reduce, lambdas
17Async6Threads, futures, async programming
18Components3bx:http, bx:query, and more

🔴 Phase 3 — Advanced (48 Exercises)

Master BoxLang-specific and power-user features:

#TopicExercisesWhat You Learn
19Casting5castAs, javaCast, type conversions
20Quizzes3Comprehensive knowledge reviews
21Classes8OOP, properties, metadata
22BIFs6Built-in functions and member functions
23Templating4.bxm files and template syntax
24CLI Apps4Building real CLI tools with BoxLang
25Java Interop6Calling Java, the java: prefix in depth
26Destructuring4Struct and array destructuring, renaming, nesting
27Spread4Spread operator for arrays, structs, and function calls
28Range2The .. range operator and functional methods
29Assert2The assert statement with custom messages

The TDD/BDD Learning Journey

BoxLings teaches test-driven development alongside BoxLang in four progressive stages:

Step 1 — Reading Tests (Topics 1–10) Read TestBox specs to understand requirements. Tests are your documentation.

Step 2 — Understanding Patterns (Topics 11–14) Multiple assertions, setup/teardown with beforeEach/afterEach, edge cases, and error scenarios.

Step 3 — Writing Tests (Topic 15) Now you write the specs. Practice describe / it / expect from scratch.

Step 4 — Full TDD Cycle (Topics 16–29) Red → Green → Refactor. The real deal.


How It Works

git clone https://github.com/ortus-boxlang/boxlings.git
cd boxlings
boxlang BoxLings.bx

BoxLings drops you into watch mode — it monitors your exercise files and reruns them automatically every time you save. Fix the code, hit save, see the tests go green.

Keyboard shortcuts in watch mode:

KeyAction
nNext exercise
hShow hint
tShow test file
lList all exercises
rRerun current exercise
qQuit

Three exercise types are supported: scripts (.bxs), classes (.bx), and templates (.bxm), covering the full breadth of how BoxLang is used in practice.


Built for Learners, Classrooms & Workshops

BoxLings is self-contained and runs completely offline after the initial clone. Whether you're learning solo, teaching a workshop, or onboarding a new team member, BoxLings provides a structured, guided path with immediate feedback.

Estimated completion time:

  • 🆕 Beginners: ~15–20 hours
  • 💻 Experienced developers new to BoxLang: ~6–10 hours
  • 🔥 Java/CFML developers: ~4–6 hours

Get Started

You'll need BoxLang 1.12+. We recommend BVM to manage your BoxLang versions:

curl -fsSL https://install-bvm.boxlang.io/ | bash
bvm install 1.12.0
bvm use 1.12.0

Then clone and go:

git clone https://github.com/ortus-boxlang/boxlings.git
cd boxlings
boxlang BoxLings.bx init
boxlang BoxLings.bx

Join the Community

We'd love to hear what you think — and contributions are very welcome. New exercises, bug fixes, documentation — all of it.

👉 github.com/ortus-boxlang/boxlings

Now go fix some broken code. 🥊

Add Your Comment

Recent Entries

Introducing bx-jwt: Enterprise-Grade JSON Web Tokens for BoxLang 🔐

Introducing bx-jwt: Enterprise-Grade JSON Web Tokens for BoxLang 🔐

JWT authentication is everywhere. But rolling it correctly — with proper algorithm enforcement, key management, clock skew handling, JWE encryption, and zero security footguns — is anything but trivial. Today, we're shipping bx-jwt, a production-ready JWT/JWE module for BoxLang that handles all of it out of the box, so you can focus on building, not fighting cryptography.

Luis Majano
Luis Majano
May 22, 2026
What “Modernize or Die” Really Means in 2026

What “Modernize or Die” Really Means in 2026

“Modernize or Die” is not about forcing teams into MVC, chasing trends, or rewriting every CFML application from scratch. It means making sure your applications, teams, and processes can survive the future: easier to maintain, test, secure, deploy, document, hire for, and evolve. In 2026, modernization is less about adopting the newest pattern and more about reducing business risk, protecting the value already built into your systems, and ensuring CFML applications remain credible, sustai...

Cristobal Escobar
Cristobal Escobar
May 22, 2026