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

"The EU is more of a threat to itself than Russia is"; it can be easily argued that this is only the case if democracy has little value because in Russia democracy does indeed have little value (let alone life, etc).

"Democracy is the worst form of Government except for all those other forms that have been tried from time to time"

So the EU and the EC are big lumbering organisation that make poor decisions; but then people make poor decisions day in day out. But just because you *feel* disaffected doesn't mean the system is inherently wrong (unless of course you believe that politics' primary, if not only, purpose is to make you "feel good(tm)").

It's probably far more accurate to say that wealth inequality is the EU's biggest threat and that "the elites" (which is more than just senior politicians and bureaucrats) don't feel the pain of inequality and so aren't internally motivated to do much about it (culture eats strategy for breakfast, etc etc).


"But you're basically arguing for not criticizing the status quo.", but that wasn't what was argued ("You should be able to insult and criticise the Prime Minister."), but more your interpretation of what was said. You're making a strawman argument.

Well, the PM isn't exactly the status quo, I wasn't replying to that. Rather, I was responding to this specific bit, emphasis mine:

> You should not be able to gain a position of power and then go on a crowded stage to claim that vaccines cause autism. This is intolerable. We are attacking the foundations of society.

Not sure when the strawman is. "The foundations of society", for me, means "the way things are". Which can be vaccines, sure, or any kind of general policy which has been showed to have a positive effect on society, but it can also be all kinds of things taken for granted which aren't necessarily rooted in reason.


To be really honest, I share a similar stance to you overall but I would still admit that there is some partial truth to it

I would like to expand this not only to foreign state actors that people mention but also companies inside which are actively trying to do nefarious stuff

As an example, Tobacco industry knew that the damages were there but they still tried to spur up medical confusion around it all so that people would still think that medical discussion is going on when it was 100% clear that tobacco harms. Who knows how many people died

The man who discovered that washing hands saved lives was so ridiculed and I think met with hostility because doctors couldn't comprehend the idea that it was they would could spread diseases. This is decades before germ theory was invented

His name is Ignaz Semmelweis and the world was unjust to him. Doctors ridiculed and threatend him and he was labelled obsessive and doctors called it mere coincidence. His career crumbled as he was forced out of vienna/his hospital and his mental health deteriorated as his warnings were ignored

in 1865 Semmelwise was commited to an asylum where he died just two weeks later at age 47

Only after pasteur developed germ theory and lester pioneered antisceptic surgery, semmelwise was finally vindicated.

This simple practise of handwashing is now considered the most basic medical standard worldwide saving countless millions of lives in the process.

(I had to write it by hand here basically transcribing this really amazing video that I watched about such a topic, I would highly suggest watching it)

https://www.youtube.com/watch?v=hBCOh1SYQYA (crazy people who were proven right)

Semmelwise's stories can brings chills to spine.


Hmm I use Firefox and the rendering I see in Firefox looks nothing like the render the author gets in Firefox; in fact the text rendering I get looks very similar to the "Chrome" rendering. Obviously this must depend on the libraries linked during the build process.


The article is from 2019, things might also simply have changed since then.


Depending on your OS Firefox will select from multiple rendering backends based on your GPU, driver etc.

On Windows it may or may not be using DirectWrite for text rasterization as a general thing, and in some cases text might be rasterized using a different fallback path if DirectWrite can't handle the font, I think.

IIRC this was/is true for Chrome as well, where in some cases it software rasterizes text using Skia instead of calling through to the OS's font implementation.


IIRC, Chrome now uses CoreText/DirectWrite for system fonts on macOS/Windows, and Skrifa (FreeType rewritten in Rust) outlines rasterized with Skia for everything else (system fonts on Linux, web fonts on all platforms).

I believe Firefox leans on the system raserizers a little more heavily (using them for everything they support), and also still uses FreeType on Linux.


`Not a forcing function unless you’re levered`; but every one is levered, you aren't born with all the housing, food, and water you'll need for the rest of your life. Everyone is born with a net negative of the necessities of life, the difference though is that a very small minority are bequeathed this by well heeled ancestors. But for the overwhelming majority there is a life long struggle to afford to live a suitable life.


