Hacker Newsnew | past | comments | ask | show | jobs | submit | KPGv2's commentslogin

The BBC is a good outlet, but their big blindspot is that it's pro-establishment. Now, when your government isn't a flaming pile of dogshit, this is less egregious of a bias than in the rare contemporary time when your President, say, wants to build monuments to himself and rapes children.

It's a whiff, here, for sure. But that's the reason why: the government is Good, and it certainly won't screw up spectacularly.


> I think that in every imperative language that offers `map`, `filter`, `reduce`, or similar, the written contract of this API should state that any higher-order function handed to it as an argument must be free from side effects.

Does the written contract for for-loops specify this as well? Because that's the obvious alternative for a reduce that an imperative programmer would reach for: a for-loop with the programmer managing the accumulation manually.

I also don't see why a reduce should be side-effect free. There's nothing wrong with having a type def't for reduce be

    base.data.List.foldLeft : (b ->{e} a ->{e} b) -> b -> [a] ->{e} b
Where {e} indicates a side effect. Here, the reducer can have side effects, and those side effects propagate to the result of the fold/reduce.

If your data should not be successfully folded if it's empty, you should've already parsed it as an Optional nonEmptyList instead of letting illegal states fly around for a while in your application.

Yeah that's good application design, but those concerns aren't so relevant to the person writing the standard library for a language. You can certainly include a specialized version of reduce for nonEmptyLists which just returns A, but that doesn't change the fact that you have to return an Optional for a normal possibly-empty iterator if you want your reduce function to be non-partial.

For loops are not easier or more convenient than fold.

    fold sum 0 collection
versus

    acc = 0
    for x in collection:
      acc = acc + x
or the even worse

    int acc = 0;
    for(int x = 0; x < collection.length; ++x) {
      acc += collection[x];
    }
You can read one line and know exactly what's happening in the fold example. In the Python and C++ examples, you have to scan more lines and there's way more opportunity for typos.

A for loop gives you better memory management and speed, but the tradeoff only makes sense to me if you're doing embedded work or something. Otherwise, eat the .000000000001% speed loss to reduce the risk of logic errors, typos, etc. and to improve developer ergonomics.


Only real difference is that `fold` is denser. Both require prior knowledge to understand in their respective paradigms.

Adding numbers like this is not common in real world code. Now let's say instead of adding x, you have too look up X in a cache with an additional "type" param and update a metric of cache hits (or misses). You have to define a free function to keep your fold readable and understandable. In for loop it's much easier to understand.


>You have to define a free function to keep your fold readable and understandable.

I agree. But you'd do that for a for-loop, too, unless you want a bloated for-loop.

> In for-loop it's much easier to understand.

I have to disagree there. You'd still be working with a free function, or you'd be working with a bloated for-loop body.

Combining cache loopkups, metric tracking, etc. runs into SOC issues that IME for-loops just let imperative developers get away with until it comes time to test their code.

Furthermore, free functions aren't bad. They're good. They're a self-documenting abstraction. Unless you name it `function_one` or something.

Having my fold lambda do its primary business role but call `update_cache_and_metrics` makes it unnecessary for someone reading the flow of logic from even needing to go read the body of that free function.


Truenas, Crashplan gives me a 3-2-1 with rolling, incremental backups at a pretty low price

> Why not just offer a paid endpoint for the crawlers?

Because then you're definitely violating US copyright law. There are four prongs of fair use analysis, and one of them is the "nature of the use." In this case, you'd be turning into a commercial use.


What if you're not charging for the content, but as compensation for the network bandwidth / server resources consumed by serving that content? The idea isn't to profit from content (the IA is a nonprofit anyway), just to allow the IA to continue to serve its purpose as an archive of public data without being overwhelmed by bots.

Exactly, it's a question for the lawyers to sort out.

And they're likely on risky enough ground after the book lending thing

I think that'd raise serious copyright concerns, if the Wayback machine started selling other people's intellectual property.

Shouldn’t it follow that it’s illegal for the AI labs to profit off of all of that stolen copyrighted data too?

no. The topic at hand is distribution of copyrighted material, and you're talking about reproduction and possibly preparation of a derivative work.

At last in the USA, copyright law defines specific things copyright owners have exclusive rights to:

- reproduction - preparation of derivative works - distribution of copies to the public - public performance - public display

The most immediate issue with AI companies is whether they've made infringing reproductions.

The other possibility is the preparation of derivative works: does an AI response count as derivative of something it's consumed?

Sorry I'm not going to do the analysis for you, though. I'm no longer a bright, chipper IP law scholar.


It should, but it doesn't.

They wouldn't be paying for the content, just the bandwidth. Like buying a linux OS on a CD ROM was about the cost of media not profiting off of the software.

It's time for copyright to end anyhow; that's what's gumming up the whole project in the first place.

I'd have a lot less of a problem with AI if everything that went into their training was public domain and made easily available to anyone for any use. It'd feel less like AI companies were just stealing the work of others and charging for it.

Seems like a reasonable norm:

* If you train AI on it, you have to afford public access to it.

* Nobody can exact violence against anybody else in response to that person providing public access to any data anymore (ie, all bytestrings are public domain).

That's the world I'd like to try in the coming years.


Isn't that already a big part of reddit's business model?

no. I just used Gemini to update a website I'm managing for a charity, and one of those steps involved Gemini, on its own, offering to scan the website for one of our beneficiaries, specifically the header images, to see if there was more information to include in our writeup about the beneficiary. And it did it quite well.

Right, I forgot that they also read and parse text in images well.

> Romans built things to last

and yet, all of it has crumbled despite the copious availability of slave labor at construction time


> how many vibe coded apps do we need as a society

well I had AI program three things for me yesterday:

1. custom CSS for a website I read a lot so it conforms with readability research

2. crawl a Tumblr account of a comic book artist, download their comics, and assemble them into a PDF I can print and bind into a book myself

3. pull the code of a charity fundraiser website that is terribly written, refactor it, centralize the theme, and update it for the next fundraising campaign, and deploy it

About an hour of my weekend to do this. Each of these projects was a weekend before that.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: