Will code for …

I am no longer with Gnip. Which means that am available for other opportunities.

I know a fair bit about REST, HTTP, web services, extensible system design and scalable architecture. I like agile (small a) processes, Behavior (or test) driven development and dynamic languages. I am also pretty good at designing data interchange formats in JSON and XML. I dislike poorly factored, inelegant code. I do have a tendency to over-engineer things, but I am working on that.

If the above sounds interesting we should talk. My resume is here.

I’m one of the cool kids

It was pretty surreal to watch this unfold in my inbox. I happened to be one of the lucky 400 people to get spammed by Pradipta. The internet is a strange and wondrous place.


The Few, The Proud, The Pradipta 416

Reverberate seems to be having load issues so the story is: Yesterday a recruiter sent an email regarding some Ruby on Rails work to 400 people. But rather than using BCC he just sent the message to everyone. Shortly thereafter someone replied to all which, of course, went to all of us. The weird part is that it rapidly evolved into an interesting discussion amongst that group of random people brought together only by the ineptitude of a spammer. So much so that we have create google group and a logo. :)

Envy Code R

I love the new Envy Code R font. It’s very clear and easy to read. I had looked at this font in the past and quite liked it. However, I need a somewhat larger font than its native size and previous releases of it did not scale very well. Fortunately, the new version (pr7) seems to scales very nicely.

Here is screen shot of “pretty” Emacs (on Ubuntu) using this beautiful font

Pretty Emacs using Envy Code R font

Gnip Launches

Yesterday Gnip launched! We have a killer service offering. And apparently lots of other people agree. I am totally stoked to be part of the Gnip team.

The Gnip blog does a good job describing why we exist and what we do.

If you are looking for the quick elevator pitch it goes something like this: If are a consumer of public data APIs and would like to stop polling hundreds or thousands of URLs, we provide a way to notify you when any event meeting your interest criteria has happened. If you are a producer of data and would like to allow the world access to your data but the load of thousands of consumers polling your API is hard to manage, we help you by providing data consumers event notification. (Meaning they will only need to hit your API when something they actually care about has happened.)

If either one of those sounds interesting you should definitely check us out.

Announcing Resourceful

Resourceful has its initial (0.2) release today.

Resourceful is a sophisticated HTTP client library for Ruby. It will (when it is complete, at least) provide an simple API for fully utilizing the amazing goodness that is HTTP.

It is already tasty, though. The 0.2 release provides

  • fully compliant HTTP caching
  • a framework for implementing cache managers (memory based cache manager provided)
  • fully compliant transparent redirection handling (with hooks for overriding the default behavior)
  • plugable HTTP authentication handling (Basic provided)

Introduction

The API is strongly influenced by our successful experiences with REST. Each URI is represented by a Resource object. The Resource objects act as a proxy for the conceptual resource. Resources expose the basic set of HTTP verbs: get, put, post, delete. For example to get a representation of some resource you do this

require 'resourceful'
http = Resourceful::HttpAccessor.new
resp = http.resource('http://rubyforge.org').get
puts resp.body

If you want to post a form you do this

require 'resourceful'
http = Resourceful::HttpAccessor.new
resp = http.resource('http://rubyforge.org').post("name=Peter&hobbies=programming,diy", :content_type => "application/x-www-form-urlencoded")
puts resp.code

All non-2xx responses are either handled transparently (e.g. by following redirects) or the method will raise a UnsuccessfulHttpRequestError.

Conclusion

If you need a decent HTTP library in Ruby come on over and check it out. If you see something you want, or want fixed, feel free to branch the git repo and do it. Paul and I would love some more contributors and will welcome you with open arms.