Brian Foy

SE Radio 432: Brian D Foy on Perl 7

Brian D Foy, author of Mastering Perl and Learning Perl 6, and the co-author of Learning Perl, Intermediate Perl, Programming Perl, Effective Perl Programming, and others discusses Perl 7, why it is needed and what it enables for the future. Host Gavin Henry spoke with Foy about Perl’s history, what Perl is, Perl 5, Perl 6, things you need to do to prepare for moving to Perl 7, what’s staying, what’s going, what’s changing, what was learned with Perl 6, Bareword filehandles, Subroutine Signatures, Prototypes, Indirect objects, Multidimensional array emulation, CPAN, METACPAN, Larry Wall, and how to get started if you’re not familiar with Perl at all.

Show Notes

Related Links


Transcript brought to you by IEEE Software

Gavin Henry 00:00:52 Welcome to software engineering radio. I’m your host. Gavin Henry today. My guest is Brian Foy. Brian Foy is one of the most fulfilling authors in the pro programming community. He’s the author of mastering peril and learning Perl six and the coauthor of learning Powell, intermediate programming effective Pope program. And not that you get the idea. It helps people and companies use Pearl through education, training and consulting. And his latest book is about preparing for pro seven. Brian, welcome to software engineering radio. Is there anything I missed in your bio that you’d like to add?

Brian D. Foy 00:01:05 Oh no. I think people who interview me know more about what I’ve done and then I can remember, I think you got most of it. There’s obviously a lot of stuff online that you probably aren’t aware at all, but there’s lots of good things to choose from there.

Gavin Henry 00:01:35 So that’s great. During the show, we’ll be talking about Paul’s history, use cases, successes, and what it’s like now with the rest of the show, talking about Pearl seven, I’d like to start with an overview of where Pearl came from when you would reach for it. So what is Pearl? Is it like any other programming language?

Brian D. Foy 00:01:53 Well, geez, you really have to go back into history to, to think about this. So the short story is that Pearl started as a sort of a pet project of Larry Wall. He was doing some stuff to coordinate a bunch of machines as a CIS admin and some of the tools you were using, wasn’t really cutting it to his satisfaction. So he started cobbling together, this other thing, and he was taking bits from arc and said, and see, and all sorts of other things to make this tool that worked for him.

Brian D. Foy 00:02:23 Uh, he released it. I think it was a 1987 on one of the Usenet groups, if anyone remembers what those are. And then from there other people got involved and they started using it. And they added in Henry Spencer’s rejects engine. So, and that’s where Pearl really made it reputation is, is this text processing stuff from there, went on to Pearl three was really popular. And then when they had it popular enough to make a book out of it, they bumped it up to Pearl four. And that’s where that first learning Pearl came from Larry Wall and Randall Schwartz really kicked this stuff off. And at that point we were going through the dot boom. This was, you know, late eighties, early nineties, people were doing all sorts of stuff to get their information onto the web. And Pearl was a great way to do that. It didn’t require a lot of learning or experience to do very simple things. And people are really attracted to that.

Gavin Henry 00:03:15 That’s one of its famous sayings. Isn’t it about things being simple.

Brian D. Foy 00:03:20 Yeah. In fact, I think that’s on the cover of one of my books. It’s the make the simple things easy. And the hard thing is possible. It was talking about this idea that if you do this all the time, you shouldn’t have to type that much to do it. And if there are some things that are really tough, they should be tractable. They should be workable. You shouldn’t have to spend a whole lot of time working on something and for the casual programmer or the baby programmer, which a lot of people talked about at that time. That was perfect. And if you’re looking back on this now you’ve got to imagine that this is before something like PHP existed, which people often think is one of Pearl’s competitors, but it was the it’s now the tool that is sort of filling that gap where I just want to put this little, teeny bit of text right here. And I don’t care about anything else with programming, but you know, that used to be a really hard to do. And it was really hard to do before Pearl.

Gavin Henry 00:04:12 Uh, at that time there wasn’t many languages that came with a PCR a Unix distribution was there,

Brian D. Foy 00:04:19 Oh geez. The pain. I remember having to install things on a new machine like today, you can just spin up a Docker and put anything you want on it practically for free, almost no investment in time. But back then, if you installed an operating system, you got this very bare thing. And then you had to say, okay, well let’s look at my notebook and see what I want. Okay. How am I going to install this? How am I going to install this? I remember I would actually buy a CD from a third-party vendor of all the stuff I wanted on my Solaris machine. Uh, it was already pre-packaged. I mean, now you just get that from your package manager. It just sort of comes with it. But I don’t remember what else I was using at the time. Uh, I was a scientist, so Fortran was a big thing and that’s still a big thing. Isn’t it? That’s um, well, yeah, you don’t want to change the programs cause nobody knows how they work.

Gavin Henry 00:05:08 Yeah. The kids did. They didn’t know how easy they’ve got it. Do they?

Brian D. Foy 00:05:11 We just get to harder and harder problems. Uh, but Pearl was revolutionary for its time and the way it handled things in the way, it, it was more for the masses and for the people who are going to do this every day, all day.

Gavin Henry 00:05:24 So I think you’ve touched on the fact that it can be simple for those. I want it to be simple, but it can stay with you and grow with you. That’s the sort of message I’m hearing.

Brian D. Foy 00:05:34 Yeah. It’s the more you get into it, the more power you have. Uh, but you don’t have to get all the way into it just to get a little bit of power, not to throw a Spurgeon’s on any other sort of language. But one of my friends is learning Haskell right now and that’s, you have to do quite a bit of work in and sort of buy into a whole lot of stuff to be useful in that language. But that’s fine. That’s the way they’re doing things. And that’s the way that thing is set up. Pearl, not so much here. You can read this book in a day, you can be writing programs that might be solving some of your small problems, and then you don’t have to think about it so much. We don’t particularly care if you are a full-time Perl programmer.

Gavin Henry 00:06:15 And it’s one of a handful of languages that come with your Linux distribution or has it come on Marco ass?

Brian D. Foy 00:06:22 Well, Pearl comes with the Mac as does Ruby and Python. But Apple has said that they’re going to try to get rid of the scripting languages as part of the default install, which I think makes sense for them. They’ve been swimming down there, their core installation and stuff like that. I don’t know how that’s going to shake out for people who just assume that it’s there. It’s very easy to install Pearl as well as Python and Ruby, if you want it, but you have to know that you want it. Uh, people might be running programs and they don’t even know what the language is in. So we’ll see how that goes, but I’m sure there’ll be some way that at least the Perl community will respond to that and make that really easy for those people who, who suddenly find it’s not there anymore.

Gavin Henry 00:07:05 Does it come with its own interpreter compiler? How does that language actually work? Does Pearl.

Brian D. Foy 00:07:12 So if we just start from sort of the bare metal, Pearl is a as an interpreter and a compiler all at the same time, I don’t want to get too technical with that. Basically you write a program in a text file and we don’t particularly care what editor you use or we don’t make you use an IDE or any sort of particular environment. That text file is given to this thing. We call the interpreter. But what it really does is two things. It’s going to go through your program and look at it and make it into some sort of intermediate representation and NASA point. We’re going to find out about all your syntax errors and other sort of wacky things. And then once it’s done that it, and it’s had a complete look at everything that you’re going to do. That same program is going to then run whatever you’ve told it to do.

Brian D. Foy 00:07:57 So this is all sort of happening in one step for the people who’ve been around, they might be used to something like a Java where you compile something and you end up with some, some stuff. And then you hand that stuff to something else to actually run it or pass it around and someone can run it without the compilation stuff. We don’t have that in Pearl. It’s the same thing that does the interpretation and the running, which means you need Pearl somehow to actually run the program. There’s various ways that people have come up with, to package Pearl, if you want to distribute it and you don’t know if they have it or not. Um, but for the most part, that one thing we call the Pearl interpreter is handling both of those.

Gavin Henry 00:08:40 And that’s generally parallel with a lowercase. P is the interpreters.

Brian D. Foy 00:08:46 This is uh, a funny bit of history. There’s when we talk about Pearl, the language, we mostly use an upper case P then P a lowercase E lowercase R lowercase cell. It hasn’t always been that way. If you look back at the first books on Pearl learning Pearl and programming Pearl, and these had the pink covers, these were some of the first or Riley nutshell books. They both had lowercase, Pearl, the whole word on it because it wasn’t until later that I think Randall Schwartz decided that he was going to distinguish between the two there’s a language, which we’re going to make this proper noun, uppercase, P Pearl. And then there’s any interpreter, which is this the name of the program that sits there on your computer and does things. And since most programs have all lowercase names, we’re just going to call that all lowercase, Pearl, which is one of the tougher things to do when you’re writing about parole like Randall and I have done in many books and I’ve is decide which of those fit, what you’re trying to say. When you say parole, are you talking about the language or are you talking about it, this specific action of this thing, that’s going to run your program? Sometimes it’s not so clear, it’s actually sort of surprising.

Gavin Henry 00:10:00 Thanks. Um, you mentioned para lower case P E R L as an interpreter on Cambia compiler, but doesn’t it have a virtual machine element now? Or is that in another part of the language? Where do we say it?

Brian D. Foy 00:10:17 No, I, there might be something like that behind the scenes, but I’m not aware of it. I’m not much of an internal guy, so how they actually get things done behind that thing. That’s, that’s called Pearl. I’m not entirely sure. It, it’s not something like where you have to have a complete world for it. Say like small talk or some of these other languages that just want to know everything that’s happening. It’s, it’s basically something that you can run on, you know, Unix, windows, Mac, something like this, just straight on their, their stock operating system and get your results.

Gavin Henry 00:10:50 Um, I was kinda meaning the, I think it’s the power VM for Pearl sex. Oh, what were you talking about? Pro six now, while I was trying to differentiate between two a little bit later in the show, but

Brian D. Foy 00:11:05 No, I can give you the quick answer on that. Yeah. Cool. So what we’re talking about now, when we say just Pearl is everyone’s going to default to talking about Pearl major version five in around 2000, a group of people decided that it was time for Pearl to jump to his next major version. So we have gotten pearls zero at about 1987. Uh, I forget the year for Pearl four, but Pearl five was 94 95, something like that. And then in 2000, we’re talking about what have we learned in the last five years? What do people want? What’s the future look like? And they started working on parole, six Larry Wall decided it was going to be the community’s rewrite of Pearl. And we were going to basically have everything available to us if we wanted to change it. And that’s not quite what happened in history.

Brian D. Foy 00:11:58 So for various reasons, Pearl six, didn’t really replace Pearl five. It’s actually now called this language raccoon and it’s its own thing and it stands on its own. And it’s, it’s nice. I like it. Um, it has some very, very nice features. Uh, I have a book called learning Perl six, and we haven’t updated the title yet to learning Roku, but that’s sort of gone off on its own. And I think that is the best answer for that particular language. I think standing on its own and, and being able to carve out its own niche and history is a good result.

Gavin Henry 00:12:31 That’s a perfect answer. So it’s like IPP for an IPV six, they are related, but they just went off separate. Everyone’s been trying to replace it.

Brian D. Foy 00:12:42 I, you know, not to sort of interrupt my answer here in that, but I just read this nice essay about that. There’s now a backlash against IPV six because of just the way it’s being administered. But anyway, who would have thought that like 10 years ago,

Gavin Henry 00:12:57 I think I’ll probably do a show on that by itself because there’s a whole, it’s a whole thing that was really cool.

Brian D. Foy 00:13:04 Let’s go back to Pearl six for a minute. So in 2000 we have this chance to do anything we want. We don’t have to preserve backwards compatibility. We don’t have to do things in the same way. And one of the main factors was that as Pearl had developed and all this coded sort of accreted in the thing that makes the interpreter is that developers were having a tougher and tougher time maintaining it, just like, you know, sort of any software project that lives for decades. There’s going to be code eventually that you want to get rid of or a behavior you want to get rid of. Anyway, one of the things that they have this idea for is this virtual machine called parrot. Now it started off as a joke and I think Simon cousins might’ve been the person who started it was why don’t, you know, and I think it came from money Python you know, the dead parrot sketch or something like that, but why don’t we have a multilanguage interpreter or a virtual machine that we can write all this stuff too.

Brian D. Foy 00:13:58 And now this new version or Pearl, which would have been Perl six can target this VM and tickle can target this VM and Java can target this VM and Ruby and so on. But not only that, if Pearl can come in and write byte codes for this VM, this VM can decompile it and go back out to anything. It understands. One of these things was called parrot and that’s not quite what happened. It went on for a while and finally died, or I guess it’s not dead yet, or it’s just resting or whatever it is. Well, it’s, it’s important to

Gavin Henry 00:14:32 Lay that foundation of information down for, to lead us on to pro seven. So thanks for that explanation.

Brian D. Foy 00:14:38 I’ll add one more thing here, Pearl six, the raccoon thing, which is not Perl five Roku is on a different VM called more, which is meta object, something on a runtime. Uh, so we got the same idea, but it’s not in Perl five yet.

Gavin Henry 00:14:56 So a couple of important questions for new folks to Pearl, where is it used and how popular is it just to

Brian D. Foy 00:15:03 Briefly? Oh geez. That would, it’d be wonderful to know the answers to those things.

Gavin Henry 00:15:08 Or maybe where isn’t it,

Brian D. Foy 00:15:11 Where isn’t it used as easier. So, so I used to work as a, as a radiation worker in a national lab. Uh, I had a career in physics before I got into the programming and they’re always disclaimers whenever you would write software, that is not going to be used for medical equipment, aircraft control or nuclear power plants. So I’m pretty sure Pearl’s not controlling any of those things, but where it is used. I mean, I’ve seen it used in every sort of sector, government, academia industry science, it’s a great way to transform data and it almost everywhere needs to transform data. It’s not as popular as it used to be. And that’s no secret. I mean, I’ve been with Pearl since the early nineties, when everyone wanted to be a Pearl programmer and you could make a bunch of money if you had a pulse.

Brian D. Foy 00:16:01 And you said, you knew Pearl, even if you didn’t know Pearl from then we have a lot more choices now. And that’s when people talk about this, they forget that the declining popularity of something also has to look at how people are choosing to solve their problems. And we have a lot more choices now. So of course, you’re not going to be King of the Hill when there’s so many other places, people can go PHP solved the problem that a lot of people had and they’re using Bureau for so more power to them. Python has shown up and they have a sort of a different focus in their community where they’re very focused on the science side where the libraries and the things that people want Python is paying attention to. Yeah.

Gavin Henry 00:16:48 Yeah. They’re really heavy in machine learning out there. Most of the books at the moment,

Brian D. Foy 00:16:52 Hold on and Pearl’s still out there doing his job. And I answered a lot of questions on stack overflow, for instance. And I see a lot of people coming in with stuff about bioinformatics lately. I’m not sure why that is this summer. There’s a lot of stuff. People just try and do small jobs where they don’t want to learn too much about a particular community, because what they’re doing with their programming is just a very small part of their job. I use it a lot with my customers who are doing data exchange between different services business to business things where, you know, they get an, a bunch of data from some service and they need to pull out the parts that matter to them. And then they repackage that and send it on to some other service.

Gavin Henry 00:17:33 Yeah, it’s very, very strong with, for being the glue of things and saw the tax transformation side of things. Isn’t it?

Brian D. Foy 00:17:40 Yeah, absolutely. And we have some and see pan, which we call the
killer feature of Pearl. The comprehensive Pearl archive network has tons and tons of packages for doing quite a bit of the stuff that people want to do. So if we take that away, then we’re sort of really stuck. So many people have been doing Pearl for so long that someone has probably done the tasks that you were trying to do and put that thing on CSPAN, this archive network so that you can reuse the results of whatever they’re doing. And you know, this isn’t unique to Pearl Python, Ruby node, all these communities have this sort of thing. Curiously, this idea came not from the parole community, but from the tech community, you know, the, the layout engine from Donald Knuth, they had the C tan, the comprehensive tech archive network, where if you’re type setting your document and you need some sort of special feature, there’s probably a package on there that does it. Pearl sort of copied that. And I think AR has done that now, too. There’s a conference of our archive network. It makes sense that the tech people and the art people would know about each other since they’re probably both in the same space,

Gavin Henry 00:18:46 Thanks for mentioning CPR. Cause that was one of my questions around the ecosystem, which is now Matt, to see pan isn’t it not change this year? Was it

Brian D. Foy 00:18:55 Well? So there’s pan, which is just this collection of sites that are sync the same directories and then there’s these front ends to them. So there’s this thing called Medici And this is a website which is sort of a user interface into these servers that are basically just big directories of packages. There’s some sort of index files that let you know where to find things a long time ago. I think the same year that, that we start talking about Perl six grand bar showcased this site called search dot C See Penn had gotten so big that you couldn’t just go look at the list anymore and discover things that you wanted. So he had this little search engine for it, and just a couple of years ago, all of that transferred to now be this new version of that called Metta CPN. Uh, I, I still have a fondness for the old, but there’s a lot, a lot of features in Medici pan that make it very easy to get to what you want.

Gavin Henry 00:19:49 Yeah, me too. I like the, I remember stealing some of the CSS from it years ago and it was just so fast. I’d like to move as long from the intersection, but just close enough with the question of what’s the best way for someone new to Peralta to learn it.

Brian D. Foy 00:20:07 Well, that’s, that’s a bit loaded because you’re asking the person who wrote a book called learning Pearl.

Gavin Henry 00:20:12 That’s fine.

Brian D. Foy 00:20:14 So there’s a lot of ways that people can learn Pearl. There are some online tutorials and there’s my book, the only book learning Pearl. Well, there’s some other books out there I want to be fair. There’s another one that I think is good from Curtis Pope called beginning parole. I forget when it was published. I, it’s probably a little bit older than the last edition of my learning Pearl.

Gavin Henry 00:20:36 Oh, he’s got modern parallel as well. Isn’t he?

Brian D. Foy 00:20:38 Well, so there’s this guy komatik who wrote modern Pearl. So modern Pearl is a, is a bit of a weird book. So let come back to that in just a moment. So you could read learning parole. You could go with beginning parole. I mean, Curtis’s book is, has very good. There are some online tutorials and all of this. I have noticed this thing this summer that people have been writing to me saying that they’re learning Pearl from a book that we finished, you know, more than 15 years ago when there was several additions after this. The thing that I would encourage people to do is find the most up-to-date sources you can get. And not just in Pearl, but in any language. I mean, I just spent a week trying to figure out a Hugo, this, this templating engine thing written and go, and I had to use a particular version, but so reading older docs didn’t help me reading all newer docs.

Brian D. Foy 00:21:29 Didn’t help me as one of the things to think about. But besides that, get the book, try things out, just try to program. You’re going to learn a lot of stuff just by the act of actually trying to run programs. You’re going to learn some of our programming, just the mechanics of it, but also doing the parole exercises. You’ll learn those too. There’s a website called the Pearl weekly challenge. I think that’s it run by Muhammad Anwar. He puts up, I think I’ve got this right. He puts up a different problem every week and different people solve it and then explain how they solved it. And so it’s also very good to look at people’s examples

Gavin Henry 00:22:06 In the show notes.

Brian D. Foy 00:22:07 Let me say one thing about modern Pearl though. So chromatic has written this book and as its name suggests, it’s, it’s sort of an update to how you should do Pearl. A lot of people recommend that as a beginner book, but it’s, it’s a very slim book. And if you read through it, it’s, it’s good. If you already know the language where you have some experience programming, because he quickly passes over some targets or some, some topics that has programmers, we don’t really think that much about, but I, I just know from teaching classes and being in front of people, that things that we take for granted really trip people up until they grasp it. I mean like the whole idea of a sub-routine, if you’re not a programmer and you haven’t thought about this sort of thing before, that’s, that’s a huge concept once you get it, it’s very simple. But naturally the way that learning Pearl is thinking about things is like, we, we need to spell a lot of things out because we just don’t know where you are. Yeah.

Gavin Henry 00:23:04 I learned Pearl. It was 2004 with learning Pearl third edition, which unfortunately isn’t your one, but it was a very sort of nice stepping stone with each chapter building on the next, right. I want to move us forward to the bulk of the show, which is now pro seven, the next section we’ve kind of crossed over this one. So that’s great. So let’s just get straight into the meat of the show, which is Pearl seven. You did a nice into, on Pearl six for us. Um, which is fantastic. So it was said in the pro seven announcement, which I think you wrote that Pearl seven is going to be pro 5.32, but with different scenar, more defaults, have I got that right?

Brian D. Foy 00:23:47 Yeah, I think I put the adjectives in that order. It sounds right.

Gavin Henry 00:23:51 So what are these new modern defaults and what were they? Okay, so we’ve already talked a little,

Brian D. Foy 00:23:58 What about Perl six? And just to sort of set some context for how they want to do this in Pearl seven, Pearl six took about 15 years to get something in people’s hands that they could actually use. We mentioned, and it started around 2000 where we had the idea, but I would say that the real Perl six efforts started around 2006 when Audrey Tang made this thing called pugs, which was a Haskell based interpreter for Pearl six. And now people can actually start playing with code and then it’s not until 10 years later or so that they actually have a release. That’s an extraordinary, long time to wait for this sort of thing. And it was because I think I talked about earlier where everything was open to change. So we’ve, we’ve had this pain, this particular pain where we can break anything and we saw what happened and we saw how long it took to get something.

