Tuesday, August 31, 2010

My Reading List on 8/31/2010

Thanks to Prentice Hall and Addison-Weseley giving me three new books, my reading list has bulked back up.  Here's what I'm working through at the moment:
What are you reading? Why?

Wednesday, August 25, 2010

Ruby|Web Interview with Pat Maddox

Ok, if I'm going to post about GoGaRuCo today, I should also spend some time on Ruby|Web, the latest regional conference from Mike Moore (@blowmage) and friends — truth in advertising, I'm a volunteer on the board for Ruby|Web, so I might be a bit biased.
Just so my biases don't show too much, I asked Pat Maddox(@patmaddox) to answer a few questions for me.  Of course, he's a speaker at Ruby|Web, so the spin is probably still there.
Regardless of our mind-set, this looks like it's going to be an awesome conference.  The only problem is that you need to register before Sep 3rd.  You don't have much time ... maybe you should go register first, then come back and read what Pat has to say.

Ruby|Web is a new name in the regional Ruby conference space.  What drew you to it?
Pat I love coding in Ruby, and I think the web is a great platform to develop for.  I'm eager to spend a few days rubbing elbows with like-minded people.  And between the over all theme, the fantastic organizers running the show, and Snowbird (!!), Ruby|Web jumped to the top of my list.  Plus I don't know anything about HTML 5 or CSS 3 and I need to get on that :)
Seaside is interesting technology, how did you discover it?
Pat Seaside is a fascinating and fun technology!!  I came across it a few years ago, not long after I got into Rails.  Over the years I had a couple of false starts with it...it's a bit opaque at first because the development environment is so different from anything I'm used to.  And it's only fairly recently with Pharo that it's become easier to get started, because it's such a clean environment geared towards development.  Also the documentation for both Pharo and Seaside are getting really good.  There are free books on each at pharobyexample.org and book.seaside.st/book.
Okay as for what's so interesting to me about Seaside... it's 50% the framework and 50% the Pharo environment. Seaside itself represents a step forward in web development similar to how Rails did.  Rails takes care of a lot of the plumbing for you - you don't have to parse query params, set up response headers, manage the session (unless you want to of course).  Seaside does all that of course but also manages application state for you.  So you don't have to worry about putting stuff into a database, then pulling it back out and operating on it.  I can't do it justice in a few sentences, but that's why I'll be showing lots of examples at the conference! :)  At any rate, that same feeling you get when you code Rails for the first time and see how much easier things are, you get that same feeling with Seaside.  It's not a replacement for Rails by any means - Rails definitely has a sweet spot, particularly when it comes to RESTful websites and interoperability with the unix ecosystem - but for the things that Seaside is strong at (which for me so far has been complex and/or configurable workflows), it runs circles around everything else.
The other thing I'm loving about Seaside development is Pharo, an open-source smalltalk environment.  Smalltalk is a great language, and Pharo has great tools that allow you to discover everything in the system.  Honestly it makes RubyMine or etags look plain silly.  The best bit is that nearly everything in Pharo is implemented in smalltalk, including all of the tools.  So if you want to see the mechanics of a refactoring tool, and even build your own, it's trivial to do so, because it's just smalltalk code.
Wow this answer got long.  I could go on all day about this stuff.  Gonna stop now.
What other smalltalk tools/ideas do you think Rubyists should be looking at?
Pat Let's see...I'd love to see Rubyists take the ideas from the Pharo IDE and build some really snazzy development environment for Ruby.  The next killer Ruby app, I think, is going to be a development environment that uses the runtime structure of objects to do all of its magic, rather than just statically analyzing source code.  Even just having portable refactoring tools would be awesome.
I'm also really excited about Maglev, whenever that becomes available for daily use.  It is incredibly liberating to write actual OO code, and so I think my style of coding Rails will change completely once Maglev enters the field.  fingers crossed
Which Ruby|Web presentations are you most looking forward to?

Pat In order of them being listed on the sessions page...
  • BJ Clark's (@robotdeathsquad) talk on HTML / CSS / Javascript.  He told me a few months back when he planned this talk that he thought, "if I were to school Pat on HTML / CSS / Javascript, what would I say?"  He and I have worked together for years and he gets frustrated with my lack of understanding of those things.  So basically this talk is geared specifically to people like me, hardcore backend developers with "div-itis" and who typically use inline javascript and CSS.  I'm looking forward to getting schooled.
  • Alistair Cockburn's (@TotherAlistair) samurai talk.  His talk summary means absolutely nothing to me (on purpose, I'm sure) but he's always a trip to watch speak, and I'm glad to see him get more exposure in the Ruby community.
  • Evan Light's (@elight) iOS talk - Evan is a diverse developer and entrepreneur.  Really excited to learn from his experiences.
  • Joe O'Brien's (@objo) communication talk.  For starters, Joe is one of my favorite people in the Ruby community.  Again, he's one of those folks that combines technical expertise with good business sense and a warm heart.  I think folks attending this conference are going to have more of the entrepreneurial spirit than most, so his talk will be particularly important and insightful for us.
  • Dirt Simple Datamining by Matthew Thorley (@padwasabimasala) - because really, who doesn't love datamining??
It's clearly shaping up to be a rocking conference!!!

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