The Changelog: Software Development, Open Source - All Things Ruby with 2015's Ruby Heroes (Interview)
Episode Date: May 16, 2015Our guests this week are 2015's RUBY HEROES! Big show today, lots of great Ruby talk with these heroes, great insights from this past year of Ruby, and more....
Transcript
Discussion (0)
Welcome back everyone. This is the Change Log and I'm your host Adam Stachowiak. This is episode 154 and on today's show we got six awesome guests. We have all six Ruby heroes on the show today. It's a jam-packed episode.
Jared led this call, did a great job leading six guests through a show.
It's not an easy task, and it's also not very often we have six guests on this show.
So great job, Jared, for leading this call.
We have three awesome sponsors, CodeShip, TopTow, and also CodeSchool.
In addition to what CodeSchool is most known for, which is educating developers on the developer world, of course,
they're also known for putting on Ruby Heroes each year at RailsConf.
So kudos to them for doing that and also for sponsoring this show.
Our first sponsor is CodeShip, a hosted continuous delivery service
focusing on speed, security, and customizability. You can set up continuous
integration in a matter of seconds and automatically deploy when your tests have passed.
CodeShip supports your GitHub and your Bitbucket projects, and you can get started today for free
with their free plan. Should you decide to go with a premium plan, you can also save 20% off
any plan you choose for the next three months by using the code
the changelog podcast. Again, that code is the changelog podcast. Head to code chip.com
slash the changelog to get started. And now on to the show.
Welcome back, everybody. Jared here. Adam's here too. But I'll tell you what,
this show is so packed with guests that Adam is just hanging out in the members-only Slack room.
He's probably in there posting emoji smiley faces and fist bumps because we are pumped for this show.
And I'll tell you why.
This week, Avengers Age of Ultron may be top in the box office, but it ain't got nothing on the changelog.
We have on the show all six of this year's Ruby Heroes, so take that, Avengers, and say
hi, everyone.
Hi.
Hi.
Hey.
Hi.
Welcome, welcome.
For those of you who don't know what Ruby Heroes are, each year at RailsConf, which
was just, was it last week or the week previous, our friends at Code School help the Ruby community
elect and award trophies
to outstanding contributors to the Ruby community.
This year's six winners are here, all six of them from all parts of the earth,
and we are excited to talk.
So here's what we're going to do.
We're going to go around the circle.
I'll introduce each hero with a quote or two about what their nominator said about them,
and then I'll ask each
of them to explain in their own words why they think they won the hebrew hero award and then
we will kick off with some conversational questions everybody ready all right let's start with
nobuyoshi nakata uh said of him if he was a fish, then patches would be water
because he lives on them.
Also, he's a tireless contributor.
It's unbelievable how fast he fixes ruby bugs.
Nobu, welcome to the show.
Congrats on the Ruby Hero Award.
And please tell us why you think you are a ruby hero.
Yeah. award and please tell us why you think you are a Ruby hero. It was surprising and amazing.
Thank you.
Well, it wasn't me.
It was the whole Ruby community and I hear you are called the patch monster.
Can you speak to that?
The meaning?
Yes, Patch Monster. What's that all about? uh it's a uh
it's a long to explain okay fair enough a man a few words i like that let's introduce our next
hero this is eileen Uchitel.
People who nominated Eileen said things like,
she's deprecated things, she's removed code,
refactored confusing or brittle code.
We need more people like her.
Also saying she's mentoring students to start to contribute to OSS,
specifically to Rails. We need people like her to keep our community growing.
Eileen, congrats.
Welcome to the show.
And in your own words, why did you get the Ruby Hero Award this year?
Thanks for having me on the show.
I don't know.
It was, well, it was surprising mostly because I kind of just started contributing to Rails
last year. And I guess probably people were like,
oh, this bizarre bug that nobody wants to go anywhere near.
I'm going to go near it.
That's all it takes, huh?
You just have to go near those scary bugs that uh
that other people don't want to touch yeah i guess i don't know i don't know
well i mean everybody got i would i think that's like kind of like everybody is like a little bit
of a different reason sure absolutely all right well up next is Sarah May. You may remember Sarah from episode 146,
where she was on and talked about minding the gender parity gap. Sarah, welcome back to the
show. And a few things said about you during the Ruby Heroes Award presentation is that
she is one of the few female role models we have in the community. Also, that she contributes to
the open source and Ruby communities in ways that at a glance, at a GitHub profile, would even fail to communicate.
So congrats on the win, and can you speak a little bit about it?
Yeah, absolutely.
Thanks for having me again, now inflicting me upon your users a second time.
You know, I was actually, I'm going to echo what everyone else said, I was very surprised.
And partially that's because a lot of the contributions
that I make are not code related.
And historically, I think the Ruby Hero Awards
have been focused on folks making code contributions.
But the stuff
that I do is way more community focused
than it is code focused. And I think
part of the reason why
it's
that the Ruby Hero Awards have been codefocused is because that's easy to measure.
You can look at a GitHub profile, and there it is.
And the stuff I do is a little bit less visible, but I was very surprised and honored.
Very good. Let's move on to Zachary Scott.
Zach, things said of you during the awards ceremony was that he has made 500 commits to Rails over the past two years,
making him the number five contributor over that period. And he does extensive documentation work
and brings in and facilitates new contributors to the Ruby ecosystem. So congrats on the Ruby
Hero Award. And could you speak about why you think the community thought you earned it. Yeah, thank you.
I think a lot of people notice my contributions most in documentation,
which is great.
I worked really hard on that. So it's nice to get that feedback from people.
So I think that's probably why most people have recognized me from.
I'm sensing a theme here. We have Nobu who's patching Ruby. We have Eileen who's touching
the bugs that nobody else wants to touch. And we have you who's doing documentation.
Again, something that not very many people
necessarily think is a fun thing to do.
Do you enjoy documentation, or do you just realize
it's something that has to be done and I'm going to do it?
Actually, I don't write so many docs these days,
but that's how I got started in fixing doc bugs and stuff.
And basically it's just turned into
helping new contributors
who want to contribute to open source.
And the best way that I know is through docs.
So helping people with patches and merging them
is basically how I've gotten so many commits at this point.
But I'm focusing on other stuff.
The docs is super, super great that people appreciate that, and it's really important.
But there's many other areas that need attention, for sure.
Absolutely.
Let's move on to Jeremy.
Jeremy Evans.
Jeremy, things said of you is that he's not only the creator and maintainer of several brilliant libraries, foremost among them, the peerless SQL.
If anybody out there has used the SQL library, that's S-E-Q-U-E-L is a really cool toolkit for working with databases.
And the SQL library is a massive body of intellectual work, mostly contributed by one person.
Just look at the size, scope and breadth of the work mostly contributed by one person. Just look at
the size, scope, and breadth of the work. It's astounding. Jeremy, congrats on the Ruby Hero
Award, and can you speak to the experience at all? Yeah, it was great. Thank you for having me on the
show. I've been nominated actually multiple times for many of the past years, and it's a very big honor to finally win this year.
I mostly work on SQL.
That's the main project I work on,
and one of the reasons that people not admit me,
in addition to working on most of the code,
is also being very quick to fix bugs,
which is, in the Ruby community,
often not the fastest thing people focus on.
A lot of the time, programmers focus on features,
whereas I focus foremost on fixing bugs, and only after all the bugs are fixed
do I work on new features.
Very good.
Sam, Sam Saffron, you may know him from his
work on Discourse, our
last but not least,
Ruby Hero of 2015.
Sam, things said about you at the
award show was his work on Ruby and Rails
performance since he started working on Discourse has been a breath of fresh air in the Ruby community, as well as everyone wants faster programs.
If you do anything about it, he's championed and written speed and benchmarking utilities for years.
Sam, congrats on the win.
Welcome to the show.
And tell us about your Ruby Hero Award.
Well, thanks for having me here.
And thanks again for the award.
It was also a surprise.
It was mainly a surprise because I haven't been, like, you know,
full on in Ruby for longer than Discourse.
And Discourse is only two and a half years old,
approaching three years old.
So it feels like, you know, a lot happened in the last few years and
i kind of transformed from this dot net developer now into this hardcore ruby developer but
um yeah it's uh i think i got it not not not for my code, but more for my blog
and the way that I talk about things and mention things
and bother people about their programs being slow.
It's funny because I do commit a lot.
Like if you look at my GitHub commits, it's like there is a lot
because everything that I do is in open source,
every gem that I work on and discourse.
But really the thing that did cause this to happen was me writing about the performance
and actually opening this world to a bunch of people that had no idea of how to do these
things.
Yeah.
And you also have a specific library.
It was a mini profiler, I believe, which has become quite popular in the last couple of
years.
I think it was referenced in the awards ceremony as well.
Can you tell everybody about that project?
So, yes.
So mini profiler is a tool that kind of gives you a number of how fast your page took to render on the server on the top left-hand side.
And you can run that in production or development and always be aware
of how fast your web website is uh the thing is it's it's designed to work from the start we
designed it to work in production so admins see it and admins are always aware of how fast the
site is and then you don't get these big surprises uh later on so it's kind of like New Relic, but always there and always for you to see.
It's more focused about the immediate experience
as opposed to kind of graphs and long-term performance.
And on top of that, there's also a few other open source tools.
I've got Memory Profiler for profiling memory in Ruby 2.1 and 2.2. I've got
message bus, which is kind of like action cable, which is going to come out, but it's been around
for two years now. It doesn't depend on event machine and a bunch of other things. and yeah and discourse of course
which is huge and we've got
logster as well which is for looking
at logs in production
or in development in like a
web UI you can just put that rack middleware
in your app and you can see your logs
immediately
and yeah a bunch of other stuff
but those would be a few of the big ones
awesome and Sam we actually have you in our backlog for a bunch of other stuff. But those would be a few of the big ones.
Awesome.
And Sam, we actually have you in our backlog for a list of people we'd like to get on the show.
We had you in there to talk about discourse,
so maybe we can line that up sometime in the near future
and get you on here.
That would be great.
In-depth into discourse and all the cool open source stuff
that you guys are putting out there.
Actually, I did want to mention one thing about Eileen.
One thing that was, I was really happy to hear that Eileen got the award
because there was this part of mini profiler that we really needed
to refactor for ages.
It was like in the too hard basket.
Nobody wanted to touch it.
It involved changing every single class.
And it was like this enormous patch.
And, yeah, she just actually actually it was one of her first
projects in the ruby world was to just take this completely impossible task and just do it and it
came through and i was really happy about that so yeah thank you yeah i wanted to work on something
that i knew no one else was gonna finish before i did because it was the first thing i was gonna do
in open source and i i just you know it's first thing i was gonna do in open source and i
i just you know it's like really demoralized like and i know that i've seen it happen to other
people too and like it's happened to me it's really demoralizing when you spend like really
long hours on something and then someone else sends a patch like right before you do and you're
like shit yeah you still learn a lot but you know it, it's, but yeah, since, you know,
it wasn't, it was nice.
And I think a lot more projects should do this, like have a,
here's the things like we really need help on list.
And that's like made it was obvious that that was something that,
that needed to be worked on.
And so that's kind of like how I ended up working on it.
Cause it was in one of our projects
and I looked at the issues and I fixed one minor thing
and then I was like, oh, this is not so bad.
I can fix these other things.
Well, good thing you move fast enough.
I know another thing that happens sometimes,
in fact, I just saw it yesterday with a tool called CCAT,
which is like, it's a CAT tool
that also does syntax highlighting.
So like you cat the file, and it got on Hacker News or somewhere that I was reading. And,
you know, immediately, there were like five or six alternatives that have existed for between
like three months and 10 years, that they just didn't realize, you know, like, oh, this problem
has been solved. So sometimes you're erasing somebody else, you don't even know it, sometimes
it's been solved for 10 years and,
um,
you know,
a little due diligence saves us some time,
but it's always fun to hack anyways.
So that actually leads me into a question,
uh,
just here in,
uh,
Sam and Eileen kind of cross chat,
which we love is,
uh,
how many of y'all know each other,
uh,
either just online by reputation or personally,
and then also, uh also in real life?
Just kind of hop in there if you know somebody, and we'll go from there.
I've met Zach a couple times at conferences, but I don't think I've met – I don't mention – I've met Yobu at a couple of conferences as well.
Yeah, Zach and I both live in San Francisco, and we've done karaoke together.
Really? Everybody knows Zach. Zach is around. as well. Yeah, Zach and I both live in San Francisco and we've done karaoke together.
Really? Everybody knows Zach.
Zach is around. He's always been around.
I met him in Sydney
when he visited.
I met Nobu at Ruby Kaigi
long, long ago. I think maybe 2010?
Well,
I've heard that nobody knows Nobu.
Who is that guy? 2010? Well, I've heard that nobody knows Nobu.
Who is that guy?
So Zach, do you have a reputation for karaoke?
Or was this a one-time thing?
Well,
there's a Ruby karaoke
hashtag, which was
started by, I think Terrence started that.
And I do enjoy karaoke.
I actually karaoke last night.
And I'm still in San Mateo.
But it's a good time.
It's good to get people together and sing and drink.
I don't know many other things you can do that bring people together like that.
Get people out of their shell, you know?
Yeah, we're actually, I'm involved in organizing
a conference here, a local, a regional JavaScript conference
this summer called NEJSConf.
And we're just trying to talk about how to do the opening party and then the after party and stuff
like that. And for the opening party, we just were talking about having to be really chill
and then just having karaoke. And it just seems like a good way to get, kind of break the ice,
have it be informal and get people to really know each other and have some fun before the
conference kicks off. It sounds like you would be for that idea.
Oh yeah, definitely. You should do it.
All right. We're going to give it a shot. All right.
So let's kind of go around the round table, so to speak,
and ask a couple of questions.
We have a few things written down here that we'd like to get your guys' take
on as Ruby heroes.
What I'll do is I will just ask the question and I'll just kind of pause
anybody who has an immediate
answer, hop in there. Feel free to
cross-chat, talk to each other.
And then if everyone just kind of sits there silently,
then we'll have to go like grammar school
style where the teacher calls on you.
And I'll have to
start, you know, cracking the whip.
So let's start with this one.
And y'all are this year's
Ruby Heroes, as voted by the community.
But we'd like to know, who are your Ruby heroes?
My Ruby hero would be Koichi.
He's definitely my Ruby hero.
Oh, yeah, I'd have to agree with that.
I've used his allocation tracer gem, like, a lot.
And he's just done so much for Ruby Ruby and he's very unsung in that,
like a lot of people don't realize that, you know,
what they're using is his brainchild.
Like from Ruby one nine onwards, you're using KRI,
you're not using MRI anymore. And yeah.
So I definitely think he's an unsung hero that is worth mentioning.
I think Mats deserves it.
Oh, maybe, I guess.
Maybe.
A quintessential answer there.
Everybody has to agree with that one.
How about Sarah?
Do you have any RWBY heroes?
I agree with Koichi.
I think that he does some amazing work,
and I always enjoy his conference talks.
You know, I also think Greg Pollack,
I don't know if you guys know him, he runs Code School.
He's done a lot of stuff behind the scenes to help the community,
both with Code School itself when it was an early idea.
He was one of the first folks that was out there trying to push, trying to make education of Rails better.
Now he does the Ruby Hero Awards and a bunch of other stuff I know that's much less high profile.
And he's done a lot of good for the community.
And Nobu, Ruby Hero?
Of course, Matsu.
There you go.
And of course, Koichi is...
Has Koichi won a Ruby Hero award before?
Not yet. Sounds like we have a
we have a shoe in for 2016
at least a nomination, right?
Yeah, I mean we all get to vote, right?
So
as long as there's a nomination.
I guess I don't actually know
totally how it works.
Are the Ruby Heroes allowed to nominate
other Ruby Heroes?
Or just vote?
Yeah, I'm expecting to get some kind of email introduction
to the secret society with all the rules and the data.
Yeah.
That sounds cool.
So one person I would say deserves it is Nagachika.
He's maintaining Ruby 2.1 and was maintaining Ruby 2.0.
So this guy basically backports all the bug fixes that need to go into a release and maintains all the stuff like nobu fixes all the bugs in
trunk and then this guy manages all those bugs and stable releases and basically nobody knows this guy at all I think he'd probably be someone for sure
he's a founder of ruby kaja Ruby Hero. Yeah. And he writes
his blog
about
Ruby
trunk changes.
He trucks down
every commit
in the trunk
every day.
Yeah.
It's a very
great job. Yeah. Excellent. Let's move on to our next question. it's a very great joke
yeah
excellent let's move on to our next question
and that is
what is the most exciting thing
in Ruby right now
action cable
I'm just kidding
Eileen please
tell us more
you know it's funny It was at RailsConf.
People have been asking me about it since I work at Basecamp.
And I actually haven't looked at it at all.
It's mostly pretty grading all of the code there.
So I know what it does, but I haven't actually looked at the code.
And it's not actually in Rails yet.
It's exciting because it's making people talk.
So that's fun.
For the listeners, Action Cable was announced by DHH at the RailsConf keynote as a new feature in Rails 5
that adds native WebSocket support.
And it's very much an experimental
and new feature that, as Eileen said,
very few people were aware of.
Actually, we did have him on the show a few months back
and he mentioned there was going to be native WebSocket support,
but the details of that had kind of been kept in wraps
up until that point.
Yeah, I mean, it's still very, very, very much in development
and in like a fluctuating state currently.
But it'll be fun.
It works.
I can tell you it works.
So that's perhaps a tongue-in-cheek answer.
Anybody have something that they think for real is exciting in Ruby right now?
So I'm going to go
super low level. I've actually really been
enjoying using named parameters,
which is something that's fairly new to Ruby.
It hasn't really trickled down a lot
to, in my experience
anyway, trickled down a lot into actual
Rails code very much.
But I really like the way that
it allows you to be more specific about what the things are
that you're passing in.
So it makes it much nicer when you're calling methods
without having to pass in like an options hash.
Good one.
Zach, how about yourself?
Do you have anything that's exciting you
and Ruby right now?
Yeah, I'm really excited about mRuby.
I know it's not Hacker News 2012, but...
I think it has a lot of potential for some unique use cases
that Ruby can't really solve too well,
like the packaging problem that people are using Go for,
shipping binaries.
That's not something Ruby really is good at
and is possible in MRuby.
Have you had a chance to play with it at all
or just on your radar?
Yeah, I've been working on it.
I actually had a Skype call with Matt last night and uh got to talk to
him a little bit more about it and i'm interested in getting some some stuff merged in basically
we want to build like a cli tool builder for mrb that people can use to easily create binaries for their apps and ship them.
It'll probably make, hopefully, the next version of MRP.
Very cool.
Very cool.
Let's go to Sam.
Sam, what's the most exciting thing in Ruby right now to yourself?
I don't know.
There are a lot of small things, but like the recent release,
the GC changes are great because it means that now we're back to like
we've gained performance back from like the hit in 2.1.
We had a big memory hit when we upgraded to 2.1 and now in 2.2.
I'm much more comfortable recommending people upgrade their 2.0 reviews
up to 2.2.
And the symbol GC is really good
because now a whole class of errors
are going to just vanish of security errors in apps
where people leak symbols.
So I guess those two things would be
the most exciting things for me now at the moment.
Very cool. And let's go also to Jeremy.
Speaking on what Sam spoke to you about SymbolGC,
it is true that it will make it less likely for you to run into,
to avoid denial of service issues because symbols will be garbage collected.
But in the past, Ruby libraries often have trusted symbols
in a way that now they can no longer trust them
if the user is creating symbols from untrusted data.
So it's possible if people start using SymbolGC and relying on it,
they'll be opening up security issues in their applications,
and people should be aware of that.
Very good.
Well, I think this is a good spot to pause, hear a word from a sponsor.
When we come back, I'm going to be asking you guys
what area of Ruby has the most cobwebs. So think about that, and we'll hear a word from a sponsor when we come back i'm gonna be asking you guys what area of ruby has the most
cobwebs so think about that and we'll hear a word from the sponsor and be right back
you've heard me talk about top towel several times in this podcast and top towel is by far
the best place to work as a freelance software developer well they have this term elite engineer
and that defines the kind of software developer
that works at TopTile.
I had a chance to sit down and talk to Brendan Benesha,
the co-founder and COO of TopTile,
and I asked him, Brendan, what is an elite engineer?
Take a listen.
An elite engineer for us is somebody who satisfies
all the technical requirements that you would need
in a great developer if you're
working at like a Google or Facebook.
But then at TopTel, you have to add this extra layer on top of it to make sure that people
are mature enough and professional enough to be totally self-directed.
So making sure that they take a tremendous amount of pride in their work and that they're
accountable and very, very communicative because in remote
freelancing, that's sometimes just as important as being technically competent.
All right.
If Brendan got you excited about being an elite engineer at TopTile, head to toptile.com
slash developers.
That's T-O-P-T-A-L.com slash developers to learn more and tell them the cheese load sent
you.
All right. we are back.
I'm here with all six 2015 Ruby heroes and we are talking about Ruby.
So question on the table, hop in if you like.
I'm trying to think of this in light of perhaps places where next year's Ruby
heroes could be focusing today.
What area of Ruby has the most cobwebs
or could use the most love?
Make make file.
Please elaborate, elaborate.
So make make file is what's used
to build C extensions in Ruby.
And if you've ever looked at the code,
and I don't think I've done it recently
because it might've been better now,
but last time I looked at it,
it was
definitely written when Ruby was young and
not at all in sort of standard
Ruby style these days.
Lots of global variables and
things like that.
It's functional.
It is functional.
Nobu, it seems like
perhaps as the patch monster
you know Ruby's warts
probably as well as anybody.
What part
of Ruby needs most help
right now?
Help?
Everything.
Breaking news? Everything. Breaking news? Everything?
Yeah, of course. He mentioned about the features for 3.
They are changeable.
We are waiting new heroes.
Well, yeah, hopefully someone will be swooping in here and helping out.
Any others?
Zach, do you have anything to say on this?
Cobwebs?
The bug tracker.
There's so many tickets that no one knows about.
Yeah.
That sounds bad.
You're painting a bleak picture here, guys.
I think part of it is like Redmine.
I just made a Redmine account the other day.
Nice.
I was like, oh, there's a bug.
Not that I found.
I had run into it in Rails this was actually not the other day
it was a while ago
and found the fix
on Redmine
So tooling, is that something
that can even
is that something that can be approached
can be perhaps changed
or is it so deeply entrenched at this point that it's a lost cause?
It needs help.
I think a lot of people want to use Git,
and in order for us to do that, the tool I need is to get better.
And that's one major use case.
I'd love to see someone step up and help us refactor some of those tools and i know
some of them kind of have cross-platform support so like if you're using subversion or get but
some of that stuff is really it's like make make file like jeremy was saying i mean it's a super
old code and there's no tests and so if we had someone come and help, I mean, I'm not saying cover all the tools,
but if we had a way to get us to that point,
I think it would be beneficial to everyone.
Yeah, if I'm being honest, Git is a blocker.
Like not having Git as being like having it all on GitHub
and using Git is a blocker for me.
The funny thing is the Git to SVN author,
it works on Ruby now.
It's Eric Wong, who also is a Ruby maintainer
and contributor now.
Yeah, he won't let us use GitHub,
but he does like Git.
But is it hosted elsewhere?
Like the Git mirror is not on GitHub?
No, it is.
But it's just a mirror.
Yes.
He doesn't want
dependence on
commercial services.
He's very, very much against it.
Everything has to be open source
to the nth degree,
I guess.
And relying on GitHub, the company,
having that dependency of Ruby to GitHub,
the company is not comfortable with that.
Is there a middle ground?
I mean, it's kind of ironic that this morning GitHub was down.
So maybe he's wiser than some.
But is there like a self-hosted GitLab or something
where you could get part of the way there,
but maybe not all the way?
I think he'd be okay with it
if it was something the Ruby maintainers themselves controlled,
whereas GitHub is not that currently.
Right.
Some ideas floating around,
so a little bit of a bleak picture.
So let's change the subject.
Let's go exciting.
Let's get back to the exciting.
I had one.
Oh, you have one.
Go ahead.
Yeah.
One thing that we could see a lot of help in the community
is cutting down memory usage of Ruby web processors.
So when you boot up a Rails app and it's taking 250 megs,
that's kind of normal to people and people are used to it
because that's how it works in the Rails world.
And when people are coming from like a Go background,
they see like these web apps that can be booted at like two or three megs,
they're kind of shocked.
And I think that a lot of this is not really Ruby's fault.
It's all of the libraries and everything that we have around
that are very bloating.
And there are all sorts of examples of ones.
For example, the one that, what is it called?
Mime types is like one that keeps popping up.
We have a mime types library that we use in Rails,
and that loads up, you know, 30,
it loads up like 20 megs of RAM into your process
just because you're using that library
and slows down the load a whole heap.
And then there's RubyGems.
It's like the fabric that we all depend on.
And it just introduces, you know, 10% or 20% memory bloat into your process
just because of RubyGems, which seems odd because, you know,
this should just be a coordinator.
It shouldn't be causing more memory to be loaded, but it does.
So there's a lot of
work around that area that I think needs to be done and would help everybody get better Ruby
adoption if the processes are taking less memory. It's funny that Sam mentioned that because I
actually have a pull request on MIME types right now that reduces the memory usage between
usually about 10 to 8 times. And if you load everything that MIME types right now that reduces memory usage between usually about 10 to 8 times.
And if you load everything that MIME types has,
it even still reduces it to about 2 times
of its current memory use.
So I'm the maintainer of that.
Hopefully, you'll be working on it later this year
and getting it merged into MIME types.
That'll be awesome.
Yeah, the weird part about that gem
is it's like a JSON file,
and it loads all of that into memory.
And it's like a massive amount of objects.
Yeah, the real weird type of thing is that like just the mail gem needs it
for some reason, nothing else needs it.
Like Rack has like a little mini list of MIME types
and that's good enough for Rack.
But then the mail gem needs everything in existence.
Yeah.
I have one other thing
I want to talk about that's sort of a completely
different direction from what we've been talking about here
in terms of cobwebs.
And that is that I feel like we're at
a turning point with our
conferences.
A lot of the local
conferences have either decided
to skip this year or are sort of dying down.
And I feel like we've hit peak Ruby conference.
And so the question is, what do we do next?
How do we make conferences that are interesting for people to come to?
It feels like the formats we have now are a bit played out, and I would love to see some more activity in that area.
Any ideas on that?
From you, Sarah, from anybody?
I feel like we need to find a way to do more conferences
that cross technical boundaries.
I've been to a bunch of JavaScript conferences in the last couple of years,
and those are always really fun
because there's all kinds, like,
there are very few people
that are native JavaScript developers, right?
They all come from somewhere else.
You get the.NET people, you get the PHP people,
you get an incredibly wide cross-section of folks,
and I find those conferences really interesting.
I would love to find a way to incorporate that
into what we do, and I'm not sure how to do it, but I'd love to find a way to incorporate that into what we do, and I'm not
sure how to do it, but I'd love to move us there. Yeah, interesting. As y'all may or may not know,
the changelog, we've been trying to get out to more conferences. We're trying to go to four
this year. Adam and I both have families, so it's hard to go to lots of them, as you guys probably
have felt those kind of pains as well.
But we're very much interested in the cross-language conferences
and things like Strange Loop.
And there aren't very many.
I like how JavaScript kind of is the lingua franca.
It's kind of the tie that binds across different backends.
So we have noticed that we were at Space City JS in the spring.
And yeah, I think that's an interesting idea.
Is that in place of Ruby conferences or as adjunct to the more traditional Ruby conferences?
I'm not sure how to answer that exactly.
I feel like I've been involved in both sort of the local level conferences and now at the Ruby Central level for RubyConf and RailsConf.
Yeah.
And we've seen a very marked change in the audiences on both sides.
At RailsConf, we've seen an enormous increase in the number of people who are fairly new to Rails or who are coming to Rails from a very large organization. You know, we get folks coming
to Rails Conf from like GE. I mean, that would be unfathomable five or six years ago. And it's
definitely been an interesting, as we get to the point where, you know, it still feels to me like most of the conference speakers and most of the folks who run the conferences don't come from those worlds.
But yet that's clearly where the community is going.
And it feels like there's a bit of a mismatch there.
I have noticed like a huge uptake in like operations talks, especially in like RailsConf.
Like ops is now the big sexy thing that everybody likes talking about which I like you know we love
docker we use docker over at discourse we've been using it for a year for all of our production
deployments but yeah it feels like yeah that that definitely is a trend that like we're trying to
at least mix that part up but yeah there's definitely in the RailsConf, there was not even a single talk about a different like language, for example, like, you know, this is how people do MVC frameworks in, I don't know, in Python or whatever.
So like there is very, very low amounts of like contaminating, you know, the Ruby developers with other things.
I did notice, though, like, you know, there are the big kind of the performance talks and whatnot that are very applicable
to, like, the large organisations.
And so I don't think it's all bad.
I think there's a lot of good going on there.
There's some more to do.
But it's just very hard to cater for like the advanced
and the beginners and the intermediates in one conference that is huge well i think part of that
is making your talk accessible like one of the things i try to do when i do talks is even if
it's like higher level stuff i try to bring it down like as like lower level as possible so like
with my active record talk, I used an app
that everyone could understand as it existed as an app,
so that we weren't confused about what
we were talking about in the application
when I was talking about how to change your update calls.
So we were always talking about the same models,
rather than being like, oh, here's an example from this thing.
And it was a real application that somebody could download and play with.
That's awesome.
Great. Anyone else have anything to add on that topic?
All right. Well, let's ask another one of our awesome questions here. Now we're going to ask you all to kind of, you know, put on your fortune teller hat, your prognostication blanket.
I don't know what that means.
But tell us about the future a little bit.
Where do you see the Ruby community going
and thinking maybe three to five years out?
What can you see?
Well, one of the things I could see
would be the uses of Ruby on the browser via Opal,
which Opal is a library that transforms your Ruby
into JavaScript.
So there's a lot of talk in the Ruby community
about there's no JS and you can run JavaScript
on both the client and the server.
And there where you get the worst of both worlds, if you can run Ruby on the client and the server, you get the best of both worlds.
So the idea is with Opal, you compile your Ruby to a JavaScript
and then you can write Ruby in both places. I just started playing around with Opal, but
I think it's going to be a really cool thing in the future. I expect that
many Ruby projects may switch to using that.
Yeah, there's the Vault framework, I believe is the name of it,
that sits on top of Opal to provide a web framework.
Has anybody had a chance to look at that at all?
Jeremy, yourself, were you using Opal directly,
or have you looked at Volt?
I looked at Volt.
Volt is interesting in that it's designed to be a real-time framework,
and it relies on MongoDB.
So if you know my background, it's not
really my forte.
But I'm
actually looking at integrating Opal into
the web framework I work on called Rota
and allowing that to be used
so that way you can basically write Ruby
for both your client side and your server side.
Sounds like
a long road ahead of you.
Yes. Well well I think if Jeremy's proven anything
is that he's willing to
play the long game especially with
how long you've maintained and
worked on sequel
so it sounds like if you
want to take Rota there I think you might be the guy to do it
yeah I certainly expect to be
working on Rota and sequel in three years. Three to five
years, definitely.
Awesome.
Any others? What you see
in the future? Maybe not even just
the technology, but the community itself.
I think Sarah spoke a little bit
about the community and things that are kind of
feeling like they need change.
Any change you
see happening now that you think is going to continue
or things that are going to stop, feel free to be wrong.
Just throw it out there.
Yeah, I have no problem being wrong.
One of the interesting things that I see a lot of right now
is that we are basically the first technical community
to deal with a very large influx of very junior developers.
And that's because of all the boot camps and so on that teach Ruby and teach Rails.
And we are still, to be charitable, I think, we are still figuring out how to effectively run teams with a mix of junior and senior,
especially because with the hiring market the way it is,
at least where I am in San Francisco,
there really aren't people available except at the very junior end.
And so companies are having to change a lot of how they write software
in order to accommodate having a team that is much more junior-focused.
And so I think that is something that will be very interesting to watch
for the next couple of years.
Excellent.
Eileen care to,
uh,
weigh in on where you see the community headed.
I have no idea.
I feel like I'm a little too new to like even predict.
I don't know.
I,
I guess I've been doing Ruby for about like, I'm a little too new to even predict. I don't know.
I guess I've been doing Ruby for about four years now, but I haven't been a part of the community until about a year ago.
A little longer than that.
A little over a year.
So it's hard for me to say where it's going.
I think that one of the really interesting things that's happening,
at least in Rails, I've never made a contribution to Ruby.
Almost all my contributions are Rails or small gems.
I don't know why I said small gems.
Not small gems.
Gems that are smaller than Rails because Rails is a gigantic gem.
You know, small gems like Active Record.
Yeah, yeah, like that little Active Record over there.
What we're seeing in Rails is this incredible influx
of new open source contributors.
And I'm hoping that we just see more and more of that.
And, you know, there's like a lot of people,
and it's true there's a barrier to entry,
but I think that part of that is just thinking
that Rails is scarier than it really is.
It's just another open source project
and we're just people running it.
And I think one of the bigger things,
I don't know, now I'm going off on a tangent,
but I think one of the bigger things that is a blocker
is a lot of people start with a feature they want, and then that feature gets rejected.
And they spent time on it, and they're like, why did I spend all this time? I'm never contributing to Rails again.
So I think it's better to start with bugs and documentation and stuff.
And I'm sure Zach will agree with me. I think documentation is the best contribution you can make to any open source project because you're fixing, you're making,
you're writing down how to do something. So it's much clearer what's a bug and what's not a bug.
And it's much clearer what's a feature and what's not a feature and how things are supposed to
behave. And you can save people lots of time when you fix documentation.
So maybe it's not a prediction,
but I really hope that more people can contribute documentation.
Documentation is actually great if you're a new user because the established maintainers of the library
have very little idea how a new user experiences their product.
I've been maintaining SQL for about eight years now,
and I love when new people give documentation commits because it's
something I don't have their mindset.
It's very hard to know what the new user thinks about and sees and things
that I take for granted,
they're not going to know.
And it's,
that's why it's great to get documentation commits from new users.
Yeah.
Super important stuff.
It's a hard process. Oh, super important stuff. It's a hard process. So that's interesting in light of all the
junior developers that Sarah mentioned, and no doubt that the community at large, and specifically
the Ruby community, has a lot of people coming in. And you know, how we receive those people and how
we help those people level up and feel welcomed reflects on us as a
community. So what about mentoring? What are things that are going on for juniors? I know one that I'll
mention is Code Newbie, which is a code club. And I think there's a podcast and a blog and it's a
website by Sauron Yabarak and a community around people who are at that newbie phase or self-identify as newbies,
where they can come together, read code, ask questions,
find out how to contribute to open source.
Are there other things besides that?
And are any of you personally involved in any mentoring
or teaching or anything like that?
I'm mentoring for RubyBench.
We have this project called RubyBench at rubybench.org,
which is trying to collect metrics over time
of how fast Ruby is and how much memory it's consuming
and so on.
So I'm mentoring Alan pretty much all the time.
I meet up with him like once every few weeks
and just talk through what we're working on and uh we've got a google summer of code via the rails quotas who's going to be
working with us in the summer as well full-time and i'll be mentoring him uh so yeah there's
it's only so much you can do as one person, but I'm trying to do my little part here.
Yeah, I think Google Summer of Code stuff's really good.
I'm working on a project for one of the Summer of Codes.
Hopefully, I think I'll find out soon.
But I know a few other people.
Eileen, are you working on Summer of Code as well?
No, I'm not doing Summer of Code because I am doing Open Academy.
And it's a really great program, but it's also a lot of work.
And I didn't want to commit to Google of Code
and then be not really available between Open Academy
and speaking at conferences and other stuff.
And somebody's birthday.
Well, today is somebody's birthday,
but it's always somebody's birthday.
But Open Academy is computer science majors
sign up to work on certain open
source projects. And Rails is one of the largest projects in the Open Academy program. And I think
it's been running for like three years and we have 24 students or something like that. Um, and
yeah, it's, uh, I like mentoring. I'm not sure I'm, I'm good at it. I will, I like mentoring.
I'm not sure I'm good at it.
I will, I guess I worry that I'm not good at it
because it's really hard to get like that,
if you're not used to teaching,
it's hard to like know if you're helping or hurting,
you know, giving someone, when they're stuck,
figuring out the best way to get them unstuck without giving them the answer so that they learn something.
And that's the hardest, like one of the things that I find hardest about mentoring is that sometimes I still feel new.
Like a lot of the work I've done on Rails, Aaron and I did it together.
And it was funny when he gave his RailsConf talk and he
was like, oh, I stole this code from Eileen. People came up to me later and were like, how did that
feel? Like, how did Aaron steal your code? And I was like, it wasn't, we worked together on all of
this. This is not like, do you know him? He's funny. Yeah. I think some people took the Windows
XP thing actually pretty literally, which I thought was interesting. Yeah.
He did it in his RailsConf.
You all should go watch if you haven't seen it.
Yeah, it was funny.
I'll definitely link that one up in the show notes.
For those of you looking for the show notes,
those are at changelog.com slash 154.
This will be episode 154.
Let's pause now, hear a word from our sponsor. We come back,
we're going to talk about how you guys first fell in love with Ruby. So let's take a break,
and we'll be right back. All right, put them away, put them back, put the books back on the
shelf if you don't need them, and learn to code by doing with Code Schoolchool. CodeSchool offers a variety of courses,
JavaScript, HTML, CSS, Ruby, iOS, Git,
and many, many more to help you expand your skills
and learn new technologies.
CodeSchool knows that learning to code
can be a daunting task,
and they've combined experienced instructors
with proven learning techniques
to make coding educational and memorable. It gives you the confidence you need daunting task, and they've combined experienced instructors with proven learning techniques to
make coding educational and memorable. It gives you the confidence you need to continue past those
rough, tough hurdles that you will definitely face learning the code. CodeSchool also knows
that languages are a moving target. They're always updating their content to give you the latest
and the greatest learning resources. You can even try before you buy. Roughly one out of every five courses on CodeSchool
is absolutely and totally free.
This includes instructor classes on Git, Ruby, jQuery,
and much more, which allow free members to play full courses
with coding challenges all included.
You can also pay as you go.
One monthly fee gives you access to every Code School course.
And if you ever need a breather, take a break.
You can suspend your account at any time.
Don't worry.
Your account history, your points, your badges,
they'll all be there when you're ready to pick things up again.
Get started on sharpening your skills today at codeschool.com.
Once again, that is codeschool.com.
All right. We are back talking to the 2015 Ruby Heroes.
And I want to know what was that tractor beam of the Ruby language
or the Ruby community that initially reeled each and every one of you in
to get to this point of being a Ruby hero?
For me, it would have been...
Yeah, sorry.
Go ahead, Seth.
For me, it would have been Why the Lucky Stiff back in the day.
Ah.
Because there was, I first was introduced to Ruby,
I took a break from doing.NETwork and spent a year contracting.
And it was just at the time when Why the Lucky Stiff was blogging
and talking about stuff.
And some of his the
meta-programming part of it was really fascinating to me and the way that he explained all of these
very very complicated concepts was very very appealing to me and I guess that that was it was
that going on and the environment at the time that, you know, Ruby was this brand new thing
where there's all this new magic going on and new web frameworks every day. And like that kind of
feeling around Ruby was the thing that drew me to it and the beauty and elegance of the language.
I want to hit each and every one of you for this one. So let's go to Zach.
So I started using Ruby,
like everyone,
like a lot of people through rails.
But I didn't really get involved until I started working with Sinatra. And basically Constantine Haas was,
took me like under his wing kind of,
and we started working on some Sinatra things together and,
uh,
release a few little projects like documentation related projects together.
And really he gave me like the start to why I wanted to do this stuff.
And yeah,
I could really,
it really goes back to the him.
And so I have to think thank i have to thank him
for sure sarah i guess i have a slightly more prosaic answer and that is that uh i took a break
from programming after my daughter was born she's now 10 by the way um which i can hardly believe
and uh when i tried to get back into i've I had been doing Java, web development in Java.
When I tried to get back into it, no one would even interview me because of that gap in my resume.
And so I ended up, through networking, meeting someone who had some Java work that she needed done.
And in return, she gave me her ticket to RailsConf 2006 that she couldn't use.
So I bought the Pickaxe book, like a paper copy of the Pickaxe book, and I read part of it on the plane on the way there.
And I think it was when I got there, I think it was the people that really drew me in. And then later I came to appreciate, once I stopped writing Ruby that
looked exactly like Java, which I did for a while, eventually came to appreciate the language itself.
And I think, but I think it was the people that brought me in originally.
Let's go to Eileen. What made you first fall in love with Ruby?
So I came from a, I was a photography major in college and the first programming
I ever learned was flash and action script, which is really fun.
And then a lot of stuff between them was all self-taught.
And there was always like a little bit of like a mental block for certain things because
I didn't learn things traditionally. I learned things by
hacking them together and then being surprised when they worked and lots of Googling and lots
of stack overflow. And Ruby was the first time that programming clicked, like it made sense
and it wasn't, I still have a mental block about JavaScript.
I don't want them to start talking about JavaScript at Ruby conferences.
I, like, if you love JavaScript, that's cool.
I'm, I don't.
And so it's like, I think it's the first time that I just really felt like I actually belonged writing code.
Jeremy, how about yourself?
Well, I came to Ruby after a year working in PHP and another year working in Python.
I think the thing that most brought me into Ruby
was the elegance of how blocks worked.
Because in Python, I was using Python 2.3 at the time,
and it was very difficult to get something like
to write your own function
that would like open a file
run some code and ensure to close the file
that was hard to do in Python
at the time where as in Ruby
using blocks with ensure it's trivial
and that was just something that blew me away
and really brought me
into Ruby and made me think about
I don't want to do Python anymore. I just want to do Ruby.
Okay, Nobu.
Nobu.
Hmm. you Very good.
Well, we got one last question for everybody.
And I think I've heard a few things mentioned.
We like to close with this.
At the Changelog, we're trying to keep our eyes on open source
and what comes across our radar.
And so we like to have our guests tell us what's in their radar.
What are some projects or a project that you're interested in,
perhaps you're hacking on?
I know I've heard a few mention Rota, some stuff Sam is doing.
What in the Ruby language ecosystem of open source is on your radar
as something that either you're doing right now or you'd like to be working with?
I'll start.
I've been doing a lot of conversions from RSpec to Minitest
after an amazing Minitest presentation by Ryan Davis at RailsConf.
After using RSpec for many, many years
and then reading Minitest and how Minitest works,
Minitest doesn't give you nearly as much as RSpec,
but it's so easy to work with and write your own extensions to.
I've just been switching all of my libraries and applications
with their spec frameworks over to Minitest
spec instead of using RSpec.
Is it
an easy switch?
Yeah, I mean, it takes some time.
I have actually a Perl script that does
most of the conversion for me, and then I have to go through
and fix up some of the things that
it doesn't handle.
In SQL, I've been working on this for a couple days now,
and I should be hopefully done either late today
or sometime tomorrow.
I feel like the best way to go about this
would be to have something that partially
allows you to run a hybrid mode
where you're running half Minitest, half Aspect,
and then you can slowly plug at it as opposed to all or nothing.
That would probably be easier for a lot of projects.
Yeah.
I'm an RSpec user, pretty happy one.
I didn't see that talk.
Maybe I need to watch that.
But could you give me the elevator pitch, Jeremy,
of why Minitest would be a potential switch candidate for me?
Well, the idea with Minitest is there's no magic.
So with RSpec, everything is its own RSpec-specific object,
whereas with Minitest, it's just a DSL that produces modules and classes,
and it's basically just sort of a DSL that gives you pure Ruby objects
that you can do to work with your specs,
whereas RSpec, everything is sort of its own RSpec-specific type of object
that you have to learn and deal with.
The other thing that's really cool about Minitest
is they run your specs in random order by default,
and if you have any test order dependency bugs in your application,
you can run Minitest bisect,
and it will find out exactly which specs cause your test order dependency bugs in your application, you can run Minitest Bisect, and it will find out exactly which specs
cause your test order dependency bug,
which is just so amazingly cool.
If I could provide a bit of a counterpoint,
I think I like Minitest a lot
for code that is completely under my control.
However, if I'm going on to a project,
and I do this a lot since I'm a consultant, right?
I'll go on to a project that has poor test coverage
or sometimes no test coverage,
very highly coupled code.
Being able to retrofit tests around that kind of code
requires much more sophisticated mocking and stubbing,
like stuff you should never do, right?
But you need to in order to deal with legacy code,
and I find that's where RSpec is really indispensable.
RSpec certainly encourages a lot of mocking and stubbing,
and while you can do it with many tests, there's the ability to.
I try to avoid mocking and stubbing as much as possible.
Yeah, I agree.
I find mocking and stubbing, every time I do it, I feel like I'm cheating.
Like I'm testing that I can type correctly
yeah I totally agree
not that I'm
yeah you're like not testing
the actual
let's test the implementation is exactly
the way that I implemented it
that's basically my issue
yeah like if you
if you're rewriting a lot of this stuff, like, anyway.
I'm not a fan of RSpec.
Yeah, it's the only thing to use, though, if you're retrofitting tests onto older code.
Yeah.
And that's not to say, like, I'm not a fan of it in that, like, I think that it's poorly written or anything.
I just personally find it harder for me to write tests with rspec
i have like a mental block about some of the things that it that it does that i can't get past
and it makes for me writing tests can be really frustrating when i have that mental block so show
hands on test uh tools we got uh people in the rspec fans. I guess you can't really show your hands.
Just say, hey.
RSpec fans out there?
Zero.
Except for Sarah when she's retrofitting.
Just me. But I love those projects.
I know a lot of people like to do
Rails new and spend the first six months on a project.
And I find that period of time in a Rails app is incredibly boring.
It's way more interesting after the code has gotten bad.
I love what Myron does and I think he's a brilliant guy.
He's done great things for RSpec.
But I guess for me, I just reject all magic.
When you're taking on RSpec, you're taking on I guess for me, I just reject all magic.
When you're taking on Aspect,
you're taking on that big baggage of magic with you.
And over time, it just becomes grating.
Reject all magic.
That sounds like a Pythonista.
It doesn't sound much like a Rubyist there, Sam.
But I definitely can see where you're coming from because it's usually the thing that bites you in the butt um all right ruby radars we're running out of time here for
those of you that missed zach's uh joke earlier about the birthdays eileen does have a her
husband's birthday tonight we're trying to respect her time and all y'all's time but if we have other
things on your radar maybe it's something that it's your own project and you'd like to throw
it out there or something that people might want to check out.
Feel free.
I'll throw out my... The discourse
Docker stuff is very, very cool and I think
more people should have a look
at it.
The general problem is that deploying
Rails applications in production
is a big pain.
And Capistrano only goes so far.
And one thing that we've done with Discourse like a year ago,
we moved to like Docker is the only way that we support installing Discourse out there.
And that gives us like very tight control over all of the dependencies.
And we ship an app.
We don't ship just the Ruby
code. And I think that's something that's very interesting for everybody to look at and see the
techniques used in discourse Docker to deploy an application and see if they can apply some
of those themselves to some of their own deployments of Rails. Any others? any others uh i'm working on pulling open ssl out of the standard library i think that's an
important project that could use some more attention uh so hopefully releasing a gem
for that soon an official gem anyways outside of that i mean there's some MRB stuff I'm working on I'm really excited about,
but I like drawing blanks.
I think you guys threw me off
with this RSpec mini test rant.
Threw me off my game.
Sorry.
I'm working on a project right now
called Ruby Together,
which is our effort to liberate the Ruby infrastructure
from the control or the dependency on any one given corporate entity.
So you should check it out.
If you haven't, it's rubytogether.org.
Cool.
Okay, last call for radars.
Sinatra 2.
Sinatra 2. What's going to be. Sinatra 2. Sinatra 2.
What's going to be in Sinatra 2?
I don't know.
We're just going to rename Rhoda.
I've actually thought about talking to Konstantin
about using Rhoda's routing tree,
but using Musterman as the matching for the strings.
The big thing with Sinatra too
is most of you are using Musterman
for the string matching for routes.
You should.
Basically combining that with a routing tree
might actually give you something
that a lot of people might not like.
That would be a very interesting discussion
I'd like to have.
Okay. Well, this has been a very interesting discussion I'd like to have. Okay.
Well, this has been a very interesting discussion.
Thank you all so much for joining us.
Sam and Jeremy and Eileen and Sarah and Nobu and Jeremy.
Wow.
Great group of people.
Congrats on your guys' Ruby Hero Awards.
It seems like it was well-deserved.
We want to also thank our sponsors,
Codeship, TopTal, that's T-O-P-T-A-L,
and CodeSchool.
If you're looking for show notes,
those are at changelog.com slash 154.
Stay tuned for next week's show
when Adam speaks with Scott Hammond,
that's the CEO of Joyent.
They'll be talking about the future of Node.js.
It'll be an interesting one.
But that's all for now, so let's all say goodbye.
Thank you.
Goodbye.
Bye.
Thank you.
Thanks for having me.
Thank you.
Bye. We'll see you next time. you you you