HN user

ether_at_cpan

69 karma
Posts0
Comments34
View on HN
No posts found.

The solution here is to demand support for the most recent specification version from your tooling vendors. We (the OpenAPI TSC) sometimes hear from vendors "we're not moving quickly to support the latest version because our users aren't asking for it." So it's a catch-22 unless you make your needs known.

OpenAPI 3.1 replaced the not-a-superset-or-subset of JSON Schema with the actual JSON Schema (latest version) over five years ago. No one should be using 3.0.x anymore. And 3.2 came out a few months ago, containing lots of features that have been in high demand (support for arbitrary HTTP methods, full expression of multipart and streaming messages, etc).

I can't remember a time where "keys %hash" returned the keys in a defined order.

It was never a _defined_ order, but before version 5.17.6 (November 2012), each hash returned its list of keys and values in a _consistent_ order between runtimes, so some code ended up getting written that depended on this ordering (say in a unit test, or a list that would get assigned into a database). The change was to make the ordering random/inconsistent/unpredictable every time the list was fetched, which as I recall did break some number of tests in CPAN modules and required new releases.

Well yes, he was a total dickhead to people who asked lazy questions and could not answer the follow-up questions that they were asked. He was strict about teaching people that it is important to be able to explain one's problem clearly and follow debugging instructions, and was ruthless with people who didn't get that. On the "help" irc channels we saw a continuous flood of lazy people wanting quick solutions to their coding homework and after a while anyone would become sick of it.

I didn't much enjoy it when I was at the other end of it though, and sometimes he went too far. "Try to understand why the person doesn't understand" wasn't something he did enough -- sometimes the person doesn't know the right questions to ask, they just know that their thing doesn't work.

As a helper, it's hard to find the right balance, and I think the most important thing is that if you're getting emotional about it, step away and let someone else take the question. (I at least have been getting better at this over time.)

In his bio he has the most succinct and accurate description of Perl that I've ever seen:

Perl is a wonderful language once you get over the fact that a slightly quirky set of syntax and embedded regular expressions have a tendency to make it look like line noise in the wrong light. Once you're used to it, it's a hell of an expressive dynamically typed language with a huge set of libraries and classes available for it.

This is very sad news.

As I said on irc:

He brought many people into the community, and encouraged their growth (like me)

I popped into the scene by sending a few Moose patches and then coming onto irc displaying an utter lack of understanding of anything

Matt set me straight, and encouraged me to send more patches and I ended up as the manager for Moose

and then inherited the ownership of literally hundreds (perhaps thousands by now) distributions

that work helped me move from being mediocre at my job to being stellar, and enabled me to move on to much better jobs

Why Perl? 3 years ago

like Try::Tiny, with which it’s quite easy to forget that a return statement in the try block will do exactly the wrong thing

Try::Tiny does its best without manipulating the parser itself; it's been superseded by Syntax::Keyword::Try (which alters the parser to make flow control work as you'd expect), and in the last few years of releases there is a native `try` keyword right in the language (which can be used in older versions via Feature::Compat::Try, which is a shim on top of Syntax::Keyword::Try in old versions and a no-op in new versions).

Why Perl? 3 years ago

Fastly does -- most of its configuration management and distribution is handled by Perl applications, and the VCL templates used for most customer boilerplate is driven by Template Toolkit.

I don't want to name names, but a few prominent Perl contributors work there (yours truly included).

They don't have to be real URLs, but just URIs. That is -- the files don't have to be accessable on the network at those URIs -- you can just use these strings as identifiers, and load the files up manually as you need them.

In fact, the JSON Schema specification even says that identifiers are just URIs and the evaluator implementation need not be expected to have to load the documents from the network (ref. https://json-schema.org/draft/2020-12/json-schema-core.html#... and https://json-schema.org/draft/2020-12/json-schema-core.html#...)

...if the validation fails then what? Even though the JSON schema document is human readable, just by looking at the JSON schema document, its not intuitive to visualize where the particular path resides in the actual document.

The JSON Schema specification actually does say that errors should indicate both the location within the data that the error occurred, and the path in the schema itself. So if you are having difficulty deciphering validation errors, that's a failure of your particular implementation failing to follow the spec, not the spec itself.

We haven't really gotten seriously into the discussion yet of what perl 7 will include. All that's happened so far is one person made a premature announcement of what they wanted, (parts of) the community objected, and we backed up and created a governance process.

I certainly want perl 7 to be more than what has been so far ascribed to it, to make the major version number change truly worthwhile.

I'm unclear why people continue to use Perl at all

Because there's a huge amount of applications and websites still built in it, and it's still a great language so new projects are written in it all the time.

source: my very prosperous career, which has been almost entirely in Perl for the last 15 years

For those that can remember back that far, MacOS also jumped from 5 to 7. (7 was the first version that supported running multiple applications at once.. not counting the MultiFinder hack that came before it by a few years.)

but my rule-of-thumb is that if I anticipate wanting to use references, I will go elsewhere

Why? References are not scary and they work just like in any other language -- they are simply a memory address that points to another value stored somewhere else.