Wednesday, August 25, 2010

GoGaRuCo 2010: mini-interview with Ilya Grigorik

Ilya Grigorik (@igrigorik) is another GoGaRuCo speaker who's kindly agreed to sit down and work through a short interview with me.  Hopefully this gives you taste of what you'll be missing if you're not going to the Bay Area's regional Ruby conference.

Machine Learning and Ruby don't leap to mind as a common pairing.  Why is machine learning important to Rubyists?
Ilya I don't think the topic of Machine Learning (ML) can or should be linked any specific language or runtime - it is much more general then that. Wikipedia provides a good starting point: "Machine learning is a scientific discipline that is concerned with the design and development of algorithms that allow computers to evolve behaviors based on empirical data". Artificial Intelligence is a close cousin to this definition, and you will find a lot of people using these two terms interchangeably, but I prefer the ML definition because, to me, defining and modelling the learning process is where the work happens, whereas "intelligence" is the ultimate outcome (plus, defining intelligence is a much harder concept to agree on).
With that in mind, I think you could make the argument that Rubyists apply ML to many everyday situations already: sorting algorithms, recommendations, and so on. It is also a truism that by the time any "AI" hits the mainstream, it is usually no longer interpreted as "AI". For example, computers answering telephone calls was the domain of pure science fiction only a few decades ago, whereas now we don't even stop to think about it. How about your ITunes "genius" playlist? Pandora, Last.fm? You see where I'm going. It's all around us.
Why is Ruby a good fit for machine learning applications?
Ilya Because Ruby commands such a presence in the web development world, I think it naturally finds itself in domains and applications that stand to gain a lot by leveraging the available data in some interesting and novel way. But once again, it's not really a question of language, as much as it is a question of modelling what you know, and applying that data to interesting questions. If Ruby, as a language, allows you to model your data in a faster or easier way, then so much the better.
On a purely practical, implementation side, Ruby has a number of great libraries and plugins that allow you to leverage many interesting algorithms: support vector machines, decision trees, bayes filters, neural nets, and so on. Will those tools scale to million row matrices? Perhaps not, but they will allow you to iterate through a number of solutions at a minimal cost, which in itself is a big win.
Where doesn't ruby fit well in the domain?
Ilya It is unlikely that you will be analyzing a multi-terabyte dataset with a Ruby ML algorithm. More likely, you'll work on a scale of a gigabyte (or a few), model and iterate your algorithm on a subset of data with Ruby, and then implement a lower level solution to scale up to larger datasets.
You're pretty well know for deep diving blogs about Ruby.  What's your day to day relationship with the language?
Ilya My day to day job is with PostRank, where being CTO/founder means I'm wearing many different hats throughout the day. Having said that, most of our systems are written in Ruby, and we have definitely pushed the limits of the language on many fronts.
My blog, is in many ways, a reflection of the technical challenges we're currently dealing with at PostRank, or technologies we're evaluating to improve our infrastructure. So, while I may not be working on implementing the next feature which is going into our analytics product, I am likely to be involved in the design and deployment of the infrastructure that has to deal with servicing all of the data requests required to make that feature possible (and when you're pushing as much data around as we do at PostRank, that's always a non-trivial challenge). The combination of having an awesome team, and a large and exciting problem to work on means there is never a shortlist of what to write about out on my blog!
Ilya
Other than your own talk, what are you most looking forward to at GoGaRuCo this year?
Ilya To be honest, every single talk on the agenda sounds fascinating to me - it's hard to pick any favorites. Having said that, I have been recently thinking and talking to a few people about the topic of "test driven learning", so I'm really looking forward to the "Test First Teaching" presentation by Sarah Allen and Alex Chaffee. I am really curious how this concept could be applied more broadly, outside of just learning a programming language. For example, could you structure a physics course in the same manner? Arguably some (great) teachers do this already, but I would love to extract and distill some general rules and patterns.

Thursday, August 19, 2010

GoGaRuCo 2010: mini-interview with Josh Susser


GoGaRuCo is just around the corner (Sep 17-18), and it looks like it's going to be a great conference again this year.  I wanted to touch base with Josh Susser (@joshsusser) again to see what was going to set this year apart.  He was kind enough to answer a few questions.  If you live in the Bay Area and haven't already decided to hit GoGaRuCo, what are you waiting for?

