The Changelog

Open Source moves fast. Keep up.

Twitter open-sources Typeahead.js, a jQuery auto-complete plugin #

From the announcement on the Twitter Engineering blog:

Twitter typeahead.js is a fast and battle-tested jQuery plugin for auto completion. Today we’re open sourcing the code on GitHub under the MIT license. By sharing a piece of our infrastructure with the open source community, we hope to evolve typeahead.js further with community input.

Sounds good to me! If you’re thinking ‘just another jQuery plugin’, you might want to take a look at its more advanced configuration options such as custom matching and ranking functions, international language support (including RTL and IME), and client/server mixed search data.

Check out the demo or peep the source code.

Discuss on Hacker news if you must.

Web applications take flight with twitter! #

Flight is a new lightweight component-based JavaScript framework by the developers at twitter. They wrote a wonderful article about it so I would encourage you to read it!

From the Flight homepage they answer, Why Flight?

Flight is distinct from existing frameworks in that it doesn’t prescribe or provide any particular approach to rendering or providing data to a web application. It’s agnostic on how requests are routed, which templating language you use, or even if you render your HTML on the client or the server. While some web frameworks encourage developers to arrange their code around a prescribed model layer, Flight is organized around the existing DOM model with functionality mapped directly to DOM nodes.

Not only does this obviate the need for additional data structures that will inevitably influence the broader architecture, but by mapping our functionality directly onto the native web we get to take advantage of native features. For example, we get custom event propagation for free by piggybacking off DOM event bubbling, and our event handling infrastructure works equally well with both native and custom events.

To keep up to date with Twitter Open Source, follow @TwitterOSS. Also, checkout the project on GitHub or view the README.

Bower is a package manager for the web #

I have yet to use this, considering I just found out about this project this evening. I had actually stumbled onto this project after stumbling onto Nicolas Gallagher’s little collection of utility CSS classes called SUIT.

When looking at SUIT, I noticed something different in its installation instructions bower install suit-utils which I found a bit odd cause SUIT is just a CSS library, not a Ruby Gem or something dynamic … so why the CLI install instruction?

Similar to Ruby’s Gemfile or Node’s package.json

Bower is a package manager for the web. But what does that mean? Similar to Ruby’s Gemfile or Node’s package.json, with Bower you can create a component.json file in your project’s root, specifying all of its dependencies.

Right now, when you are managing dependencies in your projects, such as JavaScript libraries, it’s all manual. Bower aims to change that.

Basically, Bower is a generic tool which resolves dependencies and locks down packages to a version. It runs over Git, and is package-agnostic. A package may contain JavaScript, CSS, images, or whatever and it doesn’t rely on any particular transport and lets you easily install those assets and manages dependencies for you.


Bower can install packages by name, Git endpoint, URL or local path. Here are a few examples:

bower install jquery
bower install git://
bower install
bower install ./repos/jquery

Build Status

For more details checkout Bower’s homepage or dive into the source code.

Zipkin – distributed tracing for service-based applications #

As more and more applications are composed of several or more services, finding all the bottlenecks between the data and the user is a tough problem in itself. Twitter has added to their growing list of open source projects with Zipkin, which provides a system for distributed tracing.

Zipkin architecture

Instrumented libraries in the stack send information to a Zipkin collector via Thrift. Data can then be queried and presented in Zipkin’s web interface.


Check the README or source on GitHub for more.

TweetStream – Easily access the Twitter Streaming API #

Steve Agalloco, Erik Michaels-Ober, and Jeremy Haile have delivered a major update to Intridea’s TweetStream (2.0.0) gem, which gives you access to the Twitter Streaming API.

One of the biggest updates in this version is the switch to OAuth as the default authentication method. This was necessary because Userstreams and Site Streams exclusively work on OAuth. You can still use basic authentication, but both Twitter and TweetStream strongly encourage you to switch, so you can enjoy the new features. Don’t worry, it’s simple.

The gem itself is built on top of em-twitter, which is an EventMachine client for the Twitter Streaming API.

Getting up and running couldn’t be easier:

require 'tweetstream'

TweetStream.configure do |config|
  config.consumer_key  = "123456789"
  config.consumer_secret = "abcdefghijklmnopqrstuvwxyz"
  config.oauth_token = "123456789"
  config.oauth_token_secret = "abcdefghijklmnopqrstuvwxyz"
  config.auth_method = :oauth
end do |status|
  puts "#{status.user.screen_name}: #{status.text}"

t, a command line interface for twitter (covered in a previous article), is also built on top of the TweetStream gem.

Head on over to GitHub to view the source code and browse the documentation.

twitter-text-objc — An Objective-C implementation of Twitter’s text processing library #

Twitter released a version of their twitter-text library for Objective-C today. It makes extracting entities from strings really easy.

Here’s the header:

+ (NSArray*)extractEntities:(NSString*)text;
+ (NSArray*)extractURLs:(NSString*)text;
+ (NSArray*)extractHashtags:(NSString*)text checkingURLOverlap:(BOOL)checkingURLOverlap;
+ (NSArray*)extractMentionedScreenNames:(NSString*)text;
+ (NSArray*)extractMentionsOrLists:(NSString*)text;
+ (TwitterTextEntity*)extractReplyScreenName:(NSString*)text;
+ (int)tweetLength:(NSString*)text;

Extracting the URLs from a string is super simple:

NSArray *URLs = [TwitterText extractURLs:@"4 new HTTP status codes"];
TwitterTextEntity *entity = [URLs objectAtIndex:0];
NSLog(@"Entity range: %@", NSStringFromNSRange(entity.range));
// Entity range: {24, 34}

The source is on GitHub. There’s a Ruby, JavaScript, and Java version of this library as well.

t – Powerful command line interface for Twitter #

As regular listeners know, I love Earthquake, the super awesome text mode Twitter client from jugyo (十行). What Earthquake is to the streaming API, t from Erik Michaels-Ober is to REST API in the command line. Erik and I have helped maintain John Nunemaker’s Twitter gem for a few years now. While John included a basic command line interface early on, it never approached the level of Unix-y sophistication as Erik has created.

T supports a massive list of commands and subcommands including anything you’d expect in a Twitter client, but the real power is in piping commands together, Unix style:

Favorite the last 10 tweets that mention you:

t mentions -n 10 -l | awk '{print $1}' | xargs t favorite

Count the number of employees who work for Twitter:

t list members twitter team | wc -l

Add everyone you’re following to that list (up to 500 users):

