grantmichaels'blog

cad|cam engineer, music dj|producer, 2nd shooter, & solo web developer

Quarterly Report

with 2 comments

My resolution for doubling output and using Ruby 80% of the time this year has been both successful and a failure at the same time. I’ve done well to improve upon my habits offline – Im eating healthier, exercising more frequently, and drinking only quality water and tea (in abundance) – however, I’ve yet to find that productive flow in regard to code production. From the outside it would appear I’m being fickle, perhaps idealistic, and that I’m too busy trying to stay current to spend enough time getting familiar with any one tool. I think that open source development is perhaps an acquired taste for some, myself included, and I’m not yet confident that I prefer the community dynamics that are inherent to the process. Take for instance, a circumstance at this past RubyConf where a presentation was kept from being distributed with the other free of charge downloads so that the speaker could market it as a screencast – which in and of itself would be fine, had the participants known in advance so that they could decide whether or not to weigh that factor in deciding which talks to attend and which to watch later. Sure, he offered to let RubyConf participants have copies of the for-profit screencast after the fact, in an obvious effort to save face and rectify his erroneous decision, but the point remains. At almost the same time, there was a decision to exclude another community member from participating in RubyConf after he blogged about the conference organizer bearing symbolic commonality with a werewolf and which included threats to his well-being that were vague at best. Seriously, if you found this guy threatening, how could you leave your house every day? He can’t even orchestrate waking up on time most days based on his Twitter stream, so it’s hard to imagine that he would fly across the country to harm anyone, let alone to do so at a conference where all of his peers would be spectating. It’s really a lot of “fail,” a bunch of idiocy, and two talks tainted with faux scandal. These types of situations make an opinionated and outspoken person think to themselves,”is it inevitable that I will eventually speak my mind and functionally excommunicate myself?” There are politics in open source development, and it shouldn’t be a surprise considering that most who are participating are instruments of big business in one way or another.

The Rails 3 announcement that Merb was being integrated with Rails wasn’t long after, and it came just after I’d watched the entire series of MerbCamp presentations and started to code something. I remember vividly that I was making a back-end for a Flex upload-client in Merb (and Nginx) when the news broke. It’s the only day I’ve used IRC in 2009, but I couldn’t resist the urge to sit in #merb (and the room that spawned from it) and listen to all of the opinions, which in fact, were primarily emotional. Months later now, I think the Rails 3 merger will pan out to be a good thing, which is the same way I felt immediately after the announcement. I had previously spent a lot of time trying to decide between Merb and Rails, and since I don’t have to find that answer any longer, well, one less decision is a “win” in my book. So then, what do I do for the time being, I wondered? Do I continue to build my back-end for my plumbingholes project in Merb knowing I’ll have to later either 1) maintain it in a defunct framework, or 2) rewrite it in Rails? Do I switch to Rails 2.3 release candidates, and then migrate it up to Rails 3 along with all the other people who will be in that very same position? The latter seemed more sensible to me, but when I asked Yehuda and Ezra (separately), both recommended using Merb for the time being and felt it would be easier to get from Merb 1.0 to Rails 3 than it would have been to get from Rails 2.3 to Rails 3. I am curious to see how this turns out for the community, because I chose to use Sinatra and side-step the problem altogether. Ezra hasn’t given me bad advice to date, and the times when I’ve not heeded his advice I’ve ended up doing so in the long run (Nginx over Apache). It’s funny too, because it comes in 140 characters or less, is typically unsolicited, and underlines how beautiful Twitter can be for web developers. But, I couldn’t see how he could be right, and my knowledge of Rails and/or Merb internals is extremely limited, so I focused on Rack and used Sinatra for the time being. If we’re being honest, I haven’t taken naturally to Ruby as a language and my Ruby-fu is weak at best. I actually feel more at home with functional programming patterns than object-oriented patterns, and it’s probably because I was a math major. So Rails 3 is a big deal, and I think it’s going to be great, but I won’t even start to look at it – let alone rely on it – until Rails 3.1 is out of release candidacy.

I think Sinatra should be where anyone new to web development starts with Ruby, not Rails. That being said, if you feel the need to begin with Rails, watch the JetRecord screencasts before you go too far – it’s the best perspective on Rails development you can get in under an hour, and the videos have a metric shit-ton of stylistic appeal (and I hate flying). Sinatra is great though, and with Rails and Sinatra both sitting nicely on top of Rack these days, growing a Sinatra app into a Rails app is both straight-forward and well-documented. Furthermore, the Rails core have made it clear they intend for people to be able to mount Sinatra (or Rails) apps within Rails apps – which aside from being a fertile playground for “Yo Dawg” jokes – is a beautiful thing. I setup Passenger on my VPS with the intention of pointing all of my domain names at virtual hosts and having a variety of project mocks online to work on, time permitting. I’ve since realized this is just one of a zillion reasons to use source control management, but at the time I preferred working on remote hosts via Terminal and/or PuTTY, from either my home or work desktop machines respectively. Everything seemed to be going along nicely, Passenger was working, sites were “live,” and I was building a couple of web apps until I ran into my first Passenger issue. I was using El Dorado and it was using RubyInline, attachment_fu, and ImageScience and that is a big fat wad of permissions issues and greasy fatty fail for Passenger. Ezra had pointed me towards using Nginx beforehand, and now I’m back with Nginx today. For the sake of interest, I worked pretty hard on that issue I was having, but it ended up where the Phusion guys figured out the bug was a RubyGems 1.3+ error and not Passenger. At that very moment I knew it was time to just go back to Nginx, for a looser coupling. A problem that involves Passenger, RubyGems, and 3 gems is one that I’m not going to be able to patch on my own, better to just change my course of action, I figured. I’m glad I did, too.

Meanwhile, Obie casually mentions in a mailing list that he’s drafting some RMM (Rails Maturity Model) and perhaps certification criteria, T. Mornini from Engine Yard kind of agrees with him, and all hell breaks loose in RubyLand – something that seems to happen all too often – while Jamis is looking for links to the best example code for someone getting into Erlang. In going through my Delicious tags to share with him, and totally discouraged by the pervasiveness of the business element in RubyLand, I get a hard-on for Erlang again and decide I’ve got nothing better to do while I wait for Rails 3.1 and return to Erlang once more. A few days later I’ve apologized to T. Mornini (nice guy at Engine Yard) for any Twitter-bashing, unfollowed Obie for the 2nd or 3rd time, and are once again realizing why it didn’t work out the first time with Erlang because there’s still precious little documentation for Mochiweb and Webmachine, and very little learning media for the inexperienced coder. It would appear each community has a lot of the components, but none of them have it all.

So, when all of your projects are simple and could be finished in any language/framework, how do you choose which community you want to be a part of? I’ve been trying to figure this out for over a year now, and I’m still not positive I have a solution. Maybe I’m over-emphasizing the social aspect of web development, which might be due to the fact that I do this as a hobby in my free time at present. My latest guiding principle is to pick a couple communities where there is a lot of hard work and there is more cohesion than not, like JRuby. Those guys are hard at work, making serious improvements with every release, and the HotSpot VM is battle-tested and performant. As a solo developer, trying to create entire solutions, I would be remiss not to leverage the collective libraries of the Java ecosystem in all likelihood. I found Lisp along the way, when playing with Robert Virding’s LFE (Lisp Flavored Erlang), and that led me to search for a Lisp on the HotSpot VM. That’s how I came to Clojure, and I’ve been a bit infatuated these past few weeks. One of the things that I love about Erlang is J. Armstrong, and if you haven’t watched his talk on InfoQ, I highly recommend it. I’m going to go out on a limb though, and say that perhaps one of the things I don’t get from the Ruby community is the sense of order that one gets from having a strong father-like force, and that perhaps Matz’s “love coding in Ruby” just doesn’t work for me – or maybe it’s a language or cultural barrier. Regardless, in watching the Clojure ‘casts I’ve found Rich Hickey to have some parallels to J. Armstrong and perhaps Douglas Crockford, and this is definitely a good thing. There’s some cosmic interplay between Matz’s love theme from RubyConf and Giles Bowkett’s recent rant regarding the casual use of the word “gay” in the Ruby community, but that is for each person to find on their own. For what it’s worth, I could see how Python is a good all around solution, and this is the 2nd time I’ve had that distinct sensation.

Lastly, to wrap up this quarterly report and finalize my position, I’d be remiss not to leave myself breadcrumbs to remind me how I currently feel about a few more still-developing changes. I recently decreased my information overload significantly by cutting the number of people I follow in half, as well as placing more faith in RSS aggregators. I’m now relying on Mike G. and Peter Cooper to keep me up to date on what matters most, and mostly only following RubyFlow, RubyInside, and Mike’s Daily Cups to keep me informed. This replaced a veritable collection of Ruby-related blogs and has been great thus far. I have a few blogs which aren’t being picked up, which I think are great, and I’ll submit them to the aggregator maintainers and hopefully be able to unsubscribe to their feeds as well. Reducing the amount of incoming information has been improving the amount of code I’m writing, YMMV. I mentioned that I unfollowed a lot of people on Twitter too, and this was perhaps a bit harder to do, but has been great. There were people, whom I spoke with frequently, but who weren’t following back, and now they’re gone. I’m only going to say that the kind of person who converses with you regularly, but isn’t following, is definitely making a statement as to their character. One of my pet projects is a service for Twitter, and I’m excited to debut it sooner than later – it should be interesting to see how it is received.

In closing, I would like to thank a few people who have been helpful at one time or another *this year* above and beyond what could be expected: Arun Gupta (Glassfish evangelist at Sun), Charles Nutter (JRuby team), Ezra Zygmuntowicz (Engine Yard), R. Virding (LFE), Peter Szinek (scRUBYt!), Zed (for FHU though and specifically *not* for his rant retraction), Nick Plante (for numerous Sinatra projects on GitHub), Chris Williams (JSConf), Jamie Van Dyke, Pratik (Rails Core, but helped with Rack once), Kirk Haines (Swiftiply, Iowa, Wisteria, Vertebra) for offering to help with Nginx one day when things weren’t going well, and last but precisely opposite least, Tim Dysinger, who has been particularly helpful and/or informative, especially when I’m soliciting input before I make a decision.

grantmichaels

Written by grantmichaels

March 21, 2009 at 6:40 pm

2 Responses

Subscribe to comments with RSS.

  1. Hey, Gregg Pollack here, and I wanted to say hello, and comment a bit more about the first two points you mentioned in your blog here.

    Everyone is entitled to his/her opinion but there are a few things which you should probably be aware of.

    1. I wasn’t the only person who did not have want their Rubyconf talk recorded. There were others, and there are always other speakers at conferences who prefer not to be recorded. Of the conferences I’ve attended, the most common reason is that the speaker is using content from their paid training material.

    It was a little bizarre people were angry at me, since unlike those who didn’t share their presentation material at all, I at least gave people an opportunity to purchase an improved and enhanced video of it. Call me a capitalist I guess?

    There’s a certain genre of open source people who believe they should get everything free. I dunno.. I feel like quality is worth paying for.

    2. Regarding the Giles situation, there’s more to the story then most people know. I’d be happy to discuss it with you over a beer sometime.

    Anyways, if you’re headed to Railsconf the first beer is on me, and I’d love to hear more about your music production.

    patched

    March 23, 2009 at 2:30 am

  2. I use my blog in a more traditional sense, which is to keep track of my thoughts over time. These are significant events (in my mind) which have had a fairly consequential effect as to what degree I’d like to participate in said community. I’ve removed proper name references from the initial paragraph, because it really wasn’t my intention to rehash these scenarios, however, they were necessary to set the stage for getting my point across. Also, I’m all for capitalism, but I don’t think that the open source software conference stage is the time or place for it. Hopefully this edit is soothing.

    grantmichaels

    March 23, 2009 at 1:46 pm


Leave a Reply

You must be logged in to post a comment.