Ovid

Joined 18 years ago

Karma
2,338
Submissions
251
Member since
May 8
Expat living in France. Freelance Perl expert, two published books.

[ my public key: https://keybase.io/ovidperl; my proof: https://keybase.io/ovidperl/sigs/kUGQjxJ-Tc9748BRd9cPnLmKUTUzisIDppJF61cvPr8 ]

View on Hacker News

Recent submissions

Comment · 2 months ago
Comment · 2 months ago
Comment · 3 years ago
Comment · 3 years ago
This was brought up a few times. There were several issues with that approach.

* `bless` and `class` aren't topologically equivalent: you can't twist and warp one into the other

* We've seen small, incremental steps get beaten to death by bike-shedding every step

* Sometimes it's hard to see the big picture when you're looking at the individual details

It's that first point that's really the killer here. Perl used `bless` and `@ISA` ("we have methods" and "here's where to find them") and that was all.

You want state? Figure it out.

You want encapsulation? Figure it out.

You want to work around MRO bugs? Figure it out.

You want to know if something in the symbol table is a subroutine or a method? Figure it out.

You want composition? Figure it out.

Much of what we wanted just couldn't be easily done building on a broken foundation, but there's so much excellent work out there which already solves these problems for class-based OO, we decided to take advantage of what others have already learned.

Comment · 3 years ago
And in the new class syntax, when it's done, that's (roughly):

    class Point {
        field $x :param :reader;
        field $y :param :reader;

        method as_string() {
            return "($x,$y)";
        }
    }
    my $origin = Point->new( x => 0, y => 0 );
    say $origin->as_string;
I know which of the two I'd rather write :)

The main limitation is that we don't have the `isa => 'Int'` check. That's largely because adding types is something for the entire language, not just this new syntax, so it had to be delayed.

Comment · 4 years ago
> A senior member of Ethiopia's media accused Facebook of “just standing by and watching this country fall apart”.

Why the hell does one company get hold so much power in the world? More to the point, why does Mark Zuckerberg, an apparently immoral man-boy, get to make decisions like this?

Remember when Myanmar used Facebook to coordinate/incite genocide? https://www.nytimes.com/2018/10/15/technology/myanmar-facebo...

Or when Facebook was being used in Kenya to orchestrate vigilante murders? https://www.bbc.com/news/world-africa-47805113

Or how about when Zuckerberg refused to introduce any controls to livestreaming after the New Zealand mosque massacre was livestreamed? https://www.thewrap.com/mark-zuckerberg-defends-facebook-liv...

Facebook only reluctantly banned white supremacists groups. https://www.nbcnews.com/tech/tech-news/facebook-bans-white-n...

Or how about in 2016 when a young man's murder was livestreamed and Facebook refused to take down the stream "because it doesn't violate the company's community standards." https://money.cnn.com/2016/06/17/technology/facebook-live-sh...

How the hell did we get into such a dystopian hellscape where one company so brazenly, openly, supports evil? Cyberpunk as a genre is dead because it's no longer fiction.

Comment · 4 years ago
Oh, that is a long and complicated story.

Perl 6 was announced a long time ago, but it took many years of development and planning and I (like others) used to joke that Duke Nukem Forever was going to be written in Perl 6. And then we got egg on our face when Duke Nukem Forever was released first. (And it turned out to be a turkey).

However, many clients I spoke to at that time were telling me they wouldn't upgrade their Perl code because they were waiting for the new version ... which was seemingly never going to arrive. Worse, it became clear that Perl 6 was a new language, with common roots, but it wasn't like the Python 2/3 split: a wholesale rewrite of code would be necessary, or try to use a Perl 5 compatibility mode that may or may not have proven useful.

So companies weren't upgrading, Perl developers were fighting, people were leaving the community and the Osborne Effect (https://en.wikipedia.org/wiki/Osborne_effect) could be renamed the Perl 6 Effect (I'm aware that the Osborne Effect is more complicated than it's often portrayed).

Worse, Perl 5 couldn't upgrade to Perl 6 because that version number was taken. Perl looked, to the outside world, like it wasn't upgrading any more. I even had one guy screaming at me at a Linux Conference about how Perl is shit, hadn't updated in 20 years, and ticked off a bunch of "facts" about Perl, most of which were objectively incorrect at the time, but Perl could no longer get its message out.

There was discussion about leap-frogging the version number and going straight for Perl 7, but that caused even more fights, more people dropping out of the community, and we fractured. We tried saying "the name of the language is Perl 5 and we're upgrading every year—we're currently on version 34—but that didn't satisfy anyone, either.

Eventually, Perl 6 was renamed to Raku (http://blogs.perl.org/users/ovid/2019/10/larry-has-approved-...) and that freed us to upgrade our version number, but to what? Sawyer X, the former Perl Pumpking (development manager) proposed the Perl 7 project, but for many reasons, that also caused much anger.

So today, we have Perl. There are ideas of moving to Perl 7, but much work needs to be done. My Corinna OOP project is likely part of that work and the Perl Steering Committee has met with me to say they'd like Corinna in core, but slowly, step-by-step, to ensure that we don't push too much into the core and make mistakes we can't easily back out of.

I have more ideas about what is needed to get to Perl 7, but they'll largely wait until after Corinna is in core and fleshed out. It's a lot of work and the team working on Corinna (making great suggestions and also helping me not make boneheaded errors), have put in a lot of effort to create something we can turn into a proper RFC. Paul Evan's Object::Pad (https://metacpan.org/pod/Object::Pad) is a testbed for many of these ideas.

So, we're getting there, but slowly. However, it appears to be moving along more smoothly than other efforts in the past. The fact that the goal is more modest helps.

Comment · 4 years ago
Yes, late December, 1987, after the events I describe. It was released on Usenet, as I recall. I didn't even know what Usenet was back then. For me, it was pretty exciting to dial up a BBS, crash their software, and read through the code that the BBS was written in (and later contact the sysop to tell them how to replicate it).

I doubt I could have even compiled the software onto a COCO 2 computer.

Comment · 4 years ago
Comment · 6 years ago
As a short summary about Perl 7:

If your Perl is old-school, that's OK. Use Perl 5 and we'll keeping supporting you.

If you your Perl isn't old-school, use Perl 7 and get new features.

If you're not sure, ask us and we'll hold your hand to help you understand.

We're here to make sure you're OK.

Comment · 6 years ago
Just to be clear to everyone: this doesn't break anything. If you continue to use Perl version 5, you're fine. If you want to upgrade your major version of Perl, then of course you need to know what that means.
Comment · 6 years ago
I've known Jeff for many years, both as a friend, an employee, and a fellow presenter at conferences. I've hung out with him drinking beer in numerous countries around the world. If there is one thing that I think sums up Jeff it's his beautiful, and sometimes dark, sense of humor.

So while it grieves me, I'll make the joke that Jeff would make were he still with us: "I was just trying to figure out how to avoid the corona virus."

He was brilliant, quirky, and fun to be around. I can't even begin to describe my grief right now.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton