When I am relaxing, I like playing games, yoga, watching movies and shows, reading comics, drinking, and dancing. I develop art games as my primary hobby, and I distribute them and the tooling I make for free. I collaborate with comics artist KJ Martinet.
- Worked as a backend specialist, designing and implementing distributed caching systems using Twitter and Facebook's advertisers API. Implemented a flow for backfilling an advertiser's historical stats using Twitter's asynchronous API.
- Spearheaded initiatives to test and code review more thoroughly. Designed a testing framework for Clojure that was specific to our system, which heavily reduced boilerplate code, and entirely eliminated a vast majority of catastrophic conditions from the test suite, which would render the whole test useless. Designed developer tooling, which allowed developers to easily introspect, refresh, and reload the system, promoting REPL driven programming.
- Refactored complex, mutative elements of code to eliminate race conditions and bugs. Wrote monitoring tools that caught several production bugs. Worked, in a general capacity, as someone who monitored the health of the production system, and as someone who took initiative to eliminate production bugs.
- Mentored juniors. Contributed to the Clojure open source community as a way to eliminate bugs found within those libraries.
- Was soley responsible for large chunks of the product. Utilized Ruby on Rails and Angular.js, working full stack. Designed and built most of the lawyer vetting process. Built and maintained a complex auto-syncing form for the application processes. Built and maintained the photo processing pipeline. Designed and implemented a Salesforce integration.
- Implemented a large amount of client facing frontend pages, including a good deal of the templates utilized in our CMS. Built admin facing tools.
carmen.miranda is a visual novel framework for Clojure. My primarly goal in the framework was to provide a very quick and declarative way to create visual novel style games. The primary challenge is the staggering amount of text (100+ word pages for the game I worked on while building this) I had to input, which required me to build an extremely terse DSL. The library also aids the user with representing and changing their data, aiming to completely separate the declaration of HTML from the declaration of how that HTML can change. It enforces a rigidity with Reagent (Clojure's most popular React wrapper) and requires that the user declares changes in advance using multimethods, to promote an extremely declarative usage of the Reagent rendering library.
Written as a tool to teach people about the language of consent. By having folks use a Clojure DSL to write a context-free language that would give them self care instructions, I hoped to teach folks that the language of consent should be explicit, and well established. It is more of a thought piece than a fully functional tool with all the bells and whistles, but I did iterate on this based off of user feedback to implement some features.
An experimental library I wrote for Clojure that uses a style of monadic dispatch in order to deal with functions with side effects, or to deal with functions that are likely to throw. This library was created as a response to a lot of the struggles I was having with stateful code at Adaptly, but after some review, we decided it was not worth the risk of introducing the new library. This library uses reified Java classes in order to create special callable objects that require an error handler for bad behavior.
A Clojurescript roguelike framework written in a weekend for a Ludum Dare. It takes a data driven approach to roguelikes, and the library largely works through declarative interfaces. Has a small sample game contained within the codebase.
A declarative, data driven slideshow framework that uses Clojurescript's homoiconic nature to allow presenters to write and run tests against their example code. Tests run live, and jobim integrates well with Figwheel, allowing for rapid development of presentations. jobim relies on a simple slide abstraction that you can extend.
A library for writing Clojure games in Unity. It aims to abstract a lot of the interop code that one would need to write in order to use Arcadia, and to provide functional or functional-seeming interfaces to Unity, while not letting go of the positive elements of Unity's built in component model system.
Kushana is a data driven, functional game engine authored in Clojure and Clojurescript. It is intended to be used for lo-fi 3d games, and for protyping networked games. In Kushana, you describe scenes as simple data, and then define middlewares that transform this data. Kushana then allows you to run that code both on the server and client sides. This project, as a proof of concept, is done, but its not fit for real development.
Worked with KJ Martinet to produce a short indie horror game for her art show, Abandoned Places, Forgotten Spaces. In the game, you wander around a forest finding the phantoms of dead animals as you hunt for food. It uses gameplay to explore the sudden and pervasive realities of death in nature. The game is in Unity, Arcadia, and Clojure. Featured at the NYC Arcade, Winter of 2015!
Programmed a silly shoot 'em up game using Unity, Arcadia, and Clojure for an art show, She Blinded Me With Science: Women in Science Fiction. The game was presented at the show where people could play it live. The game was not released to the public, because it was more of an educational endeavor for the team, and not meant to receive the sort of polish that would warrant a public release.
A simple JS app that implements some stuff I learned while taking a Coursera course on Automata theory. It uses a syntax free grammar to generate random X-Files episodes. Was a submission for KJ Martinet's X-Files themed art show.
Skull Beggar was built using Ruby on Rails, Angular.js, and Heroku (if you're visiting this app, give Heroku a second to spin up). It's a cute little app that lets you bet on The Binding of Isaac: Rebirth runs. It's got a bunch of nifty features, and was built to be relatively mobile friendly.