I'm an
experimentalist and
experimentalist. I enjoy making online
websites and tools, and
websites and tools, such as
SelectorGadget andSelectorGadget (selectorgadget.com), a Chrome extension for generating optimal CSS selectors, andBeeLine Reader.BeeLine Reader (beelinereader.com), a tool that makes reading faster and easier by using color gradients to guide your eyes.
I've spent time
studying web security.
researching security and privacy, mostly in web applications. I'm in the Google Security Hall of Fame for some subtle security holes that I found in Gmail and Google Documents in early 2011. More recently, I found a number of securityholes in Pivotal Cloud Foundry.
I'm also deeply interested in Physics and
emergent processes in nature.
the simulation of emergent processes and self-organizing systems, primarily from the natural world. Check out an HTML5 canvas-based simulation of ants exploring and
working togethercommunicating via pheromone signals. These pheromone signals are local, and although the ants know nothing about each other, the resulting emergent system displays complex behaviors, which allow the ants
to gather food, or the classic Conway's Game of Life.
Professionally, I'm a
software engineer.
software engineer specializing in systems architecture, security, and engineering practices.
I led technical development of Major Tom, Kubos's modern mission control software for small satellites. Before that, I was Chief Architect at
Mavenlink, where I built
Mavenlink, a startup that is empowering services companies to manage their businesses online. I wrote a lot of code and built
the engineering team.
the engineering team, applying
agile practices to
agile software development practices that I learned as a consultant at
Pivotal Labs,
Pivotal Labs (pivotallabs.com), CastTV, and Google,
including rigorous testing, continuous integration, and sometimes TDD & pair programming, to
frontend and
backend web development.
backend web development with
RubyRuby both on and off Rails
and various
DevOps tools.strange 3-4 letter UNIX commands in Docker containers and K8s clusters.I sometimes use machine learning.
I sometimes apply machine learning techniques, such as convolutional neural networks. I gave a talk at RailsConf 2012 about machine learning and originally studied it
in graduate school.
while doing my Masters research at Georgia Tech. My research focused on
artificial intelligence,
artificial intelligence. Specifically, I researched TTD-MDPs, a technique for generating a distribution of trajectories through a Markov Decision Process.
With my co-authors I published a couple of
papers.
papers:
I also researched
stochastic optimization
stochastic optimization for motion control of high degree-of-freedom manipulators, like octopus arms and elephant trunks (you can read my paper about it),
and machine learning in web applications.
Prior to Georgia Tech, I graduated from Haverford College with a BS in
Physics.
Physics and a concentration in Computational Science, which focused on
Physics Education.
Physics Education. This culminated in the development of three educational physics applets
that are featured in the Physics textbook Waves and Oscillations: A Prelude to Quantum Mechanics by Walter Smith.
Before that, I developed a low-cost, distributed data-processing cluster to search for radio pulsar signals.
I enjoy creating
open source software and writing
open source software, some of which includes:
McFly - Fast, full-screen Bash history search in Rust, prioritized with a neural network
Huginn - A system for building agents that monitor the world and act on your behalf (now with 20,000 stars on GitHub!)
SelectorGadget - A tool for easy CSS selector generation
HospitalHero - Volunteer-matching site during the COVID-19 pandemic
Reckon - Bayesian learning Ruby gem for command line accounting with Ledger
Expando - The expanding text jQuery plugin that powers this page
I also write
about space.The Orbital Index, a weekly technical newsletter about space science and industry.
I live in the
sunnysometimes sunnyfoggy
Bay Area.
You can contact me in various ways.
You should @follow me on Twitter and check out my infrequently updated blog. You can also contact me here.