Ruby Fellow for AppFolio
I was hired as AppFolio's first Ruby fellow, a sponsored full-time position working on the core Ruby language. I worked on various bugs, Ruby and C profiling, optimizations, tool writing, statistics, and more. Plus obviously a lot of writing and communicating, some of it in Japanese.
Ruby, Rails, StackProf, GPerfTools, Instruments, ABProf, SVN, Git, Various
Ruby Fellow
DAQRI: 4DStudio and the Smart Helmet
At DAQRI, I led a tools and infrastructure team for 4DStudio, the Smart Helmet and a newer product. We added monitoring, system configuration and automation for the EC2-based system generally. We also built support for distributed storage for 4DStudio and otherwise improved reliability and auditability for our products, with a focus on safety for the clients' workplace.
Ruby, Rails, Puppet, Redis, Angular.js, WebGL/ThreeJS, Kafka, Git, Various
Architect, Principal Engineer, Team Lead
OnLive: Open-Source Initiative and Engineering Blog
While at OnLive, I created new tools to open-source. I scrubbed and open-sourced older code and started an engineering blog. I also hosted multiple public meetups at OnLive.
I resolved several procedural and legal obstacles. I wrote most blog content and a fair bit of the open source code.
See the OnLive GitHub repository and the OnLive Engineering blog.
Ruby- and Cassandra-based open source; WordPress for blog
Lead Engineer and Team Lead
OnLive Analytics
I served as OnLive's head of Analytics — the old team was gone before I arrived. I analyzed, documented and debugged the system, and then began making upgrades while recruiting a team. The existing system was enormous, and much cleanup work was replacing underused technologies with smaller, simpler replacements. I also supported the Business Intelligence team's needs for new data sources and infrastructure.

Existing: Pentaho Reports, Kettle, Coral8, Esper, InfoBright, sharded MySQL, Grails, Java, Tomcat

New work: Ruby, Rails, Cassandra, ZenDesk, iPost

Lead Engineer and Team Lead
Valhalla, a Ruby SOA Platform
Valhalla was a prototype to replace an existing legacy allocation and scheduling system for back-end servers. It used a novel dual-mode SOA/monolithic architecture based on Olaf (also written by our team.)
Ruby, Sinatra, Cassandra, DataMapper, Git
Lead Rubyist; Cassandra and ORM Expert
Hastur, a Cassandra-Backed Monitoring System
Hastur, a Cassandra-backed metrics system, uses ZeroMQ transport and has front ends in Ruby, Go, Scala and C. At peak, it pushed over 50,000 production messages/second. Hastur features powerful retrieval and dashboards.
Ruby, Rails, git, Cassandra, D3.js, various
Co-architect with Al Tobey
Analytics for Ooyala
Ooyala's Backlot
Ruby, Rails, git, Cassandra, MySQL, others
Analytics and Big Data Engineer
DAQRI Technical Talks
At DAQRI, I established a series of weekly technical talks on relevant topics: distributed systems, reliability and DevOps, Ruby, security. I gave about half the talks, and filmed and edited all of them.
Organizer, Speaker
Ruby Rogues Episode on Deployment Tools
I had the good fortune to be a guest on the Ruby Rogues, an extremely popular Ruby podcast, in March of 2015. They liked me enough to invite me back for another episode in May.
Guest Episode of Avdi Grimm's RubyTapas
Avdi Grimm asked if I'd be interested in recording a guest episode of RubyTapas and of course I jumped at the chance.
Sorry, this episode is not free, so you'll need to subscribe or get used to disappointment ;-)
Camtasia, Ruby, iTerm2
GottaBeGood Tour Talk: "Sustainable Ambition"
My wife and I delivered a talk on Sustainable Ambition for Sebastian Marshall's second GiveGetWin tour. It covered how to succeed in large projects (writing books, running a marathon, homeschooling children) when real life gets in the way.
OnLive Recruiting Talks
I gave talks on Ruby concurrency (threads and processes), Ruby app servers and Ruby HTTP app architecture at local meetups to recruit new Rubyists to OnLive. I also arranged a private meeting with Matz (Yukihiro Matsumoto, creator of Ruby) for OnLive while he was in the US. (slides) (slides) (slides)
Ruby, Rack, Rails
The Littlest ORM (GoGaRuCo)
"The Littlest ORM", a talk on building a simple ORM in Ruby, with full source code. Delivered at GoGaRuCo 2013 and later for the TorontoRB Ruby Meetup. (GoGaRuCo video on YouTube)
Ruby, Rack, Rails
OnLive Talks on Ruby and Distributed Systems
Many talks on many topics at my workplace, including:
  • Ruby Concurrency, Threads and Processes
  • Two-Week Tests in 30 Seconds (Mocking Time)
  • Cassandra SSTables and Internal Structures
  • Cassandra Consistency: All the Details
  • ZooKeeper: The Biggest Mutex You Ever Saw
  • The CAP Theorem
  • Getting to Rails 3
  • Git Theory and Practice
  • Various other Ruby and Distributed Systems talks