> but every one is levered, you aren't born with all the housing, food, and water you'll need for the rest of your life

This is not leverage.

> Everyone is born with a net negative of the necessities of life, the difference though is that a very small minority are bequeathed this by well heeled ancestors

By your definition, no, they too are born in entropic deficit, it's just satisfied immediately by their parents. (This is how humans work.)


"Lai is a victim of this miscalculation."; I don't think Lai miscalculated, he knew what was coming and fought it anyway.

"Authority comes from submission"; sure someone can threaten you with physical coercion, but they can't make you want to submit. I would strongly suspect that Jimmy knew what was coming, but the point isn't "winning" in the "hollywood" sense, but rather that he did the right thing even. I would suspect not even in spite of the cost, but because of the cost.

Are principles that don't cost you anything even principles?


It’s hard to see Jimmy Lai purely as a victim. Much of his “martyr” narrative appears to be constructed by Western media as part of an ideological battle. From what I remember in Hong Kong, Jimmy Lai had a rather shady reputation. His media outlet was widely known for publishing paid-for stories, spreading misinformation, harassing news sources, and sensationalising sex scandals.

His original intent in setting up the news outlet was often said to be market manipulation for personal gain rather than journalism. He was also known for publishing xenophobic content targeting mainland Chinese. One of the most controversial examples was running ads that portrayed mainland tourists as “locusts” and called for them to be driven out of Hong Kong.

In addition, he donated money to prominent US neoconservatives. I’m not sure whether Western media are unaware of his earlier background in Hong Kong, or if they are deliberately choosing to whitewash his reputation.


So much of this article has two implicit tenets; 1) information can be "owned", and 2) copying information reduces its inherent value (which as I'll explain follows from the first).

So as a preface, I would argue than in the marketplace for information (ideas, content, works, etc if you will) that value has two components, 1) utility value, and 2) scarcity value (which I would argue has two components, availability value (information horizon[0]) and saliency value (preference as a result of the information horizon[1]). Obviously the rise of copyright over the last few centuries attempts to limit commerce of ideas based somewhat loosely on the concept of (real, physical) property law (itself a glorified codified extension of the animal behaviour of territoriality, aka survival by means of securing resources); ownership is a moral value autogenous to an idea's sui generis expression on, by, or through a recorded medium. In other words the mere act of recording an idea in a "creative" fashion brings with it a "moral" ownership of that idea. Of course the "creative" and "moral" parts from which the law prescribes and proscribes these limits is debatable. The legally mandated "monopoly" of an idea (even though the marginal cost of replication approaches zero) provides this scarcity. So in the end because of this the scarcity, and the resulting "rent seeking" (corporations seeking to charging (typically over time) more than the cost to create and distribute information), are in effect value (read wealth) redistribution.

So, what is more "moral"? Using a constructivist approach, which is more socially acceptable (and hence far more likely to be codified into law)? broad access to information distilled to the point that sui generis is "removed" so that concepts (which in general can't be copyrighted) are freely available for transformative use, or extending the "moral right" of copyright, now that information distillation is so cheap, to include the ability to "copyright" an idea rather than the expression of it. Or are we seeing a "breakdown" of the codification of the law where the granularity of the spectrum is so fine it becomes so costly to enforce such the "value" of the law in reducing the transaction costs of daily social interaction in the information sphere that we revert to pre-copyright behaviours, i.e. information hoarding.

[0] https://www.researchgate.net/publication/261773523_Informati... The concept is quite simple there is a limit to the amount and quality of information that a) a human can get access to (and following what they prefer / value), and b) relatedly the amount that can be synthesised for actual use. [1] https://www.sciencedirect.com/science/article/abs/pii/S07408...


In a lot of ways this seems, from the outside, to be similar to "Planck's principle"; e.g. physics advances one funeral at a time.


In exactly what sense? Who is the "old guard" you're thinking of here? Peter Schwabe got his doctorate 16 years after Bernstein. Peikert got his 10 years after.


For the most part LLMs choose "the most common" tokens; so regardless of whether the content was "AI content" or not, maybe you are getting tired of mediocrity.

And of course also that mediocrity has now become so cheap that it is now the overwhelming majority.


This is similar to how the average number of children per household is 2.5, but no one has 2.5 children. The most common tokens actually yield patterns that no one actually uses together in practice


LLMs have the tendency to really like comparisons / contrasts between things, which is likely due to the nature of neural networks (eg “Paris - France + Italy” = “Rome”). This is because when representing these concepts as embeddings, they can be computer very straightforward in vector space.

So no, it’s not all due to human language, LLMs do really write content in a specific style.

One recent study also showed something interesting: AIs aren’t very good at recognizing AI generated content either, which is likely related; they’re unaware of these patterns.

https://www.sciencedirect.com/science/article/pii/S147738802...


One of my favourite books, I even read it a couple of times, even hacked around with xv6 (the x86 port of the edition 6 kernel[0][1], if you do hack around with it in a VM make sure to add HLT to the idle() function, if nothing else it will save your fans).

One of a small number of books (such as TCP/IP Illustrated[2]) that progressed me from the larval hacker stage.

I also met Lions when I was a kid, but didn't put 2 + 2 together until 20 years later!

[0] https://github.com/bringhurst/xv6 [1] https://pdos.csail.mit.edu/6.828/2011/xv6.html [2] https://www.r-5.org/files/books/computers/internals/net/Rich...


For Linux, one of my top 5 favourite books of all time is “Linux Core Kernel”, which is a Linux version of Lions but on pages so big it doesn’t fit on the shelf.


TCP/IP Illustrated is still in copyright. Please don't post pirated material here.


Apologies; if I could edit it I would.


It's a pity that the section on exceptions didn't do a more detailed analysis on the criticism of exceptions; in my personal view I haven't liked exceptions, in a similar vein to how I'm not a huge fan of the implementation of POSIX signals or setjmp / longjmp.

Although I very much see the reason why it was developed, in effect it comes closer to a glorified form of "come from" (and people thought that goto was considered harmful).


I'm the opposite - I really like checked exceptions in Java because it's very easy to see how developers are handling errors and they also form part of the function signature.

Most functions will just pass on exceptions verbatim so it's better than error return values because with them the entire codebase has to be littered with error handling, compared to fewer try catch blocks.

setjmp, etc. are like unchecked exceptions, so I'm also not a fan, but I use this occasionally in C anyway.


>I really like checked exceptions in Java because it's very easy to see how developers are handling errors and they also form part of the function signature.

Errors as return values also form part of the function signature in many languages.

>Most functions will just pass on exceptions verbatim so it's better than error return values because with them the entire codebase has to be littered with error handling, compared to fewer try catch blocks.

The question is whether you think that calls that might pass an error up the call chain should be marked as such. I think they should be.

I wouldn't call this "littered with error handling" just because a certain language has decided to do this in a way that resembles industrial style fly-tipping rather than just littering.


Why would errors as return values have to propagate any farther in the codebase compared to errors as exceptions? If exceptions can be handled, so can the value based errors.


The criticism as I understand it isn't about where the errors are actually handled but the ceremony needed in an errors-as-values model, most obviously in Go where you've got to write a couple of lines of test and early return explicitly for each such possible error, compared to C++ where you write nothing.

Rust's Try operator is the minimal ceremony, a single question mark acknowledges that we might not succeed and if so we return early - but there was still ceremony for each such early return.

I happen to think exceptions are inherently a bad idea, but for a different reason.


You nailed it - that's my criticism :)

I've worked with a lot of code like this (particularly C libraries and litanies of return codes), and it's fine... But I prefer something like Java-style exceptions. And with Java lambdas or Kotlin the trend is unfortunately away from checked exceptions these days...

I too am interested in your other reasons!


See my other comment for this article: https://news.ycombinator.com/item?id=45864463

I believe that for today's large software which has multiple engineers, possibly not even working in the same group, involved in the final product, the key problem of exceptions (knowing what is or is not an "exceptional" situation for the software) is not soluble in the general case. Exceptions are a clever idea if you're a solo writing a soup to nuts piece of software, say the firmware for a thermostat, but are too flawed for the library author or the app developer.


What reason is that?


I think the sweet spot is to use exceptions for bugs. If the error is expected, make it data.


"Exceptions should be exceptional" gets to the heart of the problem with the entire concept of Exceptions for non-trivial pieces of software where there's more than a single programmer maintaining the complete system.

Now the library programmer has to guess whether when you - the application programmer try to Wibble a Foozle - will have ensured all the Foozles can be Wibbled, and so not being able to Wibble the Foozle is an exceptional condition, or whether you want to just try to Wibble every Foozle and get an error return if it can't be Wibbled...

One option is for every such condition you bifurcate the API. Instead of three types with a total of eight methods, maybe there are six conditions for two of those methods, and so now it is three types with over 100 methods... ouch. Good bye documentation and product quality.


So - exceptions are for invariant violations? I'm essentially trying to work out what it is that makes something "exceptional"


Well, this obviously depends on a given programming language/culture, but in my mind I would say in case of parsing a string to an int it is an expected case that it could fail, so I would model it as a Return type of an Int or a ParsingError, or something like that.

Meanwhile, for a function doing numerous file copies and network calls I would throw an exception, as the number of possible failure cases are almost limitless. (Like you surely not want to have an ADT that models FileSystemFullErrors and whatnot).

It so happens that in this particular example one is pure and the other is side-effecting, but I'm not convinced that's a hard rule here.


In a good effect system exceptions as effects are isomorphic to error conditions as data, so the choice comes down to what is more ergonomic for your use case, just like the choice between these three isomorphic functions should is down to ergonomics:

    frob1 :: Foo -> Bar -> R

    frob2 :: (Foo, Bar) -> R

    frob3 :: FooBar -> R
    data FooBar = FooBar { foo :: Foo, bar :: Bar }


Although INTERCAL's "come from" provided the opportunity to implement a gloriously concise multi-threading syntax/mechanism [1]!

[1] https://esolangs.org/wiki/Threaded_INTERCAL


Everybody chooses a favorite depending on their domain.

A function executes, and some error happens:

- Return error value: try to handle the error ASAP. The closer to the error the more detailed the information. Higher probability of recovery. Explicit error code handling throughout the code. Example: maybe you try again in one millisecond because the error is a very low probability but possible event.

- Exception: managing errors requires a high-level overview of the program state. Example: no space left on device, inform the user. You gather the detailed information where the error happened. The information is passed as-is or augmented with more information as it bubbles up the stack until someone decides to take action. Pros: separate error handling and happy path code, cleaner code. Cons: separate error handling and happy path code, unhandled errors.

Worst case scenario: you program in C. You don't have exceptions. You are forbidden to use setjmp because rules. A lot of errors are exposed directly to the programmer because this is a low-level language. You return error codes. Rules force you to handle every possible return code. Your code gets incorporated as an appendix to the Necronomicon.


This 2003 interview with Anders Hejlsberg gives considerations why he didn't add checked exceptions to C#. https://www.artima.com/articles/the-trouble-with-checked-exc...


Exceptions done well should outperform return value checking. However it’s very difficult to make it perform well and for some reason people prefer -> Result<T, E> instead of -> T throws E which is basically the same thing.


The difference is the monadic capabilities of the result type. Thrown exceptions pepper codebases in ways that are even more unfortunate than monadic composition, which is already kind of iffy, but at least has generic transforms for error recoveries, turning errors to successes of a different type and so on. You end up with far less boilerplate.


Well, PLs with effect systems are basically meant to solve exactly this problem.

E.g. a generic `map` function can become throwing if it handles throwing lambdas, but are otherwise non-throwing - this is pretty much the main pain point with Java's checked exceptions.


I’m not so sure. The page goes over how it works in Scala 3 and it’s a little bit cleaner. But there is some nicety in handling return and exception uniformly in some cases.


They're not the same since exceptions typically require non-local control-flow, where Result types require local control flow.


Basically the same thing except the former is pessimistic and the latter optimistic.


How do you feel about algebraic effects?


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

Search: