00:00:00.000 --> 00:00:05.000
Hey everybody, welcome back. This is Wolf.
00:00:05.000 --> 00:00:07.000
Maybe I should say my name is Wolf.
00:00:07.000 --> 00:00:15.000
Alright, I don't even know what to say. But it's me. It's me and my best friend Jim, my co-host. Jim, say hi.
00:00:14.000 --> 00:00:17.000
Hello, everybody.
00:00:16.000 --> 00:00:28.000
And this is another episode of Runtime Arguments. I'm not gonna go and do the whole numbers dance, but this is episode number 33, that's the part that's in the name.
00:00:28.000 --> 00:00:46.000
Yes, it disagrees with the actual index of the episode. Today, we are going to talk about Pearl. It happens that Jim is an expert in Pearl. In one way, it's his daily driver. I used Pearl for several years.
00:00:46.000 --> 00:00:57.000
When I worked for Slashdot, I was a Perl expert during that time. I have things to say about that kind of expertise. We'll talk more. Let's start with… Jim?
00:00:57.000 --> 00:00:59.000
How was your week?
00:00:59.000 --> 00:01:10.000
Oh, uh, it was good. It was good. You know, I love this time of year. Um, this is Tour de France time of year, and I just…
00:01:07.000 --> 00:01:09.000
Oh your favorite.
00:01:10.000 --> 00:01:35.000
I don't get into sports, but I just love watching the tour, I love listening to it, I have the TV going all day long, and the TV coverage is really good, and there's something about it, it just really… rocks my world, I guess. I just enjoy it. It makes me want to get out and ride my bike. And so I have. I do this every year. I get out and I start riding my bike. Unfortunately, uh, this year we've had the bad smoke.
00:01:35.000 --> 00:01:47.000
Uh, in the Michigan area. Um, so the… I mean, the last couple days has been good, so this weekend is looking good, so I will definitely be out on my bike. Uh, but last week, it was pretty awful.
00:01:46.000 --> 00:01:49.000
Oh, the air. Oh, so bad.
00:01:47.000 --> 00:01:51.000
It was, it was, oh my God, it was so bad.
00:01:50.000 --> 00:02:03.000
I don't know who's listening, but everybody should know, we live in a place, Michigan, far apart, I'm in Ann Arbor, and Jim's up in Waterford, but we live in a part of the country.
00:02:03.000 --> 00:02:11.000
where Canada makes a big difference to us, especially now, and especially in air quality. Um…
00:02:06.000 --> 00:02:08.000
Yes.
00:02:10.000 --> 00:02:30.000
And, you know, in defense of Canada, it's not just Canada. It's northern Minnesota, it's Wisconsin, it's even Michigan that has wildfires. It just seems like Canada has the most. And it can get pretty bad. I don't know why it's good right now. I mean, our air quality is at 42.
00:02:30.000 --> 00:02:32.000
The Air Quality Index.
00:02:30.000 --> 00:02:34.000
I, I don't know why we, uh…
00:02:32.000 --> 00:02:35.000
I don't know why it's so good today.
00:02:34.000 --> 00:02:50.000
get to feel bad about, oh, our air. Like, that's not the victim here. What about the people who are facing fire in Canada? My air is bad, fine, but my home is not burning.
00:02:46.000 --> 00:02:47.000
Yeah.
00:02:47.000 --> 00:02:50.000
Yeah, right.
00:02:50.000 --> 00:02:53.000
So, I feel bad for those people.
00:02:50.000 --> 00:02:52.000
Yeah, yeah.
00:02:52.000 --> 00:03:09.000
Yeah, for us, it's inconvenience for them. It's a horrible way of life. And I feel sorry for him. And fortunately, you know, you and I, you and I are insulated, we work inside, we can stay inside all day long. So what are we whining about? Right? I just I can't go riding my bike when it's bad.
00:02:57.000 --> 00:03:00.000
Yeah, that's very, it makes me very sad.
00:03:06.000 --> 00:03:08.000
Exactly.
00:03:10.000 --> 00:03:16.000
But yeah, it's my time of the year right now, and I'm enjoying it. How about you?
00:03:10.000 --> 00:03:11.000
Yam.
00:03:16.000 --> 00:03:19.000
Working my **** off.
00:03:19.000 --> 00:03:35.000
Um, accomplished some things, no real big things lately. I've been very happy with… I'm an Atuine user, which is what I use in the shell instead of Ctrl-R and Up Arrow, and I've been using my.
00:03:35.000 --> 00:03:45.000
fork, which is atoine at the tip plus my PR that gives you the powers of the FC, fixed command.
00:03:45.000 --> 00:03:49.000
Uh, utility rolled in, so you can go straight to an editor.
00:03:46.000 --> 00:03:49.000
It… it's a… it's a shell history tool.
00:03:49.000 --> 00:03:59.000
it is a shell history, but those words don't do it justice. If you haven't tried Etuine, you absolutely should. That's my… my advice for the moment. Um…
00:03:50.000 --> 00:03:53.000
For… Working with your history.
00:03:53.000 --> 00:03:55.000
Okay.
00:03:56.000 --> 00:03:58.000
Yeah, yeah.
00:04:00.000 --> 00:04:07.000
But, uh, pretty much, all in all, an ordinary week, or, I guess, really, two. Two weeks for us.
00:04:07.000 --> 00:04:11.000
Um, do we have any feedback this week? Anything to talk about?
00:04:11.000 --> 00:04:21.000
Um, no direct feedback about the last episode, but I think you and I both want to say a few things about recent events in the world of AI. Why don't you get started?
00:04:22.000 --> 00:04:23.000
So.
00:04:24.000 --> 00:04:32.000
There's that thing where you watch the news, and you're like, oh, that's horrible, oh, those people, why did they do that?
00:04:32.000 --> 00:04:41.000
And then they talk about something where you're an expert and you're like, does this person even know what they're talking about? Because those words don't go together.
00:04:41.000 --> 00:05:00.000
Um, and this is one of those… those words don't go together things. Uh, big story on the news… Um, and the story is that OpenAI was experimenting with models and whatnot, and they.
00:05:00.000 --> 00:05:03.000
had something sandboxed.
00:05:04.000 --> 00:05:15.000
And they were trying ordinary, non-aggressive things, and their model, or whatever it was that they were testing.
00:05:15.000 --> 00:05:32.000
escaped the sandbox, and by itself decided that to answer their questions, or their prompt, or whatever, it needed to attack and infiltrate.
00:05:32.000 --> 00:05:42.000
Hugging Face to get secret data, models, or instructions from a rival AI company.
00:05:42.000 --> 00:05:43.000
Now.
00:05:43.000 --> 00:06:02.000
some of… I assume almost everybody who's listening to this is technical, in some way or the other. And I'm sure that when I said that, those little bumps, which are often referred to as hackles, on the back of your neck went up, because absolutely everything I said sounded like it came from a government official.
00:06:02.000 --> 00:06:06.000
Completely false and unhelpful in all ways.
00:06:06.000 --> 00:06:09.000
When you have a sandbox.
00:06:10.000 --> 00:06:18.000
if you… and you're an expert, and you're getting paid, I don't know, half a million dollars a year, or whatever they make over there.
00:06:16.000 --> 00:06:18.000
Or more, yeah.
00:06:18.000 --> 00:06:23.000
How is it that you make a sandbox?
00:06:23.000 --> 00:06:27.000
From which… Things can escape.
00:06:27.000 --> 00:06:35.000
Number two is, how is it that an AI, that you're just asking questions to.
00:06:35.000 --> 00:06:39.000
Or whatever, I don't even know what they were really doing, because this story wasn't helpful.
00:06:39.000 --> 00:06:55.000
But instead of answering questions, and or saying things like, there's a question I can't answer, or giving you an answer that no one knows is true, but it says it's true, instead of doing any of those things, it decides, oh, I know what, I'll.
00:06:55.000 --> 00:06:59.000
Escape the sandbox, and I'll attack a competitor.
00:07:00.000 --> 00:07:05.000
Um, that's like, if you were sitting in your driveway.
00:07:05.000 --> 00:07:20.000
No, no, you're in your living room, but your key has a button on it, and you press it, and your car decides it would be better if you worked at home today, so I'll drive to work and get your desktop computer and bring it back.
00:07:22.000 --> 00:07:25.000
Everything I just said makes no sense.
00:07:25.000 --> 00:07:41.000
Cars don't go places by themselves. They absolutely don't drive to work without you. They absolutely aren't going in to get your computer, and they're not coming back. Also, they don't think.
00:07:41.000 --> 00:07:43.000
And they don't care about you.
00:07:43.000 --> 00:07:44.000
On.
00:07:44.000 --> 00:07:48.000
So, that story made me angry.
00:07:48.000 --> 00:07:50.000
Okay.
00:07:48.000 --> 00:07:50.000
I think you can hear it.
00:07:50.000 --> 00:07:51.000
Yeah.
00:07:51.000 --> 00:07:53.000
Yeah, it's coming right through.
00:07:51.000 --> 00:07:58.000
Now, I got further details later, and the details were words that sort of went together.
00:07:59.000 --> 00:08:05.000
But they were not details that made the story come anywhere closer to something that could be true.
00:08:05.000 --> 00:08:09.000
And that's all there is to say about this.
00:08:08.000 --> 00:08:21.000
No, don't stop there. Tell us what… what really happened. I'm on the edge of my seat here. You're saying it definitely didn't go down the way the news reported it did, so how did it go down?
00:08:20.000 --> 00:08:25.000
Well, I mean, there's some logical obviousnesses here.
00:08:26.000 --> 00:08:34.000
There's no such thing as, uh… Somebody who's an expert making a sandbox and your thing getting out of it.
00:08:34.000 --> 00:08:44.000
And that means, uh, this was intended. And number two is, why would it decide to attack Hugging Face to get stuff?
00:08:44.000 --> 00:08:56.000
That's not an answer to a question. That's someone saying, do this. Go attack Hugging Face. Get in and get these things. This wasn't an accident.
00:08:56.000 --> 00:09:02.000
Every single word that was said, even though it made no sense.
00:09:02.000 --> 00:09:08.000
leads to only one conclusion, and that conclusion is intentional.
00:09:08.000 --> 00:09:15.000
It did what it was told, but it got caught, so to get ahead of it, they announced it themselves.
00:09:15.000 --> 00:09:17.000
And.
00:09:17.000 --> 00:09:19.000
Who in OpenAI announced it?
00:09:17.000 --> 00:09:19.000
That's that's my.
00:09:19.000 --> 00:09:21.000
That's right.
00:09:20.000 --> 00:09:30.000
Yeah, okay. Okay. Because, because there is a, there is a joint, there's a joint statement, uh, by both OpenAI and Hugging Face on this issue.
00:09:21.000 --> 00:09:25.000
So, that is the…
00:09:30.000 --> 00:09:43.000
And, uh, you know, whether it's true or not, I mean, yeah, the statement is out there. It's on OpenAI's website. Um, but… If it is really telling the story, I don't know.
00:09:43.000 --> 00:09:58.000
It's… they… apparently, uh, it occurred… the incident occurred during an internal evaluation, which prompts models to pursue advanced exploitation using complex attack paths in an effort to quantify their cyber capabilities.
00:09:58.000 --> 00:10:07.000
So wait, let me see if I understand this. They built a model DESIGNED to break out and attack things.
00:09:58.000 --> 00:10:02.000
We estimate maximum… yeah, yeah.
00:10:05.000 --> 00:10:08.000
Oh, yeah. Yeah, definitely.
00:10:07.000 --> 00:10:16.000
And they told it, do your thing, and then it broke out and attacked things exactly like they made it to do.
00:10:17.000 --> 00:10:18.000
Yeah.
00:10:19.000 --> 00:10:20.000
Right.
00:10:19.000 --> 00:10:20.000
Yeah.
00:10:20.000 --> 00:10:23.000
When you walk into the kitchen.
00:10:21.000 --> 00:10:23.000
Okay, our…
00:10:23.000 --> 00:10:36.000
And there's a cookie jar broken on the floor, and cookies everywhere. And there's a step stool leaning up against the counter. And the place at the very top shelf where the cookie jar was is now empty.
00:10:26.000 --> 00:10:28.000
Oh, I'm gonna cry.
00:10:36.000 --> 00:10:43.000
And the kid is there. And the dog is there. And the kid says… It was the dog.
00:10:45.000 --> 00:11:01.000
Yeah. Okay. I'll read a little more. Our benchmarks run in a highly isolated environment with network access constrained to the ability to install packages through an internally hosted third party software that acts as a proxy and cache.
00:11:01.000 --> 00:11:03.000
for package registries.
00:11:03.000 --> 00:11:31.000
Um, and it goes on and on. I'm gonna include the link in the show notes, if anybody wants to read more about this. Uh, wait. While operating in our sandbox testing environment, our model spent a substantial amount of… Uh, inference, compute, finding a way to obtain open internet access in pursuit of solving the evaluation problem. To gain access, the models identified and exploited is zero-day vulnerability, which we've now responsibly disclosed to the vendor.
00:11:31.000 --> 00:11:44.000
in the package registry cache proxy. With this access, our models performed a series of privilege escalation and lateral movement actions in our research testing environment until the models reached a node with internet access.
00:11:44.000 --> 00:11:45.000
All right, look.
00:11:45.000 --> 00:11:46.000
laughs.
00:11:45.000 --> 00:11:58.000
at this point, um, you and I agree on many things, and we disagree on many things. And I'm gonna bring up one of the things we disagree with, but I'm kinda in your favor here. And that is this.
00:11:50.000 --> 00:11:52.000
Yeah.
00:11:52.000 --> 00:11:53.000
Yeah. Okay.
00:11:57.000 --> 00:11:58.000
Okay.
00:11:58.000 --> 00:12:04.000
We built a gun. Guns shoot bullets. It shot a bullet!
00:12:01.000 --> 00:12:03.000
Yeah.
00:12:03.000 --> 00:12:15.000
Oh yeah! Oh yeah! I know! They built this thing to do this thing, and… and it did it! And it did the thing! And now they're, uh… yeah.
00:12:09.000 --> 00:12:18.000
And then it did the thing! We didn't mean for it to do the thing.
00:12:17.000 --> 00:12:21.000
Well… Yeah.
00:12:21.000 --> 00:12:25.000
Maybe we didn't mean it to do it that well? I don't know.
00:12:25.000 --> 00:12:41.000
And, you know, it's entirely possible… okay, it's entirely possible that this, uh, statement, this joint statement between the two companies is really just damage control, and they're hiding what really happened. I'm not a conspiracy theorist, so I'm not gonna…
00:12:26.000 --> 00:12:29.000
We didn't expect it to actually work.
00:12:41.000 --> 00:12:56.000
I'm not going to go any further than that. Something bad happened, and it's quite interesting, and I really love your take on it. It's fun listening to you talk about things. You know, the thing about Wolf, you wind him up and just let him go.
00:12:56.000 --> 00:12:57.000
And it's just.
00:12:57.000 --> 00:12:59.000
It's just a delight.
00:12:59.000 --> 00:13:02.000
It's a lot of fun.
00:13:02.000 --> 00:13:09.000
Now, you have some thoughts on AI for another big public event. Why don't you talk about that?
00:13:05.000 --> 00:13:07.000
Bye.
00:13:07.000 --> 00:13:22.000
Yeah, yeah, another thing happened. Another thing that happened this week, Linus Torvalds, the inventor of the Linux kernel and maintainer of it, project leader of it. He came out on the all of his communication is done through the Linux kernel mailing list, the LKML.
00:13:22.000 --> 00:13:31.000
And he posted a message on there basically saying that the Linux kernel is not an anti-AI project.
00:13:31.000 --> 00:13:34.000
He views AI as a useful tool.
00:13:34.000 --> 00:13:58.000
uh, that… that can be used to… to benefit, uh, software developers. And this goes against an awful lot of… people, haters. And I admire Linus an awful lot. And this just reinforces my admiration for him. He said the thing.
00:13:44.000 --> 00:13:45.000
Haters.
00:13:58.000 --> 00:14:14.000
that I think needed to be said. Um, a few weeks earlier, Andrew Trigell, the Samba and Arsync guy, said basically the same thing, and he got a lot of hate for that. Anyway, Linus has faced a little bit of backlash for this.
00:14:14.000 --> 00:14:21.000
But… I don't know. I think it's kind of weird.
00:14:21.000 --> 00:14:51.000
I, um… I love what he said, because, yeah, I view AI as a tool. It's not… it's… it's not… you know, the only tool out there. It's just one of the tools in our toolbox. And I've been using it to do a few things, and it's really helped me. And my friends, I know Wolf is using it, uh, other friends are using it, um… And I think it's a great tool, and I just love the fact that Linus came out and said that. And it's too bad that he's getting some pushback, but he doesn't care.
00:14:51.000 --> 00:15:06.000
And I'm gonna, I'm gonna link that article or that, uh, that LKML posting in the show notes as well, so you all can view it. Um, and, you know, over the past few days, I've had some thoughts on my own about the haters of AI.
00:15:06.000 --> 00:15:21.000
And, you know, I'm… I may not make any friends here by what I'm saying. I understand that some people are just going to disagree with me on this. And that is, yeah, AI is a tool.
00:15:22.000 --> 00:15:28.000
Um, and the people that hate it… I don't think they understand it.
00:15:28.000 --> 00:15:30.000
And I was in this group.
00:15:30.000 --> 00:15:42.000
4 or 5 months ago, uh, maybe February, I was in this group. I didn't understand it, and I didn't think it could help, and I've learned better than that, and I think most of the people out there that are hating on it.
00:15:42.000 --> 00:16:02.000
I think a lot of them fall into that group. Maybe they saw it a few years ago, and it was just a worthless little thing that didn't do what they needed it to do, or the code that it produced was garbage, but… It has advanced to the point where it's… really, really useful.
00:16:02.000 --> 00:16:13.000
And I'm gonna… here's the thing that people aren't gonna like that I say, and that is, if you're not on board with it, you're gonna be left behind.
00:16:13.000 --> 00:16:15.000
Um, I…
00:16:14.000 --> 00:16:16.000
Adapt or die.
00:16:15.000 --> 00:16:31.000
Adapt or die. And, you know, I've seen this in my own family. I've got a couple of brothers. One of them is in the advertising world. He writes ad copy, brochures and stuff, and he's had a really nice career doing that.
00:16:31.000 --> 00:16:38.000
And he's found his work, he's a freelancer, he's found his work dry up almost completely.
00:16:38.000 --> 00:16:50.000
And he tells me it's because AI. AI is out there, and it's replacing him. And I feel so sorry for him, because he… He could have seen it coming.
00:16:50.000 --> 00:16:52.000
And, and, uh.
00:16:52.000 --> 00:17:13.000
Um, uh… adapted it, or learned it, and understood it, and be on the forefront of that technology. Because I tell you what, AI's not going to go away. All the pickets, all the people complaining, and you know, I see people… I'm on Mastodon. I try to stay away from social media, but I am on Mastodon, and I enjoy that.
00:17:13.000 --> 00:17:17.000
And I check it out every couple, well, a couple times a day.
00:17:17.000 --> 00:17:23.000
And the ratio of AI hate to everything else.
00:17:23.000 --> 00:17:30.000
There's an awful lot of AI hate. It's probably 50% of the posts that I read on Mastodon are people hating on AI.
00:17:30.000 --> 00:17:48.000
And these people, like Wolf said, adapt or die, because they're gonna find themselves in a situation like my brother, where they didn't adapt, and now they're in trouble. And it… Man, it just makes me feel bad and I don't know.
00:17:45.000 --> 00:18:01.000
I think for any particular thing that is controversial at all, um, there's a scale, and at one end of the scale… let's start in the middle. In the middle of the scale are people who.
00:18:01.000 --> 00:18:17.000
Um… are interested in the facts, and the whys, and how does this work, and is it helpful? And at a far end of the scale are people who are emotionally wrapped up in it.
00:18:17.000 --> 00:18:20.000
This thing is great.
00:18:20.000 --> 00:18:34.000
And they brook no bad news about it. And at the other opposite end of the scale are people for whom it's just a bad thing. And if you're at one of the ends of the scale.
00:18:34.000 --> 00:18:51.000
You don't care about facts. You'll claim to. They always claim to, but they're absolutely unconvincible. You can't have an argument with them. And I also believe that for any human being, for me, for you, Jim, for everyone.
00:18:52.000 --> 00:18:55.000
Some part of your life.
00:18:55.000 --> 00:18:57.000
You fall.
00:18:57.000 --> 00:19:01.000
In a place on this scale, you wish you didn't.
00:19:01.000 --> 00:19:10.000
Um… Maybe for that thing you wish you didn't, but you don't, in a place you don't want to admit that you did.
00:19:10.000 --> 00:19:16.000
For instance, I am willing to argue about tools.
00:19:16.000 --> 00:19:29.000
the tools you use when programming. And for me, AI is another one, another tool. So, it's about the facts for me. Does it help? Does it increase my output? Is the output as good? Am I comp… you know, things like that.
00:19:29.000 --> 00:19:44.000
Um, whereas… And maybe this is a bad thing to say, but… I just like, um, foreign cars better than I like American cars. I'm not saying American cars are bad.
00:19:44.000 --> 00:19:53.000
And I'm also not saying that foreign cars are good. Um, it's just… I don't actually know the facts.
00:19:53.000 --> 00:20:06.000
And if somebody bothered to have an argument with me, maybe I'd move closer towards the center of the scale, but I'm not… I'm not interested in talking about it. I've got what I like, and I don't have any reason to change.
00:20:06.000 --> 00:20:20.000
Um, and, uh, you and I have this conversation all the time, Jim, about other things. I have this conversation, or I used to, with my wife's parents. They have things they believe in. Um, everybody has something.
00:20:20.000 --> 00:20:26.000
And I think that AI is a very, very controversial subject.
00:20:26.000 --> 00:20:38.000
that there are people who just have feelings about it, and will pretend to argue with you, but they don't care about facts. What they care about is their feelings.
00:20:38.000 --> 00:20:40.000
Well, yeah.
00:20:38.000 --> 00:20:42.000
Sometimes good, sometimes bad, but that's just the way it is.
00:20:41.000 --> 00:20:51.000
Yeah, you know, talk to the blacksmiths that were shoeing horses back when the automobile came out.
00:20:51.000 --> 00:21:05.000
you know they didn't like automobiles. They… you know… and now, how many… how many blacksmith jobs are out there? Uh, how many people are using… doing that as gainful employment? And… and the people…
00:21:04.000 --> 00:21:07.000
I guess the two at Greenfield Village, right?
00:21:06.000 --> 00:21:11.000
Yeah, right. Okay, so at least 2 in Michigan.
00:21:10.000 --> 00:21:12.000
Uh-huh.
00:21:11.000 --> 00:21:17.000
Right? I mean… I don't know.
00:21:17.000 --> 00:21:31.000
Uh, as a person who owned a horse at one time, I can say, um, they do need shoes, and those shoes, like, still to this day, and those shoes come from blacksmiths, so there are some, just not nearly as many.
00:21:17.000 --> 00:21:21.000
People are being left behind and they have an opportunity here.
00:21:21.000 --> 00:21:22.000
Yes.
00:21:24.000 --> 00:21:26.000
Yeah.
00:21:31.000 --> 00:21:41.000
Sure, and there will always be programmers out there that can make a living by not using AI. It's just going to be tough.
00:21:41.000 --> 00:21:50.000
And I don't know, this is the thing that people probably won't like hearing. It's the people that don't like ai, they won't wanna hear this. But I, I, I think.
00:21:50.000 --> 00:21:52.000
I think they need to wake up.
00:21:52.000 --> 00:21:54.000
Anyway.
00:21:54.000 --> 00:22:06.000
So, speaking of things that you can grow too attached to… Um… And sticking with it, in spite of the invention of things that people might argue are better.
00:22:06.000 --> 00:22:10.000
Jim, why don't you tell us all about Pearl?
00:22:10.000 --> 00:22:46.000
Alright, well, this isn't… this isn't an episode about, you know, how to program in Perl. Um, uh, this is really more about, uh, uh, Perl, uh, the language that just refuses to die. When, uh… I don't know. Maybe it should. It's… it's, um… I've been using Pearl since the mid-90s, back when there wasn't a lot of other stuff to choose from. I could have chosen Python at the time. I could have chosen Java.
00:22:46.000 --> 00:22:49.000
At the time, I, I didn't really wanna do Java. It just looked.
00:22:49.000 --> 00:23:03.000
You know, think about 1996, what Java was. It was applets, uh, creating, uh, spinning coffee cups on computer screens, and that just didn't seem like the way to get things done to me.
00:23:03.000 --> 00:23:13.000
And Python was out there, but a friend of mine, a friend of both of us, Ron, he was doing some stuff in Perl, and I asked him one day.
00:23:13.000 --> 00:23:25.000
what, uh, you know, I've got this little thing I'm doing, what do you think? And he said, eh, Pearl, and use Template Toolkit, and… And that was it. I started using it, and, you know.
00:23:25.000 --> 00:23:31.000
Um, it, it, it's, it worked very well for me. I've got an awful lot of pearl code.
00:23:31.000 --> 00:23:36.000
Uh, in my production environment, and it's working really, really well.
00:23:36.000 --> 00:23:40.000
we… we just do a lot of Pearl programming. Um…
00:23:38.000 --> 00:23:53.000
And can I say, um, you and I just have had many discussions about this, uh, where we talk about if you could go back in time, and as much as I love Python, I point out.
00:23:53.000 --> 00:23:54.000
That.
00:23:54.000 --> 00:23:57.000
The Python you could have chosen then.
00:23:57.000 --> 00:24:12.000
was not nearly as good as the Perl you chose then. Perl had been alive longer, it knew more things. Python hadn't been alive that long, and was not nearly as good as it is now.
00:24:12.000 --> 00:24:16.000
Um, of the things you could have chosen.
00:24:16.000 --> 00:24:20.000
I do not disagree with your choice.
00:24:20.000 --> 00:24:35.000
Yeah, it, it, uh, you know, Pearl started in 1987. Larry Wall created it, uh, and, and released it to the world in 87. Uh, Python, uh, wasn't released to the public until 91.
00:24:35.000 --> 00:24:39.000
So, you know, Pearl had 4 years on it, and…
00:24:38.000 --> 00:24:42.000
That's less than I remembered.
00:24:39.000 --> 00:25:02.000
And… Yeah, it, um… but it was at a time when Pearl was the king of the world, you know? Pearl… Pearl was there when the internet started happening, when the World Wide Web started taking off. Pearl was coined, uh… the duct tape of the internet. And, you know, at that time, there probably wasn't a lot of room for Python to thrive.
00:25:02.000 --> 00:25:16.000
uh, Pearl was, was, you know, getting all the work, and, and doing a lot of stuff, so, so I, I would guess that Pearl grew and became mature quicker than Python did.
00:25:17.000 --> 00:25:23.000
Um, and… It just sort of kept on going.
00:25:23.000 --> 00:25:35.000
Um, and then, when did Python get good, do you think? I know I used it in, like, 97. I did a little bit of Python programming, and I want to think it was, like, version 1.7.
00:25:35.000 --> 00:25:46.000
Well, uh, the very first time I laid hands on Python was in 1998, and I was using Python 1.3.1.34.
00:25:35.000 --> 00:25:36.000
Umm.
00:25:46.000 --> 00:25:47.000
Okay.
00:25:46.000 --> 00:25:51.000
Um, and that was, I was writing scripts that helped us.
00:25:51.000 --> 00:25:54.000
Clean up the Mozilla source code.
00:25:54.000 --> 00:25:58.000
Uh, to release to the world, open source, our first open source release.
00:25:57.000 --> 00:25:58.000
Mmhm.
00:25:58.000 --> 00:26:07.000
And it was okay. I think Python got good at 2, and got great at 3. That's my opinion.
00:26:08.000 --> 00:26:13.000
Yeah, I was definitely playing with it in the… before version 2.
00:26:13.000 --> 00:26:25.000
Um… Uh, and, and it wasn't great. You know, like you say, at that time, Pearl had the ecosystem. Pearl had CPAN, the comprehensive.
00:26:25.000 --> 00:26:30.000
I, I don't even, what, what does CPAN stand for? Do you remember?
00:26:28.000 --> 00:26:31.000
Comprehensive Pearl Archive Network.
00:26:30.000 --> 00:26:39.000
Ah, that's it. Maybe the first package repository for software.
00:26:39.000 --> 00:26:50.000
Right? It… it… I think it predates everything else that I know of. Certainly NPM, and uh… Python's packages, and… and uh…
00:26:48.000 --> 00:26:54.000
And CPAN runs to this day, and builds and runs the tests.
00:26:52.000 --> 00:27:10.000
It's still out there. Yeah, it's still there. You know, people test… Perl code, and, you know, there's a whole testing infrastructure, and… and, um… so, yeah, that's… that's my reason for starting to use it, and my reason to continue using it is momentum.
00:27:10.000 --> 00:27:22.000
I had a lot of code that I developed in Pearl, and, you know, I wasn't gonna rewrite the program. Wolf, what do you say about rewriting a whole product?
00:27:22.000 --> 00:27:27.000
I know you've had things to say about it.
00:27:24.000 --> 00:27:38.000
the thing that, when people say rewrite, usually they mean stop the world, replace everything that exists, and then start the world up again. Um, that middle part, where the world is stopped, never ends.
00:27:28.000 --> 00:27:30.000
Yep.
00:27:38.000 --> 00:27:43.000
If you decide that your plan is to rewrite the world, you already lost.
00:27:38.000 --> 00:27:40.000
Yeah.
00:27:43.000 --> 00:27:50.000
Uh, I don't want to bring up the name Rick Gessner. Oh, darn, I did. You'll have to edit that out.
00:27:47.000 --> 00:27:49.000
Yep.
00:27:50.000 --> 00:28:09.000
He's the guy who made us rewrite, um… uh, Netscape Navigator to include their, uh, previously Java-implemented rendering engine, and instead of shipping in three months, or whenever it was going to be, we shipped in two and a half years. Um, and that was a huge mistake, and.
00:28:09.000 --> 00:28:18.000
that is one reason why Netscape is not, uh, on top of the world anymore. There's many reasons since then, but, um…
00:28:16.000 --> 00:28:17.000
Sure.
00:28:17.000 --> 00:28:19.000
Sure.
00:28:18.000 --> 00:28:34.000
Nope, you gotta do it one step at a time, just like you do everything else. Um… I would argue that momentum is your biggest enemy, Jim. I'm lucky I forget stuff, so momentum means so much less to me.
00:28:34.000 --> 00:28:47.000
I'm like Memento, right? I've got it all tattooed where I'm gonna go next. Get this guy, don't believe anything he says. Uh, but you've got momentum, you already know what you're working on, so…
00:28:37.000 --> 00:28:38.000
Okay.
00:28:40.000 --> 00:28:43.000
Yeah, yeah.
00:28:43.000 --> 00:28:46.000
All right, all right, you.
00:28:46.000 --> 00:28:56.000
You… you… yeah, you… you may… you may not have the memory, but you've got the mind to just figure things out.
00:28:56.000 --> 00:29:26.000
Right? So, uh, let's back up a little bit. Before I was using Pearl, I was a COBOL developer. I wrote an awful lot of stuff in COBOL. Probably… I think at one point, I counted over a million lines of code that I had written. Um… or my team had written in COBOL, so we had a ton of COBOL out there up until 96 or so. Well, really, about 2000, when I left a company that I was working for, that I developed a whole system for.
00:29:26.000 --> 00:29:39.000
Um, I wanted to develop a similar system, and I had… fortunately, when I did that, I had a source code license to the COBOL code, so when I left, I could continue.
00:29:39.000 --> 00:29:55.000
supporting customers with that COBOL code. But I knew to do any real serious development in 2000, COBOL was not going to be the way to write web applications. I know there's ways to do it, but that just wasn't the way I wanted to go. I wanted a serious database.
00:29:55.000 --> 00:30:13.000
I wanted a serious, uh, web programming language. Uh, it wasn't gonna be COBOL. So, uh, I needed to rewrite. Like, like you say, don't, you know, don't stop the world and rewrite. So I, somehow, I had the forethought to, and I think I mentioned this on the podcast in previous episodes.
00:30:13.000 --> 00:30:29.000
I, uh, the COBOL we used was, um, AccuCOBOL, and I had the ability to link in C code into the AccuCOBOL runtime, so I could run COBOL code that could reach out and call C. Well, because I had that C.
00:30:29.000 --> 00:30:39.000
bridge there. I linked in the Pearl runtime into the COBOL runtime. So now, from COBOL, I could call Pearl. And by doing that, I could.
00:30:39.000 --> 00:30:52.000
I could use the database. I could, I could, uh, connect to a Postgres database, because Py, uh, Perl has a great, uh, uh, package for talking to Postgres. It's part of the, uh, the DBI, uh, package.
00:30:52.000 --> 00:31:02.000
And, uh… and there's a module for Postgres, and MySQL, and all the rest. Anyway, we were using… we were dabbling with Postgres at the time.
00:31:02.000 --> 00:31:06.000
And so now from COBOL, I'm reading and writing.
00:31:06.000 --> 00:31:08.000
Python, I'm sorry.
00:31:08.000 --> 00:31:16.000
reading and writing Postgres databases, and so now I can start to replace the system piece… one piece at a time.
00:31:15.000 --> 00:31:20.000
You should tell the listeners that, um, COBOL.
00:31:16.000 --> 00:31:17.000
So.
00:31:20.000 --> 00:31:28.000
does NOT have a built-in database, nor does it have a reasonable way to touch one.
00:31:28.000 --> 00:31:44.000
Yeah, um, you know, I think if you're on COBOL on an IBM mainframe, you're gonna talk to their database. There's no question that that exists. And at the time, AccuCOBOL was developing an interface to connect to databases.
00:31:44.000 --> 00:32:00.000
But it costs money, and… I could do it my way. And it turned out my way worked beautifully. The performance was every bit as good as the ISAM files that the COBOL system was using, but it opened up so much more.
00:32:00.000 --> 00:32:01.000
Power.
00:32:01.000 --> 00:32:17.000
to me to actually work with a real database. And now I could read and write data from COBOL. And I could also read and write data from any other language I wanted. So now I can have programs in different languages, all talking to the same database, and in a real business application.
00:32:18.000 --> 00:32:35.000
It's the database that matters, right? The language doesn't. It's the database. We did. It's the database. Everything is about the database. How you talk to the database shouldn't matter. So I was able to write Pearl programs talking to the database to slowly replace the.
00:32:20.000 --> 00:32:24.000
It is. We even did an episode on that.
00:32:35.000 --> 00:32:43.000
COBOL programs, and it took a few years, but meanwhile, the customer was getting new features all the time. Uh, we did not stop development.
00:32:40.000 --> 00:32:54.000
See, this is… It does not matter if you have said this before, because, uh, two things. Number one, this is one of the most obvious, from the outside.
00:32:54.000 --> 00:32:59.000
great things that you have shown to the world.
00:32:59.000 --> 00:33:08.000
And number two, um, is… it is an accomplishment, whether you told anybody or not. The fact that you went.
00:33:08.000 --> 00:33:24.000
without stopping the world, from one whole way to a whole different way, and you had the foresight that the different way, the thing you landed on, was so much better, that you did it the one.
00:33:24.000 --> 00:33:27.000
step at a time way.
00:33:27.000 --> 00:33:39.000
This is, uh… you know, when I… if someone says, hey, what's the most admirable thing you know of, the most fantastic technical accomplishment that Jim made.
00:33:39.000 --> 00:33:48.000
Um, without hesitation, I would tell them, it was this transformation. You did the right thing.
00:33:48.000 --> 00:33:57.000
You were looking ahead, you knew what you needed, you knew how not to get there, and you got there.
00:33:57.000 --> 00:34:08.000
And every step along the way, it was production ready. Every step along the way, the customer was still happy. Every step along the way, you could prove it still worked.
00:34:08.000 --> 00:34:16.000
And one day, you were all the way on the other side of the road, and there weren't any hunks of cobalt left.
00:34:16.000 --> 00:34:21.000
I'm hoping. Please tell me there's no COBOL left.
00:34:17.000 --> 00:34:18.000
That was.
00:34:18.000 --> 00:34:34.000
Oh, gosh. No, COBOL's been out for 17 years. And I just love the fact that I haven't had to look at a line of COBOL in all that time.
00:34:34.000 --> 00:34:49.000
You know, I did a lot with COBOL, I made a lot of money with COBOL, but it was not a friendly language to work with, if you really wanted to do anything serious. You know, it's a business language, and you could do business-y things, you could create a payroll program.
00:34:49.000 --> 00:34:59.000
But to try to do any modern development with it was just painful. And I know there are enhancements to COBOL that make that better now, but… no.
00:34:59.000 --> 00:35:10.000
That's… that's not what I wanted to do. So yeah, the day we finally threw away that old piece of cobalt, the last remaining piece, was… was, uh… that was a moment.
00:35:07.000 --> 00:35:09.000
Do you remember what it was?
00:35:10.000 --> 00:35:16.000
You know, I don't, I don't, I just, I've, I've erased it from my memory, but, uh, we.
00:35:14.000 --> 00:35:17.000
I would have written that down.
00:35:16.000 --> 00:35:31.000
we had a lot of COBOL code, and it took a long time. But, you know, now all of our data is in a Postgres database, we can access it from Perl, we can access it from Python if we wanted to.
00:35:31.000 --> 00:35:41.000
Anyway, let's go back to what we're talking about today. That is Pearl. Pearl gave me the power to do that, right?
00:35:41.000 --> 00:36:01.000
it had that ability to link in, uh… to see, and to be called from other languages, and that was just fantastic. And I understand Python has the same thing, right? I could embed a Python runtime in my, um… in any program I wanted. I suppose I could run Python code from Pearl, right?
00:35:58.000 --> 00:36:00.000
You can.
00:36:00.000 --> 00:36:02.000
Absolutely.
00:36:02.000 --> 00:36:11.000
Um, uh, it very, very powerful stuff. Uh, and I, I really enjoyed doing that. Um.
00:36:11.000 --> 00:36:13.000
Ugh.
00:36:13.000 --> 00:36:15.000
You know.
00:36:16.000 --> 00:36:33.000
I was… this was, you know, 2000, I started really working with Pearl a lot. I'd been dabbling with it a lot in the late 90s, and then 2000, we started to get serious, and we decided, I think maybe it was 2001, we said, okay, we're gonna rewrite the system. And yeah, it took, like, 9 years to completely get rid of everything.
00:36:33.000 --> 00:36:35.000
Um.
00:36:34.000 --> 00:36:36.000
I have one question.
00:36:35.000 --> 00:36:37.000
Yeah, yeah.
00:36:36.000 --> 00:36:39.000
When you said "we".
00:36:39.000 --> 00:36:41.000
Who's we?
00:36:40.000 --> 00:36:42.000
It was, it was B.
00:36:42.000 --> 00:36:57.000
It was me over the years. Over the years, I've had people working for me. But you know, it was me. I you know, small company, couple of employees, but it was all me making the decisions. And that was that was the decision that I made.
00:36:57.000 --> 00:37:01.000
Now, Pearl was going great.
00:37:01.000 --> 00:37:16.000
seemed like, you know, at a time in the late 90s, and really around 2000, Pearl was everywhere. You go into a bookstore, and by far, the most number of books you could see on one shelf, or a couple of shelves, the topic was Pearl.
00:37:17.000 --> 00:37:24.000
Right? There's the, there's the, the, the, the camel book. There's all kinds of books on Pearl and, and.
00:37:24.000 --> 00:37:40.000
Back then, you remember the O'Reilly Open Source Conference, OSCON. That was… that started out life as a Pearl Conference. You know, they'd get Larry Wall to talk, and then Randall Swartz, and… and all kinds of other people talking. It was largely a Pearl Conference.
00:37:40.000 --> 00:37:54.000
with a lot of other stuff added on, and it slowly became an open source conference, and I had the wonderful opportunity in July of 2000. I was at the OzCon in San Diego, California.
00:37:54.000 --> 00:37:58.000
Ron was with me. The two of us were down there.
00:37:58.000 --> 00:38:04.000
And we're in the… we're in the room, and it was, uh… the topic was, like, a keynote by Larry Wall.
00:38:04.000 --> 00:38:12.000
And I'm sitting there in the audience, and it's a big audience, and it was, you know, it was a lot of fun. And, uh, that was when Larry Wall announced Pearl-6.
00:38:12.000 --> 00:38:17.000
And he talked about how, you know, we can't continue developing Perl 5.
00:38:14.000 --> 00:38:17.000
Were there actual.
00:38:17.000 --> 00:38:21.000
Funeral bells ringing when he said those words?
00:38:19.000 --> 00:38:35.000
No! No, but it, uh… he announced Pearl-6, and he announced the reasons why they were gonna jump to Pearl-6, because Pearl-5 had been out for a while. I started with Pearl-4, but fairly quickly on it, moved to Pearl-5-something.
00:38:35.000 --> 00:38:46.000
And… and that's what the world was on. And he announced Pearl-6, uh, and they were gonna throw away everything, and… and rebuild from the ground up. Uh…
00:38:44.000 --> 00:38:48.000
Did they not listen to the first part of this podcast?
00:38:48.000 --> 00:39:05.000
Um, I'm pretty sure they did not. They were… they were gonna continue developing Pearl 5, and, you know, do bug fixes and enhancements, while a big chunk of the core team moved on to developing Pearl 6.
00:39:05.000 --> 00:39:19.000
And, like I said, it was a completely rewrite from the ground up, change the parser, change everything, and make it all compatible. That was one of the things that they said. And Pro is notorious for being backward compatible.
00:39:19.000 --> 00:39:34.000
They take great strides to make sure that they don't get rid of things and make things incompatible. And it happens from time to time, but they're really, really good about backward compatibility.
00:39:34.000 --> 00:39:38.000
And they said Pearl-6 was going to be backwards compatible.
00:39:38.000 --> 00:39:46.000
And I think he said it was going to take a year or two before they could have a public release. And remember, this is 2000.
00:39:46.000 --> 00:40:01.000
it went year after year after year of people talking about Pearl-6, and it's not out yet, and it's gonna be out real soon. They've got things that build, and… and it's gonna be released soon, and it just went on for year after year.
00:40:01.000 --> 00:40:09.000
And… I think that probably did more to kill Pearl than anything else.
00:40:09.000 --> 00:40:14.000
It, they violated Wolf's rule about don't rewrite.
00:40:14.000 --> 00:40:22.000
And I think the world got confused about what direction Pearl was going.
00:40:22.000 --> 00:40:28.000
You know, should they develop new programs in Pearl-5 when 6 is just around the corner?
00:40:28.000 --> 00:40:43.000
Uh, and meanwhile, Python is coming up. You know, Guido was pushing hard on Python, and the ecosystem was… Building and the quality was building and and.
00:40:43.000 --> 00:40:46.000
the world took off. You know…
00:40:44.000 --> 00:40:53.000
And frankly, you know, Python, as I have often said, is like coming into work to play with a puppy.
00:40:53.000 --> 00:40:54.000
Yeah.
00:40:53.000 --> 00:40:58.000
And Pearl is like coming into work to pet your porcupine.
00:40:58.000 --> 00:41:00.000
So.
00:41:00.000 --> 00:41:15.000
It's not just that, you know, Python is getting pushed and now there are problems. Python 2 to 3, that was huge. And for almost the opposite of what you're saying, you're saying, oh, people didn't know whether to develop in Pearl 5 or start in Pearl 6. The Python people were like.
00:41:15.000 --> 00:41:18.000
And these are the consumers.
00:41:18.000 --> 00:41:21.000
We've got programs that work fine on two.
00:41:21.000 --> 00:41:26.000
Why change to three? Why would we do that?
00:41:22.000 --> 00:41:23.000
Yeah, okay.
00:41:24.000 --> 00:41:25.000
Right.
00:41:26.000 --> 00:41:28.000
So, anyway, go on.
00:41:27.000 --> 00:41:33.000
And there's still a lot of Python 2 out there. Was it 2.7 or something?
00:41:32.000 --> 00:41:33.000
No.
00:41:33.000 --> 00:41:34.000
They're.
00:41:34.000 --> 00:41:36.000
No.
00:41:34.000 --> 00:41:45.000
No, there's way more 3 than 2 now. That transition is done, and Guido and others have said, yeah.
00:41:37.000 --> 00:41:40.000
Okay. Okay.
00:41:40.000 --> 00:41:41.000
Okay.
00:41:45.000 --> 00:41:55.000
3's it. We're gonna have lots of versions of 3. Uh, I think we're working on… 3.14 is released, we're working on 3.15 at this moment.
00:41:55.000 --> 00:42:03.000
And there'll be, you know, 3, 100, or whatever, but there's never going to be a 4. Nobody's going to get that choice again.
00:42:00.000 --> 00:42:08.000
But it seems like… yeah, right, right. Well, it seems like, though, when you install, like, an Ubuntu system.
00:42:08.000 --> 00:42:16.000
Doesn't it ship with… Python 2? Or maybe… I mean, you have to… you have to do things to make sure it uses Pearl 3.
00:42:16.000 --> 00:42:24.000
I'm sorry, not Pearl. I'm backwards. Python. Isn't it using… doesn't it ship with Python 2 still?
00:42:17.000 --> 00:42:31.000
Um… I don't know if that's still true, because I never use the system Python, because the system Python is not for you.
00:42:25.000 --> 00:42:26.000
Okay.
00:42:28.000 --> 00:42:40.000
Okay. Because you use… you use the virtual environment, I understand. But, uh, anyway, this is not a talk about, uh, Python, this is about Perl. I keep confusing the two, though, so…
00:42:38.000 --> 00:42:40.000
We'll see about that.
00:42:40.000 --> 00:42:43.000
Barely, yeah.
00:42:44.000 --> 00:43:00.000
Yeah, thanks. Thanks, Wolf. So, there was this fracturing in the community. People confused about which way to go, and some of the, you know, some of the developers, some of the great developers moved on to Pearl-6.
00:43:00.000 --> 00:43:15.000
And… I don't know. It bothered me. Um, but not enough to switch. I was, you know, I had a lot invested in that point, at that point in Pearl. So I, um, you know, I kept moving forward with that.
00:43:15.000 --> 00:43:30.000
Um, you know, eventually… they came to their senses, and they realized, you know, Pearl-6 isn't going to be compatible with Pearl-5, so maybe we shouldn't call it Pearl. So Pearl-6 became Raku.
00:43:30.000 --> 00:43:39.000
R-A-K-U? I think I'm saying it right. Um, it became Raku. It became a language all of its own. And I…
00:43:37.000 --> 00:43:42.000
Raku is Japanese for, um… Unused?
00:43:44.000 --> 00:43:47.000
Is that what it stands for?
00:43:46.000 --> 00:43:48.000
I don't think so.
00:43:48.000 --> 00:43:49.000
No, no.
00:43:49.000 --> 00:44:14.000
So they made an announcement that, yeah, Pearl-5 is just going to continue on. They're going to keep developing it. This other thing is going to be called Rakut. It's its own project. It's somewhat related. It's the syntax is… kind of similar. You can take some Pearl programs and run them in Rakut, but they changed a lot.
00:44:14.000 --> 00:44:40.000
I had ignored it. I just stayed away from that. I just kept moving forward with the Pearl-5 chain, and um… Pro five is continues on. I think, um, they just released a, a new version, uh, on the 15th. Uh, what is that last week? Um, the, the, the newest version of Pearl. Uh, what's the newest?
00:44:40.000 --> 00:44:50.000
Bear with me, I'm actually… searching online. Yeah, Pearl 5.44 came out July 15th, so it's still actively developed, it's still out there.
00:44:50.000 --> 00:44:51.000
Um, no.
00:44:51.000 --> 00:44:55.000
There's, you know, there's a lot of people using it, but.
00:44:55.000 --> 00:45:13.000
One of the things that bugs me about Pearl is, you know, you see, like, these lists of most popular languages, you know, by popularity, either by languages people like, or languages that people are using, or projects that are.
00:45:13.000 --> 00:45:19.000
that are built around Pearl. And it's a lot of times Pearl just doesn't show up at all on the list.
00:45:19.000 --> 00:45:23.000
You know, what's the list you shared with me this morning?
00:45:22.000 --> 00:45:30.000
This morning, somebody did, uh, and this was on Mastodon, and I boosted it, and then, um, sent it to you, Jim.
00:45:30.000 --> 00:45:33.000
It was a person who did a query.
00:45:33.000 --> 00:45:42.000
for all of the brand new projects on GitHub, so made in 2026, that had gotten.
00:45:42.000 --> 00:45:46.000
100 stars or more.
00:45:46.000 --> 00:46:01.000
and whose primary language was Perl. Oh, it was not Perl. What they did was they grouped it by primary language. And of those projects, they didn't say, but Jim and I later did this ourselves.
00:45:50.000 --> 00:45:53.000
It was… was… whatever.
00:45:54.000 --> 00:45:56.000
Right.
00:46:01.000 --> 00:46:14.000
There were 17 and a half thousand such projects. And number one, every time any of us ran it was Python with over 5,000.
00:46:14.000 --> 00:46:19.000
And then JavaScript, and then what was third? Was that Rust, or was that…
00:46:17.000 --> 00:46:23.000
Well, Type… TypeScript. I think it's, like, TypeScript, then JavaScript, or… or they're.
00:46:23.000 --> 00:46:42.000
I think if you combine JavaScript and TypeScript together, maybe it would beat Python, but, um… Oddly, or interestingly, Pearl was not in the top 10.
00:46:42.000 --> 00:46:57.000
And this list listed the top 10, but then it also mentioned Ruby and PHP. And they were way down there on the list. But Python wasn't listed at all, so that's when Wolf and I…
00:46:55.000 --> 00:46:59.000
No, no, Perl wasn't listed at all. Python was number one.
00:46:57.000 --> 00:46:59.000
Pearl wasn't listed.
00:46:59.000 --> 00:47:03.000
Yeah. Python. Python. What?
00:47:03.000 --> 00:47:05.000
Pearl was not listed.
00:47:05.000 --> 00:47:23.000
Um… And so I said, What do you mean? It's not even on the list. And well, it didn't make the top 10. And they didn't think it was interesting enough to mention as a sidebar, like they did PHP and Ruby. So we did some digging. What did we find?
00:47:23.000 --> 00:47:25.000
What did you find?
00:47:24.000 --> 00:47:33.000
I found that of those 17,500 projects that were created in 2026 and had 100 or more stars.
00:47:33.000 --> 00:47:35.000
There were.
00:47:35.000 --> 00:47:44.000
three projects that met those qualifications and were, uh, the primary language was Perl. That made Perl number 49.
00:47:37.000 --> 00:47:38.000
Yes.
00:47:46.000 --> 00:47:48.000
Yeah, it's…
00:47:48.000 --> 00:47:51.000
of a hundred and sixteen languages.
00:47:48.000 --> 00:47:51.000
Yeah, it's down there on the list.
00:47:51.000 --> 00:47:55.000
Yeah, number 49. It's not the bottom.
00:47:55.000 --> 00:48:01.000
But, uh, you know, if you're a young kid wanting to learn programming.
00:48:01.000 --> 00:48:05.000
Is, is Perl the language you're gonna pick up and, and run with?
00:48:05.000 --> 00:48:07.000
Oh, wait, wait, wait. I know. Call me.
00:48:07.000 --> 00:48:12.000
The answer is no.
00:48:10.000 --> 00:48:25.000
Pick me, pick me. Yeah, yeah. The answer is no. You're not gonna pick it. Um, I'm not even picking it for my new development. I do a lot of maintenance work in Pearl. Uh, I do write some new programs that have to fit in.
00:48:25.000 --> 00:48:36.000
cleanly with the rest of our system. So those are plural. But I also work on other parts of our system that are completely independent of the base code that we have.
00:48:36.000 --> 00:48:42.000
I'm not using Perl for that. I'm… I'm… I've moved to, uh, TypeScript.
00:48:42.000 --> 00:48:57.000
And I'm… I'm loving every second of that. Um, you know, one of the things about Pearl, like… like Wolf mentioned earlier, it's like playing with a porcupine. You know? I'm not sure… it's not like spiky needles…
00:48:55.000 --> 00:48:58.000
You pet it in the right direction, and it's okay!
00:48:57.000 --> 00:49:06.000
It's not like spiky needles poking you, but I tell you what, Pearl does nothing to help you.
00:49:06.000 --> 00:49:08.000
Get your job done.
00:49:08.000 --> 00:49:17.000
Right? I mean, Pearl is there, and it's the duct tape of the internet, and you can do anything with it. The packages on CPAN are fantastic.
00:49:12.000 --> 00:49:14.000
Yo.
00:49:14.000 --> 00:49:20.000
I think… I think this is why, um…
00:49:17.000 --> 00:49:18.000
But.
00:49:20.000 --> 00:49:29.000
Perl and Python pulled away from each other, and why there were so many Perl programs, uh.
00:49:29.000 --> 00:49:35.000
at the beginning, and why so many fewer now. Here's my theory.
00:49:35.000 --> 00:49:41.000
Perl is super optimized for writing short answers.
00:49:41.000 --> 00:49:43.000
Yes.
00:49:41.000 --> 00:50:03.000
Um, and when I say short, I don't mean, oh, I collapsed it down to 3 lines. What I mean is, something that fits… yeah, Pearl One-Liner's fantastic, and I know you're gonna hit on that later. But, um… a Perl script is a page, or whatever. And Python has grown the language features needed.
00:50:03.000 --> 00:50:23.000
to write big programs. You can write a giant program in Python. It might not be the right thing for your giant program, uh, but it's capable, it could do it, it just depends on what you actually need. But, but Perl… doesn't have the features in it to write a giant program.
00:50:23.000 --> 00:50:29.000
And the people who CAN write giant programs in it? And that's you, Jim.
00:50:30.000 --> 00:50:41.000
You go out of your way to use Pearl in the best possible way, and with the best possible hygiene.
00:50:41.000 --> 00:50:47.000
Pearl is good for you, because you do everything in your power to make it be good.
00:50:47.000 --> 00:50:55.000
And most people don't have that discipline. They can't do the right thing. So, I'll pet my puppies.
00:50:55.000 --> 00:51:00.000
And, um… You do your thing.
00:50:57.000 --> 00:51:03.000
And I'll keep a careful eye on my porcupine.
00:51:03.000 --> 00:51:11.000
Um, I… Yeah, Pearl, Pearl doesn't help you.
00:51:11.000 --> 00:51:25.000
Perl's got object-oriented features. We use them. We write object-oriented Perl. It's there. But it's not… It's not stressed, you know. It's not. It's not.
00:51:25.000 --> 00:51:41.000
I don't know what I'm trying to say. It's… you have to try… it's available. Yeah, it's available, not compulsory. It's, um… you gotta jump through some hoops to make that happen. There's no type checking, you know, everything is a string.
00:51:26.000 --> 00:51:30.000
It's available, not compulsory.
00:51:41.000 --> 00:52:00.000
In Pearl. It's… It's not, it's not helping me at all. Uh, we, we've written tools to help us. We, we do check our, our arguments to functions and stuff, and, and, you know, and, and that helps. But boy, we had to work to make that happen.
00:52:00.000 --> 00:52:04.000
Um, I… I…
00:52:01.000 --> 00:52:08.000
It could be worse! They have a name for the category of languages that don't help you at all.
00:52:08.000 --> 00:52:09.000
Yeah, what's that?
00:52:08.000 --> 00:52:11.000
And that name is Assembly.
00:52:11.000 --> 00:52:21.000
Assembly. Yeah. Yeah, right. Well, assembly… uh, okay. Assembly in C? Neither of those languages really help you. They… they let you do anything you want.
00:52:21.000 --> 00:52:27.000
Uh, and Perl is like that. It lets you do anything you want, you just don't have to worry about memory allocation.
00:52:27.000 --> 00:52:32.000
Right? So that's the one thing it helps you with. It takes care of all that. Um…
00:52:28.000 --> 00:52:30.000
Mmhm.
00:52:34.000 --> 00:52:37.000
You know, there are languages, Python.
00:52:37.000 --> 00:52:51.000
I think helps you, but it's not everything. You have to work to do type checking and stuff, right? It's… There's a little bit of work to be done there. You have to try, right?
00:52:49.000 --> 00:52:51.000
Don't make me fight you.
00:52:51.000 --> 00:53:03.000
No? Okay, I know it's better at that stuff than Perl, but, you know, we just did an episode on Rust. Compare Rust to any of these languages.
00:53:03.000 --> 00:53:05.000
And those, you know, rust.
00:53:05.000 --> 00:53:10.000
Makes it so you can't do things you shouldn't do, or you can't do them easily, right?
00:53:08.000 --> 00:53:20.000
That's right. Rust. Rust helps you in the same way that, um… Really, really, really good parents help you.
00:53:20.000 --> 00:53:29.000
Um… There's a lot of rules when you're a kid, and you think they're awful, and your parents hate you, and they're trying to ruin your life.
00:53:29.000 --> 00:53:32.000
And then you move out of the house?
00:53:32.000 --> 00:53:44.000
and you live a good life, and you meet other people whose parents were Perl and Python, and you're like, what is wrong with you? What do you mean you need a garbage collector? What the *****
00:53:45.000 --> 00:53:52.000
Alright, well, uh, you've got some experience with Rust, and we talked about that. I've got some experience with Swift.
00:53:52.000 --> 00:54:02.000
And Swift is a lot like… it's closer to Rust than it is to Python or Pearl, right? Swift has all those features that protect you.
00:53:58.000 --> 00:53:59.000
Yes.
00:54:02.000 --> 00:54:04.000
from yourself.
00:54:04.000 --> 00:54:05.000
That's right.
00:54:04.000 --> 00:54:35.000
and when I started doing that, I've been programming in Swift for maybe 6 years, and of course, you know, it's like you said, all these rules are in place, and you hate it, but over time, I began to really love it. The, you know, the type checking, and the… Uh, you know, you can't have null, and all those things that Rust does, um, Swift does that too. And that's when I… it opened my eyes to think, boy, I really don't have this at all in Pearl. Pearl isn't protecting me, whereas Swift is.
00:54:35.000 --> 00:54:55.000
So, uh, I use Swift for iOS apps. It's kind of the only language you can really use for developing iOS applications. You're not going to use Objective-C or any of those. You could, but… I don't think anybody these days does. Um, so I got a taste of a language that really works for me.
00:54:55.000 --> 00:55:11.000
And I liked it. So then, when I had this new project, that I mentioned it during the last episode that it's this project has been boiling in my head for years and years and years. And I finally got to start on it. And I'm still working on and loving it. That's all TypeScript.
00:55:11.000 --> 00:55:14.000
And, you know, uh, I, I.
00:55:14.000 --> 00:55:18.000
I kind of like JavaScript. I like the way it works. I've gotten used to it.
00:55:18.000 --> 00:55:24.000
TypeScript just adds all the rules on it that protect you, and I like that.
00:55:24.000 --> 00:55:33.000
And that's why I've chosen that for this. TypeScript running under Node is working out really well for this particular project.
00:55:33.000 --> 00:55:48.000
Anyway, back to Pearl. Yeah, it's pretty clear that Pearl's not there to help you. It's losing ground. You know, you mentioned the survey that we were looking at this morning, and it was basically.
00:55:48.000 --> 00:56:00.000
querying, uh, GitHub, looking at projects. Um, last year, uh, there was, I don't know how to say it, T-I-O-B-E? Was it T-O-B? T-I-O-B?
00:56:00.000 --> 00:56:02.000
Um…
00:56:01.000 --> 00:56:06.000
It's one of those words I've never heard anyone say out loud, so I always say T.O.B.
00:56:02.000 --> 00:56:22.000
It's a… Yeah, right. Right. Tyobi. Okay. It they, they're somehow in the business of quality measurement of, of, of programming things. And they put out the TOB index. I don't know how often they put it out maybe once a month.
00:56:22.000 --> 00:56:38.000
Um, last year, somehow Pearl made it into the top 10 of the TOB index and it surprised everybody. It surprised the Pearl people more than anything. It made it to number nine, which it hadn't been in the top 10, um, since 2018.
00:56:38.000 --> 00:56:53.000
Uh, at one point in 2003, it was number 3. So that's… that's… that's how big Pearl was back then. Uh, anyway, it was number 9. Uh, I… I looked at the TOB index today, and it's down to 22.
00:56:53.000 --> 00:57:02.000
Um, so that's, you know, it's, it's falling back down. I kind of think that number nine was, uh, ninth place thing was a, a blip.
00:57:02.000 --> 00:57:19.000
you know, something probably not right. But in January of 2025, it was number 32. So it's kind of moving up and down and up and down. I'm not sure what's driving it. I did a little bit of research.
00:57:17.000 --> 00:57:25.000
Number nine, somebody got out of the sandbox. That's what happened.
00:57:19.000 --> 00:57:28.000
Yeah, yeah. So, yeah. I don't know. Should we go ask OpenAI what happened?
00:57:27.000 --> 00:57:28.000
Uh-huh.
00:57:29.000 --> 00:57:31.000
Oh.
00:57:31.000 --> 00:57:34.000
See, now I lost my train of thought.
00:57:36.000 --> 00:58:00.000
where were we? We were talking about the TOB index and where Pearl is on that list. Um, it's… You know, it's not dead. It refuses to die, but it's not climbing like these others. It amazes me that Python is still at the top of the heap, and it is great. And, you know, going back, if I could go back now.
00:58:00.000 --> 00:58:08.000
Uh, knowing that, I probably would have chosen Python, but like you said, Python in the late 90s wasn't really where Pearl was at that point.
00:58:08.000 --> 00:58:12.000
But and I can't go back. Right?
00:58:13.000 --> 00:58:23.000
There are an awful lot of companies using Pearl. You know, we looked through the GitHub projects, and we could see some, yeah, 3 out of 17,000 or something.
00:58:23.000 --> 00:58:32.000
But there are some big companies using Pearl. DuckDuckGo, the search engine, uses Pearl quite a bit. Craigslist is built on Pearl, did you know that?
00:58:31.000 --> 00:58:33.000
Wait, there's a Craigslist still?
00:58:33.000 --> 00:58:43.000
Yeah, there's still a Craigslist. I never use it, but yeah. Uh, cPanel, um, I'm not sure that that's something to brag about. I, I find cPanel to be pretty horrible.
00:58:43.000 --> 00:58:46.000
I don't even know what that is.
00:58:43.000 --> 00:58:58.000
Um… It's, uh, uh, if you do any virtual hosting on sites, this is not, this is not Amazon or, or, uh, Azure or, or, you know, those, those sites.
00:58:58.000 --> 00:59:13.000
but, like, if you were using, uh, A2 Hosting or some of these other places, um, it… they give you a cPanel, uh, interface, and that lets you manage your… your virtual machines. Uh, it lets you manage your services, like Mailman and DNS and…
00:59:08.000 --> 00:59:10.000
Oh.
00:59:13.000 --> 00:59:23.000
I think, I think you can manage WordPress with it, you can manage, uh, your databases, and it's… anyway, it's written in Perl.
00:59:23.000 --> 00:59:38.000
You know, back when I started in Pearl, one of the things that I liked about it was Bugzilla was written in Pearl. That came from the company you used to work for. That was all Pearl. I thought, you know, can't be that bad.
00:59:34.000 --> 00:59:36.000
Yep.
00:59:38.000 --> 00:59:53.000
Booking.com. Now, here's a company that's big and out there and doing things. They're, uh… I don't know if they're all that popular in the U.S, but they're popular in Europe and other parts of the world. Uh, it's a travel site. You know, you go there, like, Travelocity or some of the others.
00:59:53.000 --> 01:00:08.000
these other, uh, sites. Booking.com is all built on Pearl. They're actively hiring Pearl programmers. Um, and, and they sponsor events, you know, the, the Pearl, uh, uh, conferences and stuff. So they're certainly out there. Um.
01:00:08.000 --> 01:00:24.000
There's a list of companies that are using Pearl. Ticketmaster, Shutterstock, IMDB, they're all either built on top of Pearl or using Pearl quite a bit in their system.
01:00:22.000 --> 01:00:24.000
In my old job.
01:00:24.000 --> 01:00:25.000
Slash dot.
01:00:24.000 --> 01:00:29.000
Uh, uh, Slashdot was all Pearl, and is, I assume.
01:00:27.000 --> 01:00:42.000
I worked there for several years, and Pearl was the lingua franca, and I was a Pearl expert. I knew Pearl better than anything else that I knew at the time.
01:00:42.000 --> 01:01:02.000
And, uh, we did good work with it, and, you know, we were disciplined in the same way that you are. Slashdot is actually a pretty big program. Uh, my main, um, disagreement with Slashdot had nothing to do with the language choice. Um, it's that, uh, our database was MySQL instead of Postgres.
01:01:02.000 --> 01:01:03.000
Umm.
01:01:02.000 --> 01:01:18.000
Um, the funny thing about me being a Pearl expert… Most times, um… When I, you know me, when I learn something, I pretty much want to be an expert in that thing.
01:01:17.000 --> 01:01:19.000
Oh, yeah.
01:01:19.000 --> 01:01:35.000
Um… So when I learn a new thing, um… I'll be less of an expert in the old things, they'll decay, sort of like the bright LED bars in a recording studio as they fall. Uh…
01:01:30.000 --> 01:01:35.000
Yeah, what's, what's, yeah, what's their half life?
01:01:35.000 --> 01:01:45.000
Right, uh, but when I… became a Python language lawyer. Not quite a language lawyer, because there are parts of the language I don't use.
01:01:45.000 --> 01:01:52.000
This wasn't a case where Pearl just slowly decayed and fell away.
01:01:52.000 --> 01:02:02.000
Um… There was like a moment, a flag day. I didn't get to instantly become a Python expert.
01:02:02.000 --> 01:02:09.000
But there was a flag day where suddenly, I did know Python, and I didn't know Perl anymore.
01:02:08.000 --> 01:02:10.000
Yes.
01:02:10.000 --> 01:02:12.000
You just flushed it, huh?
01:02:10.000 --> 01:02:16.000
I don't know… I don't know why that is, but that… that… that was the time it happened, I just don't get it.
01:02:15.000 --> 01:02:18.000
Ah, you could, you could pick it up.
01:02:19.000 --> 01:02:21.000
Probably.
01:02:21.000 --> 01:02:37.000
I'm sure you could. You know, Pearl was used by the… Pearl was dubbed the language that mapped the human genome. Pearl was used by the Human Genome Project to map the genome. That was all Pearl.
01:02:22.000 --> 01:02:24.000
like Portuguese.
01:02:37.000 --> 01:02:46.000
that surprises me. Maybe because they were doing that a long time ago, before Python was ready, but it really seems like Python would be the language for that these days.
01:02:46.000 --> 01:02:55.000
Anyway, Pearl is still out there. It's still getting the job done. Is it dead? What do you think?
01:02:55.000 --> 01:02:58.000
It's… it's…
01:02:56.000 --> 01:02:59.000
Um, are we gonna fight again?
01:03:00.000 --> 01:03:02.000
No, I'm curious.
01:03:00.000 --> 01:03:04.000
I'm just gonna say what I'm gonna say. And, um…
01:03:02.000 --> 01:03:04.000
Yeah, say it.
01:03:05.000 --> 01:03:13.000
You know, there's people out there who I think still, uh, use a stick to carve into hot, wet mud and write cuneiform.
01:03:13.000 --> 01:03:18.000
Is Pearl dead? My answer is… Yes.
01:03:18.000 --> 01:03:30.000
In the same way that COBOL is. Sure, there's a lot out there, sure, there's people writing it, but, um, if you pick Pearl, it's not because you wanted to solve a problem.
01:03:18.000 --> 01:03:20.000
You think?
01:03:22.000 --> 01:03:24.000
Yeah, yeah.
01:03:30.000 --> 01:03:38.000
it's because you like antique rifles, or whatever, uh, the particular problem space is. Um, I think…
01:03:34.000 --> 01:03:35.000
Yah.
01:03:38.000 --> 01:03:44.000
Pearl is not a new choice. It's not something that you would pick. Therefore.
01:03:44.000 --> 01:03:47.000
My word for that is… Dead.
01:03:48.000 --> 01:03:50.000
I'm sorry, that's what I believe.
01:03:49.000 --> 01:04:06.000
Yeah, I'm not going to disagree with you there. You know, like you said, there's still people programming in COBOL. I'm still programming in Perl, but it's not the language that I would pick up for a new project. And if most of the world feels that way, which it kind of seems like it does.
01:04:06.000 --> 01:04:14.000
Then yeah, it's, it's, it's dead or very nearly dead. Uh, I think there will always be new versions out there, but.
01:04:10.000 --> 01:04:32.000
See, I think… I think you are in a great place, Jim. Let me tell you the place you're in. I have mentioned this on occasion, that there was a book I read a long time ago called A Dark Adapted Eye. It was a mystery by a very famous English.
01:04:17.000 --> 01:04:19.000
Yeah, yeah.
01:04:21.000 --> 01:04:22.000
Okay.
01:04:32.000 --> 01:04:45.000
mystery author, and the reason I read it was because of the review on the radio show that I was listening to. And the review went like this.
01:04:45.000 --> 01:04:50.000
The person who was doing the review came home, and that book.
01:04:50.000 --> 01:05:04.000
was in a, uh, cloth bag hanging from their doorknob with a note in it, and the note said, Oh, how I envy you! Reading this book.
01:05:04.000 --> 01:05:07.000
For the first time.
01:05:07.000 --> 01:05:11.000
So, here's the great place you are.
01:05:11.000 --> 01:05:15.000
Now, when you face a problem.
01:05:16.000 --> 01:05:24.000
You don't have to pick Perl. You don't have to pick any language, because Perl, you're an absolute expert.
01:05:24.000 --> 01:05:39.000
Some other languages you're good at, but not so great at them that they're the obvious choice, except for, oh, I'm writing something for the iOS, so it's got to be this, or blah blah blah, it's in the web browser, it's got to…
01:05:36.000 --> 01:05:38.000
Mmhm.
01:05:39.000 --> 01:05:42.000
When you face a new problem now.
01:05:42.000 --> 01:05:44.000
You get to pick.
01:05:44.000 --> 01:05:48.000
You get to look at the problem and say.
01:05:48.000 --> 01:05:54.000
This problem really needs a lot of… and then whatever that thing is.
01:05:54.000 --> 01:06:01.000
You can narrow the field down to languages that aren't just good at the problem.
01:06:01.000 --> 01:06:06.000
But they're going to make you smarter because you have new stuff to learn.
01:06:06.000 --> 01:06:14.000
There's so many languages, with so many things to teach, and so many new people to know. Like, when you learn Portuguese.
01:06:14.000 --> 01:06:30.000
You get to eat better food than you were eating before. And you get to talk to new and interesting people. And when you decide, you know what, this problem is something I'm gonna solve in, um, Haskell, or in Julia.
01:06:30.000 --> 01:06:36.000
Or in, um… There's just a million different languages.
01:06:36.000 --> 01:06:41.000
It's not just you've got the right one for this problem.
01:06:41.000 --> 01:06:56.000
but you're going to grow and be an interesting and better and smarter person who can solve harder and different problems than you're looking at now, and you're going to make all new friends, oh, how I envy you.
01:06:56.000 --> 01:07:01.000
Well, how could I argue with that? Right?
01:07:01.000 --> 01:07:10.000
I don't think there's anything more I can say on the subject. So, uh, why don't you, uh, why don't you take us out, Wolf?
01:07:12.000 --> 01:07:27.000
Anybody who managed to make it this far, I want to thank. In fact, as I sometimes say, even if you didn't make it this far, your friends will tell you that I'm thanking you just the same for making an attempt. Everybody who's listening, thank you so much.
01:07:27.000 --> 01:07:52.000
for listening to runtime arguments. You're the whole reason we do this. Uh, okay, maybe not the whole reason, there's always just talking to each other, we love that too. Um… But… We want you to, uh, read the show notes. You probably already have those, because you're looking at the podcast in your player right now. We have a website, it is HTTP, no S.
01:07:52.000 --> 01:08:03.000
colon slash slash runtimearguments dot fm. You can tell us, did we do a good job? Did we do a bad job? Did we make mistakes? Are there things you'd like us to talk about?
01:08:03.000 --> 01:08:09.000
Um, feedback at runtimearguments.fm.
01:08:09.000 --> 01:08:18.000
Jim and I are both on Mastodon. Jim is Jam… M. C. Q.
01:08:17.000 --> 01:08:20.000
J A M M C Q.
01:08:20.000 --> 01:08:22.000
at.
01:08:22.000 --> 01:08:25.000
Uh, hackyderm.io.
01:08:25.000 --> 01:08:31.000
I am Yes Just Wolf, all one word.
01:08:31.000 --> 01:08:40.000
at hackyderm.io, and the show has its own account there, which is runtimearguments at.
01:08:40.000 --> 01:08:42.000
pachyderm.io.
01:08:42.000 --> 01:08:44.000
Um.
01:08:44.000 --> 01:08:58.000
So, we really want to hear how we did. Our show has a transcript. You are, uh… happy, uh, no, what do I want to say? I hope the transcript is helpful to you, because that is going to make it be that you can.
01:08:58.000 --> 01:09:03.000
Google for us, or DuckDuckGo, or Kagi.
01:09:00.000 --> 01:09:01.000
It's searchable.
01:09:03.000 --> 01:09:16.000
We love talking about the things that we know about, especially when we think different things than each other 'cause then we get to fight. We love talking about the things we don't know about because then we get to learn.
01:09:16.000 --> 01:09:25.000
Um, and we just love talking, and we love talking to you. So, I hope this made a difference. I'm gonna say goodbye. Jim, what do you got to say?
01:09:25.000 --> 01:09:35.000
Hey, thanks everybody for, uh, putting up with us, uh, so far, and, uh, thanks Wolf for… thanks Wolf for potting with me. I can't tell you how much I enjoy this.
01:09:36.000 --> 01:09:39.000
Right back at ya, my friend. Right back at ya. Bye-bye.
01:09:36.000 --> 01:09:38.000
All right. Goodbye, everybody.