Hacker Newsnew | past | comments | ask | show | jobs | submit | more Trung0246's commentslogin

The performance on mobile is kinda suck tho, took like 30 seconds to wait for PoW on difficulty 4 on Firefox Android. By that time I have to resist the urge to switch to do something else.


There's private tracker which forces their user to upload.


Imagine if the attacker employs DRM-esque/anticheat technique.


One of my idea was establish a copyright renew system in which first year is free, then for second year the right holder will pay $1 to retain the rights, third year pay $2, fourth year pay $4, fifth year pay $8... which follows the power of 2. If they cannot pay for next year then the copyright will fall into public domain (or allows more restrictive form of non-commercial). Most of the worthless stuff will expire at around 10-15 years. Then around 35-40 years for big works that generate tons of revenue if they can pay that amount.


Interesting, I tried to convert Z combinator in SKI to this using the lambda calculus example then print out the tree. Untested:

    z = (t (t (t t (t (t (t (t (t t (t (t (t (t (t t)) (t t))) (t (t (t t)) (t t))))) (t (t (t t (t (t (t t (t (t (t t t)) t))) (t t)))) (t (t (t t (t (t (t (t (t t)) (t t)))))) (t t))))) (t t (t (t (t (t (t t))))))))) (t (t (t (t (t t (t (t (t (t (t t (t (t (t t (t (t (t t t)) t))) (t t)))) (t (t (t t t)) t))) (t t (t t))))) (t (t (t t (t (t (t (t (t t (t (t (t t (t (t (t t t)) t))) (t t)))) (t (t (t t t)) t))) (t t (t t))))) (t (t (t t (t (t (t t t)) t))) (t t))))) (t t (t (t (t (t (t t (t (t (t (t (t t)) (t t))) (t (t (t t)) (t t))))) (t (t (t t (t (t (t t (t (t (t t t)) t))) (t t)))) (t (t (t t (t (t (t (t (t t)) (t t)))))) (t t))))) (t t (t (t (t t (t (t (t (t (t t (t (t (t (t (t t (t (t (t t (t (t (t t t)) t))) (t t)))) (t (t (t t t)) t))) (t t (t t))))) (t (t (t t (t (t (t (t (t t (t (t (t t (t (t (t t t)) t))) (t t)))) (t (t (t t t)) t))) (t t (t t))))) (t (t (t t (t (t (t (t (t t)) (t t)))))) (t t)))))))) (t t)))))))
Original tested but unoptimized and also converted using tool:

    var K = a => b => a;
    var S = a => b => c => a(c)(b(c));
    var Z = S(K(S(S(K(S(S(K)(K))(S(K)(K))))(S(K(S(K(S))(K)))(S(K(S(S(K)(K))))(K))))(K(S(S(K))))))(S(S(K(S(S(K(S(K(S))(K)))(S))(K(K))))(S(K(S(S(K(S(K(S))(K)))(S))(K(K))))(S(K(S))(K))))(K(S(S(K(S(S(K)(K))(S(K)(K))))(S(K(S(K(S))(K)))(S(K(S(S(K)(K))))(K))))(K(S(K(S(S(K(S(S(K(S(K(S))(K)))(S))(K(K))))(S(K(S(S(K(S(K(S))(K)))(S))(K(K))))(S(K(S(S(K)(K))))(K))))))(K))))));
https://en.wikipedia.org/wiki/Fixed-point_combinator


This code is so easy to read.


It's equivalent to binary machine code for a procesor with 5 opcodes.

Why would it be readable?


No kidding.. I didn't think parenthesis hell could get worse than Lisp


Well really this language just takes the next logical step by removing all but a single symbol.

The next one would be () = t, to finally get a language consisting solely of parentheses.


Any source code in any programming language can in theory be encoded in unary, requiring only a single symbol (and without any need for extra grouping or whitespace). It's not gonna be efficient, though.


Yeah, I think I'm going to take the author's advice and use Tree Calculus to generate JSON config files. That way I won't need to use a bloated tool with a JSON parser just to output configuration.


Z = \f. (\x. f (\v. x x v)) (\x. f (\v. x x v)) can be much simpler, namely S (S (K (S S (K (S (S K K) (S K K))))) K) (S (K (S S (K (S (S K K) (S K K))))) K)


If you means that it would be like this:

    var Z = S(S(K(S(S)(K(S(S(K)(K))(S(K)(K))))))(K))(S(K(S(S)(K(S(S(K)(K))(S(K)(K))))))(K));
Unfortunately not works with the `count_fn` function from the wikipedia page :(, `too much recursion`.


`unsafe` code is a little bit tough since the keyword have an F, unless there's another way to create unsound code by abusing rustc.


Weird. Did something happened with DNS?

Looks like http://archiveiya74codqgiixo33q62qlrqtkgmcitqx5u2oeqnmn5bpcb... is still online.


Interesting. Is it possible to provide own API key from deepl?


That's a good suggestion, I hadn't considered that. I could charge a fixed fee for access to the relay server, and then if it weren't in the relay's cache it'd use your API key so you'd be dynamically billed without losing access to the cache. It'd be a fairly large change for a small audience though (how many people are willing to setup API keys etc?). You'd find that it'd be more expensive if you used it a lot and less expensive if you didn't - right now I'm giving people access to ~1.8x more credit than they're charged for (please don't abuse it! I'll notice with how few users I have, anyway).

Right now my focus is on why not a single user has converted from the demo, and yet I got four from posting it on producthunt without a demo. I think I might not make it clear enough when it's ended - it stops translating and tells you if you open the popup, but maybe people aren't noticing?


I tried it and wanted it to work, but it only translated a few sentences on the page for me. On the highest level of difficulty, the whole page should be highlighted, don't you think?

One more recommendation: collect emails for people like me who want to see how your project develops over time.


There's tons of "pirate" version of the pdf specification, especially on Annas. Hopefully this can help someone implement the driver.


This is my own version of `OVERLOAD` that works with both, although I forgot how did it works:

    #define FWD(...) ::std::forward<decltype(__VA_ARGS__)>(__VA_ARGS__)

    #define LIFT_CUSTOM(X, CAPTURE) CAPTURE (auto &&... args) \
     noexcept(noexcept(X(FWD(args)...))) -> decltype((X(FWD(args)...))) { \
      return X(FWD(args)...); \
     }

    #define LIFT(X) LIFT_CUSTOM(X, [&])


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: