The Changelog: Software Development, Open Source - Mongrel2 and high performance web sites (Interview)
Episode Date: September 8, 2010Wynn caught up with Zed Shaw’s non-rockstar alter ego to talk about Mongrel2, high performance web sites, guitar, and software community ponzi schemes....
Transcript
Discussion (0)
Welcome to the ChangeLog episode 0.3.4. I'm Adam Stachowiak.
And I'm Winn Netherland. This is the ChangeLog. We cover what's fresh and new in the world of open source.
If you found us on iTunes, we're also on the web at thechangelog.com.
We're also up on GitHub.
Head to github.com forward slash explore.
You'll find some training repos, some feature repos from our blog,
as well as the audio podcasts.
And if you're on Twitter, follow Change Log Show.
And I'm Adam Stack.
And I'm Penguin, P-E-N-G-W-I-N-N.
Fun episode this week.
We talked to Zed Shaw of Mongrel 2.
Chatted up his new project, as well as Python and guitars.
Yeah.
Speaking of Python, we've got the Django Dash guys coming up next week as well.
Yeah, that was a fun episode, too.
Just with five people, it got sort of hairy to edit, I take it.
It always helps one of the co-hosts doesn't hit record.
Yeah, it does make it a little bit difficult in the post-production process.
Well, it's a longish interview this week, I think around 40 minutes, so should we cut
the banner and get to it?
Let's do it.
Cool.
Chatting today with Zed Shaw from the Mongrel 2 Project.
So Zed, for those guys out there that might not know who you are,
why don't you introduce yourself and just let us know a little bit about your background.
Hi. So I'm Zed Shaw, and I've been programming for a real long time.
Some of you of me, if you're in the Ruby world, probably know me,
both because I use my software, but also because I'm a pretty prolific blogger
and I've written some things.
And currently I'm working on my new thing,
which is kind of like the new version of Mongrel, Mongrel 2.
I couldn't think of a better name, so I went with Mongrel 2.
And it's basically just a super badass web server.
So we asked some questions informally on IRC earlier as far as what guys wanted to know about Mongrel 2.
So one of the questions was, what happened to Mongrel 1?
Oh, well, Mongrel 1, so I basically got out of the Ruby community.
And rather than leave all my projects in the wind like Y did, I went and gave it up and basically got a hold of the guys who were mostly doing most
of the work. By the time I left, it was actually Luis Lavena and a few other folks who were doing
a lot of the monrole maintenance. And so I just left it to them. And they moved it around a bunch
and they quit updating the docs, but they kept the software going and they basically maintain it and
keep it working. And then I guess the other thing that I could say happened to it
is all these other web servers started carving it up
and coming up with their rendition of it.
So that's where you get Unicorn and Thin
and there's a whole bunch of other ones that are based on it.
What's the main selling point of Mongrel 2 over the previous versions?
Well, so the Mongrel 2, the main selling point is that it's written totally
in C. So that's the first thing. So you don't have to worry about any of the Ruby stuff. And
it's actually fairly disconnected from Ruby, except for the main part is that I reused the
parser that I wrote for mongrel. And its biggest part is that it's completely asynchronous and it
works with this awesome messaging kind of super socket
protocol called zero MQ. And what that gives you is the ability to write your application logic
and your backend in any language. Pretty much. I think zero MQ is up to about 20 languages that
it supports and mongrel two right now is up to 10. And one of those is.NET, so that's probably way more than even just the 10.
And that's its main thing.
I mean, basically what we pimp it as is this language agnostic app server, web server, with the goal of hosting anything.
We would just make it where it's dead easy to host everything that you've got.
Quite the list of languages here.
So Ruby, Python, C++, PHP, Haskell, Lisp, Perl,.NET, Clojure, and Lua.
Who's got the most traction as far as those languages?
Well, so the thing is, is we actually really haven't done a lot with it.
It was so easy to crank out the protocol that everyone just wrote protocol bindings.
And then the Ruby and the Python side, like on the Ruby side, there's Rack.
And on the Python side, there's some WSGI.
But actually hosting languages is kind of like our version two, like the next thing we're shooting for.
So as far as like traction goes, the project's only three months old.
So we haven't actually hosted anything.
There's people who are sitting down trying to use it.
And we've now just started kind of, well, you know, how do you actually host a Python thing on this thing?
And how do you deploy it?
And how do you make it less sucky?
There's some odd stuff we cranked out real quick that we're going to rewrite and things like that.
What do you see as the typical stack?
Normally with the older version of Mongo, you would have some sort of front-end proxy in front of it.
What would you do in the case of Mongo2? So with the Mongo2 setup, what I'm aiming for is,
like some people have been trying to compare it to, say, Node,
but that's not a really good comparison.
There's a little bit of overlap with Node,
but it's actually more of a different part of the stack.
So I'm actually putting it more at either where you would have your Apache
or your Nginx.
I consider those more directed competitors,
or even maybe where you have have your Apache or your Nginx, I consider those more direct competitors, or even maybe where you have your HAProxy.
And I kind of consider the architecture that Mongrel 2 is shooting for
is a collapser, where you don't have to have as much HAProxy
to an Nginx to an Nginx that runs your Rails, that kind of setup.
You can actually just have a Mongrel 2 that messages to everything.
But right now, I would probably tell people, HAProxy goes to a mongrel2, goes to your app.
And there shouldn't have much more than that. You shouldn't have to put
Nginxs and things in between or any other stuff like that.
What's your take on the whole evented web design pattern that seems to be popular lately. So it's interesting because, yeah, like it's true that events, you know, things like the
e-poll and having event callbacks and stuff like that are actually faster than threads
in certain cases.
There's actually a few types of things that are better with threads.
And I've been doing the stuff like that for years.
I mean, that's just kind of how you wrote web servers.
It's almost kind of funny because these folks are making it seem like this fantastic new technology has been around forever.
It's just now people kind of understand it.
And what I see is, yeah, you know, events are great.
But a lot of the systems that make you use events, it's almost like they shove it in your face and they don't give you anything nice to deal with it.
So over on the Python side, there's Twisted.
Over in Node, if you're in C and C++,
you've got libEvent and libEV.
And Ruby, you've got event machine and things like that.
And they kind of just, they don't give you a lot of help
other than calling your function and saying go.
So I actually think that a lot of the event-based frameworks,
either they're eventually going to invent
some kind of state machine or
some kind of coroutine, and they all need some kind of a ring buffer of some kind. And if you
don't know that, then you see people typically write event code and invent those things. Like
they sort of do a state machine and it's all kind of half-assed, or they sort of do a ring buffer,
sort of half-assed. And so what I see is, like, you can actually probably
simplify event systems a lot,
but still get all the same performance boosts.
I know with Ruby applications,
it normally is an all-or-none proposition.
If you go the evented route, you seem to need libraries
that are also evented.
Is the same true with Python and some of the other languages?
That's actually, I think, a core thing about events.
It's nearly impossible to merge event systems.
It's not impossible, but the stuff you have to do
requires a non-event system to put it together.
This is just something that, that's how event systems work.
And I haven't really ran into anything that makes it better.
So let's say, for example, I've got zero MQ that's got its own little event
loop. And then I've got Libby V, it's got his own event loop. And then I've got Ruby's
pseudo-thready thing, which uses select and stuff like that. If I want to put those three together,
I have to declare one of them the king. I usually have to use some kind of real thread. I have to
do some kind of maybe tossing events over a socket to the king. I have to do all sorts of weird stuff to make it work. And that's just like a universal
thing about event systems. They just don't merge together very well. Let's talk about protocols
for a moment. I seem to remember a blog post earlier, a couple of years ago, maybe. Time flies.
As far as HTTP and you feeling that it's probably the wrong protocol for a lot of things we do on the web,
what do you see as a future protocol that could kind of overtake HTTP?
So that's one of the things that I'm trying to do within the Mongo 2 on the front end side
is sort of add the protocols that I think people actually could use for a lot of the async stuff.
And the trend I'm seeing with web apps is it's actually going more async for a lot of the event notifications
and a lot of your JavaScript front ends and things like that.
It just seems to work better.
This is one of the reasons why Node is so nice,
because you can basically merge the events on the back end to the front end.
And so the thing that I see as far as protocols go is, like, WebSockets is sort of getting it,
where the people who want to do the async, chatty style, message-oriented stuff can use a WebSocket.
And then if you want to do the heavy lifting, upload, download, grabbing files, that kind of thing, use HTTP.
Back in the day, what I saw was this kind of bastardization of chunked encodings and HTTP to invent this thing called long polling,
which is just another word for never closing the socket, which for a lot of web servers is really bad.
I mean, a web server is mostly designed that people are only there for a short period of time.
So you can eat up resources and things like that. And then if you've got this guy who's keeping his long pole open for a long time, you're taking a web server that's designed for
files and transmitting files, and then you're putting in a messaging, continuously connected
kind of chat protocol. And a lot of web servers just break down for that. So what I'm shooting for in Mongo too, is it works for any of those patterns, the async, long pull, message oriented.
And then if, you know, web sockets come out, we're going to add web sockets. If someone invents,
like a Spidey becomes popular, we can throw in Spidey. I mean, the way we've designed it,
we can pretty much put any protocol that becomes popular into the thing because it assumes nothing
about the actual request response model. What sort of applications are you building with
these types of platforms? So the things that I'm actually interested in is mostly on the music
hosting side and also on the more social chat or social code side, mostly just because I'm
curious about it. I mean, for me, it's kind of cobbler's mostly just because I'm curious about it.
I mean, for me, it's kind of cobbler's shoe stuff.
I'm so busy actually working on Mongo too,
I don't have any time to work on this stuff.
So I'm kind of just getting it out.
But the main thing is I've got an idea
for a little project that will sit and watch you code.
So people in a project can actually watch each other
as they work on files, and they can ask each other questions. So sort of like a weird so people in a project can actually watch each other as they work on files
and they can ask each other questions so sort of like a weird code chat in a way um which every
time i mention that the programmers they go oh god don't let my manager get a hold of that he'll
know i surf lol cats all day long and um and then the other one is like hosting music is kind of a
pain it's like i'm thinking in terms of a musician who doesn't really know a lot
and doesn't want necessarily like just a place to put their files,
but an actual page, you know, a small blog,
places they're going to be playing next and hosting the music.
And so that's, you know, kind of something I'm a little interested in.
And then there's another project I've been toying with for a long time,
which is the idea of like a music browser that more browses the semantic web of liner notes, basically,
like what's in a CD, who is the producer of this and that, and things like that.
And a lot of that's just kind of breaking out of the walled garden that gets created around music,
like iTunes, things like that.
But all those projects, you know, I'm working on Mongo too,
so I don't have a whole lot of time to tinker with them.
Let's talk music for a second.
So tell me about Fret War.
So, yeah, so Fret War.
That was my foray into products.
So I moved out to San Francisco,
and I'm still really into trying to get better at consumer products.
Most of the stuff I do is I like to tell people I make products
for people who make products for people. So it's like, I make web servers and things like that.
And I hear people look at you and they go, Oh, you're just a nerd, huh? You know,
they don't really care. And so, and, uh, and I'd been doing that for years and years and,
you know, I'm a smart guy. So I said, Hey, I'm going to try and make a few websites for fun. So,
um, I, I branched out all my blogs and I started doing all sorts of art topics.
And I'd actually, before moving out here, I spent about a year studying jazz guitar at a music
school in New York. So I wanted to start putting up songs and stuff. And I kind of found I was in
a rut where I would just practice the same crap all day long. So I came up with this idea for
Fret War. Me and a bunch of friends, we come up with like a round, and people basically play the round.
The round could be something like, you know, play a metal song in A Mixolodian
or something like that.
Mixolidian.
Mixolodian.
I believe that's channel 224.
Yeah, yeah, yeah.
Nickelodeon.
The Nickelodeon mode.
Anyways, and then what we'll do is they'll all do their own rendition of it,
and the production values are pretty high.
I mean, if there's anything that shows at home, recording is really easy.
It's the fact that a lot of these guys come home after work on Friday,
they figure out what they're going to do, and then on Saturday,
kind of craft up drum tracks, bass lines, whole guitar parts,
their solo, everything, sound effects, and then they upload it.
And then what we do is we go and we rate it and we say like you know but we like the sound quality the tone of it
your interpretation was cool and then people win rounds and based on that and it's like maybe 12
of us do it you know one of the the apps that i'd like to see you've talked about this doing it for
like the rails rumble or something like that be familiar with layer tennis no on the design side we have this uh i think it's kudel that puts it on layer tennis
that you upload a psd and you keep riffing on it back and forth to each side each designer
keeps adding detail to the psd and passing it back and forth i'd like to do the same thing with riffs
somebody lays down a bass track and then you just keep uploading your version,
your take on it and see what you can make.
Kind of collaborating, but not exactly in real time.
Yeah, yeah.
I mean, there's all sorts of cool things.
Basically, a lot of the stuff I want to do with Marvel 2
is just to make it easier to do that.
Like, for example, we have an MP3 streaming demo
and it was easy.
It's like that really Like, for example, we have a MP3 streaming demo and it was easy. It's like that,
that really crappy icy protocol that was written by 95, right when the HTTP came out. So it's
totally not HTTP. It's like basically if, if some dude had windows and a really tiny computer,
this is the protocol he would do, you know, it's like hard, hard coded chunk links with
a header that has to be a multiple of 16 in size, you know, and it's just
streamed out, but you know, we wrote that and I can do a really good uploaders. You know, a big
problem is people have a hard time uploading their music. So I could actually have a little desktop
apps and things like that. And it's, it's just that, you know, as I worked on fret war, it was
so hard to actually get uploads working. We use email. So I have this other project Lampson that
basically runs all the fretwork.
You email your jobs in and your description and everything,
and it sets it up.
And I want to get away from that.
I want to make it where you can just upload the files,
you can chat with people,
and you can do the golf a lot quicker too.
If it's more async, I could actually chat with you
and go, how about this?
How about that?
How about this?
How about that?
But right now, the current web stuff, it's just way too hard to do that. It's, it just doesn't
work for that kind of real time music-y stuff. Speaking of email, talk to us about Liberalist.
Oh yeah, Liberalist. So I was working on Lampson, which is this mailing, this basically it's like
Rails or Django for email. And uh it's it's got some code
in it that i think is just awesome like python's got pretty decent email support and then i kept
running into this mismatch because like email is pre-unicode so everything you get is this
weird like set of of headers and weirdo encodings it It's bizarre. So I got code that basically cleans that up and turns it into pure Unicode.
It's,
it's great.
It's like my favorite piece of code in the last year or two.
Um,
but it's mostly just this framework and basically emails come in and you do,
you know,
you do stuff,
you like reply and put crap in databases and do whatever you need,
whatever you do in web.
And one of the demos that came out of that was this little mailing list thing
I call LibreList. And it literally takes emails, manages a mailing list, kind of hooks a little bit into
Django, stores archives in JSON, things like that. And I had a whole bunch of people who emailed me
and they go, hey, I really hate Google Groups. Like Google Groups is awful. Tons of spam. It's
hard to use unless you have Gmail. You know, it's just really awful. Could you just put this demo, this, like, mailing list demo up for us?
So I threw it up, and I think a bunch of people used it.
And, you know, more and more open source projects that are, like, on the smaller side try to use it.
And I think it's up to maybe 2,000 people registered, a couple hundred projects.
You know, and they don't get a high volume.
They get, like, maybe one a month or one a week, but it works, you know, and it's dead simple. It doesn't require much authentication
or authorization or anything. How long have you been playing guitar? Uh, so I started playing
guitar when I was 20, I was in the army. I was really bored. So, uh, I had a, had a friend who
is a professional musician before joining and he's like, well, you should play guitar.
And I don't know why.
So he got me, like, helped me pick out a little classical guitar and handed me the sheet music for Fur Elise.
And I guess it was a test to see if I would actually do it.
And I just sat there, and I, like, tried to play it over and over and over.
And finally I could play Fur Elise, like, a good chunk of it. And he goes, finally I can play for a lease, uh, you know, like a bit, a good
chunk of it. And, uh, he goes, wow, you can, you can sort of play. All right. You should,
you should like, you know, play this. And so since I was 20, I'm 36 now, so 16 years,
but I never took it seriously. So you could actually probably say I've only been playing
for like two years, you know? Um, cause last, uh, I guess in, uh, 2008 or nine, uh, basically when I was working at
Bear Stearns and they tanked and, uh, I got a severance package.
So I went and I'm like, well, I can take the severance package and maybe do a startup
or I could learn to play guitar.
So for Elise is normally a piano arrangement.
What's your, what's your, what's your, um, your take on tabs and why do tab sites
always suck? Oh man. Yeah. So, okay. So that would be another thing I would love to do.
It's just nuke tab. There's a guy out there who's doing fantastic, um, HTML five canvas rendering
for sheet music and for tab. I would totally just love to hook up with him and do like a site that did awesome tab. And, um, I actually probably would say, yeah, basically you pay a very small fee just so
that we don't have to run ads and make the site degenerate into like some ad spam, horrible
link farm, you know, as they always do.
They always do.
They're so awful.
And I think, I think there's like some one company that does them all.
Cause they're like, they're all the same. You know, there's like a tiny little tab that's in the center that they ripped so awful and i think i think there's like some one company that does them all because like they're all the same you know there's like a tiny little tab that's in the center
that they ripped off of musenix or some other website and then surrounding it is just every
horrible guitar player uh if i see one more ad for slash i'm seriously gonna kill that dude i mean
it's like awful he's got picks guitars he sells. He's like the biggest pimp and he's all over every like music site
everywhere.
Um,
and I don't know why they get shut down,
uh,
quite often.
So maybe they've got to pay some tithe to the music industry.
I've got no idea why,
but,
um,
that's gotta be the only explanation.
It's,
there's no other reason why we're technically,
we're the same that we were in the early 90s with the Olga archive
the online guitar archive
I think is the name of it and basically
they're the same Usenet posts from the
mid 90s just posted to the web
with pop-up ads
and people add more
I notice that
occasionally you'll get new stuff
if it's a new popular song
but I think the last major metal band noticed that like um occasionally you'll get new stuff if it's like a new popular song uh but i
think the last the last major like metal band i saw a lot of tab for not that i look too often
but it was death clock there was like people have just done tons and tons of tabs for this fake
uh cartoon metal band you know and that was like it you don't see hardly any jazz stuff you see
very little blues anymore um and it's because all the stuff that was like jazz and blues was taken from, you know, back in the pre,
uh, internet or, you know, pre web, uh, using it, you know? Um, so anyways, yeah. So I would
love to have a better site that, you know, did nice rendering and, you know, you could,
you could upload the tab and it would figure it out. And, um, and then, you know, basically
do the licensing properly. So people are paying a bit, but you know, maybe it out. And, um, and then, you know, basically you do the licensing properly.
So people are paying a bit, but you know, maybe it's, uh, you're actually getting with the music
industry and saying, Hey, yeah, you guys can make some money here. If you actually just give us your
tab, um, you know, we'll give you a cut, whatever we sell, people are willing to pay for it while
you're like leaving all this money on the table. So what do you rock out to when you're coding on Mongo2? So I had a Mac.
I'm actually doing this talk on a Mac.
And the problem is when you're writing software that's like Mongo2,
Mac kind of sucks because their I.O. is not so great
and the tools you have just don't work.
So I got a little Linux laptop.
It's not little. It's actually a huge beast. But it know, it was a cheapo Linux laptop and Linux is so bad with sound
that my headphones don't work. So like I plug my headphones in the speakers turn off and then my
headphones, I can't hear any music. So I rock out to nothing now. I mean, I like, cause Linux has
got, and I'll, every once in a while I'll play like, you know, whatever happens to be on my, on my MP3 trainer that I'm trying to learn, but you know, that gets really boring.
So yeah, as soon as I can figure out how to get the freaking speakers to work. So for like,
I guess three months, I haven't really listened to music while I code. Um, but normally what I'll
listen to is, uh, uh, I'll tend to, I tend to really like, uh, and what I try to learn
is old school jazz, you know, uh, pre bebop jazz, uh, with actual lyrics and people singing and,
uh, you know, tons of cheese. Like I just love, I love jazz. It's just dripping Velveeta,
you know, like a stack of cheese sandwiches. Um, and mostly cause that's, that's apparently
about the only thing I can sing well. So I've got the perfect lounge voice and that's it.
I can't do anything else.
Um, and so I do that.
And then every once in a while I'll, I'll turn on some metal, um, like older, like not
new metal, but the old school stuff, Pantera, Slayer, uh, Metallica, uh, pre, um, black
album Metallica.
And then, um, you know, like a lot of just, uh,
Oh, I've gotten into country lately, mostly because of just, Oh yeah. Yeah. So like country
is awesome. If they don't sing, like if you listen to the musicians, countries, like those
dudes are so awesome. Like the, you listen to the guitarists are just insane. Um, you know,
the mandolin guys, bluegrass guys, but then when they start singing that nasal twang you're just like oh and i'm like i'm sort of from texas i was born there and i you
know traveled around a lot but it's it's like i'll listen to that stuff and i can listen for a little
while and then i'm like oh um i think in other music like that's uh reggae like i can listen
to reggae for about two hours and i go oh this dude plays on the two and four anymore I'm gonna kill him you know you know it's just like every genre when it comes out
is groundbreaking and it's usually a fusion of two or three other genres but then it just
degrades into this cliche of itself you know caricature of itself yeah and you know actually
I think a lot of that is uh it's the same reason why politicians eventually just kind of gravitate
towards the middle why almost everything becomes uh mundane and it's just that if you want to sell it you got to sell it to the midwest you
know and then and you basically got to you know normalize it you got to take any other flavor out
of it basically you got to make it like cheese you know because they like cheese in the midwest
so future generations it's going to be just like music everywhere just a little bit of music
yeah yeah totally.
That's actually something that I've been curious about, too,
because some of the projects that I try to do online try to merge sort of like visual writing and music together.
And I think that's actually kind of like the next phase,
like the next thing that you can't really copy.
I mostly do it just because it's guaranteed to be unique,
so nobody can tell me it's not something that's been done
or that there's no musician out there really kind of doing that.
There's a few.
I think the first musician to do a mixture of video, textual, and audio
was like Bob Dylan.
When he did Everything is Broken,
it's like kind of the first music video in a lot of ways.
So I basically tried to do a lot of projects like that.
I mean, that's kind of cool stuff.
You know, it seems like we try to shoehorn computer science to more of an engineering-type role.
But, you know, a lot of it, I've seen the most talented programmers are often creative in more than one medium.
Yeah, that's very true. Actually, I would love to just start trying to teach random musicians how to code. I actually think like playing music, like if you play music from sheet music,
probably more so than tab. But if you play music from sheet music, you're actually learning this
programming language in a way. I mean, it's odd it has like just like every programming language that
has this sort of arbitrary rules that fit around a core theory that's solid and um you have to be
able to note structure keep certain chains of things in your head you know so they got the
memory for it and yeah you know i just keep running into these musicians and and i'd be like
you could probably learn to code like no i like, no, I can't code.
I'm just a guitarist.
And I find visual artists that turn into programmers, writers.
I've seen a lot of writers who eventually can become programmers.
And I think the really good programmers, programming is like something they use to do other stuff.
I think that's the biggest thing I've learned.
Yeah, that's right.
Especially in this, I guess, brave new world of social media and the web.
It's almost like just having that aspect is what you need to promote what it is you really do.
Yeah.
I would actually put it just a little differently. say, um, the technology, like the business of technology changed from, uh, this kind
of stuff I do, the backend stuff, you know, the web servers and things like that to a
product version, like a product focus.
So you actually make products for regular Joe's, you know, the Facebooks and Twitters
and social media stuff and pretty much anything mint, even if it's like a, a, a web server
analytics thing, it's, it's like a a web server analytics thing it's it's a product and the shift
that you're getting is in order to make a good product well you have to be good at human stuff
you know you have to be good at writing and public speaking and and doing a you know good
gooey front ends and and all that sort of stuff and a lot less about the technology and i think
a lot of the reason why that's even possible now is because,
you know,
guys like me laid down this foundation,
you know,
the guys that wrote Apache,
the guys that wrote Linux,
the guys that wrote the hardcore stuff,
they made it easy to use so that people who don't have to know that or don't
know that so well can still come in and make a good product and put it out to
others.
Yeah.
So I've got to ask the question, is Rails still a ghetto?
You know, it's funny because I think they've cleaned up quite a lot and finally matured,
although I still seem to run into a few here and there, but you know.
It's really, I don't know, it's kind of sad.
I actually had a talk with a friend a lot where, you know, I've just had this idea for a while that in general, I've seen this trend where every community becomes a Ponzi scheme, you know, where it seems like within every community, they tend to fail mostly because general Ponzi scheme failures or pyramid schemes,
they collapse because it's more of like a social Ponzi scheme.
And there's the guys at the top that run it.
And then eventually all the wealth of influence and ideas and work that all the guys at the bottom are putting into it,
even though the guys at the top only benefit, it collapses,
mostly because something new comes along, like a new Ponzi scheme, people move
off to it.
And then, you know, they want to cash out in a way, and they just leave, and the whole
thing collapses.
And kind of the indicator of that, if you notice, any time a community collapses, you
see about one half of the people at the top are the first ones to leave to the new thing.
So you get these guys who are like top authors and pundits and whatnot, and the second Ruby
came out, they were off of Java onto Ruby.
And the second Node came out, they were off of Ruby onto Node.
And I think they kind of get that it's like a Ponzi scheme, maybe not explicitly, but
I know they do.
So I think actually, I've actually kind of started to say that if you have a community, like a community style thing,
and it's not run more like an economy where everyone benefits, it's easy to find out who
people are. You have a free market of ideas and even just plain old cash, and you make it difficult
to cheat people. I find a lot of times the Ponzi scheme communities have a lot of
just straight up shysters, you know, or business guys who are taking advantage of people.
And if you don't have that, then, yeah, it turns into a ghetto.
I think I see it in just about every one that's out right now.
You know, and you kind of left the Ruby community not as dramatically as Why the Lucky Steph,
but I noticed sort of a softening of Zed Shaw.
Who's the real Zed Shaw, and who's the persona Shaw. Who's the real Zed Shaw and who's the persona and who's the real Zed?
The main thing is like, so the internet persona, right?
I've kind of divided it up now, but the internet persona is a little bit me.
I mean, I get pissed off at people.
It's just online.
I just go crazy because there's these guys who,
that I keep running into who are really nice online,
but totally in person.
And so I'm kind of like making fun of them by being the inverse. So being a total online,
but then try to be nice in person. Yeah. Um, and it's funny because people on the internet just
take it way too seriously. I mean, they take it way too seriously. They actually believe
that I actually talk like, I mean, when there was that picture of me in leather, they thought I wore leather and I'm actually like, I'm like allergic to leather,
you know? And about the only thing is I, every once I would grow my hair out, Oh, I grew my
hair out and I went to PyCon just like, I was just bored, grew it out and nobody knew who I was.
I would actually stand there and my friends would walk by me. So like my signature is goatee and shaved head, you know? Um, and, and so the thing that I try to tell people is, you know,
me in person, I try to, I try to be nice to folks because, you know, I just kind of think the world
is already full of a lot of suffering, but I also don't put it with people's like, if someone's
going to be mean to me, I'm going to tell them, or if I think they're, they're just, I just kind
of tell them, you know, if what they're doing is being an a**hole and being a jerk,
I find that they tend to be so self-centered and so obnoxious that they don't even realize it.
And I'll just tell them.
And I'll try to be nice if I'm a friend with them, but I've ran into guys who are giant a**bags
and just said, you know what, you're a f***bag, I don't want to talk to you.
And other than that, I just try to be nice.
Be nice, but don't take crap from
people.
The online persona is, you know, if I'm being nice, then, you know, then that's me.
And if I'm not taking crap from people, I'm doing it in the most ruthless, obnoxious,
straight up way I can, like just ripping them.
Um, and part of that is just cause it's a lot of fun, you know?
Um, and a lot of the guys that I try to rip on just really deserve to be knocked down a few pegs, you know.
Any theories on what happened to Y?
I don't know.
I kind of suspected that he was getting a little disillusioned for a while,
but I think he was a family man.
So I think maybe he just got more interested in family or something else.
I think he just, you know, decided that, you know, he had enough. He had to go or something else. I think he just decided that he had enough.
He had to go sort something out.
I don't really think he had any psychological issues or any of that stuff.
I think there's a myth built up around that the equivalent of he went crazy
and had to go and check himself into some rehab or something like that.
I don't know if anyone's actually said that, but it seems to be the implication.
So I think he just got kind of tired of it.
I mean, I got tired of it.
I think he was in RWBY really early on and was just kind of like a character.
And then RWBY sort of changed.
And I think it went away from the fun, cool activity he used to just have his version of fun with
and changed into something that, I guess the best way to explain it is it
Ruby changed to where his book was like his gorgeous, fantastic book. Um, it just didn't
matter anymore, or it just, it just wasn't, uh, the same kind of community that would like that
kind of book. I mean, people still like it, but I think that was the change. This is where I
crowdsource production of feature episodes. So we just wrapped a Django Dash episode
where Mongrel 2 came up in this part of the show.
So I wanted to ask you the same question.
What's on your open source radar
and what's got you excited to play with?
So on my open source radar,
definitely I've got, you know, 0MQ.
I'm also looking at Node,
mostly because, like, I would like Mongrel 2
to be able to point at Node,
and there's some spots with it
where it's hard to work 0MQ into
Node, so
I'm watching them and hanging out
and seeing what they come up with. And I may actually
go hang out at Joyent
and see if we can try to make
something happen, or maybe just go hang out there and
help a bit. Because, like
I said, I want to get model to where it hosts everything.
So your note is note is attractive.
On the browser side, I had someone just show me this thing called Ajax.
I am, which is basically like a full kit, a jQuery style kit to do a Facebook style
chat bar at the bottom of your site.
So I'm totally going to rip that off and do that as like the model two chat demo, you
know, just like, Oh, it was, he showed me it and I'm like, why haven't you shown me
this?
It was so good.
Um, and, uh, Oh, and QT, I'm actually dying to use the latest QT.
QT really?
Yeah.
I'm saying, I say that people look at me like, what, why?
I played with it a while back, and what they've done,
and I think it's going to get even better,
is they've basically hooked in full WebKit and full JavaScript.
So you can actually write a desktop app, but do it all Webby style.
So you can do full Qt, C++ bindings, access disk, whatever the hell you want,
like anything that C++ can do.
But then you can make a little kind of framework or whatever you need to plug those C++ objects
straight into a WebKit browser and JavaScript engine.
And it's all really seamless.
And for me, I'm like, wow, if they were smart, they would be promoting this as the way you
can get a simple web style development, but still get a desktop app. And to me, I think that's like killer. If you just sit down and do
that, that'd be the best. So I've got to ask the question now, gnome or KDE on your desktop?
Neither. I actually use, I just use the terminal. No, I use awesome, which, you know, it's like the
most awesome window manager ever. so it's the right name.
Awesome is, so I've got like a dual monitor thing.
I've got a laptop and then a monitor.
And with Awesome, I basically never touch the keyboard unless I have to browse a web page.
And even then, I usually don't.
So my setup is basically Awesome, Vim, and Vimperator.
So pretty much the exact same key sequences that I get in Vim,
I can use pretty much everywhere.
And then I've got terminals, and I also use Screen locally.
Screen is fantastic if you haven't actually used that.
Actually, if you're on OS X, like when I use OS X, I just use Screen.
I have one terminal open, I use Screen.
I don't use a bunch of Windows and everything.
And that's pretty much my whole setup. Uh, I, I code like a Ninja in that setup. Uh, the thing
that sucks about that setup and actually just Linux in general is just about every media you
ever want to use is awful. Like YouTube barely works. Flash barely works. Like everything barely
worked. Um, so I have a Mac that I do most of my audio music-related stuff,
and I do most of my editing and stuff with Reaper,
which is a really good digital audio workstation and stuff like that.
Well, cool. So much to look at.
I'm making notes for the show notes.
There's going to be a lot of cool links in the show notes this week.
Thanks for joining us. Thanks for taking the time.
Definitely look forward to playing with Mongrel, too. Oh, thanks, thanks. Yeah, we're doing the big notes this week. Thanks for joining us. Thanks for taking the time. Definitely look forward to playing with Mongrel 2.
Thanks. We're doing the big push
for 2.0. Right now,
it's basically what we did.
When I named it Mongrel 2,
I realized that everyone would
get a little logic error with
Mongrel 2 2.0 and
Mongrel 2 3.0. I had to
keep it that way. Basically, 2.0,
we're going to make it fancy and nice to use.
That's our goal.
Fancy and nice to use. Cool.
Thanks, Ed.
No problem. Thank you. Thanks for the interview. It was great. See it in my eyes
So how could I forget when
I found myself for the first time
Safe in your arms
As the dark passion shines