Portfolio

Weight of a Torch Cover

THE TORCH THAT WITHSTANDS THE DARKNESS WILL CONSUME THEM ALL.

In a world on the brink, heroes called Synchrony risk everything to protect the Five Great Cities. When Kaia uncovers dark secrets and ancient power, she must decide if the true threat lies within her society—or the monstrous Others beyond its crumbling borders.

The Weight of a Torch contains the three short stories (The Weight of a Torch, Synchrony, and Vigilant) as well as two additional chapters that are not available online.

Auth Omnibus Banner

Cthonic Studios

You can find all of my work at cthos.itch.io and some of it on DrivethruRPG.

GW2 AssistantDownload on the App Store

GW2API is a nodeJS module designed to help facilitate communication with the excellent Guild Wars 2 API. It features several convenience methods that chain calls together in order to make more friendly results, as well as an internal storage mechanism to cache the results of calls without much effort.

import { GW2API, Memstore } from "@cthos/gw2-api";

const api = new GW2API();

// Set storage system to RAM if no access to localStorage
api.setStorage(new Memstore());

// Get daily pve achievement names:
const achievements = await api.getDailyAchievements(true); // the true is default, but this will translate the IDs to their objects directly
const achievementNames = achievements.map((a) => a.name);

// Get all character names associated with an account.
await api.setAPIKey("YOUR-TOKEN-GOES-HERE");

api.getCharacters().then(function (res) {
for (var i = 0, len = res.length; i < len; i++) {
// This API call just returns an array of string character names.
console.log(res[i]);
}
});

// Get Character Details
api.getCharacters("Zojja").then(function (res) {
console.log(res);
});
cthos@localhost:/Documents/Code/gw2-api$ node example.js
Getting Daily PVE Achivements:
Daily Kryta Vista Viewer
Daily Queensdale Event Completer
Daily Fractal
Daily Frozen Maw
Daily Maguuma Jungle Lumberer

Gitlab: https://gitlab.com/cthos/gw2-api

NPM: https://www.npmjs.com/package/@cthos/gw2-api

atom-gitbook is an Atom.io package which helps work with Gitbook by providing a sidebar that parses and displays the table of contents, and allows you to manipulate it from the editor.

Github: https://github.com/cthos/atom-gitbook

Because I needed a way to convert odt files to pdf files on the fly (and whenever they were updated in Dropbox), I wrote a quick Dockerfile to wrap up some common functionality in order to watch a mounted volume.

It uses fswatch to watch the filesystem (using the poll method since inotify generates around 12 calls per Dropbox file change) and a small shell script to invoke Libreoffice's command line.

Github: https://github.com/cthos/odt-to-pdf