Gem Newman

Home About Writing Software GitHub Academia


Think Goodreads, but for video games.

A web application written in Python (Flask) and Javascript (JQuery) that integrates with Giantbomb's excellent API.


An expense-tracking application.

A web application written in Python (Flask) and Javascript (JQuery) that tracks current, future, and recurring expenses. It also does automatic currency conversion. This was written with my specific use-case in mind, because I was tired of wrestling with scripting in Google Sheets.


A simple terminal RSS feed reader.

tread has most of the basic features you would expect from a feed reader, including read/unread tracking and starred items. It even supports displaying images via imgii. It's also fairly configurable.

Since it's available on PyPI, the easiest way to install tread is with pip3 install tread. The source code, along with the readme and some basic usage instructions, is available on GitHub. (But the code is awful, and you don't want to look at it too closely.)

Because of some esoteric requirements of curses, tread requires Python 3.5 and does not run natively on Windows. (Though I haven't tested it on recent versions of WSL.)


A Python package that converts images to ASCII.

imgii makes it relatively straightforward for a user or a Python script to convert images to ASCII. Both local and remote images are supported, and there is some basic colour support, too.

Since it's available on PyPI, the easiest way to install imgii is with pip install imgii. The source is available on GitHub.

Web Apps

I have a bad habit of writing web apps willy-nilly. In addition to Goodplays and Expenses above, I've also written Flask applications for voting in a poll, downloading files using limited-use download codes, and running a tournament (Swiss system), to name only a few.

While I try to consider the probable use cases of others, these projects are typically written with my specific needs in mind, so their general usability may be suspect. But if you decide to run one anyway and you're having trouble configuring your sever (especially if you want to run multiple applications at once), I wrote a blog post explaining how you can get Flask, uWSGI, and Nginx working together. I'm also happy to answer questions.


In 2019, I participated in National Novel Generation Month, which challenges programmers to write code that that writes a 50,000 word novel. My entry generates a Spellbook with a short frame story.

Some sample output:

200 Word RPG

In 2017, I participated in the 200 Word RPG Challenge, which tasks designers to create a role-playing game using 200 words or fewer. I submitted a collaborative storytelling game called Captain's Table.