Rant is a procedural text generation language created by Nicolas "Berkin" Fleck. I usually explain it as reverse Mad Libs - instead of you filling in the blanks with an "adjective" or a "verb ending in -ing", you give the computer a pattern with those blanks, and it gives you back a randomly generated result. Of course, it's a lot more complicated than that - there's a lot of features that let you generate just the right text for whatever application you want. Its target application is game development, and to that end, it's found use in projects I've worked on like YouTube Let's Player Simulator 2016 and Colosseum Coach.

Rant is open-source, and that's how I came to start working on the project. The first thing I contributed on GitHub was a change to the way Rant exported dictionaries. Dictionaries are the collection of words that Rant uses to generate text - they could be a collection of nouns, or verbs, or animals, or anything like that. Dictionaries are usually written by hand, but Rant can also export dictionaries programmatically, so that - for example - one could import a bunch of pronunciation data from a publicly available database and have it exported back into a neatly formatted file. The formatting aspect is what I worked on. I created an optimized exporter than would export dictionary entries in the least amount of verbosity possible - instead of exporting twenty "animal" entries that all had the "animal" class, you could say "these entries are all animals," and have it be nice and neatly formatted.

Over the next few months, I contributed more and more to the project. The first big task I worked on was helping Fleck rewrite the parser from the ground up. After that, I moved on to writing a custom scripting language based on JavaScript for use in creating more complex Rant patterns - this turned out to be a failure, in the end, but it taught me a lot about parsing and language design. I then worked on changing the way Rant "packages" (containers for Rant patterns and dictionaries, for use in production) were saved. Followed by another parser rewrite.

My involvement on the Rant project has ended, though only from a lack of availability on my part. Rant has been invaluable in advancing my skills as a programmer, as well as in teaching me parser and compiler design. I hope in the future to find the time to work more on this library.