The Changelog: Software Development, Open Source - Code for America (Interview)

Episode Date: July 26, 2011

Adam and Wynn caught up with Erik and Max, Fellows at Code for America to talk about civic-focused development and open source....

Transcript
Discussion (0)
Starting point is 00:00:00 This week's episode is brought to you by Campaign Monitor. Campaign Monitor is an email marketing service for the discerning designer. With it, you can create and send beautiful email campaigns. You can track the results and manage your subscriber lists. Campaign Monitor's reporting and analytics tools go beyond opens and clicks. The entire application is rebrandable, which allows you to earn profits from the campaigns your clients run. You can check it out at campaignmonitor.com. Welcome to the ChangeLog episode 0.6.5. I'm Adam Stachowiak.
Starting point is 00:00:45 And I'm Winn Netherland. This is the ChangeLog. We cover what's fresh, new, and open source. If you found us on iTunes, we're also on the web at thechangelog.com. We're also up on GitHub. Head to github.com slash explore. You'll find some training repos, some feature repos from our blog, as well as the audio podcasts. If you're on Twitter, follow ChangeLogShow and me, Adam Stack.
Starting point is 00:01:05 And I'm Penguin, P-E-N-G-W-I-N-N. Fun episode this week. We talked to the guys over at Code for America, Eric Michaels-Ober and Max Ogden, about all of the things that they're doing at Code for America and also Rails Admin and some other open source projects they have going. This is a really fun conversation. I think that we've talked in and around this space for a while, everything from open government to
Starting point is 00:01:28 I think it's just the citizen coder is a really fun topic. Yeah, it's nice to see how you can apply your skills. This is kind of like a Peace Corps for coding, as Eric put it. You can apply your skills for civic good instead of just a paycheck. So just a paycheck. And they get to take care of a few cities, and they've got Tim O'Reilly's blessing on this thing too, so it's a fun little thing for them.
Starting point is 00:01:52 Yeah, get some momentum. Speaking of momentum, we're going to be at Lone Star RubyConf next month. Yeah. Doing a little design eye for the dev guy slash gal down there. So if you're going to be in Austin in August, come see us. Hope to meet you. Hope to meet you, yeah, for sure. If you're into the SaaS and the Compass thing on the front end,
Starting point is 00:02:15 that's what we'll be talking about towards the end of the topic. And also, quick little plug for the SaaS Way. Follow them on Twitter. The SaaS Way on Twitter. Fun episode this week. Should we get to it? Let's do it. We're chatting today with Eric Michaels-Ober and Max Ogden from Code for America. So guys, why don't you introduce yourselves and a little bit about what you do at Code for America.
Starting point is 00:02:42 Sure. I'm Eric Michaels-Ober, and I'm a Code for America fellow for 2011. And I write a lot of open source software, mostly Ruby. I'm Max Ogden. I'm in a very similar boat. I'm a fellow here in 2011 as well at Code for America, and I'm continuing to write a lot of open source software this year, mostly in JavaScript. So I take it you don't have to be a guide to write a lot of open source software this year, mostly in JavaScript. So I take it you don't have to be a guide to be a fellow.
Starting point is 00:03:12 What's a fellow over at Code for America? It's basically just a one-year position. It's a fellowship, so you have the opportunity to work. Code for America's main focus, like what we're all about, is basically being something like a Peace Corps or a Teach for America for Geeks. So it's like a service year. You basically get to spend a year giving back to society. And so we're working to help government make their, basically bringing open source technologies to government and making it more transparent through open data and open source software. What sort of projects are you doing? Is it city focused or is it anywhere? It's both. We're working with three cities this year. So Boston, Seattle, and Philadelphia. And
Starting point is 00:03:58 then there's also a project with the federal government that I'm working on. I could talk a little bit more about that if you like. Sure. So the project that I'm working on this year is with the federal government. We're working with the Department of Labor to basically build a website for veterans to try to help them find jobs as they come home from Iraq and Afghanistan. And it's basically pulling together a number of services from around the web that already exist in order to help veterans, but creating a veteran-friendly interface on top of those services. So we're actually using the LinkedIn Ruby gem that you created, Dwyn,
Starting point is 00:04:38 and LinkedIn is one of our partners as well as a number of other web services that are job-focused, job-related. So I know, Eric, you're a Ruby, yes, Max? What sort of languages are you slinging? So before Code for America, I was working at a rail shop up in Portland, Oregon, a market research company called Revelation. And it was a really good engineering team, but I was given the opportunity to kind of, like Eric said, almost take a year off and focus on a bunch of the stuff that was previously side projects for me. So at the time, I was getting really into CouchDB. There's like probably an inside joke around the office that anything that I do, I try to do on CouchDB.
Starting point is 00:05:22 It's like my hammer for every nail, but so far it's worked out pretty well. And as a result, I've kind of taken the deep dive into all the fun HTML5 stuff you can do because all couches is a persistence API for you to use, but you have to do all of the fun logic in the browser, which is a challenge, but
Starting point is 00:05:39 I've kind of not abandoned Rails and Ruby. I still like Ruby a lot, but I'm basically using Jeremy's underscore JS. I'm basically doing all the fun stuff I was doing in Ruby before, all the same paradigms, but trying to do it in the client side now and then getting into Node a bit. So I've gotten really into JavaScript the last year.
Starting point is 00:06:00 Jeremy, Ashkenaz's underscore JS. I think Jeremy is the new drinking game, so the Hamlin SaaS is going to be Ashkenaz. So there. I think Jeremy is the new drinking game. So the Hamill and Sass, it's going to be Ashkenaz. So there seems to be some doubt, Max, of whether or not you're on the market for employment looking at your GitHub page. I was on Isaac Schleuder from Joyent's page a couple weeks ago. And he has this thing that's like, recruiters go away, I'm happy at my job. And it has this occupation at Joyent, and he's like, I really like working here, don't ask me for other jobs. And there's so many recruiter emails lately that I copied him and put, no more recruiter emails, please.
Starting point is 00:06:35 So, yeah. So we've kind of gone into this a little bit, but not given a good description of exactly what Code for America is. It's ran for a couple years now, but what exactly is Code for America? So to give some clarity there. Yeah, this is actually the first year of the program. So it's a little bit of a startup and a little bit of an experiment about what it is. We're kind of figuring that out as we go. But basically, it's a service year program for geeks. So just like Doctors Without Borders, if you're a medical professional and you want to sort of spend a year working for good, there's a program for that. And up until Code for America came around last year, there was nothing like that.
Starting point is 00:07:14 If you were sort of civic-minded and worked in technology, there wasn't really a place for you to give back. And so Code for America offers a fellowship. There's 20 fellows. And next year there'll be even more. And applications are actually open now. So anyone who's interested in being a fellow, you get to spend basically all your time working on open source software. That's part of the mission and charter of our organization, that everything we do is released under an open source license. And we hack on a number of existing open source projects.
Starting point is 00:07:49 So it's a great way to sort of work on open source projects, give back, and just work with some really talented, brilliant engineers from all around the country to do good. The other half of that, I think, too, like what our mission is, is to try to test the water in this new kind of civic startup space. Our leader, Jen Palka, just gave a talk at the Future of Web Apps conference in Vegas and had some really interesting statistics on, like, take the size of the iPhone market.
Starting point is 00:08:17 It's something like $2 billion revenue a year. The government IT software market is on the order of hundreds of billions of dollars. So if we can tap into the software that's powering the country and make those pieces of software just as competitive as the startup market, it'll not only create a bunch of better software to run government and make the government work better, but it'll also allow people who are limited to making iPhone apps right now. You could actually make the software that's helping people find what potholes they should fill in at the city level. We're basically doing a lot of research
Starting point is 00:08:53 and development this year to try to figure out what are the areas that we can actually tap into and start improving using the same development processes that we're using in startup land. Who backs this? You said startups, so somebody must have gotten into this. I know we saw a couple names there at the footer that we see often. We had a couple shows already with the Knight Foundation, with Jeremy Oskan. I think that's kind of part of it as well. Who's behind Code for America?
Starting point is 00:09:21 We're not really an incubator, but we're like a more traditional nonprofit, I would say, from a funding standpoint. So it's about half grant funding and half city funding. So the city governments pay us and then we get a bunch of money from nonprofits and philanthropy. And like I said, our goal is to try to prototype out some of these new ways of using technology in a government context. I use the term startup, but we don't have startups. But probably a lot of the fellows this year are going to go on to continue working maybe in the startup space or working for governments doing this kind of work
Starting point is 00:10:01 in the future. You mentioned LinkedIn as a sponsor or a partner. I can't remember which way you said it. I think you said partner, right? Yeah. How does that play into companies like LinkedIn, Yahoo? I'm seeing some of the in-kind donors on your donors page. Are those the partners you're mentioning?
Starting point is 00:10:20 Yeah, the corporate world has been very generous to us. Cisco, as you mentioned, actually donated our office space to us. They made an acquisition last year and moved that company into their main headquarters. So they very generously donated that space to us. And a number of other partners, a number of other companies have made in-kind donations to us. Google has been very generous, especially their Summer of Code program. We actually have 10 Summer of Code interns here for the summer working on Civic apps and building open source libraries. So that's been a lot of fun.
Starting point is 00:10:59 I'm surprised to not see Crunchbase's name in your list considering one of your project's names. But it's not actually the name. It's Shortstack. It's not see Crunchbase's name in your list considering one of your project's names, but it's not actually the name. It's ShortStack. It's inspired by Crunchbase. What's that about? Sure. We thought it would be a good idea to basically have a repository
Starting point is 00:11:16 kind of like Crunchbase, inspired by Crunchbase, but for governments and government-related software so that if you're a city and you want to select some sort of software, you can see what other cities that are similar sized or maybe similar geography are using to solve that problem and reach out to them and ask them questions about it or help that navigate through your selection process.
Starting point is 00:11:43 I think it's kind of unique. I've had a number of desires to do something crunch-based-like for, like, Wynn and I have talked about doing something like that for the open source world, but if only we had just a year of Sundays, I think, right, Wynn? It's kind of a fun idea, though. So it's wiki-based, I'm assuming? It's wiki-based in the sense that anyone can update it and edit it
Starting point is 00:12:05 it's actually a Rails app on the back end you know we've worked I guess in the startup community and the open source community for a number of years and kind of in this echo chamber we speak APIs and mashups and JSON and REST architecture and things of that sort
Starting point is 00:12:22 what sort of environment do you find when you walk into these government and civic projects? Do you have to sell them on concepts that we already speak, or how does that work? That's a great question. You know, most city governments are sort of Microsoft shops,.NET shops, and most of them have outsourced the majority of their IT, and they just work with consultants. They don't have a large team in-house doing application development. And so coming from sort of San Francisco startup world, open source world, you know, you don't see a lot of Linux servers running Apache or Rails or anything like that.
Starting point is 00:13:00 So it's, you know, it's definitely a little bit of culture shock when we come into these governments. But our city partners, that's sort of what they signed up for. They, a lot of them, you know, cities right now are struggling to meet their financial obligations. And maybe they can't afford, you know, the big expensive databases and big expensive technologies that they've been paying for in the past. And so open source sort of meets that need of being very cost efficient. But the problem is they just don't have the in-house expertise to bring those solutions to bear for their citizens.
Starting point is 00:13:43 So that's sort of what we come in and do and sort of show them the ropes and teach them how to deploy these services in their city to make a better, cheaper solution for their citizens. Earlier today, actually, we had a really awesome lunchtime speaker, Carl Malamud, who does public.resource.org. And Carl's original claim to fame was in the open government world. It was back in 1994. He got a grant, something like $30,000, to buy the SEC filing database that they were selling on a subscription basis. And then he just
Starting point is 00:14:17 took one license of the data and then put it up online so everybody could see the SEC filings. And since then, he's been like blazing a trail of taking huge data sets and making them available. And he really, I think, really eloquently illustrated a good model, which is any government that wants to build something that people are going to use should do it in three steps in this order. Put all the bulk
Starting point is 00:14:37 data up online so that anybody can have access to bulk, raw information, developer-centric information. Then refine it into an API and try to make the data useful, and then build your website on top of that API and dog food the API. And really do it the complete opposite way that a lot of vendors, giant software vendors and the government are doing it right now, which is we're going to build you a website,
Starting point is 00:15:01 and then if enough people complain to you about not having access to the information, maybe we'll build an API later, but you're not going to be able to get the bulk data out of it. And that's just one example of like an approach we're trying to like flip on its head in a bunch of the work that we're doing. And that's assuming that the government has digital data that is interesting to people. And a lot of our projects are like, we'll show up at City Hall somewhere and say, oh, well, you must have a database of every pothole that's been, like, complained about in the city with a map, right? Like, that's an obvious. And then sometimes they're like, oh, no, actually, they're, like, locked, like, they're on paper, or they're on another database in another
Starting point is 00:15:41 building, or there's no way to get it out. Or sometimes they do have it and it's not made available, and then that's a really kind of juicy scenario where we can take that and then turn it into a public API that a bunch of people can build, see how many potholes are reported in your neighborhood, or go fill in a pothole because the city is too busy to get to it, or any of these sort of applications. And I think it's really awesome when we can find data that's already there, but one of the things we're having a lot of fun with this year
Starting point is 00:16:07 is figuring out how we can generate data that the government doesn't have time or money to collect because sometimes the Venn diagram doesn't overlap of things the government's collecting and things that are interesting to people, but if the data were to get collected, it would be really helpful for the government for analytics, and it would also be really interesting to people
Starting point is 00:16:22 and boost citizen engagement in different areas. So we're looking at things like Ushahidi for doing crowdsourcing, that style of getting people to help out to build a data set. That's just fascinating. We talked to the Sunlight Foundation folks, and they had this concept of a citizen coder, and you mentioned consultants and kind of the entrenched consultant world. Do you think this concept of a citizen coder is on the rise?
Starting point is 00:16:51 And does your organization kind of foster that? Yeah, we hope so. I mean, one of the things we want to do is take government data that's, you know, hidden in this either proprietary formats or in some database that nobody has access to or knows where it is or just hasn't been digitized and take that, get it up on the web, make APIs for it, give people access to it so they can be citizen coders if they want to. The first sort of step in enabling that is having the government's participation. And all this data, almost by definition, is public data. It's data that has been paid for by the taxpayers and should be public. There's no sort
Starting point is 00:17:34 of reason or justification for keeping it behind closed doors other than either nobody's asked for it or technical incompetence. And so we try to solve both those problems. I think there's something like 30,000 municipalities in the United States, maybe more. I don't know the number off the top of my head. Some huge number like that, right? And we're working in three of them. They're bigger ones. But there's so many smaller multi-thousand people, 10, 20, 50,000 people's cities around the country. And you forget about all the data we're getting and you just look at our GitHub projects, for instance. If you go to github.com slash codeforamerica
Starting point is 00:18:12 I think there's like 100 plus repositories on there. They're either things we've forked or things that we've made to solve different problems. Any of you listening out there in, let's say, the Midwest, in your, take one of our projects and clone it, change the title from the Boston fire hydrant mapper to the Kansas City, Missouri fire future years of Code for America is make it super actionable for a single developer living in a city that doesn't have any of this fancy stuff, any of this fancy government technology that we're making. Like, making it really easy to clone a project and stand it up and start, like, peddling it around the city. Go and talk to your, like, community groups to start using this stuff. We want to really, like, kind of kickstart some of this citizen engagement stuff, so you can just have a single developer set up a project
Starting point is 00:19:09 and then have all the tools that he needs to really get his community involved in it. Because we can solve the problem in a bunch of big cities, but I don't think that we'll be as successful if we don't get a bunch of, like the huge long tail of all the small cities working on this stuff. So there's a lot of opportunity. All it takes is one person in one city. So you guys are in San Francisco, right? Yeah. And one of the states we hear a lot about with government, especially with budgetary things and deficit and stuff like that. And you mentioned one of the biggest things with government
Starting point is 00:19:38 is just meeting their revenue needs and having enough money to go around to take care of the technology that they have to do their jobs, I guess. You guys are in San Francisco, but I see Boston, Washington, Philadelphia, and Seattle on your list. Why not Cali? Like I said earlier, this was our first year, and we only have 20 fellows, and we sort of wanted to get a sort of select diverse group of cities from all across the country. And we might be working with some cities in California next year, but our headquarters is in San Francisco, and we think that makes sense for sort of being at the hub of technology. But we want to work all across the United States. And next year, we're going to be expanding the number of cities that we're working in
Starting point is 00:20:32 all across the country, including smaller cities. So, for example, Macon, Georgia is going to be one of the cities we're working with next year, which I'm guessing most of your listeners have never even heard of or don't know quite where that is. I don't actually know, Megan. Not me either. So what is the selection process for the cities then? So the cities can apply to be a code for America City.
Starting point is 00:20:58 And there's a proposal process that's actually closed now. But we go through the city selection process each year and come up with a list of cities that we think have sort of have the right people to be a little more experimental and try the Code for America model and also who have an interesting project, something ambitious, but also that we can take a pretty good crack at in one year because that's the length of the fellowship. The other half, too, is you don't necessarily need a city's involvement with us for us to have impact. There's a whole spinoff organization between us and a group called Open Plans called Civic Commons. And Civic Commons is, the way that I describe it,
Starting point is 00:21:49 is going to take all the Code for America projects and any other projects that we can get that fit a similar pattern and just, like, spread them around to every other city. So, for instance, if we go into Seattle and we build something that allows Seattle neighborhoods to talk to each other better, it's not like no other city in the United States has neighborhoods that need to communicate inside of their neighborhoods better. We're really trying to pick.
Starting point is 00:22:10 When a city applies to our program, we look at their problem and say, how universal of a problem is this? And most of the time, they're pretty universal problems. Every city could benefit from them. But at the same time, having somebody on the ground in a city to really integrate the technical solution into the context of the community is really powerful, too. So like I was mentioning earlier, you have to have some software there because Rome wasn't built in a day. But we can't just copy-paste Rome between all these different cities. We need to have somebody, like a team, on the ground.
Starting point is 00:22:44 But you don't necessarily need the city's involvement to do these things. We're not in San Francisco city government, but because we're physically in SOMA, we've met with the innovation director, Jay Nath, at the city of San Francisco.
Starting point is 00:22:59 For instance, I was in a meeting with the art director for the city of San Francisco that we just did on a Friday one time. Jay and I and another fellow, Anna, a meeting with the art director for the city of San Francisco that we just, like, did on a Friday one time. Jay and I and another fellow, Anna, went over to the art director, his office, and got all of the art data for the city. So every location of every statue and, like, public mural that the city has commissioned, and we're putting it into a mobile app and an API that people can help improve the city's art database. And then similarly, Oakland, right across the bay, we went over there and they ran this event called Code for Oakland. That was the first time that
Starting point is 00:23:30 the city had ever taken any data and said, hey, anybody that lives in Oakland, come and work with our data and see if there's anything cool you can build. And one of the projects that came out of that that I've been working on is a big wiki for social services, like homeless shelters. And Oakland specifically has a lot of reentry programs. When you get out of jail and you need to basically rebuild your life, their government tries to help out a lot with that. But as you can imagine, the government websites for finding out about these services are really bad. So we're trying to take the data and then put it into a really appealing set of APIs that we're going to try to get a bunch of people in different cities to go around and fill out these databases of where all the homeless shelters are,
Starting point is 00:24:09 where all the food stamps offices are, and make them really actionable. So that's all stuff that's happened just by virtue of us being in physical proximity to these cities in the Bay Area. And I think that as more time goes on, hopefully more little projects pop up because somebody saw a really cool concept on one of our GitHub projects or something. And they said, whoa, there's a big opportunity in the city that I live in. Like, I'm just going to start going around and seeing if there's any interest. I'd like to switch gears for a minute and talk about the personal angle here. So Eric, having worked with you to use the word prolific
Starting point is 00:24:44 would be a massive understatement. And looking at your page, you, to use the word prolific would be a massive understatement. And looking at your page, Max, I think the same would be true. What does it mean career-wise to pursue this sort of position? I think we had visions of grandeur 10 years ago, thinking we had to move out to the Valley and make a lot of money as a developer. But getting to code on open source can be just as, not more rewarding what's it meant to you personally yeah it's incredibly rewarding i mean being a code for america fellow is definitely a pay cut for just about any developer but that's not why you do it right and it's been being a being a part of the open source community, being able to sort of,
Starting point is 00:25:27 you know, contribute, like work on projects and go to conferences and have other people who I know and respect use those projects that contribute back to them. It's just an incredibly rewarding experience. And I think, you know, sort of no matter what I do next that's always going to be a part of what I do because it's important to me. Code for America is basically a chance to go all out on that and spend a year just really focused on open source. There's not a lot of jobs, unless you're a Yehuda Katz or someone like that, who,
Starting point is 00:26:06 uh, it's really hard to, to find a job where you get paid to write open source software and, uh, Code for America, you know, you don't get paid that much, but, but again, you, you get the, the benefits of doing it, um, it, you know, in the community. And, uh, yeah, I think sort of my, my career prospects going forward are, um, I'm, I'm prospects going forward are I'm very satisfied with the career move, you know, taking a year off to do Code for America. It's been one of the best experiences of my life. And I also just while we're talking about it would mention that the deadline to apply for Code for America is coming up real soon. It's July 31st. And the URL to do that is codeforamerica.org slash apply.
Starting point is 00:26:51 So I'd encourage anyone listening who's interested in it. It's been a great experience for me. And the application doesn't take too long to fill out. So go do that before the deadline. I think Wynn and I can both echo kind of what you said there with working on something that gives you that feel-good feeling. It's nice to make money, but at the same time, it's really nice to honor your blessings and your talents and do something that is good for humankind in general in whatever way you see fit. I actually listened to one of the YouTube videos. Carla Macedo, I think is how you say her name massito yeah that's a great video about yeah she talked
Starting point is 00:27:30 about you know just being able to i mean it's like a it's an opportunity of a lifetime really i mean you get to be chosen out of i don't know how many get selected but or apply but i mean it's it's really a cool thing but uh and had mentioned, your GitHub profile is not lacking. One of the projects we've actually been eyeing up on on your profile, Eric, is Rails Admin. Have you made any use of that or progressed that in any capacity as part of working with Code for America? Yeah, it's been growing incredibly fast.
Starting point is 00:28:06 So for those who don't know, Rails Admin is basically an automatic admin interface. Originally, I started developing it as Merb Admin. I was a big Merb hacker back in the day. But then Merb and Rails merged into Rails 3, and as part of the Ruby Summer of Code, I actually mentored Bogdan Gaza, who's a Ruby Summer of Code intern, to basically port over Merb Admin to Rails 3.
Starting point is 00:28:36 And that project's just taken off. I think it has over 2,000 watchers on GitHub. And it's basically just a really easy interface that anyone can use to edit data. So basically just the crud of crud applications that you'd perform to any database table. There's a nice, easy UI on top of that, and we're definitely using that in Code for America projects,
Starting point is 00:28:59 and I've had a chance to develop that further as a Code for America fellow. I like how open source gets to circle back and feel this too. Some of the initiatives you guys are working on, just what it says is codeforamerica.org issues is openness, participation, education, and efficiency. We're all in this open source world. We get to contribute a small sliver of a fraction
Starting point is 00:29:26 of what is in open source. But it's nice to see that come back in and still be used and probably get you up and running pretty quickly too. I just actually made a graph on the new GitHub API, the v3 API of the last year, the last 12 months of my life and what the number of projects that I've had, like my activity on GitHub, just as an experiment to see. And last OSCON, last July, so about a
Starting point is 00:29:54 year ago exactly, Tim O'Reilly actually recruited me, basically, and I got really excited about Code for America. I was still working at the startup I was at for another, like, four or five months, but then left to come down to San Francisco around December. But from July, in July I had, like, nine GitHub repositories. But then as soon as July hit, like, now I'm at, like, 97 or something, and it was just, like chart just like skyrocketed. And I remember like, I, I had like a nine to five and then I would get off work and go in Portland to coffee shops until like nine or 10 or 11. And I was just like totally excited and like super pumped about all of this stuff in this space. And a lot of the projects I work on are, uh, like data driven, uh, two of the big themes, I would say, are getting people out in a community,
Starting point is 00:30:48 taking photos of funny things and putting them on maps. I come back to that concept a lot. And I started with mapping smells in a city and making a big what smells are where. And then I got into mapping feral cats and then mapping food trucks in Portland. And then now I'm mapping homeless shelters and trying to, you know,
Starting point is 00:31:07 like expand upon all of these mapping things. But then the other stuff that I'm working on, which isn't necessarily code for America related, but I would say still like philosophically it's in the same category is like identity and privacy and social network user centric. The whole like there's a really great podcast that Brendan Eich did yesterday on A Minute with Brendan.com where he talks about Mozilla's new strategy for we put the user first, and that's, like, hit the nail on the head
Starting point is 00:31:34 of all the stuff that I'm really passionate about. So being in an environment that's trying to solve the problem of I'm a citizen in a city, how do I get more hooked hooked into the way that my community is working? I heard somebody describe government as a tool that exists to foster communities. That should be the goal of a civic local government. All it should do is make sure that your communities blossom. And I totally believe in that definition. But either if you're a user online using Facebook, or you're a user online trying to like file your taxes, or you're a user online trying to like talk to somebody in line while you're waiting at the coffee shop.
Starting point is 00:32:12 I'm really interested in like user-centric design and like what software allows people to do. And I'm totally, it's like consumed my life the last year. It's kind of crazy. Like GitHub is definitely an addiction for me lately. We're definitely in the Generation G, right, Wynn? That's true. So, Eric, a number of your projects that you're actively working on aren't really your projects. And I know I'm thankful that you've pitched in on a few of mine where I've started an idea and
Starting point is 00:32:42 haven't pushed it as far as I think you and others in the community have. What sort of satisfaction do you get from, I guess, working on somebody else's project? Well, I think there's a big tendency among engineers to look at somebody else's code and sort of get frustrated with it, with some aspect of it, and want to just reinvent the wheel from scratch. I think one of the great things about GitHub is that it makes it so easy to look at somebody else's code that maybe you think you could improve
Starting point is 00:33:19 and actually make it better rather than trying to fork it and compete with it. And so there's nothing wrong with healthy competition if two projects have different goals in mind. But if you're fundamentally trying to do the same thing, then my philosophy is don't reinvent the wheel. And so a win, I think the first project we ever collaborated on was actually John Newnemaker's Twitter gem.
Starting point is 00:33:45 That's right. Which he had built and then sort of moved on to working on MongoMapper and God knows what else he works on. He has quite the open source resume as well. But he wasn't investing a lot of time in the Twitter gem and he had sort of handed it over to you. And I was working on a startup called 140 Proof at the time, which was a Twitter startup. We used the Twitter API heavily, and we needed a Ruby library to interface with Twitter.
Starting point is 00:34:17 And I think it started with, I just wanted to make some enhancement to the Twitter gem. It, I think, didn't upload images correctly. And, you know, we wanted to be able to update someone's profile icon or background wallpaper programmatically, and that wasn't supported in the Twitter gem. So I think the first patch to it I ever made was adding sort of the ability to do a multi-part post to the Twitter API via the Twitter Ruby gem. And then from there, just kind of like Max said, just kind of got addicted to making improvements to it and polishing things off.
Starting point is 00:34:57 The biggest conversion was switching over from John Nunemaker's HTTP party as the HTTP client library, switching that over to Faraday, which is kind of like a meta HTTP client library. So you can use NetHTTP or Typhius or EM Synchrony if you're on a vent machine. So that seems like a refactor worth doing because people wanted to be able to swap in their favorite client library.
Starting point is 00:35:29 And then I just sort of started moving up the stack. So the more I got into Faraday, the more I wanted to make some changes there and became a core team member of Faraday and started making some contributions to that. And that's basically been most of my open source. That's TechnoWini. Rick Olson's project started it, and now Mislav, also at GitHub, does a lot of work on that project as well,
Starting point is 00:36:01 but more than probably Rick does these days. But it's another great open source project that, again, could have tried to reinvent the wheel and start from scratch and do my own thing, but it just seemed like it was there and it was sort of good enough, a good enough foundation to make better. So that's sort of my philosophy on open source in general. It's all about that community and that collaboration
Starting point is 00:36:26 and working with other people. A tech book that had an impact on me a few years ago was Leading Geeks by Paul Glenn. He talks about how, as a group, we geeks kind of buck the normal power structure and we all gravitate to the alpha geek in the room. And I think that's why I love GitHub so much is it automates that process. It's easy just by looking at open code
Starting point is 00:36:50 that's out there to see who's got a better grasp of the language or techniques and things like that. And we kind of all go through this progression of cargo culting to imitation to, you know, then kind of thinking on our own and being creative about it. I've learned an incredible amount just from looking at other people's code on GitHub. Who are you guys learning from on GitHub these days? Oh, man, so drinking games. So Jeremy, I remember I was working at this company, Revelation,
Starting point is 00:37:25 and my boss, Dan Herrera, he's Wobot on Twitter, he was telling me that he found this book, How to Write Your Own Freaking Awesome Programming Language. And he was saying it talks about lexers and parsers and ASTs, and it was this really interesting and really approachable way of getting into language design. And I guess Jeremy read that book and then wrote CoffeeScript as an implementation of the things that he learned in
Starting point is 00:37:50 that book. So if you go to the really early days of the CoffeeScript repository, it's really fascinating to look and see how the language was evolving back then. And just his style is really cool. And I love the kind of temporal aspect of GitHub in that way. You can go back and see that it started from nothing and he just sort of started adding things and it really grew and blossomed from the ground up and it demystifies this prolific programmer thing. It's like, I don't think that you have to be a genius or some sort of whiz kid to be a really active developer
Starting point is 00:38:25 or have a successful like open source quote unquote presence. It's just like it's time and it's dedication, and you really just have to like have the ability to follow through with starting something. So one of my favorite things to do on projects is to go to the very beginning of the commits and just read the commits from the beginning and going forward um and i also i'm a big fan of uh like http apis for everything um you know that meme the like all the things meme with the little cartoon character with his arms in the air like blank all the things um i made one last week that was rest api for all the things and i think that uh like eric was Eric was saying with Faraday and some of these HTTP libraries,
Starting point is 00:39:09 it's funny that after 20 years of having HTTP libraries or more than that, they're still really bad in my opinion. It's a really hard thing. There's all these abstractions on top of HTTP libraries. And I've been having a lot of fun, like, looking at the ways that different languages do HTTP and which ones have their own weird abstractions on top and which ones are really minimal.
Starting point is 00:39:33 And one of my favorite ones is in Node by Michael Rogers. It's just called Request. And it's Michael, M-I-K-E-A-L, Michael slash request. And it's just, like, the most straightforward HTTP library you'd ever use. And when I was learning CouchDB, I was like, oh, it's full HTTP. I better go find a
Starting point is 00:39:51 Couch client library to use with Node or from JavaScript. And I was like, there has to be some really great library that's designed specifically for Couch that does all the HTTP stuff. I actually found out that Request was the best library to use, and you won't find the word Couch anywhere in the Request source code. It was just like it implemented HTTP really well.
Starting point is 00:40:10 So there's always these gems, no pun intended, that are just like they make a protocol like HTTP really easy to use and just make it really nice. And I love when I find systems that just like both implement the same contract together. And they, you know, you have like the request library in CouchDB as an example, they don't know anything about each other, but they work better than anything, anything else. Anyway, that was kind of a tangent. No, good stuff. Eric, you mentioned a couple of folks, anybody else you'd want to highlight? Oh, yeah, there's so many people, so many great people in the community.
Starting point is 00:40:46 I really enjoyed the podcast you guys did last week with Sam Stevenson. I have so much respect for that guy. And after listening to it, I just dove in on some of his projects just to check out the code. And, yes, Sam's awesome. Really enjoyed that interview. Also, the Rubinius guys, specifically Brian Ford and Evan, I just think Rubinius is an awesome project and have a lot of respect for those guys as well and the work that they're doing.
Starting point is 00:41:22 There's so many great people in the open source community like that who, you know, you sort of follow them for a while and then, you know, you don't really know what they're like in person and then meet them at a conference and they're just like super down to earth and will answer all your questions and really nice people. You know, I put Jeremy in that category as well. So, that's great. You know, for me, that's really, really the most rewarding thing about working in open sources is the people, you know, just being able to work with
Starting point is 00:41:54 so many talented people as peers. And, you know, you contribute to their projects. And if you're lucky, they accept your patches. And, you know, maybe if you're really lucky they'll start contributing to yours and there's just sort of that give and take component to it that there's nothing like it. For me it really is an addiction. One of the things that I like about this community is we tend to talk in projects and usernames and logins and not so much the real names behind a lot of these projects. And I know that I've been at conferences,
Starting point is 00:42:29 and, for instance, one of the guys that helps us with the Twitter gem introduced himself to me at South by Southwest as Steve Reichert. And I just kind of looked puzzled, and he said, Laser Lemon. Oh, Laser Lemon, right? So it's just this whole community around, you know, where the projects are almost as big as the personalities behind them. Yeah, and I definitely give a big shout out to Steve. He came in right as we were about to release 1.0 of that gem
Starting point is 00:42:56 and really just completely rewrote some of the interfaces, refactored them, and made them much, much nicer so that we could have a really solid 1.0. And he's also, he works on a number of interesting projects, including the Simple OAuth gem, which is like the best gem for doing OAuth and Ruby. And he also blogs for Collective Idea, where he works. And I'd highly recommend subscribing to that blog. He writes some really interesting stuff. So yeah, definitely.
Starting point is 00:43:30 Shout out to Steve. One last thing before we get to the radar. I know that you've been a proponent of folks not needing to know how to code to contribute to open source. What are some other ways that folks can get involved? Yeah, definitely. So I actually gave a talk on that at RedDirt RubyConf, which we both attended.
Starting point is 00:43:50 And on almost every repository that I'm active on, I talk about the ways that different people can contribute. Because I want to set the barrier to entry really low, because I think writing open source code is sort of this addictive thing. And once you kind of get your foot in the door and get over that initial hurdle of intimidation, like there's a lot of ways that people can get involved. And so with Rails Admin, for example, there's over 100 contributors on that project. And one of my favorite ways for people to contribute without knowing how to code at all is just translating it into a different language. And I think Rails Admin now has been translated into 15 or 20 different languages all over the world.
Starting point is 00:44:39 So that's a great thing for someone to come in and do. And it really helps. Like, people are using it all over the world, and it's great to see that. Just, like, using alpha and beta and pre-release versions of software is helpful, and reporting bugs and issues is great. You know, suggesting new features, writing documentation, editing existing documentation. God knows there's tons of typos in open source software documentation all over the place. And it's just not well written. A lot of programmers aren't as great at writing prose as they are at writing code.
Starting point is 00:45:21 And somebody with an English background can come in and make a lot of progress there. You know, also just like really small fixes, just like setting the bar really low in your project. Like I always say, you know, a patch, I'll always accept patches that add documentation, add comments, clean up inconsistent white space, alphabetize things that are sort of out of order, or just neat and things up. For me, those are some of my favorite patches to receive because they're often from people who've never contributed to open source before, and it is that visceral feeling of contributing in the way that they can
Starting point is 00:45:59 and at the level that they feel comfortable doing. Or just removing white space. Yeah, just removing whitespace. Honestly, as a Vim user, I'm used to jumping between code blocks with shift bracket, like open bracket and close bracket. And I think it's TextMate, but one of the editors is terrible about
Starting point is 00:46:21 if there's an empty line, it indents it to the level of the previous line even though there there's nothing on that line like there's no reason for it to be indented and that actually breaks um that breaks uh workflow for a lot of vim users and it also like git doesn't like it like it'll highlight it and um make it kind of uh like like it'll show up as highlighted and and get when you try to commit it. So just pulling that stuff out is, it's a great contribution. It's like a little thing that you can do that makes it a little bit better for everyone who's using it.
Starting point is 00:46:54 And that's what open source is all about. I think it actually might be TextMate that does that. Because I know that whenever I do a return from a new line, it's indented. It goes to the start point of the previous line. Yeah, and for people who want to keep using TextMate and not piss off Vim users, there's actually a TextMate
Starting point is 00:47:13 plugin. Maybe you can put it in the show notes, but there's a TextMate before save hook that will go through and clean up all of the terrible white space and indentation that TextMate inserts. So honestly, just doing that is a big...
Starting point is 00:47:32 If everyone listening to this who uses TextMate just did that, that would be a big contribution to the open source community. Especially if you commit to open source. Yeah, that's right. If you're just doing your own code. Well, but even at work or whatever, I think, you know, just writing, you know, it's sort of like the postal principle of, you know, kind of writing code that kind of could be accepted by the most editors or whatever.
Starting point is 00:48:00 It, like, won't break parsing in the most editors. There's just little things like that that you can do that are a little bit just considerate of other developers. A good practice to follow. One of the things that's really fun this year at Code for America is that we have open source projects, but the target audience
Starting point is 00:48:18 for a lot of them isn't just developers, it's also users or people who are going to stand them up in different cities. So it's really interesting to say, okay, we have GitHub. How is GitHub going to be our way of managing people who aren't even programmers or even, like, working with designers? And I think that, like, the new GitHub for Mac app
Starting point is 00:48:38 is really cool from the, like, eliminating the command line for people who have never been on the command line anymore. They can still have, they can still take can still take part in distributed version control workflows. And the GitHub image diffs are really cool. I was talking with Tom Preston Werner, TP Devs from GitHub, about there's this guy who gave this presentation. We were both there about these mechanical, every piece of machinery you can imagine to run a farm.
Starting point is 00:49:03 He's been designing open source versions of these systems. So you could download the schematics for a tractor and then build it for as cheaply as possible. And he's trying to build like 100 machines, 100 open source machine templates. And so he has a lot of 3D models. And he's talking to Tom about like, hey, how do I do 3D models on GitHub?
Starting point is 00:49:25 When are you going to implement that feature? And then Tom was like, well, we could do WebGL rendering. And it's really exciting stuff. The idea that it's not just code anymore. It's going to be any sort of, we have a file that we want to collaborate on and use GitHub as the hub for that. I was reading this book by Ted Nelson, the dude that invented hypertext back in the day. And it's called Literary Machines. It's really hard to find for whatever reason, even though it's like the book about the Internet before the Internet. And he was describing in Literary Machines
Starting point is 00:49:51 what he thought the Internet was going to be back before we had the Internet. And it was like, well, everybody's going to have their version of a document, and if they make changes to it, they could submit it into the repository, and you could see all the forks that somebody, he didn't use any of these terminologies, but you could see all the forks that somebody's made. And everybody will be able to collaborate on editing things. And it's like, here we are 30 years after that book was written. And what do we have to show for it?
Starting point is 00:50:15 We have Wikipedia, which is like its own universe. And then we have GitHub. There's been many source control platforms over the years, of course. Not to discredit any of them, but I think GitHub has really hit the nail on the head in terms of actually like realizing this vision of like, let's just make information into this thing that we can all help to build. And it's really, it's a really exciting time,
Starting point is 00:50:37 like imagining the uses of this technology for things other than just code. And from a Code for America standpoint, like with the open211.org project that I'm working on, we contacted, I did a whois on open211.org. It was taken. I contacted the woman who was in charge of it. I sent her an email. I'm like, hey, we're Code for America.
Starting point is 00:50:57 We're this nonprofit trying to build a big wiki of all of the homeless shelters, basically. And she was like, oh my God, I saw Tim O'Reilly give a talk about this once. I love you guys. Like, have the domain. I'm transferring it to you right, oh my God, I saw Tim O'Reilly give a talk about this once. I love you guys. Like, have the domain. I'm transferring it to you right now. What else can I do to help?
Starting point is 00:51:09 And I'm like, well, go to GitHub and make an account and then use the fork and edit button and just like clean up any of our copy. Like there's, if you go to open211.org, it's supposed to be a page that describes the project. And I have like a few months ago realized that I should be making screencasts about every project that I do. I should
Starting point is 00:51:28 be doing readme-driven development. I should try to make every project that I do as much of a template for other people to either take and reuse in some other domain, or to just make it really easy for people to get involved. This woman actually made a GitHub account and was able to
Starting point is 00:51:44 fork and edit our readme, which is really cool. I think the tools are coming a long way. Google Code has had the fork and edit feature in browser for a while. It's just bridging the gap from developer. Every startup that starts up nowadays, I'll look at it and be like, well, are those things that developers could do 20 years ago that now only we're getting around to making it accessible to every person? And that's a really fun
Starting point is 00:52:10 game to play. So there's IRC Cloud now, which is IRC without having to know how to run a screen session. Or even you could argue that Twitter is IRC for everybody. Or there's all these things that we never build for people that aren't developers, but it's not that non-developers aren't know there's like all these things that we never we never build
Starting point is 00:52:25 for people that aren't developers but it's not that non-developers aren't nerdy enough to do these kind of like distributed
Starting point is 00:52:30 editing things it's just that anyway what I'm getting at is it's a really exciting time I had that aha moment today
Starting point is 00:52:36 too before I got on the call whenever I jumped on the Code for America org on GitHub I was like wow
Starting point is 00:52:42 118 repos 51 members like this is the epicenter of everything that you guys are doing, revolving around your code bases and your projects. This is, you know, this is, I mean, this is the, if you had to say a deliverable, this is the deliverable pretty much until you actually get to production, but it's, it's pretty wild, but we're almost out of time.
Starting point is 00:53:03 So the last question I'd like to ask is about what's fun in your world with open source? What are you playing with? Max, I know you said you're a big fan of CouchDB, and Michael, you'd mentioned that you're Rubyist, so I imagine that those are probably camps you like to play out in, but if you had to venture out of that camp, what is something fun that you might want to play with in open source?
Starting point is 00:53:25 I've been playing around with Socket.io a little bit recently on Node, and that seems really cool. It seems like something that was, kind of like Max said, something that would have been pretty hard to do just a few years ago, but now it's becoming mainstream and it's going to enable a lot of new products and new technologies. That's kind of my little hobby project these days. I also, this is within the Ruby realm, but I think one sort of way to be a good open source citizen, especially if you're doing library development, is to test your library across multiple different versions of Ruby. And the best way, easiest way I found to do that is to use Travis CI.
Starting point is 00:54:16 So I definitely want to give those guys a plug. It's a great product. It's still new, and there's still some bugs in it. But it's incredibly easy to get set up. And basically with one YAML file, have free hosted continuous integration for your project on JRuby, Rubinius, 187, 192. And that way, you know, when you do development, you don't want to run your tests n times once for each Ruby, but you want to make sure that it's compatible with every Ruby out there so that the most people can use it as possible. And that's been an invaluable tool for all the Ruby libraries that I work on.
Starting point is 00:55:00 I've been bugging Josh and those guys to come on the show, and they keep saying when we get to 1.0, I told them now that they're building Rails nightly, they have to come on. So there will be a future episode. It's cool. I've been doing a little bit of hacking on GemCutter as well, the rubygems.org site, which is an awesome Rails app.
Starting point is 00:55:20 I would say if people are looking for a high-profile project that they want to work on, Rails project, we're working on getting that up and running on Rails 3.1. Right now it's on Rails 3.0. And there's just a bunch of features that you could add there. It's like someone wants to
Starting point is 00:55:38 earn their chops using a high-scale, high-visibility Rails app, submit some patches to rubygems.org because that's a great project. We just got that up and running on Travis last night as well. Travis is great because there's no way I'm going to be running. Even with RVM, I'm not going to test my test suite against Ruby Enterprise and JRuby and the whole nine yards.
Starting point is 00:56:05 I'll let Travis do that heavy lifting. Exactly. Some of the stuff I'm excited about lately, like two weeks ago I found this repository called Substance. And it's by Michael on GitHub. I'm not going to try to pronounce his last name. He's a Belgian. Sounds like Michael needs to come on the show. He's a Belgian. Sounds like Michael needs to come on the show. He's amazing. Michael, just like the normal way you spell Michael on GitHub,
Starting point is 00:56:29 they're at this place called QuasiParticle, which is like an Austrian software development shop. He has some of the best projects that I've seen in a while. Basically, it's like an HTML5-based document editor, not unlike something like Google Docs or like a WYSIWYG editor, but it has this really cool, like he has this thing called data.js
Starting point is 00:56:53 that's a persistence layer. So anytime you type in a document into the editor, it's persisting it into a graph document format in JSON in your browser. And then he has like a replicator that replicates the CouchDB, which I really liked that part. But basically, he's trying to build this really amazing suite
Starting point is 00:57:08 of all GPL or MIT-licensed editing tools that are just really, really well-designed. I was really blown away by the quality of the work that he's doing. And so I was talking with him online the other day. I'm like, wow, this is really cool stuff. I've been coming at a lot of these problems from a structured data standpoint of, how do we make data better? How do you clean up data? But he's coming from the qualitative, unstructured data standpoint of how do we make
Starting point is 00:57:32 document authoring really easy and build an HTML, JavaScript, HTML5 WYSIWYG editor that doesn't suck. And I don't know. I just got really jazzed by the amount of design skills that he has, and a lot of his theories on data were really cool. Another really amazing set of projects that I saw, Substack in the Node.js community. Isaac, who does NPM in Node, called Substack the why of JavaScript. Why the lucky stiff.
Starting point is 00:58:07 And why the lucky stiff was actually the guy that got me excited about programming in a kind of artistic way in my spare time. And Substack, his name is James Halliday. He has a startup called Browserling. And if you go to browserling.com or you go to Substack on GitHub and you look at any of the repositories from the last few months, every single one has a hand-animated character that represents the repository.
Starting point is 00:58:28 And the other day I was using, he has this thing that you can convert a node module, server-side JavaScript, into a requireable module for client-side JavaScript called Browserify. And you click on the repo and it's like there's a Harry Potter, a hand-drawn Harry Potter character in the repository. It has nothing to do with browser-defined anything. But I sent him a pull request because I added an example into the readme, and
Starting point is 00:58:51 I used... He was making a Voldemort reference, and he was like, Voldemort is to JavaScript as common JS. I don't know. It was this crazy awesome thing, but now he's going to add a Voldemort character to his repo. But if you go to browserling.com, it's all hand-animated by him,
Starting point is 00:59:09 and it's like a cross-environment browser testing tool that you can test your website in different browsers. But all the UI is hand-animated. It's amazing. It's a totally labor of love. He's a very prolific programmer, too. So fork some of his projects and add animations. Good stuff. Wow.
Starting point is 00:59:27 I think that about wraps it up. I know that we certainly appreciate you guys taking the time to come on the show and give us a peek behind the veil of Code for America and the great stuff that you're doing for civic communities and our cities out there. I know we certainly appreciate you taking the time out of your careers to do
Starting point is 00:59:43 that, whether it's great for you in your future or if it's just a year of wild coding or whatnot. But we certainly appreciate the time you've given us today. Great. Thanks for having us on. We really appreciate it. And I'm going to plug the Code for America Fellowship one more time. The deadline to apply is July 31st. So go to CodeForAmerica.org slash apply and check it out
Starting point is 01:00:05 do it, do it now we'll definitely put that in the show notes thank you guys

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