Transcript

The video above was recorded by a campaign tracker at the private Ruby fundraising event, Keep Ruby Weird on October 28, 2016, in the final days of the campaign.

The video depicts known JavaScript agitant Justin Searls, who spoke for approximately 27 minutes at the rally with a message that advocated restoring Ruby to its former prominence in the open source software community. While the content of the speech contained pointed populist rhetoric, it did not present any specific policy proposals.

Opponents to Ruby have raised concerns that the strong language used by Searls will only embolden Ruby’s most radical proponents to take action against JavaScript, the open, standards-based language of the Future™.

Sources in the campaign say that prominent JavaScript leaders are alarmed, fearing that the Ruby community’s counter-cultural message could attract developers frustrated by JavaScript’s slow-moving, deliberate standards bodies to move the web forward. Campaign officials worry that if a cohesive movement organizes around a non-JavaScript language, it could set back their goal of establishing a new world order in which 100% of new software across the world is finally written in JavaScript.

Test Double does not endorse the contents of this video and Searls has been placed on paid conference speaking leave, pending the outcome of an internal investigation.

00:24.033
> Brandon: Ok. While
00:27.033
Justin is setting up. This is Justin
00:30.033
Searls. Does everybody know Justin? Hi Justin!
00:33.033
> Justin: Hello.
00:36.033
Are you guys ready to hear a talk?
00:39.033
You believe that you're
00:42.033
ready for my talk?
00:45.033
Because I guarantee you are not.
00:51.033
> Brandon: Alright. So here is
00:54.033
the real fact about someone who is not Justin
00:57.033
This person, joined the Army
01:00.033
to rappel out of helicopters and shoot wire
01:03.033
guided missiles at tanks. It's a true
01:06.033
fact, but it is not true about Justin so far as I know
01:21.033
So, most people don't know this about Justin
01:24.033
But,
01:27.033
he tweets. On the Internet
01:30.033
This is a little know fact about Justin
01:33.033
Is that he says things on Twitter
01:36.033
> Brandon: And, he, umm
01:39.033
> Brandon: Alright, I have a fake
01:44.933
He once tweeted a rant so powerful that he made the
01:47.933
fail whale cry
01:50.933
> Justin: This is a young crowd. I don't know if
01:54.133
That was back when Twitter was written with Ruby
02:00.133
> Brandon: Everybody, Justin Searls, who is
02:03.133
really great.
02:09.133
> Justin: Alright, just gotta get set up here. It's a
02:12.133
complicated talk
02:15.133
One complication is that I'm not going
02:18.133
myself.
02:21.133
I'm going to give this talk as somebody else.
02:27.133
Alright, just gotta button this up
02:30.133
And, we're off!
02:33.133
Woo!
02:36.133
What a great room, Austin—hands down—
02:39.133
one of my favorite cities. I was telling
02:42.133
how TREMENDOUS the crowds in
02:45.133
Thank you Brandon, he's a really nice
02:48.133
Alright, please
02:51.133
live-tweet all of your grievance to
02:57.133
We good? Alright.
03:00.133
Oh No!
03:03.133
> Audience: You got a bum mic!
03:06.133
Oh, right, yeah
03:09.133
This is a
03:12.133
dongle conspiracy.
03:15.133
It's rigged, yeah!
03:18.133
Now it just fell out
03:21.133
We're going to start this one
03:27.133
Here, I'm going to try this way. Ok, so
03:30.133
let's just call that a do-over
03:36.133
I just ordered the new MacBook Pro, and so
03:42.133
It's just Apple calling to me
03:54.133
Woo, alright! Got all the nerves out
03:57.133
So, yeah, everyone please live-tweet
04:00.133
your grievances to @searls and I will
04:03.133
most terrible things that you say.
04:06.133
developers, my company, Test Double,
04:09.133
are the best of the best
04:12.133
I stand before you today
04:15.133
to deliver (It's okay, it's intentionally
04:18.132
I stand before you today
04:21.132
message. Ruby's heroes
04:24.133
Ruby
04:27.133
is a SPECTACULAR language, but
04:30.133
other language, Ruby has
04:33.133
But today their ineffective
04:36.133
threatens the very survival
04:39.133
who can save it. Together
04:42.133
our language back. This goes all
04:45.133
the way back, folks, to
04:48.133
Now in the beginning (unintentional black)
04:51.133
There was Matz.
04:54.133
Some people, tell me
04:57.133
Which, I think, is fantastic
05:00.133
The Japanese love me
05:03.133
I am told he's very nice, but that
05:06.133
for him to become Ruby King. Matz
05:09.133
weak it took a decade for Ruby to
05:12.133
Seriously! And thanks to Matz's weak
05:15.133
leadership, we became dependent
05:18.133
heroes. First, came pragmatic Dave
05:21.133
Thomas and Andy Hunt, who wrote
05:24.133
boring) book about Ruby and pickaxes
05:27.133
Now this book showed how
05:30.133
Ruby is, but Prag Dave and Prog Andy
05:33.133
lined their pockets building a corrupt
05:36.133
that today is the biggest source of
05:39.133
biased technology books on the planet
05:42.133
Later, "cheeky" Chad Fowler and
05:45.133
Weirich—so called "community
05:48.133
went on to create a national ruby
05:51.133
they started a service called RubyGems
05:54.133
spread their lies and propaganda
05:57.133
easily. "Jolly" Jim went so
06:00.133
far as to make a CORRUPT tool called
06:03.133
force us to build gems how
06:06.133
The corrupt heroes created RubyGems
06:09.133
open borders, letting in hippies like
06:12.133
Whacky _why and D-List DHH
06:15.133
And they've been flooding
06:18.133
_why acted like the purpose
06:21.133
to make art—he had no respect for
06:24.133
He yanked all of his gems, which was
06:27.133
totally unprofessional and NOT NICE
06:30.133
Total Disaster. D-List DHH was so
06:33.133
desperate to have an MVC
06:36.133
that he ported Java's Struts
06:39.133
And, personally, I prefer frameworks
06:42.133
that weren't ported
06:45.133
But soon, things settled down.
06:48.133
receded. Ruby entered its golden age
06:51.133
Developers were unbelievably
06:54.133
In no time at all we built hugely
06:57.133
companies (and also Daily Deal
07:00.133
Coupon Sites) and it was
07:03.133
all thanks to Ruby. Ruby was
07:06.133
winning. Every new startup was using
07:09.133
if their staff had no clue
07:12.133
didn't matter, Ruby's poll numbers
07:15.133
Every developer on earth was either
07:18.133
jealous of people writing Ruby. And
07:21.133
those days. I wrote a lot of
07:24.133
back then, let me tell you. In fact,
07:27.133
that my Ruby was the cleanest code
07:30.133
We need to get back to that Ruby
07:33.133
But soon, the establishment
07:36.133
wanted to change Ruby.
07:39.133
They wanted "Enterprise" and
07:42.133
weak-kneed heroes were all
07:45.133
"Jumpy" José Valim worked
07:48.133
thread-safe. The traitor, Zed Shaw,
07:51.133
made the Mongrel server fast
07:54.133
Aloof Yehuda made bundler, a hostile
07:57.133
takeover of your dependency
08:00.133
And everyone's favorite,
08:03.133
Spent years of his life
08:06.133
rewriting the slow and
08:09.133
for Rails's ActiveRecord,
08:12.133
create MASSIVE enterprise
08:15.133
so fast that we didn't
08:18.133
if we should. But now that Ruby
08:21.133
is mature, your heroes
08:24.133
you for other languages.
08:27.133
B-Tier heroes too low energy to
08:30.133
like Terence Lee and
08:33.133
With our heroes gone
08:36.133
Ruby isn't winning anymore
08:39.133
language and it's time to take action
08:42.133
As a result, I, Justin A. Searls am
08:45.133
calling for a total and complete
08:48.133
Heroes switching to Elixir
08:51.133
can figure out what the hell is going on
08:57.133
We need to start planning for
09:00.133
And if you support me, we can
09:03.133
Make Ruby Great Again
09:06.133
We have to look beyond
09:09.133
phony loyalty to a language
09:12.133
is a disgrace. And you know the
09:15.133
Heroes have known this for
09:18.133
Here's what a left-wing, agile
09:21.133
school called Extremist Programming
09:24.133
They're not willing to call it that
09:27.133
Extremist programming. Here's what
09:30.133
had to say. "Heroes go it
09:33.133
alone, working long hours
09:36.133
accomplish what others think is
09:39.133
The result is unrealistic expectations by
09:42.133
management and inevitably results
09:45.133
SPIRAL as the whole team falls further
09:48.133
and further behind. That's the ballgame
09:51.133
folks. Heroes knew that they
09:54.133
death spiral and yet they did nothing
09:57.133
Now some of our Ruby heroes,
10:00.133
are good people. Many did
10:03.133
decent work for the language,
10:06.133
addicted to your retweets
10:09.133
fees, they closed the door on us. Ruby
10:12.133
heroes became the ultimate insiders
10:15.133
Heroes hid behind shadowy
10:18.133
"The NIH" to explain why we should
10:21.133
gems instead of writing our own. They
10:24.133
led our thoughts, and they told us
10:27.133
that we couldn't be heroes too.
10:30.133
Those same heroes abandoned us for
10:33.133
newer, more attractive languages.
10:36.133
become helpless without them.
10:39.133
And by the way, somebody needs to
10:42.133
to say it. Ruby hero, D-List DHH
10:45.133
was the WORST abuser of SemVer
10:48.133
in the history of programming
10:51.133
And rails-core was a total enabler
10:54.133
let me be clear, if Rails won't
10:57.133
lock down their versioning,
11:00.133
them up.
11:03.133
The establishment
11:06.133
venture capitalists that once
11:09.133
are now shipping our jobs
11:12.133
nobody makes things in Ruby anymore
11:15.133
We need to send them a message
11:18.133
your power. They know that I'm the
11:21.133
bring jobs back to Ruby. The venture
11:24.133
capitalists in their ivory
11:27.133
open plan offices have rigged
11:30.133
the mainstream media
11:33.133
against Ruby, if you open a hacker
11:36.133
newspaper the entire front page
11:39.133
app in anything but Ruby
11:42.133
Elm, Clojure, Rust, and of course
11:45.133
Node.js and React. But for Ruby
11:48.133
to survive, these other languages
11:51.133
It's as simple as that. Our
11:54.133
have let these other languages
11:57.133
some Ruby heroes are trying to
12:00.133
secret that they are in fact only
12:03.133
That they falsely claim that I have
12:06.133
Rubocop report.
12:09.133
These are bald-faced lies
12:12.133
release my full, unabridged
12:15.133
But, unfortunately, I am currently
12:18.133
under a code audit, which
12:21.133
for some reason happens to me
12:24.133
I'd be stupid to release them until
12:27.133
the code audit is complete. Only
12:30.133
Rubocop report while under audit.
12:33.133
But I would gladly release
12:36.133
as soon as Node.js returns the
12:39.133
30,000 deleted e-mails that
12:42.133
says were lost because I
12:45.133
of a Promise chain
12:48.133
Unbelievable. Node.js
12:51.133
Such a nasty runtime.
12:57.133
Our heroes left us out in
13:00.133
guarantee I know more about
13:03.133
than all of Ruby's heroes put together
13:06.133
I'll go to the other languages and
13:09.133
Ruby can start winning again. In fact
13:12.133
I've learned that Ruby hero
13:15.133
is the founder of Elixir
13:18.133
And because he's a hero,
13:21.133
Totally shameless. Jumpy Jose
13:24.133
he has a secret plan to destroy Ruby
13:27.133
But, can anyone imagine
13:30.133
It doesn't look very productional to me
13:33.133
You know, I saw
13:36.133
some Elixir when I walked by a coworker's
13:39.133
It didn't feel as
13:42.133
free as Ruby. Ruby was great
13:45.133
We didn't need heroes to tell
13:48.133
age, we felt free to write whatever
13:51.133
wanted. And we need to realize
13:54.133
stranger together.
13:57.133
A lot of people don't know this,
14:00.133
weirdness. Our heroes' failed
14:03.133
weird reserves at historic lows
14:06.133
use code words like "mature"
14:09.133
creativity that they deem
14:12.133
like "Shady" Sandi Metz would
14:15.133
"Syntactically Correct" way to write
14:18.133
I talk to a lot of developers
14:21.133
of all of this syntactical correctness
14:24.133
Ruby heroes called our
14:27.133
creativity weird because
14:30.133
wouldn't need them anymore. They
14:33.133
We didn't need them. Anyone
14:36.133
gems. In fact, I made two
14:39.133
Tremendous gems. Code climate
14:42.133
loved them. If we're going
14:45.133
to save Ruby, we need to rediscover
14:48.133
first step: stop listening to
14:51.133
Other than me. Keep listening to me.
14:54.133
Some people are saying—and I'm not
14:57.133
I've been told—that we should
15:00.133
Heroes like Chicken Tenderlove,
15:03.133
Ryan Davis, Cranky Gary Bernhardt
15:06.133
And by the way, since Chicken
15:09.133
are the founding members of
15:12.133
Something needs to be said,
15:15.133
are too afraid to call
15:18.133
Radical Parenthetical Terrorism
15:23.033
It's just horrible More
15:26.033
omitted and killed by Rubyists in
15:29.033
in the world. And our heroes
15:32.033
did nothing. If you support me
15:35.033
I will deport Seattle.rb to
15:41.033
Without heroes, we'll all need
15:44.033
to make Ruby great again. Post
15:47.033
Record a screencast. Start a weird
15:50.033
And stop reading the lies in The
15:53.033
that tell you Ruby isn't great.
15:56.033
all of them. And I've been doing
15:59.033
Ask anyone, they will tell you
16:02.033
writes the wordiest blogs and
16:05.033
screencasts. And have you seen any
16:08.033
Nobody makes more slides at Ruby
16:11.033
than me, nobody. I build the most
16:14.033
But I'm just one person and
16:17.033
to slow Ruby's demise. We all
16:20.033
step up and say what's really
16:23.033
Write your own gem. You
16:26.033
publish on the blogs. And if you're
16:29.033
Argue about it with others
16:32.033
or on The Failing Hacker News
16:35.233
can't show that Ruby is a strong
16:38.233
languages will keep walking all over us
16:41.233
Back when Ruby was winning
16:44.233
If someone wanted to learn how to
16:47.233
assume that they should learn
16:50.233
to program computers and don't even
16:53.233
know. These smug, elitist
16:56.233
languages are ignoring you and
16:59.233
and to make Ruby great again, we
17:02.233
have to make deals with
17:05.233
Starting with the most popular:
17:08.233
JavaScript.
17:11.233
JavaScript is a total
17:14.233
lightweight. Like a lot of you, I
17:17.233
understand why JavaScript is
17:20.233
You want my opinion?
17:23.233
Tops.
17:26.233
Maybe a 5, if it loses the semi-colons
17:31.033
And JavaScript is very weak on types
17:34.033
Unbelievable how weak on types
17:37.033
two Dates? I will be very strong
17:40.033
on trade with JavaScript,
17:43.033
wealth. Wealth like you wouldn't
17:46.033
We have conventions over
17:49.033
the path of least surprise, which,
17:52.033
a beautiful path. The path of
17:55.033
Our weak and ineffective heroes foolishly
17:58.033
tried to hide JavaScript from us for years
18:01.033
RJS. Turbolinks. ActionCable
18:04.933
This weak, isolationist strategy
18:08.933
And is leading to Ruby dying out
18:11.433
And that's why I propose we go to
18:14.433
good leader would do: negotiate
18:17.433
Ruby can start winning again
18:20.433
Instead of continuing
18:23.433
policies of mixing JavaScript into
18:26.433
HTML, I am going to Build. A. Wall
18:30.033
Between our Ruby and our JavaScript
18:33.033
Oh, don't worry, we'll make JavaScript
18:36.233
pay for all the HTML.
18:39.233
Ruby will provide—quiet generously
18:42.233
APIs, but JavaScript is what
18:45.233
Ruby web apps and it will pay to fix it
18:48.233
We need to be tough on JavaScript
18:50.633
but I'll also be very very fair, much more
18:53.633
fair than JavaScript has been
18:56.533
Look what they did last time we
18:59.533
By giving them CoffeeScript
19:02.533
They stole all CoffeeScript's good ideas
19:05.233
And they totally choked!
19:08.233
is a joke. Their arrow functions
19:11.233
JavaScript's secret cabal
19:14.233
the TC-39, is a total disaster
19:17.233
Unbelievable. And now some
19:20.233
Have claimed that my ultimate
19:23.233
goal is to transpile Ruby into JavaScript
19:26.233
These are heinous lies and
19:29.233
from the truth. And, besides,
19:32.233
JavaScript wouldn't be my first choice
19:37.733
Nice try.
19:40.133
So people say that Ruby's dead,
19:43.133
Aren't you? Look around you in
19:46.133
today because you believe Ruby
19:49.133
But it doesn't feel safe to
19:52.133
If you're caught using Ruby
19:55.133
attack your first amendment rights
19:59.833
But we can fight back
20:02.833
There's a silent majority that
20:07.433
And the system is rigged, folks
20:09.833
The establishment venture capitalists
20:12.833
has a future. They want teams
20:15.833
massively complex micro Node.js
20:18.833
services and React web site apps
20:21.633
for their unproven startups in
20:24.633
their pyramid funding schemes.
20:27.033
They want to ensure that it takes
20:30.033
taxi car app. And numerous years to
20:33.033
sync a directory of files to a server
20:36.033
The establishment venture capitalists
20:39.033
development is, but they don't
20:42.033
They want it to be huge.
20:45.033
Their entire empire is threatened
20:48.233
I'm in business, I know this better
20:51.233
The VCs are so desperate that
20:54.233
old repos—horrible people.
20:57.233
And so my staff have asked me that I make
21:00.233
before we continue:
21:03.233
ahem I apologize
21:06.233
for using domain specific
21:09.233
project from 11 years ago
21:12.233
It was a foolish decision.
21:15.233
My use of Ruby DSLs has become
21:18.233
from the issues that really matter
21:21.233
In truth, it was just locker room code
21:24.233
That's all it was
21:26.033
Programmers when working on private
21:29.033
DSLs all the time. In fact, even
21:32.033
Tenderlove used RSpec on a project
21:35.033
as last year. Truly disgusting.
21:38.033
And I gotta tell you I don't
21:41.033
I think Ruby's still really, really popular
21:44.033
Everybody I talk to loves Ruby
21:47.033
use Ruby all around the world
21:49.333
But Ruby teams are just too busy
21:52.933
and making tons of money to stop
21:55.533
comment about it on Hacker News
21:58.533
And, if after all I've done, you
22:02.233
This will have been the biggest
22:05.233
energy in my life. If you don't save
22:08.233
Ruby after this, Austin, I'll be honest
22:11.233
I'll never forgive you.
22:14.933
But irregardless, I will totally and
22:17.933
graciously accept the result of
22:21.533
next programming language.
22:27.333
OK, hat's off!
22:30.333
Whew!
22:36.333
I can think so much
22:39.333
more clearly now
22:42.333
Let's bring it back to reality
22:45.333
Where I co-own a serious company
22:48.733
And which hopes that you
22:56.833
So there's a good chance that
22:59.833
Do I think that heroes who
23:02.833
Of course not. Some of my
23:06.333
Ok, seriously, I'm done.
23:10.233
I was—like Trump—obsessed with being
23:13.533
validated by others and I made it my
23:16.533
myself. I wanted to see what it felt
23:19.533
it's been a fantastic experience, if
23:22.533
But, when I hear that Ruby isn't
23:25.533
It's our outsider/insider system
23:28.533
that always stood out to me as wrong
23:31.133
Why is there this huge divide by
23:33.633
and the people who consume them?
23:36.633
in the grand scheme of things, and
23:39.033
relatively big fish. So, that
23:42.033
But, I don't think we've done the job
23:45.033
problems our system of Ruby heroes
23:48.033
Because, I can tell you, I've met dozens
23:51.033
in my travels, and I've seen what the
23:54.233
that comes from looking to a small,
23:57.733
solution to every problem can cause
24:00.733
Worse, we have this habit of
24:03.733
they're very common in Ruby and
24:06.933
"Katie wanted to do this, but we told
24:11.433
…to do it that way instead". These
24:14.433
suck the joy of programming. "Sam,
24:17.433
module of plain old Ruby objects,
24:20.433
deleting them and showing
24:23.433
Now Trump-Searls has a point
24:26.433
Because, as Ruby became mature
24:29.633
Thoughtleaders run on retweets and
24:32.633
maturity is a known retweet allergen
24:36.033
So they moved on. And early on,
24:39.033
assumed when they came to Ruby—
24:41.633
keeping relevant was going to be
24:44.433
do nothing, I think that eventually Ruby
24:47.433
cute-little scripting language status
24:50.433
So even if we want to to replace our
24:53.433
heroes with new heroes, I don't think
24:56.133
not the hottest language in the world
24:59.133
tons and tons of new talent. Today,
25:02.133
So we have to look within
25:04.633
Ruby has its work cut out for it
25:07.633
all become heroes than just select
25:10.633
So, it'll be a steep climb, but honestly
25:13.633
You look at languages like
25:16.633
have really fast async I/O, and that's
25:19.633
Rust and Go are just really fast, period
25:22.633
and that's something that Ruby could
25:25.333
popular languages, there are
25:28.333
we love about Ruby. Ruby still has
25:31.533
We have tools and culture that's
25:34.533
programmer happiness and
25:37.533
obviousness via the path of least
25:40.533
through well-considered conventions.
25:43.533
value-based test suites. All
25:46.533
that represents a niche that's
25:49.533
even if it's currently out of fashion,
25:52.533
application development is not
25:55.533
scale; if anything all of these
25:58.533
kind have taken Ruby's performance
26:01.533
Neither is the hardest problem having
26:04.533
In fact, dependency churn is this
26:07.533
on a lot of teams' productivity.
26:10.533
been long-term maintainability
26:13.533
suited, I think, to show
26:16.533
more maintainable applications. Ruby's
26:19.533
gives us a certain empathy
26:22.533
Ruby helps Rubyists create
26:25.533
tests. And the conventions are strong
26:28.533
portable from project to project
26:31.533
We're already seeing a ton of legacy
26:34.533
Project teams are asking
26:37.533
"How did we get to this big ball of
26:40.533
and understandable Ruby could
26:43.533
potential answer for teams like that
26:46.533
final plea is that if you believe
26:49.533
for some reason, tell people about it
26:52.533
maintainability, even if it's a boring
26:55.533
ecosystems. Screencast tutorials
26:58.533
Even if other people have said them
27:01.533
different. Find an organization like
27:04.533
Girls Code and show them the gentle
27:07.533
syntax and community. And I don't
27:10.533
the Failing Hacker News, but if
27:13.533
stand up for Ruby. Hacker News drives
27:16.533
the tech that companies use,
27:19.533
And Ruby is rarely mentioned there
27:22.533
anymore, because it's not new and
27:25.533
Turmp-like tribalism. It's not us-
27:28.533
-vs-them. Let's all be polyglots.
27:31.533
draw in outsiders. So when you work
27:34.533
empathize! Be kind. Don't assume
27:37.533
have had the same lessons that you
27:40.533
valuable things to teach them just like
27:43.533
So, anyway, that's what we try to do
27:46.533
at my company Test Double. We like
27:49.533
with people working in other languages
27:52.533
where they already are. And we're
27:55.533
So if you want to work with us, Test
27:58.533
always interviewing. If you want
28:01.533
or Make JavaScript Great For The
28:07.233
Shoot us an e-mail at
28:10.233
It's a real easy conversation. We
28:13.233
We just talk to you about who you are
28:16.433
And then tell you about how we work and see
28:19.433
you wanna do.
28:22.433
So I'll be around all evening. I got
28:25.433
a bunch of Test Double stickers and I
28:28.433
Great Again stickers, some are already
28:31.433
in the sticker table in the back, but I've
28:34.433
here, so I hope I get a chance to meet
28:37.433
Thanks so much for keeping it weird
28:47.533
> Brandon: Thank you Justin. That was
28:50.533
problematic.
28:56.533
I don't think I'm a millennial, because
28:59.533
bad at detecting the line where people
29:02.533
ironically co-opting populist
29:05.533
actually just using it.
29:08.533
Thank you Justin,
29:11.533
You're a good dude.

Footnotes

Searls referenced a number of historical figures and events specific to the Ruby community in the talk. The following is a collection of links leading to more information on many of them:

M

Hash An icon of a hash sign Code Name
Agent 000