Another holiday, another
SDR release. Version 0.6 (now on
github!) comes with definitions for almost all of the Mainstream square dance program, excepting thars, stars, and that pesky allemande left. The basic abstract syntax tree representation of calls has been refactored, building on a implicitly-typed expression representation - clearly we're approaching fulfillment of
Greenspun's tenth rule. On the
REPL front of this quest, SDR now includes
PMSD, a text UI incorporating an interactive javascript context. The test case
transcripts probably provide the best overview of its use.
The SDR
web frontend now supports implemented bigon,
hexagon, and octagon dancing. There's also a square
resolver based on Dave Wilson's
ocean wave method. Since the previous release, I've also reimplemented square breathing using the
Cassowary constraint solver. Expanding the square to make space for inserted tandems, couples, etc is
formulated as a linear programming problem, optimized so that the resulting formation is compact. Resolving overlaps is
formulated as a mixed integer program, which allows for either-or constraints: if dancers overlap on both X and Y axes, either the X overlap must be resolved, or the Y overlap must be resolved, or the dancers have to form a star.
Although there's plenty of core engine work left to do, I've started to shift back to working on the game UI. Hooking the newly improved dance engine up with the Sphinx voice recognition engine, tuning the recognizer, and generally putting all the bits together is expected to be the focus of the next (0.7) release.