Interview with a Perl developer

2018-03-14 12:55:37 admin Perl Interests Interviews 0 Comments

Today we’ll have a chat with John. C. Norton, a Perl developer and Linux enthusiast, about the state of Perl, his experiences in the business and some of his side projects. 

BIP:

How long have you been working in Perl and how did you two “meet”?

J.N.:

I started with Perl in 2000, when I switched jobs to work for a company that needed a principal tools engineer.  They were big on Perl, and were willing to have me learn it "on the job", which is always the best way to learn a new language (by doing something meaningful in it).  Prior to that I was a C programmer, using csh or tcsh for scripting tasks, but very quickly became a fan of Perl's power (over other "scripting languages"), its minimal development time (over C) and its incredible expressiveness.  One thing I've always been amazed at is how tersely Perl can be written, and still be legible.

BIP: 

What’s your current IDE and why?

J.N.: 

I'm actually not a huge fan of IDEs.  I guess you could call me "old school" in that way.  For one thing, I prefer my own editor "vim" over any editor where I have to switch between keyboard and mouse.  I'm also not a fan of the Perl debugger, though I know many people are. If you saw how I debug, you'd realize it's a series of quick changes, followed by testing those changes, and then fixing bugs as they occur, which IDEs and debuggers always seem to slow down.

BIP: 

Have you worked with other languages in a significant way? How do they compare to Perl?

J.N.: 

Other languages than Perl -- here's where I'm going to show my age ;-)  I started with something called "FOCAL" in high school on an old teletype (complete with a tape reader!), and moved on to Basic, FORTRAN and assembler in college (my freshman year was the first year the school stopped using punch cards!).  I learned Pascal in college, my introduction to structured programming languages, and was amazed at its power over Basic.

After graduation, I did a lot of Basic and assembler-based programming on my first home computer, a Commodore 64, where I wrote a really cool implementation of Conway's "Game of Life" in 6502 assembler (it had graphics, music, and user-definable rules).

My first computer job in the early 1980s was writing mathematical algorithms in a company-proprietary language for recognizing handwritten characters on a computer tablet as an alternate input device to a keyboard.  It was there that I learned C, but I became much more proficient at my second company, which for the most part was filled with old-school FORTRAN programmers.

A funny story about C vs. FORTRAN-- the head of Engineering (himself a strong FORTRAN programmer, but new to C) gave me a small project involving reading records from a file.  After thinking about the problem for a few minutes, I realized it would be so much easier in C, which was better at parsing files, and I had a working result very shortly. The manager was blown away by how quickly he had a working program, and for the next few weeks, every time he gave me a task, would ask jokingly within a half hour: "Did you get that program done yet?"

The C language served me well, but for ease of development it doesn't compare to Perl, which is comparably fast in most respects that matter (eg. file I/O).

BIP: 

What would you recommend to someone new to Perl?

J.N.: 

For a beginner in Perl, I would recommend picking something that fascinates them, and then doing it in Perl.  I've had a lot of fun on Perlmonks writing obfuscated programs (because I love a good puzzle, and it actually taught me a lot about Perl's syntax), but I've also written a lot of programs that had to do with personal interests, whether it was foreign languages and alphabets, music, chess and problem solving, plotting GPX data, web programming, or whatever.  The key is to find something you love, and then explore that to its fullest.

For example, I've created  my own alphabet,  which combines my love of linguistics and web programming.  Go on Perlmonks and ask questions. Get friends involved and work on things together.

BIP: 

What are your typical learning and problem solving resources?

J.N.: 

For resources, nothing beats Google and the input from other people who have had similar challenges.  Perlmonks is also a potentially great resource (though less so perhaps in recent years with the rise in arrogance and lack of common politeness).

It’s also highly beneficial, in most cases, to try to solve something yourself, because I’ve found that the more effort you expend at learning, to more you will remember what you’ve learned.

My last couple of jobs gave me access to colleagues with a lot of Perl experience, and it's been fun to be both a mentor and a student at the same time.  Never be afraid to ask someone else for their input; you may be surprised at what they have to offer.

BIP: 

If Perl were a superhero what would its superpower be?

J.N.: 

