TRANSCODE Explorations into the Code Transcendental.

Also, Today: Four Projects on My Desk

Overlore, Oyl, YAML 2.0, and C0DATA

I want a place for the work that happens between the longer essays. Also, Today is a title, not a promise to post every day. Some entries may cover a day; others, several days or a week. This first one covers four things that have kept me busy.

Overlore: the seams before launch

In the latest deployment, a plan sent Overlore’s login service to the same machine as the shared identity server. That wasn’t the design I had chosen. Each site’s login service is supposed to live beside that site, so a problem with one server doesn’t hand over every part of sign-in at once. We caught the mismatch during the cutover and moved Overlore’s login service to Overlore’s own server.

Then I signed in for real and bought the smallest founder’s pouch myself. The checkout settled and the coins appeared in the right account. That’s a test, not customer revenue, but it proves the path from the game’s page through payment and back to the account works.

There was also a peculiarly small problem: Gmail grouped the sign-in messages and hid the bottom of email behind its collapsed text ... button. A changing line (date and time stamp) at the bottom of each message fixed that in my inbox. We added the Overlore logo to the sign-in template, too. Launch work is full of seams like this—less dramatic than building the game, but very visible to the person trying to use it.

The public first look is open; the game gates are still closed. You can meet one of three Bards and see ten real screens from the adventure.

In Overlore, the room art, voices, and dungeon master’s commentary use AI, while a Z-machine keeps the underlying game in charge.

Oyl: the fuzzer found more than crashes

Oyl is my YAML parser and emitter in C. Its fuzzer feeds it strange input, then checks that parsing, emitting, and parsing again preserve the same meaning. It also tests oyl_upgrade, the tool that rewrites YAML 1.1 for a YAML 1.2 reader.

The recent runs found several classes of trouble. A tag stuck to the next token without a space could pass when it should fail. A second set of properties could attach to the wrong node. Merge keys could look different to the upgrade tool than they did to Oyl’s tree. I worked through four rounds of fixes and added regression tests. The nastiest parser bugs do not always crash; sometimes they quietly change what a document means.

YAML 2.0: a proposal, not a standard

Oyl still reads YAML 1.x. In parallel, I’ve been drafting a proposal for YAML 2.0 to take to the YAML core team. The first language draft and a draft for YAML Schema are public. None of it is an adopted standard, and the choices are still open to argument.

The reason for trying is simple: today, country: no can mean the text no to one YAML reader and the Boolean false to another. My draft makes values text until an application or schema gives them a type. It also makes reuse and merging explicit, with limits on how much data a small file can expand into.

The last few days have been spent on the grammar, the schema, and what these rules would cost a parser in time and memory. An independent review caught several mistakes; one revision separated a schema wildcard for keys at this level from one that reaches down through nested mappings. Oyl’s parser work is feeding the design, especially its time and memory limits.

C0DATA: close to a first beta

Another Open Bohemians project, C0DATA, is getting close to what I’m calling its first beta. It uses sixteen of ASCII’s old control codes to structure data. The latest format redesign is implemented in seven language ports, all checked against the same 205 conformance vectors. The format specification sets out the rules behind them.

There is still work before I call it a release: a review of C0-DIFF, packages for the language registries, and fresh benchmarks for the redesigned format. The ports have 0.x tags already, but the coordinated beta is what I’m working toward.

I’m also going back through older posts here. Some need small repairs; others deserve to stay hidden until I’ve finished them. I plan to keep this shorter series going alongside the bigger pieces.

For more on the open source work, visit Open Bohemians. If you’d like to help keep it going, you can support the projects.