👋🏼 Howdy!

I’m Adam Keys, a software developer and engineering manager. Sometimes, I’m a writer, pub quiz’er, and weight lifter. Occasionally, I’m funny or insightful.

Work

I’m an engineering manager at Pingboard. I manage developers, lead project teams, and work hands-on to deliver those projects. I’ve built people-centric HR features. I redesigned CSV import and integration functionality. I’ve onboarded QA and support engineers. I’ve mentored interns and coached a backend development team. I’ve evolved processes and adoption of the principles in Shape Up.

Previously, at ShippingEasy, I was a senior developer on the inventory management product. I collaborated with product managers to design, ship, and support this product within the larger system.

Before that, I was a senior developer, technical manager, and architect at LivingSocial. I improved the backend systems, identity service, and architecture that powered the customer-facing deals site.

Start Here!

These are computers, I know this encourages superpowers achieved from curiosity. An excellent developer understands adjacent topics and the software below his or hers in the stack. We become better problem-solvers by treating all software as knowable and following our curiosity.

Projects

And you shall know me by the trail of software codes and pondered words that I have typed.

Current

  • The Real Adam – An ongoing projection of my cult of personality, since the year 2002. These days it’s largely about code, teams, music, and trying to figure out the structure of the world.
  • Dotfiles – Jedi build their own lightsabers, or something. For me, this is an exercise in designing and building the precise sort of work environment I want to use for hours a day to make the things I make. Plus, shamelessly borrowing the code ideas of other people with nice workflow taste.

Previously

  • Sifter – This is an issue tracker that Garrett Dimon bootstrapped in 2008. I’ve been working with him on it as a side-project since 2010. I mostly function like bumpers in bumper bowling, but I have made the occasional code contribution too.

  • chronologic – A timeline API/service developed as part of Gowalla. Put in production in the summer of 2011 and operated through the shutdown of Gowalla spring 2012. Used Cassandra for storage and implemented a REST API. Coded entirely in Ruby. My first toe dipped in the waters of distributed systems!

  • slowjam – A slow query notification tool extracted from the Gowalla app code. Makes it very easy to locate and troubleshoot slow database queries in ActiveRecord models.

  • Dallas.rb – I started Dallas.rb in 2006 and kept it going through 2009 or so. It really flourished in 2010 when other, more organized, folks took the reigns on organizing each meeting.

  • sexyback – A library that attempts to map the data model and operations of Redis onto Cassandra. Successful as a proof-of-concept, not successful as an idea fully executed.

  • brollout – James Golick’s rollout is fantastic software for gently exposing new software to the harsh light of production use. This was an attempt to make rollout more generic, to work with multiple storage schemes.

  • friendship – An experiment in social graph APIs and storage.

  • hotpants – an experiment in model-integrated caching

  • adapter-cassandra – A gizmo that lets John Nunemaker’s fascinating toystore play nice with Cassandra.

  • bad_ruby – A library that makes it easy to do things in Ruby you should never, ever do.

  • basick – A tiny BASIC-esque language; an excuse to tinker with languge implementation

  • mub – Mechanical Uncle Bob, it yells at you if you aren’t writing enough tests on a per-commit basis.

  • silver-bullet – Bullet graphs in your browser. JavaScript after it was cool but before it was cool again, again.

Tiny contributions and hacks

  • dalli – Added celluloid/io support; upstream decided to narrow “exotic socket” support.
  • scam – Added docs as ronn-style manpages. Manpages are nice, ronn is great.
  • celluloid/io – Contributed a simple echo client example.
  • boxer – Added lazy initialization of boxes to make testing errors better.
  • rspec-spies – Add support for anything matcher.
  • cassandra – Fixed behavior in the Ruby client’s fake implementation.
  • kicker – Added an option for quite operation.
  • rails – Backported each_with_object from 1.9 and fixed a patch that fixes a bug. Wherein you may not have thought of putting these songs together.