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

Synthetic fibers from clothes are microplastics, and clothes shed lots of fibers. Not to mention all the upholstered furniture, carpet, rugs, drapes, bags, etc.

That's why I said

>eliminating hair like fibres would also eliminate most of the sources of plastic

If you allow fibres they'd be 0.01% of fibres if you've got a dog anything like mine.


Dog, ha. Try a longhair cat. You'll be extracting balls of fur from most unexpected body cavities.

It's abstraction inversion at its finest. Declarative styling sounded like a good idea, but it jumped the shark long ago. It's begging to become a real programming language but for some reason the design ethos behind CSS seems to have been avoiding programming at all costs--maybe that's to keep the browser renderer in control (and hopefully responsive), maybe it's because they didn't want designers to have to learn to program, maybe they just hate JS. Whatever the reason, it's clear that CSS took a wrong turn and mutated into absolutely the wrong abstraction.

I agree with this article. Tuples nicely unified multiple return values and multiple parameters. FWIW Scala and Virgil both support the _ syntax for the placeholder in a partial application.

    def add(x: int, y: int) -> int { return x + y; }
    def add3 = add(_, 3);
Or more simply, reusing some built-in functions:

    def add3 = int.+(_, 3);

As noted in the article:

> This feature does have some limitations, for instance when we have multiple nested function calls, but in those cases an explicit lambda expression is always still possible.

I've also complained about that a while ago https://news.ycombinator.com/item?id=35707689

---

The solution is to delimit the level of expression the underscore (or dollar sign suggested in the article) belongs to. In Kotlin they use braces and `it`.

    { add(it, 3) } // Kotiln
    add(_, 3) // Scala
Then modifying the "hole in the expression" is easy. Suppose we want to subtract the first argument by 2 before passing that to `add`:

    { add(subtract(it, 2), 3) } // Kotlin
    // add(subtract(_, 2), 3) // no, this means adding 3 to the function `add(subtract(_, 2)`
    x => { add(subtract(x, 2), 3) } // Scala

I think I like the explicit lambda better; I prefer to be judicious with syntactic sugar and special variable names.

    fun x => add(subtract(x, 2), 3) // Virgil

Coming from Scala to Kotlin, this is what I thought as well. Seeing `it` felt very wrong, then I got used to it.

I don't mind adopting features from popular languages. (After all, Virgil using _ for partial application turned out to be a happy accident that aligned with Scala.) Adopting features that are popping up in other languages helps to reduce the explanation burden, but I'm not sure on this one. It took me about 10 years to finally settle on having `fun` as a keyword to introduce lambdas instead of the parser back-tracking madness that JS parsers do.

You're going to hate this, but one answer might be blockchain. A crytographically strong, attestable public record of appending information to a shared repository. Combined with cryptographic signatures for humans, it's basically a secure, open git repository for human knowledge.

> Combined with cryptographic signatures for humans

What happens when the human gives an agent access to said signature? Then you fall back on traditional anti-bot techniques and you're right back where you started.


DNA/biometrics are the only secure future!

I joke, but there are those out there who don’t.


Sounds interesting, but I guess I'm a little unsure of how to connect the dots? Are you suggesting that websites would be hosted on a blockchain and browsed by human-signed browsers? Or more like there would be a blockchain authority, which server hosts could query to determine if a signature, provided by their browser, is human? Would you mind painting the picture in a little more detail?

We're rarely going to need to attest anything is "real" or "human". It's basically only going to matter in civil and criminal court, and IDV.

We don't need to attest signals are analogue vs. digital. The world is going to adapt to the use of Gen AI in everything. The future of art, communications, and productivity will all be rooted in these tools.


You can have cryptographically signed data caches without the need for a blockchain. What a blockchain can add is the ability to say that a particular piece of data must have existed before a given date, by including the hash of that data somewhere in the chain.

You'd spend less compute just serving the crawlers than maintaining the Blockchain.

Like, 3 orders of magnitude less compute, conservatively counting.


I worked on JVMs long ago (almost twenty years now). At that time most Java usage was for long-running servers. The runtime team staunchly refused to implement AOT caching for as long as possible. This was a huge missed opportunity for Java, as client startup time has always, always, always sucked. Only in the past 3-5 years does it seem like things have started to shift, in part due to the push for Graal native image.

I long ago concluded that Java was not a client or systems programming language because of the implementation priorities of the JVM maintainers. Note that I say priorities--they are extremely bright and capable engineers that focus on different use cases, and there isn't much money to be made from a client ecosystem.


For fillInStackTrace, another trick is to define your own Exception subclass and override the method to be empty. I learned this trick 15+ years ago.

It doesn't excuse the "use exceptions for control flow" anti-pattern, but it is a quick patch.


God, please make me unsee it. That‘s a cool trick that turns into an anti-pattern itself if abused.

> for some fucking reason

It's what the oligarchy wants. The reason is that it's always whatever the oligarchy wants.


you know what I am slowly starting to feel the conspiracy theorists, just its not wack child eating lizardman but Super Rich people wanting back a Feudalist Society.

> Or was it when he said that a Black president would bring "1000 years of darkness"?

I looked this one up. It's true. He's been going out of his way to be a political firebrand and claiming milquetoast Democrats are Satan for decades. It wasn't some offhand comment when cornered on stage. He's pushed white christian nationalism hard for quite some time.

Sad, because it was so unnecessary, divisive, and crazy--a black mark on his legacy.


But it's not true the way GP phrased it. Norris did not say if a black man was elected then there would be 1000 years of darkness, he said it about a specific man who happens to be black. It's silly, but unless you're claiming that black politicians get special exemptions, his race is immaterial to this quote.

If you look at the wider context, it's harder to deny the racism.

Those trillions of dollars aren't going to find their way into the pockets of the shareholders if they have to pay some rubes to maintain old stuff!

I'm always surprised what isn't a national security issue.

> to pay some rubes to maintain old stuff

Can LLMs backport fixes to stable branches?


Well, Apple already fixed the code, Apple is just choosing not to release it for most iPhones.

It helps to at least write down requirements. And not requirements in that "it must use Reddis", but customer, user, performance, cost, etc requirements.

A one page requirements document is like pulling teeth apparently.


Oh yes, you want a vague idea of where you're going, and concrete plans for the next step. If you can't even get one-page requirements then something has gone very badly wrong.

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

Search: