The Changelog

Open Source moves fast. Keep up.

Dynosaur is a Heroku Auto-scaler #

Dynosaur is letting us skip that whole rigmarole of wake-up-at-6am-because-we-were-featured-in-the-NYT-and-traffic-is-through-the-roof. More sleep equals happy developers, and this new API from Google is proving very useful to us from an operations perspective.

Seems to be a first (and only) plugin to use the Google Analytics Live API (currently in private beta) and a configurable ‘users per dyno’ value to estimate the required number of dynos.

Check out Dynosaur on GitHub.

The first Flynn demo is here! #

If you caught episode #99 with Jeff Lindsay and Jonathan Rudenberg where we talked about Flynn, you’ll be glad to know the first fruits of their labor have been released for us to demo. Some additional underlying components from this first demo are also on the Flynn GitHub account for you to check out.

You should also read the Flynn roadmap to see where they’re going and learn about their upcoming fundraising needs.

We’re asking for an additional $350,000 for 2014 to support the existing team for the year and possibly bring in a few additional developers. Based on the results of our first campaign, we are focusing on companies who can contribute on a monthly recurring basis, but of course all types and amounts are appreciated.

#99: Flynn, Tent, open source PaaSes and more with Jeff Lindsay and Jonathan Rudenberg

Adam and Andrew talk with Jeff Lindsay and Jonathan Rudenberg about Flynn, open source, PaaS and more. You can tune-in LIVE on Tuesday’s at 5pm CST. Hack in style with a Changelog tee! Newsletter sign-up – get updates every Thursday from The Changelog! #89: Linux containers, Docker and dotCloud with Solomon Hykes flynn/flynn-spec Jonathan Rudenberg […]

#98: AFNetworking, Helios, and mobile & iOS development with Mattt Thompson

Adam Stacoviak, Andrew Thorp and Kenneth Reitz talk with Mattt Thompson, Mobile Lead at Heroku, about his many contributions to open source. You can tune-in LIVE on Tuesday’s at 5pm CST. AFNetworking/AFNetworking AFNetworking – a delightful networking framework for iOS and OSX mattt (Mattt Thompson) Mattt Thompson (mattt) on Twitter Helios helios-framework/helios, an easier […], an easier way to use PostgreSQL on Mac #

A week or so back, I was chatting with Craig Kerstiens, a product guy at Heroku, about an issue I was having with my Postgres install (through Homebrew) — he suggested that I use

There’s an easier way

Just download, install and run the app when you want to run Postgres locally for development. I always found myself fumbling with commands like pg_ctl -D /usr/local/var/postgres start or pg_ctl -D /usr/local/var/postgres stop -s -m fast to start and stop my Postgres server. Running is a much simpler and easier user experience now. Just run the app when you’re hacking, and quit the app when you’re done. Simple.

The classic Postgres elephant icon will hang out in your system tray for easy access.

Heroku and Rails specifics

If you’re hacking on a project and deploying to Heroku with a Postgres database, you’ll need to run heroku addons:add heroku-postgresql:dev to setup Postgres for your app before running something like heroku run rake db:migrate.

For more details on using Postgres on Heroku check out You should also subscribe to Postgres Weekly – a free, once–weekly e-mail round-up of PostgreSQL news and articles curated by Craig Kerstiens.

log2viz: Logs as Data for Performance Visibility #

Today, Heroku announced log2viz: a way to visualize your log data. Here’s what it looks like:


This is for one of my applications, running on Heroku. It gives you real-time updates; these graphs actually change as you watch them.

It’s pretty easy to use the version Heroku has up, located at, I was already logged into my Heroku account, and all my apps were there.

If you’d like to use your own private install, that’s easy too: just clone the repo and do this:

$ heroku create -a myviz
# create a new oauth client
$ curl -i -n -X POST \
-d "client[name]=myviz-production&client[[redirect_uri]="
$ heroku config:set HEROKU_ID=xxxxxxxx HEROKU_SECRET=xxxxxx HEROKU_AUTH_URL=
$ git push heroku master

Pretty easy! Now you have your own copy running on an app.

For more details, check out the official blog post over on Heroku’s blog: it explains more details about how it actually works.

Code Triage sends you one issue a day from your favorite open source repos #

From Richard Schneeman’s release post:

I don’t have time to contribute to open source”. But who does? We’re too busy shipping products and open source is so daunting and time consuming.

What if giving back wasn’t so overwhelming, so time consuming, so vast and soul crushing? What if you could get bite-sized open source tasks delivered right to your inbox? You could work on them when you get some free time, while learning more about the underlying guts of the code you depend on. Well now you can with: Code Triage.

Making open source easier to jump in and get started, as well as remove the burden from maintainers is a long and deep topic.

