00:00:13.759
thank you hello everyone
00:00:20.279
hello mic testing mic testing one two three yay
00:00:29.820
so sorry about the delay there's some I have some very special machines so we
00:00:35.579
needed some I had to borrow another machine and uh I don't have PowerPoint up I'm using a
00:00:42.899
preview for showing it so that's why this slide number will always be number
00:00:49.100
so I'm gonna be talking about building local community by organizing events
00:00:56.520
specifically code Retreats and Bug mashes
00:01:02.520
part of the boulder Ruby group and I did a dry run last week with the
00:01:08.159
team there hold on
00:01:14.460
so this is the feedback I got okay
00:01:24.780
so this is the feedback I got from the uh balder Ruby group last week
00:01:31.979
my naming is not right the title for the uh talk the name is not proper B is a
00:01:39.780
B is a method so it can't be uh capital and I am passing parameters so there
00:01:45.180
shouldn't be a comma at the end and I'm passing multiple parameters so this is not the proper way
00:01:51.180
so great feedback so I made a change so this is the new
00:01:56.340
title how does this look
00:02:01.380
Okay so
00:02:09.000
yeah okay let's start with the pop quiz anybody know who this gentleman is
00:02:17.580
even I didn't know a couple of days ago so I just looked up on the internet and
00:02:22.620
Wikipedia and so his name is Howard Thurman and among other things he's a civil
00:02:28.560
rights leader and he has got nothing to do with Ruby the reason I am including him here is
00:02:35.640
because of this quote by him so don't ask yourself what the world
00:02:41.340
needs ask yourself what makes you come alive and then go do that
00:02:46.500
because what the world needs is people who have come alive
00:02:54.660
so I it's been my the story of my life for the past two years
00:02:59.940
this I uh I was not happy in the my job I decided I'll uh
00:03:06.000
I want to recreate myself so I decided to become a full-time programmer and I started learning Ruby and rails because
00:03:12.420
somebody told that's a great way to uh that's the easiest way to become a programmer
00:03:17.700
so I've been a Ruby programmer for the past one one and a half years and one of the things I found that makes
00:03:25.920
me come alive and be makes me come alive and light up is organizing these events the small events
00:03:33.060
and that's what my uh goal for today is
00:03:39.720
I want to inspire at least one person here to organize an event
00:03:45.360
uh so if maybe a couple of weeks from now if somebody comes and say it tells me hey because of your talk I'm I'm
00:03:52.260
planning to organize this my talk is a huge success
00:03:59.879
so what's the plan so this is these are the things I'm going to talk about I'll start over explain by explaining what a code rate
00:04:06.599
rate is and what a bug Mash is then go through some details about the
00:04:12.840
organization organizing part uh choosing a location raising
00:04:18.299
sponsorships letting people know then we'll look at why why we need to do
00:04:24.840
this why we need more of these events why we want more people in the community to be
00:04:30.360
organizing such events and lastly I have a few things which I
00:04:35.460
couldn't group anywhere so I'll put it as miscellaneous okay so let's
00:04:42.300
begin with first so what is a code rate rate so how many people here have been to a code retreat
00:04:48.840
other than Corey I guess okay not many people so uh
00:04:59.400
so what is the code Retreat it's a day-long repeatable event uh focused on
00:05:04.620
practicing the fundamentals of software development so I've taken this directly from Corey Hines website
00:05:12.240
um so this was the idea was uh from from these four people uh and they
00:05:20.759
came up with it in January 2009 so the idea was to come up with a
00:05:25.919
day-long event which program is which helps programmers practice their craft
00:05:38.340
so how does it work it's uh it's designed to keep you from finishing
00:05:44.340
you work on a problem but you don't structure such that you won't be able to finish but you will get practice of
00:05:50.340
working towards a solution it emphasizes the four simple four rules
00:05:55.800
of simple design allows for people to pair with lot of
00:06:01.320
other people through the day throughout the day and learn from each other
00:06:08.120
so the code Retreat itself extra it's a
00:06:13.440
day-long event and it's structured into six or seven sessions um
00:06:19.199
where people pair with others and solve with this one problem the Conway's Game
00:06:24.840
of Life so every iteration the people will work on the same problem but will try to do
00:06:31.080
some new things try try out some new ways of
00:06:36.740
some new approaches to programming um
00:06:42.479
and the problem it is chosen the conveys game of life it's a rich Pro domain
00:06:49.919
problem so there's people get to learn a lot
00:06:55.979
by even if that and multiple code Retreats and work on it many different
00:07:02.699
times the main objective here is not to solve the problem but to try new ways of us
00:07:09.300
programming so it's 45 minutes of iterations and each iteration
00:07:15.360
people pair with each other so paid programming is a mandatory thing for a code retreat
00:07:21.660
that's where the ideas get exchanged and people get to move out of their comfort
00:07:27.419
zone and learn new things and one other one important thing is
00:07:36.120
to delete the code at the end of 45 minutes this we don't do it in our regular we
00:07:42.360
don't we don't usually delete code in our regular day-to-day work so it's participants find it a bit
00:07:49.560
unusual at the beginning to when we say hey please delete the code I work for 45 minutes I put in a lot of
00:07:56.880
work that's the response for sometimes um
00:08:02.580
so at the end of the 45 minute pairing there's a short retrospective it could be where people review what has
00:08:11.580
been what they tried and what came up for them during the past iteration
00:08:19.259
and they decide on what what else they need to they'll try or the next session
00:08:25.139
so the next session people switch partners and start over again so this goes on for a whole day
00:08:34.200
oh so this is from our uh the one of the
00:08:41.940
code Retreats uh the very first code it I organized early Feb
00:08:47.339
so the code Retreat starts by the um with the facilitator introducing
00:08:53.760
everyone to what will happen during the day and giving an idea of what what the code
00:09:00.300
Retreat is what the objective is and what the what's the problem that will be worked on
00:09:07.440
so the code iterators facilitator's job introducing the day guiding pairs
00:09:13.019
through each session so uh people are going to be working trying to
00:09:19.680
solve this problem in through different ways during the day and it's a facilitator's job to go look
00:09:26.459
at just observe what they are doing and maybe give some helpful hints uh
00:09:32.040
and then nudge them towards trying some new things and the code reader the facilitator also
00:09:39.740
leads the intercession retrospective and then throws ideas like for follow-up
00:09:45.899
based on what feedback came came from the participants and moves it forward to the
00:09:52.080
next stage there's also a closing circle at the end which which is an important part
00:10:00.120
uh of the day which is to complete everybody looks at what they did over
00:10:05.880
the day and uh um summarizes what they learned what uh
00:10:11.399
surprised them the most and what they'll do different uh next on Monday morning when they get
00:10:19.620
back to work and so code Retreat uh the good thing
00:10:26.760
about it I like is anybody can participate in it
00:10:33.420
and anybody can learn like be it be a newcomer or maybe it's a very
00:10:39.060
experienced programmer irrespective of that they're irrespective of their expertise level they get something or the other out of
00:10:46.320
something of value by participating in a code retreat and one thing I noticed uh well
00:10:53.360
facilitating a quadratic recently was some people were taking a long time
00:10:58.740
spending a long time analyzing the problem and I realized yeah that's not really
00:11:06.060
the goal here so we are here to practice coding so and uh with uh the rails the way we work
00:11:16.200
with Ruby and rails we don't really uh spend too much time analyzing we we get
00:11:24.000
to start coding and try to we get immediate feedback on what uh it makes it easy for going forward we
00:11:31.320
don't really spend too much time analyzing so I mean
00:11:39.140
four principles of uh design
00:11:44.640
actually I have the links to it later on yeah
00:11:50.640
okay and so this is a one of the intermediate
00:11:56.940
session uh retrospective so uh people are standing here because
00:12:03.600
we told them they should delete the code and stand up at the end of 45 minutes
00:12:11.040
okay and the closing Circle so there that's
00:12:16.860
at the end of the day everybody goes around the circle and talk about three things that uh three they answer three
00:12:24.180
questions what if anything did they learn during the day what if anything did surprise
00:12:31.019
them the most uh during the day and the third one is what if anything will they do differently
00:12:38.040
from the next day when they get to work
00:12:44.639
so the participants get the whole day of practice uh whole day of pairing with
00:12:50.760
others and learning from others um
00:12:56.579
the last code Retreat we did in Colorado Springs two weeks ago
00:13:02.579
towards the end of the day we myself and Nick with a co-facilitators we realized
00:13:08.760
that not not nobody is doing very only a couple of people are doing test driven development
00:13:14.760
everybody else is just going about it in their own way so uh
00:13:21.360
we did a demo of how how to solve this
00:13:26.579
by using tdd and almost everyone found it very useful
00:13:36.000
so how many people does it take to have a successful code Retreat any idea
00:13:46.440
any guesses okay that's a good one yeah
00:13:52.800
at least four okay four is good but I would say
00:13:59.399
just two people are enough the main benefit from a code Retreat is pairing and trying out different things
00:14:05.760
so one person when two people are working together they can push each other to try new things and
00:14:12.560
get value out of it for a larger group it's good to have a facilitator who keeps track of what's
00:14:19.740
going on and gives directs it in a different way but just two people can
00:14:24.959
get together and have a good get value out of a code retreat
00:14:32.040
so this is what I was saying earlier uh tdd I've been dropping I was dropping the word throughout the day but then
00:14:38.579
people didn't really know what tdd was and when I try to explain what it was uh
00:14:46.320
I had a difficult time so uh the facilitating the code Retreats
00:14:51.600
uh made it made made me clarify by to myself what uh what I mean by DDD
00:15:00.000
okay so much for the code retreat I want to talk about uh bug Mash
00:15:07.199
uh bug match so what is a bug Mash
00:15:14.339
not that's not this so bug Mash is another group another group
00:15:20.519
uh hacking coding event it's an event to facilitate contributing
00:15:26.880
to rails so it's a great experience experience
00:15:32.040
for newcomers to pair with someone who's experienced and
00:15:38.399
contribute some code changes to rails code base
00:15:44.639
uh and this is a very straightforward event
00:15:51.480
there's not much organization involved just get people together in a room and work on it work on the problem
00:16:02.579
um there's a good documentation on the rails site on how to contribute forward
00:16:09.600
to rails so Visa anybody can just go through this and
00:16:15.000
attempt at making uh changes contributing to rails you can
00:16:21.420
also just modify the rails documentation you don't need to even that that's another way of
00:16:27.839
contributing
00:16:37.199
so first time I organized a code Retreat uh sorry not coded the bug Mash I wanted
00:16:43.139
everything to be proper so I sent an email to Aaron Patterson he immediately responded saying yeah I
00:16:49.740
can be there I can be available online and I'll help you and he also gave me a big list of things to do how to go about
00:16:56.639
uh getting value from the contributing to rails
00:17:02.940
and the day of he was at a conference and so he wasn't really available but he
00:17:08.819
said he's he can make the you can pull Rick you can
00:17:14.459
address the pull request by his iPhone so he can do it anytime and so we started working on the uh
00:17:21.319
on the rails code base and we submitted a few patches and immediately Jose Alim was answering
00:17:28.679
us our questions and addressing those uh uh pull request so later on we realized
00:17:36.720
we don't really need to let the rails core team know about having a bug Mash
00:17:42.660
we just have to go start making a pull request and there they are on it right away
00:17:51.860
so yeah I find this plan cast to be a great tool for letting people know and
00:17:58.140
having them RSVP to any event so I've been using that for organizing the bug
00:18:04.620
mashes and I got to commits in rails just by
00:18:13.860
organizing how many of you have a commit in rails
00:18:19.620
hey one two three yay so I'm a beginner I just started a year
00:18:25.919
ago and I already have two and that makes me very proud
00:18:31.440
uh so the first one I paired with Mike gehard who's in Boulder and um
00:18:37.500
yeah the this one involved a lot of go back and forth with the commit we had to
00:18:43.320
make a commit then uh someone on their code team said hey this is not right you
00:18:48.360
need to make this something else so we had to do a rebase of the commitment send it make another request and when we
00:18:56.280
do that it's usually we need to make sure it's just the same commit and not it doesn't end up multi
00:19:02.700
as multiple commits so I had no idea how to do that thankfully Mike Gerhard knew knows much
00:19:09.660
more about GitHub than me GitHub and git so he walked me he navigated me through
00:19:15.960
all those problems my second commit was when I organized I
00:19:21.179
went in Bangalore and this guy Arun Agarwal he I paired with him and he this was a very simple
00:19:27.780
thing I just need added need to add a test to validate a certain Behavior
00:19:33.240
and Arun told me how to do it and we did I did it and it got accepted the same
00:19:38.460
day um by the way so this guy I don't you guys
00:19:43.620
are gonna hear a lot about it going forward when I met him in uh
00:19:49.460
may he was at 10 commits in rails now over the past five months he has
00:19:55.080
done 170 commits and he's going strong
00:20:02.160
okay so that's about the bug match um so a few details about how to
00:20:07.320
organize the event
00:20:13.740
just checking how I'm doing with time so uh organizing a bug match there's not
00:20:21.480
much uh uh effort required just find a place it could be a local Ruby rails company
00:20:28.640
or a co-working space or a cough even a coffee shop if just a
00:20:33.720
couple of people are meeting and inform as many people as possible beforehand and show up pair work and uh
00:20:42.900
smash some bugs that's all there is to it and there's our adequate documentation
00:20:48.120
on the rails guide so it's uh is it there isn't really any in more any
00:20:54.240
effort involved in organizing a bug match it's good to have some people experience
00:21:00.299
their some experienced developers there who can help when some problem comes
00:21:06.900
also uh there's a other
00:21:11.960
school team are available on the IRC channel so you can ask them questions
00:21:17.520
anytime they're on the IRC Channel organizing a code Retreat there's a
00:21:23.039
little bit more involved work location depending on how many uh
00:21:29.400
people you are planning for you need to find a suitable location
00:21:39.659
yeah one of the first one of the first ones I organized we rented a big place
00:21:47.100
and later on I found that co-working spaces are a great place to host any
00:21:52.500
such events because they already have all the setup just need to and they're also willing to
00:21:58.200
sponsor the event so pay for it they're willing to have us come there
00:22:04.260
and work for free so co-working spaces are great for organizing an event
00:22:10.380
and code Retreat the lunch is an important part it's always good to have
00:22:16.380
catered lunch so people when they come for a code retreat they stay
00:22:22.820
from morning to evening and don't have to worry about anything they should be
00:22:27.960
able to focus completely on the coding part so uh
00:22:33.480
it's good to get sponsors for lunch breakfast and coffee
00:22:40.100
and if there's a big group it's uh it's good to have someone who knows how a
00:22:46.380
code rate rate works as a coefficient as a facilitator I have tried my hand at co-facilitating
00:22:54.120
two code Retreats so far it's an awesome experience and it's you get to learn a
00:22:59.880
lot just by observing what everybody is trying how people are trying to solve
00:23:05.880
this problem I would say for
00:23:13.320
the requirement for being a facilitator is one is you need to you should have
00:23:19.860
attended a code Retreat before and two is you should be interested in
00:23:25.260
doing this job that's all there is to it
00:23:32.400
so raising sponsorships that's probably the biggest problem many people will have
00:23:38.460
even I when I started that was the one thing I was worrying about but it's actually very simply very
00:23:44.460
simple we just need to ask ask a few people in your community either they are ready to sponsor or they
00:23:51.659
know somebody who who will sponsor so uh uh most the
00:23:58.860
awareness for three code Retreats so far and getting sponsorships hasn't been an
00:24:06.840
issue so at all some of the people like as I mentioned the co-working space that's one
00:24:14.340
good sponsor to get and then local Ruby and rails
00:24:20.400
development firms who we know people uh they are ready to have
00:24:26.520
and we got sponsorship from a book publisher for one of the event and the training companies they are also
00:24:33.659
very eager to sponsor because that's a way for them to reach out to the Developers
00:24:39.600
and recruiting firms the same way they want to get get in touch with more
00:24:44.700
Developers so raising sponsorship shouldn't be at a
00:24:50.400
pro a bottleneck for anyone who wants to organize an event
00:24:59.580
and this was from the Bangalore Court Retreat I organized sorry the Bangalore bug Mash we weren't really planning for
00:25:06.659
lunch but the company which hosted us they said we'll sponsor lunch so that was
00:25:12.600
great so lunch at quadrated is an important
00:25:18.299
thing and when you have many people uh coming
00:25:24.539
together and having and you need to arrange for lunch for them it's so initially I was a bit skeptical what
00:25:31.980
kind of food should I uh order will they be happy with it will everybody get what
00:25:37.140
they want then I chose to just go with whatever I like
00:25:43.500
and it turned out great so this one the Colorado Springs code Retreat I ordered food from a Mediterranean restaurant
00:25:50.520
and a couple of people shared at the end of the day that uh they never knew that falafels would be very tasty
00:26:04.020
okay so why why do why do we need to organize these events
00:26:21.120
I'll borrow Dr Nick's answer for that so we love Ruby and Ruby must win
00:26:29.360
that's that's what he's he uh he his main point was at the Ruby Red Dirt Ruby
00:26:37.500
conference Keynote how many of you have seen this talk how many of you were there at this talk
00:26:45.240
okay so this is a must for everyone all the rubies
00:26:51.860
Dr Nick talks about what's your job at your local Ruby Club
00:26:58.559
and give some ideas about why how to build the Ruby community
00:27:03.720
and um so well the first thing he says is
00:27:10.140
everybody should take an active role in the Ruby Club
00:27:15.539
and Ruby user groups can learn a lot from Toastmasters he explains how
00:27:21.120
Toastmasters has a set procedure for building a their teams and
00:27:28.500
the one thing the main thing I liked from his keynote is that Ruby User Group
00:27:35.039
should have the good processes especially to take care of the newcomers
00:27:44.159
I see that the code Retreats and Bug mashes as a great entry point for any
00:27:50.100
newcomers to the community be it some of fresh programmers or people who are
00:27:57.179
working on other programming languages and want to try out Ruby and raise
00:28:02.460
so um yeah let's study that's my reasons to
00:28:08.159
say we need more code Retreats and Bug mashes
00:28:13.260
and why do I do it I enjoy organizing events
00:28:19.080
and I get to make friends everywhere I'm from I'm based in Colorado and I am
00:28:27.360
from Bangalore in India and I'm planning to have a presence in
00:28:33.840
both places going forward and organizing these events has made
00:28:39.240
made me helped me in having a community in both places both places can say I belong to their
00:28:45.360
their teams and it has helped me as a freelance
00:28:51.299
developer a couple of interviews I went people already knew about me and they
00:28:56.700
were like hey I know you I can I can work with you
00:29:03.900
and one other uh personal experience I had earlier this week was it made me
00:29:09.360
realize yeah we do need more such events in a nutshell
00:29:15.059
I had to make an emergency trip to California to get my passport because I'm traveling to India later this week
00:29:22.440
and this um I had sent the passport to the Consulate
00:29:29.580
in San Francisco on August 2nd and from August 2nd to September 20th
00:29:36.360
they had not told me anything about what was happening so I had to make an emergency trip there
00:29:41.880
and ask them what's happening as soon as I showed up they said oh your passport is here uh some the person who was
00:29:47.760
working on it went on vacation so uh and then within a couple of hours
00:29:53.279
they gave me the passport that I was like ah if only somebody had
00:29:58.380
told them how easy it is to set up a system for tracking that if only there somebody had showed them a
00:30:05.880
good way of building their system we wouldn't have this problem
00:30:11.520
so actually that's what I'm planning to do after I get maybe in a couple of weeks when I get some time I'm gonna
00:30:16.799
build a prototype application and send it to them saying hey you guys should have this start on this thing
00:30:24.899
um
00:30:31.620
most of the companies have had bad experiences with implementing systems in their company
00:30:37.860
they would have invested heavily and lost lot of money so not many people know what can be done
00:30:43.919
with good practices good software development practices so that's my other reason for saying yes
00:30:51.299
we need more of this and so the last the miscellaneous part
00:31:02.279
the first is what I like about Ruby now that I started as a programmer I
00:31:08.760
make things I develop build things and I'm really happy about that
00:31:15.120
and people are really very friendly helpful and very approachable that's been my experience for since I moved
00:31:22.320
came into Ruby and that's supposed to be a smiley at the end just in case
00:31:31.320
and I make a living by doing what I like so I am very happy here
00:31:44.480
and how many of you have organized a conference or an unconferences
00:31:50.159
local Ruby group or
00:31:56.760
nice there's a lot of people here so I actually when I had this uh started
00:32:02.159
planning on this talk I came up with the idea that I'm gonna
00:32:07.320
spend 10 minutes just listing out all the people who have organized the conference
00:32:13.020
and uh give them a big salute because they're doing a lot of I've been
00:32:19.799
a help I helped with a couple of Ruby conferences this is not a joke there's a lot of work
00:32:27.059
it's it's fun but it's also a lot of work so um
00:32:33.240
I'm just taking these six people as examples and saying thank you to all the people who have organized conferences or
00:32:40.700
worked on building a local Ruby community just to just so we know who these people
00:32:46.860
are how many people recognize all of them okay who's the first person of the top
00:32:54.840
Marty next Alan Francis last
00:33:01.279
Jeremy yeah no idea
00:33:07.620
Evan and who's the guy in the middle here
00:33:12.720
Mike and Ray is here okay so thanks to everyone all the
00:33:20.760
conference organizers
00:33:26.880
women participants I see there were a few women at this
00:33:31.919
conference when we did the first code retreat in Boulder
00:33:37.700
we opened up a registration for 40 people and everything went very fast and then
00:33:44.700
we looked at it there was only one woman participant in the whole list of the 40 people who registered one
00:33:51.960
woman and that seems to be the norm everywhere
00:33:57.659
so here's a list of women participants in uh in all the events that I have
00:34:03.179
organized so far looks like not many women work on Rails
00:34:08.940
so nobody shows up at a bug match
00:34:16.080
yeah right
00:34:22.440
yep I do mention railsbridge later on as part of the resources
00:34:31.020
so I found you very interesting uh slide when I was looking for building a
00:34:37.679
user community so uh
00:34:43.619
yeah this shows how the user moves from different phases
00:34:48.899
and what their Community participation is in terms of questions asking questions or giving
00:34:55.139
answers so as a beginner people ask a lot of questions
00:35:01.380
uh and afterwards there's nothing no Community involvement
00:35:06.480
and as they beca they think they are experts they start helping other users
00:35:12.599
this could be applied to the organizing events as well in the beginning people are going to
00:35:19.200
other events and uh getting help from others maybe once people get confident in their
00:35:26.940
career once they've confident with their rails and Ruby knowledge they'll start
00:35:31.980
uh organizing events I would say
00:35:37.200
we need to ah so here the what they're saying what Kathy is saying is that people should start getting helping
00:35:43.320
people others beforehand even with respect to organizing events
00:35:50.220
the beginners should do the same even if you're a beginner it doesn't matter in
00:35:55.500
fact organizing event is a better way to meet experienced developers and improve
00:36:02.280
your scrap and
00:36:08.400
um Saturday December 3rd
00:36:14.280
Corey hence is planning a global day of code retreat
00:36:20.579
so there's there's going to be a lot of events being organized around the world
00:36:26.220
if you have not organized a event so far why not host a host one on that day
00:36:32.339
there will be a lot of support for that there'll be a lot of people organizing so you can get as any help you want and
00:36:39.839
there's also a possibility of getting Global sponsorship so you don't even have to worry about sponsorships
00:36:45.119
so think about that there's um
00:36:50.220
and I put my slide and uh all the various resources on my blog
00:36:55.320
post you can access it from at this one bitly prakash underscore rubyconf
00:37:03.119
uh uh so that's all I got uh any questions
00:37:08.820
so you asked about uh the four
00:37:14.520
I forgot to include that slide but uh
00:37:21.119
the first one yeah so the first one is pass all tests
00:37:28.320
second one is uh the naming should be it's um
00:37:34.619
the name should be expressive third one is do not repeat yourself
00:37:39.780
and I forget the fourth one all right the method should be small
00:37:46.619
I'll put a link on on this blog post as well
00:37:56.280
I'm sorry okay awesome uh any other questions
00:38:03.720
comments
00:38:11.520
okay thank you
00:38:54.140
thank you