HNHacker News
TopNewBestAskShowJobs

rbehrends

3,146 karma · joined December 27, 2011

submissionscomments
rbehrends··on 6 days until the EU votes on an extinction-level event for the internet
Yes, it is actually written into the Berne Convention as the right to quote [1]. And this is not going away at all. You will still be able to quote from articles in other articles, in blog posts, or in online discussions.

The problem is that the right to quote does not cover a mere mechanical aggregation of quotes; the resulting work must still be an original work. This affects primarily news aggregators and search engines (insofar as they quote from press publications).

[1] https://en.wikipedia.org/wiki/Right_to_quote

rbehrends··on EU to move ahead with cultural quotas for streaming services
Netflix already offers only a fraction of its US titles in EU member states.

And you'd be surprised. The UK, France, and Germany combined already outproduce America in terms of movies [1] (quality may be a different story, of course).

[1] https://en.wikipedia.org/wiki/Film_industry#Statistics

rbehrends··on EU to move ahead with cultural quotas for streaming services
> 30% for each country seems really high to me.

The article misstates what the proposal actually says. It's a quota of 30% on "European works". The term is defined in Article 1 (1) (n) of Directive 2010/13/EU [1], which the proposal seeks to amend; it includes works originating in the member states, works originating in countries that are parties to the European Convention on Transfrontier Television, and works coproduced based on agreements between the EU and third countries. (There is an additional provision ensuring that the movies are actually produced mainly in these countries and not just through letterbox companies having a legal presence there.)

So, Netflix can definitely offer French movies to Belgian viewers in order to fulfill their quota or British movies (even after Brexit, the UK will remain a party to the European Convention on Transfrontier Television) to Irish viewers.

An overview on the state of the legislation can, as with most EU legislation, be found on the European Parliament's legislative train website [2].

[1] https://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:...

[2] http://www.europarl.europa.eu/legislative-train/theme-connec...

rbehrends··on Intel Publishes Microcode Patches, No Benchmarking or Comparison Allowed
Against consumers, almost certainly unenforcable under the Unfair Terms in Consumer Contracts Directive alone, nevermind that some countries have even stricter laws regarding unfair contract terms.

[1] https://en.wikipedia.org/wiki/Unfair_Terms_in_Consumer_Contr...

rbehrends··on Latest Text of EU Copyright Directive Shows It's Even Worse Than Expected
The analysis of Article 11 is misleading. The actually relevant part is in Article 11 (3), which incorporates (by reference) the usual limitations and exceptions to copyright [1], including the right to quote. This is necessary, anyway, because the Berne convention mandates that right [2].

Article 11 targets news aggregators and search engines. Unlike blog posts or newspaper articles, they generally cannot benefit from the right to quote [3]. Article 11 has two goals. One, it aims at protecting pieces of a work that are generally too short to enjoy regular copyright protection; second, unlike the usual practice in continental European copyright law, it grants ancillary copyright to publishers, not authors, for easier enforcement of these rights.

Note that this does not mean that I endorse Article 11 (I do not and actually consider it harmful and the result of misguided lobbying), but we should be clear what we are actually talking about.

[1] Article 5 of Directive 2001/29/EC.

[2] https://en.wikipedia.org/wiki/Right_to_quote

[3] As the Wikipedia article above summarizes it, "the resulting new work is not just a collection of quotations, but constitutes a fully original work in itself".

rbehrends··on Audi CEO Stadler Taken Into Custody in Diesel-Cheating Probe
He has been charged with fraud (Betrug) and causing false entries to be made in public records (mittelbare Falschbeurkundung) [1].

This is not surprising, because a hard requirement for pretrial detention [1] is that it is highly likely that the suspect committed a criminal offense [2]. The risk of either flight or obstruction of justice is an additional requirement on top of him being a suspect.

[1] http://www.spiegel.de/wirtschaft/unternehmen/audi-chef-ruper... (in German)

[2] https://www.gesetze-im-internet.de/englisch_stpo/englisch_st...

rbehrends··on The EU's Copyright Proposal Is Extremely Bad News for Everyone, Even Wikipedia
Ugh, I hadn't even realized that EFF was linking to a two year old version. Little wonder that they got so many things wrong.

For a better overview on upcoming EU legislation, I recommend the legislative train schedule [1]. While the current page on the Directive on Copyright in the Digital Single Market [2] only has the penultimate version, it's still more up to date.

[1] http://www.europarl.europa.eu/legislative-train/

[2] http://www.europarl.europa.eu/legislative-train/theme-connec...

rbehrends··on The EU's Copyright Proposal Is Extremely Bad News for Everyone, Even Wikipedia
Because it's not "the same people". This is legislation in a huge bicameral legislature with a multitude of interested parties, including 28 member states and eight political groups. That's before we even consider lobbying interests. Such legislation is usually a tug-of-war that involves lots of horsetrading and compromise (similar to the US Congress, really), because it requires majorities in both houses of the legislature. So you have the various political factions duke it out in the lower house (European Parliament) and the member states in the upper house (Council of the EU). The current proposal has seen a lot of back-and-forth between the conflicting interests of the member states (for example, Germany likes Article 11, but doesn't like Article 13, while other member states have different priorities).
rbehrends··on The EU's Copyright Proposal Is Extremely Bad News for Everyone, Even Wikipedia
The current proposal is here: https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CONS... [1]; the text you have seems to be an older version.

I'll add that there is indeed a lot of wrong stuff in the EFF article. Don't get me wrong, articles 11 & 13 are indeed bad law (IMO), but promoting inaccurate information does not help.

For example, there is no mention of "noncommercial activity" in the entire text of Article 13 (non-commercial activity is only mentioned in one of the recitals for a different purpose). Article 13 applies to "online content sharing service providers". These are defined in Article 2:

"‘online content sharing service provider’ means a provider of an information society service whose main or one of the main purposes is to store and give the public access to a large amount of works or other subject-matter uploaded by its users which it organises and promotes for profit-making purposes.

"Providers of services such as non-for-profit online encyclopaedias, non-for-profit educational and scientific repositories, non-for-profit open source software developing platforms, as well as internet access service providers, online marketplaces and providers of cloud services which allow users, including businesses for their internal purposes, to upload content for their own use shall not be considered online content sharing service providers within the meaning of this Directive;"

Likewise, the following claim is misleading:

"Speaking of references: the problems with the new copyright proposal don't stop there. Under Article 11, each member state will get to create a new copyright in news. If it passes, in order to link to a news website, you will either have to do so in a way that satisfies the limitations and exceptions of all 28 laws, or you will have to get a license. This is fundamentally incompatible with any sort of wiki (obviously), much less Wikipedia."

Article 11 is about ancillary copyright; now, ancillary copyright is a bad idea, but the above is a misrepresentation. For starters, Article 11 (3) subjects ancillary copyright to the same limitations as regular copyright, in particular Articles 5 to 8 of Directive 2001/29/EC, including the right to quote such content (which in turn requires attribution).

What Article 11 does is (potentially) creating a copyright for small excerpts that might normally not be copyrightable and granting that right to press publishers in addition to the authors. This is a problem for news aggregators and search engines (which rely on producing content that's an aggregation of normally not copyrightable material) but not per se for Wikipedia (where pages consist of original material littered with references and quotes).

The biggest problem for news aggregators is that Article 11 (1) leaves the definition of "insubstantial" up to member states, which will probably lead to a "lowest common denominator" result, where the most restrictive interpretation by a member state effectively determines copyrightability for the purposes of ancillary copyright.

[1] And earlier revisions can be found here: https://eur-lex.europa.eu/procedure/EN/2016_280

rbehrends··on No one’s ready for GDPR
FATCA, for example. It forces all foreign banks with US customers to report their customers and their assets to the US treasury or suffer a 30% withholding tax on all US sourced payments [1].

Needless to say, non-compliance is not a real option for most banks, given the importance of the US in the banking sector, so they're essentially being blackmailed into compliance.

(Unfortunately for US expats, some foreign banks figured out that the easiest way to be compliant was simply to get rid of their US customers.)

[1] https://www.law.cornell.edu/uscode/text/26/1471

rbehrends··on Are Monads a Waste of Time?
> But Haskell’s execution model has no underlying support for continuations, and yet there are perfectly efficient implementations.

What you need is a way to capture and manipulate stack frames at a very basic level. Haskell cannot magically avoid that. As I recall (though it has been a while), Control.Monad.CC reifies stack frames explicitly. Monads function in this context as a very basic metaprogramming technique (or as some sort of AOP, if you want to look at it this way).

> In c++ at least, such an implementation would certainly use undefined behavior

This is what I mean by support in the execution model. You do need to have access to stack frames, and C++ doesn't permit that. There are workarounds [1], but they generally require non-trivial metaprogamming, due to the insane complexity of C++.

You don't have that problem with, say, Smalltalk, as most Smalltalk VMs gives you the necessary functionality. For example, one of the original continuation-based web frame works, Seaside, was all Smalltalk [2].

[1] http://www.filpizlo.com/papers/baker-ccpe09-accurate.pdf; the context here is GC, but the underlying problem is similar, access to stack frames (in this context, for root scanning).

[2] http://seaside.st/about/examples

rbehrends··on Are Monads a Waste of Time?
Depends on what you mean precisely by "extend to", but generally this is mostly a question of whether the underlying execution model supports them. "Code as values" is not exactly a particularly complicated thing (though arriving at an efficient implementation can be).
rbehrends··on Are Monads a Waste of Time?
> As long as the languages operate on the same virtual computer (same IO capacities), you can create the same semantics on any language. At the worst case, you can write an interpreter for any language on any other language.

This is fairly tautological and would make semantics meaningless. I'm not talking about the universality of Turing-complete languages, but about the semantics of language constructs.

> Most high-level languages got some influence by Lisp-style functional programing, so they transform into function reduction/composition with some amount of naturality. The imperative languages are the ones with the less straight-forward transformation, while Lisp is basically alone at the other extreme.

This has nothing to do with what I said, so I'm not sure what your point is?

rbehrends··on Are Monads a Waste of Time?
> Every difference between Turing complete languages is a "syntax only thing".

I'm pretty sure you can't ignore language semantics here.

> You can certainly reimplement it on most functional languages with a syntax that is only a bit more verbose and error prone. That's not a win.

Note that I was giving examples from imperative languages; Haskell has the additional problem that it has to transform the do notation into what's essentially function composition; but function composition is already the natural denotational semantics of imperative code [1].

[1] https://en.wikipedia.org/wiki/Denotational_semantics#Denotat...

rbehrends··on Are Monads a Waste of Time?
This is a syntax thing only. You can do the same in Smalltalk with an array of blocks (which are closures).

  {
    [ user := url fetchUser ].
    [ address := user fetchAddress ].
  }
and pass that array as an argument to whatever evaluation strategy you want.

You can also do with with proper macros, e.g. in Nim (fictitious example, there's no actual `usingContinuations` macro):

  usingContinuations do:
    user = fetchUser("url")
    address = user.fetchAddress
This is all a matter of syntax allowing you to write a sequence of code fragments in a readable fashion while allowing transformations on the underlying sequence.

That said, outside of Haskell (or other functional languages emulating the approach) you'll encounter them fairly rarely in this particular form, because just allowing for a sequence of code fragments is a bit limiting if you can combine them in more general ways. For example, Smalltalk builds pretty much all control flow in what we'd call combinators (on closures and values) now and allows you to pretty much extend that arbitrarily. Not because Smalltalk does anything super-special here, but because it has a nice, concise syntax for expressing executable code fragments as values.

rbehrends··on Countries with more gender equality have fewer female STEM grads
I can't help but think that the article/paper are overstating a statistical effect here by attempting to reduce a multicausal phenomenon to a monocausal one.

If you look just at rich western countries, most of them occupy a fairly narrow strip on the graph. There are outliers, but they can go either way; Finland has a very low STEM graduation rate for women, Denmark a very high one (Figure 3b in the paper). Austria and Germany have fairly different outcomes, despite being culturally more similar than other countries that differ less.

This is sort of obscured by throwing in many countries that honestly have very different cultures, very different academic systems, and different constraints for people of different genders that seem to be difficult to reduce to just a single number.

For a simple example, there are countries where nursing is primarily taught at colleges and others where nursing is primarily taught through vocational programs. Given the gender disparity in nursing, that would affect the gender breakdown for STEM graduation rates (depending on whether you count nursing as part of the "M" in STEM or not, one way or the other).

I'm honestly surprised that for most affluent western countries the numbers are not more spread out. If I had to guess – and we really have too few data points for that – I'd say we're simply looking at a normal distribution here, especially as (with the exception of the UK) the larger countries tend to be closer to the midpoint of the 20%-30% range and it's smaller countries that are at the fringes of the range.

rbehrends··on An American served a year in prison for copyright conduct that is legal in EU
> People in Europe tend to be more civil in such matters.

I would be careful to generalize here. It's often not the people that are reluctant to demand retribution, but criminal justice systems that are insulated against populism. For example, there's currently a pretty sickening case of serial gang rape being reported on in Germany and there's plenty of popular outrage [1], including some people wishing for the death penalty and for body parts getting hacked off (and the suspects appear to be ethnic Germans, so it's not anti-migrant hysteria). But in the end, the criminal justice system is unlikely to be affected by that outrage, largely because of Germany's career judiciary (both prosecutors and judges).

[1] The outrage is understandable; the crimes make me feel ill, too. But the desire for retribution is still way outside what the penal code or the constitution would permit.

rbehrends··on Sum Types Are Coming (2015)
Subtyping can be closed, too (see Scala's sealed classes, for example) and algebraic data types can be open (see OCaml's extensible variants [1] or polymorphic variants [2]).

This is simply a distinction between closed and open sum types.

[1] https://caml.inria.fr/pub/docs/manual-ocaml/extn.html#s%3Aex...

[2] http://caml.inria.fr/pub/docs/manual-ocaml-400/manual006.htm...

rbehrends··on Murders in US very concentrated (2017)
Also, this looks like a case of Zipf's Law, which tends to crop up a lot if you express statistical distributions as rankings [1].

[1] https://en.wikipedia.org/wiki/Zipf%27s_law#Statistical_expla...

rbehrends··on Sex and STEM: Stubborn Facts and Stubborn Ideologies
> What if we replaced the word "hostility" with "frustration?"

I specifically meant hostility, not frustration; no need to beat about the bush. Frustration expresses itself differently. It's not about standing up for a cause, it's an attempt at aggressively controlling the debate.

> If you think having this debate itself is "hostile" to women, well then that's the exact type of behavior that gets interpreted as B above.

I had already stated that the problem is not with having the debate, so I'm not sure why you are bringing that up again. The problem is with the form of the debate.

rbehrends··on Sex and STEM: Stubborn Facts and Stubborn Ideologies
> I'm unclear if anybody is entertaining the notion that a debate among dozens cannot happen because one person wanders in who's distressed by it, or what?

The problem is not with having a debate; the problem is the sheer level of hostility present in this thread.

rbehrends··on Commission fines Qualcomm €997 million for abuse of dominant market position
> I thought violating anti-competitive laws required one party to cross-subsidize, use advantages in one field/area to drive out competition in another

No. See Article 102 TFEU [1]. Abuse of a dominant market position in order to distort or avoid competition can take many forms.

[1] https://en.wikipedia.org/wiki/Article_102_of_the_Treaty_on_t...

rbehrends··on How many reversible integer operations do you know?
Well, this is just a roundabout way of stating that the symmetric group S_n is generated by (1, 2) and (1, 2, ..., n) for all n. :)
rbehrends··on GDPR consent design: how granular must adtech opt-ins be?
> Good news - unlike the cookie thing, GDPR mandates that you be able to say no.

The ePrivacy Directive (aka the cookie directive) also required you to be able to opt out. It was pretty explicit, too:

"Member States shall ensure that the use of electronic communications networks to store information or to gain access to information stored in the terminal equipment of a subscriber or user is only allowed on condition that the subscriber or user concerned is provided with clear and comprehensive information in accordance with Directive 95/46/EC, inter alia about the purposes of the processing, and is offered the right to refuse such processing by the data controller."

The problem was that some member states cooked up an "implied consent" interpretation, according to which visitors can be assumed to have consented.

The difference between the GDPR (and the new ePrivacy Regulation, which most likely is going to address the issue directly) is that they're regulations; they're directly applicable EU law, not law that has to be transposed into local law by the member states. The EU Commission is also given enforcement powers; and, if I read the upcoming ePrivacy Regulation correctly, can also go after the adtech companies directly rather than the site owners (because ignoring lack of consent is done at the adtech level rather than by site owners, as opposed to a failure of providing a consent mechanism).

I also wouldn't put too much emphasis on the GDPR; while it's likely to cause compliance trouble for adtech companies, the ePrivacy Regulation is more directly applicable.

rbehrends··on Breezy: Forking Bazaar
I still use Bazaar for personal projects and sometimes as a frontend for Git repositories.

Things that Bazaar got right that I find missing from most other DVCSes:

- Branches (including remote branches) are first-class citizens. I can add and remove tags for remote repositories as though they were local, I can diff against and merge from remote branches, I can view a log for remote branches. It gives me most of the essential GitHub functionality on the command line.

- It accomplishes that by properly abstracting over the transport layer. This also means that you can use any computer that you can use ssh with for remote repositories/branches via the `sftp` protocol without having to install Bazaar on that machine. While this is not recommended for large projects, it makes it pretty easy to share and collaborate on your projects if you have some old server lying around (e.g. in an academic setting).

- Unlike most other DVCSes (except Fossil), Bazaar put some thought into how to present revision graphs to users; rather than dumping the raw graph, it uses hierarchical logs, which I find generally more intuitive.

- A particular benefit is that there's generally no need for rebasing; while Bazaar has a rebase plugin, you can generally avoid rebasing, as linearizing history is unnecessary (and arguably counterproductive).

- Another side effect of hierarchical logs is that there's an intuitive canonical revision numbering scheme. You don't need hashes, any revision is uniquely and globally consistently identified by the pair (branch, revision number). This also makes `bzr annotate` more readable.

Downsides of Bazaar:

- Bazaar didn't have the development efforts put into it that Git and Mercurial got, so it still has some rough edges for advanced use cases. For example, if you do `bzr uncommit`, `bzr commit` does not give you the option to reuse the commit message (even though it's saved and the GUI version of commit will properly prepopulate the commit message box).

- Customization is cumbersome, and generally requires writing a plugin rather than templating (unlike, say, Mercurial, which has superior customization options).

- Like Git (though for different reasons), Bazaar requires you to periodically repack your repository, and for large repositories with a long history that can take a fair amount of time. For example, the Dart SDK repository (50k+ commits, 17MB checkout) can take several minutes to repack. While this is infrequent (I think the really expensive repacks occur only every 10k commits or so), when they happen, it's a pain.

rbehrends··on German hate speech law tested as Twitter blocks satire account
The problem here is that "hate speech" is an anglosphere term and doesn't have an exact correspondence in German law.

What is commonly called "hate speech" in the English-language media is §130 (1) of the penal code (part of the set of "Volksverhetzung" offenses). It's a poor fit because:

* The law can in principle apply to any identifiable subgroup of the population or any individual as a member of such a subgroup. Subgroups defined by their ethnic characteristics or religious beliefs are listed as examples, but the list is not exhaustive (though of course the group of Bavarian vintage car collectors is unlikely to be a target).

* It's not related to the motives of the speakers. It's about the effects the speech creates, specifically threats against the public peace, such as incitement to and encouragement of violence (unlike in America, incitement of lawless action need not be imminent) or creating an atmosphere through slander where members of a subgroup have reason to not feel safe anymore. If you want an example or why, look up what Julius Streicher was convicted of in Nuremberg and how it contributed to the Holocaust.

rbehrends··on German hate speech law tested as Twitter blocks satire account
> The law applies only to a narrowly defined class of hate speech.

The thing is that (despite the reporting in the English-language media), it's not actually a hate speech law [1]. The problem is that social media companies are being deputized as enforcers of parts of the penal code without proper qualifications, safeguards, or ways to appeal (unlike real courts).

> As such, nobody's freedom of speech is more limited today than it was a week ago.

Yes, it is. Speech cannot only be constrained through legislating what types of speech are legal, but also through creating enforcement mechanisms that encourage platforms to be overzealous in what they don't allow.

[1] The whole terminology does not really make sense in the context of German law. Not to mention that even in the broadest sense, it's inaccurate, as the law also applies to things such as illegal pornography and threats (regardless of motivation).

rbehrends··on Why the U.S. Spends So Much More Than Other Nations on Health Care
This is why there are marketplaces where you have to compete against other insurers. And companies in particular will evaluate their group plans critically.
rbehrends··on Why the U.S. Spends So Much More Than Other Nations on Health Care
The ACA requires the somewhat perversely called Medical Loss Ratio (MLR) to be at least 80% (and 85% for large group plans). The MLR is the percentage of revenues from insurance premiums that are being used on actual healthcare benefits (and thus can't go towards profits, hence the name). Corporate helicopters don't increase the MLR and reduce profits.
rbehrends··on Copy-on-write friendly Python garbage collection
Note that I was specifically talking about the sequential case, not multi-threaded languages.

OCaml has had one since the 1990s [1]; it's a fairly standard generational, compacting collector with incremental collection for the old generation. Lua has had an incremental GC since version 5.1 (in 2006); as it's frequently used as a scripting language for video games, it's safe to assume that pause times aren't much of an issue.

The problem is that virtually every language since then has pretty much decided to have all threads use a global shared heap. Once you do that, you run into all kinds of challenges, such as root discovery from thread stacks without stopping the world. That said, there are plenty of languages that have this option, anyway; it's simply more challenging, not impossible.

Languages that are single-threaded maintain thread-local heaps don't have the problem. Python and Ruby (unlike Lua) have issues for historical reasons (they started out with basic reference counting and mark-and-sweep collection, respectively, and then had to maintain backwards compatibility [2]).

Intermediate designs (having both thread-local heaps and shared heaps at the same time) are also possible, but that design space hasn't been explored much.

[1] http://prl.ccs.neu.edu/blog/2016/05/24/measuring-gc-latencie...

[2] I think that in principle one could make the cycle detector in Python incremental (it's basically a form of trial deletion); Ruby eventually got an incremental GC for its major generations in 2.2, but I believe there are still some inherent limitations due to the lack of write barriers in C code.

← PreviousPage 4 of 31Next →