1,781 karma · joined July 17, 2009
Co-founder of Antithesis
Co-founder of FoundationDB
Co-founder of Visual Sciences
Sometimes I wonder if I actually want to use broadly adopted technologies. When my wife and I were dating, she volunteered at a kids' camp on a native american reservation. As she was being driven out to the camp by one of the permanent staff, she pointed out a cute bunny rabbit, and was horrified when the guy thanked her, took out a gun, and killed it. He explained that while rabbits are cute, where there are rabbits there are rattlesnakes, and you don't want those around kids.
Any medium capable of communications and adopted by most of humanity is going to be a war zone. Politics, propaganda, advertising, surveillance, addiction, fraud, child porn... all the rattlesnakes are going to go where the rabbits are. Someone ought to fight this endless tide. But I can't help but be tempted to look for a place that won't have an "eternal september" because it isn't easy to adopt.
There are 8 billion people in the world. If only 1% of them are even capable of signing up for something (because it's that hard) and only 1% of those bother, that is almost a million people, which seems like far more than I ever need to talk to. And I bet the quality of discourse would be better.
Maybe this world already exists and I haven't been invited.
(I'm guessing, of course)
Of course, there are "games" like "invert sha-512" that can be implemented in our world but are probably impractical to learn. But NFL has nothing to say about them; a game that simple has zero measure in a uniform distribution over problems.
function prove_anything<P>(){
function prove_false() : False {
return prove_false()
}
let f = prove_false()
return contradiction<P>()(f)
}
I think a proof assistant will usually have a total notion of computation to avoid this kind of circular proof. And there are probably some subtler unsoundnesses in TS to worry about.(I'm not any kind of expert in this area. It's possible the original author intends that you execute the proof function as well as typechecking it, which I guess will prove termination, although I think for many proofs you might run out of resources trying to do that, and it's probably still not sound.)
Hmm. Let's follow your argument to its conclusion. Why stop at 300% of GDP? Why stop at 300 times GDP? It seems that even a small nation with a sovereign currency can eliminate all taxation, borrow an infinite amount of money, buy an infinite amount of stuff, make all of its citizens infinitely wealthy, service its debt with printed money forever, and prices and interest rates will both be unaffected. It's amazing, then, that no nation has yet taken advantage of this exploit!
I feel confident that is not right. I think it may be right that (marginally?) there is not a big difference whether a fixed amount of government spending is financed by taxation or debt, because printed dollars and t bills are so easily interchangeable. But it seems that you are trying to use this argument to prove that if these things are equivalent that they are (in any quantity!) harmless, and that's a non sequitur.
I'm a co-founder of Antithesis.
I was a co-founder of both FoundationDB and Antithesis.
(Also, you won't be able to usefully record a hypervisor with jockey or rr, because those operate in userspace and the actual execution of guest code does not. You could probably record software cpu execution with qemu, but it would be slow)
I'm a co-founder of Antithesis.
In principle, signatures also address the cache itself being untrustworthy, right?
IIRC basically this same construction means that while knowing BB(N) lets you (very slowly) compute the halting problem for programs up to size N, knowing BBB(N) lets you (even more slowly) compute the halting problem for turing machines supplied with a halting oracle up to that size.
I still think there are technical flaws in my proposal - for example, probably the tunnel should use udp so that it can traverse totally clueless NAT - but I think the basic idea of trying to upgrade the edges while fully interoperating is incentive compatible in a way that the idealistic v6 approach just isn't.
There is no way around upgrading end devices. But the problem with v6 adoption isn't the number of end devices from before 1995.
Basically the adoption plan could have been:
1. Get end OSs to have v6 support. They gain the ability to make outgoing connections to v6 addresses right away. There's no reason, from the beginning, for this not to be enabled by default with zero configuration from the beginning.
2. Get NAT routers at the edge to have v6 support. Gains the ability to publish services from inside without awkward port forwarding etc (and increases the benefit of 1)
3. Slowly make v4 addresses expensive so that consumers make do with less than a /32. They need v6 capable endpoints but can communicate as clients with anyone, and as servers with anyone who has adopted v6
4. Eventually v4 addresses are so expensive, and the number of machines running browsers that don't support v6 so small, that small time web sites stop taking a /32
etc. it doesn't really matter when the network backbones upgrade, it just saves a few bytes on the wire and they internalize the cost of that
This just doesn't seem like what happened in our timeline.
I came up with this idea in like 5 minutes so I'm sure it is flawed. But i think that if we had a realistic design we could have been done with the transition in early 00s.
Having your use of something important hinge on this one awkward sentence seems kind of scary. It's unclear to me whether, if you use (say) terraform for production infra, and someday HashiCorp releases a new product competitive with yours or merges with your competitor, your use of TF is then in violation of the license. "Offering the Work" is not defined and seems like it could be interpreted in different ways.
[1] https://www.ni.com/docs/en-US/bundle/ni-daqmx/page/measfunds...
First assign the number of potential aunts and nephews in each continent, city, etc top down in your tree (ensuring that the numbers are equal at the top and that you can reversibly assign a compact integer to each aunt and to each nephew). Then you need an invertible pseudorandom permutation of the right size P, i.e P(P^-1(x))=x for 0<=x<N. For nephew n the aunt is a=P(n) and you can walk down the tree to generate the details of the entity which is aunt a. If you start with the aunt you just use P^-1.
Cryptography has already developed families of functions P. For N=2^128, AES is such a family. For non power of two N, you want to look at "format-preserving encryption". For example you can use a Feistel network to permute the next larger power of two and simply iterate that permutation until you get a result in range.
I think you could extend this primitive to nonuniform graphs (aunt more likely in the same city) and more kinds of relationships. You can also use rejection sampling to condition the relationships further and probably to deal with the top down population assignment being approximate.
All that said, I think procedural generation currently runs out of creativity long before you would run out of memory to store explicit relationship indices. I think it's a lot more hopeful to get more creativity out of generative AI while keeping things grounded by explicitly representing the world, even if it "doesn't scale" to creating trillions of galaxies.
[1] https://slatestarcodex.com/2014/06/15/fish-now-by-prescripti...
But... if your manager is displeased with most ICs for brainstorming, considering edge cases, researching possible solutions, refactoring, helping other people, testing, and automating... you should probably consider working somewhere else. These are all things the industry does too little of, and that my company puts significant effort into encouraging and rewarding. They are also important steps in growing into (technical or people) leadership roles. And they are nowhere near the top of the list of things that people waste time on.