step_sequencer A ruby gem for manipulating sounds and playing them back in a grid, like a drum machine
static_dom A tiny DSL for mapping the DOM to JS
vue-sinatra-boiler: a full stack boiler with Webpack, Vue, Vuex (Redux-like centralized client store), Coffeescript, Slim, Sinatra, websockets, Github oAuth, server-push, and crud generators. Includes a collaborative, realtime todos demo. See demo here
slim-lang-loader: A webpack loader for the Slim templating language. Compiles slim => HTML => JS
bandcamp labels: A listing of record labels on bandcamp, categorized by genre
Phoenix Socket Server: A realtime chat app built to practice Phoenix. Includes an online-users list and persisted direct messages
Paned REPL: A Ruby TMux wrapper for multiplexing in a REPL. _Splits the Pry terminal horizontally or vertically and can launch processes in the new panes
sinatra_sockets: A gemmified generator to create a sinatra/websockets API's skeleton
gemmyrb: A 'general-purpose' gem that I added eclectic functionality to, including a gem generater, ruby core extensions, and some natural language parsing / speech synthesis.
persisted_hash: gem which syncs a hash's state with a yaml file
easy_cache: a gem which persistently caches the result of method calls
sounds: A command line music maker. Uses multithreading and unix audio tools (mpg123, arecord) to implement a metronome, recording, and arpeggiator. Triggers sounds on keypress, loading samples from mp3 files.
browser tester: opens a chrome browser on the local system, and has a drag-n-drop interface for exporting command sequences into Ruby modules.
static fleet: A web interface for building & deploying static websites to AWS S3. Built with Sinatra; includes an in-browser file navigator and editor
static: A static site framework where pages are written in Markdown. Displays content in a responsive grid with tags and filters.
genrb: A static site compiler for sass, coffeescript, and slim. Includes an auto-reloading server using Guard.
sentence_interpreter: Parse a sentence into verb-noun phrases according to a user-defined lexicon.
marktplatz: Realtime accounts-based online user list, geolocation, and Google Map display.
tmsu-ruby: An ORM inspired by activerecord which uses the filesystem and TMSU tagging system
tickers: A web interface for managing background jobs. Includes an original async implementation.
prototypical: Unstyled Rails prototype of a tutor-hiring app. With realtime online-users list, realtime direct message notifications, and braintree payment gem.
linkedin crawler: Creates a categorized list of companies by crawling LinkedIn. Uses MonkeyLearn for keyword extraction
linux-keyboard-macros: lobal keyboard macros for Linux. Uses evtest and xdotool to read/write keystrokes and trigger scripts.
ruby-cli-skeleton: A starter template for Ruby command line REPL applications with ActiveRecord.
socket_helpers: gem I wrote for quickly putting together websocket / Rails apps.
logbot: an IRC chat logging bot with a Sinatra web interface. The applications share a database and are hosted on Heroku
trello clone: Made at App Academy. Uses bootstrap and jquery ui drag-n-drop
HTML5 snake: made at app academy
bandcamp_downloader: download any album from bandcamp
jobapps-web: A job application tracking system with a web interface. Includes a selenium script to get lists of companies off AngelList.
find_job_listings: Scrapes job listings
I got a Politics BA from UC Santa Cruz in 2013 and started programming right afterwards. I previously did a lot of public-outreach type work like voter registration, city council intern, polling, petitioning, etc.
For the past few years, I've been working as a mostly-backend Rails developer for startups here in the Bay Area. I'm a big fan of Ruby but would also welcome opportunities to employ other tools like Node, Coffeescript, or Elixir.
Here's where my roles have been: