The Changelog

Open Source moves fast. Keep up.

Generate 4 language bindings for your API in one Go #

You just built an API, and want to make sure everyone can use it. Building libraries in every language isn’t only going to be hard, its going to take a lot of time. Time you don’t have. This is where Alpaca can help.

You define your API according to the format, alpaca builds the API libraries along with their documentation. All you have to do is publishing them to their respective package managers.

Right now it can generate API clients in PHP, Python, Ruby, and JavaScript. You can see examples of the generated client libraries here. I can’t speak to the quality of all the generated language bindings, but I took a cursory look at the Python lib and it looks good. Looks like Alpaca could save us all a lot of time.

Sponsor: RubyTapas, short Ruby screencasts every week

In Episode #90 we talked with Avdi about pair programming, distributed teams, workflows, and of course, Ruby! Needless to say, we’re big fans of Avdi and his work — and we’re happy to have him sponsor the RSS feed this week.

Don’t just take our word — Avdi has shared an exclusive, Changelog-only, freebie of episode #72 for you to check out (the video above). The episode is called “Random Access” and it kicked off a short mini-series for Avdi where he takes his subscribers on a journey to reimplement a small subset of the UNIX “tail” command in Ruby.

Find dead code in your Rack app by running Coverband in production #

Neat idea from Dan Mayer at Living Social: Coverband is a rack middleware which helps measure production code coverage.

Why would production code coverage data be useful? Because you can use it to find (and then purge) latent code paths in your app. How’d it go at Living Social? Dan says:

After running in production for 30 minutes, we were able very easily delete 2000 LOC after looking through the data. We expect to be able to clean up much more after it has collected more data.

Read more about Coverband on the Living Social Tech Blog.

Que leverages PostgreSQL’s advisory locks to deliver a fast, reliable job queue #

Que is the new kid on Ruby’s job-backgrounding block.

It takes advantage of PostgreSQL’s advisory locks to provide concurrency, efficiency, and safety. Chris Hanks – Que’s author – in an email to us, says:

…in a benchmark on EC2’s biggest compute-optimized instance it’s capable of queuing and dequeuing almost 10,000 jobs per second, while DelayedJob and QueueClassic max out at around 500

Between that and its built-in support for transactions (for ActiveRecord and Sequel), Que looks pretty tantalizing to this long-time Resque user (and admitted Postgres fanboy).

Dashing creates gorgeous dashboards #

Dashing is a framework from Shopify for building gorgeous dashboards that can be displayed on large TVs throughout your office.

It ships with pre-made widgets, is completely customizable, and can be deployed to Heroku in a breeze. See Dashing in action here and here.

Members: Get 77% off RubyTapas for 3 months

For members only — Avdi wants you to start learning Ruby with a pro (him). He’s giving our members an exclusive 77% off discount to enjoy RubyTapas for 3 months. Normally a subscription to RubyTapas is $9 per month, but our members save $21 and pay just $6 to get access for 3 months!

Track issues and todos while you code with Watson #

Watson lets you create issues while you code, including custom labels, without ever having to interrupt your workflow. It syncs with remote services like GitHub and Bitbucket — Push locally created issues and get the status of remote issues right in your command line.

Pick your flavor and install either the Ruby or Perl version.

Keep an Eye on your processes #

If you aren’t happy with the current process monitoring tools out there, check out Eye. It uses Celluloid to provide multi-threaded process monitoring that behaves very similarly to Bluepill. One valuable addition is the ability to get more information about the processes running:

$ eye i(nfo)
    sample1 ....................... up  (21:52, 0%, 13Mb, <4107>)
    sample2 ....................... up  (21:52, 0%, 12Mb, <4142>)

Other bonus tools include debugging configurations and tailing the logs of the processes being monitored.

#110: Capistrano and Burnout with Lee Hambley

Andrew and Adam talk with Lee Hambley about some serious subjects such as Capistrano 3.0/2.0, open source burnout, various conversations around deploying, Ruby, respect, handing over the reigns and more. If you hack on open source or run an open source project, you should listen to this episode.

Git your game on with Githug! #

Githug is a cool new way to learn git by Gary Rennie. From the readme:

Githug is designed to give you a practical way of learning git. It has a series of levels, each utilizing git commands to ensure a correct answer.

Game on!

#108: with Katrina Owen

Adam and Jerod talk with Katrina Owen – Panelist on Ruby Rogues, Instructor at Jumpstart Lab and creator of, an open source platform for crowd-sourced code reviews on daily practice problems.

Avdi Grimm open sources Quarto after self-publishing Confident Ruby #

If you’re thinking about self-publishing a technical book, you should take a look at Quarto, a Ruby-based toolchain for generating ebooks in EPUB, Mobi, and PDF formats.

Quarto is essentially a set of rake tasks backed by a Ruby library. You can check out the README for all the details, but here’s an excerpt about the tool’s flexibility:

Quarto doesn’t (yet) introduce any revolutionary ideas to e-publishing. Instead, it ties familiar tools together in a way that lets you write the way you want to.

