3,459 karma · joined July 26, 2018
Many companies already provide the option to download all data, and I've written GDPR data request mails to multiple US based companies with success. Mostly you get the data in JSON files (without schema).
Right now, many companies are trying as hard as they can to skirt the law, but there's land mark cases happening already that will hopefully put an and to that soon [1].
[1]: https://techcrunch.com/2019/10/01/europes-top-court-says-act... ironically, techcrunch is a prime example of a "tracking cookie consent" popup that is absolutely illegal and will hopefully get them huge fines once the data protection agencies have their hands less full with bigger fish (google, facebook, etc).
$ time xzcat /var/cache/pacman/pkg/cuda-10.1.243-1-x86_64.pkg.tar.xz >/dev/null
1:17,33 total
Just decompressing that 1.8GB package takes 77 seconds.There was a discussion in April to switch compression to zstd - which reduces the decompression time for that package to only 4 seconds (!) while keeping the same file size. That way the disk is the bottleneck again, as it should be. That switch would be awesome, but it looks like it's not happening currently.
Asymetric internet connections should be forbidden. They assume that users consume more than they create, and the internet should be a place where everyone has equal footing. In addition, IPv6 firewalls in routers should either be disabled by default or have a forced API to selectively disable them [^1]. (IPv4 for the "decentralized internet" is pretty much a lost cause because of NAT). In my opinion, this should be a part of net neutrality. The current definition of what constitutes "internet" is far too loose.
Many applications of decentralized hosting of websites or other content is much harder because most people have a very shitty upstream. If you could use all smartphones around the world that are currently connected to WiFi and an outlet, you could host whole websites (or at least chunked static content) over those. Currently, this is unrealistic because you can't NAT punch for every 100kb chunk and you won't get any good speeds.
[^1] My router by defaults blocks all incoming IPv6 connections to devices
But in the future, the amount of energy consumed for a single transaction will tend towards exactly the fee paid for that transaction multiplied by the cheapest electricity price in the world.
So either the transaction fees will be outlandish, or for a transaction that costs $0.10 you will consume roughly 2kWh.
Also of course any form of runtime type checking is missing.
[1]: https://www.reddit.com/r/raspberry_pi/comments/bwdv36/a_smar...
I actually looked into using libripgrep for this, but then I decided not to because of (a) not wanting to handle arg parsing myself (ripgrep has sooo many arguments), (b) missing or hard to find documentation.
The main reason it might be a good idea is because currently ripgrep does not know at all about a single file returning multiple "files", and all line prefixes are "hardcoded" (e.g. Page X: hello in pdfs is just prefixed per line). Also I can't rely on ripgrep's binary detection currently, because it would have to happen for "parts of files" from the perspective of ripgrep.
It would be great if ripgrep had a slightly more advanced preprocessing API - allow returning multiple "files" per filename input, maybe even with a "sourcemap" of line<->Page etc.
Also, most of it is completely safe Rust, so no out-of-bounds writes there :). The most dangerous part currently is probably the PDF parser.
[1]: https://ci.appveyor.com/project/phiresky/ripgrep-all/builds/...
I could maybe add encoding detection myself, but I'm kind of discouraged since not even the unix `file` tool can detect those files as text, and a normal editor opens at least a UTF16BE file completely wrong. So I'm not sure if I want to spend my time on trying to write heuristic detection on those, especially since UTF16 itself is broken and shouldn't really exist at all...
I'll look into what encoding_rs has to offer.
> doesn't support other UTF encodings like UTF-16
UTF-16 should in fact work, since ripgrep supports it too. Looks like my binary file detection is at fault [1]..
> Not sure if it can search in single-line mode either
That works fine, just use `rga --multiline '\n' fname`
What we see are the public statements, for public consumption, they are designed to "sell" the changes to the wider public. What we do not see is what is being said in private meetings by officers who get to decide how to optimize the business. So we have to judge not by what is said for public consumption purpose, but by what in effect is being done, or what they plan to do.
This is how personally I see the deprecation of the blocking ability of the webRequest API in manifest v3:
In order for Google Chrome to reach its current user base, it had to support content blockers -- these are the top most popular extensions for any browser. Google strategy has been to find the optimal point between the two goals of growing the user base of Google Chrome and preventing content blockers from harming its business.
The blocking ability of the webRequest API caused Google to yield control of content blocking to content blockers. Now that Google Chrome is the dominant browser, it is in a better position to shift the optimal point between the two goals which benefits Google's primary business.
The deprecation of the blocking ability of the webRequest API is to gain back this control, and to further now instrument and report how web pages are filtered since now the exact filters which are applied to web page is information which will be collectable by Google Chrome.
https://github.com/uBlockOrigin/uBlock-issues/issues/338#iss...
To be fair, TS has some pretty bad unsoundness problems, especially regarding co/contra variance in generics, and for example some annoying weirdness with number/string keys in objects. Still, the type system is one of the most amazing ones I know.
function test(p: {k: false | 'x' | 'y' | undefined}) {
// do stuff
}
const p = {k: 'x'} // inferred type: {k: string}
//...
test(p); // type error : Type 'string' is not assignable to type 'false | "x" | "y" | undefined'
The problem is that the type of p.k is inferred to `string` not `x`. The compiler can't know this is fine because you could call `foo(p)` in between the declaration and the `test` call, that mutates p.k.If you add `as const` or an explicit type to p it is fine.
(I think this is what the GGP was referring to)
As it is, Ok only depends on T and Err only depends on E, so why do you have them depend on both?
One problem is that TS does not want to merge unionized function signatures like this:
map: (<U>(fn: (arg: "yep") => U) => Ok<U>) | (<U>(fn: (arg: any) => U) => Result<U, "nope">)
This can be mostly fixed by removing arguments that you don't need.I couldn't figure out .map_or_else, but .map().or_else() works.
Admittedly, with this way you can get an output of Ok<a> | Ok<b> from some functions, but I don't know where that would be a problem (still fully type checked, you would just get the expected error further outside.
Here's a updated gist: https://gist.github.com/phiresky/621f8d8ed6eb00c9a0ddb47217e...
Both of these are valid inferences, and it's impossible to know which one the user wants in the general case, which is why you have to explicitly say `const foo = {k: 'x' as const}`.
Make sure you have "allowJs": true in your tsconfig.json. Otherwise, you'll have to create a minimal file with `declare module "xyz";`
> I fail to see how TS can be considered a superset of JS
You have to interpret all TS "errors" as warnings for that to be true (which they mostly are considering tsc still emits code regardless of non-syntax-error errors)
> I just cannot take a type system seriously when workarounds like that are needed.
Your problem really just seems to be that the type inference does not have magical powers. There is no other programming language that has union types as powerful as TypeScript (as in discriminating by whatever you want), but yeah when you do `return {x: 1, y: 2}` the compiler doesn't always know whether you mean to return an object where the type of x is `1` or where it is `number`. In some cases it could be better still, but doing this in general is just not possible.
My main problem is that blocking WebRTC blocks some very interesting methods to "re-decentralize" the web, which are only viable if most people don't have it disabled.
This widely held belief is absolutely not a proven fact. It's called linguistic relativity or linguistic determinism [1] and the strong form (language determines thought) has not been taken seriously by researchers in the field for a while.
The weak form (language can have somewhat of an impact on the way you think) has not been proven or disproven and is a topic of debate. You just state it as if it was known, even though the causal relationship of most examples you could name can easily be the other way around (culture / thinking affects how a language develops).
I'd argue that everyone learning and speaking the same language would have immense benefits for a global society. You can keep recordings in museums and linguistic researchers to keep a historical record of languages, just like we have for other tools and methods that we no longer have any use for.
Which is exactly what the law is for.
The examples in the article were deceptively reported. For example, the doctor who asked The Guardian to take down articles about her suspension: she had successfully appealed that case, and a judge overturned her suspension and ordered the record expunged: her name was dragged through the mud on bad information.
Compare that to the US where any kind of accusation, even if it turns out to be false, can easily permanently ruin someone's job, career prospects, or life.