Recent submissions

Comment · 2 months ago

    > As part of this agreement, the federal government will provide $10 billion in federal financing to:
    >
    > - Upgrade and expand the Churchill Falls Generating Station.
    > - Develop the massive Gull Island hydroelectricity project.
    > - Unlock co-investment opportunities with the Innu of Labrador in a major new Labrador onshore wind project.
    > - Build associated transmission lines.
70 billion is the combined amount invested from all the parties into all the projects.
Comment · 6 months ago
It could be a nice article if it wasn't full of mistakes and incorrect assumptions about mechanisms and their origins, unsubstantiated statements, and so forth.

Right now, it sounds like an Ada fanfic - a misinformed one, to be more precise.

Comment · 7 months ago
One could argue flying is just controlled falling.
Comment · 7 months ago
Comment · 7 months ago
Sidesteps by not providing the same level of functionality.

As an analogy, it would be equivalent to say that "contrary to an airplane, a car sidesteps the problem of requiring wings".

Yes, indeed - but it doesn't fly.

Comment · 7 months ago
It would have taken the same time, if not less, given the extra time for mitigations, trying different optimization techniques, runtimes, etc.

One of the reasons the project was killed was that we couldn't port it to our line of low powered devices without a full rewrite in C.

Please note this was more than a decade ago, way before Rust was the language it was today. I wouldn't chose anything else besides Rust today since it gives the best of both worlds: a truly high level language with low level resource controls.

Comment · 7 months ago
My experience is the exact opposite.

This was particularly true for one of the projects I've worked with in the past, where Python was chosen as the main language for a monitoring service.

In short, it proved itself to be a disaster: just the Python process collecting and parsing the metrics of all programs consumed 30-40% of the processing power of the lower end boxes.

In the end, the project went ahead for a while more, and we had to do all sorts of mitigations to get the performance impact to be less of an issue.

We did consider replacing it all by a few open source tools written in C and some glue code, the initial prototype used few MBs instead of dozens (or even hundreds) of MBs of memory, while barely registering any CPU load, but in the end it was deemed a waste of time when the whole project was terminated.

Comment · 7 months ago
From the pull request:

> Stores the user's birth date for age verification, as required by recent laws in California (AB-1043), Colorado (SB26-051), Brazil (Lei 15.211/2025), etc.

The Brazilian law does NOT require this. This is a misconception, and likely based on an understanding of California's law being extrapolated to the Brazilian law.

They are almost complete opposites.

The Brazilian law (Lei 15.211/2025) puts the burden of age verification on *providers* of web platforms, app stores, or dumb terminals. Not on operational systems.

It also mentions "reasonable measurements" - which vary according to the type of content, platform, etc - and which are much less strict that anything written in California's or UK's laws regarding the same subject. It is far more based on individual risk assessment and purpose of the platforms themselves.

In all fairness, the Brazilian law is the most friendly to open source and the status quo. Even though I'm also worried about the long term results of this legislation, I'm somewhat relieved by the way it turned out.

Comment · 8 months ago
> Rust (...) has the most toxic self-righteous community in PL.

You never dealt with C programmers, did you?

Comment · 8 months ago
> I have a personal aversion to defer as a language feature.

Indeed, `defer` as a language feature is an anti-pattern.

It does not allow the abstraction of initialization/de-initialization routines and encapsulating their execution within the resources, transferring the responsibility to manually perform the release or de-initialization to the users of the resources - for each use of the resource.

> I also dislike RAII because it often makes it difficult to reason about when destructors are run [..]

RAII is a way to abstract initialization, it says nothing about where a resource is initialized.

When combined with stack allocation, now you have something that gives you precise points of construction/destruction.

The same can be said about heap allocation in some sense, though this tends to be more manual and could also involve some dynamic component (ie, a tracing collector).

> [..] and also admits accidental leaks just like defer does.

RAII is not memory management, it's an initialization discipline.

> [..] what I would want is essentially a linear type system in the compiler that allows one to annotate data structures that require cleanup and errors if any possible branches fail to execute the cleanup. This has the benefit of making cleanup explicit while also guaranteeing that it happens.

Why would you want to replicate the same cleanup procedure for a certain resource throughout the code-base, instead of abstracting it in the resource itself?

Abstraction and explicitness can co-exist. One does not rule out the other.

Comment · 9 months ago
> See https://en.wikipedia.org/wiki/Resource_acquisition_is_initia...

This example is specific to C++

> (..) if your programme crashes there's no guarantee that you'll ever give the resources back.

What guarantees can you have from a "crashing program", and by what definition of crashing?

> RAII is a leaky abstraction

Any abstraction is leaky if you look close enough.

Comment · 10 months ago
It is not - and given its stance on memory safety, it will hardly ever be.
Comment · 11 months ago
I believe any reasonable person could understand the previous comment is about the rules themselves, not about a statement in the CoC saying where they apply or not.

Also, the fact that the website is not covered by the CoC makes it worse, since the leadership is excluding themselves from their own engagement rules.

Comment · 11 months ago
You are dressing the events in your interpretation and stating them as truth.

The events you mention above are cherry-picked bits of information to support what you have said from the beginning.

For instance, in what you said above: you are quoting an excerpt of Barroso's comments from 2023 about democracy (not his exact words) without the actual context, something he even clarified later on as it was picked up by the media. Also, his resignation now, 2 years later, has nothing to do with any of this - looks like he was just tired.

I don't blame him. To be honest, now I'm tired as well.

Take care.

Comment · 11 months ago
I used OCaml extensively for a few years, around the time of OCaml 3 and OCaml 4, and I can add a few cents to this discussion.

Some of the points listed here can be considered a matter of taste or opinion, some are indeed pain points, and some are implementation details.

OCaml as a whole is hard to directly compare with most other languages you mentioned above as "better" or "worse". It both suffers and benefits from being an academic/research project not directly in control of a larger corporation.

As a language, IMHO, it is miles ahead of mostly all the languages mentioned above. It recently adopted a novel mechanism for modeling concurrency called algebraic effects, together with state-of-art multi-core support. This not only abstracts away several features that are usually hardcoded on most languages but puts it on another level as a language and abstraction capability. There are other toy languages that implement similar mechanisms or part of this, but none with the adoption level of OCaml.

However, since it does not have the same amount of resources and adoption, progress sometimes is slower that one would expect. Documentation can be sparse, community is smaller, etc.

Regarding OCaml on Windows, I myself used it exactly 20 years ago. It not only has one implementation, but three. There are some tradeoffs and support is not at the same level as Linux but it's still there, and I wouldn't call it mediocre:

https://github.com/ocaml/ocaml/blob/trunk/README.win32.adoc

https://docs.google.com/document/d/1-aTygzDsxy4mnqvSKEVhifA1...

You might find it harder to find libraries, for sure. I have not checked the situation recently, though given the smaller community that is likely still the case.

As a tongue-in-cheek comment, I could definitely say "OCaml is certainly not a good language - not as bad as most of all the others though".

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton