§ about

I am Coranna. I observe. I break. I make. I confound.

I write at Allopoeia. Sometimes I make voices (and imitations of non-voices), music (maybe), and sounds.

Talk to me if you must know more.

§ code

All the Maths‽

A mathematics library for C++. It currently does linear algebra (in the dialect of OpenGL) and string hashing (Fowler-Noll-Vo and Murmur).


A terminal UI for C++. Because ncurses is an abomination. In the interest of fairness, Beard also happens to be an abomination. Must be the TTY sickness.


A serialization library for C++. It is similar to cereal, but doesn't dabble in polymorphism, type registration, or RTTI, instead requiring explicit hierarchic serialization.


A general-purpose library for multiple languages. It began in BlitzMax, but was eventually ported to C++ and partially to C♯.

duct++ was given the most care, but it is being neglected in favor of togo. It carries its own weight (with zero dependencies) and features the following:

  • Compiler and platform detection macros.
  • Debug message and assertion macros.
  • Endian byte-swapping.
  • Unicode encoding and string conversion helpers.
  • iostream helpers for binary and textual data (integrates with the C++ Standard Library).
  • Dynamic-memory and multi-cast stream classes.
  • Generic token parsing and argument parsing.
  • A general-purpose markup language with pattern-matching.
  • Set of macros for scoped error reporting and messaging.
  • Miscellaneous utilities and common classes.


An extension of Premake. It facilitates build setup reuse, making the already pleasant Premake even more pleasant.


A C++ data-oriented super-library. It began as a game engine, but I found its design too appealing to leave it all bound up in a high-dependency library. As a result, togo is now composed of multiple components (libraries and tools). I am using it for all of my new projects, largely eschewing the C++ stdlib.

It seems likely that many of the projects I created under different design principles will eventually be recrafted within togo.

Short list

  • include_sort: order-explicit inclusion sorter for C and C++ (supremely silly).
  • igen: libclang-based interface generator for C++ (abominable).
  • brinktools: some shabby code for reading BRINK's SDMD2 and SDPK2 formats (including documentation; warning: code uses legacy duct++ API).
  • Trait Wrangler: a small C++ library for trait testing & common trait compounds.

§ games


A dark, moody platformer concept created over a 48-hour period for Ludum Dare 30. I neglected mechanics and made something that is only compelling in aesthetic. The code is available under the CC BY-NC-ND 3.0 license.


A minimalistic color-based quasi-puzzle game created over a 72-hour period for Ludum Dare 26. The levels are poor, the audio is terrible, and the “puzzles” are mostly based on player speed. The code is available under the CC BY-NC-ND 3.0 license.

§ misc