Interesting Projects

The following is a (non-exhaustive) of projects I've built myself (or mostly myself). Most of these are open source but I may sprinkle in some non-open source projects that I am working on or have released.

DragonMUD

DragonMUD is started life as a MUD server designed around the specific needs of the game I wanted to build; however, since it's inception it has become much more than this simplistic view.

DragonMUD shortly evolved from an open base for MUD games to a gaming engine for any kind of text-based games. This is enabled via an (in development) plugin system powered by Lua that allows for modifications to the function and behavior of any aspect of the game. Plugins run on varying security levels (in other words, in game scripts can't access the file system, etc...) to complete their goals, even extending the dragon CLI with new commands.

DragonMUD is now fully backed by Neo4j for intense graph search capabilities using a hand-built ORM that is implemented in a mixture of Lua and Go to connect seamlessly without loss of power to the graph database.

Future plans for the project include a plugin-based web server allowing endpoints to be designed and written in Lua with a template system. This is intended to enable web console clients or a web based interface for creating new content for the games the person decides to use.

@nuka/state (paused)

@nuka/state is a atom-based state management library. Allowing you to create tiny, bit-sized pieces of state that can be safely passed around and used in your application. You can read the current value or subscribe to changes to keep up to date with value changes as they happen. Eventually this will feature a React binding (and potentially support other front-end libraries in the future) in the form of @nuka/react that will provide a useAtom hook that will tie a component to an atom's lifecycle and provide re-rendering capabilies. I was inspired to create this after working with large application stores via redux and wanting to try and unitize state in a more functional way but continue having the reactivity in the view layer.

Rite (paused)

Rite, a play on words for "rite of passage," is a Ruby validation library featuring a friendly DSL to define validators and build validation chains ("passages") that allow you to do complex validations against any ruby value. Other planned features include defining schemas to validate more complex Ruby types like class instance values and hash key values -- deeply nested if desired, and a help generation utility. Rite was inspired by Yup.js but is not a direct port.

DragonConsole

Unrelated to DragonMUD, DragonConsole is a Java based Swing-based Console. DragonConsole was originally created for what would have been a Java version of DragonMUD (which never got started) the console was the remaining bit. It's very easy to integrate an ANSI-color compliant Console into your Swing based applications using DragonConsole complete with in-console input mode (or maintaining a separate input text field). For now the DragonConsole project is on hold as I've moved on from active Java development but there are still features I'd like to see easily supported by the UI component such as easily piping and OutputStream into it and having it provide an InputStream from which you could read.

In addition to the standard ANSI colors DragonConsole features it own color codes which can be used instead of ANSI codes (and conversion back and forth is done by the component) that provide a few additional colors.