This is your second time around with GoGaRuCo.  What was your biggest lesson from 2009, and how did it impact this year's version?
JoshBiggest lesson?  Make sure you have comfortable chairs!  Well, chairs are important, but I think most about the technical program and how to put together the best one I can.  Last year we did a mix of invited talks and talks selected from submitted proposals.  And consistently, attendees rated the invited talks higher than ones selected from proposals.  Now, I can't say what that means overall and it's certainly not a reason for conferences to stop doing CFPs, but this year I wanted to try doing a curated program where all talks were invited.  That let us craft a program that has balance, diversity and high quality.  It can be more work than doing a CFP because you end up with some speakers who take a little more cat-herding than those that are self-motivated to submit a proposal, but it's worth it.  I know we might miss out on a great proposal from someone we wouldn't think to invite, but it also lets us have speakers who wouldn't think to submit a proposal, so I think it works out in the end.
Why the change from a Spring time slot to one in September?
JoshPlanning a conference takes a long time.  For GoGaRuCo we have to get started about six months in advance, and ramping up for an April conference meant we had to start around December, which is nearly impossible given that so many people are off on vacation or focused on wrapping up the old year or starting the new.  It made things terribly difficult to get off to a good start.  The hardest part of doing GoGaRuCo has been finding a venue that was large, affordable and good enough.  We just couldn't find a venue for April, so we moved later in the year to have more time.  It's also nice that September is the best weather of the year in San Francisco, so it will make the trip that much better for people visiting us.
The Wrap was a unique feature from GoGaRuCo last year.  How much impact has it had on the conference?  Will it be back this year?
JoshThe Wrap will definitely return this year.  The initial idea for The Golden Gate Ruby Wrap was to avoid having to print color program schedules.  We've seen them at a lot of confs, and they don't seem that useful and probably only exist as a place to print sponsor ads.  The Wrap saves on paper and cost, and gives us a more long-lived place for sponsor ads.  It also serves as a rich record of the conference, something like the proceedings published by traditional, academic conferences.  I don't know how much impact it's had, but the 2009 Wrap was downloaded by thousands of people, more even than looked at the videos of the talks.  I think that makes the historical impact of the conf greater, since there is an actual record of it.
If there's one reason people should come to GoGaRuCo this year, what is it?
JoshThis is San Francisco!  It's the highest concentration of hardcore Rubyists I know of.  Last year 96% of the conference attendees used Ruby as the primary language in their regular job.  That means being at the conf you are surrounded by people who love Ruby and know how to get things done with it.  And we have comfortable chairs.

Friday, July 16, 2010

Lone Star Ruby Conf Speaker Interview: Jesse Wolgamott


Today's a twofer for the Lone Star Ruby Conference.  My third interview (second today) is with Jesse Wolgamott (@jwo) who's presenting "Battle of NoSQL stars: Amazon's SDB vs Mongoid vs CouchDB vs RavenDB ".  Jesse shares some thoughts about NoSQL and the conference.



NoSQL looks like it's gaining momentum.  Why should Rubyists be interested in the topic?

Jesse Once you reach the point in transaction system where the database is the scalability cause of your scalability problems, there's no going back. You've taken the red pill. Table-based transaction databases are constrained by memory and there's a hard maximum until your app crawls to a halt. The dream of true replication and easy sharding is built in.

Also: migrations just suck, even in Rails.

There are a lot of NoSQL players, what made you zero in on these four?

Jesse CouchDB was my first experience with NoSQL -- the built-in map-reduce is so unique. MongoDB is a newer kid on the block, and is easier to get running in Rails, so that's a plus. I like to mention Amazon's SDB because it's frequently overlooked; You use Amazon's servers so in that respect it's the easiest to setup. RavenDB is new and shiny. Cassandra is also really cool, but not as ruby/rails friendly.

What's your current involvement in the NoSQL world?

Jesse I've used CouchDB, MongoDB, and SDB in the real world, but I'm just a lowly programmer.

What made you want to present at LSRC this year?

Jesse I got jealous looking at all the ruby conferences across the country, and heard about LSRC through the local Houston ruby group. Austin rules, Ruby rules, so win win win.

Other than your own talk, what are you most looking forward to at LSRC 2010?

Jesse The "Vim for the modern Rubyist" talk -- Vim is so hot right now! (but really, it should be cool and I love the AntiIDE thinking).

Lone Star Ruby Conf Speaker Interview: Nephi Johnson


Okay, time for a second interview with a Lone Star Ruby Conference speaker.  This time, Nephi Johnson (@d0c_s4vage) talks a bit about his presentation — "Less-Dumb Fuzzing and Ruby Metaprogramming".



Fuzzing isn't always well understood.  Can you describe fuzzing, and tell us what situations it's a good fit for?

