Rails *is* (still) a Ghetto

nice_ass.png

While I know the title is both asking for trouble (because of the now anecdotal original article with a similar title) and flamebaity, please read on – my goal is not to get some great stats but rather to know your opinion about the situation and discuss the possible solutions of the problem.

How it all started…

I would not like to re-iterate what has been said on several blogs, just to summarize: Matt Aimonetti, member of the Rails Activists, gave a presentation at GoGaRuCo which contained sexually explicit images (according to some – I am not here to judge whether that’s true, and it doesn’t matter anyway, as you’ll see in the rest of the post).

I am not really discussing whether it’s appropriate to have images of nude chicks in your presentation at a Ruby conference (I think it’s not, it’s unprofessional etc. – but that would be a matter of a different post Update: Someone summed this up in the article’s reddit thread nicely: If you’re a Rails programmer, or a Ruby programmer, and you don’t decry this sort of thing, you have no business calling yourself a professional. It doesn’t matter how large your website is, how easy it was to write, how much better it is over PHP or ASP.NET or J2EE; by definition, you do not belong to a professional community. That’s all there is to it.
It’s incumbent on every Ruby programmer to either reject this sort of misogynistic sewage, or accept that you’re never going to advance the promotion of Rails in the public perception because members of the community still think it’s edgy or cool to put pictures of strippers in their public presentations.
And here’s a hint: if your decided reaction is to talk about how unimportant this is, how much it doesn’t matter, or how much it doesn’t offend you personally, you probably don’t understand professionalism at all.
) because sadly, I think there are far bigger problems here than that – shedding light on them is the real purpose of the article, not talking about pr0n at GoGaRuCo again.

Would You Walk Into a Hindu Temple with Your Shoes on?

hindu_temple.pngI have been living in India for 2 months last summer, working on a Rails startup. Maybe I am odd or something, but I knew that I had to remove my shoes when entering a Hindu temple, and _no one had to convince me (what’s more, I didn’t even think about it for a second) wether this is the right thing to do, why is it so, whether I should do otherwise etc_. This is a similar situation – I just don’t do X when speaking at a conference, if I suspect that X makes feel even one person in the room uncomfortable, whether because of his gender, race, nationality, Ruby/Rails skills, penis size or what have you – _regardless whether I think it’s fine for me, my wife, for other members of the community and/or the majority of the room_.

The trick is, how does a *hindu* feel when I enter a temple in footwear (even if that is perfectly acceptable in my country, culture, family, friends) – it’s perfectly irrelevant how do *I* feel in the given situation. Using the previous paragraph, try to apply this to a Ruby/Rails conference.

Shit happens…

Until this point in the story, I see no problem at all, and could even agree with the guys asking “what’s wrong with you, don’t make a fuss out of nothing” – the pictures Matt used are non-problematic in my book, and he had no idea they are problematic in anyone’s book – theoretically it could have worked, but the point is, *it did not*. Some members of the Ruby community got offended, and here our story begins.

…and hits the fan

One of the real problems is that after this has been pointed out, Matt still keeps answering “As mentioned many times earlier, I don’t think my presentation is inappropriate.”. As I mentioned two paragraph above, it doesn’t matter what do you think, unless of course, you don’t care about offending some members of the community. In that case you should not try to apologize at all. However, if you are trying, reciting “I don’t think my presentation is inappropriate” will not put and end to the discussion. It just doesn’t work. Why can’t you just simply apologize, admitting that this was a bad move (because it offended some, not because porn, sexual images or whatever in presentations are bad, per se) and finish the discussion?

Rails is Still a Ghetto

However, in my opinion that’s still not the worst part of the story, or to put it differently, some members of the Rails community still found a way to make things worse, by applauding to all this:


dhh_pr0n_is_great.png

OK, you say, we are all used to DHH’s style, this is just how the guy is. That’s (kind of) cool, but I heard that most of the Rails core team (and obviously Matt himself) has the same opinion – and that’s a much more serious problem, because it means that a Rails activist, backed by DHH and other Rails core members finds all this OK, despite of the fact that numerous people in the community voiced their opinion otherwise.

This is not about being a closed-minded prude, shouting for police and suing everyone using sexually explicit images in a presentation. This is not even about women, as I have seen both males and females on either side of the fence. This is about mutual respect – I don’t agree with you, but respect your feelings. Or not, as demonstrated in this case.

