00:00:19.039
so today i'm actually going to be
00:00:20.480
talking about um starting and
00:00:21.680
contributing to open source projects for
00:00:23.519
beginners um i'm targeting it at people
00:00:26.800
who haven't contributed to open source
00:00:28.480
or you are thinking about contributing
00:00:29.679
to open source so i consider myself a
00:00:31.599
beginner i learned programming maybe one
00:00:33.440
and a half years ago and then i started
00:00:35.360
contributing a year in so the
00:00:37.040
experiences are still fresh in my head
00:00:38.879
so i'd like to share them with you
00:00:41.040
so before that so yeah of course young
00:00:43.120
um i go by the pseudo name of ellen
00:00:45.440
because sometimes when you introduce
00:00:46.800
yourself to people like when i was
00:00:48.320
spending a year in the states i go i'm
00:00:50.320
course young i get that awkward silence
00:00:52.800
because they can't pronounce your name
00:00:54.399
so yeah that's my pseudo name
00:00:56.800
on the internet i'm known as tjxwell uh
00:00:59.680
twitter is tjx underscore world
00:01:02.559
so i'm actually a student at the
00:01:03.920
national university of singapore so my
00:01:06.000
background is actually in mechanical
00:01:07.600
engineering um but then two years in i
00:01:10.320
lost interest because everything was
00:01:11.680
just too theoretical i wasn't building a
00:01:14.080
new tesla
00:01:16.720
yeah
00:01:17.600
so so i i actually got into programming
00:01:20.159
um
00:01:21.040
a year ago
00:01:22.560
yeah earlier two years ago in fact
00:01:25.439
so i actually did a one-year internship
00:01:26.880
under this thing called the national
00:01:28.960
um nus overseas college program where
00:01:31.040
they actually send students into
00:01:32.320
startups um in california and then you
00:01:34.799
worked in startups where they have less
00:01:36.000
than 10 employees
00:01:37.600
so that was my my first encounter with
00:01:39.840
programming ruby and ruby on rails
00:01:43.520
so um at rails conference this year um
00:01:45.600
tenderlove talked about how he got a
00:01:47.040
degree in uh taught leadering from an
00:01:49.040
online university so so even though
00:01:51.439
after he found out that his degree
00:01:52.960
wasn't accredited um i'm still a big
00:01:55.360
follower
00:01:56.640
so so as a follower i tried to do some
00:01:59.280
of the things that he do so he likes to
00:02:01.280
do friday hubs with his uh with his cat
00:02:03.759
gobbie puff so i tried that but i didn't
00:02:06.159
have a cat so so i i had to find a
00:02:09.039
exotic short haircut in singapore so
00:02:11.120
there was one in the cat museum and his
00:02:12.879
name was brad pitt
00:02:15.360
no i'm serious his name was brad pitt
00:02:16.800
but the problem was the whole time i was
00:02:18.400
there he just stayed in that cardboard
00:02:20.720
box and just refused to come out
00:02:22.959
so after an hour i got impatient i tried
00:02:25.200
to take him out and then when i when my
00:02:26.879
hand went in i got scratched
00:02:29.840
yeah i'm sorry i'm playing neko atsume
00:02:31.599
too so if if you're not playing it you
00:02:33.040
should be playing it if you like cats so
00:02:34.800
basically it's a game where you pull out
00:02:36.080
toys in your garden cats come and play
00:02:38.080
with your toys they give you fish and
00:02:40.000
then you use the fish to buy more toys
00:02:41.760
so you get rare rare cats to come
00:02:45.840
so i prefer mini test so
00:02:49.360
if you like nyan cat when running a test
00:02:52.080
jam install mini test dash nyan cat
00:02:54.879
it's pretty cool
00:02:57.120
so recently i accumulated a lot of
00:02:58.640
internet points
00:02:59.840
i became the number one contributor to
00:03:02.000
ruby on rails in singapore i just
00:03:03.760
thought like if i said i'm the 69
00:03:06.239
contributor to ruby on rails that
00:03:07.920
wouldn't be like as impressive
00:03:10.159
but then the problem was
00:03:12.080
i i realized that it's the internet uh
00:03:14.080
everything is made up and the points
00:03:15.360
don't matter so i was like oh my all my
00:03:18.239
internet points are pretty useless
00:03:21.360
okay so to the actual uh to actually
00:03:23.360
some actual content
00:03:24.959
um so i okay my talk was like open
00:03:27.680
source projects but most of my
00:03:29.040
contributions were actually to ruby on
00:03:30.879
rails so most of my examples would be to
00:03:33.440
rails
00:03:35.120
so the motivation i had when i first i
00:03:37.440
wanted to contribute to open source was
00:03:38.959
because i was new i was new to
00:03:40.159
programming
00:03:41.200
and then i really wanted to learn more
00:03:44.000
basically like you do things that work
00:03:46.239
but then there were a lot of things i
00:03:47.360
still didn't know so i wanted to expose
00:03:49.280
myself more to other different libraries
00:03:52.799
and i wanted to give back so when i got
00:03:55.519
into programming i was amazed by the
00:03:57.120
open source community so people like
00:03:58.879
just put up projects where you can
00:04:00.400
actually use their code and then it
00:04:02.239
makes you productive it gives you a job
00:04:05.680
so what i did was actually about eight
00:04:07.519
months into programming i actually
00:04:08.720
applied for google summer of code and
00:04:10.400
then um i was lucky to get in and then i
00:04:13.360
actually worked on this project um
00:04:14.799
deprecating controller and integration
00:04:17.120
tests um but during the whole time i was
00:04:19.919
actually i was learning more rather than
00:04:21.919
actually completing the project so
00:04:23.680
actually at the end of the summer
00:04:26.400
the pull request is up but it's not no
00:04:28.479
one looks at it
00:04:31.040
so um when i first started contributing
00:04:33.520
to rails or when i first started
00:04:34.960
programming everyone was i read a lot of
00:04:37.600
articles like rails is magic
00:04:40.240
it's this black box which you don't
00:04:41.840
understand
00:04:43.759
so i was faced with a situation where i
00:04:45.840
was like oh no i have to become a
00:04:47.680
magician just to be able to contribute
00:04:49.680
to rails
00:04:51.280
but then as i worked on rails during
00:04:53.919
google sum of code i started to realize
00:04:55.680
that that is not the case um
00:04:57.759
reading rails actually forces you to
00:04:59.360
learn about things that you don't know
00:05:01.360
or rather i mean if you read any good
00:05:03.360
open source libraries in general it will
00:05:04.560
force you to learn
00:05:06.639
so as a beginner like you don't know
00:05:08.639
what you don't know so um i was exposed
00:05:11.680
to things like meta programming so
00:05:13.919
like this is just a snippet like defined
00:05:15.520
method in ruby it's pretty clear like
00:05:17.360
it's just defining a method but then i
00:05:19.280
realized there was this whole part of
00:05:20.800
ruby's meta programming i didn't know so
00:05:23.039
you should buy this book
00:05:31.600
yeah but but so basically um if you
00:05:33.840
actually spend time looking to rails
00:05:35.520
you'll realize that rails actually has
00:05:37.280
no magic it's ultimately still ruby
00:05:39.520
under the hood if you're if you're a
00:05:41.120
ruby programmer you'll understand what
00:05:43.280
is going on in rails you just need to
00:05:44.720
take spend some time and try to
00:05:46.000
understand what is going on
00:05:48.479
um so one of the misconception i had was
00:05:50.720
like
00:05:51.520
rails is such a big code base like how
00:05:53.199
can i possibly contribute anything like
00:05:55.919
as a beginner
00:05:57.840
so the simplest thing can do is actually
00:05:59.440
dog fix um
00:06:01.199
so when i first started i was just
00:06:02.400
reading like the contributing to rails
00:06:04.160
guides and then i realized oh it could
00:06:05.759
be phrased better in a certain way so
00:06:08.080
just submit a pull request so this is
00:06:09.919
very simple but then
00:06:11.919
fixing documents actually has impact
00:06:14.080
down the line like when you develop new
00:06:16.080
developer
00:06:17.120
developers read the documentation
00:06:19.680
it makes their life easier
00:06:22.319
so the next one is remove all the code
00:06:24.080
so so that's the simplest thing you can
00:06:25.280
do in for reals
00:06:26.880
um so this is just an example like we
00:06:28.639
were calling routes.select.map
00:06:31.440
but then in the map we're just creating
00:06:33.440
a new instance of a route object and
00:06:35.759
then what we're calling flatten like
00:06:37.600
that flattened was just unnecessary so
00:06:39.680
you just remove it and then you get one
00:06:41.360
comment into rails so one internet point
00:06:45.199
so a bit of like you could actually
00:06:47.680
improve performance even as a beginner
00:06:49.840
so so i was reading through this code
00:06:51.600
like how a request goes through the
00:06:53.520
whole um
00:06:54.880
rails library so there was this method
00:06:56.720
like we were calling get routes as hate
00:06:58.800
so what it was actually doing was
00:06:59.919
basically what you see
00:07:01.199
what you saw earlier
00:07:02.639
for all your get routes it was actually
00:07:04.319
creating a new route object and just
00:07:06.000
setting the verb to hate so every
00:07:07.440
request it was doing that so but then it
00:07:09.680
was it was only useful for hit requests
00:07:11.520
so i just all i did was submit a patch
00:07:13.599
check that the request method was hit
00:07:15.199
and then you call the method if not you
00:07:16.720
don't
00:07:17.919
so i did some simple like integration um
00:07:20.560
benchmark integration test then you get
00:07:22.319
like
00:07:23.280
three percent but actually in in the
00:07:25.120
whole context of a real application you
00:07:27.280
don't really get much but then you have
00:07:29.120
to convince someone in the rails call to
00:07:30.479
merge it so so that was a trick i used
00:07:34.400
yeah so so anyway um that fix wasn't
00:07:37.680
still enough it wasn't enough because um
00:07:40.160
on every hit request now you're
00:07:41.680
generating a new route objects every
00:07:44.160
time you call hate requests so what we
00:07:46.160
did was actually all you all we did was
00:07:48.560
we set the request method to get
00:07:51.599
match it against all the routes and then
00:07:53.360
we set it back to hate and then you just
00:07:55.440
and and that's how you get all your
00:07:56.639
routes for hate requests
00:07:59.440
so one other thing is when i first
00:08:01.120
started i was really afraid of showing
00:08:02.639
my code to the world i was afraid of
00:08:04.639
submitting a bad patch so my first
00:08:07.039
commit was actually i've opened a pull
00:08:09.520
request on the fork of my rails
00:08:11.120
repository and then i take a rails
00:08:12.960
computer inside so that that was really
00:08:14.560
unnecessary like in a way i was afraid
00:08:16.960
to show my code to the whole world i was
00:08:18.879
afraid of being wrong
00:08:20.319
so actually if you just submit the rails
00:08:22.319
uh just submit the pull request to the
00:08:23.680
official like real rails repository even
00:08:26.400
if you get it wrong they'll help you um
00:08:28.319
they'll help you with it
00:08:30.240
and finally it's really um it's okay to
00:08:31.759
make mistakes i make a whole bunch of
00:08:33.519
them
00:08:34.640
um so one thing i did was i was reading
00:08:36.240
through all the
00:08:37.760
test libraries because i was working on
00:08:39.200
tests then like require mini tests was
00:08:41.599
all over the place i was like um we were
00:08:43.279
doing it we
00:08:44.640
are already requiring mini tests
00:08:46.240
somewhere else so when i just remove
00:08:48.000
them
00:08:48.880
then for some reason it got merged then
00:08:50.320
a few days later someone just submitted
00:08:51.839
a pull request saying oh if i do rails
00:08:54.800
console and then i type f mini test is
00:08:57.360
missing
00:08:58.800
and then i have to get like uh the guy
00:09:00.720
who merged the pull request to like
00:09:02.080
revert the commit for me
00:09:04.880
yeah and finally i also so i got i got
00:09:07.279
it this morning i just woke up and i was
00:09:08.959
reading through my emails and i got it
00:09:10.800
so basically i recently deprecated um
00:09:13.600
a signs and exit template and i
00:09:15.120
extracted them into a gem so then this
00:09:17.519
guy just submitted like if you actually
00:09:19.040
do it right now you add the gem to your
00:09:20.959
jam file it doesn't work so i was pretty
00:09:23.200
sad so i said i'll have to fix this but
00:09:25.920
then i learned from juanito as they just
00:09:27.839
add emoji
00:09:38.080
yeah i'm so so that that the guy hasn't
00:09:39.920
replied but i i hope he doesn't get the
00:09:41.839
wrong idea
00:09:44.399
and and finally sometimes you really
00:09:45.839
have to be patient um many times like
00:09:48.480
once you submit the pull requests you're
00:09:49.600
eager for it to get merged
00:09:51.600
uh so i had this incident uh so it was
00:09:53.760
just a pull request on some partitioning
00:09:55.680
of routes i realized we could do it in
00:09:57.279
setup time and then i take tenderlove on
00:10:00.560
june 20th 2014
00:10:02.800
and then um
00:10:04.880
so on march
00:10:06.320
3rd of march this year 2015 finally got
00:10:08.320
much i was like yay aaron
00:10:10.320
then i was like
00:10:11.440
yay thought later merging my pull
00:10:12.880
requests so i was pretty happy about
00:10:14.640
that but but but the point i'm trying to
00:10:16.720
make is really um there's only 13 people
00:10:18.640
in the rails core team right now that
00:10:20.480
some sometimes they don't really have
00:10:22.560
the time to look at all pull requests so
00:10:24.079
it's it's okay that it takes a while
00:10:26.959
so if you if you're interested to find
00:10:28.399
things to work on like to contribute to
00:10:30.240
open source projects codetrite.com is
00:10:33.120
pretty good you just subscribe your
00:10:34.560
email and then you look uh you subscribe
00:10:36.720
to the repository that you are
00:10:38.000
interested in commenting then every day
00:10:39.279
it just sends you an email of different
00:10:41.680
issues that you can work on
00:10:43.839
and then uh the iss the rails issues
00:10:46.160
tracker is pretty good um so this was a
00:10:48.480
simple thing i fixed it was just like
00:10:50.320
there was this behavior change and then
00:10:52.399
all i did was just a one uh like okay
00:10:54.560
three lines change you would just you
00:10:56.640
just have to check what the anchor is
00:10:58.240
there so this commit might be very
00:11:00.399
trivial but then i realized that you
00:11:02.480
need people with the time to look into
00:11:04.000
it like um you need to get uh read the
00:11:06.480
code base find out what change you need
00:11:08.399
at the test so it all takes time and you
00:11:10.079
can't expect the rails core team to be
00:11:11.920
working on this kind of issues all the
00:11:13.920
time so this is where the community
00:11:15.519
comes in
00:11:16.720
uh so dhh um nearing to every release
00:11:19.680
he'll have a list of things that he
00:11:21.279
wants people to do so if you look at his
00:11:24.079
issues though um there's actually a lot
00:11:25.920
of things to work on so recently like i
00:11:27.760
said i deprecated a science and exit
00:11:29.920
template from controller test that was
00:11:31.519
actually one of the issues um it was
00:11:33.760
actually pretty simple like you just
00:11:35.040
have to go and fix the rails internal
00:11:36.480
test case but then it took me about say
00:11:38.640
a week of spare time just to do
00:11:40.839
it yup so so this was uh much recently
00:11:45.040
and then if you're good with
00:11:46.000
documentation um the ruby documentation
00:11:48.240
project is really
00:11:49.600
good like um 75 of ruby is still like
00:11:51.920
undocumented or not documented well so
00:11:54.079
these are areas where you can actually
00:11:55.680
help
00:11:56.640
ruby or the rails community
00:11:59.279
in
00:12:00.160
um so there are a few tools that i think
00:12:02.000
can help you to understand a new code
00:12:03.519
base better so the first one is actually
00:12:05.839
ruby prof so so i was actually using
00:12:08.320
ruby prof for profiling because i was
00:12:10.320
looking at the performance of controller
00:12:11.680
test versus integration tests
00:12:15.440
yeah but then i realized that ruby prop
00:12:17.519
provides you with a pretty nice graph
00:12:19.680
html printer okay that
00:12:23.200
i should have checked my slides
00:12:25.200
okay
00:12:26.320
we'll skip that okay so the next one is
00:12:28.480
a debugger
00:12:29.760
by bug i think it comes default with
00:12:32.720
rails right now so if you guys aren't
00:12:35.120
still getting the gif it's a bug's life
00:12:37.680
and waving so it's bibunk
00:12:42.720
okay
00:12:43.920
yeah anyway so buy bug is basically um
00:12:45.920
if you don't understand what the method
00:12:47.200
is doing just raise the debugger look at
00:12:48.880
the variables look at what methods are
00:12:50.639
being called so that's useful
00:12:52.720
rails is pretty well documented just
00:12:55.120
read all the tests you
00:12:56.560
usually get a good idea of what is going
00:12:58.480
on
00:13:00.480
so the next part is actually starting
00:13:02.240
open source projects so
00:13:05.360
i think the the most important lesson i
00:13:06.880
learned is really find a simple but yet
00:13:08.800
important project to work on there are
00:13:10.800
plenty of it out there so the one i
00:13:12.560
found was actually um
00:13:14.480
a year ago like sam made a call for a
00:13:16.240
long-running ruby benchmark it was
00:13:18.240
pretty straightforward we just needed a
00:13:20.800
we need to benchmark ruby on a
00:13:22.240
consistent basis to to identify um
00:13:24.800
performance regression
00:13:26.560
and so i actually started um so there
00:13:28.560
were prior work being done on it but
00:13:30.079
then it was still in pieces so what i
00:13:31.920
did was actually i put it all together
00:13:33.680
and then we launched ruby bench
00:13:35.920
so the reason why ruby bench matters
00:13:38.399
is actually um
00:13:39.760
so in rails 4.1 to 4.2 if you read this
00:13:42.000
blog post um rails actually suffered
00:13:43.680
like there were some performance
00:13:45.120
regressions in there and then sam went
00:13:46.720
in to fix it so but this could all have
00:13:49.040
been avoided if we were just
00:13:50.480
benchmarking rails on a consistent basis
00:13:52.240
like every time before we we release a
00:13:54.480
new version of rails we just have to
00:13:56.160
benchmark it
00:13:58.560
so um sam made this quote i took this
00:14:01.120
quote from sam like basically if you fix
00:14:03.199
a performance regression like months
00:14:04.800
into the development cycle it's going to
00:14:06.240
cost more whereas if you can identify
00:14:08.639
the regression early and you fix it
00:14:10.480
early it's actually pretty easy or cheap
00:14:12.639
to fix
00:14:14.480
so in order to identify performance
00:14:16.480
regression we actually need a lot of
00:14:18.079
data and to do that we always have to be
00:14:20.480
measuring that's that's the only way we
00:14:21.839
can get the data
00:14:23.839
so there are actually uh really
00:14:25.600
benchmarks out there so all our
00:14:26.880
benchmark right now is actually from the
00:14:28.399
ruby trunk rugby trunk has a folder
00:14:30.320
benchmark and we just took everything
00:14:31.600
from there so discuss
00:14:33.519
has a benchmark as well like we just
00:14:34.959
wanted to see how does a rails app
00:14:38.000
change when
00:14:39.199
when ruby changes as well
00:14:41.839
so what we have is releases benchmarks
00:14:43.920
um so this is like a simple
00:14:46.399
it's benchmarking the uri library over
00:14:48.320
the different releases of ruby
00:14:50.800
so
00:14:52.560
and this is the discord benchmark so
00:14:54.480
like in 2.2 you can see that then 75 90
00:14:57.519
and 99 percentiles went down because of
00:14:59.760
the new gc
00:15:01.839
and then we have per benchmark so this
00:15:03.440
is the one that i'm really actually more
00:15:05.040
excited about so this was the app uri
00:15:08.079
library so it's just doing a bunch of ui
00:15:10.639
stuff but you can actually see like
00:15:12.160
there was a regression and then when we
00:15:13.920
actually ran backfill all the benchmark
00:15:15.839
we were able to like easily identify
00:15:18.480
like what commit actually caused the
00:15:20.399
problem
00:15:24.320
yep so the community is actually a
00:15:25.920
support for a new like a feature so it
00:15:27.839
actually causes a regression so the
00:15:29.519
thing is that even though i don't
00:15:30.800
understand ruby as a beginner i'm not a
00:15:32.639
c programmer
00:15:33.920
as long as i can help the ruby core team
00:15:36.720
to narrow down the scope to the exact
00:15:38.320
commit it's it's tremendously useful for
00:15:40.800
them rather than telling them oh this is
00:15:42.639
slow and they don't know why it's low
00:15:47.120
yep so that's this course on the on for
00:15:49.279
every comment of ruby
00:15:51.600
and then recently we actually added um
00:15:53.600
rails releases uh
00:15:55.279
rails benchmarks so we are actually
00:15:57.040
doing micro benchmarks mainly on active
00:15:58.880
record right now so if you see like 4.2
00:16:01.199
we your find buy methods are faster and
00:16:04.079
then
00:16:04.959
you can also see that there's a
00:16:05.920
correlation between like why did why are
00:16:08.000
they faster like the total objects
00:16:09.920
allocated is slower
00:16:13.120
so um ruby bench has different
00:16:14.880
components the first one is actually
00:16:16.720
ruby bench web so that's the whole front
00:16:18.720
end that you see
00:16:20.160
so the main lesson i learned from that
00:16:21.680
when building
00:16:23.120
the front end was to ask for help
00:16:26.160
so this was actually a first version of
00:16:28.000
ruby bench or rails bench back then
00:16:30.000
because i i just completed the google
00:16:31.839
sum of code i was i was in contact with
00:16:33.759
some of the rails core team members so i
00:16:35.600
wanted to build something for rails i
00:16:36.800
wanted to benchmark rails for every
00:16:38.160
commit just to avoid all those
00:16:39.680
performance regression
00:16:41.600
and then we decided to move move um into
00:16:43.680
ruby benchmarks because it was actually
00:16:45.440
a lot easier like it was the lower
00:16:47.279
hanging fruits
00:16:49.519
and then we uh when i showed that
00:16:51.120
railsconf 2015 it was exactly showed as
00:16:53.920
like this screenshot so like my lousy
00:16:56.399
design skill and finally
00:16:58.320
so i i decided okay that that is not
00:17:00.639
nice so i asked my friend for help so
00:17:02.079
young actually uh my friend yangchun
00:17:04.079
actually helped me with it so we finally
00:17:06.079
have it look at it at least it looks
00:17:08.400
better now
00:17:10.559
yep so so the other part is the ruby
00:17:12.400
bench server um so basically we run all
00:17:15.199
benchmarks on a dedicated server we
00:17:17.120
can't run it on virtual host because you
00:17:19.199
can't really guarantee the cpu allocated
00:17:21.199
to it so we had to buy a dedicated
00:17:23.600
server when i first started i was i was
00:17:25.360
being cheap like i'm a student so i can
00:17:27.039
be cheap so all i did was i used the
00:17:29.120
soft layer credits like they gave you
00:17:30.640
500 for your first server
00:17:32.400
in maybe australia then the next month
00:17:34.000
i'll switch to a perry server and i get
00:17:35.520
500
00:17:36.799
so i was using that but then it wasn't
00:17:38.720
sustainable so eventually um when we
00:17:40.559
launched it we actually um
00:17:43.200
asked for help yep so we got a lot of um
00:17:46.160
sponsors um
00:17:47.679
or people who wanted to sponsor us and
00:17:49.200
then the first the guys that were happy
00:17:51.440
to sponsor us were rubytune and finally
00:17:53.520
we moved it to ruby together we just got
00:17:55.520
the guys from rubytune to contribute to
00:17:57.280
ruby together and then now ruby together
00:17:59.120
is actually sponsoring the dedicated
00:18:00.720
server every month
00:18:03.679
so there's also the ruby bench docker
00:18:05.440
part so how we run our benchmarks is we
00:18:07.679
run them in docker containers because
00:18:10.080
we need we need to get the benchmarks
00:18:12.320
being run on a consistent environment
00:18:13.840
and docker is a great great tool for it
00:18:16.400
so the best part of it is i didn't know
00:18:18.080
docker when i first started the project
00:18:19.360
or i didn't even know about docker but
00:18:21.280
then um sam like gave me some directions
00:18:23.200
like oh docker is pretty good for this
00:18:24.720
and then i looked into it so building
00:18:26.160
your open source project actually makes
00:18:27.919
you learn as well like you find out
00:18:29.600
things that are useful for certain areas
00:18:31.760
and then you learn more about them
00:18:34.400
and finally we have the ruby bench suite
00:18:36.640
so it's basically all the benchmark we
00:18:38.000
actually store them in a repository so
00:18:39.760
if any one of you wants to contribute a
00:18:41.280
new benchmark you can just push to it
00:18:42.799
and then it will automatically be run
00:18:45.200
and then uploaded i mean the results
00:18:46.880
will be on ruby bench i mean the site
00:18:50.080
so the lesson learned was also to ask
00:18:51.600
for help so actually now you're starting
00:18:53.679
to get a picture that i actually didn't
00:18:54.880
do much i just keep asking people for
00:18:56.480
help
00:18:58.320
so actually uh so i actually asked chris
00:19:00.320
um chris is a rails committer so he was
00:19:02.559
actually working on rails perf
00:19:04.320
um it was sort of like ruby bench but
00:19:06.960
for rails but then so i felt like there
00:19:09.520
was a bit of like duplicated effort
00:19:11.520
involved so i thought so i reached out
00:19:13.360
to him and asked him like would you be
00:19:15.120
interested in like just plotting your
00:19:16.720
benchmarks over and then we can use it
00:19:18.080
for ruby bench so that that's what he
00:19:19.760
did
00:19:21.360
and then finally i think um the most
00:19:23.919
important lesson that i really learned
00:19:25.840
throughout the whole project was to just
00:19:27.280
keep building like at the start when i
00:19:28.880
did rails bench and
00:19:31.120
stuff like that like no one really cared
00:19:32.720
but then you just keep building and just
00:19:34.480
keep seeking for feedback so
00:19:36.880
when you say sick for feedback you get
00:19:39.280
mentors that are willing to help you so
00:19:40.960
they'll give you directions and and you
00:19:42.480
get to learn new stuff
00:19:45.280
so that's actually
00:19:46.799
the end
00:19:48.559
all right thank you
00:20:02.480
hi
00:20:03.360
um is there anything you would like to
00:20:05.039
do next for revenge yeah there's there's
00:20:07.679
actually a lot of things that's on like
00:20:09.919
the pipeline that we want to do so right
00:20:11.679
now when we run all our benchmarks the
00:20:14.400
locks are not being sent back to us so i
00:20:16.240
actually manu i have to manually go into
00:20:18.000
the server
00:20:19.039
look at the logs see like when a
00:20:20.799
benchmark goes wrong i have to see why
00:20:22.400
so ideally we want them to like be
00:20:24.320
posted back somehow to the server and so
00:20:26.640
that we can look at the logs
00:20:28.400
um
00:20:29.919
yeah there's i mean there's a lot of
00:20:31.360
other things you can go over to like
00:20:33.039
communitycommunity.rubybench.com
00:20:36.159
it's a discourse forum where we are
00:20:37.760
discussing about the new features that
00:20:39.039
we want so any any help is welcome
00:20:41.200
actually like i always ask for help so i
00:20:44.240
don't have to do much after
00:21:00.159
you