Monday, January 18, 2010

Ruby for Startups at Lone Star Ruby Conference 2009

Recently Confreaks posted video from the Lone Star Ruby Conference talk I gave in August, called Ruby for Startups.

I've refined the talk a few times since then but it's still a good representation of my current state of mind about what I've learned about Ruby and about software design while building OtherInbox. Check it out if you'd like to see more! The slides are posted here.


Labels: , , , ,

Monday, May 11, 2009

It's Not Always Sunny in the Clouds

At RailsConf last week I gave a talk called "It's Not Always Sunny in the Clouds" where I shared all of our lessons learned with OtherInbox and cloud computing.  I tried my best to go beyond the hype and talk about our real world experiences.  The slides are below, but here's the raw list of lessons:
  • “Everything needs to be automated”

  • Autoscaling is the easiest part

  • Think carefully about credential management

  • You really could use internal DNS

  • It's maybe not that cheap

  • Launching servers is not that fast

  • You will become dependent on “glue” services

  • You will depend on a distant faceless provider

  • Use DVCS

  • You will spend a lot of time on monitoring

  • Your logs will runneth over

  • Write lots of “in-process tests”

  • Snapshots are slow

  • Rails will be the least of your worries

  • Cloud services involve subtle-yet-massive tradeoffs

  • SQS guarantees delivery at least once

  • Queue lengths inaccurate for <>
  • SQS not necessarily FIFO

  • So you may not want a cloud queue

  • SimpleDB optimized for writes, not reads

  • You must code defensively

  • There are no good "cloud sandboxes"

  • Pay attention to MySQL timeouts

  • "User account management is -not- ideal."

  • You are locked-in to your provider

  • Relational DB may not be the best choice

  • Is there a benefit?

    • Changes the way you write code

    • You can start right away

    • Pretty awesome redundancy



Labels: , , ,

Monday, September 8, 2008

Today we launch OtherInbox!

Josh and I are in San Francisco at Techcrunch50.  Sometime between 1 and 5 pm Pacific time we'll be launching OtherInbox!  You can see the demo live at otherinbox.com.

What a great year it's been!  Thanks for everyone's help and support.

Labels:

Tuesday, June 10, 2008

Speaking at Lone Star Ruby Conference

I will be speaking at the Lone Star Ruby Conference in September about how we use Ruby to deploy, monitor, and manage a cluster of servers running in the Amazon Web Services virtual cloud.   Below is a summary of what I'll be talking about.

In OtherInbox, almost every system administration task imaginable is carried out using Ruby, meaning we as developers can enjoy all of Ruby's expressive benefits and spend less time scripting the shell, writing cron tasks, or using other languages. Because we make fewer context switches from thinking in Ruby to thinking in other languages, we also reap a big productivity benefit.

Using Ruby throughout our cloud also means that porting the application to run in different production environments is a trivial task, because Ruby is the glue connecting the Ruby components together, thus all we require is a Ruby interpreter to deploy.

Two key Ruby technologies have matured in the previous 18 months which make it ideal for almost every layer of managing a cluster of servers:
  • god.rb allows fine-grained process monitoring and daemon control (a la monit)
  • rufus-scheduler enables Ruby-based scheduling (replacing cron, and providing a great facility for running daemons that must be executed on a recurring basis)
When combined with these Ruby workhorses, developers today can spend much more of their time writing Ruby code, and less time struggling with the vagaries of their production environment:The talk will also include a discussion of using several different AWS gems to make cloud computing simple, by illustrating the use of Amazon's S3 and SQS services to distribute asychnronous work and handle communication between servers.

(cross-posted from the OtherInbox blog)

Labels: , , , , ,

Monday, June 2, 2008

RailsConf 2008 Recap

I wrote up a few articles on the OtherInbox blog about my experiences at RailsConf 2008:
The best blow-by-blow coverage so far is from Drew Blas.  Of the ones I attended or heard the best feedback about, I most strongly recommend looking at the slides for these: 

Labels: , ,

Wednesday, May 21, 2008

ORDER BY null kills MySQL filesorts dead

I spent some time today optimizing OtherInbox.  As our private beta expands, we are starting to see heavier usage, and so it's time to revisit some of my beloved SQL queries.

I use the MySQL slow query log to find out which queries were taking the most time -- that's been a wonderful tool that I plan to blog about later.  I will note that the output is much easier to make sense of if you parse it first with this script.  (It's really old, so I had to modify it to look at Query_time instead of Time)

Using the EXPLAIN command for each of the slow queries identified in the above log, I found one that was especially disturbing.   According to EXPLAIN's "extra" column, MySQL was resolving these queries with two fairly expensive operations: 
Using where; Using temporary; Using filesort
Fixing the "Using temporary" required some nimble manipulation of indices, but filesort was really perplexing me.  I wasn't using an ORDER BY clause, so as I read the docs, there was no reason to be doing a filesort.  But then I remembered that MySQL automatically does ordering based on GROUP BY clauses.  All I had to do was add "ORDER BY null" to the end of my query, and that did the trick:
Using where; Using temporary
If only all optimizations were so simple.

Labels: , , ,

Thursday, May 1, 2008

Looking for Rails developers (who isn't?)

For the past seven months I've been building a cool new consumer web app with some folks in Austin, TX, otherinbox.com/, and we're looking for experienced Ruby On Rails developers. We're a small agile team led by Steven Smith, founder of FiveRuns.

The whole site is Rails-based and makes extensive use of Amazon Web Services (EC2, S3, and SQS) and there's a new awesome challenge every day. More info on our jobs page.

Labels: ,