Grsecurity Developer Spender's Feelings on the State of Linux Security - <AUTHOR> https://grsecurity.net/~spender/interview_notes.txt <comment><USER2> It always make me sad when I hear BSDs are underfunded, OpenBSD was about to "turn off the lights", FreeBSD was in sersious problems before they got 1M$ donation from WhatsApp. Heartbleed bug in OpenSSL? They also didn't have enough (full time) developers to even review the code. Now grsecurity makes me feel bad about it.

Everyone uses their software, firewalls, servers, email serves, openssl is everywhere, corporate/bank cluster without BSD or Linux with grsecurity is unimaginable.

I recently started donating to opensource project I use everyday. I realised how little they ask for, F-Droid, I easily doubled their BTC found used to cover server maintenance, LibreOffice asks for 3EURO donation by default (also BTC)! OpenBSDFundation asks for 10$ per month.

[https://grsecurity.net/contribute.php](https://grsecurity.net/contribute.php)

Edit: I also found a nice way how to donate to Tor, there is a site [https://oniontip.com/](https://oniontip.com/) where you can donate others for running Tor nodes, one of two top 200nodes has WikiLeaks BTC address, another one goes to my wallet and I send it back to TorProject. I had enough free resources, I used them :)

<comment><USER3> Grsecurity's approach is superior to OpenBSD's, but both are acceptable.

FreeBSD is actually _behind_ Linux - it lacks an effective access control framework and did not have ASLR until the latest release. At least they're working on it (TrustedBSD, Capsicum).

<comment><USER4> Some interesting insights on Grsecurity's approach by OpenBSD's Nick Holland in the comments section:

[https://www.digitalocean.com/community/tutorials/an- introduc...](https://www.digitalocean.com/community/tutorials/an-introduction- to-selinux-on-centos-7-part-1-basic-concepts)

<comment><USER5> Link directly to the comment:

[https://www.digitalocean.com/community/tutorials/an- introduc...](https://www.digitalocean.com/community/tutorials/an-introduction- to-selinux-on-centos-7-part-1-basic-concepts?comment=17853)

And here is the referenced email with a bit of context:

[http://osdir.com/ml/general/2014-02/msg44493.html](http://osdir.com/ml/general/2014-02/msg44493.html)

</comment></comment></comment></comment><comment> vezzy-fnord Aye, too many people have this defeatist attitude that since perfect security will never be possible, therefore the only valid solution is reactive security (bug-patch cycles). Patch dependence is considered too entrenched for making some changes like replacing ambient authority with capabilities, using failure-oblivious computing [1] to redirect invalid reads and writes, using separation kernels, information flow control, proper MLS [2], program shepherding for origin and control flow monitoring [3] and general fault tolerance/self-healing [4].

I used to look up to Linus Torvalds as many did, but am increasingly beginning to see him as a threat to the advancement of the industry with his faux pragmatism that has led him to speak out against everything from security to microkernels and kernel debuggers.

[1] [https://www.doc.ic.ac.uk/~cristic/papers/fo- osdi-04.pdf](https://www.doc.ic.ac.uk/~cristic/papers/fo-osdi-04.pdf)

[2] [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.52....](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.52.366&rep=rep1&type=pdf)

[3] [https://www.usenix.org/legacy/events/sec02/full_papers/kiria...](https://www.usenix.org/legacy/events/sec02/full_papers/kiriansky/kiriansky.pdf)

[4] [https://www.cs.columbia.edu/~angelos/Papers/2007/mmm-acns- se...](https://www.cs.columbia.edu/~angelos/Papers/2007/mmm-acns-self.pdf)

<comment><USER6> I wouldn't be so harsh. Linus thinks and works in the here and now. He is neither interested in the theoretical or bothered by what theoretical people have to say about him. He ships code that works and works well and generally speaking has a good security track record compared to many userspace systems (Adobe Flash anyone?).

At the time he was against microkernels it would be fair to say monolithic kernels did definitely have (and continue to have) performance advantages over microkernel architectures. Have things changed? Somewhat. Some of how OS kernels are used has changed and that has made microkernels more attractive again.

I feel the rest of your argument just feels like the jab at Linus is tacked on though because he doesn't seem to be against capabilties system. (infact the kernel has what? 3 capabilities systems?) Nor does he seem against forms of multi-level security or program shepherding. So maybe those weren't meant to be directed at him.

Either way I just wanted to say that people should give him some slack, his job isn't to please security zealots but to ship software all of us use and many of us depend on for our livelihood in a timely and reliable manner.

<comment><USER7> No, nobody should give Linus any slack whatsoever. He's responsible for the current fiasco, where stock Linux kernel is a joke security-wise, one can find reliable vulnerabilities in a few hours, once the debugging infrastructure is there. Compare that with Windows where it's a few weeks to a few months and then a lot more work to get the reliability.

Linus holds the vast majority of the blame here, simply put, he is an idiot when it comes to security or looking ahead at how things will be in a couple of years. Linux is slowly entering every single aspect of our lives and this trend will only accelerate via IoT. Imagine what this means about security with Linus in charge.

We now KNOW that there are intelligent adversaries out there that spend hundreds of millions to defeat security worldwide. It is simply UNACCEPTABLE and downright MALICIOUS STUPIDITY for Linus to hold the views he does in this day and age. He's been repeatedly warned and cautioned for more than a DECADE now and he's laughed at and ignored valid criticisms from people with much more foresight than him. If this trend continues, he should be NAILED to the cross.

A security bug is NOT just a bug.

No, I shouldn't have to DISCONNECT everything that runs Linux from the Internet if I want it to have a modicum of security.

<comment><USER8> > Linux kernel is a joke security-wise, one can find reliable vulnerabilities > in a few hours

Do you have some details on this? I did not realise the situation was so bad.

<comment><USER9> I'm not sure objectively what the current state is. However, it's a little known fact that Linux kernel specifically (due to fame) benefits from tons of academic work on bug hunting tools. Every time they run a new one, they find all kinds of problems that are preventable with a safer language or sound architecture. Many of them would've been contained in a microkernel architecture rather than have full access to memory.

So, one could say it's pretty bad even if the "many eyes" and code audits are finding/fixing a ton. Simply too many to justify if their process is any good. An recent example I found was the Saturn project throwing an automated tool at it and finding 100+ real bugs in one go.

[http://saturn.stanford.edu/pages/papersindex.html](http://saturn.stanford.edu/pages/papersindex.html)

</comment></comment></comment></comment></comment><comment><USER10> _There 's no real leadership in Linux as far as security goes from within the kernel community itself._

I'm beginning to get the impression this (in general, not just for Linux) is because the talented security folks rather just do the fun parts. It'd be really awesome if more security conscious people were like the OpenBSD developers and worked on products, not just security.

I got into software through security. Getting a dump of my high school's faculty and staff password database was my first high and I chased it for years. My current job is in engineering where security is part of, but not all of, my focus. Since taking on this role, I've started feeling alienated participating in the "security community."

Work isn't always fun in the moment, work is sometimes just work. There seems to be a gap between how much work the "security community" wants to be able to push on the rest of the open source developer's plate, and how much those developers are willing to take. Security already (rightly) gets a shortcut over a lot of things, but it takes man-hours to make security happen.

Why can't it be the security guys? If spender doesn't want to send his kernel patches through the same review and legal processes the rest of us do, that's his problem. Why doesn't he stand up and become that security leadership in the kernel? Of course the submission process could be better, and of course he's not going to get everything he wants from the other maintainers right away... because it's _work,_ and _work_ isn't always fun.

<comment><USER11> Talented security folks, especially those that can engineer security rather than penetration testing, have so many opportunities that fighting an uphill battle on mailing lists just isn't very attractive.

<comment><USER10> That's part of my point. As long as the work is "someone else's problem," will it ever get done?

If other opportunities are there for someone with a security skillet, what makes a libfoo maintainer become skilled enough to make the most secure libfoo possible, but also stay on libfoo? Does saying "security is important" mean that security is important, or does it means "have my skillset, and also do the busywork someone with my skillset is able and happy to ignore?"

</comment></comment></comment><comment><USER12> Perhaps the way to push security into the industry is to use consumer's rights to their full capacity. In the EU if you buy something, you get 6 months of warranty and 24 months of implied warranty.

If you buy an Android phone and stop getting updates after 18 months and there is a new security hole, you should return the phone to your dealer and demand your money back. After all, it's relatively easy to prove that the defect (the security hole) was already present when you bought the phone. The dealer must fix the defect. If he can't, he must take back the article. He will then complain to the manufacturer. The pressure from these complaints hopefully lead to a change of behaviour by the manufacturers (i.e. provide two years of security updates, for example, even if you buy a new phone that's already been available for a year or two).

<comment><USER13> That's a very interesting point, and a good idea! It does put the onus on us as developers to ensure we do a good job and get it right from the beginning, which can only be a good thing.

The plan for allowing a device to be free from defects for two years since date of purchase is good; since date of announcement is practically worthless, unless companies start announcing products and then waiting a year to release to shorten their support time?

</comment></comment><comment><USER3> This is the Washington Post interview he wrote this for: [http://www.washingtonpost.com/sf/business/2015/11/05/net- of-...](http://www.washingtonpost.com/sf/business/2015/11/05/net-of- insecurity-the-kernel-of-the-argument/)

Source: [https://twitter.com/grsecurity/status/662393322699415554](https://twitter.com/grsecurity/status/662393322699415554)

> Very fair article on the topic of Linux security: [...] … Was a pleasure > talking with @craigtimberg

<comment><USER11> The comments in the HN submission must be some new record in middlebrow dismissals.

[https://news.ycombinator.com/item?id=10515817](https://news.ycombinator.com/item?id=10515817)

<comment><USER14> I think the article did a terrible disservice to the critics: there's lots of hot air in the article but little devoted to the meat of the critics complaints. Meanwhile, Linus' simple rebuttal is given full time, and seems completely reasonable. It wasn't until I read this post that I felt that the Linux maintainers may be doing some things wrong.

</comment></comment></comment><comment><USER15> > The industry is entirely broken in terms of what it values.

Couldn't agree more. I feel that we, as entire IT industry, have failed to provide robustness, security, and privacy after dozens of years of development of Internet technologies. Just take the recent vulnerabilities in Android and iPhones, used everyday by millions of people worldwide. How could that happen after so many billions of dollars invested in the development of the major technology used nowadays? We failed miserably and don't even understand the root problems.

Of course, completely different thing is functionality: here we've seen tremendous improvements over the years - which is very positive - but that's another story.

<comment><USER16> I think Google has understood the systemic security problems in Android pretty well since the beginning, but adopted a typical data driven approach: gather data, and when/if phones start getting compromised start figuring out what countermeasures are cost effective.

<comment><USER17> I wouldn't agree with the statement. The Android app store is filled with apps that steal user data and malicious apps. It only get cleaned up when somebody does some research and tracks things down and it ends up in the press.

Or maybe that it's just cost effective to have others do the work for you?

</comment></comment></comment><comment><USER18> I've been follow grsec for a while now, and I really like the honesty around it. They admit what they are and aren't good at, and as for the product itself (grsec), it has become my go to hardening system for the kernel over SELinux (I know you can combine the two, I don't though). Combined with other measures I think I am doing a pretty good job in balancing out the usability security scale.

If you haven't taken the time to learn grsec, you will thank yourself later if you do. Keep in mind though there was some recent drama with some people/companies not properly attributing grsec, so you want to use current instead of stable imho. Alpine linux has grsec build in, gentoo has some good guides, and so does arch, but I tend to add it to debian.

As far as the state of linux/kernel security, I blame one thing in particular, and that is complexity and amount of code. The many eyes theory has a fault, in that it assumes a lot of people will look at the code and with enough people the bugs (security bugs) will be found. Well the problem is that the linux kernel is now at 10 million+ loc. So even with a shitton of people digging through the code, lots of stuff is going to get missed, and the real problem is that there are a lot less people looking at the code than we all want to think.

I think the primary way we will be able to move to _security_ in the future is in efforts to refactor and reduce complexity of code in general, along with working on making it easier to read (or better commented).

This is one reason why I find minix 3 to be a very interesting project, at <10k loc.

<comment><USER9> Good points. Far as SELinux and grsec combined, it might help if you know what Type Enforcement is really supposed to do in practice. It's not just isolation like rule-based control. The most powerful things about it were "assured pipelines" that could deal with transitive issues or force things to happen somewhat in order.

Relevant papers for it here:

[https://news.ycombinator.com/item?id=10522894](https://news.ycombinator.com/item?id=10522894)

LOCK platform still kicks its successors' (esp Linux + SELinux) asses in many ways despite time passed. Just shows how little mainstream learns from the past or even present in terms of secure stuff in academia. Hope you enjoy the LOCK and CHERI designs if not FLASK, of which I'm not a fan either.

</comment></comment><comment><USER16> Grsecurity languishes in (relative) obscurity because no distribution ships it. I know several people who know about it and would pick the option if it was distro-supported. If you don't get automatic updates it's a non-starter.

Popularity in distros would put a lot of pressure on the mainline kernel and might get things moving there.

<comment><USER19> Alpine Linux ships it, and while they're not a major distro, I get the impression they're not "insignificant".

</comment></comment><comment><USER20> The Gentoo Hardened Project makes using grsec/PaX relatively easy. [https://wiki.gentoo.org/wiki/Project:Hardened](https://wiki.gentoo.org/wiki/Project:Hardened)

<comment><USER21> I used to be a security freak guy. Using the Gentoo Hardened, GRSecurity PaX/RBAC, customized ACLs, etc. IMHO is a high-quality piece of software, very polished and well-designed... I'm a Ubuntu guy today. For my small business, such level of security is too much time consuming, drawing me back. It's kinda sad.

<comment><USER22> You know, that's the problem. There is basically no reason why this is so hard. Many security features could just be enabled by default by major distributions with hardly any downside. You don't even have to look at grsecurity. Just using pie binaries to enable proper ASLR would be a start.

<comment><USER23> Ubuntu already does quite a bit: [https://wiki.ubuntu.com/Security/Features](https://wiki.ubuntu.com/Security/Features)

I'm not well versed enough to understand whether "Just using pie binaries to enable proper ASLR" is included, but the chart does show green against various things mentioning ASLR. It looks like specific packages are built with PIE, too.

</comment></comment></comment></comment><comment><USER24> See also this story: [https://grsecurity.net/announce.php](https://grsecurity.net/announce.php).

</comment><comment><USER25> There is no monolithic upstream organization. The real problem is that it's really hard work to upstream code, particularly when it touches core parts of the kernel. Look how long it took to get other invasive stuff like tickless or preempt RT. But it got done, it just took time and patience.

And insulting the upstream people like this doesn't make your job any easier.

<comment><USER26> > And insulting the upstream people like this doesn't make your job any > easier.

The upstream people are pretty wedded to the idea that throwing insults is a reasonable response to frustration with poor behaviour. They do not have any legs to stand on re: hurt feelings.

</comment></comment><comment><USER27> I would think that everyone here agrees that 'computer' security is in a state of turmoil. Is it possible to design a computing system that fails-safe in the event of a bug in a component, instead of opening the entire system up to exploits. Fails Safe as in the process does nothing or restricts the targeted surface area of the malware.

<comment><USER9> There were systems that did that all the way down to hardware in the 1960's with many more since:

[https://www.schneier.com/blog/archives/2014/04/dan_geer_on_h...](https://www.schneier.com/blog/archives/2014/04/dan_geer_on_hea.html)

Market rejected them because they cost a bit more or didn't have highest, raw performance. Such short-sightedness means most done exist any more in any turn-key form. Many of the modifications are straight-forward enough that even academics are prototyping them and porting Linux/FreeBSD to them.

[https://news.ycombinator.com/item?id=10522742](https://news.ycombinator.com/item?id=10522742)

Mainstream just refuses to learn or adopt proven methods of the past. They use every justification in the world even when the labor is free (FOSS) with someone only asking to use the minimal of proven techniques. Market rarely buys the stuff outside _very limited_ sales of some robust appliances: see Aesec's GEMSOS stuff, SAGE Guard on XTS-400, Nexor Mail Guard (on XTS-400), Green Hill's INTEGRITY-178B OS w/ virtualization, Mikro-SINA VPN on L4, Secure64's SourceT OS for DNS, Sentinel's HYDRA firewall (uses INTEGRITY), and so on. Social, political, and economic problems rather than technical. I see no end to it outside continued sales and development of niche solutions.

Note: The things I referenced in last paragraph are either still on the market w/ descriptions available via Google or at least have papers in reach. I left out tons of good stuff that's no longer around or just a prototype. Happy Googling and learning. :)

</comment></comment><comment><USER28> That looks like a political problem. Maybe the state should fund security for its citizens - maybe we need some new kind of institutions to do this.

<comment><USER2> Currently states is looking for a way to legally hack into your phone, computer, tablets, intercept all kind of communication and read offline data without warrant. It's not how that works nowadays.

<comment><USER28> They do that because nobody demands that they don't.

</comment></comment></comment><comment><USER29> Well there is no Linux security.

L4 provides that.

<comment><USER9> Upvoting you because the first statement is right: there is no Linux security. Why? Security at a minimum requires a formal policy of what it's to achieve along with evidence the design meets that policy. Linux never had it. It's track record for flaws goes way in the opposite direction, too. So, it's insecure by default until proven otherwise and that might not even be possible due to complexity.

Combinations of micro/sep kernels and paravirtualized Linux... from L4 projects to commercial like LynxSecure... at least have a start on a security via isolation argument. A start...

</comment></comment><comment><USER30> Mother of all pissing matches...</comment>


Show HN: Hobby attempt to reimplement Kodi in JavaScript - <AUTHOR> https://github.com/cztomsik/hackable-tv <comment><AUTHOR> Hey, I'm making this and I was wondering what do you think about the idea and maybe I don't know, inspire me with some new features :-)

Right now, it can play radios (using ffplay), show weather and browse filesystem. The rest is still in the works but one neat thing I want to do is to play games from internet archive (download, extract, run dosbox)

Here's a link to a gif [https://user- images.githubusercontent.com/3526922/74057963-4...](https://user- images.githubusercontent.com/3526922/74057963-4ad47f00-49e5-11ea-9e0d-b39c98f5fe1b.gif)

Source: [https://github.com/cztomsik/hackable- tv](https://github.com/cztomsik/hackable-tv)

If you wonder, it's using a lib (alternative to electron) I'm working on for year or so but it's still not production-ready so calm your expectations :-)

Thanks to that, I was able to use regular web libraries(react, react-dom, wouter, react-spring & @ norigin-media/react-spatial-navigation)

[https://github.com/cztomsik/graffiti/tree/master/src](https://github.com/cztomsik/graffiti/tree/master/src)

If you want to run it yourself, you'll need rust installed and it will take a while to compile (despite the cryptic npm progress message, it's compiling - <USER2> have no idea how to fix it, it's probably a limitation with github style dependencies)

But if you're lucky, it should be just:

\- git clone \- npm i \- npm run dev

you can also `npm run build && npm start` - that will consume much less memory (around 30M)

(I've posted this on reddit first but it got blocked 2 times because of some rules and have no idea what I've done wrong :-/)</comment>


Compiled JavaScript with NectarJS can be faster than Node.js and C - <AUTHOR> http://blog.seraum.com/compiled-javascript-with-nectarjs-can-be-faster-than-nodejs-and-c <comment><USER2> gcc should just add a 'remove fibonnaci' optimisation pass, that just optimises this away entirely, and stop people using this benchmark.

This is one of the stupidest things I've ever heard of -- I'm going to be really mean now. They want me to use a compiler remotely, every time I want to recompile? So if their servers go down, or my internet connection goes down, I can't even run my compiler? And they have all the source code I've ever compiled?

And their evidence for their amazing super-awesome compiler is... optimising fibonnaci? Which their compiler (any compiler) could easily be detecting and special-casing? (I'm surprised more don't actually).

<comment><USER3> gcc already optimises away loops like for (i = 0; i < n; i++) s += i;

It wouldn't be too much of a stretch to detect and optimise away code that computes linearly recurrent sequences.

<comment><USER4> gcc removes recursion in that case: [https://godbolt.org/g/R6iBup](https://godbolt.org/g/R6iBup)

</comment></comment></comment><comment><USER5> That the C code is compiled with "gcc -O7" tells me just about everything I need to know about the soundness of these experiments. "-O3" and "-Ofast" are the highest optimisation levels, where "-Ofast" includes optimisations that break some standard-compliant programs (mostly -ffast-math).

Not to mention that comparing running times for a single run on an unspecified machine isn't "benchmarking".

<comment><USER4> Yeah, it's hardly a benchmark. The information what kind of CPU they are using is also missing (why no -march=native?).

Despite how unbelievable it looks, I would love to see contents of the final binary to see what is really happening there. gcc code looks quite alright in this case: [https://godbolt.org/g/R6iBup](https://godbolt.org/g/R6iBup)

<comment><USER6> My totally unsupported guess is that they detect pure functions and add implicit memoization. It is relative easy to implement, has good benchmark times if N is big enough but not too big to make the trick obvious, but under the hood it use more memory than you expected.

</comment></comment></comment><comment><USER7> "Compiler as a Service"

I think that says enough about this project unfortunately. Why would I want to compile aanything, specifically JavaScript, "in the cloud"?!

Also, "Tail recursion optimisation as a service"?

<comment><USER8> Subscribe for debug build feature just for $99.99/month!

</comment></comment><comment><USER9> Everything looks like a scam, see that one, for example, [https://github.com/seraum/nectarjs/issues/1](https://github.com/seraum/nectarjs/issues/1) ... and it's getting worse if you dive deep in the source code...

<comment><USER10> More importantly, that source-code isn't the compiler - it just makes calls to the server that runs the compiler: [https://github.com/seraum/nectarjs/blob/master/nectar.js#L52...](https://github.com/seraum/nectarjs/blob/master/nectar.js#L521).

We don't even get to see how the compiler works, much less use it to debug when things go wrong.

</comment></comment><comment><USER11> Compiler-as-a-service is certainly disappointing.

He should benchmark vs the nexe [1] and (commercial) EncloseJS [2] JavaScript compilers (both grabbing V8's untraced/unoptimized initial translation to x86_64 as I understand).

[1]: [https://github.com/nexe/nexe](https://github.com/nexe/nexe)

[2]: [http://enclosejs.com/](http://enclosejs.com/)

</comment><comment><USER12> The only thing that can be concluded with absolute certanity, is that they want $30k.

</comment><comment><USER13> Srsly fellas, do not back this shit! It is not a joke!

Idea (to have a compiler that compiles JS to a "native" binary) is good, but this "give me your money" and "cloud" stuff should be annihilated.

IMHO Fibonacci benchmarks are doodoo.

<comment><USER11> While I personally wouldn't buy it if I can help it, I don't see a problem with commercially offering compilers per se. The thing I'm having trouble with is potential injection of code (backdoors, etc.) and other security concerns, eg. if a customer of yours is having an imminent issue with your product, you're dependent on the third party tool provider.

<comment><USER13> I agree that "tool" (in this case compiler) as a service is OK. You're also correct about "trust" aspect (that's what I've meant by "cloud" stuff).

Also In the FAQ on Kickstarter page it says that you'll be able to have your own "Nectar" server, so you don't depend on "Nectar" cloud.

But look at it seriously... 32k USD for a thing that will be probably faced with an open-source (and possibly free) solution.

The amount of "pay me money" features and bullshit:

* ecological

* pay to vote

* Fibonacci benchmark claiming to be faster than C

* claiming to work but actually fails to compile this JS code (as mentioned by johhny in the comments to the article [http://blog.seraum.com/compiled-javascript-with-nectarjs-can...](http://blog.seraum.com/compiled-javascript-with-nectarjs-can-be-faster-than-nodejs-and-c#comment-3219075399)):

      var hello = {foo: "Hello, world!"};
      console.log(hello["foo"]);

</comment></comment></comment><comment><USER14> So, it's just caching the return values of the method calls? I thought applying dynamic programming to fibonacci numbers was algo 101?

And what is -O7 level? Or, better, O7 lvl? :) Dynamic version of 45th fibonacci number (see [http://www.geeksforgeeks.org/program-for-nth-fibonacci- numbe...](http://www.geeksforgeeks.org/program-for-nth-fibonacci-number/)) has the following runtime:

        ᐅ gcc -O2 fib.c -o fib && time ./fib
        1134903170
        ./fib  0.00s user 0.00s system 49% cpu 0.005 total

</comment><comment><USER15> Feels like a premature April 1st launch

</comment><comment><USER16> Or, the code gets tail recursion optimized, turned into an iterative solution whilst the c code is recursive? If it was doing the same thing its unlikely to be faster.

<comment><USER17> Turning the recursive formulation of the Fibonacci function into an iterative loop is not easy for a compiler (unless you just program that specific pattern into it).

However, this "benchmark" is totally dominated by function call overhead, and it's quite conceivable that you can engineer your compiler to optimise for that case at the expense of others. You could do it quickly enough by unrolling the recursion a few times. This can cause the code to balloon in size in the general case, but not for this simple case.

It's also not particularly impressive to optimise a Javascript program that does not exhibit any complex behaviour. Again, you can just write a compiler that detects whether the Javascript program is straightforward, and if so, turns it into C or whatnot. Without being able to see what the compiler is doing, there is no way to know.

Also, "Compiler as a Service" may be a good idea for some cases (like farming an aggressively optimising but very slow compiler off to the cloud), but as the default case? No way.

</comment></comment><comment><USER18> A compiler is software that IMHO really should not be SAAS. I don't want to pay monthly for everything in my life. Honestly, I want to pay a monthly fee for as little as possible. The worst part of it all is what happens if you go out of business and I've build an entire product with "NectarJS"? Can't I even compile the code then?

NodeJS already is fast, and if one really needs something faster maybe use something else than javascript?

</comment><comment><USER19> Can be faster than assembler!

</comment><comment><USER20> You had me at "faster than C"</comment>


Show HN: Simple blog application with Django - <AUTHOR> https://github.com/dorukcan/mars <comment><AUTHOR> I made this project as a django exercise, so feel free to give comments, suggestions etc.</comment>


Ask HN: Is GDPR the end of side projects? - <AUTHOR> I am reading GRPR.eu because I have a side project that is ready to launch. The site is daunting and the penalties are high. Even though there are some templates to put on the website, the general gist of it is that you need to have specifically appointed and trained Data Officers (you) that take care of them, you need to put 2FA everywhere.
Another example is "The existence of an automated decision-making system, including profiling, and information about how this system has been set up, the significance, and the consequences".
As the fines are not tiered with the number of users or how big the company is, small side projects that could potentially (doesn't matter if the probability is small) face millions of euros of fines are not worth the risk any more of making experiments. <comment><USER2> I think small side projects that will need to store personal information about users will be ended.

</comment><comment><USER3> GDPR is not about preventing innovation, it's about basic ethics: you don't do whatever you want with personal data.

1\. Clear opt-in for customers regarding Personal Data Manipulation that is not necessary for your service (e.g. advertising tailoring, sending the personal data of your customers to third-parties, etc.); don't collect data you don't need.

2\. Notify when breached.

3\. Don't collect data you can't protect. Negligence is just as badly punished as doing shady deals.

4\. Export/Delete my data/account button.

That's it. You may also want to anonymize logs (hide IP addresses 123.45.xx.89 for example), hash the passwords (as should always be), use HTTPS, etc.

I can give you a few more pointers if you describe your project a bit more.

</comment><comment><USER4> As I commented previously, most of the GDPR has already been law in the EU for years.

For most (side) projects, if not all, very little has changed.

What is happening is that people are in fact discovering the law because of the noise around the GDPR.

</comment><comment><USER5> No

</comment><comment> barry-cotter Just geoblock the EU if you're worried

<comment><AUTHOR> I live in it

<comment> barry-cotter So? No one is going to give a monkey's about your tiny side project and if they do you can get around to doing GPDR mitigation after you've been profitable enough to quit your job for a year. Then you can unblock the EU. There are not infinite enforcement resources and the chances of anyone coming after a tiny company are minuscule. If you geoblock the EU they're nonexistent.</comment></comment></comment>


What Happened to Alan Dershowitz? - <AUTHOR> https://www.politico.com/magazine/story/2018/05/11/alan-dershowitz-donald-trump-what-happened-218359 <comment><USER2> Deshowitz basically is a legal nerd who fails to let political ideology cloud his legal judgement. People are upset he isn't toeing an imagined party line.

Sometimes I think republicans tolerate dissent a little more gracefully amongst themselves than many dems, ironically, given dems present themselves as the party of tolerance.

<comment><USER3> The law is the law - and what is right under the eyes of the law does not change because of the politics of the hour.

Every change Obama did under the guise of executive power will come back to haunt the Democrats, and every change Trump does under the guise of executive power will haunt the Republicans in 2-6 years - there is an old adage in politics - "Never give yourself more power than you want your political opponents to have.", which I feel is very germane here.

</comment></comment><comment><USER4> From reddit, which is a very left leaning site, the amount of hatred and distortion of logic is insane. On one thread, a redditor proudly proclaimed that he distanced himself from relative who are "nice people overall" because they support Trump. Media articles & podcasts have so exaggerated Trump's perceived threat that some people literally think he's an American hitler. I feel the truth is more that he has a brash and selfish personality and he does not care about the opinion of the 1/2 of the country that didn't elect him.

<comment><USER3> My left leaning friends are pretty sure Trump is the devil, my right leaning friends think he's the best President ever.

I'm sitting in the middle going "What the hell are these people smoking?" From my perspective he's largely a do-nothing President so far - and mostly, what changes he's tried to wrought have been so ham-handed as to be virtually useless.

</comment></comment><comment><USER5> What happened to all the people Dershowitz is criticizing? Why does Dershowitz need to agree with the mainstream Left?

</comment><comment><USER6> He got red-pilled after having been blue pilled for a while. I guess he's purple now.

</comment><comment><USER7> > But is Dershowitz really a turncoat?

The question of what 'happened' to Dershowitz answers itself: the left considers him a traitor if he dares agree with Trump on anything, no matter whether Trump has legal standing or not.

</comment><comment><USER8> He's simply expressing views contrary to his peers, which seems unbelievable to liberals because liberals don't seem to allow that anymore.

<comment><USER9> I wish we'd stop calling Democrats liberal and Republicans conservative. They're not, they haven't been for a while. Neither party represents either of those things anymore. You might even argue that they never did.</comment></comment>


Physical Side-Channel Key-Extraction Attacks On PCs - <AUTHOR> http://www.cs.tau.ac.il/~tromer/handsoff/ <comment><USER2> This paper says that if you can touch a simple bare wire to the chassis of a desktop computer, or even to the metal on an Ethernet, VGA, or USB cable connected to that computer, and then trigger RSA operations, you can extract RSA private keys from the computer, even against software that puts _some_ effort into not leaking information in its computations.

This is an extremely cool paper (I'm not qualified to say how novel it is, though I can say that Eran Tromer is an important name in side channel cryptanalyis; the acoustic side channel against GPG builds in some ways off his earlier work).

Some things to look at:

* How the paper builds up from distinguishing a test case using electrical side channels, to distinguishing between different keys using those side channels, to attacking a single key operation, to attacking a single key adaptively.

* The (not particularly complicated) math involved in selecting chosen RSA ciphertexts to target GPG's multiplication code and amplify the side channel.

* The way the adaptive attack (where you bounce repeated and different ciphertexts off the target and learn from each "experiment" to select the next one) builds from the simpler attack.

If the electrical mechanics of how they actually captured the signal are interesting to you, something like the last third of the paper goes into detail, including the part numbers of the equipment they used to capture and process the signals.

I'd like to get someone on my team working on reproducing some of this work. Which is usually the sign of a well-written paper. :)

</comment><comment><USER3> It appears that this algorithm specifically targets RSA and El-Gamel by crafting inputs that would produce different numbers of multiplications (among other ops) depending on the input.

This should be a wake-up call for the move to elliptic curves, as GPG and OpenSSH allegedly support them. Windows support is lacking for remoting into Linux hosts with elliptic curve based ciphers. I found that while PuTTY does not support this directly, evidently the Gpg4win agent can work with putty, and that might allow ECDSH/ECDSA. I haven't tested this, however. And another terminal client, Tera Term, purports to support elliptic curve algorithms.

Unfortunately for GnuPG, it looks like the only supported curves are those defined in NSA Suite B (the NIST recommended curves). That set is considered tainted by some community members. There's some discussion of GnuPG supporting Curve25519/Ed25519, of implementing it, but I can't tell if it's implemented or not.

Edit: I've played with Tera Term and can confirm that it works with Ed25519 along with OpenSSL 1.0.1f. I'm pleased with the result.

<comment><USER2> Elliptic curves offer plenty of side channel opportunities; they aren't intrinsic to RSA.

ECC is good, better than RSA, but what this paper militates for is leak- resistant cryptography implementations, not ECC in particular.

<comment><USER3> RSA is difficult to make constant time, but there are plenty of constant-time elliptic curve implementations out there. Curve25519/Ed25519 is one of them, and this paper suggests that they will be strongly resistant to these sort of attacks.

<comment><USER4> RSA is actually one of the easiest algorithm to protect from side-channel attacks (though nothing gives you 100% protection), thanks to the various kinds of blindings you can immediately apply.

Blinding techniques are not constant-time, but what you really want in the end is to reduce the Signal-to-Noise ratio on the radiated energy.

For ECC it is more difficult, and it becomes very hard for most symmetric ciphers.

<comment><USER5> Blinding ECC is as easy as RSA, if not easier. Coron's classic paper has 3 easy measures to blind a scalar multiplication, and more have appeared since then:

[http://link.springer.com/chapter/10.1007%2F3-540-48059-5_25](http://link.springer.com/chapter/10.1007%2F3-540-48059-5_25)

The problem with GnuPG is not that it's using RSA/ElGamal instead of ECC; it's that it's using a general-purpose large integer arithmetic package, MPI, whose purpose is to optimize speed for a wide range of input arguments.

</comment></comment></comment></comment></comment><comment><USER6> I wonder what defenses we will see against such side channel attacks in the future.

Perhaps completely opto-isolated (for both power and signals) and EM shielded coprocessors?

<comment><USER7> Would pipelined hardware work where all operations are run in parallel whether "correct" or not, combined with several "dummy" inputs work?

</comment></comment><comment><USER8> This isn't a very novel technique; I didn't see any reference to TEMPEST, which has been known for a _long_ time - no physical contact required, it can be done at a distance:

[http://en.wikipedia.org/wiki/Tempest_(codename)](http://en.wikipedia.org/wiki/Tempest_\(codename\))

Here's an unorthodox application of this technique: [http://www.erikyyy.de/tempest/](http://www.erikyyy.de/tempest/)

The most interesting part is that adding noise won't help to mask the signal, even if the signal is much weaker than the noise, since it can still be recovered through processing.

<comment><USER9> Tempest deals with extracting signals at a distance, from things that are already directly broadcasting them in some form or another.

There's no such thing in this case. There is no USB port or VGA cable that is directly carrying the internal state of one of dozens of different processes/applications being run on the target PC.

This work is quite completely different. Using special knowledge of how specific software has been written and compiled, and also with the ability to throw carefully crafted inputs at the software in question, they're able to use some fun statistical methods to guess what the internal state must be.

The paper and this type of work generally is very interesting because software developers are used to thinking of CPUs as "black boxes" which do their thing invisibly and effortlessly.

This kind of work is just as awesome as all the papers on CPU side-channel attacks (cache, branch prediction, etc) which really seemed to take off around 2005.

<comment><USER4> >> This kind of work is just as awesome as all the papers on CPU side-channel attacks (cache, branch prediction, etc) which really seemed to take off around 2005.

Maybe you meant late 90ies, when Kocher (and others) published results on side-channel attacks.

[http://www.cryptography.com/public/pdf/TimingAttacks.pdf](http://www.cryptography.com/public/pdf/TimingAttacks.pdf) [http://www.cryptography.com/public/pdf/DPA.pdf](http://www.cryptography.com/public/pdf/DPA.pdf)

<comment><USER2> No, that's not what he meant. He was referring to the x86 microarchitectural side channel trend that started in 2005, with stuff like Aciicmez's BTB timing paper, or Osvik and Tromer's local cache timing.

</comment></comment></comment></comment><comment><USER10> So this is incredibly cool. Like, I could interpret this as scary I guess, but it's outright amazing that you can do something like this to a laptop and distinguish instruction being executed in a CPU from such data.

</comment><comment><USER11> I am in awe of the people that have the skillset to dream up stuff like this. I never thought the interference of the processor would travel down the line of a UTP cable.</comment>


How LulzSec kept itself safe during the summer of 'lulz' - <AUTHOR> http://www.newscientist.com/article/dn21524-how-lulzsec-kept-itself-safe-during-the-summer-of-lulz.html <comment><USER2> Very interesting headline followed by a total content-less fluffy press release masquerading as a news story.

I am, as they say, disappoint.

<comment><USER3> I found this pretty interesting:

> "but we also saw very specific attacks targeted at vulnerabilities in the > routers we used on our network. That's pretty clever; you would have to > spend quite a bit of time investigating the topology in order to figure out > what routers we were using."

<comment><USER4> If only that had gone on for more than a sentence, especially with asking permission to talk about the situation.

</comment></comment></comment><comment><USER5> Nice ad Cloudfare... Wait, was it a legit article ?

NewScientist took a hit in my heart in terms of credibility with this article.

<comment><USER6> Yes, it was a vendor interview piece with a linkbait-and-switch title. (Cloudfare didn't keep Lulzsec "safe", they kept their website up.)

But NewScientist's primary audience is not web hosting specialists. So for their audience I expect it was mildly educational.

<comment><USER7> If I remember correctly some guy posted lulzsec member identities online after simply following them in irc..

<comment><USER8> Indeed, but none of them led to the arrests.

It's very likely that they were false IDs created for diversion.

</comment></comment></comment></comment><comment><USER9> How LulzSec kept -- their website -- safe during the summer of 'lulz'

<comment><USER10> Yes, they didn't do a particularly good job of keeping themselves safe, did they?

</comment></comment><comment><USER11> My bullshit detector went off somewhere around here: "CloudFlare provides performance and security for any website online.We handle more traffic through our network now than Amazon, Wikipedia, Twitter, Zynga and Aol combined."

Considering Wiki, Twitter and Amazon are all top 10 global sites, I'm having a hard time imagining someone doing more traffic than all of them put together, even disregarding the rounding errors of Zynga/AOL. Anyone have more concrete statistics to confirm/deny this?

<comment><AUTHOR> Here's our internal data on this. Based on page view data (values below are page views) and using the statistics from Google DoubleClick Ad Planner (<http://www.google.com/adplanner/static/top1000/>) we have the following for the last 30 days:

        Wikipedia.org    6,000,000,000
        Twitter.com      5,900,000,000
        Amazon.com       4,900,000,000
        Aol.com          5,400,000,000
        Zynga.com          460,000,000
        Total           22,660,000,000

Then looking at our own internal network for the last 30 days we see:

        CloudFlare      27,066,719,054

So we did about 4.4B more page views than the combined sites above which would actually leave us room to add LinkedIn and Flickr to the list.

<comment><USER12> Are you confident that you're comparing apples to apples there, and not e.g. pageviews to http requests?

<comment><AUTHOR> Yes. We have detailed stats on page views, hits, bandwidth, cache hits, etc. etc. Looking at the most recent data which I get daily I see in the trailing 30 days: 27B page views and 162B hits.

</comment></comment></comment></comment><comment><USER13> My understanding of cloud flare is that they null route you if any major attack comes in- Seems a little bit unfair they didnt do this for lulzsec just to get the press. If you are some boring website that gets the same attack lulzsec does, they will just disconnect/nullroute you.

Correct me if any of this inaccurate, but last I checked it was not.

<comment><USER14> Hi,

We only force a site direct if the attack is too large & starts to impact other customers as well. If the attack doesn't impact other customers, then we won't force the site direct (we generally only force a few sites direct per week & these are monster attacks).

<comment> mr-ron How was it that the Lulzsec attacks were not as large? What qualifies a sufficient size attack?

</comment></comment></comment><comment><USER15> Nice press hit.

</comment><comment><USER16> does anyone have experience with cloudflare? good service?

<comment><USER17> I tried them out for a bit, mostly because of their always-on claim but it didn't work for my sites for some reason so I switched to Amazon.

Their interface is nice, but I don't like the fact that you have to switch your DNS over to them and then re-enter data like MX records. With amazon I just point the parts of my domains I want to use to them and the rest remains with my primary DNS hosting.

<comment><USER18> if you email them you can get onto the private CNAME beta!

</comment></comment></comment><comment><USER19> Is router/server fingerprinting really that "clever." Looks like 5 minutes with nmap and nessus.

</comment><comment><USER20> How is someone trying to take down a website they don't like a "white hat" hacker?</comment>


Cisco's Open Source H.264 Codec - <AUTHOR> https://github.com/cisco/openh264/

<comment><USER3> The license is abundantly generous -- it essentially says, "do whatever you want, but don't hold Cisco responsible".

But this isn't the whole story. There are also patents involved, and these are not mentioned in the LICENSE file.

Cisco does explain the issue on a different website: "a team can choose to use the source code, in which case the team is responsible for paying all applicable license fees, or the team can use the binary module distributed by Cisco, in which case Cisco will cover the MPEG LA licensing fees [1]" (where MPEG LA, or MPEG Licensing Authority, is the organization that holds the patents and of which Cisco is a member)

I think that most of the audience here seems to know all this. But it wasn't clear to me, and I think it probably wouldn't be obvious to many other readers.

[1] [http://www.openh264.org/faq.html](http://www.openh264.org/faq.html)

<comment><USER4> can anyone confirm that in order to avoid MPEG LA license fees for encoding (20$ per unit sold I think) I can not distribute Cisco's compiled encoder library with my software (even if I use the binary from Cisco's repository -when they make it available- instead of compiling it myself) and the only option would be to download it from my software at runtime as a plugin? are there any other options (the systems on which my software is going to be installed do not have internet access)?

<comment><USER5> That's right. This is a workaround for the MPEG LA license, and having the user download the binary right from Cisco is the only way to have Cisco pay for the license fees. Anything else and you've got to become a licensee.

<comment><USER6> I don't think that's entirely true.

There's plenty of other H.264 products that you can get without directly downloading them. Flash is a close analogy, they pay the flat fee and nearly every desktop in the world uses it. And while some people download Flash direct from Adobe's servers, other's get it indirectly, e.g. pre-installed on computers they buy, or by downloading an installer. And people build apps (including desktop apps) around that functionality.

Cisco is mostly doing this to support WebRTC interoperability with their deployed hardware (which generally means internet access) so they may just be going for the simplest thing for them to do.

</comment></comment></comment></comment><comment><USER7> >Constrained Baseline Profile up to Level 5.2 (4096x2304)

Well, I wasn't expecting miracles from this, but constrained baseline profile only? That's very disappointing. Not only will this be unable to decode most of the H.264 content out there (web and otherwise), you could very likely get better results with VP8.

If only they'd have endorsed something like libavcodec instead...

<comment><USER8> Seriously... So much for adaptive bit rate.

Makes sense that Cisco would be using CBP after seeing this on Wikipedia:

"this profile is most typically used in videoconferencing and mobile applications"

[http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Profiles](http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Profiles)

<comment><USER7> >Makes sense that Cisco would be using CBP

Yes, I can understand the encoder only supporting CBP - videoconferencing is the one thing that you really need encoding capabilities for in a browser. Anything else you can basically always encode offline and use x264 or whatever.

The real shortcoming is the fact that the decoder is also limited to CBP - <USER2> I said, this makes it completely useless for decoding most H.264 video out there (which is either Main or High Profile, generally the latter if we're talking HD content), web or otherwise.

<comment><USER9> This codec is designed more for interactive video conferencing applications and is not really great for non interactive encoding of a movie for playback. The choice of CBP came from that is what the IETF is considering to specify for the WebRTC standards.

</comment></comment></comment></comment><comment><USER10> There sure are a lot of hard-coded numbers in that codebase. In many cases it's easy to figure out where the numbers came from, but in others, it's nearly inscrutable without a named constant or a comment or _something_. Here's one example:

[https://github.com/cisco/openh264/blob/master/codec/encoder/...](https://github.com/cisco/openh264/blob/master/codec/encoder/core/src/svc_base_layer_md.cpp#L1254)

Where does "15" come from? I suppose if I'd written a codec like this before, or if I stared at the code long enough, I could figure it out, but wouldn't it be better to use an enum or a #define?

<comment><USER11> Encountered this topic recently in the office.. I'm from the side of the fence that doesn't overly care about code tidyness, so long as it performs its overall function. 10 years ago this kind of thing might have bothered me a lot more, but at some point crossed a threshold where I realized _all code generated to the present day_ is pretty ugly and long term unmaintainable (but that's a story for a rather large and rather boring essay).

The tl;dr is simply that if you obsess over minor details on this level, a lot of brainpower is wasted that could be used for bigger problems you should be much more worried about.

Playing devil's advocate, in this case the if() is obviously a guard for the subsequent switch. Moving just the constant '15' into a #define would make it read more like some magical sentinel value, unless you also #defined all the literal values used in the switch, at which point you've introduced a wholly bullshit layer of abstraction to what was otherwise incredibly concrete and explicit code.

Let's assume you have a great reason for doing that. OK. So what do you call these constants? Well, the code appears to be branching to special cases based on the width of some integer. So we instead have what, WIDTH_1_BIT, WIDTH_2_BITS, ..., WIDTH_15_BITS? Now we've pulled those constants out, you stare at the block of #defines, and think, damn, this is so _ugly_ since most of the value space isn't fully defined! So some kindly maintenance programmer comes along and pads out the rest, producing a perfectly beautiful block of utter line noise.

That is arguably considerably less readable than what we started with

<comment><USER12> A simple //comment would have sidestepped all of that and still clarified the number's purpose.

<comment><USER13> It's all very well when it's a simple variable but quite often I have come up against variables that would take a whole paragraph of text to explain their purpose _and_ don't have a concise or obvious name.

<comment><USER14> I find _quite often_ a little hard to believe. Occasionally, maybe; and why not provide a paragraph of text? Sometimes it's the right thing to do.

</comment></comment></comment></comment></comment><comment><USER15> It would be really cool if they provided predictable builds, then we could just compare the binary against a self-compiled binary and be sure tehre are no backdoors we can't see in the code.

Sadly even truecrypt fails to provide that. So i guess we'll have to life with binary blobs no one knows what they're really doing.

<comment><USER9> Hi, I'm one of the people working on the stuff Cisco open sourced and yes, it will be predictable and verifiable builds. We are working with some of the Mozilla folks to make sure we can do that.

<comment><USER16> How often do you expect new Cisco builds to be published? Will the releases be versioned so Firefox version X knows it will always install OpenH264 version Y from Cisco's binary blob server?

<comment><USER9> Open to suggestions but the current plan would be to make it match up roughly with the Firefox 6 week release cycle. Definitely versioned and fingerprinted such that Firefox can verify that Cisco did not compile in bad stuff.

</comment></comment></comment></comment><comment><USER17> [https://github.com/cisco/openh264/blob/master/CONTRIBUTORS](https://github.com/cisco/openh264/blob/master/CONTRIBUTORS)

Contributors are 100% Chinese. Is this project make in Cisco China R&D?

<comment><USER18> Cullen Jennings is not chinese

<comment><USER17> Well, when I posted the comment it was like this

[https://github.com/cisco/openh264/blob/3747f562492ea301b84e3...](https://github.com/cisco/openh264/blob/3747f562492ea301b84e3eae4fa8cae765d95ccb/CONTRIBUTORS)

view history here

[https://github.com/cisco/openh264/commits/master/CONTRIBUTOR...](https://github.com/cisco/openh264/commits/master/CONTRIBUTORS)

</comment></comment></comment><comment><USER19> I'm genuinely curious --- how come nobody thought of doing this (being some kind of platinum member and just putting it out there for all to use) all these years during the fighting about h.264 vs the open web and yada yada?

What Cisco did seems to have put an end to all those debates, and h.264 is available for all, with patents intact, etc.

<comment><USER20> It costs Cisco $6 million a year to do this. I wonder if any of the beneficiaries (Firefox, etc) are pitching in.

That sounds like loose change, but probably stuck up in bureaucratic decision- making at anyone who thought of this before. ("Why are we spending $6 million a year to make it free for everyone else again?")

EDIT/UPDATE: In the second paragraph, I was referring to _other_ companies and why they didn't do this earlier. It clearly brings Cisco quite a bit of goodwill to do this, and to see more video flowing on the web.

<comment><USER21> I doubt it costs Cisco anything extra because they probably need the distribution rights for other products they develop (for example WebEx.) Besides it a good PR benefit for them with minimal incremental cost.

<comment><USER9> It costs Cisco lots (I work at cisco) as we were not close to paying the 6.5 million cap before this. Mozilla has been contributing to the code and making sure the project runs well but not towards any MPEG-LA payments. There are probably a bunch of reasons Cisco did this but making interoperable video just work on the internet would be at the top of the list. That's good for Cisco and others.

</comment></comment></comment></comment><comment><USER22> What about x264 hosted at VideoLAN: [http://www.videolan.org/developers/x264.html](http://www.videolan.org/developers/x264.html)? It's open source and people have implemented tons of cool software tools with it.

<comment><USER23> The key here is Cisco is paying the patent royalties for anyone who uses their codec binaries - which will cost them $6.5m/year. They could do the same for x264, but it's probably legally safer to distribute an implementation they wrote themselves.

<comment><USER9> If the x264 people think they can give x264 to Cisco under a license that we can compile it and distribute the binaries with no changes to our MPEG LA licensing agreements, tell them to get talk of me (email@example.com) if they want to do this. I came to the conclusion Cisco could not do this without x264 giving us an appropriate license.</comment></comment></comment>


Scale (YC S16) is an API for human labor - <AUTHOR> http://themacro.com/articles/2016/07/scale/ <comment><USER2> Hey everyone! I'm Alex, co-founder at Scale. Our goal with Scale is to empower the next generation of human-driven products.

If you have any uses cases in your company or just as a developer, please email me at firstname.lastname@example.com and I'm happy to chat.

I'm also here to answer any questions you have :)

</comment><comment><USER3> I love this product. We're big believers in what you guys are building, and the need is real.

As someone who once struggled extensively to use AMT, I think the need here is genuine and I'm glad to see someone doing it right.

<comment><USER2> Thanks Anand! We truly appreciate all your support and advice :)

</comment></comment><comment><USER4> How is Scale different from using the Fancy Hands API? [https://www.fancyhands.com/developer](https://www.fancyhands.com/developer)

<comment><USER2> For one, as a company, we're fully focused on our API (whereas Fancy Hands is primarily focused on the consumer assistant product). That means they're less willing and agile to help developers, learn about their use cases, or support them as they scale.

Another large differentiator is FancyHands has often been too expensive to scale with companies as they grow, and aren't focused on building the tooling necessary to make large-scale operations possible.

</comment></comment><comment><USER5> How do you deal with human error?

<comment><USER2> Human error is an issue that we're always tackling. First, we're hiring a really high quality team so we're minimizing error from the start. Beyond that, we have a review system in place for the human responses, to ensure that the results are accurate.

This is something that we're always looking to improve and are always building tooling to solve.

</comment></comment><comment><USER6> Oh, I thought you meant manual labor like digging a ditch in my yard.

<comment><USER2> Not yet ;)

</comment></comment><comment><USER7> I think this idea is really on point. But honestly I felt a little bit freaked out with the tagline 'API for Human Labour', might just be the luddite in me though.

</comment><comment><USER8> Quick note - the link to your website is broken in the article

<comment><AUTHOR> Good catch! Just fixed it.

</comment></comment><comment><USER9> Looks really good.

How is this different from Crowdflower? [https://www.crowdflower.com](https://www.crowdflower.com)

<comment><USER2> Thanks!

For now, there are a couple main differences: * High quality team members we personally vet (vs. the crowdsource model) * Significantly simpler API * We build all the tooling for our team members ensuring they complete things efficiently. * Realtime responses, even for low volume</comment></comment>


Watch Soyuz Rocket Go Out of Control During Failed Launch - <AUTHOR> https://sputniknews.com/science/201811011069417282-video-soyuz-rocket-losing-control/ <comment><AUTHOR> In the YouTube video at 43 to 44 seconds you can see the "left" booster pivots into the tank rather than away from the tank like the other two boosters in the frame.

[https://www.youtube.com/watch?time_continue=44&v=v-N602kxpg4](https://www.youtube.com/watch?time_continue=44&v=v-N602kxpg4)

</comment><comment><USER2> Sounds like the Korolev Cross sequence [1] did not go as it should have.

[1] [https://en.wikipedia.org/wiki/R-7_(rocket_family)#Korolev_Cr...](https://en.wikipedia.org/wiki/R-7_\(rocket_family\)#Korolev_Cross)</comment>


Screenshots is Shipping in Firefox 56 - <AUTHOR> https://medium.com/firefox-test-pilot/screenshots-is-shipping-in-firefox-56-25ecbe0d5b91 <comment><USER2> >Smart search: We built Page Shot to not only capture a screenshot, but to capture lots of metadata as well. Page Shot extracted text and other attributes from the underlying pages and stored it along with each screenshot. In practice, this meant that shots of text were fully searchable.

This is a great feature. I'll freely admit to taking gratuitous screenshots to share things (Cmd-Shift-Ctrl-4 makes it so easy on a Mac); of course, this makes the image impossible to search for later. It would be great to be able to search through the images I lazily take with a good old text search.

If Mozilla keeps it up with features and performance improvements, they'll lure me back from Chrome.

</comment><comment><USER3> It's lame that they put that option at the bottom of the contextual menu when you right-click on a page. I'm constantly triggering the screenshot mode when I'm trying to Inspect Element.

<comment><AUTHOR> Yeah, this is a legit concern.

Screenshots is implemented as a WebExtension. Unfortunately, the WebExtensions framework in Firefox currently appends items to the bottom of the context menu --so you'll notice this with other WebExtensions, too.

There's a bug open to change this behavior: [http://bugzil.la/1325758](http://bugzil.la/1325758) . If you'd like to hack on some browser JS, I'd be happy to help get you connected with a bug mentor on the addons team :-)

<comment><USER3> Thanks for your informative response! That's a very interesting discussion, and I'm glad to see support for at least moving Inspect Element back to the bottom in the short term.

Some of the use cases for precise placement capabilities seem pretty compelling, but here's hoping for accessible user customization options as a long term solution, perhaps in conjunction with the ability for WebExtension developers to set appropriate default placement, as long as that placement is not below Inspect Element. Inspect Element at the bottom is sacred!</comment></comment></comment>


Show HN: Dislack – Form creation for the modern maker - <AUTHOR> https://dislack.com <comment><AUTHOR> Hi everyone, Sam here! I want to share a new product we just launched called Dislack. We're focused on making a more seamless way for people to create, collect, and manage form submissions.

Thank you in advance for taking time to read this we really appreciate it. We're early but have some cool things planned in the roadmap.</comment>


Venmo Five Years Ago - <AUTHOR> https://medium.com/@thenewb/venmo-five-years-ago-3d361563b98f <comment><USER5> Venmo was started by UPenn alums so it was popular among my friends long before it was a phenomenon (one of my good friends interned there and wrote the BlackBerry app).

I used to use it exclusively by SMS starting around 2011. It used to be smart enough where I could text in "Pay John $5 for food" and it would figure out which John I meant and do it. I loved that.

It's been amazing to watch Venmo grow to what it is now. If I could only keep three apps on my smartphone, I would choose Uber/Lyft, Venmo, and Google Maps. I can't navigate my life without all three of those.

In my last year of college my Venmo year in review showed that I had spent $17k on Venmo and received $18k. So not a huge net, just a constant movement of money in and out among my friends (rent, food, parties, etc). If I had to use cash we would have never been able to make the small things work, and if I had to use PayPal I would have accrued $100s to $1000s in fees.

So basically: thank you Venmo. You make my life measurably simpler.

</comment><comment><USER6> Venmo is an objectively worse experience to Square Cash in every way. Bank accounts rather than debit cards, difficult Facebook-linked discovery, stupid social networking integration, obtuse UI.

Square Cash is beautiful, elegant, and effortless. I encourage my friends to use it over Venmo whenever I can. Unfortunately, Venmo is wildly more popular among people I know.

<comment><USER7> I'd have to argue with "objectively" \- many of your gripes are subjective.

The bank account vs. debit card is one time on setup - and has little to do with day to day interaction. Not do I see how the UI is obtuse - it takes 3 clicks to pay someone.

The one legitimate gripe you have (the facebook/social network), is a plus in my opinion - in the sense I can pay anyone by just knowing their name. Friend of so-and-so is throwing a party? I can look up their name and throw in, _and_ there is an in-app log of the transaction.

I use Cash to send/receive money to my mom. I never have to worry about the the amount sent, what was it for and when it was sent and who it was sent to because its my mom. Its rarely the same for my friends.

<comment><USER8> "The bank account vs. debit card is one time on setup - and has little to do with day to day interaction. Not do I see how the UI is obtuse - it takes 3 clicks to pay someone."

I like Venmo, but I vehemently disagree here. Every time I recommend Venmo to someone who hasn't heard of it, I have to explain why they should give their banking information to a company they've never heard of. It's an onboarding disaster. I recommend Google Wallet to most people now since it's both a trusted name and doesn't require linking to a bank. My conversation is usually as simple as "Hey download Google Wallet - it's an easy way to zap money between people - and send me $x".

<comment><USER9> Also, if your Venmo account gets compromised, it's a fucking nightmare. I think this slate article summed up most reasonable persons' concerns pretty fairly:

[http://www.slate.com/articles/technology/safety_net/2015/02/...](http://www.slate.com/articles/technology/safety_net/2015/02/venmo_security_it_s_not_as_strong_as_the_company_wants_you_to_think.html?wpsrc=fol_fb)

</comment></comment></comment></comment><comment><USER10> They were the darling startup of Philadelphia for a while. Proof that Philly could compete and grow successful technology companies. Our hackerspace used them to manage membership dues because PayPal was such a pain in the ass, and we really liked supporting a local business. One of our members was supposedly good friends with one of the founders, got us setup as a non-profit with them so we didn't have to pay transaction fees. A lot of us started using Venmo to share lunch costs both in the space and with our coworkers back at our jobs. I even convinced my landlord to start taking payment through Venmo; he loved it.

I remember hearing Venmo talk in one of the local tech press blogs about how much they loved Philly and were never going to move. Then literally a month later they had moved to NYC.

And then they conveniently "forgot" about our non-profit status, but didn't email anyone about it, and didn't report on the transaction fees in the same data stream as the rest of the app. I was treasurer at the time, and couldn't figure out why my spreadsheet balance tracking all of our accounts didn't match Venmo's balance. I had to do a special data export to find the transaction fees. And that data export was just to a CSV file, one that didn't quote fields with commas or escape newline characters correctly. I seem to remember the export wasn't even on the account page, you had to go find it under some obscure settings page.

I quit using them after that, and haven't looked back. When you're a non- profit, community-owned-and-operated hackerspace (as opposed to a for-profit fab-lab like TechShop), it's really hard to get people to pay their dues on time (or at all). Literally all we needed was money for rent and internet, the management was rotating volunteer basis, nobody got paid. Any amount of money that is expected and doesn't come through is a huge hit to the bottom line.

</comment><comment><USER11> I've yet to see a payment app reach any major usage in my social network, which is extremely fragmented among Google Wallet, Snapcash, PayPal, Square Cash, Popmoney, Simple, bank-specific apps i.e. Chase Mobile... (Weirdly enough I don't know anyone using Venmo, though I'm familiar with it from HN and the like.) It seems like everyone _wants_ a simple payment app, but there's a huge 'sign-up fatigue' from the fragmentation, and no single app has reached a useful saturation. I wish I were seeing the "viral spread" others see and don't really even care much about feature parity. :\

<comment><USER12> That's odd. Literally 95% of my friends are on Venmo, with the only holdouts being the people who refuse to grant account withdrawal permissions to a third party.

<comment><USER13> I don't like the "bucket" approach or Venmo's emphasis on linking to Facebook, so I don't have an account and use Square Cash or BofA transfers instead. I'm the exception though, I'd agree that the vast majority of my friends use it.

</comment></comment></comment><comment><USER14> For those who are older, Venmo is used today probably more than cash by college students (for things like paying a friend back, paying membership dues, paying to get into a party, etc.)

<comment><USER15> I'm weird but I feel like cash is superior for those applications and doesn't require me to hand my credit card number out to yet another company.

<comment><USER16> But it does require you to walk to the nearest ATM, withdraw the nearest round amount to the amount you need, then somehow try to get change from your friend (or just call it even) then walk around with the remainder.

I get what you're saying, but it isn't difficult to see why people find Venom a better option. What is exactly that bad about Venmo having your credit card number? You're protected from fraud anyway.

<comment><USER17> Write check, friend deposits with mobile check deposit app. Everyone has a bank of some sort, I have yet to meet anyone who is using Venmo.

<comment><USER18> It's friction. If you have two entities providing the same service (money exchange), but one is easy to use and one is much harder to use, the easier one will win (all other things being equal.

Check method:

      Needed items:
        Payer - checkbook, pen
        Payee - <USER4>

      Steps:
        Payer        Payee
        Write check
        Give check   Receive check
                     Sign check
                     Use app to photograph and submit check

Venmo method:

      Needed items:
        Payer - <USER4>
        Payee - <USER4>

      Steps:
        Payer            Payee
        Send $x to Payee

A similar occurrence in the financial field, mobile banking. Depositing checks via phone is easier than going to an ATM which was easier than making it to a physical branch of the right bank during business hours.

Cash is a better equivalence to Venmo, but only works when you're physically collocated. And then requires one or both parties to carry around cash (and it's not as easy to be precise, if you care about getting it right down to the penny).

<comment><USER17> How do you handle someone who won't install Venmo and sign up for their service? Not pay them back?

<comment><USER18> Switch back to cash, check or another transfer mechanism. Or have them buy the next round at the bar and call it good.

</comment></comment></comment></comment></comment></comment></comment><comment><USER19> I'm really surprised that Venmo started as an SMS service, not a mobile app. It blows me away that the product has been around for that long and evolved to the point that it's at now. Funnily enough this is also how Shazam started.

I think it really speaks to the execution aspect of a startup - be good at doing 1 thing, create a committed user base and then scale. According to the article Venmo's target audience was originally college kids who didn't have cash on hand to pay food trucks... Now they're doing $700mm in transactions.

</comment><comment><USER5> Question: does anyone know how/if Venmo makes money or is it just a loss- leader for Braintree/PayPal?

I use it for thousands of dollars of transactions a year but I have never paid a penny in fees or seen an ad. People claim that Venmo acts as a bank and invests my carried balance but I can't imagine that's lucrative enough to pay all the bills.

<comment><USER20> Venmo, I believe, invests the money it holds. This is why it takes 3 days to cash out.

<comment><USER5> I tend to get cashouts in 24h now.

</comment></comment></comment><comment><USER21> Something I find interesting about Venmo, Square cash etc... is how they target shortcomings in the US Banking system.

In the UK, pretty much anyone with a bank account can go to their bank's website and transfer money to any other bank account in the UK instantly, and for free.

Every bank has their own interface, some better than others, but it works well enough that I don't think Venmo could ever take off here.

</comment><comment><USER22> Venmo is one of my favorite services. A very simple and effective UI. I have been using it extensively since 2011 with a group of friends, and it's amazing how easy it make to split restaurant bills or any other kind of expense. I just wish more people were using it.

</comment><comment><USER23> It is spreading like a virus (in a good way) in corporate as well. We use it to pay each other for lunch. I now use it to pay my cleaning lady.... I'm glad to support something that isn't paypal. Hopefully Venmo stays small and lean.

<comment><USER24> PayPal owns Venmo.

<comment><USER5> I think the exact sequence of events was Braintree bought Venmo for ~$25M and then later PayPal bought Braintree.

</comment></comment></comment><comment><USER25> > It was riding the twitter wave in letting you interact with handles > (usernames) over SMS.

I'm curious, were any of these SMS service comparies successful _as_ interactive SMS services?

It seems like most of the services like Twitter, Venmo, etc. "started" as SMS services but quickly moved to apps once the iPhone appeared. And only then did they blow up. But maybe I'm wrong about that. What does Twitter/Venmo non- notification SMS usage look like today?

Are there any big/popular _interactive_ services today that are mainly accessed by SMS?

<comment><USER26> M-Pesa moved over a billion dollars by SMS in 2014.

</comment></comment><comment><USER27> _In summary- it's so awesome to see how they went from scrappy to a must-have product that does around $700mm in annual transactions._

Where is this from? Venmo should be doing much higher than this figure.

<comment><AUTHOR> My bad... fixed now. That was from a slate article last year. They are doing much more than that on a quarterly basis.

</comment></comment><comment><USER28> I'm so surprised that Venmo has not been acquired. You think someone like Paypal, Android Pay, or Apply Pay would buy them.

<comment><USER14> Venmo is owned by Paypal</comment></comment>


Show HN: Noric-bot – A bot to stress-test text-based MUDs, written in Scala 3 - <AUTHOR> https://github.com/ryanberckmans/noric-bot <comment><USER2> I was an admin (wiz) on various MUDs and MUSHs many, many years ago, and of course an avid user. The mix of programming, creativity, and camaraderie was sometimes very special. Maybe my recollections are clouded by nostalgia, but it sometimes felt like a hacker fantasy, coding, role-playing, and working together for good (fun). I wish I could recapture that feeling, I wish there were time for it, and I wish there were some way it would do good in real life.

I can't contribute anything directly about this bot, but I'm glad to see MUDs are still being studied. I feel like I never saw the full potential of what they could do for society. Some of the social interactions were much more rewarding than anything I have experienced on so-called "social" media.

<comment><USER3> If it were marketed correctly ("literary gaming" or something), I could see a modern variation of a MUD gaining some traction if it were browser based and styled up in way that's a little more accessible, with some other modern conveniences.

Kind of like how Discord and Slack are just a coat of contemporary Web-isms on top of the same old idea as IRC.

<comment><USER4> This seems to be the end goal of [https://writtenrealms.com/](https://writtenrealms.com/). A lot of time was spent making the UI responsive and work well on mobile resolutions!

</comment></comment></comment><comment><USER5> Well that's kinda cool. I didn't know there was a discord chat for mud coders. Also it appears there's a slack chat for mud coders as well [https://mudcoders.com](https://mudcoders.com)

Oh even cooler, there's a mud chat network so people can chat between muds: [https://grapevine.haus](https://grapevine.haus) (coded in elixir too!)

<comment><USER6> Grapevine is also open source if anyone wants to look under the hood at all that elixir! [https://github.com/oestrich/grapevine](https://github.com/oestrich/grapevine)

</comment></comment><comment><AUTHOR> If you like MUDs check out the new, excellent, and often-updated [https://www.titansoftext.com](https://www.titansoftext.com) podcast :-)

</comment><comment><USER7> Very cool! I'm working on a browser game using threejs and websockets. Its progenitor was a MUD that I wrote that I never felt was good enough to publish. Joined the discord and all else. :)

(Side note, maybe this will hit google for some poor sap in the future. Blender 2.8's GLTF/GLB exporter doesn't respect the armature modifier. Bake your weights if you want your ground tentacle to wiggle in your browser. :( )

</comment><comment><USER8> Doesn't look like this does anything clever/special; it just randomly spits a finite set of handwritten commands to the socket that the author's target MUD happens to accept.

Was hoping that this was something more like AFL for TCP clients, discovering all the commands the MUD supports, and through it, the entire state-space of the MUD's world-model.

<comment><AUTHOR> Fair enough. I try to spend as little time as possible on the bot and more time on the game itself :-)

The bot you describe sounds cool -- would love to see it!

<comment><USER9> How useful is this test tool to you? What bugs did you find or do you hope to find this way? How often and long do you run it?

I'm asking, because I guess, it probably takes ages to traverse some kind of dungeon. If there are special sequences, the tool will most likely never find them (like find key, open door, kill boss), right?

I've done some small games in my spare time, but Unit-Testing was either completely useless or way overkill. But I guess, the larger your game gets, the more important it will be.

But the the work involved is so huge, that I think it's not worth it for indy games or small studios. If you look at the test setup for AAA-Games, like League of Legends [1], the work involved is mind-blowing...

[1] [https://technology.riotgames.com/news/automated-testing- leag...](https://technology.riotgames.com/news/automated-testing-league- legends)

<comment><AUTHOR> noric-bot has been extremely useful as a test tool, if a bit narrow due to just spamming random cmds. To your point, the bot in its present form can't automatically run a dungeon or verify edge cases.

A previous version of the server codebase was written in ruby[1]. The playable branch of that repo has a combat demo that's a bit fun, however the performance is so terrible that I shelved the whole codebase years ago.

As a long-term vision I'd like to launch an indie MMORPG that supports at least 1,000 players per synchronous, single-threaded server. It's an item/equipment focused game. Each player may have hundreds of items with a total of thousands of affects. noric-bot helps me stay on track with that goal.

      What bugs did you find or do you hope to find this way?

The server is an actor-based "distributed system" using Akka. I only ever run it on one jvm but in theory it could be clustered. The bot helps find performance bottlenecks and actor-related edge cases.

The server runs at 4fps and Very Bad things happen if the 250ms frame time budget is routinely exceeded. The bots use a special password to spawn "fully loaded" player mobs with hundreds of items and ~1k affects. This helps me see bottlenecks like saving/persistence, I/O, Akka mailboxes growing, time spent processing player cmds vs moving the simulation forward naturally, etc.

Sometimes the bot will find logical bugs. This is usually in the context of assertions I've added that the bots will trigger.

I'll routinely write fake commands that bots will spam to execute scenarios that otherwise would be unreachable (if only due to lacking gameplay functionality at this early stage).

Often I'll just run the bots for fun and see how the game feels with a lot of other "players" running around :-)

[1] [https://github.com/ryanberckmans/NoricMud](https://github.com/ryanberckmans/NoricMud) ruby codebase

<comment><USER9> Wow, fascinating! Sounds like a huge undertaking.

Wish you good luck and fun, and hopefully we'll hear from your MMORPG again. Would love to read more about the technical challenges of your game. :)

<comment><AUTHOR> Thanks!

</comment></comment></comment></comment></comment></comment><comment><USER10> The author gushes over scala but completely neglects to mention scala.js :) (I sincerely hope he's seen it, since he seems to be a js dev). scala.js is right now the only way I use scala- after I dropped scala for backend.

</comment><comment><USER11> The CoffeeMUD MUD engine is very feature-full and nice (IMHO). It is written in Java, and has a web interface for most activity. You can get more info here: [http://www.coffeemud.org/](http://www.coffeemud.org/) There is also a Discord server at [https://discord.gg/HgDxtas..](https://discord.gg/HgDxtas..).

</comment><comment><USER12> I've always thought that building a MUD AI would be extremely fun, and a good test for language understanding and reinforcement learning.

Here are a couple of related papers in the deep learning space:

[https://arxiv.org/abs/1812.01628](https://arxiv.org/abs/1812.01628) [https://arxiv.org/abs/1903.03094](https://arxiv.org/abs/1903.03094)

</comment><comment><USER13> Scala does have some interesting applications for stress testing. I personally think that this project could have benefitted from the Akka Streams library. Akka Streams allow you gloss over thread creation while focusing on scheduling events to send to a sink. Pretty handy when you want to quickly spin up a rudimentary stress test tool.

</comment><comment><USER14> not quite related but ... any recommendation on a good open source mud? most of the projects I've tried have been very raw, or unmaintained. eg [https://ranviermud.com/](https://ranviermud.com/)

<comment><USER15> As the maintainer for Ranvier I'm curious as to which you consider it: very raw or unmaintained? :P

</comment></comment><comment><USER16> Cool project, but why engage in language flame war on the project readme:

> I think Scala is the best mainstream language with a sophisticated type > system. Sophisticated type systems are money in the bank. Going from > TypeScript to Scala is like going from JavaScript to TypeScript.

<comment><USER17> Not only that, accusing TypeScript of being "unsophisticated" is just dumb.

Unsound, inconsistent, overly complicated, poorly abstracted, improper paradigms.....any of those would be a more legitimate criticism than "unsophisticated".

<comment><USER18> Typescript is flawed, but it is a godsend compared to using straight JS. You can use it like Java until you can't. And then you are forced to muck around with JS hacks just to please the transpiler.

Usually that happens using generic types. They are almost completely worthless in Typescript, and have no analog whatsoever in JS. So you are mucking around just to please the transpiler but adding a type unsafe hack anyway in place of a generic argument.

Typescript should have just stuck with providing checks on type declarations. That's it. Stop adding features from Java/C# when they make no sense in JS.

I would pick another language in a heartbeat, given a choice.

<comment><USER19> TypeScript's type system is actually much _more_ expressive than Java or C#'s. You can't express OR types (sum types) like `string | number` nicely in those languages. It's the main thing that made me hate statically typed languages until I tried Rust (which also lets you express this).

<comment><USER18> Huh? You would just overload the method then in another language. That is a lot safer than manually checking the argument type inside the method with the hack you proposed.

You're right if by "more expressive" you meant "not really safe at all". By using the types of hacks you proposed, you end up losing type information and safety guarantees. So why bother using Typescript in the first place then? Your example is the perfect argument against Typescript.

If you were referring to generic types, then there's no good reason to do that in the first place. Use a base type. Polymorphism 101. Anything else would be duck typing, and not safe.

There's no middle ground with type safety: it is either safe or not. And if there's a chance it's not, then you've lost and all of your efforts are pointless without resorting to manual checks.

And if you were somehow referring to C++ like templating (unlikely), then Typescript doesn't support that anyway.

</comment></comment></comment></comment></comment><comment><USER20> > A bot to stress test text-based MMORPGs written in Scala 3.

A bot written in Scala 3 to stress test text-based MMORPGs.

Unless it only tests MMORPGs written in Scala....

<comment><AUTHOR> Thanks, updated.

</comment></comment><comment><USER21> Awesome! I'm going to have to check that out. I'm doing a human stress test on my mud project, Enceladus right now! There's over 25+ people in so far. It's the worlds first realtime crypto RPG, as in you can find ethereum in the game. Come help us test it!!

[https://discord.gg/S7TkGXX](https://discord.gg/S7TkGXX) or [http://enceladusgame.io/playtest](http://enceladusgame.io/playtest)

<comment><USER22> This is a pretty blatant advertisement, part of a larger pattern of what would be charitably called "aggressive self-promotion", and in fairly poor taste IMO. This comment had close to nothing to do with the subject of the parent post except the tenuous connection via the "MUD" keyword.

<comment><USER23> It's difficult to presume any circumstances other than this being a vehicle for the author(s) to collect cryptocurrency.

<comment><USER21> Author is actually making no cryptocurrency. But yeah, I see what you mean. I'm giving away a fair amount.</comment></comment></comment></comment>