Matthew Kocher's blog



Interesting

  1. The the Riak Client gem uses nethttp by default. While it allows you to specify a timeout for a map reduce job, it doesn't set the nethttp timeout for the connection to riak. This means that all requests are effectively limited to 60 seconds. The project that discovered this is switching to curb.

  2. The Mac App Store is actively hostile to business users. There is no way for us to buy software through the app store without setting up a separate account for every three computers, and then you can only reuse a credit card for three accounts. We won't be purchasing any software through the app store that isn't absolutely necessary until there's a way to purchase N licenses and use those on N machines. Pixelmator is the first app to lose our business.

Matthew KocherMatthew Kocher
Velocity and Devopsdays Roundup
edit Posted by Matthew Kocher on Sunday June 19, 2011 at 10:22PM

I spent a large part of this week at Velocity and Devopsdays. I met a lot of great people and heard way more interesting things than I could absorb. Here's a collection of things (in no particular order) I found interesting.

  • Get a #&%*&#$##%#% SSD Already

  • JSFiddle is a gist-list site for sharing HTML/CSS/JS snippets. Looks to be a great way to share useful examples and problems. jQuery uses it for bug reports.

  • Dyn's DynECT seemed to be the standard answer for how to distribute load to different datacenters for load balancing and geo-targetting. There is no standard answer to defeating the CAP theorem.

  • There's a huge movement to rebuild Splunk in various open source projects. Logstash is an open source project which is piecing together various open source components to get something similar, but is doing index time extraction instead of search time extraction and hasn't gotten to graphing or analysis yet. Etsy is using Graphite extensively for metrics collection and say that developers prefer it to Splunk. Various other companies are building app-level only metrics collection/reporting solutions. The consensus in the devops community is that Splunk's pricing does work for the web. As a fan of Splunk, I hope they can figure this out as it's still better than anything I've seen.

  • Etsy's work with metrics collection is interesting - they've written statsD for aggregating things before sending to graphite and Logster for tailing logs and making graphite events out of them.

  • Joshua Timberman of Opscode has some great slides on how to write a Chef cookbook and I wish I'd gotten to see the talk at Devopsdays. I tend to think they error on the side of premature extraction for reusability, but I see their point of view. I'll definitely be using the remote_file resource and the file_cache_path.

  • 2011 is shaping up to be the year of the Zookeeper alternatives. If you're not familiar, Zookeeper is a reimplementation of Google's Chubby - a highly available and reliable system designed to be the system of record for where services are currently available. Netflix has their own internal solution. Heroku has Doozer, and Noah is the new kid on the block with a simple rest interface and http callbacks(aka: webhooks). Opscode is also trying to answer this need by querying the Chef server at runtime for the identities of other hosts on the network. As environments and servers becoming ephemeral, telling every server about every server gets to be a tedious liability. It'll be interesting to see where this goes.

  • Run Deck (aside from having a great logo) seems to be an interesting way to give users limitable, auditable, and repeatable access to server shells. It's a web interface that lets you execute commands on various configurable subsets of your infrastructure. It's got plugins so it can grab the current instances out of EC2, and a jenkins plugin so a Jenkins build can trigger a job in Run Deck. I'll definitely be checking it out when I get a chance.

  • Pipe Viewer - (pv) Looks awesome. You can put it in a series of pipes in a shell, and it'll print out a nice status bar about the amount of data passing through the pipe. 'brew install pv'

  • Opscode has a "fat" installer of chef coming out. It goes in /opt/opscode and includes all the dependencies in the package. This should answer a common complaint about having to install ruby to install ruby. (Yo, dawg, I heard you like Ruby)

  • CSS Lint - Nicole Sullivan and Nicholas Zakas teamed up and introduced CSSLint at Velocity, which looks like it'll a good addition to a lot of test suites. Nicole also mentioned some cool pure CSS buttons that work on dark and light backgrounds. Lea Verou's pure css backgrounds were mentioned, which went around the office a while ago but are worth a link. It was also news to me that CSS selectors are run left to right by a browser - "ul.foo span.special *" will match all tags on the page, then narrow it down.

  • Blue/Green Deployment is all the rage the days, and for good reason. Netflix and Amazon are both using it. You'll have to decide how it fits with your data storage layer, but it's worked well for me in the past and I'm glad to see it gaining popularity.

Matthew KocherMatthew Kocher
Guiderails: our Rails 3 templates
edit Posted by Matthew Kocher on Monday June 06, 2011 at 08:52AM

One of our goals for the first day a project starts at Pivotal is to deliver something the customer can see working. One of the ways we accomplish this is making sure getting up and running with all of our (more) reasonable defaults only takes a few minutes. We've been using guiderails for this internally for a while now, and soft launched it last week. I'm happy to give a full introduction today.

Currently Guiderails supports choosing:

  • Mysql or Postgres
  • RR or Mocha
  • Webrat with Saucelabs support
  • Cucumber with Capybara (no suacelabs support)
  • SASS (with HAML)

And includes by default:

  • A ci_build.sh script for running your project in CI.
  • A local git repo
  • An rvmrc
  • Bundler, auto-tagger, JSON, Heroku, rspec-rails, Jasmine, and Headless gems (in the global or development groups)
  • Jasmine initialized for JavaScript testing
  • Respec installed
  • Some testing related rake tasks

For more details, check it out on github at https://github.com/pivotal/guiderails.

Guiderails is a great way to get going quickly on a project. Many thanks to the Pivots that contributed.