The era of “too busy”, “too novice”, and “too lost to start” are over. Now is the time to solve bugs, merge good pull requests, and prevent maintainer burn-out. Together we can do it.

Code Triage is really a win win for maintainers as well as those looking to contribute but don’t know where to start.

If you’re a maintainer add your repos. If you’re wanting to help your favorite open source projects, sign up (Notice: direct link to GitHub auth).

If you’re interested in helping out with Triage directly, checkout the repo on GitHub as well as Richard’s blog post to kick off the project.

Hat tip to this week’s Status Code

Queue Classic: PostgreSQL-backed (and Heroku friendly) Ruby queueing library #

Perhaps queueing libraries are the new test frameworks.
You’ll get no complaints from me. I for one welcome some choice in picking the right solution for backgrounding jobs. We just covered Qu just last week, and this week we’d like to spotlight Queue Classic from Ryan Smith. Queue Classic aims to exploit some distinct features of PostgreSQL to build a database-backed queueing library.

As Ryan notes in the README

I was already using PostgreSQL to manage my application’s data, why not use PostgreSQL to pass some messages? PostgreSQL was already handling thousands of reads and writes per second anyways. Why not add 35 more reads/writes per second to my established performance metric? queue_classic handles over 3,000,000 jobs per day. It does this on Heroku’s Ronin Database.

His blog post elaborates on his philosophy of using a database as a queue and what makes PostgreSQL a good fit.

For basic usage as well as tips and tricks, don’t miss the documentation that includes plenty of code examples:

@queue ="priority_jobs")
@queue.enqueue("Class.method", "arg1")

Nesta: Heroku-friendly Sinatra-based CMS now a Ruby gem, gets new site #

We’re big fans of open source publishing tools. Although Tumblr has been a good way to bootstrap this blog, we have a dream to move on to something with a bit more publishing oomph. Thanks to Graham Ashton, NestaCMS is looking to be the future platform for The Changelog. Nesta is now a Ruby gem and has a shiny new web site.

For those not familiar with Nesta, it’s a bit like Nanoc or Jekyll, but instead of generating 100% pure static pages, it relies on HTTP cache to get the best of both worlds, dynamic content and static delivery. Geoffrey Grosenbach uses a custom Nesta setup to power the Peepcode blog.


If you’re not a designer, the default Nesta theme includes the basic design elements of a good blog or web site:

  • Semantic HTML5
  • Clean typography
  • Easy to extend or embed
  • Write content in Markdown, Textile, or Haml
  • Support for Google Analytics, Atom feeds, comments (via Disqus), XML sitemaps…

Installation and creating a project

Now that Nesta has been gemified, your project only needs to worry about content and templates, all the Nesta plumbing is provided by the gem. To start, install the gem:

gem install nesta

Now we have a nesta command line interface:

» nesta

    --help, -h            Display this message.

    new <path>            Create a new Nesta project.
    demo:content          Install example pages in ./content-demo.
    theme:install <url>   Install a theme from a git repository.
    theme:enable <name>   Make the theme active, updating config.yml.
    theme:create <name>   Makes a template for a new theme in ./themes.

    --git                 Create a new git repository for the project.
    --vlad                Include config/deploy.rb.

To create a new site, just type:

nesta new my_cool_blawg

This unfurls a basic Sinatra-powered Rack app with a folder for your content:

my_cool_blawg » ls -la                                 ~/Projects/sandbox/my_cool_blawg  
total 16
drwxr-xr-x   6 wynn  staff  204 Feb 18 08:41 .
drwxr-xr-x  11 wynn  staff  374 Feb 18 08:41 ..
-rw-r--r--   1 wynn  staff  116 Feb 18 08:41 Gemfile
drwxr-xr-x   3 wynn  staff  102 Feb 18 08:41 config
-rw-r--r--   1 wynn  staff  175 Feb 18 08:41
drwxr-xr-x   4 wynn  staff  136 Feb 18 08:41 content

You can add some dummy content as well:

nesta demo:content

Now you can crank up nesta with Shotgun (or Passenger, etc.):


