skysight-inc/HackerNews huggingface dataset:
> In none of these situations would an ISP connect its customers via IPv6 only or would anyone provide any service that requires IPv6.

It's so much cheaper and faster already today that it makes sense to do v6-only internally and deliver IPv6 to the large fraction of customers who can have IPv6 and deploy a transform layer for the (gradually shrinking) class of have-nots.

Your IPv4-only competitors are spending more money to deliver a worse service. Maybe they'll wake up and realise, but the story of the past couple of decades suggests most such outfits are not too bright and when offered IPv6 on new links they'll smugly decline. Meanwhile you get to keep the difference. Your competitor thinks this service costs 86¢ per dollar revenue and you're only spending 84¢ per dollar revenue that's a lot of extra profitability.

Fighting this is a losing battle, and I imagine that decades from now somebody is going to write a book about how it was cognitively possible for "leaders" to champion an idea that couldn't possibly work, that they intellectually knew couldn't work, and all the actual evidence said wasn't working, and yet they believed in it anyway. Or that book might be about climate change denial, either way.

Eventually by the way - and 90% global is close to and even perhaps at the threshold where that's plausible for some of them - many general ISPs won't bother providing actual IPv4 networking. If you want IPv4 you're a niche customer, go find a bespoke IPv4 Internet Service Provider. If you're IPv6 capable but you want to reach an IPv4 host you'll go via a translation box automatically. As the interest in global IPv4 shrinks, the transit companies will lose interest in that service too, and eventually - decades from now - the IPv4 Internet literally goes away, the RIRs stop "managing" the now largely unused space and the residual pockets of IPv4 cease to interoperate.
C# has nullable reference types now. But I agree it's not perfectly a monad in implementation due to engineering decisions. But the pattern generally follows that of the Option monad in Haskell, even if it falls short. If you know the Option monad you'll find it really easy to pick up .NET's nullable types.

That's my point, you find these patterns all over in common programming languages and even though they are hard to learn it's worth it.
In Scala, as I recall, you could annotate a method as tail recursive so it wouldn't build if it weren't. A serious functional language pretty much has to have an answer for this since you're supposed to use recursion instead of iteration.
The difference would be that there would be a clear outcome - many quick deaths, and a relatively simple solution - change it's trajectory or blow it up.

Afaik, everyone did follow lockdown orders in the first few months.

Then it became clear that the death rate isn't worth worrying about - yes, for the majority, 1-3% is clearly not enough. If it was 10%, if corpses were littering the streets, I bet the attitude would be completely different.

Then the conflicting messages started. Do this, do that, but not for these guys, they're essential or something. And not the rich, they can still travel. And you are vaccinated but still can get infected.

The governments didn't even try that hard, no one got forced, even now no one's forcing vaccination.

So the majority just stopped giving a fuck.
Great, bring it on, a world with 150 year olds who look like they're 30, what could possibly go wrong.

