> I also found a Rust implementation which seems not to compile, but is useful as I'm trying to teach myself Rust https://github.com/kenpratt/rusty_torrent I think the work to get it to compile might be minimal.
There is also another project in Rust, it looks more active:
https://github.com/GGist/bip-rs
It is a collection of libraries.
> If anyone who hasn't tried doing this before, the "official" BitTorrent spec docs, namely BEP-3 (http://bittorrent.org/beps/bep_0003.html), seem little more than a vague blog post turned in to a "spec".
Doesn't look vague at all. What do you think is missing from it?
Thanks, I had seen that one, but forgot about it. I think it's a great project, but it's really just a collection of libraries that don't really tell you how it all fits together, which when I was picking stuff up wasn't very helpful. Hopefully now I have a better understanding of the client design I can make something from that.
> Doesn't look vague at all. What do you think is missing from it?
For a comparison I would recommend reading a few (what I would consider) good protocol docs. Docs that you could read and implement, and probably get working very quickly, for example:
- XMPP's XEPs (one picked for similarity in usage to BitTorrent) https://xmpp.org/extensions/xep-0020.html - Lots of examples in there for what messages should look like, which is always helpful.
I think the main thing that makes the biggest difference is adhering to a language spec such as RFC 2119 which recommends using "MUST", "SHALL", "REQUIRED"; "MUST NOT", "SHALL NOT"; "SHOULD", etc. which makes it really clear what you're meant to do or not to.
Specifically for the vagueness of BEP-3, how about this example that made me rage on IRC. In the description for the info_hash field in the Tracker section.
This value will almost certainly have to be escaped.
ALMOST CERTAINLY?? Will it, or won't it? Then, escaped? Escaped how?
What this turned out to mean was that the 20-bit binary sha1 hash MUST be URL encoded, and not hex encoded.
I would love to see someone try to build a BitTorrent client for the first time based solely on this doc.
---
BEP-3 also seems more interested in implementation detail, than describing the protocol. Take the last paragraph (before Copyright) as an example.
Something else which occurred to me today is that BitTorrent is not a spec, it's not been developed, it has evolved. Along with being built in a very modular way, i.e.: DHTs can replace trackers and simply dropped in, magnet URIs can replace Torrent files. This probably contributes it's success and longevity, but what this also means is that there is a lot of stuff, like metainfo, trackers, bencoding, that SHOULD belong in their own spec docs, which form a collective whole.
Wide gamut is not enough, we also need HDR (that is Rec 2020 color space with Perceptual Quantizer). This will allow to show much brighter (and darker) colors.
> Because the probability drops exponentially with Ω, it's easy to pick an Ω such that the chance of observing a blockchain reorganization is less likely than having the processor miscompute values due to strikes by alpha particles. If that's not sufficient for pedants, one can pick a slightly higher Ω such that the chances of observing a reorganization are lower than the likelihood that all the oxygen molecules in the room, via random Brownian motion, will pile up into one corner of the room and leave one to suffocate in the other corner.
This guy obviously doesn't understand what he is talking about. I would more probably remine the whole bitcoin blockchain on my cpu in a second than this thing happens.
Doesn't SIP cause issues with the TiVoization clause? I guess I'm not an expert on this, but it's possible Apple wants to leave the possibility open of making SIP mandatory.
The decision of not shipping GPLv3 user space tools predates SIP by several years, far more than I would bet SIP has been in development. I think it's just a legal issue as in lawyers don't want to touch it period
An OS with mandatory SIP will be the point I stop upgrading. I'm fine with optional features like this, but the instant it becomes mandatory and can't be bypassed I'm gone.
Phantom downvotes. Awesome. Don't really care about "karma", but thought this was a place for discussion.
Anyway, what reason do we have to believe that Earth is special 2X? That we happened to have the right conditions plus some randomness occurred against all odds that gave rise to life? Why is that a rational proposition?
We know the chemical elements and processes that give rise to life, and we know why Earth is a suitable place. I suggest that, given the right (e.g. Earth-like) conditions, formation of life is not only more likely than the existence of the conditions, but the formation of life may even be likely overall. Hawking has expressed this possibility. [0]
There is fossil evidence suggesting that some forms of life existed on Earth as few as 500 million short years after it was formed. So, what are the odds that one astronomically improbable event (creation of a hospitable environment) was followed in such a short period by another alleged astronomically improbable event (abiogenesis)?
> a probability for civilizations to form of one in 10 billion per planet was considered highly pessimistic
I think people underestimate how low probabilities can really be. According to wiki the shortest self-replicating RNA is 165-bases long. Even if you convert all observable universe in RNA this is still not enough for this RNA to form by chance (4^165 is much larger than number of atoms in observable universe).
> Even if you convert all observable universe in RNA this is still not enough for this RNA to form by chance (4^165 is much larger than number of atoms in observable universe).
Which kinda suggests there is either a mechanism that promotes that, or there are other, easier paths to get self replication. Otherwise we mostly likely wouldn't be here.
Not if you only give it one chance. Those are incredibly grim odds just for life - nevermind civilization, which would be rarer still - somehow arising.
But aren't those chances constantly being created, on the scale of uncountable -illions of interactions of molecules that happen every second, across the billions of square and cubic kilometers of the surfaces and oceans of those billions of planets, across billions of years?
I mean, doesn't that improve the odds just a little bit?
"Enough time" can easily be longer than the age of the universe. A million monkeys typing on keyboards will eventually write shakespeare. But it will be longer than the universe before they even type a single sentence of it correctly.
You are postulating the existence of only a single universe, ours. But there could be any number of universes, and so far we have no scientific way of testing that. The anthropic principle and the possibility of multiple universes puts all probabilistic arguments to dust: anything with non-zero probability happens in an infinite number of universes.
> A million monkeys typing on keyboards will eventually write shakespeare. But it will be longer than the universe before they even type a single sentence of it correctly.
All it takes is _one_ tiny selection force to blow this argument out of the water. For example, if only _a single_ correct letter is retained from each attempt, the problem gets exponentially easier with every iteration, making the expected time to generate any work linear in its length.
I agree with you completely about the anthropic principle. But we are talking about the probability of aliens. If the anthropic principle is true, then we should expect aliens to be really really unlikely.
It sure can be, but as long as it is less than the expected lifetime of the universe it will still happen. A million monkeys - given that Hamlet contains such long sentences as "He." it will take far less then a minute for them to type a single sentence correctly.
Everyone links to that general page, but I'd think the EFF analysis on how it affects digital rights specifically might be even more persuasive for this crowd:
Just because someone claimed Google manipulated search suggestions doesn't mean they actually did it. The video itself even acknowledged the lack of concrete proofs.
Probably referring to this: https://www.youtube.com/watch?v=PFxFRqNmXKg
Was on HN but flagged. Google replies:
"Google Autocomplete does not favor any candidate or cause. Claims to the contrary simply misunderstand how Autocomplete works. Our Autocomplete algorithm will not show a predicted query that is offensive or disparaging when displayed in conjunction with a person’s name. More generally, our autocomplete predictions are produced based on a number of factors including the popularity of search terms."
Seems like "criminal" and "indictment" are filtered out, which happens to benefit Hillary but seems to apply to other people. I tried a indicted people and it didn't autocomplete.
"The analysis found a very different result with Google’s top competitors, Bing and Yahoo.
When spotted the terms “Hillary Clinton cri” and “Hillary Clintion ind,” Bing and Yahoo brought up as their top choices “Hillary Clinton criminal charges” and “Hillary Clinton indictment” as part of their auto-complete functions using the same key letters, according to SourceFed.
While that could reflect legitimate differences in the engines’ algorithms, Mr. Lieberman said that a search of “Hillary Clinton crime reform” on Google trends showed that “there weren’t even enough searches of term to build a graph on the site.”"
While I like idea I don't completely understand it. What 'runtime' is actually supposed to be? What if I need two runtimes? I will probably need to bundle one of them with the app. E.g. if I write a C++ Qt application I will use Qt runtime, if I write command line Python application I will use Python runtime, but if I write Qt application in Python I will need to bundle either Python or Qt with my app, correct?
Also, is there support for applications without any runtime?
Runtimes are not package dependencies. They are not separated from the app to allow dependency resolution. They are separated out in order to allow a different entity to maintain and update them. The idea is that they are pretty minimal (to some degree) and come with a well defined ABI and stability/lifetime guarantee.
If, above this, you need more dependencies, in the flatpak model you need to bundle them yourself. Such bundling can be done however you want. For instance you can reuse existing packages from some distro, you can build the yourselves, or whatever.
Technically you have to specify a runtime, or things will not run. But if you want you can create your own runtime that is empty and use that. This means you have to supply everything though, as you won't even have an ld.so.
It looks like there would be shared "runtime" packages, in specific versions, installed as part of the flatpak system (that is, not included in the app bundles themselves). Different runtimes could be installed, specific versions would be supported, etc.
The app itself would include any libraries/prerequisites outside of whatever flatpak defines as a "runtime library".
At least, that's my reading of how Flatpak works. I could be wrong on some of those points.
There is also another project in Rust, it looks more active: https://github.com/GGist/bip-rs It is a collection of libraries.
> If anyone who hasn't tried doing this before, the "official" BitTorrent spec docs, namely BEP-3 (http://bittorrent.org/beps/bep_0003.html), seem little more than a vague blog post turned in to a "spec".
Doesn't look vague at all. What do you think is missing from it?