Nephi Fuzzing is a term used to describe the process of feeding an application unexpected inputs in order to find flaws in the code.  During development, it's pretty much impossible to write code that will handle all possible inputs correctly.  Fuzzing helps to uncover some of the more subtle and unforeseeable flaws that haven't been found through code reviews and normal testing.  Fuzzing is typically very automated and usually involves feeding a program thousands or millions of sets of malformed input.  The program being fuzzed is then monitored for crashes, exceptions, and/or performance.

The last person to really talk about fuzzing in the Ruby Space was Zed Shaw.  That's kind of a tough act to follow.  Why is this an important topic for Rubyists, and why are you the right person to talk about it?

Nephi I think fuzzing is an important topic for every developer (or anyone who wants to find bugs in an application).  If you have the time to fuzz a product, you will almost certainly uncover flaws in it.  One bug fixed during development is one less bug that customers have to experience with a release product.  Not finding flaws in the code after extensive fuzzing is also a big confidence booster.  I think this is especially applicable to Rubyists because of the flexibility (and fun) that comes with using Ruby.  I think anyone could make their own fuzzer/data-generator with Ruby in a short amount of time.  Also, if someone wanted to use the library I've written, it just so happens that I've written it in Ruby [*sarcasm*].

Why am I the right person to talk about fuzzing?  Fuzzing is something that I spend most of my free time doing or working on.  I put a lot of thought into coming up with ways to more efficiently fuzz programs.  As a security researcher, I have different goals in fuzzing than developers.  I want to find the really interesting bugs, bugs that might allow one to run their own code or do something entirely unexpected with the program.  I think my perspective on fuzzing might provide different insights for those who use fuzzing outside of the security field.

What prompted you to speak at LSRC this year?

Nephi Someone had mentioned to me that it might be interesting to hear from somebody in the security field and suggested I submit a talk.  I liked the idea, chose to talk about a project I've been working on using Ruby, and here I am.

Other than your own talk, what are you most looking forward to?

Nephi I'm looking most forward to the talks "Vim for the modern Rubyist", "What every Ruby programmer should know about threads", and "Getting Started With C++ Extensions."  Why these talks?  I love using vim - it was the first text editor I used when I started using Linux and now it's all I use, threads give me trouble sometimes (ruby threads, that is), and I've been wanting to write my own ruby extensions for a while now.

Thursday, July 15, 2010

LSRC Speaker Interview with David Copeland


With the Lone Star Ruby Conference just over a month away, I thought it would be a good idea to talk to some of the presenters.  David Copeland (@davetron5000) is giving a talk about a topic that resonated with me, so I sent off an email to find out more about what he thought would make his presentation and the conference worthwhile.



I've never been a big 'web app' kind of guy, so I was excited to see "Why And How You Should Make Awesome Command Line Apps with Ruby" as a presentation.  Why do you think Ruby works well in this space?

Dave Having used PERL and bash in the past, Ruby is just a FAR more pleasant environment; it's just really easy to make a well-designed system, the code is clearer and easier to write, and there's a lot of great libraries that are easy to install and set up.   My talk doesn't go TOO heavily into this, but I think everything that makes Ruby great for web apps makes it great for command line apps.

As a Sys Admin, CLI stuff is my bread and butter.  Do you see Ruby as a good language for Sys Admins?  Why or why not?

Dave Nothing's going to be "as close to the system" as shell scripts, but Ruby has some great libraries that let you write cross-platform scripts, and that's a good thing.  Ruby also has a culture of terse-but-readable syntax, code-as-configuration and overall UNIXness that I think a sysadmin would find familiar and comforting.  Ruby really embodies the "motivated laziness" that is the hallmark of a good sysadmin (by which I mean automating painful tasks away into something simpler).  Further, there's some great management tools built with Ruby, like chef and capistrano.

What prompted you to present at the Lone Star Ruby Conference this year?

Dave I've spoken at a few conferences and user groups and really liked it, and I liked the idea of a Ruby-focused conference; Java-based conferences always feel a bit behind the bleeding edge to me, and the Ruby world is always pushing the boundaries.  I also thought my talk would be interesting to share, specifically for the reasons you note above; Ruby and Rails go hand in hand, but Ruby is an awesome language all on its own.  Plus, the last time I was in Austin, I was there for one night on a cross-country drive, so I didn't get to see much :)

Besides your own talk, what are you most looking forward to while you're there?

Dave There's a ton of really interesting looking talks scheduled; The ActiveModel/Active Relation talk looks good, as well as the NoSQL stuff and deployment talks.  And, I'm sure Tom Preston-Warner from github will give a good talk!