Either it will be very few ultra wealthy people (in which case the resources argument wouldn't matter so much anyway) or we are in for a population explosion the likes of which we've never seen.

350K people are born every day, 150K people die every day (lots of those children in the developing world). For a net of 200K, in other words, the world population increase would be roughly double what it is today without death.
That’s not true, all serious devices (except maybe IoT crapware) implement privacy extensions, so your computers and devices make requests from different, randomised address (within your allocated subnet obviously).
Some of those sites have mobile apps on the Apple app store. How does not supporting IPv6 on their site reconcile with Apple's requirement that apps that support networking work when on an IPv6-only network?

I would have thought that an app that is purportedly an app for site X but that cannot actually talk to site X when on an IPv6-only network would fail that requirement, but maybe I'm overestimating what Apple actually checks. Are they only checking that the app will correctly attempt an IPv6 connection to the site?
This is due to adding a JavaScript framework. Rails can be up and running immediately.
Snatoms
Well, the ideas I liked, stuff like deferring side effects and avoiding state, were functional ideas. You see a lot of functional concepts and constructs bleeding out into mainstream languages (just look at the last few C# releases, for instance, which look like a list of features borrowed from Scala), which I think will be their legacy more than widespread adoption.
This just tries to shift away the blame from our lax measures. We had ample time to react and did pretty poorly to contain it and continue to do so. Were we able to contain the spread of variants?
>Slower speeds also reduce the amount of fuel needed — making a voyage cheaper — and reduce the amount of carbon dioxide emitted into the atmosphere. “Slow speeds are a win for all,” said Leaper.

The article is incorrect. Ships travel at an economical speed based both on fuel consumption, delivery timing, and trying to maximize the utility to the shipper from the cargo vessel. Slowing down means fewer voyages for each ship, and would ultimately mean either fewer voyages total (less commerce) or more ships.
> if the fuel pump fails there is no possibility of relying on gravity to keep the engines turning.

Ok, so an emergency hand pump in the cabin?
And now the internet got worse because you're no longer have technical freedom due to these NAT popping up everywhere. For example, previously if you want to release a video/voice chat app, you just release it and be done with it. Now it won't work like that due to NAT, so you'll have to maintain some STUN and TURN servers just to make your app usable to general public. Think about how many potential innovation got stifled because of added costs and complexity turned some people away before they even started.
Monad is a thingie that lets you sequence computations in the same context. Context being something like Future or Stream or List
CRISPR-based technology could revolutionize antibody-based medical diagnostics
> Not only does the state not prepare, but thanks to the record-setting wildfires of the past decade, the amount of carbon and soot pumped into the air has probably offset any gains that had been made. They're really just stupid out here.

This is a little unreasonable and just smacks of victim blaming. The way you write suggests the California has been deliberately setting their own wildfires, rather than just being a early victim of climate change.

With regards to water reservoirs, that does not seem to be a uniquely Californian thing. As an outside observer it seems the entire US is dependent on ageing infrastructure built after WWII, which has seen nothing but neglect since.
Counterpoint: The world has enough people (7.5B on track for 11B by end of century). Stop subsidizing children with pro natal policies, and pay people who choose not to have children (the three most impactful actions you can take to mitigate climate change is drive an EV or no car, eat less meat or no meat, and have less kids or no kids).

Population growth cannot continue forever, nor population stability at an unsustainable aggregate consumption level.

https://e360.yale.edu/features/our_overcrowded_planet_a_fail...
I agree, they are smaller. But if you can't scale them safely then keeping them small is an appropriate solution until a better one becomes available.

> The current state of GMaps community with whatever levels of moderation Google put into is a net positive experience for its users.

I'm not advocating against GMaps entirely, but this feature which apparently allows people to upload pictures in bad taste could go, or at the very least be reworked to make it clear to the users that this is unmoderated/poorly unmoderated and that there might be distasteful stuff in there.

At the moment, the platforms put lots of effort to present themselves as safe spaces when in reality they aren't. At the very least, they could be honest about it and let their users make their own decision as to whether to view the content.
Machine-Generated View of the Role of Blood Glucose Levels in Covid-19 Severity
I would argue that the main reason is that we are stuck with a centralized Internet with a somewhat large initial step to start a new service.
If everyone get IPv6 we are all able to be a first class citizen on the Internet, meaning I can run a webserver or whatever from home. Once I am ready I can move on to a hosting provider with all the extra costs and hassle it comes with.
Without IPv6, we are stuck with a two tier system of Internet users. Basically consumers and providers where the step to become a provider is larger than when you can simply start from home with whatever scrap you have in your garage.

IPv6 will also simplify a lot of things (being able to scrap NAT (note, you will still need a firewall) and avoid protocol issues for End-to-End services) but that is just a bonus.
As far as I know, the Future concept for async/await started with Twisted's Deferred, which is a framework for Python. It's not really from functional land.
>At first, the discs helped the company to explain the technology: hydrogen would be released when the laser hit it as a compact disc would “release music” when the laser reader hit it.

This is in the running for the least apt analogy I have ever heard.
Introduction to Programming at CMU is done in SML. They make the same observations as you. Those that have prior exposure to programming struggle. Those students without experience find it easy. They are a bit baffled in the next course, which is done in an imperative language.
Probably because every single FP tutorial is very far away from real tasks that average software developer deals on everyday basis.

They describe pure functions and categories of endofunctors, while I have tasks like "invoke this stateful external API if that stateful external API returns specific values".
Not really, because the bulk of that research is at least based on solid scientific principles whereas what de Grey has been peddling always read as 'made for investors' rather than aiming for specific results. I always figured that Mollers sky car would fly long before de Grey would deliver a result (and I consider Moller to be longest running investor scam in history besides the Catholic church).
How google would start a wave of ip6 migration: give a search penalty for being ip4 only.
No mention of kidney failure in the linked articles.
This is just not true, you throw out some of the most useful monads :)

Also ST and State have no side effects. The only monad in Haskell that has side effects is IO (unless you were to sneak in an unsafePerformIO but that is an entirely different discussion). So they aren't there to work around the limitations of purity, because they are pure.
Hey, since you specifically asked for it: did you try Magic Racket? [1] It’s a VS Code extension for Racket based on the Racket language server. We don’t have feature-parity with DrRacket yet, but many people are contributing to the language server, adding new features continually.

(Disclaimer: I am the maintainer of Magic Racket)

[1]: https://github.com/Eugleo/magic-racket
Yes! JS and TS allow this kind of functional style which I try to adhere to. There must be state, of course, but as few functions as possible should rely on it and certainly no function should "reach" into anywhere else to get a value. Those things have to be passed-in.

The change from AngularJS to Lit (or React), is an example of this kind of functional refactoring. AngularJS had two-way databinding (state!) and it attempted to pass that state upward when things changed. This made horrible spaghetti and impractical large apps.

Lit and React are only top-down. Yes, each component has state but only at the top. It gets passed-in as a parameter to other things, but they can't change it in return. This is much more modular and debuggable.
Yeah I was literally expecting the next paragraph to be "and that's how elixir was born!"
Yeah we’re a small startup and we pay $120k / 12 per month for interns. Otherwise it’s difficult to get interns at the level we need. Really not surprised finance pays more.
That's a fair criticism of the article, it would have been a lot stronger without all the junk.
Running an IPv6 core and offering IPv4-as-a-service doesn’t really make you IPv6-only.
That's a good question. Diesel was kept around because diesel engines are better suited to hauling heavy loads than gasoline engines are, but I'm not seeing an equivalent niche for hydrogen unless the bulk and weight of the storage systems can be dropped to a point where they're viable for aircraft.
Frankly, there is a larger understanding among young people that it’s irresponsible to have a child unless you’re financially stable with a good space for a home. Turns out that _most_ young people (outside of the software biz, of course!) don’t make enough money to support themselves plus a kid, plus a home with space good for raising kids. And they don’t feel outward pressure from their parents or religion to have a kid nearly as much as they used to.

And beyond that, poor mental health and knowledge of what kids can be like also means young people just don’t feel ready to raise a kid for quite a while.

These factors won’t go away without serious changes in how our economic system works.

I would also ask if it really matters that the birth to death ratio is more than one. One seems like a good baseline to maintain.
> To a French, Belgian or Dutch national the US is the savior of that war - the Soviets being uninvolved in their liberation.

While the Soviet Union obviously never fought in Western Europe, the article that the person you are replying to quotes numbers from right after the war, where the majority of French people said that the soviets were the ones who were the most responsible for the outcome of the war. And that does make sense, considering for how long they bore the brunt of Nazi aggression, and the number of casualties speak for themselves.

There is a comparison with now, where of course most people would give most of the credit to the Americans. I think a lot of people in Western Europe aren't aware what the costs of the War in Russia were.
Think you would a better leg to stand on if California’s reservoirs actually filled up during the year.

As it stands California’s reservoirs never seem to fill completely anymore. Adding more reservoirs won’t help store extra water if it simply isn’t falling from the sky.
It's just the Haskell family of functional programming languages that is hard to pick up. There are plenty of functional language families that are quite easy to understand and much more pragmatic:

* ML - includes SML, OCaml, F#, Scala, and Rust

* Lisp - includes Common Lisp, Racket, Scheme, Clojure

* Actor Model - includes Erlang, Elixir, and Pony, as well as other languages that have actor model systems at the library level

You'll find endless sources of opinions on why the Haskell family is so hard to use well. My personal opinion is that most languages create abstractions with concrete types of problems in mind. Haskell created abstractions with other types of abstractions in mind. If you ask the question "what is a monad used for?", the average Haskell user isn't going to respond in any form about making side effects safer, because that's just one thing that they do...they're going to respond with other abstractions. And after 45 minutes of explanations of what they are, they still haven't yet gotten to the explanation of what you can do with it. And then when you finally understand what you can actually do with it, you have to confront the fact that they made an incredibly easy thing hard, just in case you might want to use it a different way.

I cant recommend this rant enough - https://existentialtype.wordpress.com/2011/05/01/of-course-m....
California also reduced or stopped forest management in the 80s, it's a bit deserved.
For me, data science, quantitative finance, software engineering jobs. A large part of software development is about identifying and building abstractions to solve problems, which is also what mathematicians do. A common sentiment I've seen expressed by hiring managers is that someone with a strong math background can become very competent in a wide variety of technical fields.
This isn't a very complete picture of what's going on with water in California.

Even as population has almost doubled, and as agricultural output increases, we have decreased our water usage:

https://www.ppic.org/publication/water-use-in-california/

There's a lot to be said for simply not wasting lots of water.

If California stopped growing alfalfa, a low value product that is the largest agricultural use of water, we could probably house 20-30M more people with that water.

California could have built more reservoirs, but how many more? And how many more natural beauties would we have sacrificed instead of simply using less of a resource?

The stupidest thing California does is treat water rights as economic land for farmers that simply waste obscene amounts of a valuable resource. We need to tax that economic land at the full land rents, to encourage more economically efficient uses.
It’s that attitude which makes elm, an excellent programming language to learn function programming on.
Hah, I was pondering how to write a longer comment expressing this same thing so I'll piggyback on yours.

Paradigms are modes of thinking. You can't just pick up a new paradigm on the fly when you've spent your entire life in another one. Some individuals are exceptions, but most of us aren't so lucky as to have such a natural aptitude for changing our minds on the fly.

In order to be introduced to a new paradigm you have a couple options:

1. Sink or swim. In Haskell, this is the monad tutorial. Why the hell do people start their instruction here? Did they start here? If they did, did they succeed from that point or did they have to find another path and just forgot that this was a really stupid way to start?

2. Baby steps. "See Spot. See Spot run. Run Spot, run!" Learning Italian (previously Spanish), this is literally the level I'm at (actually, a bit better, but still highly constrained by my limited vocabulary). In Haskell, this is:

double :: Int -> Int
double x = 2 * x
quadruple :: Int -> Int
quadruple x = double (double x)

Simple functions tested in the REPL. Then you teach them about function composition (drawing on their knowledge from mathematics, where it's the same idea and not merely an analogous idea) and make a point-free version of quadruple. Then you show how functions can be passed around so that you can do:

square_function f = f . f
quadruple = square_function double

Maybe give that first function a better name, my coffee hasn't kicked in yet. My point, though, is that functional programming in Haskell does not rely on monads when teaching the topic. There are a million things to teach before you even reach that point, and only once the student has a foundation in Haskell's syntax, base semantics, and type system do they need to be introduced to monads. At which point it'll make a lot more sense because they'll be able to grok what monads add to the language.

By analogy (hah!), we don't start C language learners with implementing a generic swap or sort function. That would be way beyond their initial capability, relying no too many ideas that they have no foundation for (that said, it's a shorter path to that in C than monads in Haskell).

So why do people think that learning a totally novel (to them) paradigm like functional programming, especially in the uber-FP language Haskell, can be done by starting at the deep end without studying its fundamentals?
Job Description: The US Embassy in Kabul is looking for an outgoing individual to serve as the face of our institution.

What it’s Like to Work Here: Ask our employees and the one word they’d use to describe working at the US Embassy is "exciting.” Our team members all share a positive attitude, problem solving abilities and patience, enabling them to provide excellent customer service even during fast-paced evacuations from Afghanistan. Our culture, plus continuous opportunities for growth, have resulted in an industry-low survival rate. Don’t miss out on this rare opening with us before the Taliban seize it!

A Day in the Life as an Embassy Employee: As the first person insurgents engage with when entering the Embassy, you will help complete hostage negotiations, see to the armed gunmens' every need, and refer them to other specialists at the Embassy if appropriate. With each interaction, you will need to ensure compliance with our policies, procedures and security requirements as well as host government (TBD) regulations.

Qualifications to be a Embassy Employee: No special combat skills are required but the following mean you have the potential to be a great meatshield:

Cash handling skills
Daring attitude
Detail oriented
Good communications skills
At least three years of progressive experience in psy-ops
All candidates must be able to obtain and hold a local security clearance

Ready to apply? If this job sounds like a fit for you, then click on the ‘apply’ button below to join the evacuation! Good luck!
> ISPs will still need those IPv4 addresses, no matter how much they cost. ISPs may delay by deploying CGNAT, but once those IPv4 addresses run out there is no other option than to get out your checkbook or scale back your business.

Yes, that's what I'm saying. At some point going IPv6-only and paying for (CG)NAT64 may be cheaper than trying to buy more and more IPv4 addresses. ISPs would already have IPv4 addresses, but they'd simply use them for reaching the 'legacy' Internet, and they wouldn't be assigned to people's routers WAN interface.

> Likewise with hosters. There is no choice but to use IPv4, damn the cost.

It will probably not be the hosting company paying for the IPv4, but rather it will be the end customer, and they may not want to pay.

The first address may be free, but if you want multiple, then you could be charged for the 'extra' ones. Depending on the number of public services needed, some people may find it cheaper to use the IPv4 address(es) on the front-end of a load balancer and have their actual system be IPv6.
Another reason to move to Elixir from Ruby...
The biggest downside with doing it in something like JS is you don't have the same under-the-hood optimizations. In functional languages it's not actually going to allocate a whole new array each time an immutable list is appended to, but that's exactly what will happen in JavaScript. But yes I agree, these concepts are showing up everywhere, even if you don't do "FP."
Is anyone using a non-self describing schema format like this in C?

I used Protobufs for awhile and really didn’t like the C options.
The App Store only requires Apps to work on networks employing DNS64/NAT64 [0].

That means the app internally needs to be able to handle IPv6 addresses and not hardcore any IPv4 addresses as those can’t be reached. There’s no requirement that the service underlying the app is directly reachable via IPv6.

0: https://developer.apple.com/support/ipv6/
React Class Components vs. Functional Components with Hooks
They don't make literally every single request from a different address off a fully shared prefix (as if you just randomize the final bits but also maintain some unique prefix bits, you still lost), so it is still worse than IPv4 with NAT, much worse than CGNAT, and AFAIK in most cases isn't much (if at all) better than assigning everyone a unique sticky address.
Welcome to Nestflix