… and browse to your site on [http://localhost:9393]


What we love about Nesta is the front matter, or metadata you can drop into each file for arbitrary bits of info. Here’s how we’re using it in our upcoming blog rewrite:

Date: 2010-05-20 12:33:27 GMT
tumblr_id: 616093411
categories: github,typography,css
github_repo: typekit/webfontloader
title: WebFont Loader - easy @font-face from Google, TypeKit, or your own site

# WebFont Loader - easy @font-face from Google, TypeKit, or your own site

Thanks to greater browser support for [@font-face](, web typography is breaking free from the same boring font stacks we've known for the last ten years. As with any new technique, @font-face introduces new challenges for finding the right cross-browser syntax, especially to avoid things like Firefox's [Flash of Unstyled Text]( issue.


This allows you to fully customize how you serve up your content, even specifying per-post templates or layouts.


Nesta also has great theme support. You can create your own theme:

theme:create <name>   #Makes a template for a new theme in ./themes.

… or install from a url:

theme:install <url>   Install a theme from a git repository.

Heroku friendly

Since Nesta plays nice with Heroku’s readonly filesystem, its a great cheap (or free) way to host a blog or any content-heavy site.

Outsource your content to Nesta

Another great fit for Nesta is as a mountable site inside another Rack application. You can easily have Nesta power your blog inside your Rails application:

MyApp::Application.routes.draw do
  mount => "/blog"
  # other rails routes

Nesta has a growing community. Be sure and join the mailing list, follow on @NestaCMS on Twitter, or join us in #nesta on IRC.

[Source on GitHub] [Home page]

travis: Distributed CI for the Ruby community using Rails, Websockets, and Redis #

Berlin based Rubyist Sven Fuchs asks if Java-based Jenkins is the best CI tool for open source Ruby projects.

Sven writes:

Instead, imagine a simple and slim build server tool that is maintained by the Ruby community itself (just like Gemcutter is, or many other infrastructure/tool-level projects are) in order to support all the open-source Ruby projects/gems we’re using every day.

Instead of just imagining, Sven and others have been working toward that vision with Travis, an extremely alpha Rails project. Travis is a single-page application built in Rails and uses Backbone.js as a client-side MVC frontend.

How it works

By configuring a post-receive URL in your GitHub project settings, GitHub will ping Travis when new git commits are received. Travis will then schedule a build in Resque, a Redis queue. Travis then uses Websockets courtesy of PusherApp to update registered browsers on build status as it runs in the background.

travis architecture

Take a look at some of the projects getting built over at, the project’s new home page or checkout Sven’s quick tour of Travis in this screencast:


Currently, the hosted edition of Travis is open to anyone with a GitHub account. Just sign in with GitHub. Once you’re in, grab your Travis build token and configure a post-receive URL in your GitHub project’s Service Hooks page:


Host Travis yourself

If you want to run your own instance, you’ll need to set up configuration settings:

$ cp config/travis.example.yml config/travis.yml

If you want to run on Heroku, you’ll need to set some ENV variables

$ rake heroku:config

IF you’re running locally, you can start a worker with

$ RAILS_ENV=production VERBOSE=true QUEUE=builds rake resque:work

… or if you’re using God:

$ cp config/resque.god.example config/resque.god
  $ god -c config/resque.god

How you can help

Travis is in EARLY ALPHA. Sven and gang are looking for folks to help test, log issues, and submit patches. If you want to join the community, join the Google Group or hang out in #travis on IRC.

Special thanks

Sven and team would like to offer a special thanks to Pusher App for donating a Big Boy account for the project. If you’d like to pitch in with the compute side of the project, (we’re looking at you Heroku or Linode), please ping Sven.

[Source on GitHub] [Blog post] [Discuss on HN]

WatchWednesday for 20100929

It’s Wednesday again, time for us to serve up another quick list of projects to watch on GitHub. These are projects you might have missed or should could keep an eye on. Heroku::Autoscale David Dollar makes automatically scaling your Heroku dynos a snap with this gem. Simply add the gem to your Gemfile gem ‘heroku-autoscale’ […]

toto – Close-to-the-metal blogging on top of Rack #

Take a look around the small site web landscape and it’s clear we’re not in Kansas anymore. It’s no longer a foregone conclusion that a new blog or brochure site should be built on a CMS or even web framework. Toto is the latest in a rising breed of static page generators.

Toto dumps the database and stores its content in plain text files. Its built on top of Rack and is Heroku & Varnish friendly so that your site will scream on even a free single dyno.

From the README, here’s how Toto works:

  • content is entirely managed through git; you get full fledged version control for free.
  • articles are stored as .txt files, with embeded metadata (in yaml format).
  • articles are processed through a markdown converter (rdiscount) by default.
  • templating is done through ERB.
  • toto is built right on top of Rack.
  • toto was built to take advantage of HTTP caching.
  • toto was built with heroku in mind.
  • comments are handled by disqus
  • individual articles can be accessed through urls such as /2009/11/21/blogging-with-toto
  • the archives can be accessed by year, month or day, wih the same format as above.
  • arbitrary metadata can be included in articles files, and accessed from the templates.
  • summaries are generated intelligently by toto, following the :max setting you give it.
  • you can also define how long your summary is, by adding ~ at the end of it (:delim).

To get started quickly, clone the default template Dorothy and deploy to Heroku in a snap.

[Source on GitHub]