Интервью /

Interview with Christian Walde

How and when did you learn to program?

That actually started very early, when i was given an Amiga in 1991, at the age of 8 years, and started messing around with its CLI and ARexx. Not much but playing around came from that, but i learned more later on, especially due to the games Clonk and Starsiege: Tribes, both of which implemented a lot their game logic in a C-like scripting language and were hilariously customizable. (Tribes had addons released that allowed the player to play Tetris while sitting on a hill waiting for sniping targets to come by.)

Later on in College i did PHP in private projects, while also doing C++ and Bash courses. In February 2005 i was then asked by random chance on IRC to help someone fix their forum (it was an affair sort of like 4chan) because they had managed to trash their SQL database. Luckily i had by that point mastered the fine art of reading error messages and googling them. In short order i was digging around in my first perl software and quickly got the site back up.

As a result of that i was handed the root password for that machine, which i still have, and had at my disposal a website with 20000 visitors daily, written entirely in Perl and MySQL. Using that and the help of nrr ( twitter.com/nrr ) on IRC i started learning Perl. About three years later i wrote the first Perl software i got paid for (a small tool to help in the translation job i was doing then), and another year later i was hired for my first serious Perl developer position (with a bioeng group looking to analyze and improve potatoes).

In short: I learned programming my entire life from the point i was given my first computer and learned the most of it in the least time when i made heavy use of IRC.

What editor do you use?

Mainly Komodo IDE. It is my main Perl editing tool because it combines in one single package a fully capable editor, a visual debugger for Perl and other languages (think Visual Studio), PerlTidy, PerlCritic, Perl syntax checking, a Regex debugger, a project manager, grep and most importantly, sane defaults. I can get many of these in other editors too, and have seen other people with these tools in their editor, but for me Komodo remains the only choice because it has all these things out of the box and requires no tweaking to be useful and only minimal tweaking to be comfortable.

In tandem i do also however use Notepad++, as it is very lean in memory and CPU, remembers everything opened in it even through crashes and simply provides the fastest low impact tool for simply munging a text file. Incidentally it also has the best syntax highlighting settings for Perl, which i've since then copied to all of my Komodo installations and adapted for every other language i edit often.

When and how have you been introduced to Perl?

Err, see above. :)

What are other programming languages you enjoy working with?

I do enjoy working with Javascript because it can do some useful things and there is no happier time in my day as when i am done with a JS file and can finally put that abomination of a language out of my mind again for a while.

Aside from that i do enjoy dabbling in graphics programming which means messing around with C and GLSL. I don't think i need to lose words about C, but GLSL merits special mention since it is a language that is superficially C-like, but requires special thinking since every program written in it will run on hundreds of microcores, not only in parallel, but in lockstep. That means things like if/else trees waste processing time instead of saving it. That pleases me.

What do you think is the most strongest Perl advantage?

As for the language, CPAN. It is the highest quality third-party library archive available for any language, due to the massive ecosystem of quality assurance tools that have sprung around it any which seek to prod the authors to make every library the best it can be by mercilessly pointing out and collecting their problems.

As for the perl executable itself, its biggest strength as far as i can tell, is that almost all of its features are implemented in a way that's convenient enough to do basic things when you have only the executable, but still low level enough that it is easy for CPAN modules to make the language amazingly easy to use. (See: Moo, IO::All)

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

Humanity and parallelity.

Perl is already really good at the former. It is a language that is not a calculator. It is a language you read, write, speak and think in. Not only that, most of its uses come intuitively if you know enough English. Languages need more of that. Language designers need to make programming languages feel more natural to humans. Average humans.

Parallelity is the second bit. Technology is running into a wall when it comes to CPU performance. It's become hard to force single cores to be faster. That means we will need to learn how to distribute tasks of a single program to multiple cores, which means in turn that languages need to make this easy. I hear Go does it well, i know Java does it really well. However scripting languages like Python and Perl quite dropped the ball on that and need to catch up.

What is wrong with language popularity indexes? And how can we fix them?

At a very high-level layer: They do not answer a question that is useful to humans. One might ask "Which language is more popular?", but why does one ask that? Does the asker with to know which language will provide them with the biggest paycheck? The most secure paycheck? Which language will put them at the front of innovating technology? Which language will leave them happiest in their day-to-day work? These are the things people care about, but which popularity indexes do not answer.

Further, most people are not properly equipped to properly read and understand the output of popularity indexes. Simply looking at Google Trends requires enough knowledge of statistics to understand why a line going downwards can still mean that the number of users of that language is growing. Similarly, looking at TIOBE results requires understanding why languages with names that are similar to other things do better exactly because of the method TIOBE chose to prevent this similarity from skewing results. (To be clear: Their method simply creates a different kind of skew.)

How they can be fixed? Honestly, i don't think they can. The people who create them and use them to argue points are happy about the fact that they are inaccurate because it permits them to claim things that make them happy, or more perversely, cause people to click their links a lot and increase their advertisement income. To fix them requires fixing the entities they are using to generate their numbers and in practice this seems to be like tilting at windmills.