Brian D. Foy 00:24:50 So now let’s talk about what you said about my announcement with Pearl seven, Pearl five 30, two Pearl major version five with minor version 32 is out now. It was just released a couple of months ago in June, I think. So we want to make this major version jump and there’s a few reasons that anyone wants to make a major version. Jump first is you, you can say we can do new things in this major version. We don’t have to necessarily support everything in the previous major version. Okay. We’ve had this desire since 2000 when we wanted to do Perl six, we just haven’t been able to figure it out yet. So now we want to do this where Pearl five, Pearl six was this thing that eventually became raccoon and went on to live on its own.

Gavin Henry 00:25:40 And at this 0.05 is, was born in 94. So it’s what, 26 years it’s old. Yeah. Yeah. And we’ve learned

Brian D. Foy 00:25:50 Quite a bit from there. So anyway, so next major version will be seven. But what we don’t want to do is wait 15 years to put this thing out. And so we can go in the opposite direction and say, what we’re going to do is take what we have now. And we were just going to change the version number. So we’re not writing new code. We’re not rearranging a bunch of stuff. We’re not inventing new stuff. We’re not going to go crazy, but we’re going to take this small step to put a new major version on this thing and see what that forces us to do. Now, once we do that, there are a bunch of things in Perl five, which we mostly do now, or some people do now, I should say, but you have to turn on. Like, there is a,

Gavin Henry 00:26:35 A feature called strict,

Brian D. Foy 00:26:37 Which I think JavaScript has now. I heard and maybe Python that’s right where I want to use this variable. I have to tell you, I want to use this variable before I can use it that way. If you misspell it later or use the wrong variable name or something that it yells at you, but you have to turn that on. So would be really nice if we could, debt would just start being turned on. Could we tell everyone to use it all the time? We tell everyone you should always use it. You’re not using this, come back when you’ve used it and that sort of thing. Well, let’s just make it the default. But if we do that now for Perl five and people are still trying to run their profile programs, all of a sudden they break there’s some other things that would be very nice to get the problem is if I start listing all these, then people are going to think that the parole seven developers are actually committing to these. And, and we actually don’t know what is going to be on by default and off by default just yet. Cause we’re still talking

Gavin Henry 00:27:30 Well, let’s just say Pearl seven is coming, but the big caveat, it could all change all my questions. So I’m just going to pretend that these things are kinda there. So,

Brian D. Foy 00:27:44 So some of the things that we could turn on by default is there, there’s this experimental feature in Perl five now called signatures. So if you’re writing in many other languages, you know that you can give it the sub-routine name and then some sort of signature that describes the parameters it can take. And then there can be some various checks based on those. And Pearl, we have that feature it’s experimental. So it’s not on by default, but it’d be wonderful if it was now, it might not be on by default and Pearl seven, but now we have a chance to sort of mutate the language in a way that we can get the stuff that everyone’s trying to use anyway, without disturbing all of the backward compatibility that we’ve been committed to in Perl five, we put that in a new major version and it makes that a little bit easier. Again, we’re not changing the code. We’re not adding new features because the features are already there. We just turn them on. Now that everyone gets them for free. And if your stuff conflicts with what these defaults are, then you still have parole five available. I please don’t anyone upgrade anything until you’ve tested it, not just Pearl, but any sort of language or, or a new version of something.

Gavin Henry 00:28:53 So what’s going to happen with pro five, since you just mentioned pro five is still so the,

Brian D. Foy 00:28:59 The commitment that the parole five porters have made, and these are the people who maintain the actual parole interpreter is that instead of the normal two year support policy, we have now for any point release a Pearl like five 30, two or five 30, they’re going to extend the maintenance period for five 30, two as it is now to be very, very long. And we’re talking 10, 15 years something in that range. So we’re going to keep supporting whatever the last version of Perl five is. So people can stay on that and have some stability. You don’t have to adopt Pearl this year. And then all of a sudden next year, it’s a whole new thing. Um, we’re going to have that available part of this puzzle. And, and this is out of the control of the people developing Pearl is that the operating systems distribute what they want. And we talked a little bit about the Mac earlier, thus far,

Gavin Henry 00:29:53 I was just going to ask, so you hold a lot of power, don’t they?

Brian D. Foy 00:29:56 So if you have an Boutou for instance, and Pearl seven exists, when you run Pearl on your own Boone to machine, which one do you get? Well, I hope that the distributions are very smart and they keep the Pearl five one for awhile. It’s supported it’s people are taking care of it. Uh, it’s a thing that everyone expects right now. And I also hope, and this is just a hope, my personal opinion is that maybe there’ll be this thing called Pearl seven. So there’s a binary on your computer that is just Pearl and that’s Pearl five, like people expect. And then there’s this other one, Pearl seven. And you can play fancy games with the links and stuff like that. If you like. And then after a while a fewer people would be using just the straight Pearl five one, people will catch up or make their decisions about that. And the distributions can see what their particular users want.

Gavin Henry 00:30:51 Yeah. I think that’s what Pythen did for quite a while. Isn’t it? Point seven and then three point X. And then you default for our user been Python or use have been Peralta SIM link to wherever you want.

Brian D. Foy 00:31:05 Yeah. So on my Mac, I have both of those pythons. If I just say Python, I get Python 2.7 because that’s what most people expect. And, but if I want Python three, I just type out Python three. Uh, and I get that. Some people have not been happy with that Python transition, but also, I mean, looking at the bright side though, the world hasn’t ended, Python has gone on Python is still gaining in popularity. It’s sometimes things are just hardened and maybe a little bit uncomfortable, but life goes on.

Gavin Henry 00:31:34 Yeah. I experienced exactly that distro forcing upgrade that we were just discussing with ensemble and Oh geez. Continuous integration, continuous deployment get loud thing. I think it was arc Linux distro is that Docker user’s default that switched to pay for three and broke epicenter.

Brian D. Foy 00:31:57 So this is an interesting case because I’ve been using arch Linux online ode, just because a friend suggested it. And I’ll say, I’ve never used this before, so I’ll try it out. And there, they are always trying to be on the latest of everything and they seem to do a pretty good job of it. So that’s different than say like red hat, enterprise edition, where they’re like stability, stability, stability, you get the same thing, you know exactly what you get. We’re not going to change things out from under you versus as cutting edge. If it’s new, it’s there the next day or even sooner how’s that going to work out? And I think there’s, I mean, we don’t need to do a whole podcast on this bit, but there is, you know, this whole class of now dev ops and these upgraded CIS admin types who really think about this sort of stuff to provide a consistent experience, despite the fact of all the stuff that’s changing everywhere in the world every day, not just Perl, not just, no, not just your operating system, but all sorts of things get, get changed and your stuff has to somehow keep working.

Brian D. Foy 00:33:01 So hopefully I think the Pearl developers are, are taking care of this. They’re talking to the people they need to talk to in the various package managers that we can come up with a way to give something to people they expect at the same time, giving them a taste of what they can get in the future. Yeah. I think there’s a lot of existing case studies to draw experience on when they do get to that

Brian D. Foy 00:33:56 So you’ve mentioned strict, which is generally a monitor that you should always use in a good way. And there’s another prac with the correct word. Yes. Yeah. So that would be, but using a module. Isn’t it. So how would you describe that to people that aren’t familiar with? So there’s, there’s the technical answer. And then there’s sort of the social answer with this. Uh progrma is something like a setting, so strict you say inappro program use strict. I want to turn this feature called strict on or use warnings or use utfh or whatever it is. I am telling the compiler to enable these features. Now, technically these features are enabled as modules behind the scene and a module is just a, a package, a little bit of code. It sits on its own. So in other languages you might say in pore or include or yeah, something like that.

