Интервью /

Interview with Philippe Bruhat (August 2015)

How and when did you learn to program?

I got my first computer in my teens (I was probably 13 or so). It was a TO7/70 (a French microcomputer). The only available language was a Microsoft BASIC. I remember typing in pages and pages of programs read from the pages of Hebdogiciel, a French weekly paper with printouts for every computer of the time (Oric, Sinclair, Commodore, etc.).

All back issues are online! http://www.abandonware-magazines.org/affiche_mag.php?mag=7&page=1

I also remember that in the end, most programs where actually binary dumps (in hexadecimal), with a loader. It took me a while to understand why the only letters were A to F, and why some sequences showed up more often than others.

In the end, I bough the "Assembler" cartridge, but the examples in the accompanying book were wrong, so I never went very far.

What editor do you use?

I'm a vim user, although my .vimrc is really sparse. When I started using Unix, I remember the choice was between Emacs and Vi, and someone had told me that, no matter how few utilies were available on a system, there would at least be a version of vi, so it would always be useful to learn. This is how I picked it.

For years I used vim without knowing that many commands. In 1999, I bought a vi mug on Internet, and learnt a few more tricks from it. The real breakthrough, though, was when I was told by a friend who paid attention to the mug that any : command can be preceded by an "address" and will then apply to the corresponding section of the file.

The mug seems to be still available, via cafepress: http://www.cafepress.com/geekcheat.11507711

The cheat sheet printed on the mug looks like this: http://f2.org/image/archive/vi-mug-detail.gif

I'm a terminal user. I remember putting the finishing touches on my entries for the 5th Obfuscated Perl contest in a screen session on an actual VT320 hooked to my PC via a serial cable. I still have that tty on a shelf at home, catching dust.

My first real Unix email client was Elm (my first email account was actually on a VMS machine, but I only exchanged a dozen emails before leaving for Unix and have never looked back). Then I switched to Pine, and had a short period using Eudora (while stuck on a Windows 95 box for a few months). I switched to Mutt in November 2002, and I'm still using it as my main MUA.

When and how have you been introduced to Perl?

My first Perl program ever was probably a stat counter. And I didn't write it, I just copy-pasted it. Later on (with my website getting more hits), I vaguely remember adding something to deal with file locking, so that the counter wouldn't get corrupted.

Another program I "wrote" early on was a guestbook (those were the days). I very clearly remember a very cryptic line of Perl code. Today, I'm about 99.9% sure that the code that was given to me came from the infamous Matt's Script Archive, and that the cryptic line was this one:

$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

The guestbook is still visible on the Internet Archive, http://web.archive.org/web/19970705232331/www2.ec-lille.fr/~book/goldenbook.htm and among the silly messages is the first contact I ever had with the woman who would later become my wife. Who needs online dating services when there's Perl and CGI?

What are other programming languages you enjoy working with?

Even if I agree with the popular wisdom that says we should know several programming languages and use the best tool for the job, I'm a little ashamed to say I use Perl for about every programming task.

I have written quick prototypes in Bash, but then usually turn to Perl as soon as the program gets more complex.

I have written a few simple PostScript programs, when I need to control exactly how something will look on paper. And I'm very proud to say that I have once written a whole presentation in PostScript, and that some of the slides used the rand function to draw some graphs. I also had a Makefile to recompute the slides (basically replacing a few constants at the top) so that they would always look good, no matter the aspect ratio of the projector (4:3 or 16:9).

I also wrote at least one non-trivial program in Befunge.

Obviously, to work with today's web, I had to learn some JavaScript (jQuery is cool). I have also written a few lines of Python, since it's the main language used in my team (we have this weird application where most of the work is done in Python, and the crazy bits are done in Perl).

I have a several books about programming languages I want to learn (Haskell, Erlang, Lisp), but because Perl fills all my needs, I never have enough time and motivation to actually learn a new programming languages.

What I really enjoy is the history of computing. I own many books about the history of Unix and the Internet, and I'm always looking for the "classics". One of the last computer books I read from cover to cover was "Elements of Programming Style", 2nd Edition, by Kernigham and Plauger (1978). Which means I learnt bits of PL/I and Fortran while reading it. And before that, I enjoyed "Life with Unix" by Don Libes (1989). And of course the "Unix-Haters Handbook", by Garfinkel, Weise and Strassmann (1994).

What do you think is the strongest Perl advantage?

The easy answer is CPAN, with CPAN Testers as a close second, but those are not my answer.

Perl is a wonderful programming language, but Larry's great success has been to grow a wonderful community around it.

In my view, Perl's strongest advantage is its people. The community.

I didn't consider myself a Perl programmer until I joined the Paris Perl Mongers in April 1999. I've been one ever since.

