HN user

Elrac

694 karma
Posts1
Comments275
View on HN

My biggest problem with Europe's mandatory cookie warning is that the solution is worse than the problem.

I'm aware that once I enter somebody's site there's a gazillion ways for that somebody to get data about me. If cookies are blocked they'll find another way.

But thanks to Europe's feeling they need to nanny me, I get those obnoxious cookie warning popups on every site I visit. Worse, I can't opt out of the popups. Infuriatingly, Europe didn't ask me if I _want_ to be protected like this.

Of the many problems with the Internet and Web sites, I feel Europe has fixed the most trivial, in the most obnoxious possible way. Thanks for nothing, Europe!

I think there's just one lesson, a no-brainer, to be learned here: That any halfway competent author can make his character appear superior in whatever way he chooses, because he obviously and literally has complete control of the narrative.

Implying that the rational character of Sherlock Holmes is morally challenged when compared with a character acting predominantly on his gut feelings is, I think, a contemptible insult to rationality and those people who choose to act rationally. A decent argument can be crafted that rational behavior is moral behavior more often than not, but I doubt that Mr. Foster, as a fan of religious apologist (i.e. "Liar for Jesus") Chesterton, could be brought to understand it.

Yes, but that's irrelevant to your parent commenter's point. I'll explain that in simpler terms: If the object has the slightest bit of (linear) momentum then it also has a non-zero velocity, which will over time move it away from said Lagrange point.

I'll add that even with zero velocity, the Lagrange points are stable only in an ideal system where the only gravitational influence is from the two bodies between which the Lagrange points sit. An object sitting on a Lagrange point could still be perturbed by attraction from other planets or passing asteroids. Given enough time, no orbit stays stable.

You're right, I missed that.

But that still leaves the ASCII tree diagram agreeing with the sentence "Phix has just five builtin data types:" while showing (and describing, in the following bullet point list) five data types that don't include "number" or a floating-point type.

So what's left is a minor but consistently repeated error in the doc, on the "Core Language" page.

Looking at "Core Language" I was dismayed not to find any builtin floating point data type.

In "Phix vs Conventional Languages" I'm told that "1/2 is always 0.5". And "Library Routines" / "Math" includes sin, cos and tan. What's going on here?

In the original article, the author claims that lots of repeated strings turn out to be beneficial insofar as they make compression (gzip or whatever) more effective. According to him, it doesn't make sense to manually de-redundantize code when the compressor will achieve the same gain or better.

It's anticipated that at least millions, more likely hundreds of millions of humans will die to the consequences of climate change including effects of extreme weather, flooding and (especially) famine. This won't extinct all of humanity but can be expected to severely impact civilization(s), with a chance of this impact being fatal to individual cultures.

For a prospectus of what could happen, I point to the large-scale devastation of (ancient) civilization attributed to the Sea Peoples (https://www.history.com/news/who-were-the-sea-peoples). They're believed to have toppled the Hittite Empire and severely weakened the Egyptian one. "some historians believe they had been displaced from their homeland by famine or natural disasters." -- the parallels to the anticipated effects of climate change should be clear.

Large-scale political unrest, very possibly including a WW3, is something I feel justified in considering "an existential crisis." Your mileage may vary.

The author's expressing a personal opinion, and not supporting it very well. That this low-value piece complains about disinformation reeks of unintended irony.

Here's my personal opinion: blaming technology for failures of humanity is something stupid people do.

Yes, people are angry on the Internet. That's not the Internet's fault, it's the fault of societies whose top products, recently, are profits and poverty. When simple people support a guy whose slogan was "Make America Great Again," they're acting on a legitimate gripe.

"America great" could mean a lot of things, but I think the simplest rendition of it could be a society where a single full-time job was enough to support a family, pay its medical bills and save up for college for the kids. Are people wrong to be angry that this scenario is increasingly out of reach?

What society desperately needs are smarter people. Or at least better informed people. Or better educated people who are able to make smarter choices about their sources of information.

This is a challenge to society, to the education system, and it's one that desperately needs to be met. Not by partitioning, walling and gating the Internet, because nothing assures us that the "new net" wouldn't quickly succumb to the same basic problems. The solution to bad information is not making less information accessible, but more.

People need to learn to distinguish fake news from the real McCoy; this is increasingly becoming a survival skill. That being so, pressed by necessity, people can and will learn. There are growing pains, but the Internet isn't making the sky fall any more than steam engines did in their day.

For the past 2 years, most of my work has been in porting some fairly simple legacy message forwarding and conversion programs from C to Java. So on our test servers I can swap out the C programs for drop-in replacements in Java and watch them (via log files) working -- or not. If my programs fail I can either observe crashes and stack trace or the message receiving programs will crash or loudly object to bad data from me. Usually one day's worth of traffic will exercise enough of my program's logic that failure to fail for a day constitutes a successful end-to-end test.

Yes, this is kid stuff. My current work is about as sophisticated as typical undergrad Computer Science projects. We can't all be doing rocket science!

I used to write automated test setups for my programs, providing streams of pre-canned messages and such. That worked out OK. I suppose it's great to have test suites to avoid regression and such, but I ended up regretting all the effort I sunk into testing. So far it's been my experience that I would sink a lot of time into creating a test suite that could exercise my programs as thoroughly as simple exposure to real-world message traffic.

I hope my attempt to be brief didn't come across as derogatory when I wrote "strange." Here's an example: I like to make a lot of my fields and methods private. It's handy that my IDE warns me when fields and methods aren't used, or when final fields aren't initialized. Obviously, for "classic" unit tests I'd have to at least expose my methods at the package level to call them from out of class. Another example: my apps rely on a fair bit of configuration data and some embarrassingly tight coupling between my classes. A JUnit-friendly program would call for a lot of mockups, as well as a lot more coding to interfaces rather than concrete classes, probably a lot more reliance on design patterns. My coding style for these projects yields a small number of compact classes but is very hostile to unit testing.

To be clear: For many other projects, your mileage may vary dramatically. I've successfully done TDD in other projects where that made a lot more sense.

Almost never.

With the kind of software I mostly write these days, I'm fortunate to be able to incrementally develop my code and test it under real-world conditions or a subset thereof.

So my approach is exploratory coding -- I start with minimum workable implementations, make sure they work as needed, and then add more functionality, with further testing at each step.

The upside is that I don't have to write "strange" code to accommodate testing. The downside is that I'm forced to plan code growth with steps that take me from one testable partial-product to the next. A more serious downside, one I'm very aware of, is that not every project is amenable to this approach.

Underneath the eloquent prose and the many helpful examples and showcases, this is an anti-science hit piece.

How dare theoretical physicists develop ideas about the world around us that can't be quickly and obviously supported by real-world observations? It's apparent that science is in a crisis! We might as well just throw up our hands and place our faith in homeopathy and creationism, which are no better.

Sorry, Mr. Baggott, that's a shitty argument for a target audience of stupid people.

A counter-argument could be built on science stories like Ignatz Semmelweis' ideas about hand-washing before surgery. Semmelweis suspected that _something_ was transferred from cadavers to birthing mothers via the hands of unwashed surgeons, but he had no idea what that something was, and could certainly not provide empirical proof. He was later vindicated by the work of Pasteur and Koch. Too late for poor Dr. Semmelweis, who died in a nuthouse, but today hand washing is an essential practice in modern medicine.

Mr. Baggott is telling us that science talks about things that are obviously real, like bacteria, but also things that may or may not be, such as multiverses. He's trying to convince us that because multiverses aren't obviously real, science shouldn't be talking or even thinking about them. He's implying that science is dishonest because it claims that multiverses are real. Actually, he's the one who's being dishonest, not science.

Especially in fields where it's not feasible to stick the subject matter into a test tube, hypothesis and speculation are valid tools of science. Hypotheses are proposed with the expectation that science will later refute or substantiate them. Contrary to what Mr. Baggott brings across, this is part of science's process, a process that has proven wildly successful and valuable in the past.

Most scientists are honest; and if asked by someone interested in more than a catchy headline, they'll gladly tell you which theories are solidly supported by a wealth of evidence, which are just ideas being thrown at the wall, and which are in between. People who fail to understand this are poorly informed; people who intentionally paper over the differences are dishonest. Please, let's ignore and shame that kind of people.

Pretty much every "alternative" medical procedure or product for the gullible has one serious side effect: the potential for abandoning medicine that actually and empirically has an effect superior to placebos.

Prominent example, to make it a bit more real: Steve Jobs had a cancer with an excellent prognosis on real medicine but chose to handle it with... fruit juice, I think. Steve Jobs is now dead.

Oncologists write bitter and angry testimonials about patients they weren't able to save because those patients turned away from effective medicine. It's even more infuriating when ignorant parents make these decisions for their children.

Looking at your wish for exploratory evaluations in for-comprehensions, I was reminded of how Clojure does this. I found it quite elegant.

The inside of the for-braces allow for keyword-based sub-clauses: There's

- ":when" which will suppress output for elements not matching a filter expression,

- ":while" which will stop when elements stop matching a filter, and

- ":let" which will let you bind some new values in mid-loop.

I rarely need these features, but when I do I find them really really helpful. Maybe someday someone will consider doing something similar in Python.

No doubt our different perspectives are a result of us doing different things with Go.

I don't write compilers or other "highbrow" Computer Science-heavy programs. I most frequently find myself writing interface software, data converters, text extractors, near-system utilities. Lots of the kind of things some people might write in C or Perl. As a result, my usage of data types, even structs, is pretty light. Turns out I can do most of my work with the built-in types: integers, characters, strings, arrays and hashes. I rarely even need/use interfaces!

Data types don't play a big role in my work. Your mileage may vary, obviously.

I hear you, but there are also upsides. As a veteran of many programming languages, I find Go's minimal feature list a plus!

Especially if I'm not rushed, I have an annoying tendency to try for the most elegant, succinct, idiomatic or general way to program a solution, and given a sufficiently expressive language I then fall victim to analysis paralysis.

By giving me so few options, Go removes a major cognitive load. Very often there's a single obvious way to get something done and I'm not tempted to try anything fancy.

Might be against the rules, but here's a "me too."

I've been avoiding Medium even before they became so blatantly commercial. Forcefully urging me to create an account and log in just to read a bloody article? No thanks.

Let's be fair to Haskell and LyaH:

I've taught some Java classes. I can get people writing and running trivially useful code before explaining the concepts of "class" and "static". I explain that parts of the code will remain a mystery for a little while until I explain them, I promise to do so, and of course I fulfill that promise as soon as I can.

I feel neither Java nor Haskell are intrinsically bad just because there's no practical way to teach them completely on progressively layered concepts. Even (e.g.) Lisp has a risk of using special forms before understanding them.

Wow, cool! Thanks. I hope to do more with Haskell once I retire, and this may stand me in good stead.

I think my point is still supported to some extent by the fact that this is knowledge from outside of the language that I'd need to know to accomplish. It's something I need someone helpful like yourself to tell me about. Also something that only works because this library deliberately breaks Haskell's rules.

As a Haskell n00b, I'd like to mention something I can do in about 20 other languages but not in Haskell:

( UPDATE: I stand corrected, in a reply by tome. )

I'm writing and debugging some functional code - in Clojure. There's a function I've smoke-tested on its own but that's failing me with "real" data. Lacking a decent debugger for Clojure and being too lazy to isolate my problem into a test setup, my tool of choice is the lowly "debug print."

In Clojure, the body of a function is essentially imperative, and I can insert a `(println "label:" value)`. To do the same thing in Haskell, I'd have to restructure my whole damn program.

I understand the rationale for purity in Haskell, but sometimes I see it as badly standing in my way of accomplishing what I want to do.

I'd like to voice my disagreement with the author about C having the shortest compile times. From my own experience and reports all over the Web, it seems that Go handily beats C at compilation speed.

This is mostly down to a lot of design decisions in Go made with the goal of speeding up compilation. Elimination of header files, pre-compilation of Go modules, efficiently parseable syntax and more.

From what I've seen, first-time compilation of Go programs competes well with C, while incremental compiles are practically instantaneous.

Well, I'm basing that particular claim on the published opinion of a professional academic historian of science.

If you or anyone else interested has a lot of free time, you may want to skim these pages by Dr. Richard Carrier:

http://richardcarrier.blogspot.com/2006/11/science-and-medie...

http://richardcarrier.blogspot.com/search/label/history%20of...

https://www.richardcarrier.info/archives/14660

Unfortunately, especially the first two links are into his blogs and challenge the reader to wade through a whole lot of polemic. The third one, though, makes for interesting general reading.

In the second link, he explicitly addresses a list of advancements allegedly from the early Middle Ages. I did some rather superficial research on the first three items you mentioned: windmills and water mills and pumps. Lo and behold, all three were known and in use in the Roman Empire or well before the period Carrier focuses on, to wit, 200-1200.

Admittedly, his focused time frame is shifted a bit from that of the discussion here in HN: We're talking about what happened after the Roman Empire tanked, while he's arguing against claims that Christianity was a boon to science.

Ah, sorry about muddling that up. I understand that Fallows is a journalist, but he looks to be distilling the ideas of "real" historians including Peter Brown and Walter Scheidel. So to my way of thinking (and arguing), Fallows is just the proxy (facade? I suck at design patterns) for those guys.

I realize I don't have the chops to argue against a professional historian, but here's what I'm seeing:

The period after the fall of the Roman Empire is often called "The Dark Ages," though a lot of revisionists try to make us think this wasn't nearly as ominous as it sounds. OK, we know that time wasn't called "dark" because the Sun failed to shine; it's called "dark" because we have a dearth of historical information about it.

What does this tell us? The Greco-Roman civilization produced truckloads of books on all topics of interest; there were libraries both public and private, and schools to support general literacy, often bilingual, among the upper class, at least. A good part of the literature from that age survived the multiple sackings and burnings of Rome, etc.

In the Dark Ages, on the other hand, literacy was heavily monopolized by the clergy, and a preponderance of new books dealt with theology. It's a period where even many kings signed an "X" for their names. A period where intellectual energy went into religious ruminations and little else. A period of intellectual barbarism, in other words. A thousand years of barely any scientific progress.

In another top-level comment, user "causality1" mentions a large handful of side effects of this intellectual decline, including decreases in population, life expectancy, trade, infrastructure and technology. Unlike the author, I believe a decline in a whole slew of markers of societal functionality is bad indeed.

I think _theoretically_ the way this is thought to work is that Amazon or Google could take out daily ads in all major media that say "vote for John Doe, he's a great guy!", i.e. well-heeled companies could do candiates' campaigning for them, while we ordinary people can't afford that much public exposure.

That may be true enough, but it's not a phenomenon we've been seeing. What we _have_ been seeing in the past few years, especially after _Citizen's United_ and the dawn of PACs, is wealthy corporations legally handing money to candidates to do their campaigning with.

This would and should have nothing to do with free speech, except that there have been recent (SC?) rulings declaring financial donations, i.e. money, to be a form of speech, so basically unlimited political donations are considered protected under the 1st Amendment. I personally consider this a grave error in judgment, undoubtedly politically motivated.

I mostly agree with what you said but I'd like to point out a glitch in your argument about halfway through: where you say "because it has, for millions ... of years."

I'd say that's not valid, because what happened for millions of years is a far cry from what modern agriculture is (mostly) accomplishing: (a) actually establishing food security, and (b) for a freakishly large number of one particular species.

When you say "every single one of your ancestors got enough to eat" you fall victim to survivor bias; we know that many, many of our ancestors' siblings didn't get enough to eat. In fact, humanity nearly died out on one or two occasions, though I'm not sure it was for lack of nutrition.

I also feel that natural, historic ecologic agriculture isn't readily analogous to a model of agriculture that would be feasible today. Consider that part of the historic model was a pyramid of natural predation, i.e. animals that lived off the land and each other, fertilizing the "agriculture" both with their droppings and often their corpses, with humanity skimming off parts of that food chain. Again, I don't think a faithful replication of that model could effectively nourish anything near the world's current population of humans.

I could be wrong, but I suspect that a model of agriculture strongly similar to "historic ecological food production" might only work for a significantly smaller human population.

You're of course free to "doubt that anything is truly random" and to suspect that "there has to be some type of cosmic drummer," but I feel compelled to point out that your "case in point" completely fails to support your opinion.

Your example insinuates that (a) all of the human genome is required to correctly model the human phenotype, i.e. each bit is significant, and, more importantly, (b) the human genome came into existence as-is without a history of stepwise expansion and refinement.

I can't know whether you're a creationist, but I will point out that your attempted argument is on (e.g.) #8 on Scientific American's list of "Answers to Creationist Nonsense" (https://www.scientificamerican.com/article/15-answers-to-cre...). Amusingly, SciAm's rebuttal even explains how the "monkeys typing Hamlet" fails as an analogy to the human genome.