May 2019 (Source on Github)

A goofy app I made for fun after a bad interview experience. It generates clap back text, with a handful of options for style, to really tailor the precise mood you're trying to convey. Really though, it's ✅ easier 😅 to ✅ just 😅 show ✅ what 😅 it ✅ does.

The design of the project is a stand-alone web app with no back end. It's written in Vue.js, tested with Jest, and hosted on Github Pages.

Unit Testing: How do I even?

Feb 2019 (View the slides)

A tech talk I gave on the basics of unit testing at a Women Who Code DFW meetup.


August 2016 to September 2016 (Source on Github)

A wrapper for the popular Node.js Request module that converts it to a promise pattern. For scenarios where streaming isn't appropriate, I fell promises are the most sensible pattern for managing most asynchronous processing.

The promises are created by the excellent Q.js module. The other major project which does this wrapping relies on Bluebird. This provides an alternative for projects where Q is the pre-existing promise library.


June 2016 (Source code on Github)

A drop-in dependency injection module for Node.js. The goal is to remain stylistically similar to the ordinary Node Require method. It is especially well suited for use within tests or to quickly experiment with alternative libraries.

The project has essentially no dependencies of its own outside of Node.js built-ins. The basic premise is to load files and eval them in a sand-boxed context. Some additional logic goes into intercepting other calls to require(), and to resolving relative paths appropriately.

Ark Server Dashboard

Feb 2016 (Source code on Github)

A web UI which presents some basic information about a game server which implements the steam server protocol, and enables the server to be started on demand by non-admin players. This was my first experience with Express, which was generally pleasant to work with. The app is basically functional at this point, but could benefit from some UX enhancements like progress/loading indicators.

Built using Node.js and Express.js to run the application logic. It can run as a self-contained web app. Or, it can instead be configured to generate static content which is suitable to be served by a high performance dedicated web server such as Nginx. Nginx then proxies only the REST endpoints to Express. The app also makes use of the Q.js promise library to simplify asynchronous network and system calls; and uses session keys to enable digest-like hashing to protect passwords in transit and prevent replay attacks on the API, although HTTPS would be recommended as more secure.