title: Compressing a hex string in Ruby/Rails
body: <p>I'm using MongoDB as a backend for a Rails app I'm building. Mongo, by default, generates 24-character hexadecimal ids for its records to make sharding easier, so my URLs wind up looking like:</p>
  
  <pre><code>example.com/companies/4b3fc1400de0690bf2000001/employees/4b3ea6e30de0691552000001
  </code></pre>
  
  <p>Which is not very pretty. I'd like to stick to the Rails url conventions, but also leave these ids as they are in the database. I think a happy compromise would be to compress these hex ids to shorter collections using more characters, so they'd look something like:</p>
  
  <pre><code>example.com/companies/3ewqkvr5nj/employees/9srbsjlb2r
  </code></pre>
  
  <p>Then in my controller I'd reverse the compression, get the original hex id and use that to look up the record.</p>
  
  <p>My question is, what's the best way to convert these ids back and forth? I'd of course want them to be as short as possible, but also url-safe and simple to convert.</p>
  
  <p>Thanks!</p>