t followings | xargs t list add following-`date "+%Y-%m-%d"

Check out the README for installation and usage.

Twitter Bootstrap – HTML, CSS, and JS toolkit from Twitter #

If you haven’t heard, Twitter Bootstrap is now 2.0.

Bootstrap, from Twitter

If you’re updating from an earlier release, check out the upgrading to Bootstrap 2 docs, or if you are brand new to Bootstrap or you just want to see some examples, take a peek at the examples page.

Also, they seem to be linking to an “unofficial” Tumblr for bootstrap – which could prove helpful in keeping up to date with all the movement and momentum this project has seen.

Be sure to checkout the source on GitHub and readme for additional details. Oh, and follow Bootstrap on Twitter (@TwBootstrap) … how meta.

Is there a Sass Port?

For those of you who are DYING to see an official Sass port, check out this Tweet thread with Mark Otto, Levi Figueira, Bryan Veloso and our sister site The Sass Way – it seems that Mark agrees that we need an official Sass port, saying “At this point I feel like we need to designate an official Sass port though in some way.”

If you’ve been a fan of the show for any length of time, you know that Sass is music to our ears.

#71: Spine, and client-side MVC with Alex MacCaw

Wynn caught up with Alex MacCaw to talk about Spine, CoffeeScript, writing books, and working at Twitter. Items mentioned in the show: Alex MacCaw, O’Reilly writer and open source developer now working on the front-end for Twitter. Spine Lightweight MVC library for building JavaScript applications, inspired by Backbone. Spine is written in CoffeeScript Eco is […]

earthquake: Twitter terminal client with streaming API support #

As at least one observant Twitter user has noticed, I’m testing out a new Twitter client. Earthquake, from jugyo (十行), is a Command Line Interface Twitter client similar to Console Tweet but with support for Twitter’s Streaming API.


Installation and usage

To get started, install Earthquake via RubyGems:

gem install earthquake

The gem installs a command line application, invoked via earthquake. The first time you run the application, you’ll be redirected to Twitter in a new browser window to authorize the application and provide a PIN to enter into the Earthquake prompt to complete the OAuth setup:

~ » earthquake                                                                        ~  
1) open:
2) Enter the PIN: 

Once authenticated, you’ll get a nifty lightning bolt prompt (⚡) from which you can tweet, search, even eval Ruby:

# tweet
⚡ Hello World!

# Search
⚡ :search #ruby

# Eval
⚡ :eval

As Mathias Meyer was nice to point out, you’ll want to type :exit not exit to leave the application.

Be sure and check the README for advanced usage and color customization.

Earthquake for Node.js?

Intrigued by my exit tweet, Changelog alum Tim Caswell wants to rebuild Earthquake in Node.js and offered a fine start in under thirty seconds.

[Source on GitHub]

UIDickBar: Annoying Twitter style #dickbar for your iOS apps #

Ever wanted to add an obtrusive Dickbar to your iOS apps?


Wait no more, for Ching-Lan HUANG 黃青嵐 AKA @digdog has packaged up this UI tragedy for you to use in less than ten lines of Objective-C:

UIDickBar *dickBar = [[UIDickBar alloc] initWithDickTitle:@"#DickBar" dickBadge:@"Stupid" actionBlock:^{
    // Anything you want to do after UIDickBar tapped
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@""]];
[dickBar showInView:self.view];
[dickBar release];

[Source on GitHub] [Blog post]

grapevine: Trending topics for stuff you care about #

Try as we might, even we, your humble Changeloggers, can’t cover all open source news. So what to do if you’re looking for your daily fix of Haskell news? Ben Johnson offers Grapevine, a Ruby server for aggregating messages, deriving trending topics, and sending out notifications.

In this initial release, Grapevine demonstrates using Twitter as a data source, GitHub repo languages as a filter, and Twitter to send out notifications of new topics. Or, in other words, you can now follow news in your programming niche thanks to Topsy, GitHub, and Twitter:

Installation and usage

If you want to run your own server, just install Grapevine as a gem:

gem install grapevine

Once installed, grapevine offers a command line interface to manage the server:

$ grapevine start
$ grapevine stop
$ grapevine restart
$ grapevine load
$ grapevine notify
$ grapevine show messages
$ grapevine show notifiers
$ grapevine show notifier [NAME]
$ grapevine show sources
$ grapevine show tags
$ grapevine show topics
$ grapevine show topic [NAME]

Grapevine uses a simple YAML-based config file to manage sources and notifiers:

twitter_consumer_key: YpHAA9xFYsdfruS06yk2Jvxy
twitter_consumer_secret: aMYXpyl4Sasdgg89xx4YD5asdfUwftkveuSfjtoDZlarJHR1ZHH

  - name: my_github_source
    type:  twitter-github
    frequency: 1h

  - name: github_js
    type: twitter
    username: github_js
    oauth_token: 1023929394-M8wtmerAMnI7ndH9x0ADzHTOsdfWOD0sxx9UsjvgcxNNx
    oauth_token_secret: m6Ryi8h7Y6yBxa0x0ffsaWUybE2vrxx8a9sYFsgnDB9QFG
    source: my_github_source
    frequency: 1h30m
    window: 6M
    tags: [language:javascript]

  - name: github_rb
    type: twitter
    username: github_rb
    oauth_token: 310128260-VKGv2UDYMNF0x0A0fsfqZhsdf3QwxiMkd0xfa0sf3vv
    oauth_token_secret: GAfa9xk6wyQ98mjXmXfrPN0as00sdfszxkStjxdzwTlEt
    source: my_github_source
    frequency: 2h
    window: 8M
    tags: [language:ruby]

Grapevine also supports to shorten links in outbound tweets. Just add your API creds to the config file:

bitly_username: johndoe
bitly_api_key: R_ae81e4e8ef7d10728725a57e90e1933

Got ideas for other sources and notifiers? Go ahead and fork the project.

[Source on GitHub] [Web site]

Ten ways to get (better) support for an open source project

With so much open source software getting created every day, it’s amazing how much we all benefit from the work of others in the community. But even free software, both as in beer and speech, isn’t all unicorns and rainbows. So what do you do when you have problems with that shiny new set of […]

Top ten reasons why I won’t use your open source project

Apologies for the loaded headline. It’s a hat tip to the Twitter how-to articles that taught us the benefits of setting our avatars, writing a witty bios, setting a location, engaging your audience, and oh yeah, adding value. As a team that digs through a mountain of open source projects each week, so that you […]

Tweeting GitHub Jobs

A few weeks back we teamed up with GitHub to feature GitHub Jobs on the podcast. Starting this morning you’ll start seeing new Tweets about jobs posted that we find interesting. We’ll be scheduling tweets to go out in the morning and afternoon (using HootSuite’s scheduling feature) with no more than two jobs mentioned per […]

ReTweetie – Add Native Retweeting to Tweetie for Mac #

ReTweetie is a SIMBL plugin for Mac that makes Tweetie use Twitter’s native Retweeting functionality. No longer do you get a “RT @username: ” tweet, but instead a real #NewTwitter Retweet. Just Retweet your tweet as usual, and let ReTweetie handle the rest.

Who developed it?

We give thanks to Nick Paulson of Linebreak, developer of CloudApp and BaseApp, for open sourcing ReTweetie and letting folks peak under the hood of a SIMBL plugin.

Also, special thanks to Christina Warren of Mashable for mentioning this on Twitter.

Installation Instructions

  • Download and install SIMBL.
  • Place ReTweetie bundle in /Library/Application Support/SIMBL/Plugins
  • Relaunch Tweetie for Mac.


  • Max OS X 10.5 or later
  • SIMBL – a free bundle loader for Mac

[Source on GitHub] [Homepage]

Episode 0.4.1 – Telephony with Chris Matthieu

Wynn caught up with Chris Matthieu of Voxeo Labs to talk about Phono, Tropo, Adhearsion, and building telephony apps with open source tools. Items mentioned in the show: We’re excited to team up with GitHub Jobs! To have your job posting read on air, just check “Advertise this listing on The Changelog Podcast for an […]

GitHub Follow Friday for 20101029

Another Friday, time to spotlight some GitHub folks you should follow. tenderlove (Aaron Patterson) The author of nokogiri and mechanize, Aaron also empowers you to do fuzzy texticle searches. isaacs (Isaac Z. Schlueter) The man who helps you manage your package using npm. abraham (Abraham Williams) The author of the canonical PHP library for the […]

The Changelog Archive 20100930 – News roundup

Wynn, Kenneth, and Micheil run through the news and highlights of a busy September on Sorry for the poor audio in this episode, due to technical difficulties we had to fall back to our single channel recording so we couldn’t cut out the typing and coughing :-/ Items mentioned in the show: Tablib: Pythonic […]

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’ […]

BBC Zeitgeist: All the news fit to tweet, powered by Ruby, Sinatra, RabbitMQ #

BBC Research & Development has released Zeitgeist, a directory of the most shared BBC links on Twitter.

Tweets and stories are indexed by topic and location and can be filtered by time period to include only the last 24 hours or 7 days.

Perhaps even more valuable than the news to the web development geek, is the well documented source:

Install instructions

Zeitgeist is a Sinatra app that consumes the Twitter Gardenhose and Track APIs using workers in a RabbitMQ queue.

[Source on GitHub] [Demo]

streamie: Node.js + Websockets = Real time Twitter client #

As new technologies are delivering on the promise of the Real Time Web, it’s becoming apparent that the revolution will be streamed. Malte Ubl seems to agree, creating Streamie, your very own real-time Twitter stream powered by Node.js and Websockets.

We talked about how crazy fast Node.js can be in Episode 0.2.0. In Episode 0.3.1, we talked about the possibilities of pushing updates to the browser with Websockets. In Streamie, the new Twitter User Stream API provides the payload to stream your tweets to you in real time.

Streamie screenshot

Websockets are implemented in Streamie using, which falls back to traditional polling in older browsers.


Although it’s still in early, active development, Streamie does offer some nice features you’d expect in a Twitter client including:

  • Scroll state memory – Streamie remembers your scroll position between visits. New tweets appear scrolled offscreen to the top.
  • Google Chrome notificationsGrowl-like notifications for new updates.

Instructions on setting up Streamie to run locally can be found in the README

[Source on GitHub] [Live version]

tweet-button: Easy Twitter Tweet Buttons for your Rails apps #

Nobody does 0day gems like Intridea. First they released OAuth2 the same day Facebook announced their plans for it. This week, they created tweet-button the same day Twitter unveiled their new official tweet button.

Tweet button is a simple helper to provide a nice Ruby interface for adding the button to your page:

= tweet_button :via => "changelogshow", :url => "", :text => "This is so meta!"

which will yield

Configurable options include:

  • :url – The URL to share; the default is the current URL.
  • :text – The text that will appear in the tweet; the default is “Check this out!”
  • :via – The attribution. Defaults to “tweetbutton”, but you should change that.
  • :lang – Set the language for the tweet (no default).
  • :related – Related Twitter accounts (no default).
  • :count – The tweet count box position (values can be “none”, “horizontal”, or “vertical”; default is “vertical”).

Check the README for advanced features.

[Source on GitHub]