Perl already IS a superhero :-D ...  It's all about getting things done, with speed, maintainability and fun, and Perl does those things  amazingly well.

BIP: 

Have you tried Perl 6?

J.N.: 

No I haven't tried Perl 6 yet, for mostly the same reasons I haven't learned Python or Ruby (or some other language) -- Perl still serves me well for the things I want to do day-to-day, and it would take significant effort to learn something else.  I'm sure at some point I'd love to learn Perl 6, but for the projects I'm working on *right now*, nothing is as enticing as Perl 5.x.

BIP: 

How do feel the state of Perl is at the moment, in terms of how much companies and developers are using it compared to the trending languages?

J.N.: 

I'm disappointed at how many companies don't recognize Perl's beauty and power.  A lot of people complain that "Perl programs are ugly", but I've found through experience that you can write bad programs in any language, including for example Python, where the mindset is much more "there's only one way to do it" (which drives me crazy).  And although I love a good obfuscation, when it comes to style I write very clean code (imho), and never hesitate to use comments.

BIP: 

One of the most recognizable things about Perl is the community and the conferences behind it. Do you get a involved in these endeavours?

J.N.: 

I do get involved to some extent, although I would love to do more.  I've written a couple of modules for Cpan, but would like to contribute more to it in the future.  We probably don’t have as many community resources in my area as in some other countries. I would love for example to attend some Perl conferences in Europe, the next time I get over there.

BIP: 

From your experiences, where do you think Perl fits best, regarding industry or field?

J.N.: 

Perl can really fit in just about anywhere.  It depends on management buying in to using it over other languages, which happens more and more when people don't realize the "hidden costs" of doing so.  For example, I'm often amazed at how badly many students of Java are at programming, and I think for the most part it's because they learn it in school and learn the common idioms without understanding the underlying architecture of the computer (eg. simple byte manipulations).  Too many companies think Java (or C#, or Python, or XML, or ...) will solve all their problems, without realizing the potential overhead involved. I've worked at places where the solution to any problem was always "write another Java daemon to handle it", without regard for the huge memory footprint they were incurring.

BIP: 

Over the years, what was the most challenging Perl job or project you had?

J.N.: 

I've had a lot of very challenging (and thus rewarding) projects. One that comes to mind was a Gateway or Bridge between my company in the US and our parent company in France, for managing bug tracking between two very different systems (Bugzilla and Clearquest).  I was allowed to design (and implement) our entire side of the Gateway, and took great pride in constructing a message-passing system that included XML messages, logging, mySQL database transactions, web-visible management and tracking, and changes to the Bugzilla source code (which was itself written in Perl).  (If I'd known at the time how much easier JSON is than XML, that's the one major thing I would have done differently).

BIP: 

You have quite an interesting side project built in Perl. How did that come up?

J.N.: 

 You're talking about my "Polyglot Project".   I've always been fascinated by foreign languages, and can speak reasonably good German, Japanese and French (and to a lesser extent a few others).  I decided it would be fun to learn how to say one sentence:

"When I wake up in the morning, your beautiful smile is the first thing I want to see

in as many languages as possible, and I'm currently at 20 languages memorized out of the current total of 75. This project has also helped me improve my skills in CGI, HTML and Javascript/jQuery programming, all of which I do on my self-maintained Linux webserver.

 By the way, I am always looking for people to help me with this project, both with checking the grammar of languages I’m unfamiliar with, and providing voice recordings for those languages which Google Translate either doesn’t provide, or only gives a low-quality “computer voice”.  Even if I have a recording, it’s always good to get a native speaker to create the recording directly into a computer microphone or iPhone for the best results.

BIP: 

I saw that you also built a few games in Perl a while back? That’s quite the combination, Perl and games.

J.N.: 

Yes, I have written a few games in Perl.  But for me, the art of programming and problem solving is even more fun.  It's as if the crafting of a program is *itself* the game, and that's the addicting thing.  A good game can be fun to play, but equally rewarding can be adding or improving features of the program behind it.

Leave a comment


0 Comments

Subscribe to our newsletter!

Make sure you never miss the interesting stories of Perl startups, apps and projects.