modalduality
case (xm, ym) of
(Just x, Just y) -> x + y
_ -> 0A bit about the technical stack: the server was written in Haskell using WebSockets. Source at https://git.modalduality.org/sibylant-graze/tree/.
According to https://crypto.stackexchange.com/questions/5610/diffie-hellm..., Diffie-Hellman is not post-quantum secure, but https://en.wikipedia.org/wiki/Supersingular_isogeny_key_exch... is a DH alternative that is.
It's not really supposed to be useful, just exploration in reduction of an already reduced art style: what is lost when we enforce that all shapes are triangles that tend to be more large-angle? For one, I think this destroys the perspective since one common trope is to make objects narrower as they are farther away.
Although the entire thing is mostly a joke based on their shared last names.
Show HN: Delaunay Triangulating Robert Delaunay's Eiffel Tower Paintings
Recurse Center Application Process
Nice catch! I glossed over this but this is pretty important. The issue is that for any _specific number_, it takes a constant amount of time to write a number larger than that. Related: solving chess is technically O(1) since there are a constant number of positions we have to check.
What we need instead for this concept is a series of numbers, those can be compared with the question "Does one eventually get to a point where it will always be larger than the second?". We can parametrize the "biggest number" by the number of seconds given, say we can write down one character per second. Then a person's largest number function might be something like "f(n) = 9 ^ n", which is easy to see _is_ a computable function, and thus smaller than BB(n) for the same number of seconds, eventually.
In practice, just something like BB(100) - or BB(BB(100)), even can't really be written out by any computable method in a finite amount of time.
> which was: what characterizes the Busy Beaver function?
The proper one is just the number of 1s, but I talked about the shift function because it's easier to see why it's uncomputable. Tibor Rado proved that the Busy beaver function is also uncomputable in his 1962 paper, if you're interested you could check out his reduction.
Show HN: Tzimtsum, an auto theorem prover for addition (Presburger arithmetic)
Show HN: Thetapack: Type-homogenous, crypto-friendly, padded binary serialization
URL: ^(((http|https|ftp):\/\/)?([[a-zA-Z0-9]\-\.])+(\.)([[a-zA-Z0-9]]){2,4}([[a-zA-Z0-9]\/+=%&_\.~?\-]*))*$
I recently encountered a case where a URL had an underscore at the end of a subdomain name. It seems underscores are okay anywhere else, but while my friend on Windows was able to load the website, I wasn't (on Linux) using Firefox, curl, remote screenshot service which presumably ran Linux etc. According to various RFCs, they should be okay anywhere within the subdomain name.Has anyone encountered this behavior? Couldn't find anything on the internet; maybe it's just my computer?
One other concern is that a db hit and miss could take very different amount of times (e.g., L1 hit vs miss that travels to disk).
* Don't waste server time hashing a password if you already know the user doesn't exist.
doesn't seem like too big of a concern, since you're spending the time anyway, it's just increasing server load marginally.
To solve the first problem, how about running two queries in parallel against the db, one for a fixed username and one for the given username? However, depending on the database, now you may run into caching issues with the fixed username, speeding up that query. Querying for a random username at the beginning might also push that row into the cache.
Maybe keep a large, randomized linkedlist of usernames on-disk (initialized on server startup), read out the next link, and use that as parallel username?
For these ideas I believe you would need to enforce a max-password-length and take up that many steps to check equality for all passwords.
Early on it was thought that considering circuits instead of regular programs could result in "polynomial with advice" algorithms for NP-complete problems, but results such as the Karp-Lipton theorem have shown this to be unlikely.
> Compilation time is too large
Can you try compiling incrementally? https://blog.rust-lang.org/2016/09/08/incremental.html. Might still only be on nightly.
> And, on the similar note, benchmarks.
I agree, profiling as well isn't as full featured as in more mature languages. Clojure, incidentally has great benchmarking due to being on the JVM.
> Also the tuple assignments.
Can't you just do
fn main() {
let (a, b) = (5, 2);
println!("{}, {}", b, a);
}
>There are many cases where compiler could do the stuff automatically.I think this will be solved with the new non-lexical lifetimes RFC. Also a problem I had when starting, I generally assume referential transparency.
For example, mine is 'browser "urxvt -e elinks %u"'.
Personally I don't think there's a real risk of exposing your real Ethereum wallet by setting up a testnet, as long as you only let localhost connect to it.
One addition--Geth 1.6 released a very nice interactive tool called puppeth that creates genesis blocks and provisions testnets, I've found it easier than doing everything myself.
Although once again there really wasn't any tutorial or documentation about puppeth for Ethereum beginners, the only reference I could find was a Taiwanese Ethereum meetup blogpost, which was mostly in Chinese.