Brian D. Foy 00:34:56 So usually when you see a poll crab poem file, whatever formats, then you would look to see you strict and use warnings or another module that has a ton of default switched on like a rapper like Motorola or something. So you’ve already mentioned how strict might change, what, what would happen with warnings as well? I think one of the options that they’re looking at is having them on by default. So I would be fine with that there and there are, you mentioned some of these rappers like modern Pearl or mojo base or something like this that enable a bunch of stuff for you. So you have instead of 10 lines of boiler plate, you have this one thing that does it for you. That’s fine. Warnings. I have a particular and unpopular opinion about that. This is a development tool. And if you aren’t developing then, and no one’s looking at the warnings or doing anything with the warnings, then they’re a waste of time.

Brian D. Foy 00:35:54 Having the warnings in there is not a waste of time using it as a development tool is not a waste of time, but if you’re sitting there in a production environment and no one’s monitoring the logs and you have a program that is spitting out, you know, one morning, every second, you’re filling up your disk, you’re, you’re making your logs more noisy. Um, if you have someone that’s looking at that and fixing that stuff, so those warnings disappear. That’s great. But I find in a lot of places, people have quite a bit to do already in their jobs and those sort of things go by the wayside. So having it on by default would not make me personally happy, but I think it would probably make the world a little bit better. And if you want to just turn it off in production, that’s very easy to do. So

Gavin Henry 00:36:38 Really is to turn on. Everyone would normally turn on manually, but allow them to switch off if it’s a problem.

Brian D. Foy 00:36:45 Yes. And that’s one of the big things to think about when we’re looking at this scary thing called bumping your major version. We’re trying to make Pearl seven, the same as Pearl five 32, and we’re just gonna switch on or switch off different things. So all you have to do to get back to the old behavior is flip the various bits on those things, to their original settings, which makes it very easy for us to make some sort of Pearl five compatibility mode, how this is going to work. I don’t know yet. And they’re talking about the particular syntax and people’s preferences and stuff like that. So since Pearl seven and Pearl five 32 should be pretty much close to the same thing. And there’s just a difference in how they set things. If Pearl seven, the new thing is reading a program and it somehow thinks that it’s Pearl five written for Pearl five.

Brian D. Foy 00:37:36 It can just say, Hey, I’m going to go back to the five 32 settings and you should be fine. We don’t know if that’s going to require something in your parole five program or your setting in your Pearl seven program yet. But that’s certainly the intent at the same time. If you’re writing a new Pearl seven stuff, I think what they want people to do now is declare in this new code this way that would really help us out is say, use version seven. Now when your pro five program tries to run that or your profile interpreter tries to run that it sees that thing and says, Oh, you’re asking for seven, but I’m only five. And it can lead you very quickly to what you need to do with that use a different interpreter or, or something like that. One of the things that a lot of people are very concerned about is how see pan, which has all code written for Perl five is going to interact with this new thing called parole seven. Well, if we get this compatibility mode, right, and I don’t think there’s a chance that we’ll, we’ll get it wrong, but if we get this thing, right, Pearl seven, the interpreter can read through the stuff, say, Oh, you’re loading a module from parole five. I will make the settings be whatever Perl five settings are. And then this stuff should be just fine. It justifiably, I think makes a lot of people really nervous because they’re a couple hundred thousand packages on CPN.

Gavin Henry 00:38:55 Yeah. But they’re not just dumped there. And there’s a whole ecosystem of smoke tasks and tasks. There’s an automation that you could run on a copy of the whole thing or a portion of it. And this, I think it’s a relief that you can talk with something, whether it’s
one way or the other to get back to where you were for a certain period. You know,

Brian D. Foy 00:39:15 This is an amazing thing about the Perl community. And especially when they got into the testing mindset. And I think Michael Schwan was a big part of this, that there are people who test all of pan against any new release of Perl five. So, and we’re talking, like I said, a couple hundred thousand modules. So they just have these machines in the background going through testing everything. Any little bit of syntax comes out. And my module from that, I wrote 15 years ago breaks on this new little piece of syntax. I get an email from someone saying, Hey, I tested your module on this new release of Pearl and there’s this problem. Now there’s no obligation for me to go fix that. I mean, it’s open source so I could, you know, just sort of be antisocial and let it sit. But usually the fix is very simple.

Brian D. Foy 00:40:03 It’s I just need to adjust how I use some call or something like that, and I can release a new thing. And, and now my module works for the new version too. Unlike you said, we have this, this stuff in place in Pearl, that we can find out where the problems are very quickly. You mentioned CPN smokers. This is a collection of machines that download our checkout, whatever the current branch of of Pearl is wherever is doing before. We’ve released that version and test it on all sorts of different operating systems. And these are just volunteers doing this. So we quickly get feedback from a lot of different places that, you know, we made this small code change and add this feature. Does it work now beyond that? There’s a thing called CPN testers. So I upload a module, a third-party bit of code onto CPN, the comprehensive Pearl archive network, and immediately all sorts of machines all from volunteers, start downloading this testing and sending their results back. Not, I mean, it’s, it’s brilliant that we have this, but you know, I just uploaded a module yesterday and update, and now I’m getting all this feedback about all these places I have failed and I have to go.

Gavin Henry 00:41:13 Yeah. You asked though it didn’t. Yeah. It’s a nice problem to have though. It’s a great thing about the community, but there was wasn’t there something last week, this is a bit of a diversion, but there was something that had some type of vocation in it all is the fake iPhone root and Kate or something that I’d been on C-SPAN years, but it was so obscure.

Brian D. Foy 00:41:35 I think you’re talking about module autoload

Gavin Henry 00:41:39 Right. Yeah. I had never used it or something that came out

Brian D. Foy 00:41:43 And we don’t know if anyone ever used it. So everyone who has programmed, Pearl has probably experienced this. At some point, you try to run a program and it stops and it says can’t locate, blah, blah, blah. And at inc. And it gives you this big mess of, of stuff. Pearl was looking for some module and it didn’t find it. And it just complained. And the error message is very much geared towards programmers, which is not the nicest way to present information to casual programmers. So there’s this thing called module auto use, which I think the intent originally was, if it ran into a, a module you tried to use and it couldn’t find it, it would do various things to make that workout. And again, I haven’t looked at the code, so I don’t really know what it was doing, but yeah, like you said, apparently it had some sort of malicious thing there where when you, when it ran this module would phone home to somewhere and then download something. And usually we have found that stuff pretty quickly because someone notices it notifies you, the CPN administrators, there’s this, this group called paws, the Pearl authors upload server. And those people are paying attention every day and they quickly remove stuff like that. Um, we’ve had this problem a handful of times and the past 20 years.

Gavin Henry 00:43:03 Yeah. It’s pretty rare. And it’s not like it, the stuffs or to install it anywhere and you have to explicitly go and get it.

Brian D. Foy 00:43:11 So, so how that one lives so long, I don’t know if it was like taken over somehow and then slightly updated when no one was looking or, you know, it’s doing one of those things where in the test environment, it, it doesn’t do the bad thing.

