← Интервью /
Interview with Sawyer X (May 2013)
How and when did you learn to program?
When I was in junior high school there was a programming course offered off school hours. I joined it and learned some basic programming. I didn't really study with the class, I just had fun by myself. Then in the 10th grade I went on computer-oriented studies at school. We studied Assembly, C and Pascal. I actually didn't enjoy learning at school so I was behind the class. At some point I went and bought "A Book on C" and learned by myself instead of in class. When everyone else started the high school project I had already finished it. While everyone wrote a small snake game (we received a basic DOS graphics library to use), I wrote an encryption algorithm implementation cross-compiled for Windows and GNU/Linux with command line interfaces (I had used ncurses on GNU/Linux, specifically).
What editor do you use?
I currently use Vim without any plugins or special features. except its excellent syntax highlighting and a few comfortable little tweaks. I tried several plugins but eventually removed them. I find IDE configurations confusing and disruptive. When I need to hack some Perl on Windows, I use Padre, the Perl IDE. I don't really give a shit about editor/IDE wars. Use what you find comfortable, and hopefully try out new things once in a while.
When and how have you been introduced to Perl?
When I was in high school I met a hacker at hardcore punk shows who programmed in Perl. He was really cool and suggested I give it a shot, so I tried it and had a blast. Been using it ever since!
What are other programming languages you enjoy working with?
I used several languages throughout the years (notably Assembly, C, C++, Ruby and Python) but honestly, the only language I really enjoyed working with is Perl. C was fun too, but from a different direction, I guess. Perl definitely takes the cake... err.. or onion.
What do you think is the most strongest Perl advantage?
Technically-wise? Elasticity. Perl is not just flexible, it's elastic. You can move walls around, you can bend them, it's like the fucking matrix! Devel::Declare is just a reminder that literally anything can be accomplished in Perl. You are mostly limited by your own imagination.
I think what draws me and developers like me to Perl is the easiness of accomplishing things in Perl, since it just bends the world to your point of view, whatever it may be. So, if you can speak it, you can write it in Perl!
What do you think is the most important feature of the languages of the future?
Parallelism and community, hands down. At least to me.
Speed of execution is important, surely, but proper parallel execution seems to me like it's becoming more and more important. I reckon that's why Perl 6 has put so much weight on that.
Still, as much as parallel execution and speed are important, there is a limit to how involved you are when all you have is syntax. I mean, having a great language is... great, but having a community around it gives you a sense of belonging, which is one of the most basic instincts and desires we have as animals. We want to belong, to be part of something, to create for ourselves, for others, with others, and see it blossom and take shape. We want to exist and create existence. Community is exactly that. If we want a language that is sustainable beyond its technical capabilities, we need to have a good community, to make it more than just a logistical assortment of characters. It needs to be about people.
What drives you in being so active in Perl community and open source in general?
Several things do:
- I like creating. The first time I picked up a guitar, I didn't learn a song, I tried writing my own. I wanted to create something new. Open source and free software promote that idea. They say "let's make something!" - Perl is centered around that. Perl always says "don't be afraid to try, don't be afraid to fail".
- I like complaining about things and fixing them. I've become very good at pointing at things and saying "that sucks", and I'm improving at trying to fix things that suck. Open and free code allows you to do just that. It pushes you to get involved. Perl is a tremendous example of getting people involved. If you look at how many Perl programmers are working on more than one or two or ten or more projects at the same time, it's quite stunning. You get people involved in over dozens of projects throughout a single year. It's absolutely crazy. Look at rafl! He's everywhere!
- I like cooperating with people. If there's anything more motivating, it's the ability to work with others. I get to cooperate with the smartest people I've ever met. Perl has some of the greatest minds out there. The vast majority of them are pretty fucking awesome people and I'm thrilled to have met them and be considered a friend to at least some of them. There's generally something very exhilarating about working with others towards a common goal. It fills you with purpose and satisfaction.
You seem to write lots of async code. Why did you choose AnyEvent
while
everybody else bashes it?
I actually started with POE
. When I tried to wrap my head around it, a long
time ago, I went to the IRC channel and asked. People tried to get me to write
an event loop to understand it better. This one person, after an hour of me
doing random things, asked me "what don't you understand exactly?" He worked
with me for a good half hour explaining POE
, and helped me understand it.
I later found out it was Rocco Caputo, the creator of POE
.
I decided to try AnyEvent
because of its slimmer interface and better speed.
I still like POE
(and Reflex looks impressive) but it's a bit too verbose for
me. I will probably get to work on some Reflex stuff in the future though, and
I'm excited about that.
I haven't noticed people bashing AnyEvent
as much as expressing disdain for
the way the author (Marc) has occasionally expressed himself and at least one
decision to break a module that he considers misusing the AnyEvent
API. I'd
rather not get into it too much, except that I agree on some things and disagree
on others. Besides, there's a lot I don't know about it.
The only thing that troubles me is that AnyEvent
didn't pick up as a community.
I hope that will change in the future.
You've joined the Dancer project quite early. Why do you think it attracted you?
Few things: how small it was, how thin the interface and DSL were and how warm the IRC channel was. Back when I started, there were three or four people in the channel, if I recall correctly.
When I wrote my first program with Dancer
, I thought it couldn't handle CGI
(I didn't even grep PSGI
yet) and I wrote a blog post saying "too bad it
can't, it looks kind of cool". That evening I went to eat hummus with my
girlfriend and spent a few minutes checking online if someone had tried Dancer
with CGI
. I saw a post by someone saying "Sawyer wrote about Dancer
and that
it doesn't support CGI
, but it does. This is how you should configure it!" —
that was Alexis Sukrieh, who wrote Dancer
. I was pretty amazed that he saw my
post and had written an entire post back. It was so cool. That's when I joined
the IRC channel.
The ease of helping out in Dancer
and working on it with others was very
compelling. You were a part of it as soon as you stepped in, and that just made
me feel so wonderful working on it. People in the community are kind and
thoughtful, and you always feel like investing time in Dancer
is worthwhile
for the Dancer
users community and for the general Perl community.
Tell us about your role in TelAviv.pm and group in general. Do you think community meetings are important?
There had been a few organizers to Israel.pm, prominently Shlomi Fish and Gabor Szabo. After Shlomi decided to step down from organizing the meetings, I decided to try and organize it and boost the attendance. I called it TelAviv.pm because we met at the Tel Aviv university. Pretty quickly though we moved it to a place in Ramat Gan, which is 20 minutes from Tel Aviv but has its own municipality. I still kept the name anyway, since it's like a part of the larger Tel Aviv area (which is silly, since Tel Aviv is really small to begin with). I set up a crappy website (later revamped to a good website) and contacted people to give talks and gave quite a few myself as well. For the past few years I've organized the meetings, occasionally assisted by Shlomi or Gabor, who are both still active members in the community. The past few months we've decided to have each meeting organized by someone else. It was very successful. We have also successfully organized two fantastic Israeli Perl Workshops.
I think community meetings are extremely important! By going to meetings you can:
- Improve your knowledge of the language and its third-party modules
- Learn tricks of the trade
- Meet potential co-workers and employers
- Practice giving talks
- Making friends and possible cooperators
- Get free help with work or ideas you had
- Have a good time
It sometimes seems like it's not worth it, but once you start attending, let your guard down and meet new people, you begin to realize how incredible it is. It's like a free drug that makes you feel better, become smarter and better at your job without any side-effects except loss of time. :)
You tweet a lot about your git experience. What is so special about this vcs?
Git is one of the best tools for any creator, whether a writer, a programmer or even a graphics artist. Sure, there are other tools, but they all suck in comparison. Git is small, fast and powerful. In a way, it's like the Perl of version control systems.
You've visited Romania recently. What did you do there?
I had the honor of attending the Cluj.pm anniversary meeting. I gave a few talks and hung out with great people. I've written a detailed report available here: http://blogs.perl.org/users/sawyer_x/2013/03/clujpm-anniversary-meeting-report.html. In a nut-shell? Go there! Meet these people! Attending their conferences! We all have so much to learn from them!
Your talks at the tech events are very positive and energetic. What's your secret?
Thank you. :)
I guess I just think that what we have in the Perl community, both technical and social, is so fucking great, that it's hard to hold back.
There are so many exciting and fun things in Perl. When you look at other communities, at other languages, it doesn't seem like they have any glaring advantages (and many them don't have any advantages at all) but they know how to get excited about what they have. They show you some module that you know already exists in Perl for 7 years, but they get really worked up! In Perl you can write something amazing and people will just reply with a calm "cool" and that's it. We need to get worked up, we need to get excited, we need to realize how fantastic what we have is and to be ecstatic about it!
Another considerations in how I give talks is that if the talk isn't fun, you don't really learn much. It's hard to stay focused when it's just raw material. On a technical level it might be interesting, but you have to present it in an interesting and compelling manner. Look at Paul Fenwick and his talks. Can you imagine anyone not listening to him and learning from him? So of course none of us can be Paul (even Paul works very hard to be Paul), but we can do a hell of a lot more than just presenting a piece of code. We own our conferences and meetings, don't we? Let's have fun with it!
Where do you work right now? How much of your time do you spend writing in Perl? You've mentioned somewhere that you're an administrator too, is that still true?
I currently work in two companies: an e-commerce platform and a VoIP startup. I'm fortunate enough to have an amazing boss that lets me to work on a ton of Perl. I started with 50% of my time on Perl and 50% on systems administration. Once I stabilized the infrastructure, I was able to program more of it in Perl instead of chasing my own tail (which systems administrators do a lot). That way I got a stable ground and then started writing major components of the infrastructure in Perl. Nowadays about 80% of my time is spent writing Modern Perl, as part of the infrastructure and surrounding services.
At least until recently, because in June I will be moving to Europe and will be taking a different job. I will probably blog about it when the time is right.
Should we encourage young progammers to learn Perl?
Definitely! We just need to know how to be fucking excited about it. It takes time to realize why a certain solution is elegant, why a piece of code is nothing short of a work of art. Hell, it takes time for all of us to understand. Young programmers, who have even less experience, do not easily understand why Moose is spectacular. We need to be able to convey this. We need to be able to draw their interest in more than our experienced background, but in their inexperienced view. We need to speak their language and get them hooked. They will slowly learn to appreciate things from a more refined aspect, so we shouldn't worry about that now. Now, we should get them thrilled, get them interested.
Questions from our readers
Is Sawyer your real name?
Actually, No. It's a nickname my closest friends gave me a long time ago. It comes from the fictional character Tom Sawyer. There is a story behind it, but I'll keep that for another interview. :)
If you're ever unsure about calling me Sawyer, think of it this way: I always prefer to make a friend, so feel free to call me the way my friends do!
Why do you swear as 5 yo?
That was a slip of the tongue, I'll admit. I meant to say "13 year old". I guess swearing is one of the instruments I use to put emphasis when speaking. I mean, it's fucking noticeable! I also grew surrounded by trashy American action movies and profanities in Israel are generally very common, so I suppose my speaking patterns adjusted to all of that. Horrible, isn't it? :)
So, did you have a drink with Sebastian Riedel?
Not yet. I certainly hope to do so!
I got to meet Glen Hinkle who's a charming person. I hope next time I see him I'll be able to sit down with him some more and chat.
Are you going to visit YAPC::Europe in Kiev this year?
I was supposed to attend, then couldn't, and now there's a chance I might be able to attend anyway. I can't make promises because people get mad at me when I cancel, but it just might be possible for me to attend in the end. The question is how late could I submit talk proposals. :)
Interview by Viacheslav Tykhanovskyi (vti)