Ruby, Rack, Rails, Cassandra, ZooKeeper, Git
Rack in Every Framework
Given at eLance and later several other places.
Rack in Every Framework - writing Rack endpoints and middleware, and integrating them in various ways with various frameworks.
Ruby, Rack, Rails
Hastur: Open-Source Scalable Metrics with Cassandra
"Hastur: Open-Source Scalable Metrics with Cassandra," from the Cassandra Summit 2012 (Video) (Slides as PDF) (converted from Keynote, slightly odd).
This is primarily a Cassandra architecture presentation, about how to store a complex and highly-indexed time series in Cassandra.
Ruby, Cassandra
Ruby Big Data Tools at Ooyala (GoGaRuCo lightning talk)
Ruby Big Data Tools at Ooyala, given as a talk at GoGaRuCo 2011.
Ruby, Hadoop, Cassandra, LogStash
Ruby Gotchas
Ruby Gotchas - surprises when coming to Ruby from other languages. Given as a lecture with slides.
The Ruby Hangout — Various Rack Talks
Just Build Your Server on Rack (and the Five-Minute Ruby Framework). (YouTube video). Given as an informal talk plus questions for The Ruby Hangout.
Ruby, Rack
Building Ruby Castles in the Clouds
Building Ruby Castles in the Clouds, an interview with Sebastian Marshall (text interview). Sebastian runs a popular blog on self-improvement and strategy.
Ruby Self and Instance Variables
Ruby Self and Instance Variables. Given as a lecture with slides.
Ruby, RVM, Bundler
The Five-Minute Ruby Web Framework
Hacker Dojo Lightning Talks
The Five-Minute Ruby Web Framework. Given as a lightning talk with slides.
Ruby, Bundler
Skillshares at Ooyala
Various skillshares and presentations at Ooyala:
  • Ooyala Development Process and Tools (new hire training, recurring)
  • RVM and Bundler at Ooyala
  • Ruby Performance and Profiling
  • Lessons from Glowworm
  • Using Hastur
  • Build a Gorgeous Web-App Dashboard in Under Ten Minutes With Hastur::Rack
  • ZeroMQ, an Overview
  • Glowworm (intro, usage)
  • Design Reviews: Hastur, Chef for App Deploy
Ruby, RVM, Bundler, SlideRocket, Cassandra, ZeroMQ
Consulting for Serpikko
Serpikko (then called ScamArmour)
Part-time freelance work on ScamArmour's prototype web site. Pre-funding company, rescue job.
Rails, Mechanize
Lead programmer, briefly
Ruby on Rails Instructor, CMU Silicon Valley
Tutoring in Ruby on Rails for masters students in the Master of Software Engineering program at CMU's Silicon Valley campus, 2011 and 2012. Part-time.
Rails, RSpec, RubyMine, various
Tutor and debugger
Ooyala Open-Source and Tools
Various projects, usually open-source, including Hastur, Glowworm, Nodule, Nimrod, Tortoise, Sequel Rails Migrations, a documentation server, MapReduce Framework, Barkeep, Ecology, Termite. See Ooyala's GitHub repo for all the released projects
Ruby, RVM, Bundler, various
Sole author or co-author — varies by project
Replacing Java Incrementally with JRuby
A talk, "Replacing Java Incrementally with JRuby", about JRuby work at On-Site. Delivered at LinkedIn's campus. (video)
2009 - 2011, a web site for the multifamily unit rental industry
Ruby on Rails, JRuby, Java, JSP, Linux, RSpec, Shoulda, jQuery, git
Engineer, site team
Emblaze Mobile Operating System
2008 - 2009
Mobile phone project, later called Emblaze First Else, later repackaged software-only as the Else Intuition platform. This was powered by ALP, but involved a complete UI and graphics rewrite.
GObject, Clutter, OpenGL, C, Linux, Perforce
Co-architect with Justin Morey
ACCESS Linux Platform, a Successor to PalmOS
2007 - 2008
ACCESS Linux Platform, including Tasks, Memos, Photos and Attention Manager
GTK, C, Linux, Coverity, Perforce
Senior OS Engineer
PeakStream, Inc.
2006 - 2007
CodeBaby, a Python template system for C and C++ source-code generation (and a few other projects)
C, C++, Python, Linux, SVN
Primary author and maintainer
Ultra-Fast Zoomable Graphics for SugarSync Mobile
2005 - 2006
SharpCast, now SugarSync
A Photos product, now called SugarSync. I integrated Kakadu's implementation of JPEG2000 and prototyped the same with LuraTech as well. I also handled scaling, zooming and cropping, for which I wrote custom very fast fixed-point image libraries. My implementation was shown off within Palm to demonstrate, "hey, these new Windows phones have a lot of horsepower! Look how fast the graphics can be!"
C++, libjpeg, Visual Studio, Win32, Windows Mobile, Windows CE, JPEG2000
Co-author (2-man team), focused on graphics
Windows Mobile:
TapWave Graphics Hardware Acceleration
2004 - 2005
Hardware acceleration support for the TapWave Zodiac.
C, PalmOS, Linux
Sole programmer, PalmOS hardware acceleration project
BroadCom Set-Top Boxes
2002 - 2003
Captioning APIs (CC, CGMS, WSS, TeleText) for various BroadCom cable set-top boxes (including 97115, 7110)
C, custom hardware, Linux, ClearCase
Software engineer, individual contributor
NVidia Graphics Drivers
2003 - 2004
Linux graphics drivers for iTanium and Intel
C, Linux, Perforce
Software engineer, individual contributor
PalmOS SD Card Support
2000 - 2002
File system and launcher integration of apps on SD cards for PalmOS (launched with m500-series)
C, PalmOS, MacOS 9, MPW, Perforce
Team engineer, later maintainer of launcher
PalmOS HostFS
2000 - 2001
HostFS, a file-system emulator for the PalmOS Emulator
C, PalmOS, MacOS 9, MPW, Perforce
Original author, primary maintainer
Automated Source-Code Analysis and Generation
1999 - 2000
RIPC, a system to generate CORBA-like pairs of proxies and stubs. It used a Perl script to generate the code from C++ headers, including inheritance information and additional keywords for timing and data handling.
C++, Perl, WinCE 2.1
Original author, sole maintainer