There are a lot of tools that try to tie together an end-to-end publishing pipeline. But when you want to interpose your own processing in between steps, you’re out of luck. The fact that Quarto is structured as a set of Rake tasks means that you can add your own dependencies, your own steps, or tack extra processing onto any of the existing steps just by adding to your project’s Rakefile.

Buyer beware. We reached out to Avdi to see if he wanted us to say anything in particular about the project, he replied:

here’s a quote: “It’s a mess because I coded it in a frantic week” :-P

Ahh, I know the feeling all too well.

Is he just being humble or is Quarto not ready for prime time? Hey, it’s open source so you can be the judge!

If you’re curious about Confident Ruby, be sure to check out this blog post where he announces the book’s release as well as Quarto’s.

Share your thoughts and upvote on Hacker News.

#102: RVM and Managing Ruby versions with Michal Papis

Adam Stacoviak and Jerod Santo talk with Michal Papis about the history and future of RVM, the plan for RVM 2.0, the complexities of managing your Ruby version, Ruby 2.0 and more. SPONSOR: App Sketchbook – use the code “DANSENTME” to save $5.00 Subscribe to The Changelog Weekly! Michal Papis (mpapis) on Twitter mpapis (Michal […]

Super powered Jekyll templating with Jekyll Liquid Plus #

For those of you running a Jekyll or Octopress powered blog, Brandon Mathis has been working like crazy on Octopress 3.0, determining what it is and isn’t, and along the way breaking off pieces to release as independent gems.

His goal in doing this, is to allow Jekyll users to be able to install a few gems and be able to use most of Octopress’s goodies without having to change a thing.

Yesterday, he announced Jekyll Liquid Plus.

Jekyll Liquid Plus includes:

  • Redesigned, but backwards compatible: include, assign and capture tags
  • All new: render, wrap, wrap_include and return tags

From this Alpha post from Brandon:

My goal for Octopress is to be a writer-focused usability layer on top of Jekyll and a cohesive framework for building themes and plugins. Octopress will work alongside Jekyll without getting in the way at all. It’s shaping up nicely.

Is it safe to say that Octopress 3.0 is coming soon? Many are waiting with baited breath. My guess is that with this and the other independent gems Brandon has released, he is getting close.

Check out the source for Jekyll Liquid Plus on GitHub.

Subscribe to Weekly to hear about more projects from Brandon.

Remote pairing in the browser? Pssh! #

Full disclosure: I am the creator and owner of Portly. Pssh works with or without Portly. But, without Portly, adding a local tunnel to your machine can be a pain.

If you’re a fan of episode #90 on pair programming with Avdi Grimm, you know that pairing can be an invaluable tool for debugging, learning, and just overall better code. Unfortunately, remote pairing generally gets less enthusiasm since there’s such a learning curve to the setup, and it tends to feel inconvenient.

Portly has launched a new tool called Pssh that makes remote pairing simple with just a gem and a browser. Install Pssh and run it either inside your tmux/screen session or from a vanilla shell, and your buddies can remote pair with you from their browser.

> gem install pssh
> pssh

If Pssh is started inside a tmux or screen session, it boots up its own console for you to manage users. If started from a plain shell, it behaves just like you opened a fresh console and kills Pssh when you exit.

Paired with the native Mac app from Portly, you can share a url to your session and lock it down with HTTP Authentication. Open up another browser tab to check out the changes to the local website you’re working on in real-time.

Check out the homepage, the readme or the source on GitHub to learn more about Pssh and how it works.

Share your thoughts and comments on Hacker News.

A startup template for Ruby on Rails 4 applications #

Way back in January, I wrote a blog post called “Rails has two default stacks”. In it, I discussed how people like to customize the defaults that Ruby on Rails gives you. Your company might prefer Postgres/HAML/RSpec, for example, over the default MySQL/ERB/MiniTest.

There’s an under-used feature of Rails that allows you to automate the creation of your own stack: templates. Check it:

$ rails --help

  rails new APP_PATH [options]


-r, [--ruby=PATH]              # Path to the Ruby binary of your choice
                               # Default: /opt/rubies/ruby-2.0.0-p195/bin/ruby
-m, [--template=TEMPLATE]      # Path to some application template (can be a filesystem path or URL)

Application template? Yep. There’s very little documentation on this feature, unfortunately. There is a work in progress Rails Guide that gives some answers, but it’s not done yet.

Anyway, the TL;DR is this: you can write a little script to help initialize a Rails app just the way you want to. And Rails startup template is exactly that.

Here’s some of the things it gives you out of the box:

  1. Adds analytics-ruby, simple_form, uuidtools, rspec, guard-rspec, and bourbon gems, as well as a few more.
  2. Creates a new git repository, and optionally a new one on GitHub
  3. Sets up foreman for easy environment variable and background service config.
  4. Removes include_tree . from your application.css, since the author prefers to require things manually.

There are some other features, as well.

Check it out on GitHub and vote it up on Hacker News.