Twurl – OAuth-enabled curl for the Twitter API #

OAuth is cool but developing with OAuth can be a pain. Inspired by curl and Hurl.it (featured on Episode 0.1.5 with Leah Culver), the Twitter team has realeased a couple of tools to make developing with the Twitter OAuth API much easier.

Twurl is a Ruby gem from Marcel Molina that lets you make requests to the Twitter OAuth API from the console. To begin install the gem:

sudo gem install twurl

Then from the command line (not the Ruby console) you can authorize twurl using your API keys:

$ twurl authorize --consumer-key the_key       
                --consumer-secret the_secret

Now you can make requests to API methods:

$ twurl /1/statuses/home_timeline.xml

The Twitter team also has a nifty GUI version up on the new Twitter Developers Site that even pre-populates your Twitter apps in a drop-down.

[Source on GitHub] [Web version]

Episode 0.2.1 – Tweets from Chirp

While in San Francisco for Chirp, Wynn caught up with Erik and John from 140Proof, Hayes Davis from CheapTweet, and Christie Koehler from Open Source Bridge about Twitter and open source development. 140 Proof Ad platform for Twitter John Manoogian III and Erik Michaels-Ober from 140 Proof Racket Monitor your log files with auralization Merb […]

Snapbird – Twitter search on steroids #

If you’ve ever spent time looking for a long lost tweet and have gotten frustrated by the short window that tweets are indexed by Twitter Search, then check out Snapbird from Remy Sharp of jQuery for Designers fame.

Snapbird lets you search someone’s timeline, favorites, or your own direct messages without the 7 day Twitter Search restriction. It even lets you permalink favorite queries.

Snapbird also uses Twitterlib, Remy’s JavaScript Twitter API wrapper.

Snapbird is open source so you can either use the hosted version or fork the project and run your own.

[Source on GitHub] [Homepage]

Gizzard – Twitter just sharded #

Database sharding, or shared nothing partitioning is a technique that helps sites with massive amounts of data scale. Usually sharding is built into the database technology, either RDBMS or NoSQL. Twitter has released Gizzard, a middleware networking service that allows you to shard data across arbitrary backend datastores.

The partitioning rules are stored in a forwarding table that maps key ranges to partitions. Each partition manages its own replication through a declarative replication tree. Gizzard supports “migrations” (for example, elastically adding machines to the cluster) and gracefully handles failures. The system is made eventually consistent by requiring that all write-operations are idempotent and as operations fail (because of, e.g., a network partition) they are retried at a later time.

Gizzard handles both physical and logical shards. Physical shards point to a physical database backend whereas logical shards are trees of other shards.

diagram

Gizzard supports advanced features such as fault tolerance, replication, and migrations. Twitter has a nice README with a great amount of documentation.

[Source on GitHub] [README]

MGTwitterEngine – Objective-C Twitter library for the iPhone #

If you need to integrate Twitter into your iPhone app or build your own Twitter client, you might check out MGTwitterEngine from Matt Gemmell. MGTwitterEngine consumes the Twitter XML API and supports both NSXMLParser and libxml.

When building your controller, the library supports a few callbacks:

- (void)requestSucceeded:(NSString *)requestIdentifier;
- (void)requestFailed:(NSString *)requestIdentifier withError:(NSError *)error;
- (void)statusesReceived:(NSArray *)statuses forRequest:(NSString *)identifier;
- (void)directMessagesReceived:(NSArray *)messages forRequest:(NSString *)identifier;
- (void)userInfoReceived:(NSArray *)userInfo forRequest:(NSString *)identifier;

If Obj-C is a bit too low-level for you, take a look at Appcelerator Titanium Mobile which has an easy JavaScript API that includes network API support. If you missed it, also be sure to check out Episode 0.0.8 with Marshall Culpepper.

[Source on GitHub] [Matt’s blog post]