So Rails continues to be the most socially unacceptable framework – associated with arrogance, elitism and whatnot in the past – now add pr0n images in presentations. Thankfully RailsConf is held in Las Vegas, and that should calm down all the people who associate Rails with all this crap :-). The real problem is that people associate you with the tools you are using – think Cobol, PHP, Java… or Rails. By being part of the Rails community people associate me with Railsy stereotypes automatically, which aren’t nice at all right now.

I hear you, dear creme-de-la-creme Rails (core) member, I know you don’t give a shit, and you think this is all prude babbling – because your hourly rate is more than some of us earn in a day, and you’ll be sought after even if Rails will have a much worse image than it has now. But 99.9% of us are not in the ‘circle of trust’ and would be happier if Rails would not be constantly associated with a ghetto.

MINASWUBN

In case you are wondering what does the acronym stand for, it’s “Matz is Nice And So We Used to Be Nice”. Unfortunately, the stuff I don’t like about the Rails community is sneaking into Ruby too, it seems, as the above case demonstrates. Besides this, the count of aggressive comments and reactions on various blog posts is really disturbing to me. Please (at least Rubyists) try to avoid being contaminated by all this shit and stop thinking you are cool because you can swear on a forum (always in anonymity). You don’t have to be a douchebag just because you are a Rubyist / Rails coder, as surprising as this might sound to some.

Conclusion

I think “incidents” like this and getting more and more antisocial members are inevitable by-products of growth in a community. The questions is, whether, and if, how, do we stop them. The problem is that it seems to me the Rails “top management” doesn’t want to stop them (what’s more, even encourages them) in the first place (please prove me otherwise – maybe I don’t see the full story – I’ll be the happiest to admit that I am talking bullshit).

I have to admit I have no clue what would be the right move – burying our heads in the sand and pretending everything is fine is not. Please leave a comment if you have an idea or anything to add.

Rails Rumble Observations, part II – trends in gem/plugin usage

rails_rumble.png
In part I I wrote about the hows and whys of gathering gem/plugin usage data based on Rails Rumble submitted user information, and in this part I would like to present my findings. So without further ado, here we go:

Prototype/jQuery

I already covered this in part I, but for completeness’ sake, here is the chart again:


prototype_jquery.png

It seems that jQuery is (not so) slowly replacing Prototype as the javascript framework of Rails – which is still better (from the Prototype POV) than with Merb, where jQuery is the default framework (oh yeah, I know, Merb is everything-agnostic etc. etc. but I think vast majority of merbists are using Datamapper, jQuery etc. (?)).

Skeleton Applications

Well… this chart is rather dull:


bort.png

One in every three teams used a skeleton application (which in this context can be replaced with ‘Bort’).
The sovereignity of Bort is a bit surprising given that it’s not the only player in the field by far – there are definitely others, like ThoughtBot’s suspenders, Blank by James Golick, starter-app by Pat Maddox, appstarter by Lattice Purple just to name a few.

I am not sure about the others, but the absence of suspenders from the chart has more to do with the fact that it was not yet publicly released before Rails Rumble – I am basing this claim on the fact that a lot of people used the gems/plugins which, combined together, are basically suspenders.

However, this doesn’t alter the fact that Bort is immensely popular – great stuff, Jim.

Testing Frameworks

I think there are (at least) 2 things to note here:

  1. Testing in Ruby/Rails is not considered optional even facing a very tight deadline. Even if we assume that the 49% didn’t test at all (which surely doesn’t sound too realistic – they probably just went with Test::Unit), more than half of the teams did!
  2. Though testing tools are a much debated topic nowadays, and the winner is not clear (yet) – I would guess, based on the above results there is roughly an 1:1:1 ration between Test::Unit, rspec and shoulda *currently* – there are definitely interesting alternatives to Test::Unit.


testins.png

Mocking


mocking.png

Not much to add here – though the above chart says nothing about how much people are using e.g. Mocha with rSpec (vs. using the rSpec built-in mocking tools), one thing is clear – as a stand-alone mocking framework, Mocha reigns supreme.

Exception Notification


ex_notification.png

Another point for ThoughtBot (not the last one in this list) – Hoptoad has no disadvantage compared to the more traditional Exception Notifier (if we don’t count getting an API-key, which takes about a minute) – on the upside, you get a beautiful and user friendly web GUI.

Full-text Search


full_text.png

I found the above chart interesting for two reasons:

  1. I thought that Ferret and/or acts_as_solr are still somewhat popular – it turns out they are not
  2. I also thought Thinking Sphinx is the de-facto fulltext search plugin, and didn’t know about Xapian – well, I learned something new again.

Uploading


uploading.png

ThoughtBot did it again – Paperclip is already more popular than the old-school attachment-fu. I am always a bit cautious when someone challenges the status quo (like Nokogiri vs.
Hpricot, Authlogic vs. Restful Authentication, attachment-fu vs. Paperclip etc.) but it seems Paperclip is ripe to take over. You can find some interesting tutorials here and here.

User Authentication

Another dull graph for you:


user_auth.png

I am wondering how homogenous this chart would be if Authlogic would have appeared earlier – it seems like a strong challenger (already watched by around 260 people on github) and I am sure it will take a nice slice of the pie in the future.

What’s more interesting is the openID support: more than one third of the apps offered openID authentication, and quite a few of them *solely* openID.

Misc

  • factory_girl was used to replace traditional fixtures in every 6th of the apps!
  • HAML/SASS is quite popular – used in about 20% of the applications
  • Hpricot was the only HTML/XML parser used (in 7 apps alltogerher)

What I am happy about the most is that there is still a lot of innovation going on in the Rails world – as you can see, newer and newer plugins/gems are appearing and in some (in fact, a lot of) cases are dethroning their good ol’ competitors. There is a lot of competition going on in almost every major area of Rails web development, and this is always a good thing.

Random Links from the Web, 21-04-2008

2006 rubyrailways.com Retrospective

For the sake of future comparison, out of plain fun and for just whatever else, here are some statistics of my first about-half-a-year of blogging:

Global Statistics

  1. 1,057,638 successful requests for an average of approximately 4000 requests/day
  2. 622,776 page views for an average of approximately 2300 page views/day
  3. 34 posts and 364 comments, contained within 15 categories. This statistically means a post gets about 11 comments on average
  4. Data transferred: 10.54 GB, which is a daily average of approximately 40 MB
  5. Current AdSense CPM: 2.04$ (is this good or bad? It is hard to get such info on the net…)

Content

  1. Most popular post (i.e. most page hits): Data extraction for Web 2.0: Screen scraping in Ruby/Rails (nearly 10.000 reads)
  2. Most debated/controversial post (i.e. most comments): Sometimes less is more (45 comments)
  3. Most referenced article: Install Internet Explorer on Ubuntu Dapper in 3 easy steps (9 references)
  4. Best runner-up: Implementing ‘15 Exercises for Learning a new Programming Language’

Platforms

  1. 57% Windows (quite surprising for a site where the most popular search terms were ‘ubuntu ruby rails’ and ‘dapper ruby install’ :-))
  2. 27% Linux
  3. 16% Mac

Browsers

  1. 74% Firefox & Mozilla
  2. 14% Internet Explorer (83% IE 6.0, 16% IE 7.0)
  3. 7% Safari
  4. 3% Opera

Top 5 referring sources

  1. google.com
  2. direct
  3. stumbleupon.com
  4. dzone.com
  5. del.icio.us

Given that rubyrailways.com is my first attempt at blogging, I am studying Ruby for just a few months now (I even started this blog earlier than I wrote my first Ruby script), I have really little time for blogging and that I am not a native speaker, these figures are not that bad I guess :-). Of course I would like to improve them even more, so please leave a comment with suggestions on this – what would you like to see here in 2007?

Mind-boggling blogging

Tagline: Blogging is a very easy looking activity, until you _actually_ begin with it…

Most probably even the irregular readers of rubyrailways have noticed a 3 month period of silence during the summer, which has just ended a few days ago. In my opinion it is generally not a very good idea to temporarily abandon a blog, without even announcing a summer holiday or posting a note like “to be continued after an undefined period of blogger’s block” or something. Why did I allow it happen then?

Well, there are a handful of reasons for this: summer holidays, though days at the work, lot of stuff to do on my PhD but mainly a kind of a blogger’s crisis. Although all the reasons are very interesting, I would like to elaborate on the last one a bit.

The first problem stems from the relative success of my previous entries: Tutorials like Install Internet Explorer on Ubuntu Dapper in 3 easy steps, Data extraction for Web 2.0: Screen scraping in Ruby/Rails or Getting Ruby on Rails up and running on Ubuntu Dapper were quite popular and set a standard which was not easy to top (or at least to maintain) in terms of equally interesting topics.
Unfortunately I can pursue Ruby, Rails and even screen scraping/web extraction only in my spare time which is a scarce resource (it’s kind of hard to work full time, roll a PhD and blog simultaneously :-)) and therefore I do not bump into an interesting topic just every second day. However, this eventually got me into a kind-of an inverse Concorde-effect: If I have waited a week, then I can wait another to deliver something sexy. After a month: Now that I have waited a month, I surely have to come up with something *really* juicy… You get the idea.

I believe I am not the only one around with this thinking pattern, and I am not sure how are others handling this problem, but I have decided to give up this habit – in the future I would like to blog regularly, even at the cost that not every post will be a top-notch blockbuster :-).

The second problem is that I am kind of a renaissance guy: I am interested in new technologies, programming, science research, economics, reading books just about everything, photography, traveling, computer games, sports…
However, since rubyrailways is my first attempt at blogging, I am quite unsure how to deal with this amount of information: what should be the ratio of not-necessarily-correlated topics (e.g. Ruby, travelling and PhD research). I am nearly sure though that it is not a good idea to blog about everything, since then every post will be uninteresting for most of the readers.

Yes, I know that categories were invented to workaround this problem. However, in my experience most of the people today are using feed aggregators and/or personal start pages like bloglines, netvibes or pageflakes, and hence are facing this problem nevertheless. Yes, they could ignore the posts that are not interesting to them, but after doing so a few times they will potentially ignore your whole blog.
So how to find the golden mean?

A possible solution is to have a separate blog for everything: In my case this would mean at least a software development (mainly Ruby/Rails), general technology, Linux/Ubuntu, Science/PhD research and a travelling blog. Well, I certainly would not have the time to keep up all of them since I am struggling even with rubyrailways :-)… I could of course ignore what people think about my blog and just write it to myself, but that would deprive me from knowing what other people think about the things I am after, which is a very valuable information for me.

I would be very much interested in your opinion on this topic: How do you solve this ‘feature creep’ on your blog – by maintaining more blogs, focusing on just one topic and ignoring the others, or trying to balance somehow?

Please leave me a comment or send me a mail, I’d really like to hear your opinion…

Analyze this

Finally… After several months, my google analytics invitation has arrived.
Does it offer more than any ‘usual’ page statistics tool that can be found on the net?
Short answer: absolutely! For the detailed analysis of analytics read on…

My site is hosted at dreamhost, and they offer a pre-installed
logfile analyser, analog, which claims to be ‘The most popular logfile
analyser in the world’. It has a decent feature set (not too much graphical fancy stuff, but
nice analysis nevertheless), still i wanted to give a try to something different, too – so i have installed statcounter, ‘A free yet reliable invisible web tracker, highly
configurable hit counter and real-time detailed web stats’.

I have been quite satisfied with both statistics (although in the free version of statcounter, the log size
is limited to 100 hits) – until i have seen what google analytics is capable of.

The number of features that google analytics has to offer is HUGE. I am using it
for a week now, and there are still some statistics which i simply did not have time to look at. There are quick overview screens for everything important
(above you can see one of them) – and if you would like to drill down to every single hit, you have the possibility too.

Ever wanted to know everything about your visitors? No problem. You can view every single visititor’s referral link, which country/city did he come from (also displayed on the world map), connection speed, platform, browser, screen resolution (even color depth!), language, which keywords did lead them to you, their loyalty, conversion rate (i have listed just a small fraction of featues)… and all this presented with nice graphs, charts etc. Simply unbelievable.

I will not write anything more about this tool, since if you have it, you know what i am talking about, and if not, go and get it if you are interested in your web site stats!

My advice is: forget about ANY kind of stat counter, and request a google analytics account ASAP.

Google Trends: Googlefight v2.0 and much more!

Every second blog I came across recently has an entry about google trends, so I am adding my small findings too! 😉

After playing with it for a few hours, I have to say that writing a relevant query is not always as easy as it seems. People are posting Java vs Python vs Ruby comparisons, but they are not always aware that the graph contains (among other things) the comparison of an island, a comedy troupe (Monty Python) and a character set (Ruby Characters), for example. According to wikipedia, all three terms have more than ten possible meanings, and although a tech nerd may know only one for each of them, not all pages out there are (fortunately) written by tech guys.

Let’s start with some Rails related stuff:

Well, I wonder who else recently (not even necessarily in the computer industry) got so famous in a matter of days…
It is interesting that there is no data available for “David Heinemeier Hansson” or even “David Hansson”, just for DHH.

The next graph could answer the question whether it is a good idea for a web hosting company today to support Ruby on Rails:


For the idea of the following googleTrendFight thanks for Laszlo on Rails blog.

It’s really thrilling to see that a (once) small open source community can compete with enterprise stuff of such magnitude as JBoss/EJB (ok, this is kind of apples-to-oranges, but nevertheless interesting). If you wonder why did JBoss’ search volume go dramatically up – it’s because RedHat bought the company.

Non-Rails related:
slashdot.com vs digg.com vs reddit.com:

No comment…

The last one about wikipedia, kind of funny:

Why should be this funy? Because the only point in the history (so far) when search volume for wikipedia was declining was because of:

Probably (hopefully?!?!) there is no direct link between these facts, but it is an interesting random coincidence then…

I wonder whether google will improve the quality of this search and/or add possibility to specify advanced queries to prevent mixing in of irrelevant results – at the moment, if I did try to narrow the search, in lot of cases i got back ‘data not available’… Interesting toy, though.

Round corners and nifty cubes

I am in the process of redesigning rubyrailways.com, so you can see every kind of weird experiments sometimes (I am too lazy to do the whole thing offline, because that would mean to set up Apache, PHP, WordPress, MySQL … etc, and the other reason is: I have too limited time to do it quick).

As you can see, currently I am experimenting with one of the most widespread cliché of today’s webdesign: round corners. There are infinite possibilities to round your corners – as my primary focus is not web design, i am not really an expert on the topic, but i have seen a lot of methods (various ratio of (no) images, JS and CSS). For example, a Firefox friendly quick’n’dirty solution:

Simple, but limited

(no images and JS needed, but has severe cross-browser restrictions – if you are reading this from IE (or probably anything other than Firefox) you know what i mean).

Browsing through the possible solutions, i have chosen Nifty cube. It is an image-less solution, all you need is to add 1 line of Javascript and a few lines of CSS code to make it work. It has a lot of options (this i already the second version, which is a substantial overhaul compared to the first one),

and for me it worked nicely. (Have to work on the actual usage, though – The rounded div’s around the title are too big ATM, but this is not the problem of Nifty cube)

Announcing rubychallenge.com

About a month or so ago, we begun to work on a new ruby puzzle site entitled rubychallenge.com with Alex Combas.

Some people may think after reading this line: “Yet another ‘not pron’ or ‘pythonchallenge.com’ clone”. Well, i would not say we did not borrow some basic concepts from these great puzzle sites, but our final product will have not very much in common with them: There will be programming puzzles on rubychallenge.com, and the domain suffix is equal with that of the pythonchallenge site. However, the analogy stops here. Rubychallenge will offer an entirely different programming/game/puzzle experience compared to all the similar sites out there, both in terms of game concepts and mechanics, as well as entirely unique site structure/design.

We have tons of ideas in our wiki already, and right now we are fledging out which ones to implement. Alex just set up a working development environment, so after ironing out some ideas crucial to begin, we might even write some code soon 😉
We would like to come up with a presentation/demo page as soon as possible, and possibly a development blog to inform you what’s going on. At some point we would like to incorporate some beta testers, so stay tuned!

Canada on Rails observations

According to more people (including me), the nicest wrapup of the Canda on Rails conference can be found here: Canada on Rails, Day One and here (part 2): Canada on Rails, Day Two.

Some things i found interesting/funny:

The first speaker was (surprise, surprise!) David Heinemeier Hansson. He had an interesting slide:

IMG_0880

Alex’s comment:

“David explains in no uncertain terms that some people do shout quite loudly for features to be brought into rails core and when it makes sense to incorporate those features he does, but sometimes it really makes no sense and so he tells them a frank “no” and this sometimes seems to cause people to complain and even threaten to stop using “my free product” which elicits the response that you see in Davids presentation slide above. “

Hmm. Interesting explanation 😉 On the presentation of Amy Hoy:

Second to last was Amy Hoy, and I dont think I need to tell you that she did a great job. Her talk was entitled “Ajax with Rails” so she actually got to demonstrate some live code and even wrote some for us in real time in response to a question someone in the audience asked…

I wish i had the nerves to do this, usually i am happy if i can present my prepared slides at a conference, not write LIVE CODE 😉

For the full event description read Alex’s blog.

Another nice conference notes can be found here: At the canada on rails conference.

Google Summer of Code is back!

Google SOC is opened for 2006.

I think nothing can prove the success of the project better than the very fact that in 2006, google is again offering an opportunity to fund talented students from the whole world (See the geographical distribution of the 2005 SOC coders) to participate in top open source projects.

The Ruby/Ruby on Rails community didn’t respond quickly enough last year, but hopefully in 2006, backed by rubycentral.org we will not miss this great opportunity to get some motivated and talented people on board.