My favorite Perl interview was given by INGY in August 2004. I still get goosebumps where I read the last paragraph, the last sentence of the interview: "But in the final analysis, it's the Perl community that keeps me around. These people are my weird looseknit family. Perl attracts a certain type of people; these are my people."

INGY's interview: http://osdir.com/Article1534.phtml

What do you think is the most important feature of the languages of the future?

The ability to use the multiple cores of a CPU without the need for forking and IPC. And then, good networking on top of that ability, to grow your computing power further. "Big data" has pretty much become a buzzword nowadays; I know a few people who are deeply involved with that at work, and clearly, on the technical side, any sufficiently successful project will end up with one single issue: scale.

Success, when you're dealing with the Internet, means that whatever you're dealing with can grow by a few orders of magnitude in very little time. If you don't want to drown in your own success, you'll need tools that can keep up with the growth. In some areas at work (a very very successful Internet company), we've reached the limits of Perl 5.

What are you thoughts on Perl 6?

I'm old enough in the community to have been around when the Perl 6 project was announced. I remember the excitement, the RFC process. I remember hearing about mugs being thrown at a wall (but not the Wall!). I remember Dan Sugalski leading the Parrot project.

I've tried to learn Perl 6 when Pugs was hot, but never went farther than a few examples.

I've followed Perl 6 progress from afar, knowing that one day I'd have to actually learn it. I very much like how Larry presents Perl 5 and 6 as siblings in the Perl family of languages. (Also, have a look at his "State of the Onion" talk from 2006 about families: http://www.perl.com/pub/2006/09/21/onion.html)

I love the Perl 6 logo, the butterfly, and its name, Camelia. (And how this name is tied to the name of the Perl 5 camel, Amelia.) I also love the fact that this logo pisses off "manly" programmers (should I say "brogrammers"?). I don't think Larry should present it as "appealing to seven year old girls", though, because in my opinion stating this is reinforcing the stereotypes he wants to go against.

I wanted to go to FOSDEM for years, but never managed to fit that in my schedule. I finaly went this year (although I spent less than 24 hours in Brussels including the time spent travelling there), just to hear Larry's announcement about Perl 6 coming out in 2015.

A few weeks ago, I started to try and program in Perl 6 again, this time with a clear goal: to port one of my Perl 5 modules to Perl 6, and blog my journey, the journey of a fairly experienced Perl 5 programmer trying to write a real module in Perl 6.

What are you doing for YAPC::EU Foundation and why?

I'm one of the co-founders of the YAPC Europe Foundation. In 2003, right after the YAPC Europe in Paris, the organisers from the past four YAPC Europe (London, Amsterdam, Munich and Paris) gathered together in a bar to discuss the future.

YAPC Europe had taken a life of its own, and didn't need the people from YAS (Yet Another Society, the non-profit that later became TPF), who were an ocean and several time zones away, to help the European community organise its conferences.

The Paris team had set up an online payment system connected to our web site (which was rewritten the year after for the first French Perl Workshop, and named "Act"), and we wanted to make this available to other Perl conferences, so that the work and money that went into that payment system would not be lost.

Because the team was international, the organisation was registered in the Netherlans as a Dutch Stichting, with a bank account in France (to keep the same bank and online payment system we used in Paris). And our first chairman was German.

The YAPC Europe Foundation (http://yapc.eu/) has two main roles: selecting the organising team for the next YAPC Europe conference, and managing the online payment system. This online payment system is actually offered for free to the Perl community, since YEF is paying all the bank fees. The entire YEF budget comes from donations, and is spent on the online payment costs and the kickstart donations to various Perl conferences. http://www.yapceurope.org/finance/kickstart.html

In 2008, I took over the treasurer role, because our previous treasurer didn't have enough time for the Foundation any more. So I'm the one who's sending the money paid by the attendees to the organisers. Since 2005, YEF has helped close to €350,000 to flow from the attendees and sponsors to the organisers of 45 Perl conferences.

Where do you work right now, how much time do you spend writing Perl code?

I work at Booking.com mostly remotely from Lyon since March 2007. The company has grown by a factor of at least ten (and sometimes much much more than that) on absolutely every metric since then.

I write Perl most of the time (I'm still a developer), in a team where most of my colleagues swear by Python. My current project uses Moo (for a while I used both Moose and Moo, and then factored Moose out), Dancer and DBIx::Class. Because the project has a web interface, I also write some JavaScript.

Should we encourage young people to learn Perl nowadays?

I can't find the exact quote from Larry, but he explained once that Perl is more likely to be the last programming language that someone will learn, rather than the first.

People should definitely learn some Perl, in addition to all the other languages in their curriculum. Everyone says, people should know more than one language, and the best time to do that is when learning to code. Teachers should teach as many languages as possible, in as many paradigms as possible (imperative, declarative, structured, functional, OO, etc,) so that their students can understand the differences and similarities between them.

And then the students can discover Perl and mix everything together.

Questions from our readers

How did you decide to collect in one place all the perl secret operators?

I've been hanging around on the Fun with Perl mailing for a long time, and this is where José Castro started to ask for the names of the most famous secret operators for his OGSOP (Obfuscation, Golfing and Secret Operators in Perl) book project. I came up with the name "baby cart" for @{[]}, and I loved that name so much that I wanted to make sure it would be the one that everyone would use. The only way to do that was to write the reference manual myself...

I also did a few presentations about the Perl secret operators in 2008-2009 at various Perl conferences. And I naturally started to collect them.

So I had this outline for a "perlsecret" manual page (modeled after the "perlop" manual page) sitting somewhere in my projects directory (the oldest version I could find was from 2010) and someday I decided to finally work on it. My other goal was to get it included in the Perl core documentation, but it turns out that making a reference to "Goatse" is not a desirable feature for a core manual page.

Git::Repository uses git command, would there be any advantage in using libgit2?

The fact that there is no libgit is a big issue with Git. That means that the only way to keep track of git and all of it options and subcommands is to run git itself. (A little bit like only perl can parse Perl.)

Speed is not really the issue: git is extremely fast, and the cost of forking would still exist in a shell script running the same commands. A program using the hypothetical libgit would probably be faster than a shell script chaining git commands, but I doubt another library (like libgit2) can be faster than git itself for doing git operations.

Git::Repository is wrapping repositories in simple objects that provide all the context needed to run git commands. For me, the benefit of using Git::Repository is the fact that I can work with multiple repositories without having to worry about the current working directory. It was also explicitely designed to be able to run any of the 128+ git commands, and deal with a stream (of any size) produced by Git.

There are some bindings for libgit2 on CPAN (Git::Raw), but I never used those. One of the things I read about libgit2 is that the objects can be stored in more than just the git loose objects and the git packs. This can be useful when dealing with git objects at a large scale (like GitHub does).

Why pink?

This is a long story.

I've been wearing pink at Perl events for a long time. I've had some Perl conferences (and not just the French ones) make a pink version of the conference shirt just for me. I own one of the only two pink Perl Dancer T-shirts. At YAPC in Pisa, Nick Clarck and BinGOs impersonated me by wearing a pink shirt. At work, some of my colleagues demand that I wear pink, or at least ask in a demanding voice why I'm not wearing pink (when sometimes I'm not).

Here's the story of why I wear pink shirts. Back in 2001, during the YAPC Europe conference in Amsterdam, a small group of French Perl mongers thought: "why not organise a YAPC in Paris?". Then we went to a meeting with Kevin Lenzo (from YAS) and the Amsterdam organisers, to talk about the next YAPC. To our surprise, there was another team willing to organise YAPC Europe in 2002. In the end, it was decided that the first team to be ready would get the next YAPC. It turns out the Munich team was ready first. And therefore we had two years to prepare for our YAPC.

Back in 2002, auctions were still pretty popular at YAPC conferences. During the auction at the end of the Munich conference, many silly items (a Perl 6 opcode, a Perl 5 optimization, Schwern's pants, a topless arm-wrestling contest between Schwern and Damian Conway, ...) were sold. Remembering the fight between factions of London.pm (the regulars and the heretics) over the date of their monthly social meeting during the Amsterdam auction, I hoped to re-create such an epic fight by offering the colour of the organisers shirt for the YAPC in Paris (everybody knew it would be us, so there was no competition this time).

My idea was that Léon Brocard would bid for his favourite colour (orange) and that some faction of London.pm would gang up against him for some other colour, and that lots of money would be spent. Alas, it turned out that the British like to tease the French more than themselves... Greg McCarroll bid for pink, and it went quickly for €100. Some of the Paris team started to get really angry at me very quickly...

I decided to turn the joke made at our expense into a marketing trick, and we made pink the official conference colour. The web site was pink (see http://conferences.mongueurs.net/ye2003/coming_soon.html and http://conferences.mongueurs.net/ye2003/, the flyers were pink, the organisers shirts (all 12 of them) where pink.

The year after, at the auction in Belfast (a story to be told some other time), I realized that "pink is us" (the French YAPC), and later on started to use pink as my distinctive colour (since none of the other French guys wore their pink shirt ever again). And I have done so for the past ten years or so. This is usually how people recognize me at Perl events.

The sad moral to this story is that one does not need to be a brilliant coder to be recognized at a Perl conference (I don't claim to be either brilliant or famous), one just need to do something stupid and stick with it.

I actually like wearing pink, because it's also, in a small way, a way to stand up against gender stereotypes. I'm quite happy that my two daughters think that pink is dad's favourite colour (it's not really), rather than a girl's colour (Colours should not be gendered! Everybody should be free to wear whatever they want!).

Interviewed by Viacheslav Tykhanovskyi (vti)