Mainstream

David Heinenmeier Hansson responds to the idea that perhaps Ruby on Rails will never “go mainstream” with this brilliant insight:

To me, mainstream is mostly about reaching people who just don’t care. There are certainly benefits to having such a broad reach that it can include people who don’t care, but the downsides are at least as big.

Bingo! That sums up how I’ve felt from the beginning when people talk about podcasting and videoblogging “going mainstream.” It fits in with how I felt about this guy’s post about how he was going to “jump on the podcasting bandwagon” until he found out that Forrester is reporting “only 1% of households listen”. Frankly, I think the medium should lose all the people that feel that way. (In my experience, Forrester reports are substantially less accurate than asking a Magic 8 Ball, so I’m not endorsing that report only noting that some believe it.) Let the opportunists and gold-rush seekers and the scumbags flake off, and sooner rather than later. Let’s get a backlash and some anti-hype and get rid of the people who are looking to get rich quick and/or find fame without the inconvenience and trouble of actually trying at it. Let the people who care about doing good work that matters to them remain, and we’ll all be just fine.

What we really need is some absurdly negative press and stat! Someone call Steve Friess, he’s always good for some.

RailsConf

I’m thinking seriously about going to RailsConf in Chicago (announcement here). I’m getting more into Rails all the time, and really enjoying it. It’s predominantly what I use for my fun-time programming nowadays. I’d like to be there with a lot of the game-stepper-uppers and hear about the intermediate to advanced topics, and meet some of the other mixed nuts in this dish.

The only downside is that it is happening at the Wyndham out by O’Hare. Seriously, when you have a conference at an airport hotel 30 minutes or more outside the city, it is almost irrelevant where you actually are. It could be Boston, Seatac, or Ontario California – you don’t actually see anything other than the hotel, conference center and possibly a Ruby Tuesday or Benihana nearby. Might as well hold it the airport Hilton in Joplin, Missouri to be the geographic center of the potential attendees. Oh well, at least that’s near the house of my buddy Coop.

Update: That problem took care of itself when the conference sold out earlier today. Maybe next year.

Ruby on Rails Scaffolding Hint

For those of you who ever have to do Rails work with an older database that was not created according to RoR naming specs and to which other things have been coded such that you can’t just rename everything, here’s something I found out the hard way. I created my model and used set_table_name to point to the correct table in the DB. I could do a :scaffold in the controller and everything worked fine. However, if I tried to generate the scaffolding so I could modify it, I’d get the dreaded “Before updating scaffolding from new DB schema, try creating a table for your model” error. I was befuddled why a scaffolding that was working would give such an error on generate.

After much googling, I found out that the scaffold generator ignores your existing model, and only has the capacity to create from the tablename it expects based on your model and controller names. To get around this, I renamed the table to what Rails expected, generated the scaffold, named the table back to the original and then used the set_table_name to point to the original table name. I think it’s kind of a pain this way, but the workaround is to temporarily make the name what RoR wants just long enough for the generation, and then set it back. It beats copying the scaffolding from a different class and changing everything by hand, which is what I did the last time this came up.

Ruby on Rails Thoughts

I have been interested in Ruby on Rails for a while, and been fiddling with it in the nights and weekends. I like to stay up on new technologies and frameworks, partly because it is fun and partly because that’s some of the value I bring to the folks I work for. The more I know about the possibilities, the better decisions I can help make. Despite what people think about me, I am never interested in these things for the sheer novelty of it but in how one can do more work in less time with fewer resources. Like many, I was seduced by things like the video of using RoR to create a weblogging system in 15 minutes. I even downloaded and listened to the Ruby on Rails podcast.

By playing with it, I do agree that it is cool and remarkably efficient to create things that work, when it works. What needs to be included in the analysis is the fact that sometimes things just don’t work. When they don’t work, it’s not so easy to figure out why from the documenation. Frequently I end up googling and searching fruitlessly through docs and doing research on the part I least care about just to make weird exceptions go away. Worst of all, sometimes the exceptions are misleading and will be red herrings that send you on wild goose chases. Because I’m not that familiar with Ruby, that part is always a struggle for me. I’m picking up the language as I use it, but I don’t have a deep background in it. I’d be highly surprised if there many (or any) people who are already deeply familiar with Ruby and coming to Rails because of it. I’d guess 99% of the people are coming for Rails and learning Ruby out of necessity, just like me.

Precisely because I don’t know anything about Ruby, everything I ever do is straight cookbook out of the docs. I don’t know enough to do anything crazy, so all packages are added via gem and such. The other day, I had installed a package and tried to set up some functionality to use it, straight out of the example code. I kept getting an exception about how the package wasn’t installed, even though doing a gem list showed it. I eventually got frustrated enough to ask the question on the #rubyonrails IRC channel. The path that eventually got it working was to do a gem cleanup which changed the behavior from an exception to a crash in the dispatch.fcgi. After that, I had to uninstall and reinstall the Rails package. So far so good.

At this point, I asked in the IRC channel how I could have known to do that, essentially a pointer to the where in the docs the secret knowledge lives. That’s when the trouble started. I have used the IRC channel to get answers a few times when my frustration with the docs grew too great. Every time, I have gotten the answer I needed and every time I have left with elevated blood pressure. I use the IRC channel as the absolute last resort, so it isn’t a matter of RTFM – I’d much rather RTFM than deal with the pricklier denizens there. The problem is that I’ve never been able to get the advice without some form of ad hominem nonsense. It might be my lousy interpersonal skills, or it might be a problem with some of those folks.

This time, as I tried to figure out where I could have done it different I got a lot of weird defensiveness which included statements like “This is a 0.13 release, what do you expect” and “This is the frontier so you have to be prepared to do some work” and my favorite “You can’t expect it to be like using VB.” For the record, I hate VB and don’t expect anything to be like it if I’m going to be using it. The basic gist of all this nonsense was in stark contrast to what you’ll find on the web page nad in the various articles about it, which is “Come aboard, you can make your life easier and get more work done with Rails.” My point, which went over like a fart in church, was that these are mutually exclusive views so which is correct? Either you want people to come aboard and do real world work with it, or it is still a hobbyist hacker thing but it isn’t both simultaneously.

My view at this point is that Ruby on Rails seems fantastic, looks like a highly efficient way to get things done, and will be something I continue to pursue. It won’t be as quick in reality as you might think, because at some point you will have to stop doing productive work and research crazy failures that may be code or may be problems in your installation camouflaged as code level errors. Even if you do everything by the book, your install may shit itself at any point. If you need help and decide to try the IRC channel, hope for the best but be prepared for the worst. Expect that someone will claim it as your moral failing that you cannot decipher cryptic error cases with sparse documentation.

Update: A friend IM’d me this link to a Rails related comment thread. Read the comments and decide if you think the Rails people are being weird and defensive. I read the original post as a guy looking for information and thinking out loud, yet the Railers seem to be pissed off that he is raising questions. To paraphrase my friend, I love the technology but am not so high on the community. It will be nice when we can rationally discuss the pros and cons of the technology without raising the hackles of the Rails fundamentalists for daring to suggest there are cons.