These are from the container-tracking system for which I wrote RIPC
Callout Tools from a Highly Dynamic Language
1995 - 1997
Melange C callout tool for Dylan
C, Dylan, MINDY, d2c, HPUX, AIX
Student programmer
No More Lost Data
No More Lost Data is a text-and-video technical class on Rails Migrations and how to avoid downtime, data loss and other problems for large or busy production databases. (teaser video)
Ruby, Rails, Postgres, MySQL
Rails Deploy in an Hour
Rails Deploy in an Hour is a text-and-video technical class on deploying Rails apps quickly and easily on highly-scalable open-source tools. Normally the integration of these tools can take days or weeks to set up — the class software allows this in well under an hour using the open-source Ruby Mad Science software, also by me.
Ruby, Rails, Chef, Capistrano, Vagrant, Librarian, NGinX, Apache, RVM, WordPress, WishList Member, Camtasia, Wistia, Bootstrap, Octopress, more
Ruby Mad Science
Ruby Mad Science is MIT-licensed software to deploy a custom server for your Rails apps, quickly, using Chef, Capistrano, Vagrant and other tools. The setup takes under an hour for most apps, but uses standard best-in-class open-source tools so you can scale out later.
Ruby, Rails, Rack, Chef, Capistrano, Vagrant, Librarian, NGinX, RVM, Ruby, Bundler
Author and Maintainer
Octopress Bootstrap Sites
2014 and later
I redesigned and several product sites to use Octopress, and wrote several large batch jobs to reprocess Disqus comments properly for
Octopress, Jekyll, Rack, Liquid Markup, Disqus
Rebuilding Rails
2012 and later
Rebuilding Rails, an ebook on starting your new Rails-like framework from scratch. "Understand Rails by building Rails!" It's also one of the best sources of documentation on the Rack framework. I wrote the book. I wrote the sales site and payment code. I write all the marketing and analytics tracking.
Rebuilding Rails was also taught as an in-person class to interested OnLive Rubyists for professional development.
Ruby on Rails, Apple Pages,, Sinatra, Google Analytics
Surveyor, a display server for TMX terrain files and graphics from the Liberated Pixel Cup. Graphics via Source of Tales.
Ruby on Rails, CreateJS (aka Easel)
Parallel Ray-Tracer (student project)
Parallel raytracer for computer science class. Group project.
C, Linux, PNM
Author; server author for distributed version
Navier-Stokes Fluid Simulation in JavaScript
Navier-Stokes fluid flow simulation in JavaScript, based on Jos Stam's GDC03 code and paper. I added a lot of controls and some modifications like adding walls.
This Portfolio
2010 and later
This JavaScript portfolio. Uses hashchange, jQuery, animation, fancybox, hand-rolled templating and no dynamic server stuff whatsoever -- it's all javascript and CSS so a Rails failure won't cause problems. To see how it's done, just view the source of this page. Maybe some day I'll rewrite it in Octopress, like my other sites.
jQuery, fancybox, Bootstrap
Sole author
Shanna's Pizza
Shanna's Pizza, a simple game to teach young children to use logic gates for simple programming. Minimal text, for ease of use by pre-readers. Written in C with SDL. Linux and Windows.
C, Linux, Win32, SDL, VirtualBox, git, MinGW, NullSoft Installer
Sole author
RailsGame, a Server-Push Experiment
2009 - 2010
RailsGame (implementation, example), a Juggernaut-based approach to merging a persistent game server with a dynamic web site, sharing content and permitting use of a web client without constant AJAX polling. A dynamic, persistent browsergame engine.
Ruby on Rails, Linux, git, Juggernaut (server push), git, MySQL
Sole author
CheapToad, a very simple plugin to turn any Rails project into a HopToad exception server with only a few lines of code! Uses Rails Engines and a gemplugin to make this happen. Haven't you always wanted an RSS feed of your app exceptions?
Ruby on Rails, Linux, HopToad, git, MySQL
Sole author
NeoArchaeology, an Early Success at Writing
2004, 2009
NeoArchaeology was a column I wrote for Skotos back in 2004. one article got SlashDotted, which was gratifying. I wrote some more recently, to no fanfare whatsoever.
plain HTML, then my Rails blog
Author. Edited by Shannon Appelcline
RailsFrame — Early Work on Server Automation
RailsFrame, a deployment framework to set up a virtual Rails server with Vagrant using a specified set of applications and packages. Useful for things like server-push apps that often have extensively dependencies on other processes running at the same time.
Ruby on Rails, Vagrant, Chef
Sole author before
2011, a web app to help programmers build simple portfolios, carefully tracked. Unreleased.
Ruby on Rails, RSpec, cucumber, factory_girl, Haml, jQuery, git, MailChimp, CloudKick, Linode, Google Analytics and Webmaster Tools
Sole author
2007 - 2008, 2010 - 2011
WantMyJob, a web app for trading suggestions about finding good employers. Ruby on Rails. My first significant Rails app, rewritten multiple times as I improved. That's why it uses so many different tools :-)
Ruby on Rails, RSpec, cucumber, factory_girl, jQuery, git, MailChimp, CloudKick, Linode, Google Analytics and Webmaster Tools, MySQL; previously: OpenID
Sole author
Refactor It, a very simple web app to let users upload snippets of code, and suggest refactorings of other people's snippets. It was also a simple Rails 3 app tutorial with blog post (GitHub repo for tutorial).
Ruby on Rails, Linux, git, Harsh, Ultraviolet, MySQL
Sole author
My Blog, the Early Years
2009 - 2010, now (old implementation), a simple Rails-based blog, from scratch. Includes route mappings to translate from old WordPress entries, Disqus comments, tags, and other normal blog features. Mostly listed for content, not codebase.
Ruby on Rails, Linux, git, Linode, Google Analytics, Harsh, Ultraviolet, SQLite, HopToad
Sole author, sole content author
DiffEQ, My First Real RubyGem
2006-2007, 2010
DiffEQ RubyGem. Symbolic manipulation, numerical integration, basic graphing of Ordinary Differential Equations. Includes its own simple algebra package and GNUplot output.
ruby, Linux, git
Sole author
Phantasmal, an LPC-alike MUD Library
1999 - 2008
dgd, svn
Initial and primary author, primary maintainer until 2008. Now handled by a newer maintainer.
DGD Documentation, the Definitive Site
1999 - 2008
documentation site for DGD programming language. Based on Perl scripts and hand-edited HTML. Much content was excerpted from the originally unorganized DGD mailing list, but large sections were rewritten or original. Realistically, this was the most useful thing to grow out of Phantasmal.
HTML, custom Perl scripts
Sole author
CrystalSpace Physics Attempts
Early work on Physics code for CrystalSpace, a 3D library
Linux, C, SVN
Individual contributor
Maslow, an AI Experiment
Maslow, a simple needs-based AI for evaluating actions and predicting futures.
Ruby, Linux, git
Sole author
2007, 2010, 2012
Facelets, a simple JavaScript Canvas webtoy for FireFox and Safari. Later, one of my earliest forays into CoffeeScript as a rewrite.
JavaScript, HTML5, Prototype, Canvas, CoffeeScript
Sole author
SillyBand for MIT Scratch
SillyBand, a very quick demo project for MIT's Scratch. All media made by me, very, very quickly
Sole author