The Changelog: Software Development, Open Source - Tweets from Chirp, Twitter's Developer Conference (Interview)
Episode Date: April 20, 2010While 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. ...
Transcript
Discussion (0)
I'm Christy Taylor with Open Source Bridge, and you're listening to The Change Log.
Welcome to The Change Log, episode 0.2.1. I'm Adam Stachowiak.
And I am Winn Netherland. We cover what's fresh and new in the world of open source.
If you found us on iTunes, we're also on the interwebs at thechangelog.com.
For a real-time view of the happenings on GitHub, check out tail.thechangelog.com.
And speaking of GitHub, go over to github.com forward slash explore where you'll find some training repos,
some featured repos, as well as the audio podcast from The Change Log.
If you're on the Twitter, you can follow ChangeLogShow, not TheChangeLog, and also Adam Stack.
And I'm Penguin, P-E-N-G-W-I-N-N.
Such a fun time out in San Francisco last week at the Chirp Conference, the first ever
Twitter Developers Conference.
Loads of fun, lots of new happenings with the Twitter API,
and finally got to match faces with avatars from folks I've worked with the last couple of years.
And who do we speak with over there?
We spoke with Hayes Davis from Austin.
He maintains a Twitter Ruby library,
competing with the Twitter gem.
And then we also met with Krista Kaler
from Open Source Bridge.
It's a cool new popular unconference up in Portland, up in June.
And then we also spoke with John and Eric from 140 Proof Ads about some cool open source projects they've got.
One of them is kind of an ambient sound project for monitoring your log files.
I think you'll get a kick out of it.
Oh, wow. Sounds kind of fun.
It was. Fun to be back.
Got a great interview lined up this week with Facebook.
So hopefully this will air before we record that interview.
If you've got questions for the Facebook team, let us know.
Anything about hip-hop or the 320 iPhone platform?
Yeah, that sounds exciting.
I'm actually really excited about the Thursday recording.
It's exciting to see what Facebook is doing at Open Source
and also to have them on the show even better.
You know, and Facebook has their F8 conference this Wednesday.
Hopefully there will be a ton of news coming out of the conference
and we can talk to these guys firsthand about it on Thursday.
Maybe a scoop. Who knows?
Hope so. Great interview this week, or interviews, I should say. Should we get to it? Yeah hand about it on Thursday. Maybe a scoop. Who knows? Hope so. Great interview
this week. Or interviews, I should say. Should we get
to it? Yeah, let's do it.
Alright, we're joined by Eric Michaels-Ober
and John Mnookian
from 140 Proof. Talking about some
open source stuff they're doing out there.
Hey, how's it going? I'm Eric.
Hey, what's up, man? It's GM3.
Cool, so you guys have a couple of projects we're going to feature in this Chirp Roundup Edition.
The first one being Racket.
So who's responsible for Racket? Let's talk about it.
I am. We both work on it, Eric and I, together.
But it came out of an idea that I had a long time ago.
I was reading a paper by a guy who had built what he called a sonic compiler.
And so this was back in the days when, like, most code was compiled.
And so you'd be running your C compiler, and as it was outputting different warnings and pragmas and errors and whatever else,
it would actually make audio, corresponding to what the compiler was doing.
And so you'd kind of walk across the room, go get a cup of coffee or something,
and just listen to how your program was doing.
And you'd be able to tell right away, like, oh, crap, you know, it's doing all this crazy stuff.
And so what we are at 140Proof is we're kind of data geeks.
We have a lot of graphing. We have a lot of stats.
We're an advertising platform, so there's just tons and tons of data.
And so ambient visualization is really interesting to us
because otherwise you just get drowned in the data.
And so we said, you know, everybody does visualization.
What if we did auralization?
And we had sort of an audio representation of our app in real time so that you could
actually listen to the performance of your app and kind of out of the corner of your
ear or whatever detect when things are going wrong. Eric can tell you a little more about
how it works.
Sure. So, yeah, basically we just map events in a log table. so you can use regular expressions to define certain events in a log file,
map those to an audio file, so like a WAV or AIF or whatever,
and that way, when good things are happening, you can hear
positive sounds. When neutral things are happening, it's just good
ambient noise in the background, and then when there's errors, you can also have louder
noises or more dissonant alerts. What we've done, because we're basically a Twitter app company,
we've mapped most of the good sounds to birds chirping. So when the app's running fine,
when good things are happening, it sort of sounds like this aviary in the background,
and then there's a big, loud, meowing cat whenever there's an error.
I love it. So how do you spell racket?
Like the tennis racket or like the sound racket?
Like the sound racket.
Cool.
And what's the GitHub URL?
I think the latest version, I don't even know what the master is,
but I think it's probably jm3, github.com slash jm3 slash racket.
Any dependencies on language or is it just standalone?
It's written in Ruby, and I think it has some crazy dependencies,
but they're in the gem file.
I think we've simplified the dependencies.
In the beginning days, it required like 14 Ruby libraries
because as I found playing sound in Ruby was very kind of non-trivial.
I come from actually like a Flash multimedia background
where it's super easy to play a sound file.
So we've kind of, Eric has
kind of helped us simplify the dependencies. So I think now
you can pretty much run, I forget
if there's a make script or there's a Ruby setup.rb
run that, it pulls all the dependencies and you're good to go.
But can it watch any log file?
Yeah, it's pretty customizable. So you just
define the regular expressions to
match whatever sort of strings you want
and then it'll play any sound. I forgot to mention, so this project so you just define the regular expressions to match whatever sort of strings you want,
and then it'll play any sound.
I forgot to mention, so this project also owes a huge debt to kind of inspiration from Fudgie's GLTale, right?
So GLTale is kind of this thing that can take arbitrary log files.
You have a parser.
It listens to that log file, and then it does these visualizations.
And we were like, all right, that's cool, but, you know, how can we make it our own and kind of enhance that a little bit?
So we definitely owe a debt of inspiration to that.
So Eric was eavesdropping on us talking to the Heroku guys about Padrino,
and I was talking earlier, and he says it's the new MIRB.
He got us talking about some MIRB admin stuff he wrote back in the day.
He's got a new project called Rails Admin that he's working on for Rails 3.
Let's hear about it.
Yeah, so way back in the day, before we were building Rails 3 apps, we were
building Merb apps, and
one sort of thing
that's always been missing from
Rails, and was also missing
from Merb, is this
nice admin interface
that actually exists in the Python
web framework Django. So basically what
I did for Merb admin was I just took
all of the CSS and JavaScript
from Django
and rewrote the backend
in Ruby and made it
basically a MIRB slice, which is kind of
their plugin architecture, so that
all you did was define your models
and add this plugin and you would get
this nice admin interface.
Now I'm rewriting that for Rails 3
so it should be live and ready to go
as soon as before Rails 3 official launches.
Active model base, is it ORM agnostic?
So MIRB admin is ORM agnostic.
So the V1 that I'm working on now,
just to kind of get it working, is active record only.
But the original MIRB admin, which you can still use
if you have a MIRB app, worked
completely agnostically with
there were adapters written for
ActiveRecord as well as DataMapper
and SQL.
So basically, Unfold,
you get CRUD screens for your models.
Is that the notion? Yeah, and it
looks exactly like the ones for Django.
So basically all the functionality that's in that you would have,
which is, you know, I'm a Ruby guy,
but I really like the Django admin app.
We steal everything from Python, don't we?
No comment.
Well, thanks, guys.
Hi, we're talking to Hayes Davis from Austin, Texas, about his Twitter API wrapper called Grackle.
Hi.
Hayes, tell the audience, I guess, who you are and what you're doing with the Twitter API.
Sure. Like Wynn said, I'm Hayes Davis.
I run CheapTweet.com, which is a search engine for all the deal sales and coupons people talk about on Twitter,
as well as TweetReach.com, which is a Twitter campaign analytics tool.
So that's who I am, a developer, and the founder of the company that does both those things.
So there's already a Twitter API wrapper out there.
Some of the books we have.
I maintain that one for John Neunemaker's Twitter gym.
Why Grackle?
What problems are you trying to solve?
Well, because the other rappers out there are terrible.
No, you know, I had a specific set of needs when I was building Cheap Tweet.
And basically the core thing that I came up with as my problem with the Twitter API
was a fast-moving target.
And it was, at least at the time especially, a little bit of a flaky target.
So you never quite knew exactly what you were going to get back and you knew things were going to change a lot. So basically the
way I implemented Grackle was just assuming change from the beginning. And I tried to
provide a very lightweight wrapper around the API. So Grackle's method syntax basically
mirrors the calls that you make to the API REST endpoints precisely.
And that's actually all done dynamically.
So if they introduce a brand new endpoint, it doesn't require any updates to Grackle.
You can actually just chain your calls together and access that endpoint without any other work.
So no new releases for me.
There's less work for me.
And I think most people want to be able to just go ahead and get started.
Sure.
And I should say I'm a fan of Grackle too. I've used it as well in a number of projects.
It provides a very different experience. I think one of the things that the Twitter gem
does is abstracts a lot of the API, where Grackle, you have to know more about the API
you're implementing, but that's also a good thing and a bad thing. Why don't you speak
to that?
Sure. I think, depending on the level of extraction you want, I mean,
I think that can be very, very good, right? If you really want to interact with
something that's very clearly a user object that has methods on it to access information about that
user, I think that works great. I think what happens is you get locked into a particular
model. So at one point, whenever they change the model
and they add new things,
then I think that you get a little bit of leakage there.
You have to kind of work around things.
So I feel like a lot of times I end up doing better
when I work with other APIs,
just staying kind of light above it
and not wrapping it with a whole lot of other assumptions about
how that API is going to work.
I mean, one of the first APIs I worked with in Ruby was Flickr.
And I just felt one of the, you know, I tried a couple of different gems and I just felt
like they had layered all this stuff on top and there had been some, you know, change
and it, you know, it was just, it wasn't a great experience.
And so I felt like I like to be a little bit closer to the endpoints, but that's just me.
One of the benefits of that is your API doc is now your wrapper doc, right?
Yeah, absolutely.
So I definitely like that part of it.
And also, it feels fairly Ruby-ish to me to be able to just kind of say,
here's my magic incandation, which looks like the URL that I'm trying to hit,
and the parameters kind of look like the parameters that are being passed.
And, you know, it just feels Ruby-ish to me.
So I like that part.
Let's talk a moment for the Ruby nerds out there.
How are you pulling off this syntax?
Is it method missing, or how are you mirroring those?
Sure.
So the way the syntax works is, yeah, I mean, so short answer, yes,
primarily method missing. But basically what I do is I have to know when you're done, right? So the
actual tricky part was to know that once you've chained together this random set of calls, I have
to know that you're wanting to execute it. So I implemented, one thing that I kind of like is that
when the last method, you can end it with a bang, and if you end it with a bang, that's a post. If you end it with a question mark, it's it with a bang that's a post if you end it with a question mark it's a get and to me that just felt it felt right
you're like i'm going to change something or i'm going to just retreat it um and so it actually
again it looks kind of like the url um but you can also do different formats so it actually checks
for a bang a question mark or um if you end up with like dot json or dot xml um and you can bang
and question mark those depending on what you want to do.
Since then, we've had to tweak things a little bit.
They've actually tweaked the lists API, for example,
is actually more restful than some of the other APIs,
so we've allowed some syntax for puts and deletes
and all that stuff as well.
That's fitting because I think most of my AP calls
either end with a bang or end with a question.
Why the name Grackle? So if you're not from Austin, you won't probably have seen these really annoying birds, but this is my nod to Texas. It's like a, a Grackle is a bird, so of
course, you know, on Twitter, you gotta have some kind of bird thing. At least it's not murder,
all right? So, but basically, you know, they're this kind of like crow on steroids, sort of super crow thing.
Anyway, I just like the name.
So I actually can attribute that to my wife.
She gave me that.
Kudos.
Well, plug the services that you built one more time, CheapTweet and TweetReach.
Yeah, sure.
CheapTweet.com, and also you can follow us on CheapTweet,
and you'll be able to find all the deals, sales and coupons
that people are talking about and there's a lot out there.
We found more than a million last month alone.
So they're out there.
There are all sorts of interesting stuff.
It's not just kind of things you can find anywhere else.
It's lots of things.
It's Twitter.
It's all sorts of stuff happening.
And TweetReach is Twitter campaign analytics.
So if you're into marketing PR or know someone who is,
this is kind of the service for them to see what's been happening
with links or hashtags that have been spread around Twitter.
We should mention we're outside of the Chirp conference for audio,
and that's what the seagulls are.
One final thing I've been asking, if you're familiar with the show,
the ChangeLog, we end all the interviews with,
what's in your open source radar? Here I've been asking, if you're familiar with the show, the changelog, you know, we ask in all the interviews with, what's in your open source radar?
Here I've been asking the Twitter developers
what's got you most excited about the
developments here at Chirp?
So, I think the thing I'm most
excited about is actually annotations.
I think that could open
up just some really amazing
stuff. I was a little worried
here. I just heard that it sounds like you might not be
able to annotate existing tweets and that might, so I don't know. I could put a little bit of a dampener on it. But
there's so many different things you could do with different clients able to add different
metadata that other clients could potentially consume and interact with. And then just depending
on what Twitter does, the ability to query tweets by random metadata. I mean, there's a lot of power
there to really surface some interesting stuff.
So I'm eager to see what happens with that,
as Ryan said, next quarter or whenever we're going to see that.
Cool. Thanks, Hayes.
Yeah, thanks, Wayne.
We're joined today with Christy Kaler from Open Source Bridge in Portland,
a new unconference for open source.
Explain to the folks what the conference is about and what you're doing up in Portland.
Yeah, this is our second year doing the conference,
and it's geared towards open source developers.
The last day is actually unconference, but the first three days are scheduled.
And we're actually working on finalizing the schedule now,
so it will be posted on the website soon, opensourcebridge.org.
And it's an all-volunteer-run grassroots conference.
Last year we had about 500 people, and I think we'll have about that many this year.
Tickets are pretty cost-effective, and it's in beautiful Portland in the first week of June.
So consider coming on out.
Any idea who might be speaking? I know you're finalizing the panel, Maggie.
I know that Mayor Sam Adams came out to do one of the keynotes.
I really shouldn't speak to the rest of the schedule until we get it posted on the site, though.
Last year you had about 500 attendees. What about this year? What do you expect?
I expect about the same number.
So we're going pretty strong. We had awesome feedback last year.
One of the really cool things about the conference is that we have an on-site 24-hour hacker lounge.
So after the sessions are done, you can hang out and get stuff done,
get code contributed to your projects, and learn from your peers.
What's the language representation?
You're a PHP developer by day.
What's the language breakdown, do you think?
From the talks that we got and the talks that we're considering, it's all over the board.
We've got some good PHP talks.
We have a lot of embedded development that will be represented this year.
Ruby, Perl, things on Parrot.
There will definitely be some DevOps talks.
So I think it's a really good spread this year.
It's going to be awesome.
On the changelog, we covered NoSQL quite a bit.
So any NoSQL coverage in those talks?
We will definitely have some NoSQL talks, including a talk on maybe it shouldn't be
called NoSQL, maybe how relational databases and non-relational databases can help solve
problems for people.
Awesome. So you mentioned earlier off mic about your day job with ShopIgniter. Explain
to the folks what that is.
ShopIgniter is an to the folks what that is.
ShopIgniter is an e-commerce startup, and we're pre-launched.
We're going to be launching very soon, in the middle of May.
And we're based on the PHP platform CodeIgniter.
And, yeah, so look more for information about ShopIgniter, shopigniter.com.
And you think you'll have a community edition?
Will that be open source? Yeah, we're offering a SaaS right now on the Rackspace cloud,
and eventually we'll have a downloadable community edition
that is open source.
So we're really looking forward to that.
Awesome.
One more time, plug the website for the conference
and how all folks can sign up.
Go to opensourcebridge.org,
and there's information there on how to register.
And on Twitter,
you're? I am
Christy Koehler, C-H-R-I-S-T-I-E
K-O-E-H-L-E-R
and opensourcebridge is
O-S-Bridge and shopigniter is
shopigniter.
Thanks, Christy.
Thank you for listening to this edition of The Change Log.
Point your browser to tail.thechangelog.com to find out what's going on right now in open source.
Also, be sure to head to github.com forward slash explore to catch up on trending and feature repos, as well as the latest episodes of the changelog. Outro Music