Gavin Henry 00:43:25 Yeah. My point of mentioning that other than an interesting story is that there’s a whole different cascade of teams and groups that work on the public code that everyone contributes to. And it gets found it’s not just a big part of stuff that people upload things to.

Brian D. Foy 00:43:43 And I’m surprised that, that this situation has gone on for so long. Um, just this group of volunteers mostly led by this guy in Germany, Andrea’s egg. These guys started in 93 or 94 calling themselves the Pearl pack rats. And then they started collecting stuff. And then they made this thing that takes into modules and puts them all somewhere. And then like we mentioned, met a CPN. Now there’s a search engine on top of that. And it’s, it’s almost completely run by volunteers with no funding.

Gavin Henry 00:44:13 I’m not sure if there’s something similar in other ecosystems, but

Brian D. Foy 00:44:18 Ecosystems I’ve seen sort of rely on get hub where you go look and get hub for something and just whatever the latest release or master branches or tag or something like that is a little harder to curate that because you don’t control. What’s actually in the repository. It could be anything I know other communities have had. I’m not going to call anyone out, but they’ve had their sort of embarrassing moments with that sort of stuff. And we shouldn’t be so snide about that because it happened to us too, just now.

Gavin Henry 00:44:48 Yeah, no, we shouldn’t point on laugh at anyone. Right. I’m going to do some quick fire questions, some fun. So here we go. What are bare word file handles and how will they change?

Brian D. Foy 00:45:00 Okay. So when Pearl first started, it was very quick and dirty language. There’s a way that we access a file either to read to it or write to it. And that is all controlled through this thing called a file handle. A bare word file handle is one of these nice Pearl variables that doesn’t have the funny character up front. The thing we call a sigil. So you’d say open, and it’s usually an all uppercase like file or FH is my favorite or, you know, whatever you want. And their problem that Pearl has is figuring out what that thing is because it’s going along and it doesn’t have the funny character out front. So that was completely fine. And the way we did things before Pearl 5.6, when we introduced the ability to put these file handles inside variables and normal variables that have a funny dollar sign out front. Uh, so if we can get rid of those, a lot of things can get simplified, I guess, another good way to say this is if you’ve seen their like word standard out standard error or standard in any program in Perlow be all upper case. Those are bear word file handles, and those will stick around.

Gavin Henry 00:46:07 Yeah. So like I’m a macro and C parlance.

Brian D. Foy 00:46:11 Um, I don’t know if I’d go that far, but yeah, we’ll say that I don’t have

Gavin Henry 00:46:14 A case for it. Oh yeah, yeah, yeah.

Brian D. Foy 00:46:17 It’s an upper case word. Okay.

Gavin Henry 00:46:19 All right. Full stop on that one. Okay. Next one. What are sub-routine signatures and how will they change?

Brian D. Foy 00:46:24 Okay, so, so right now, Pearl sub routines,

Gavin Henry 00:46:27 Did we answer the last one? Actually, are they going to change bare word founders? You’re trying to get rid of them.

Brian D. Foy 00:46:33 We want to turn them off so that you can’t use it again, but you can also, the system wants to stick around. Okay. Signatures. I think we

Gavin Henry 00:46:40 Touched on this earlier a little bit.

Brian D. Foy 00:46:43 Yeah. So the way a pro works now, and it’s sort of quick and dirty to get things done attitude is that when you pass parameters to a sub-routine, it just makes a big list of everything together and gives it to the sub-routine. And the sub-routine looks in this big list and then has to pick apart what belongs to what, based on whatever you’re doing. Signatures. Most people who are programming and not parole will probably recognize these, make a formal parameter list to the team and says, the first thing is this, the second thing is this, the third through fifth things are these. And so you don’t have to do that inside the code at the last moment, Pearl has the ability to do that. We want, we would love to turn them on by default. I think it’s unlikely that we’ll, we’ll get that right away for various reasons, but also the old way will still be available. You can still do it exactly as you did before

Gavin Henry 00:47:35 With Pearl seven, you can use that as a, you know, a line in the sand to say here’s all the new stuff, and I’ll give some people somewhere to go and look and see that all these things are available.

Brian D. Foy 00:47:45 And I think one of the only thing that’s really holding the signatures up is that they want to add a few more niceties to it before they say, this is the feature, and we’re going to make it on by default. Okay.

Gavin Henry 00:47:56 Full stop on that one. What are prototypes and how will they change? Okay. So

Brian D. Foy 00:48:01 Prototypes are related to the signatures and the, the argument passing. So Pearl being the sort of language that it is, this dynamic language. It doesn’t exactly know what it’s doing next, because all sorts of things could have changed out from one of it. As it’s parsing through the code, prototypes were a way to tell a sub-routine what sort of things it should expect after you call it. Like you have a, you know, two arguments where you have an array or you have whatever the syntax, the place that you, you put this prototype in a submarine to tell it how to instruct Perla parse is in the same place we want to put signatures. And it looks very close to the signature syntax. So what we need to do is either put this attribute in front of this thing and say, colon and prototypes. We know that this thing is they prototype and audio signature or not use prototypes, which is probably the better answer. So there is this little tug of war right now between prototypes, which is this old thing that I think Larry Wall always sort of envisioned turning into signatures, but did not and signatures. And this is why signatures may not get the nod for the first go of Pearl seven. We have to figure out that tug of war and how much of CPN and user’s code. We’re going to break by making signatures the priority rather than product.

Gavin Henry 00:49:26 So one of those two could win or they could be merged, or, yeah.

Brian D. Foy 00:49:29 So we’re, we’re definitely trying to think, get rid of prototypes, but, but how much breakage do we want to want to take on the first go?

Gavin Henry 00:49:37 We’ve mentioned Larry Wall a few times. Where does he sit in the whole Pearl ecosystem at the moment?

Brian D. Foy 00:49:44 Right now, I sort of envisioned him sitting at home and join his life and watching his creations go out and do wonderful things in the universe. In 2000, we had this split where Perl six started and was going to do its thing. And Larry Wall really paid attention to that. Now, unbeknownst to us at the time, and we were on parole 5.8, then that invigorated a section of the parole community. And we ended up with parole five, 10 at the same time, this Pearl six development was going on. I think your Arco Heinington Emmy was mostly responsible for that. And then parole five just kept going. But Larry was paying attention to parole, six designing this a hundred year language is what he called it,

Gavin Henry 00:50:24 Eyes on board. Then everyone pays attention. Like if I want us to evolve, did something and Linux. Yes. The same power.

Brian D. Foy 00:50:32 Yeah. And so I think, and then we had this, this move of governance and parole five to go from Larry Wall, who is the final answer on everything to respect to individuals taking over. We had Jesse Vincent who sort of rejiggered the entire development process for this new reality. And that was an amazing step forward. Ricardo sickness took it even further. And now there’s this guy, Sawyer X who’s in charge of that. He’s the pumpkin. He called the pumpkin, which is this funny phrase that they took from chip Salzburg. I believe where they had to share some piece of hardware. It was a printer or a tape reader or something. You can only use it. If you physically possessed this little pumpkin plush toy, that way your computer didn’t stop, whatever my computer was doing. But the idea there is that we sort of have this more committee geared development model. I don’t, I don’t really like saying it like that, but it’s no longer Larry is always right. If he came back, I’m sure he would be right. But I think he’s, he’s enjoying his retirement and quite proud of the, the two languages he has out there now, along with the fact that he wrote the patch command, which, which I think he got the he got some big award from some open-source foundation for gosh.

Gavin Henry 00:51:51 All right. Uh, just for the listeners, all the names that Brian’s mentioned, then I know, cause I’m in this sort of world, but they’re all big famous names, which would be similar in the other languages, key people in the community. Well, thanks for answering that a couple of quick fire off ones again. Okay. What are indirect objects and how would they change?

Brian D. Foy 00:52:11 So the, the C plus plus programmers will enjoy this one. We’re actually trying to kill off indirect objects just because it makes the parsing situation weird. Pearl has a lot of little weird diddies that make it difficult to parse. And I think it was Randall Schwartz who said only Pearl can parse Pearl. Yeah. That’s about the famous one. But so if you make a new object, I, this might be true in Java, but I haven’t touched Java in a long time. You would say, you know, variable equals new dog for instance. So there’s a dog class and you’re making a new one. So the method is before the class name. And then after that you get your, your object or your instance, what do you want to call it? Your variable? And you say that dot wherever the method name is. So when you make the thing, you have the method out front, but when you use it, you have the method at the end, in Pearl, that indirect object notation is when you have that object, that, that method name in front of the object. And you can do that in Pearl for any object. It doesn’t have to be just the constructor. The new thing, we have discouraged this for years and years and years, lots of the documentation has caught up not to use it. And if we can turn it off, that would allow, and not only turn it off, but get people to stop using it, that would allow the developers think to forget about that whole class of problems in determining if we have a method call.

Gavin Henry 00:53:31 So it was kind of a heads-up to say, if you’re using that, we’re hoping to get rid of it.

Brian D. Foy 00:53:35 Yeah. I th I think, I don’t think many people are because there’s almost no place that anyone sees it anymore, except maybe in some old, old, old module documentation.

Gavin Henry 00:53:44 Okay. So what is multi-dimensional array emulation? I liked the sound a lot. So I thought I’d ask, and is this new,

Brian D. Foy 00:53:52 This, this, this one’s actually kind of funny. I when Sawyer told me he was going to target this as something to turn off, I had actually forgotten what this was. This is a Pearl four thing. So Pearl four came out in the early nineties sometime, and we had hashes and arrays and that’s it. And he’s raised you it’s flat. The hashes are flat. It’s the razor.

Gavin Henry 00:54:16 It would be maps and others.

Brian D. Foy 00:54:19 In fact, if they weren’t even called hashes, then they were called associate of arrays, but they’re like maps or dictionaries or something like that. So you couldn’t do multidimensional structures, like say you want to have a matrix where you have rows and columns. Well, that just doesn’t work. Pearl forehead, no way to do that. So what they would do is they would make a hash key where they can, catenate all the dimensions, the indexes of all the dimensions with a semi-colon and that would be the hash keys. And then there would just be a single value for that. So it looks like you have a matrix or a, you know, a 3d matrix or something, but you really just have this hash with all these funny looking keys. Now, the multidimensional bit is, is if you gave the hash or you gave to the hash a list for its keys, instead of just a single string, it would take this list, concatenate it in his fancy way with the semi-colons and then go look for that. Instead of doing something else, this was a very clever trick for people to get around the fact that Pearl had these sort of what we call now, primitive data structures to do this multi-dimensional. So, cause it was this

Gavin Henry 00:55:22 Stepping stone before you could do it properly. Yeah.

Brian D. Foy 00:55:25 And, and the C people might even be more familiar with us cause you know, you have to do all that point or thing. Like where’s an extra, okay, jump ahead. Like eight size of whatever. I don’t think I’ve ever seen anyone use it for real. I completely forgot that it even existed as a feature, but it’s there, it’s there for the old pro four days.

Gavin Henry 00:55:48 There’s another question that I want to quickly slip in. We haven’t mentioned, we mentioned objects and methods then, but what’s the object oriented world going to be like in Pearl seminar? You know, how do people want it to be? Is it going to be the separate moose, moose, if people are familiar with that separate ecosystem within an ecosystem, or is it going to be because you can do object orientated with Pearl 5 cents forever, but they’ve put all this to easier stuff on. So,

Brian D. Foy 00:56:18 So this is an interesting question. Give me a proper answer and I’ll yeah. I’ll I will try. Um, so you, you said two things, you said what is it going to be? And what do people want? That is the tension in all of this stuff. There’s what people say they want. And then there’s like what they’re actually gonna use, because one of the things that has held up these different objects systems and Pearl that you’ve mentioned, there’s a thing called moose. And then there’s a variant of that called moon in a variant called mouse and a variant called moon AMU. And so on

Gavin Henry 00:56:52 Different people, different people’s takes on how it should be done.

Brian D. Foy 00:56:55 Yeah. And, and, but the thing is, they’re all sort of clustered around some ideas. Now there’s a guy Curtis PO the same guy who I, I mentioned before has gone back and looked at this and he has this proposal called cor C O R, that he is looked at all these things and said, they’re internally, they’re all internally inconsistent in some way. They’re all trying to do something, but they didn’t think about this. Or they didn’t think about that. And he’s trying to pull all that into this thing, which the Pearl seven people, the guys were actually responsible for putting this stuff into the code, have not told him no one. Now that’s a lot different than saying yes. So I don’t want to get people’s hopes up. That’s why I say it that way, but they’re definitely open to it. Um, there’s still a lot of discussion going on with that.

Brian D. Foy 00:57:45 A lot of the stuff he’s done has really cleaned up a lot of the ideas that I think other people were going toward. And we’ll see what happens with that. We’re not going to get it right away. This, this jump from parole, five 30, two to parole, seven should be quick, no new features to see that we can do it to figure out what we need to do to actually make a big jump. And then we can think about the other stuff. My take on all of this sort of stuff is that I just tend to be a lot simpler in my application of object oriented programming. It’s, it’s a set of philosophies, not necessarily a set of syntax. Um, but that’s all I’ll say about that. Yeah.

Gavin Henry 00:58:21 I think there’s a comparison analogy wherever you can make. When you look at JavaScript world and you’ve got things like react or angular, Vue JS, if you’re familiar with all that, and then they’ve all got their different state monitors on top and dependent on what you’re doing and what you like, you can reach for those different projects, which is how I see all the different object-oriented stuff for Pearl. You have your core JavaScript and your core Perl five, but you can bolt on loads of different stuff depending on what you like to look off. Is that right or wrong?

Brian D. Foy 00:58:58 I think that’s fair. I think often people choose the one they most agree with and then just sort of force it into whatever situation they have. Probably much like the JavaScript frameworks where, you know, you read resumes or something and they say I’m an angular developer. Well, you know, learn some other stuff too. It’s you put the proper in the proper job, learn, learn different languages

Gavin Henry 00:59:22 Cause you can steal stuff from all of them. So a lot of my questions in this last session we’ve covered off. I wanted to ask you about compatibility compatibility mode, but we’ve touched that to PS. Anyone that’s nervous about the change. You can always switch stuff on or off. That’s the plan C pan is gonna not break. And that’s the bottom line.

Brian D. Foy 00:59:43 Well that’s yeah, that’s definitely our hope when we, we have plenty of time to figure it out.

Gavin Henry 00:59:47 So my final question there was, should we be worried about all of our revenue generating code, which other other people call legacy, but it’s where the money gets made. So this

Brian D. Foy 01:00:00 Interesting thing, and I like that you phrase it like that, the money-making code, because what I sorta tell people when I go to consult is that if this is the stuff that’s making your money, you don’t want anyone else to be able to change it, which means you don’t want your operating system upgrade something out from underneath you. You don’t want your language to change module versions on you. You don’t want anything to change that you didn’t decide to change because like you said, that’s your, your money. And I, I had one client that their website was down for a day and they estimated something like they were losing $3 million an hour. So these things are important. And if they’re important enough to make you money, they’re important enough for you to control despite what parole does, lock that stuff down. Uh, I know a lot of people that use things like Artifactory or something else to make their own package repositories, and that’s the only thing they can pull from.

Brian D. Foy 01:00:51 They know exactly which versions of everything they’re using. What was that called? Dark pan, dark pan that’s that’s the phrase we use for all of the pro code out there that we never see, and we don’t know what people are doing or how they’re doing it. Okay. And trying to support that is really interesting. And I know we’re getting close to the end of the interview, so I don’t want to go into all that stuff, but it’s really fun to talk about maintaining C-SPAN. And if you wanted to really interview someone interesting on that, Neil Bowers is doing some amazing work.

Gavin Henry 01:01:19 Yeah. Before I want to make this too cliquey with everyone. But like I was saying before this year, it’s this is one of the, you’ve been one of the guys I’ve been looking forward to interview and every name you’ve mentioned this I, I, I knew in those types of circles

Brian D. Foy 01:01:35 Yeah. That says, I don’t really do anything fun or interesting or clever. I just write about what other people do.

Gavin Henry 01:01:41 All right. So it’s all fun. I think we’ve covered all the things that are out there at the moment. And what’s kind of happened to them bottom line being correct me if I’m wrong, we don’t need to worry too much. If you’re a user in Pearl, are there any things sort of in Pearl seven that you want people to be really excited about or, you know, you had vision a two river, you know, Phoenix from the fire that going to track loads of stuff, or, you know, what would you feel about all that?

Brian D. Foy 01:02:14 There are some things that I could be excited about that I haven’t had the chance to be excited about just because I never thought Pearl five would take this big jump, Pearl seven. I’m not, I’m very cautiously optimistic because it’s, it’s going to be this transition step where we know that we have updated the code, that we can change a major version. We know that we can do these things. And then the, I think the feeling now is Pearl eight is we’re going to see significant change. We know that we can do it in Pearl seven. We’ve got all our processes in place. We figured out how to do it. And now we can just do it again with Pearl eight. And now we can really break things. I’m I would really love to see signatures, but again might not happen for parole seven. So in one of the things that I’d like to leave with is I do have this book through Pearl school on Leanpub called preparing for Pearl seven, which is really,

Gavin Henry 01:03:04 I’ve got that in the show notes and myself as well,

Brian D. Foy 01:03:08 What you need to be doing today, or what practices you need, you could be doing in Perl five. Now that can help you so that you have a seamless transition. Um, the interesting thing about those books is each sort of feature that we’ve talked about has its own chapter. And I’ve, I’ve put a status at the beginning of it, probable unlikely, you know, something like that. And that’s, that’s sort of changing as it, as it goes, some things are, they’re thinking, Oh, we, we thought about that at first, but now it looks like it might be a tough sell and other things that we hadn’t thought about or looked like they might be likely the great thing about Pearl school and, and lean pub is all these things are EPUB. So when I find out new stuff, I can just push a new version.

Gavin Henry 01:03:47 Yeah. I could do maybe three shows about pro there’s whole projects. Like the more delicious web framework, there’s your pro power tools. We’ll have some notes.

Brian D. Foy 01:03:57 Those are really Tom Christiansen’s, poor Pearl power tools. I just maintain the code.

Gavin Henry 01:04:01 Yeah. You’re looking after them. I’ve got a ton of other stuff, but yeah, we’ve kind of run out of time. So obviously pro has a bright future and you’re very much part of that. Um, but if there’s one thing a software engineer should remember from our show, what would you like that to be?
Brian D. Foy 01:04:18 Oh geez. From today’s show and all the things we talked about. Yeah. I float to the top. I think that besides the fact that Pearl seven is coming in, I think it’s going to be really nice is that no matter what you’re doing, what field you’re in, what tools you’re using is, is control your tools. Be up-to-date on what they’re doing. Stay up to date on them because things are gonna change in the future no matter what you’re doing.

Gavin Henry 01:04:43 Okay. And was there anything we’ve got a few minutes left? Is there anything we missed that you’d like to mention being silly enough to miss?

Brian D. Foy 01:04:52 I don’t know. I, I think, I think you’ve covered a lot of it. Uh, if people want to know more about Pearl they can [email protected]. That’s the, the main site, the Medici is a great place to find modules. And Pearl five recently transferred to get hub from a, a private get repo that it was using which it had been on after being on Perforce a long time. So you can actually go and look at this stuff, go to get hub at the I keep forgetting what the organization name is and what the repo name is. I get them backed up. One’s Pearl one’s profile. Google’s four. Yeah. And, and there’s stuff on the Wiki, Todd Rinaldo, who has been leading a lot of the modernization efforts has been keeping really good notes in the Wiki. So you can see what people are talking about, how things are going and participate in whatever your comfort level is.

Brian D. Foy 01:05:45 Not the best place to keep up to date with parallel seven or where should you subscribe to, or that I don’t have any good answers for that. Other than my preparing for Pearl seven book, because there’s, there’s this nice trade off. You can either pay attention my newly every day, which I don’t particularly like to do. Or you, you check in every so often, but you miss a lot of stuff. And I, I try to, in all of my writing, including my effective parole programming blog, I try to fill in that gap where you don’t have to pay attention, but you’re going to get the stuff you need to know, but I’ll do a show on parlay and then we can cover off all of that.

Brian D. Foy 01:06:24 I’ll just hold my hands off. Few of these questions where Nick from your book, unless, cause it’s really good quality. Um, but we didn’t have that much time to go too deep so people can follow you on Twitter. Um, but how else do you like people to get in touch or do you like people getting in touch? I do stuff on Twitter. I don’t often carry out conversations there. Um, they can DM me if they like, but my email is easy to find. I put it everywhere so people can email me directly if they like I’m on stack overflow on Reddit and all these places. If you’re reading about parole, you’ve probably run across me. Uh, there, I tend to take communication any way that people want to do it just because trying to make people do it the way I like tends not to work out. Just let them do whatever they’re comfortable with and I’ll try to adapt to it.

Gavin Henry 01:07:20 Excellent. So thanks. Um, Brian, thank you for coming on the show. And this is Gavin Henry for software engineering radio. Thank you for listening.

[End of Audio]

This transcript was automatically generated. To suggest improvements in the text, please contact [email protected].

SE Radio theme: “Broken Reality” by Kevin MacLeod ( — Licensed under Creative Commons: By Attribution 3.0)

Join the discussion
1 comment
  • Thanks for bringing in #Perl expert @briandfoy_perl
    Great discussion, informative!
    Actually, I was expecting a few questions on data science, probably the missed opportunity we as a community…Is there any good module plan to kickstart #MachineLearning dev using Perl 7 or #Raku

More from this show