The Changelog: Software Development, Open Source - Tweets from Chirp, Twitter's Developer Conference (Interview)

Episode Date: April 20, 2010

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. ...

Transcript
Discussion (0)
Starting point is 00:00:00 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.
Starting point is 00:00:52 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,
Starting point is 00:01:17 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.
Starting point is 00:01:48 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
Starting point is 00:02:10 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.
Starting point is 00:02:38 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.
Starting point is 00:02:57 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,
Starting point is 00:03:22 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.
Starting point is 00:03:43 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
Starting point is 00:04:15 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?
Starting point is 00:04:49 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.
Starting point is 00:05:12 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
Starting point is 00:05:32 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.
Starting point is 00:05:52 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.
Starting point is 00:06:12 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
Starting point is 00:06:33 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
Starting point is 00:06:50 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
Starting point is 00:07:07 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
Starting point is 00:07:29 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,
Starting point is 00:07:46 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.
Starting point is 00:08:15 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?
Starting point is 00:08:43 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
Starting point is 00:09:13 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.
Starting point is 00:09:43 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
Starting point is 00:10:11 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,
Starting point is 00:10:39 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.
Starting point is 00:11:06 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.
Starting point is 00:11:33 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
Starting point is 00:12:00 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,
Starting point is 00:12:36 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.
Starting point is 00:13:10 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.
Starting point is 00:13:29 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.
Starting point is 00:13:44 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?
Starting point is 00:14:05 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
Starting point is 00:14:22 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.
Starting point is 00:14:51 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.
Starting point is 00:15:25 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.
Starting point is 00:15:59 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?
Starting point is 00:16:31 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.
Starting point is 00:16:57 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.
Starting point is 00:17:24 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
Starting point is 00:17:54 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,
Starting point is 00:18:08 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.
Starting point is 00:18:30 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

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.