The best thing i can tell people who are concerned about this thing is what Getty said in his talk Moving the Needle ( https://www.youtube.com/watch?v=VFJ672tpRG0): Use your time not for useless things, but to make things that you want to use and which others will want to use.

Why do you still use Win32 and how is Perl doing on the platform lately?

As mentioned with the editors: Sane defaults. But also: The Amiga.

I started as a child on a computing platform that already provided almost everything the modern Windows desktop has. ( http://www.gregdonner.org/workbench/images/wb_13.gif) Unlike people who started on *nix or DOS i had as input devices both the keyboard and the mouse available to me from the very start and to this day prefer environments where for every task i wish to do, there is a way to it with both the keyboard and the mouse, allowing me to things in the manner most convenient to me at the time of doing them.

As for sane defaults: Windows has, since Windows 2000, had remarkably little change in the actual user experience. While the colors may have changed and machines became more powerful, little has changed about the way things are used. That means many app developers follow similar conventions. Additionally, due to a little bit of perversity in the human mentality, closed source development seems to result in software with slightly more sane defaults. On *nix developers often seem to take the tack of "Want this? Well you can implement it on your own.", thus absolving them from making the software fit the needs of others, while the authors of closed source software do not have this shortcut available.

As for how Perl does on Windows: Perfectly fine. There are many people who mainly use *nix-based platforms and have little practical experience with Windows or Perl on Windows, but will gladly spread their thus-gained prejudices as fact. In practice however almost all CPAN modules work fine on Windows, and the only occasional breakage comes from someone forgetting to mark their binary data streams. Nowadays all Perl distributions for Windows come with their own compiler, making it effortless to install XS modules, and will often also come with trickier modules pre-compiled. With ActivePerl, Strawberry Perl and DWIMPerl there is plenty of choice for those who need a Perl for their corporate environment, those who need a basic open source Perl and those who would like to have (almost) all the modules already installed out of the box.

Why did you start perl-tutorial.org? What is its main purpose, why was it needed?

In the summer of 2011, the first hit on google for "perl tutorial" was a Perl 4 tutorial. The rest of the results were of similar quality. This meant that people learning Perl had an extremely high chance of learning outdated Perl and missing out entirely on all the positive changes Perl as a language has had since 2000.

However the correct solution was not to write a tutorial. We had gotten into this situation because Perl has been around a long time and older tutorials have considerably more google juice that modern and recent tutorials. http://perl-tutorial.org fixes that by being a publically editable wiki that tracks tutorials and puts the most recent ones at the top, maximizing the chance that even in ten years someone clicking on that link won't find a tutorial aimed at Perl 5.12.

Are you playing any role in organizing German Perl Workshops?

Only incidentally, honestly. We have an active Perlmonger group here in Hannover (which was started by finding other Perl developers from Hannover at YAPC::EU 2012), and some of them were really gung-ho about the whole thing after being at the GPW 2013 in Berlin, so they decided on the spot to host the next one in Hannover. The other people in the PM group did the bulk of the work like finding the venue and with help of Frankfurt.pm setting up all the legal details and doing the talk time planning, while i mostly did odds and ends, like helping out at the venue, or sponsoring 102 plush camels for the goodie bags for attendees.

Where do you work now? How much of your time are you writing Perl code?

For the past 2.5 years i worked for Profihost.com here in Hannover, mainly writing the code for the backend of their website and guiding other developers at the company while they learn Perl. Recently i've switched to working freelance, still doing work for Profihost, but also looking for other work to spice things up.

That covers the for-pay part of my day. The rest of the time i spend on open source projects, either fixing things on CPAN that i see broken recently on my smoker, or implementing things on CPAN modules that i want to use, like the recent improvements to io layer handling in IO::All. I do however also spend a lot of my time on private projects, like this 3d viewer for Dwarf Fortress ( https://github.com/wchristian/lifevis) ( https://dl.dropboxusercontent.com/u/10190786/DF/perl%202012-06-12%2003-07-39-88.jpg https://dl.dropboxusercontent.com/u/10190786/DF/perl%202012-06-12%2003-08-30-52.jpg ), this OpenGL shader toy (https://github.com/wchristian/perl_shader_toy) ( which makes things like this: https://dl.dropboxusercontent.com/u/10190786/your_perl_on_drugs.avi) or more recently https://github.com/wchristian/Microidium a WIP multiplayer asteroid-like game, inspired by the excellent Luftrausers; which also allows me to work with SDL and build on a game framework which other people can use to make games.

In short, pretty much ALL of my time is spent on Perl.

Should we encourage young people to learn Perl right now?

Absolutely. Even if they won't end up using Perl in their work life later on, whether by choice, or by circumstance, they will end up being exposed to concepts that no other language possesses, especially if they learn Modern Perl.

Do you enjoy Perl workshops and conferences?

Immensely. Even if i don't learn anything new from the talks (i do), even if i don't meet any new people to connect with (i do), even if i don't meet newbies whom i can teach a lot of new things (i do), even if the evenings in the pubs aren't invariably amazingly fun (they are), i still go home from one of these with a page full of notes about things to do and look into, and most importantly: Extremely motivated to do things. There is nothing that motivates me more to get some code done, than to spend a weekend at a conf or workshop.

What is the best beer for connecting Perl developers?

Without a doubt belgian beer! I come from Germany, which is said to be the country of beers, but to be honest, all people make here is boring bitter water. I hated beer until i learned about belgian beers and found subsequently that they are the optimum for social gatherings like this, since they cater to every possible taste. Even if there's someone in your group who normally doesn't drink, they might be glad to experience the almost non-alcoholic fruit beers; for the finns or other heavy drinkers, there are the triple-brewed 10%+ Gulden Draak 9000. In between there's a variety of beers of different tastes, including the Gueuze style beers, which are sour instead of bitter.

That said, if you don't have those available, the british palette with plenty of Ciders is almost as good.

Interviewed by Viacheslav Tykhanovskyi (vti)