Let's Encrypt, OAuth 2, and Kubernetes Ingress - <AUTHOR> https://eng.fromatob.com/post/2017/02/lets-encrypt-oauth-2-and-kubernetes-ingress/ <comment><USER2> Suggestion to anybody reading this: don't use a DaemonSet for this. This really ought to be a Deployment of nginx-ingress resources behind a service exposed as `type: LoadBalancer` (if you're in a cloud-provider that supports LoadBalancer services). Then just create DNS aliases and configure nginx to do session affinity if needed, etc. Not only will it be able to scale with your load instead of cluster size, but you can actually update it in a rolling update already; DaemonSets cannot yet do that.

Really the most important part, though, is that DaemonSets are for services that _need_ to run on each host. Like a log collection service [1] or prometheus node exporter [2].

[1] [https://github.com/kubernetes/kubernetes/tree/master/cluster...](https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/fluentd- elasticsearch)

[2] [https://github.com/prometheus/node_exporter](https://github.com/prometheus/node_exporter)

<comment><AUTHOR> So I (the author) am a bit torn on this - a `type: LoadBalancer` service will create a NodePort underneath (yet another internal loadbalancer) and map those ports to a $cloud-platform-tcp-loadbalancer. By using a DaemonSet with a host port bound, you avoid a layer of internal routing.

I'm not so sure if one approach is _particularly_ better than the other though.

<comment><USER2> As far as the routing layer, that's going to be a very small gain as it's all handled by the kernel via iptables anyway. What you give up by using a DaemonSet is a constant overhead for every single worker node that gets created. You have to set aside capacity for traffic you might not have.

A Deployment can be scaled by actual utilization of the pod, and in the near future (if not already) via custom metrics of your own design (e.g. prometheus).

So if you have to spin up 50 new nodes to handle some batch machine learning work, you're going to wastefully create 50 new nginx instances when there's no new ingress traffic to handle. With a deployment, it just scales naturally as needed. So it's not about the marginal gains, it's about using the right tool for the job. :-)

<comment><AUTHOR> Fair enough points :) I'll see about reworking the article, and our deployment a bit - keeping in mind that LoadBalancer services are platform dependent

</comment></comment></comment></comment><comment><USER3> It's worth noting that there is a discussion on GitHub [0] about building letsencrypt auto cert creation directly into ingress controller.

[0] [https://github.com/kubernetes/kubernetes/issues/19899](https://github.com/kubernetes/kubernetes/issues/19899)

</comment><comment><USER4> That's cool, I've done pretty much the same thing for our internal services. I noticed you use the github org for oauth2proxy.

In our setup, I wanted to add authentication to a few dozen sub domains, but use a single oauth2proxy instance. Github Oauth makes this kind of gross, the callback must point to the same subdomain you're trying to authenticate. But it does allow something like /oauth2/callback/route.to.this.instead

In the end, to achieve what I wanted (a single oauth2proxy for multiple internal services) I had to \- fork oauth2proxy and make a few small changes to the redirect-url implementation \- create a small service with takes oauth.acme.co/oauth2/callback/subdomain.acme.co and redirects to subdomain.acme.co to comply with GitHub' oauth requirements \- created a small reverse proxy in Go which does something similar to nginx_auth_request. I had a few specific reasons to do this (like proxying websockets and supporting JWT directly) [https://gist.github.com/groob/ea563ea1f3092449cd75eeb78213cd...](https://gist.github.com/groob/ea563ea1f3092449cd75eeb78213cd83)

I hope that someone ends up writing a k8s ingress controller specific to this use case.

<comment><USER5> Please check [https://github.com/kubernetes/ingress/pull/190](https://github.com/kubernetes/ingress/pull/190)

<comment><USER4> Very nice! I remember talking with you regarding some of this in k8s slack when I was trying to figure out how to wire it all up.

Thank you for all the work you do on the ingress project by the way.

</comment></comment></comment><comment><USER6> Note one significant gotcha with this approach: the Ingress does TLS termination, so the hop from the Ingress to your pod is unencrypted.

That might be OK if 1) your data isn's sensitive or 2) you're running on your own metal (and so you control the network), but in GKE your nodes are on Google's SDN, and so you're sending your traffic across their DCs in the clear.

There are a couple of pieces of hard-to-find config required to achieve TLS- to-the-pod with Ingress:

1) You need to enable ssl-passthrough on your nginx ingress; this is a simple annotation: [https://github.com/kubernetes/contrib/issues/1854](https://github.com/kubernetes/contrib/issues/1854). This will use nginx's streaming mode to route requests with SNI without terminating the TLS connection.

2) Now you'll need a way of getting your certs into the pod; kube-lego attaches the certs to the Ingress pod, which is not what you want for TLS-to- the-pod. [https://github.com/PalmStoneGames/kube-cert- manager/](https://github.com/PalmStoneGames/kube-cert-manager/) lets you do this in an automated way, by creating k8s secrets containing the letsencrypt certs.

3) Your pods will need an SSL proxy to terminate the TLS connection. I use a modified version of [https://github.com/GoogleCloudPlatform/nginx-ssl- proxy](https://github.com/GoogleCloudPlatform/nginx-ssl-proxy).

4) You'll want a way to dynamically create DNS entries; Mate is a good approach here. Note that once you enable automatic DNS names for your Services, then it becomes less important to share a single public IP using SNI. You can actually abandon the Ingress, and have Mate set up your generated DNS records to point to the Service's LoadBalancer IP.

(As an aside, if you stick with Nginx Ingress, you can connect it to the outside world using a Kubernetes loadbalancer, instead of having to use a Terraform LB; the (hard-to-find and fairly new) config flag for that is `publish-service` ([https://github.com/kubernetes/ingress/blob/master/core/pkg/i...](https://github.com/kubernetes/ingress/blob/master/core/pkg/ingress/controller/launch.go#L49)).

<comment><USER7> I wonder how much of a vulnerability that really is. The SDN encapsulates everything and is supposedly IP-spoofing-secure, so in principle there's no way for anyone else in the same DC to get your traffic.

Of course, you could have a local attacker get in through other means, and then access local DC traffic within your SDN. But if you get to that point, you probably have bigger problem than terminating SSL.

<comment><USER6> Your main attack vectors are:

1) A disgruntled employee sets up a surreptitious tap on the network to see if any secret material comes through. A high value target would be `Authorization: Bearer` in HTTP headers, but there are plenty of other things to slurp up.

2) A normally honest employee running an unrelated network tap to diagnose an issue with the SDN spots your Authorization headers (or other secrets), and knowing that they have a legitimate reason to have the wire capture, copies out the key material. This is very hard to prevent, since network admins can and should be tapping the network from time to time.

I'm not particularly concerned about someone from outside Google breaking into the SDN fabric, though a hypervisor breach could leak network traffic from other tenants on your instance (if you are sharing).

</comment></comment></comment><comment><USER8> Make sure to use an HPA and set up resource constraints on that ingress controller pod. Unbounded resource utilization may bite you in the a$$.

[https://kubernetes.io/docs/user-guide/horizontal-pod- autosca...](https://kubernetes.io/docs/user-guide/horizontal-pod-autoscaling/)

Also, you may have redacted it but you don't appear to be adding a service with a static IP:

spec: loadBalancerIP: 220.127.116.11

Not having a global static IP for publicly accessible resources seems risky for uptime.

We've gone away from using ingress controllers and using services with static IPs + HPAs on nginx pods for this reason. Having to add a service + ingress controller adds complexity and doesn't really add value (IMO) since you can easily add nginx.conf as a ConfgMap and get the same ease of configuration as an ingress controller. Your mileage may vary with let's encrypt integrations.

</comment><comment><USER9> This is a really great post, excited to give the OAuth 2 auth a try.

FWIW, an easier way to get started with the NGINX Ingress and kube-lego services is using the official Helm[1] Charts for them ([https://github.com/kubernetes/charts/tree/master/stable/ngin...](https://github.com/kubernetes/charts/tree/master/stable/nginx- ingress) and [https://github.com/kubernetes/charts/tree/master/stable/kube...](https://github.com/kubernetes/charts/tree/master/stable/kube- lego)).

[1] [https://github.com/kubernetes/helm](https://github.com/kubernetes/helm)

</comment><comment><USER10> That's impressive but also quite some effort. Feels like premature optimization when looking at the (rather low) traffic of fromAtoB. On the other side, it's always good to have a scalable deployment when dealing with RoR apps.

</comment><comment><USER11> >On GCP, the HTTP load balancers do not support TLS-SNI, which means you need a new frontend IP address per SSL certificate you have. For internal services, this is a pain, as you cannot point a wildcard DNS entry to a single IP, like * .fromatob.com and then have everything just work.

Wouldn't a wildcard SSL cert + wildcard DNS entry work even without SNI support here? I haven't used the GCP load balancer, but as long as you are serving a single certificate (* .fromatob.com), the client/server don't have to rely on SNI at all.

</comment><comment><USER12> Question for the author: We just migrated some stuff to GCP as well but do not use kubernetes. For managing infrasructure we only use packer, bash, and google cloud deployment yaml files (similar to the kubernetes manifest).

Why do you still need saltstack and how do you find terraform? Why do you need terraform (I suppose it is for your non kubernetes infrastructure?)?

<comment><AUTHOR> For the moment at least, it's much more comfortable for us to keep our databases outside of kubernetes, so we use saltstack(masterless), packer, and terraform to manage them. We also use terraform to manage all of our DNS, which is split between Route53 and the GCP DNS service.

<comment><USER12> Thanks! I have been meaning to give terraform a try to replace some of our custom gcloud + gcloud deployment descriptors. Also so that we don't need a separate docker compose version for development (I'm assuming in theory you can run terraform to do what docker compose does?).

<comment><USER13> > Also so that we don't need a separate docker compose version for development > (I'm assuming in theory you can run terraform to do what docker compose > does?).

Not really. Terraform is much more meant as a tool for manipulating production infrastructure (primarily clouds), not for orchestrating Docker containers (including locally).

I'd strongly recommend you use the right tool for the job and it's a very rare job where Terraform is a good alternative to docker-compose.

</comment></comment></comment></comment><comment><USER14> Discovered kube-lego via Google a few weeks ago and I am really excited to try it with my next product. Thanks for this post.</comment>


Progress In Algorithms Beats Moore's Law - <AUTHOR> http://agtb.wordpress.com/2010/12/23/progress-in-algorithms-beats-moore%E2%80%99s-law/

<comment><USER2> I'm a fan of Proebsting's Law:

 _Proebsting's Law: Compiler Advances Double Computing Power Every 18 Years

I claim the following simple experiment supports this depressing claim. Run your favorite set of benchmarks with your favorite state-of-the-art optimizing compiler. Run the benchmarks both with and without optimizations enabled. The ratio of of those numbers represents the entirety of the contribution of compiler optimizations to speeding up those benchmarks. Let's assume that this ratio is about 4X for typical real-world applications, and let's further assume that compiler optimization work has been going on for about 36 years. These assumptions lead to the conclusion that compiler optimization advances double computing power every 18 years. QED.

This means that while hardware computing horsepower increases at roughly 60%/year, compiler optimizations contribute only 4%. Basically, compiler optimization work makes only marginal contributions._

</comment><comment><USER3> Moore's Law doesn't just bring processor speed, but also vast quantities of RAM. How much of the improvement credited to algorithms came from newly- affordable time/space tradeoffs brought by Moore's Law? I like the question this post is raising, but would like to see it approached in a more careful manner.

<comment><USER4> Also with more RAM, more and more datasets are fitting in memory. You can have all of Wikipedia in memory on a machine that costs as much as a Venti Latte per day.

</comment></comment><comment><USER5> Perhaps Moore's law is a consequence of people's ability to design algorithms. Hardware design needs similar resources of the mind. Circuit routing, simulations, benchmarking, design re-use, HDL code bases ( <http://en.wikipedia.org/wiki/Hardware_description_language> )...

<comment><USER6> Digging deeper, you will hit the characteristic comparative pattern of platonic and the physical. Chips are build using matter and the limiting factors are ultimately physical. Algorithms are embodied on physical machines, but the bottlenecks are primarily conceptual. In that sense, the takeaway from this for me is a verification of the intuition that conceptual models offer greater degrees of freedom. (duh.)

</comment></comment><comment><USER7> This is really interesting, since a lot of the fundamental algorithms you learn about in school (sorting, Dijkstra's, etc.) haven't been improved for decades, and in some cases are even theoretically impossible to improve. What kinds of algorithms _have_ steadily improved over time?

<comment><USER8> > What kinds of algorithms have steadily improved over time?

What? are you requesting evidence for their claim? How dare you!</comment></comment>


27000 errors in the Tizen operating system - <AUTHOR> https://www.viva64.com/en/b/0519/ <comment><USER3> This sounds so familiar. Some 6 years ago, I joined a team of engineers developing a large (1.5M LOC) classic java/spring/hibernate application for administration in higher education. The software was buggy and loads of time was wasted on bug-fixing, so I introduced the Findbugs static analysis package. Result: >6000 (suspected) bugs. It took a couple of days of blunt perseverance of the whole team to clean up the mess and bring it back to normal proportions, but the result was a stable, well-functioning system.

If you have static analysis tools available and you're writing a larger application (more than 10k LOC), and intend to maintain it for longer than a couple of months, it is definitely worth the initial investment. Better than static analysis, is static typing in a language with an expressive type- system, such as Scala. You simply cannot have NPEs with Option types.

tldr; Used static analysis on 1.5M LOC codebase to reduce bugginess tremendously. Use of static analysis and statically typed languages is adviced.

<comment><USER4> The first time we ran static analysis on the C++ code base of a specific project, it found ~20 minor issues and a couple of medium severity ones which were mitigated by other checks. However, we also used 3rd-party open source C libraries, where it found thousands of problems. I'm talking about serious issues, memory leaks, invalid memory access, etc.

P.S: I hope Scala implemented optional types better than Java, where the optional types themselves are nullable :)

<comment><USER3> Well, technically you could write `val opt: Option[Int] = null`, but I've never seen it used and would seriously consider sending the author back to a course Scala for Dummies.

It's interesting how many bugs can be found by static analysis. The problem with C and C++ is that the domain of 'normal' operations is much larger than Java, leading to more false positives in static analysis and/or less true positives.

</comment></comment></comment><comment><USER5> With Samsung's android record, why would anyone want more Samsung written code on their phone?

I had a nexus 5, reliable, reasonably fast, snappy under most normal usage patterns.

I wanted a SD card and wireless charging so I upgraded to a note 4. 50% more ram, faster cpu, faster GPU etc. Felt way slower, and crashed fairly often. Annoyingly the home button was quite sluggish. Even more annoying is despite 50% more ram it was very aggressive in killing background apps, making multitasking almost useless. So whenever you switched apps it would have to restart the app, MUCH more so than my nexus 5. I tracked it down and apparently it's some benchmark optimization. Android updates (security or otherwise) were quite rare and was about a year behind on the android releases.

I switched the note 4 to cyanogen. The phone was much snappier, much more consistent (no random lag), and stopped crashing. Oh and the home button was much quicker as well.

<comment><USER6> I had a similar experience with a Samsung Galaxy S4, which would run out of battery life in under 5 hours on any given day, and which was dropped for major updates after two versions. Switching to Cyanogenmod, even the _nightly_ version extended battery life to ~9 hours, and greatly improved performance. It also allowed access to the next version of Android, and native skinning and easy customization (with a literal toggle in the dev settings for root).

In short, I highly recommend upgrading any old hardware you have to Lineage OS (Cyanogenmod continued).

</comment></comment><comment><USER7> Every time I see a PVS-Studio article I wonder how many errors are caught by the compiler itself. In my experience, things like the same expression on both sides of a less-than sign, returned pointers to local variables, are caught by -Wall -Wextra in GCC or LLVM.

If they're not building with -Wall -Wextra -Werror, are they really going to make use of PVS-Studio's output?

(Also, as a member of the Rust Evangelism Strike Force, I am obligated to point out that a lot of errors PVS-Studio catches are just straight-up not possible in Rust. In order to avoid getting too off-topic here, here's a comment I made on Reddit on a similar post from PVS-Studio about two years ago: [https://www.reddit.com/comments/3aehq5//cscj2w5/](https://www.reddit.com/comments/3aehq5//cscj2w5/))

<comment><USER8> > If they're not building with -Wall -Wextra -Werror, are they really going to > make use of PVS-Studio's output?

This is very likely. Do not forget that the static analyzer is not just a warning. This is also the infrastructure.

For example, PVS-Studio is:

\- Saving and loading analysis results allow doing overnight checks - <USER2> the night the analyzer does the scanning and provides you with the results in the morning.

\- Interactive filtering of the analysis results (the log file) in the PVS- Studio window: by the diagnostic number, file name, the keyword in the text of the diagnostic.

\- BlameNotifier utility. The tool allows you to send e-mail notifications to the developers about bugs that PVS-Studio found during a night run.

\- Mass Suppression - ability to suppress all old messages raised for the legacy code, so that the analyzer reports 0 warnings. You can always go back to the suppressed messages later. This feature allows you to seamlessly integrate PVS-Studio into your development process and focus on errors found in new code only. Details: [https://www.viva64.com/en/m/0032/](https://www.viva64.com/en/m/0032/)

\- Relative paths in report files to view them on different machines.

\- CLMonitoring feature allows analyzing the projects that have no Visual Studio files (.sln/.vcxproj); in case the CLMonitoring functionality is not enough, there is a possibility to integrate PVS-Studio in a Makefile-based build system manually.

\- pvs-studio-analyzer - a utility similar to CLMonitoring, but working under Linux.

\- Possibility to exclude files from the analysis by name, folder or mask; to run the analysis on the files modified during the last N days.

\- Integration with SonarQube. It is an open source platform, designed for continuous analysis and measurement of code quality.

\- and so on

<comment><USER9> I don't remember reading about any of that even though I am a regular reader of your "checked projects" series. All of the relevant information on your web site is hidden in some wall of text. Please consider hiring someone who knows how to sell something.

<comment><USER10> It isn't hidden, really. I followed the hyperlink at the top to the main page of the site, and the bullet-point list that you are responding to is right there, on that very first page. It is under a heading entitled _Main Features of PVS-Studio_.

* [https://www.viva64.com/en/pvs-studio/](https://www.viva64.com/en/pvs-studio/)

<comment><USER9> "Main Features of PVS-Studio" is one of those walls of text that I meant.

</comment></comment></comment></comment></comment><comment><USER11> Relevant:

[http://appleinsider.com/articles/17/04/05/researcher- calls-s...](http://appleinsider.com/articles/17/04/05/researcher-calls- samsungs-tizen-os-the-worst-code-ive-ever-seen)

[https://arstechnica.com/gadgets/2017/04/samsungs-tizen-is- ri...](https://arstechnica.com/gadgets/2017/04/samsungs-tizen-is-riddled-with- security-flaws-amateurishly-written/)

</comment><comment><USER12> The number of errors seem like pylint giving me errors. Some of them were like a is not a valid variable name. Maybe the numbers are like that. (Pylint that is not configured sanely/with default config really gives you thousands of errors and warnings for a fairly large code base and some of them were not errors but coding style.)

The numbers here may also be something like that. Nice blog post, may even make developers adopt something like cppcheck but most guys won't buy this.

<comment><USER13> It's a lot like that. PVS-Studio ran against FreeBSD and produced a ton of false positives.

<comment><USER14> Running any sufficiently advanced static analyzer on any large codebase will generate a ton of false positives.

<comment><USER13> So what? Qualitatively, it feels like PVS-Studio's false positive rate is higher than Coverity. And far higher than a modern free compiler's -Wall.

To describe the 27,000 detections as errors is a little misleading, and I think that's what the grandparent post is discussing.

<comment><USER8> This is not the way you think and it is not nice to mislead people. It all depends on the project.

I've heard people who said that Coverity gives many false positives and Cppcheck gives few. I've heard the opposite, that it is impossible to use Cppcheck because of the huge number of false positives, but Coverity is doing great. I heard that Coverity gives more false positives than PVS-Studio. And vice versa. And so on and so forth. What is the reason for such differences?

Projects have their certain styles of writing and different kinds of macros. These are macros and peculiarities of style that become the main source of false positives. This is why the first impression of using the analyzers of code depends on luck, and not on the coolness of the analyzer. If the analyzer doesn't like a self-made my_assert() it will issue 10000 false positives.

So there is no point in talking abstractly about the number of false positives. Yes, you can not get lucky and there can be a lot of false positives. However, the static code analyzers allow you to configure them. In articles I have showed many times that the simplest configuration of the analyzer can greatly reduce the number of false positives. Example: [https://www.viva64.com/en/b/0496/#ID0ENNAC](https://www.viva64.com/en/b/0496/#ID0ENNAC)

</comment></comment></comment></comment></comment><comment><USER15> > As you can see, the calculations are absolutely fair and transparent.

...if you can grant them the premise that the 3.3% sampled represents the project as a whole so that the ratio will project out to 27k overall.

<comment><USER16> Sampling 3.3% of lines in a 72 million line codebase, especially across so many sub projects, is statistically significant enough to make claims like this with decent certainty.

That's a few million sample lines tested.

<comment><USER17> Oh... We can ask about way sub projects were selected, and are they can be called a representative sample.

Nevertheless I agree with you: there are no obvious way to do a better estimation, so words "fair" and "transparent" seem right in place there. Of course only if Karpov does not try to mislead his readers deliberately by choosing sub projects by some criterion that correlates with error rate.

</comment></comment></comment><comment><USER18> The mere mention of EFL brought this article back to my mind: [https://what.thedailywtf.com/topic/15001/enlightened](https://what.thedailywtf.com/topic/15001/enlightened)

The author makes no names but ends the article with "[...] did I mention EFL is the basis of all applications on Tizen?".

I don't know whether EFL is still the base for all applications on Tizen (I think they changed technologies several times, they are now on .NET?) but that, plus the SDK churn and Samsung reputation of generally low software quality and severe security issues don't really instill confidence in the platform.

<comment><USER19> I've read a lot of Tizen code, and EFL is by far one of the more professional and well-engineered components. And this is realizing that in relation to many open-source libs EFL is rather a goofy oddball.

95% of Tizen is a huge hairball of needless nested and overlapping indirections (custom IPC layers, serialization formats, "management" daemons, libraries to interface with them, etc.) implemented in varying (except for the pervasive messiness and broken english) C styles; deep beneath all this you have the open-source libraries doing the actual useful work. You could try to make some similar claims about Android, but the percentage would be much lower and the code quality is much higher. I wish I had some real metric to point at (maybe this article suffices?) but the code in Tizen is truly awful.

Also they don't give a shit about their bug tracker; I've had system-breaking bugs, with patches, in "new" status for over a year. Because I don't work at Samsung, I can't contribute.

</comment></comment><comment><USER20> I'm dreaming of a language which prevents bugs a priori so that there is no need for static analysis. I know Rust is out there, but I'm not sure if all state of the art knowledge is getting into the language specification. Is there some programming language geek here which could confirm that this is the case and all safety features (except these with non-optional run-time trade offs) of Ada are included?

</comment><comment><USER21> Samsung doesn't have a brilliant track record for security...

<comment><USER22> And yet they want to be the go-to IOT company... kind of scary.

<comment><USER23> Security is invisible.

</comment></comment></comment><comment><USER8> Continue. Exploring Microoptimizations Using Tizen Code as an Example - [https://www.viva64.com/en/b/0520/](https://www.viva64.com/en/b/0520/)

</comment><comment><USER24> Those alloca issues are a real concern! Especially given the fact that there's no way of knowing with any certainty that it has failed, as if it fails then it's not specified what behaviour will occur.

<comment><USER25> The first alloca (alloc in a loop) is in a test, which makes it less concerning IME.

The second (free() of a stack pointer), oof. Depending on the malloc implementation, you'll get a noop, a crash, an abort, a warning to stderr, or worst of all silent munge of stack vars.

<comment><USER24> Yeah, but you also don't want to allocate too many of these and smash the stack.

</comment></comment></comment><comment><USER26> I will never buy a Samsung product that includes software written by them. They simply don't care about quality.

<comment><USER27> Do any Samsung products not contain software written by them?

</comment></comment><comment><USER8> Tizen: Summing Up - [https://www.viva64.com/en/b/0522/](https://www.viva64.com/en/b/0522/)

</comment><comment><USER28> are there similar security analyses of android OS source?

</comment><comment><USER29> [https://sonarcloud.io/projects?sort=-analysis_date](https://sonarcloud.io/projects?sort=-analysis_date)

</comment><comment><USER30> It's on my "smart TV" and there's a 50/50 chance that when I turn on the TV it crashes. On the plus side it's helping me stop watching so much TV.

<comment><USER31> This sort of thing is exactly why I'm very unwilling to buy a smart tv. It's getting harder to find decent dumb ones, though.

<comment><USER32> Why not just get a big computer screen?

<comment><USER31> Nobody makes an acceptably priced 40-50" computer screen that I can put in my living room.

<comment><USER33> Dunno, Iiyama has a decent 40" 4k for 400-500€ that does the job for me.

<comment><USER34> I need almost double that size unless I want to watch TV like a peasant....

</comment></comment></comment></comment></comment></comment><comment><USER35> We can PVS-Studio against FreeRADIUS. It found things which were missed by Coverity, clang analyzer, and cppcheck. Sadly, they don't respond to my queries about _paying_ for it.

[http://freeradius.org/security/pvs- studio.html](http://freeradius.org/security/pvs-studio.html)

</comment><comment><USER9> Yes, PVS-Studio is very good and useful for avoiding bugs.

No, companies don't really care about avoiding bugs. No one at Samsung will risk delaying the release of the next plastic crap product by fixing any problems. Why would they? Defects will even encourage customers to buy a new device because they are used to getting no bug fix updates. This is the worst possible company for Viva64 to go to.

It seems like C++ developers either don't give a shit about code quality or they do, and don't make many mistakes anymore. Either way there is little demand for a static analyzer. It won't get easier for Viva64 in the future. A few years ago, Compilers and IDEs started providing similar warnings as PVS- Studio, although not quite as sophisticated yet. Code-level testing begins to be a thing in proprietary software. Clang offers valgrind-like sanitizers for different classes of bugs that even PVS-Studio cannot detect.

TIL that Viva64 has over 20 employees. The passive-aggressive blog posts always made it look like one or two people running PVS-Studio as a side project or so. I read those posts regularly, but I don't remember them announcing any new features or improvements in PVS-Studio itself. Why do I have to pay annually if they don't spend the money on improving the product?

I am not even sure if PVS-Studio is worth the money. They don't have prices on the web site and defend their business decisions in the FAQ ([https://www.viva64.com/en/order-faq/](https://www.viva64.com/en/order-faq/)) in a very unprofessional way. After reading that it feels like I might get ripped off.

<comment><USER8> > They don't have prices on the web site

This is standard practice. PVS-Studio is a B2B solution. There are many details to be discussed.

For individual developers we propose the following: "How to use PVS-Studio for Free" \- [https://www.viva64.com/en/b/0457/](https://www.viva64.com/en/b/0457/)

And "Handing out PVS-Studio Analyzer Licenses to Security Experts" \- [https://www.viva64.com/en/b/0510/](https://www.viva64.com/en/b/0510/)

<comment><USER9> "How to use PVS-Studio for Free" is ridiculous.

"Handing out PVS-Studio Analyzer Licenses to Security Experts" \- sorry, tl;dr</comment></comment></comment>


Biologists' Clever Way to Detect Animals They Can't Find - <AUTHOR> http://nautil.us/blog/biologists-clever-way-to-detect-animals-they-cant-find

<comment><USER2> Wow, this is a really terrific idea... I loooove it!.</comment>


Is Bitcoin surge driven by paid-publicity (similar to US election story)? - <AUTHOR> Help me understand why this strategy would fail.
Let's assume I got 100M$ with me.
Step 1: Purchase 70M$ worth of bitcoins.
Step 2: Spend 30M$ marketing bitcoins as the next big thing
Given that bitcoin is a pretty good product, the additional marketing would help convince people to invest in it.
Step 3: Convince 1000 other 100M$+ net-worth individuals to do this.
Step 4: Let it surge. Wait till the combined worth of 1000 investments above is <30% of the market. Pull out.
At this point there is about 30B$ of marketing budget. 3 times of what Samsung spent on marketing in 2016.
Fake news, facebook & twitter ads that influenced US elections proved that it's possible to do something like this. At this point, it's worth mentioning that 'Bitcoin is a great product' unlike the former case.
Doing above is possible with any public stock but it's probably illegal. With Bitcoin I am assuming there is no such check.
So what's stopping people from doing this?
Anyone else thinks this is how it's happening already?
Related article:
[1000 people own 40% of the market]
https://www.bloomberg.com/news/articles/2017-12-08/the-bitcoin-whales-1-000-people-who-own-40-percent-of-the-market <comment><USER2> Why pay for the marketing when every major news outlet in the country will continually cover the story as the price continues to rise wildly and as major financial institutions get invested?

I run multiple browser plugins to block ads on my browser, but has anyone actually seen Facebook, et al ads for cryptocurrency?

<comment><USER3> > _Why pay for the marketing when every major news outlet in the country will > continually cover the story_

Marketing includes convincing news outlets to actually run that story as opposed to other stories: [http://www.paulgraham.com/submarine.html](http://www.paulgraham.com/submarine.html)

</comment></comment><comment><USER4> If you can convince 1000 people to invest $100M each with just $30M in advertising, you're some kind of marketing Einstein of our generation.

<comment><AUTHOR> I actually did not mean to spend that 30M$ to get 1000 others. But yeah how do I convince 1000 others to invest 100M$ into this is a valid question.

If I am the one with $100M, I will likely have enough connections to start the ball rolling.

<comment><USER5> So you want to convince 1000 people to invest $100 million and spend 0 advertising on doing that.

That would be Einstein's Einstein. If you can convince 1000 people with 100 Million to do anything, you could accomplish ANYTHING.

Your plan is basically to create the ILLUMINATI, but instead of having it be a small circle of individuals, it would be the size of an army.

</comment></comment></comment><comment><USER6> In financial markets this is called a pump and dump scheme. It is illegal for regulated assets (see Wolf of Wall Street). However as Bitcoin is unregulated there is nothing stopping this from happening (yet).

</comment><comment><USER7> You may want to just accept the fact that Bitcoin is valuable because of what it offers as a store of value and system of trustless, censorship resistant exchange of value.

<comment><USER8> It's definitely not all of those when >= 51% of the mining power is in the PRC.

<comment><USER7> Miners actually have a lot less power than people realize. Anyone can run their own fully-validating Bitcoin node. Miners do indeed mine the blocks, but _all_ nodes perform verification. If miners try to mine invalid blocks, Bitcoin nodes will simply reject them.

<comment><USER3> What do you mean by "invalid"? My impression is that if you control 51% of the mining power and have at least some amount of control over the physical network path to your victim (e.g., ability to inject RST packets), you can execute double-spend attacks.

Are double-spend attacks not a concern?

If they are not a concern, why do we need so much computational capacity for mining?

</comment></comment></comment></comment><comment><USER9> For the majority of the population I'm willing to bet that immediately family is the only place they'll take financial advise, thus the thanksgiving holiday bump.

People went home for thanksgiving and told their families about the 700%+ gains that bitcoin made over the year. That's where the pump began, it's gone viral since. Memes, trending, hashtags are raging over bitcoin.

</comment><comment><USER10> Fear and greed at work. They have driven many other other markets in the stratosphere in the past. Study history and what happens after :)

</comment><comment><USER11> There is almost definitely rampant sockpuppetry in the bitcoin community.

One question I've been interested in: is there a way to trick algo traders into buying an altcoin? Perhaps by spamming twitter and Reddit with positive sentiment text about that altcoin?

<comment><AUTHOR> Those algos, ideally should weigh the twitter handle. Or else it's a stupid algo.

One need to spam through authoritative handles.

Pretty much like tricking google ranking algorithm with site-farms and fake backlinks. But hey, a lot of people were able to do this before Google started to improve its algo.

<comment><USER11> Twitter can't even tell the difference between an "authoritative" account and whatever the opposite is.

If any bots are scraping twitter for altcoin signals, I would be pretty surprised if there were any checks other than num followers / join date / etc. Determining if a twitter account is a bot, even with minimal certainty, is NOT an easy project. And many of these crypto traders are not exactly John Carmack either.

</comment></comment></comment><comment><USER12> I have noticed this phenomenon called Sell the News. Once the future contracts are out, there will be nothing new to look forward to and price will dip. That is still a few days off, who knows what will happen till then.

<comment><USER13> Why with futures there will be nothing new to look forward to?

</comment></comment><comment><USER14> Well the assumption here is that general public or the dumb money can actually create a rally which increases in multiple of 1000s.

This is possible and does happen in penny stocks where stocks go from couple of cents to couple of dollars or maybe in 100s. But, in 1k or even 10ks? I seriously doubt it.....Unless there is a story behind the volume and there is some _serious_ round trip trading going on: [https://www.investopedia.com/terms/r/round- triptrades.asp](https://www.investopedia.com/terms/r/round-triptrades.asp)

<comment><USER15> It's called market making. Happens on all exchanges. Without them there won't be liquidity.

<comment><USER16> Huh? OP is describing appreciation, which has nothing to do with market making.

</comment></comment></comment><comment><USER17> [https://qz.com/1149772/the-murky-relationship-between- bitfin...](https://qz.com/1149772/the-murky-relationship-between-bitfinex-and- tether-is-raising-suspicions/)

Tether is printed out of thin air and used to buy BTC. Right now nobody calls to convert Tether back to USD so the con can continue. (to be confirmed whether this is the major factor in the BTC bubble)

</comment><comment><USER18> The thing is 1000 people don't necessarily own 40% of the market - it's 1000 addresses. Many of those addresses likely belong to exchanges and hold multiple users wallets.

</comment><comment><USER19> At this point, I can't imagine this isn't a pump and dump. There are a lot of people who have spent a lot of time trying to figure out how to do a pump and dump without getting tripped up on regulation.

There may not be a single bad-actor, but rather a bad-actor friendly environment making this inevitable.

When everyone else is greedy, be scared.

</comment><comment><USER20> > Fake news, facebook & twitter ads that influenced US elections proved that > it's possible to do something like this.

Why is it treated like some sort of revelation that the media influences elections, Russians notwithstanding.

<comment><USER21> People are desperate for a scape goat after getting their egos thoroughly tied up in a terrible election.

</comment></comment><comment><USER22> People who are new to Bitcoin don't realize that there has been a growing grass roots movement to promote Bitcoin all over the world for years.

I realize that it may seem to have come out of nowhere, but the recent popularity is the culmination of years of hard work by people who are genuinely excited about it.

</comment><comment><USER23> also known as the bitcoin pump-and-pump

</comment><comment><USER24> bitcoin trended on r/all @ 10k, that's why the surge

</comment><comment><USER25> dump and bump

</comment><comment><USER26> > Fake news, facebook & twitter ads that influenced US elections proved that > it's possible to do something like this.

but Hillary lost.

Facebook has identified $100,000 of ads that came from accounts associated with Russia.

Clinton and Trump combined spent $81 million on Facebook. [1]

[1] [https://techcrunch.com/2017/11/01/russian-facebook-ad- spend/](https://techcrunch.com/2017/11/01/russian-facebook-ad-spend/)

<comment><USER27> I think it's a mistake to equate ad spend with ad effectiveness.

Russia only needs to sow discord, they don't need to follow you through the entire election season like Hillary does. A few targeted ads here and there are all that's needed to compound their other efforts across the web.

<comment><USER28> Signals and noise are coming from every direction at much greater orders of magnitude during an election cycle. If her campaign was so weak that a little "discord" killed it then she already lost on her own.

</comment></comment></comment><comment><USER29> Why does crashing the market make sense if it's a good product?

<comment><USER30> A good product for what, exactly? Fast, decentralized, small monetary transactions? Because right now BTC is pretty awful at that.

<comment><USER31> >A good product for what, exactly?

Since its inception it's an exceptionally good store of value over the medium to long term.

<comment><USER32> Not quite. Bitcoin has been an excellent bet. The economic notion of "store of value" requires stability, but Bitcoin is definitely not stable. Just today it fell 10%, and nobody would be surprised if it were to drastically exceed its previous peak next week.

<comment><USER33> > nobody would be surprised if it were to drastically exceed its previous peak > next week.

Apparently CBOE would be somewhat to very surprised.</comment></comment></comment></comment></comment>


How to set up an Ubuntu server as a spamfilter  - <AUTHOR> http://www.howtoforge.com/the-perfect-spamsnake-ubuntu-jaunty-jackalope

<comment><USER2> Flagged for _even more_ howtoforge-spam.</comment>


Ask HN: What API do you wish you had while building your product? - <AUTHOR> <comment><USER2> Product information. Things like "The mainboard named XY from producer ABC has the manufacturer sku 1234567, the EAN-13 00123... and the UPC 01234...". Ideally add to that the custom specs, like "it has that many usb slots and this socket" etc.

But I think I miss part of the picture here, there is probably a channel transmitting structured information like this from manufacturers to vendors, I just never found it.

<comment><USER3> My startup Semantics3 works on this problem - [https://semantics3.com/](https://semantics3.com/)

We have a standardized taxonomy and ontology to which we map all our products to. It's a garbage in garbage out problem but as long as the product has the information in some sort of semi-structured or unstructured form, we typically can infer attributes and standardize them based on their ontology (i.e. They have 4 USB ports)

<comment><USER2> Hey, that did not work out at all. So, like said in the other comment, there are no pricing information I could find. Then you say "14 day free demo", but I got an email saying the free trial ended two days after registering. The UI says "add a credit card and let us know" when checking on how to pay/prolongue the trial, but does not actually show the price. I asked for pricing via your chat window thing, and got no response.

I certainly won't add a credit card to a service that does nor show me pricing information.

Guys, I get that the enterprise market is comfortable and the usual target for this kind of thing, but if you don't want to bother with startups/developers, why do you market to them on your website and by answering here? You are completely unuseable like that. Hiding pricing information to sell overpriced services to big enterprices that just don't care is completely unacceptable for everyone else.

<comment><USER3> Shoot. My apologies about any confusion on the sign up process. I have reached out to you on email.

</comment></comment></comment></comment><comment><USER4> An API for handling image processing/uploading to S3:

Use 1: Send a high-res image in any format (like, say, tiff), the original, a web-optimal jpg at full resolution, and any sizes that might be needed in various contexts (thumbnail, inline display at any screen density) are put into the right place in my S3 bucket.

Use 2: Using ids or original file names, point the API to an image or array of images, uploaded via Use 1, and give it a set of dimensions/conditions, and have it return links to the correct images for me.

<comment><USER5> We've had an excellent experience with [http://cloudinary.com/](http://cloudinary.com/) for pretty much what you describe.

<comment><USER6> as a consultant, I picked up cloudinary for a client, promised "75,000 Total Images & Videos" then a team of four people used the free data shortly, they contact us saying to either pay $44 per month or shutdown, why? we are over free bandwidth...

relocated a developer to spent some hours writing a restful services, now paying ~$0.030 per GB

<comment><USER7> > why? we are over free bandwidth...

I don't have any experience with cloudinary, but to be fair, their pricing table mentions each plan's limitations pretty clearly. Is it really their fault that you underestimated the customer's requirements?

</comment></comment></comment></comment><comment><USER8> Reddit/HN like forum as an API. I want a forum for my site, using my own templates and integrated into my app, but without having to code the forum myself. What buttercms does for blogs, but for forums.

<comment><USER9> Discourse has an API: [http://docs.discourse.org/](http://docs.discourse.org/)

<comment><USER10> Would you really describe Discourse as "Reddit/HN like" though?

</comment></comment></comment><comment><USER11> A webhook or something that would tell me when a phone number changes owner.

I.e.: when we bill someone weekly for something and then the phone number changes owner we want to stop immediately.

Same if you send sms-es that you don't want delivered to anyone but the intended recipient.

<comment><USER12> I can understand the positive uses for such an API. For the uses you mentioned it would be great.

However, I hope nothing like that is ever made! It would get abused to no end. I've personally changed number multiple times for privacy reasons.

<comment><USER11> I see your point but as long as the

1\. You only get notifications for numbers you sign up to watch

2\. The webhook only notifies me that <number> will be transferred <at> (using some data format)

then it shouldn't be a problem, should it?

<comment><USER12> I think it would be ok as long as it didn't tell you what the person's new number is or who now owns <number> if it gets reassigned.

<comment><USER11> Ok, then we agree :-)

We just wanted to know so that we wouldn't charge the new owner for things the old owner ordered etc.

</comment></comment></comment></comment></comment><comment><USER13> Let me programmatically schedule a task to run at a specific time, just once. E.g. if my user tells me to remind them about something in a day, I want to schedule a task to do that exactly 24 hours from now.

I'm sure this exists already but it's hard to find because searching usually points me to a cronjob service. But what I'm looking for is distinct from a that. I don't want to run something every minute or hour or checking if there's any work to do. I just want a given task to run as a pre-determined time, scaled to any arbitrary number of tasks.

<comment><USER14> I've heard good things about Autohotkey, but every time I try to do even the simplest of tasks it becomes a hassle. Like even just clicking on a specific point on your screen you have to know the exact coordinates of the place you want clicked. It seems like it'd be very easy just to record where you want to click.

<comment><USER15> When I'm working on tasks like that I like to add a hotkey that just puts the mouse's location on a tooltip for me. Sometimes you can just Tab to whatever you're trying to click, too, which is robust to window position.

</comment></comment></comment><comment><USER16> An API where I could point _end user_ video uploads to and have them processed, transcoded and playable on all platforms. One that also works at the RTMP/WebRTC layer (i.e. not just an all-in-one JS library with it's own idea of a 'good UI') and doesn't require me to do an API call first to set up the stream for the user (i.e. encode 'upload rights' using expiring HMAC- signed blobs including restrictions such as maximum length and/or file-size to prevent people having me transcode movies for them for free.)

<comment><USER17> Not sure if it quite fits the bill, but if your end user video uploads are stored on S3 or similar then zencoder does most of what you are looking for.

<comment><USER16> The hard part is the ingestion services; which aren't as easy to set up as they seem since a proper one is essentially a reverse CDN (content ingestion network if you'd like ;-)

</comment></comment></comment><comment><USER18> I wanted machine learning-based app configuration. So I built it and spun it out as a separate product: [https://improve.ai/](https://improve.ai/)

<comment><USER19> I think this is a really cool idea, but I feel like it could be described in a better way.

'Machine learning-based app configuration' is very techie and vague and could mean a LOT of different things in a number of realms. What about something more specific and benefit-focused, like: 'AI that automatically improves your site's design'? To me something like that communicates what the product is more clearly, assuming I understand it correctly of course.

<comment><USER18> Thanks for the feedback. Working to find the best language has been a hard slog. It's actually not for improving a web site's design but is targeted specifically at mobile apps. I'm using the "configuration" language now so that developers maybe get an idea of how it integrates.

</comment></comment></comment><comment><USER20> Sometime back I wished I had a light weight CMS that can serve your content and allow you to program sections of your content so that you can make it more dynamic. For example, I can have something like this as the content:

The sum of @Var1 and @Var2 is #Sum

and then we can program #Sum (we call this an expression) to return the sum of @Var1 and @Var2. Once I pass the values for the variables @Var1 and @Var2 to API, let's say 1 and 2 correspondingly. Then the api would return you the content as:

The sum of 1 and 2 is 3

I couldn't find something that could help me with this so I build one. You can visit [https://www.dialoguewise.com/](https://www.dialoguewise.com/) in case you have a similar requirement. More on expressions here: [https://docs.dialoguewise.com/expressions/](https://docs.dialoguewise.com/expressions/)

<comment><USER21> Not exactly this, but [https://sheetsu.com](https://sheetsu.com) is a lightweight CMS from Google Spreadsheets.

</comment></comment><comment><USER22> A generic communication API (this might exist). When I want to communicate with my customer, it handles how they receive the message - whether that's SMS, Email, IM, slack, etc.

<comment><USER23> Not quite what you're asking for, but here is a service that provides the opposite side of that - all customer messages come into a single queue on your side and can then be processed by customer service and/or answered by a bot [https://hubtype.com/](https://hubtype.com/)

</comment></comment><comment><USER24> An API that returns top 100 relevant web results via Javascript (aka the google ajax api which sadly they discontinued).

<comment><USER25> DuckDuckGo and Yandex have one

</comment></comment><comment><USER26> Subscription billing API that deals with reminders, renewals, e-mails/cancellations, etc. Everything related to that. All existing solutions don't work well if revenue per user is a "measley" 2 USD per month.

<comment><USER27> So a "Low cost" billing API, everyone's dream!

<comment><USER28> "Low cost" could be 5% of charges. Use stripe under the hood, so you make 2.1%. Not too bad for a stripe wrapper.

<comment><USER29> Stripe's pricing is 2.9% + 30¢, so the fee for a $2 payment would be 36¢, effectively 18%.

<comment><USER26> We're paying the 18% already for our $2 transaction... Another 5% on that sounds doable.

<comment><USER28> This is definitely one of those problems that while I was implementing it every day I would think "Why the hell do I have to do this myself"

</comment></comment></comment></comment></comment></comment><comment><USER30> I need an accurate way to count words on a variety of documents, with and without renderable text. Could be an image, pdf, docx, etc. The renderable text isn't an issue, but the non has been for me. I've tried several OCR products and none have worked well as we often have something like an image of a hand written document or a low quality scan of an old document. Maybe something with computer vision instead of OCR is the right solution though as I don't need to know what the text says, I just need a count of the words or characters for languages that use symbols.

</comment><comment><USER31> Bret Victor's The Future of Programming has intriguing ideas on APIs that are tangentially related to this topic.

[https://vimeo.com/71278954#t=14m](https://vimeo.com/71278954#t=14m)

</comment><comment><USER32> Video Games.

There are a few, but none provide some important information or have a reliable, complete data set. In particular, box art, UPC codes. From my research the Giant Bomb and Moby Games API's seem to be the most complete, but neither have the UPC. The only place I can find that is another API which is rather lacking in completeness and data.

</comment><comment><USER33> Easy way to get geo from ip. I hate a lot of the options: downloading binarys or using google's that just regulates you.

<comment><USER34> There was a solution for this on HN not a week ago..

<comment><USER35> Here it is: [https://ipinfo.io](https://ipinfo.io)

<comment><USER36> These free databases are really inaccurate in many cases compared to e.g. Maxmind. E.g. this thinks my IP address is 100 km away near the German border, but Maxmind's commercial DB puts me a 7 minute walk away in the center of Amsterdam.

They're better than nothing, but be careful when relying on them for anything you need accurate Geo-IP info for.

<comment><USER37> I also don't recommend free solution for serious business. This can be critical for E-Commerce which uses GEO-Locking.

For customers that live on the borders it is very important that correct country is selected.

</comment></comment></comment></comment></comment><comment><USER38> A cost effective API into whois data that doesn't come across as sketchy or fragile.

<comment><USER39> I worked on a project for one of the big registars and even they didn't have a proper whois api!

</comment></comment><comment><USER28> Point of Sale integration API. This exists for Restaurant POS systems: [http://omnivore.io/](http://omnivore.io/) but I want one for all POS systems.

</comment><comment><USER40> A real estate API for active/sold residential and commercial listings.

<comment><USER41> This one would be pretty amazing and we'd pay a lot for it. Unfortunately, beyond the mapping/sanitization, it's an extremely difficult data licensing problem and so we still pay a lot to make an internal residential version we can't vend.

</comment></comment><comment><USER42> 1\. A process engine that can execute a process given as an EPC (ideally with an embeddable gui editor). The app notifies the API of event completions and the API allows you to query the current state of the process.

2\. An embeddable survey tool like SurveyGizmo, but completely whitelabelable, including the survey editor

3\. An API for benchmark scores for iOS and Android devices (give me all devices that are as fast or faster than a Samsung Galaxy S6)

4\. An embeddable private commenting tool (like Disqus, but for the back- office parts of the website)

<comment><USER43> What does EPC stand for?

<comment><USER42> Event-driven process chain[1]. In fact, any executable process modelling language would do.

[1] [https://en.m.wikipedia.org/wiki/Event- driven_process_chain](https://en.m.wikipedia.org/wiki/Event- driven_process_chain)

</comment></comment></comment><comment><USER44> A postgres API to specify query plans directly, bypassing the planner. I usually know exactly what algorithm makes the most sense, and it's not uncommon for the planner to choose something considerably worse, forcing me to break queries up, write them in strange ways, or disable strategies.

</comment><comment><USER45> An API providing access to coupons from major retailers in a machine readable format.

Edit: Great question by the way!

<comment><USER46> Can you tell me more about how you would've integrated the API? I think I could've helped out.

<comment><USER45> The issue wouldn't have been implementation - it was sourcing the coupons themselves. You'd have to sign agreements with multiple vendors and force them to use your system instead of their own.

</comment></comment></comment><comment><USER47> Natural Language API with a well-defined ontology

<comment><USER48> Have you checked out Google's Natural Language API?

[https://cloud.google.com/natural- language/docs/reference/res...](https://cloud.google.com/natural- language/docs/reference/rest/)

</comment></comment><comment><USER49> A reverse pastebin, where you give it a pastebin URL and it returns the plaintext.

<comment><USER50> Can't you use the /raw/ URL for that? E.g. [https://pastebin.com/raw/AC3FGHBX](https://pastebin.com/raw/AC3FGHBX)

<comment><USER49> Works for pastebin.com, but not dpaste.com, sprunge.us, ix.io, fpaste.org, ideone.com, paste.fedoraproject.org, hastebin.com, termbin.com, paste.debian.net, gist.github.com, bpaste.net, lpaste.net, pastee.com, irccloud.com, codepad.org or susepaste.org.

I currently have ~40 lines of regex for this, plus some custom logic for a few that don't have raw URLs at all. A service would be very convenient.

<comment><USER51> Some would say you're half way to building what you want... Launch and sell!

</comment></comment></comment></comment><comment><USER52> I wish AWS autoscaling groups had a "recycle every machine" operation.

<comment><USER28> I agree with this. Currently it is super annoying to upgrade a group to a new launch config

<comment><USER28> Just found this: [https://github.com/colinbjohnson/aws-missing- tools](https://github.com/colinbjohnson/aws-missing-tools)

</comment></comment></comment><comment><USER53> An asynchronous API that returns a full review of my codebase by dozens of industry specialists with special attention paid to best practices and idiomatic implementation details.

<comment><USER54> This one is a really interesting idea. Although It would be quite pricey I guess. It takes time to review properly code base which is new to you and industry specialists know their price.

</comment></comment><comment><USER55> Instagram API that didn't require approval for basic things like downloading the image for a given Instagram URL. :P They've made it incredibly restrictive now.

<comment><USER56> Just add ?__a=1 with any instagram URL read -> [https://medium.com/@motyar/instagrams-public-json- apis-330e4...](https://medium.com/@motyar/instagrams-public-json- apis-330e4e3f5307)

<comment><USER55> Is that a sanctioned way of doing it though? I don't want this to break later. Their [https://api.instagram.com/oembed/?url=](https://api.instagram.com/oembed/?url=) endpoint is at least documented but doesn't give full resolution photos and only limited metadata.

</comment></comment></comment><comment><USER57> a really good directory / search for APIs. There is so much out there, it's like a needle in a haystack literally

<comment><USER58> That would be the best thing happening to programming in a while... if it happened. I'd pay for such a service.

</comment></comment><comment><USER59> An easy way to get a webpage's image/thumbnail. For e.g. get the the main product image from an Amazon URL.

</comment><comment><USER60> An affordable API or platform to build live streaming communities such as twitch.tv

</comment><comment><USER61> Multiple choice question and answer API for an e-learning site, for mini-tests and full exams. Ended up using classmarker, but wasn't able to customise it to the look and feel of the rest of the site.

</comment><comment><USER62> API for musical instruments, gear, equipment and its info? If anyone know a good one, please do share.

<comment><USER59> Can you expand on this? What's use case?

<comment><USER62> So that user(studio owner,musician,etc) select the instruments or equipment that they have, maybe as autocomplete.

</comment></comment></comment><comment><USER63> An API that had close to real time feed of all closed captioning for news sites and those who were speaking.

</comment><comment><USER64> A good affordable https API to determine location from IP address.

</comment><comment><USER65> 1) an API around freight shipping

2) an API to connect with insurance carriers as a broker

<comment><USER66> ShipRush does freight and LTL via API. On the downside, it's not as clean/easy to use as EasyPost.

[https://shiprush.com/developer](https://shiprush.com/developer)

</comment></comment><comment><USER67> A dead-easy scraper API

<comment><USER9> Have you seen Nightmare? [https://github.com/segmentio/nightmare](https://github.com/segmentio/nightmare)

<comment><USER68> Thanks for this! Exactly what I needed for a project

</comment></comment></comment><comment><USER69> A language API- finding synonyms or categories to words

<comment><USER70> You can use nltk/wordnet bindings ? checkout hypernymn and holonym.

</comment></comment><comment><USER71> A LinkedIn API that allows you to get a list of a user's contacts. This used to exist until they made it available only to "approved partners" a couple years ago.

</comment><comment><USER72> one that did all the hard work of coming up with a product to build, as that's generally the part I fail at :c

</comment><comment><USER73> var MarketingCost = 0;

var customer = api.getNewCustomer(MarketingCost);

var BankAccount = api.Sell(customer);

</comment><comment><USER74> A simple AB testing API.

<comment><USER75> Years ago I've created embeddable A/B testing platform (but only for PHP projects). It's super simple to implement and relevant to your wish [http://www.binpress.com/app/multivariate-ab-testing-for- php/...](http://www.binpress.com/app/multivariate-ab-testing-for-php/1897)

</comment></comment><comment><USER76> unlimited stock market API

</comment><comment><USER77> This is probably too general of a question.</comment>


Show HN: CurriculumVitae.net Make a CV from LinkedIn, FaceBook, Google - <AUTHOR> https://curriculumvitae.net <comment><AUTHOR> Hey HN, I made this because what most of you think of as Resume in my native language is Curriculum Vitae, or CV.

I present to you my CurriculumVitae.net. It's a nice web application where you can create and edit your Curriculum Vitae (resume) and also your cover letters.

For your curriculum vitae and cover letters you will find a rich text editor that allows you to cutomize them.

For you curriculum vitae you will be able to add your professional summary, links to your social networks or personal website, you can also add your employment and education history, and your skills.

Last but not least, you have the ability to download your curriculum vitae and cover letters in PDF format, but I prefer to share my CV public link ([https://curriculumvitae.net/cv/g4EpqKD8X7](https://curriculumvitae.net/cv/g4EpqKD8X7)), this let you know how many views and likes you get for your CV.

Anyways, please let me know your suggestions or what else you think It's missing.</comment>


What is the worst Final Fantasy spin-off of all time? - <AUTHOR> https://www.redbull.com/us/en/games/stories/1331627922102/lightning-returns-shaking-the-spin-off-curse

<comment><USER2> Dirge of Cerberus, amirite?</comment>


Vine reboot Byte officially launches - <AUTHOR> https://techcrunch.com/2020/01/24/vine-byte/ <comment><USER2> People keep comparing this to tiktok. On paper, yes, they are similar. They are both platforms for short form video content.

In reality Byte's six second limit, and focus on loopabilty, restricts the versatility of the platform.</comment>


K7 Tutorial - <AUTHOR> https://shakti.com/tutorial/ <comment><USER2> Man, I want to like J and K but the constant vibe of "this language is so dense and complex, only a few genius programmers will ever understand it" is getting old.

<comment><USER3> Have you had a look through the tutorial? Which parts of the tutorial made you feel as if you needed to be a genius to understand it?

<comment><USER4> Well, the part where it says:

 _> Arthur Whitney's k and its derivatives have served a small number of highly skilled programmers_

Doesn't exactly start off with an inclusive tone.

<comment><USER3> As a k programmer myself I'd say to take that statement with a grain of salt and at least give the language a chance if you have some spare time. It's certainly true that the community is small and it's certainly true that there are plenty of really sharp programmers in the community but that doesn't mean that you need to be a genius to write k code.

</comment></comment></comment></comment><comment><USER5> As a companion to this tutorial, the community is building out a clickable version of the k7 reference card. It also covers the current state of Python-k integration:

[https://k7contrib.gitlab.io/docs/](https://k7contrib.gitlab.io/docs/)

</comment><comment><USER6> "Customer shall not, directly or indirectly, and shall not authorize any third party to: (i) decompile, disassemble, reverse engineer, or otherwise attempt to derive the source code of, reconstruct, or discover any hidden or underlying elements of the Software"

Looks like I don't want to spend the effort learning it.

<comment><USER7> Just in case you want to look at the sources of something similar, here is a good one: [https://github.com/JohnEarnest/ok](https://github.com/JohnEarnest/ok)

<comment><USER8> I like oK because it allows nice toying around with graphics in the browser but while k is incredibly fast, oK is really slow. It is nice to play with and learn from but anything beyond, better check out Kona or another APL like like A+ or J.

<comment><USER9> I'm not aware of too many folks using A+ anymore as it is pretty ancient and hasn't been updated in a very long time.

Array languages I would consider for actual work are mostly:

Dyalog APL, J, and K if I could afford kdb+.

If I wanted to play with implementations I agree that Ok and Klong are pretty cool.

</comment></comment></comment></comment><comment><USER10> This a typo?

        x: 3 4 5 6 7 8 9 10
        y: 100 200 300 400

        ?[x;3;y] / replace what's in position 3 by y
      3 4 5 100 200 300 400 6 7 8 9 10

<comment><USER11> Looks like the comment is zero-indexed as well. I wouldn't consider that a typo.

<comment><USER10> Pretty sure the output should be

      3 4 5 100 200 300 400 7 8 9 10

Otherwise that is not replacing, that is inserting.

Weird, I tried it on [http://johnearnest.github.io/ok/index.html](http://johnearnest.github.io/ok/index.html) and that agrees with the doc.. kinda confusing. Seems like it should be

      ?[x;3;y] / insert y at position 3
      ?[x;3 4;y] / replace what's in position 3 by y

<comment><USER11> I see. In that case, the output is right and the comment is misleading.

<comment><USER10> yeah, I updated my comment after finding [http://johnearnest.github.io/ok/index.html](http://johnearnest.github.io/ok/index.html) so I could test this out and came to the same conclusion.

</comment></comment></comment></comment></comment><comment><USER12> "Shakti k also has primitives for blockchain operations."

That's... Interesting. I couldn't find any further mentions of "blockchain operations" in the reference. What do they mean, exactly? Since k is traditionally concerned with financial markets, I might guess that they're offering deeply-integrated ways to parse transactions, check the number of confirmations, query the current exchange rate, etc.?

<comment><USER13> It has built in RSA key stuff, common hash algorithms, and the ability to encode/decode Bitcoin addresses. Perhaps other stuff too[1].

[1] [https://k7contrib.gitlab.io/docs/#shakti- python](https://k7contrib.gitlab.io/docs/#shakti-python)

</comment></comment><comment><USER14> What's the benefit using k vs. c, cpp or java for the same? Does it run or compile faster?

The article says you can do the same with cpp and some extra libraries, but I wouldn't immediately think cpp or java was easily beatable -- manjana wonders --

<comment><USER15> K is interpreted, not compiled. You can run your code the instant it's written.

As other's have said, K (the language and the interpreter) is highly optimized for processing tabular data. I've heard of it outperforming C in processing billions of rows of financial data. (Which, by my understanding, is K's primary market.)

Lastly, K (like APL, J, A+, Klong, Kona, etc.) is very terse. A phrase I've seen online is "one line of K is roughly equivalent to 100 lines of C". K programs, like APL & co., very often fit entirely into a screenful of text, but require close and complete reading to understand. There are lots of videos on youtube of people writing literate sudoku solvers or conway's game of life in a dozen lines or so, and terse solutions in a dozen or so characters.

People who like these programming languages tend to like their terseness -- they can view the entire program all at once (no scrolling or searching), and refactor or rewrite the program in a few seconds of minutes of typing.

<comment><USER16> If you would prefer to use keywords instead of symbols, Nial is a good option: [https://github.com/danlm/QNial7](https://github.com/danlm/QNial7)

</comment></comment></comment><comment><USER17> Is shakti related to kx? What is going to happen with kdb+?

I also have a practical question. Does `brandelf -t Linux bin/k` violate the License agreement?

<comment><USER16> The founders of Kx (Arthur Whitney and Janet Lustgarten) sold their stakes in the company to First Derivatives plc and have now founded Shakti. Kdb+ is still sold by Kx. Shakti seems to be a successor system to kdb+.

As for you second question, how would brandelf change the binary (disclaimer: not a BSD user)?

</comment></comment><comment><USER18> Does anyone understand if this is _fully compatible_ with Kdb+? been learning q & it would be nice to add vanilla K7 to the list

<comment><USER19> It is not. Every k version is in fact a new language (and rewritten from scratch every time). That said, I guess they may implement some kind of compatibility layer at some point.

<comment><USER20> has been suggested on google group: [https://groups.google.com/d/msg/shaktidb/184DnAJrwKU/HnNm3Dd...](https://groups.google.com/d/msg/shaktidb/184DnAJrwKU/HnNm3Dd0BwAJ)

</comment></comment></comment><comment><USER21> Whilst One can run j in iOS, j and k are different. May have to try k again.

</comment><comment><USER22> I wonder what are its improvements over APL?

<comment><USER9> K uses traditional ASCII characters and is usually bundled with kdb+ for speedy timeseries analysis.

I would use Dyalog APL or J over K in many cases. K is also really expensive (kdb+)...I'm not sure about Shakti (the K inventor formed a new company and left the first one).

</comment></comment><comment><USER23> Can someone compare this to Dyalog APL?

<comment><USER9> Dyalog uses non ASCII symbols which are really cool to me and make the primitives very easy to learn. Check out tryapl.org to get a feel for it. You can also download a trial version and there is a free book. They have decent library support and full .NET support too as well as easy parsing for CSV, JSON, XML...etc. They have Dyalog APL notebooks, database access, multiplatform support, parallel and tacit features...etc. If it wasn't $1k a year for a license (honestly pretty reasonable) I'd use it pretty often. It just feels like they love their product and support it from the annual coding competitions, monthly webinars...etc.

J uses ASCII symbols and has a small community of very intelligent users that are stats smart, software smart, math smart...etc. It has great bindings to Lapack, built in graphs (well Dyalog does too) and tutorials called labs. The community is much smaller though and it doesn't have any parallel primitives. J is free to use, but the Jd columnar database is commercial, but very reasonably priced.

Honestly, both are awesome, fun, powerful, and plain cool.

<comment><USER23> Thanks - my next sabbatical is going to be Rust + APL

<comment><USER9> My usual advice is to also check out Aaron Hsu's talks on YouTube and his posts on HN (user arcfide I think). Really eye opening and alien stuff.

Dyalog also sells a standard keyboard with the APL symbols printed on the keys. You might find that interesting.

</comment></comment></comment></comment><comment><USER24> Alternatively, you can look at the completely free www.Aplusdev.org, "A+" language that was also created by Whitney.

There is also GNU APL which I have been playing with and has some good ideas also, including the ability to create scripts.

<comment><USER11> I would like to recommend Kona[1] as well. It is an open-source K implementation, with some small differences.

[1][https://github.com/kevinlawler/kona](https://github.com/kevinlawler/kona)

<comment><USER24> Thanks for the reminder. I had seen it before, but I now see that it is active, with the last commit 8 days ago. I compiled it on my Linux box quickly and will be testing it out...</comment></comment></comment>


Prisons or Colleges? - <AUTHOR> http://www.professorbainbridge.com/professorbainbridgecom/2010/01/prisons-or-colleges.html

<comment><USER2> I applaud the Governor's intentions, it is far more sensible to allocate resources to higher education than to prisons.

Having mentioned that, I think it should be stated that he is solving the wrong problem here. The reason tuition is increasing so rapidly in California is because the State no longer has the wherewithal to properly fund its educational institutions. This is a direct consequence of the fact that Californians are able to vote on ballot initiatives obligating that state's government to take on, sometimes quite expensive, commitments. Pair this with the fact that Californians have made increasing their tax burden exceedingly difficult, and you can see the Governor's problem.

That situation is really a mess. Even for prisons, he can't cut spending below a certain amount, or the law enforcement brotherhoods and lobbyists will come after him. He can't decrease the number of people in prison because of the Three Strikes ballot initiative, which obliges him to incarcerate large numbers of nonviolent offenders indefinitely. And the worse part about it is that he needs to do both, decrease spending and the number of incarcerated people.

And that is one of what must be a large number of issues he needs to work through to get the budget on track. Its prisons vs. education, that decision should be the easiest.

I don't envy that State's leaders. People anywhere make democratic leadership challenging but the people of California must be especially difficult to manage.

<comment><USER3> Sounds like what we really need to do is outsource the prisons. To, say, Mexico, or China. I'll bet the Chinese don't pay $50,000 per prisoner per year to keep their prisoners locked up -- heck, they probably harness their labour to turn a profit.

<comment><USER4> Heck, they're probably not a democracy. And probably have no constitution or bill of rights. And probably haven't caught up with the 19th century. And probably disappear people left and right.

Great role model.

</comment></comment></comment><comment><USER3> One of my favourite theories on prison reform: a huge problem with prisons is the formation of gangs and other social structures within the prison walls; not only do these promote the emergence of a criminal culture within the prison, they also make the prisoners harder to guard.

This could be solved by keeping everybody in solitary confinement, but that's overly cruel. Instead, I'd propose splitting the prison into a whole bunch of separate units, each consisting of maybe a dozen prisoners, who would share facilities and never interact with prisoners outside their own unit. Every month, the units would be broken down and prisoners reassigned to different units, preferably arranged so that no prisoner would encounter the same fellow prisoner twice in one sentence. This way we could give prisoners enough social interaction to stop 'em going crazy while preventing them from ever constructing any more than the most rudimentary social structures.

Any downsides I'm not considering? I'm assuming that the whole thing could be accomplished without occupying any more space than the existing prison system, and hopefully with fewer guards.

<comment><USER5> _I'm assuming that the whole thing could be accomplished without occupying any more space than the existing prison system, and hopefully with fewer guards._

This would not be the case. Enforcing such a policy would be prohibitively expensive. Following the theme of the article, we can't even afford < 12 student classes, and schools are much cheaper than prisons.

In my opinion the solution is simple: put less people in prison. This chart says it all for me:

[http://en.wikipedia.org/wiki/File:US_incarceration_timeline-...](http://en.wikipedia.org/wiki/File:US_incarceration_timeline- clean.svg)

<comment><USER3> Let's assume that the fraction of people in prison has grown over the last 70 years. This is either because sentencing has got harsher or because people are committing more crimes. Anecdotally, though, sentencing seems to have got less harsh -- for instance in the 1950s the Boggs act resulted in minimum mandatory sentences of 5-20 years for a first drug offense. Thus, we must conclude that people are committing more crimes than before.

Now, either they're committing more crimes _because_ sentencing has got less harsh, or they're committing more crimes because of other social factors (eg the growth of gang culture, drug culture, et cetera). Either way it's not clear to me that making sentencing even less harsh than it already is will solve anything.

<comment><USER6> >This is either because sentencing has got harsher or because people are committing more crimes.

Or because more crimes are being prosecuted. It's completely false to say that it must be for one or other or those two reasons.

</comment></comment></comment></comment><comment><USER7> Emotionally this sounds appealing.

But it seems to me that htis is just another example of the kind of government that brought California to bankruptcy. Governing by emotional appeals to the way our values tell us the world _should_ behave is not a recipe for success in a world that behaves as the chips fall.

More to the point, read Friedrich Hayek's _The Fatal Conceit_ for a discussion of the hubris of believing that we can engineer a world to our liking, and that this world be at all sustainable.

<comment><USER8> Exactly. Why should the government be spending more on the school system than on prisons? There isn't even a real argument, it's just being taken as a given. If anything improving the prison system should be given higher priority than fixing the college system, because prisoners have to be there. They don't have a choice. Whereas students can just opt out of college, or else go to a private college.

<comment><USER9> I think this idea is premised on the notion that there may be an inverse relationship between education and crime.

<http://www.jstor.org/pss/27529879>

<comment><USER3> Are the folks in prison really the same folks who would otherwise be attending the University of California? I think they're generally pretty different demographics.

Better K-6 education could probably decrease crime, if we can turn the illiterate, shiftless dullards who make up the lower rungs of society into literate and hardworking (if still dull) citizens. But this requires more a new educational strategy rather than just more money, and I don't know if anyone has thought of a good one yet.

</comment></comment></comment></comment><comment><USER4> "California spends about $50,000 a year per inmate"

On the surface, that number looks somewhat insane.

<comment><USER10> For food, clothing, shelter, medical care and 24 hour-a-day supervision by union employees?

<comment><USER4> I know where _I'm_ retiring!

<http://www.imdb.com/title/tt0079219/>

</comment></comment></comment><comment><USER11> Allow the CCPOA to unionize TAs. Problem solved!

<comment><USER12> Ironically, that would work quite well. So would $10,000 scholarships funded with a $10,000 lump sum tax on UC and UC State students</comment></comment>


The Amazon Kindle Fire Is A Guaranteed Success. Apple Knows Why. - <AUTHOR> http://clydn.com/5A

<comment><USER2> Well, even John Gruber is giving praises to a non-Apple device. That must mean something.

</comment><comment><USER3> I think pretty much everyone on HN had already managed to figure this out, no? Even those who didn't must have read 100s of comments making this point over the past hours, or days, or even months.

<comment><USER4> One of the links ("just a rebadged BlackBerry Playbook" [http://gdgt.com/discuss/the-amazon-tablet-will-look-like- a-p...](http://gdgt.com/discuss/the-amazon-tablet-will-look-like-a-playbook- because-it-basically-is-g8d/) ) has some purported scuttlebutt about development, tailing off with:

 _Although Amazon did refresh the ID of their PlayBook derivative, I'm told that this first tablet of theirs is "supposed to be pretty poor" and is a "stopgap" in order to get a tablet out the door for the 2011 holiday season_

(P.S. to OP: please do not post URL shortener links.)

</comment></comment><comment><USER5> What's with the font on this site? Spidery and blurry for me in Chrome even at 1920x1200. [http://itsabigthing.com/wp- content/themes/itsabigthing/font/...](http://itsabigthing.com/wp- content/themes/itsabigthing/font/font.css)

I really hope this isn't where html5 fonts are headed

<comment><USER6> >I really hope this isn't where html5 fonts are headed

Set your browser to override any website with your own font choices. I did sometime back when that eye-rape sunken font styling started showing up too often for my tastes and will never go back. My style on everything means one less thing to bother with when browsing the web, even websites where I didn't have a problem with the font are improved because they're now in my preferred for reading.</comment></comment>


Saudi Arabia to execute 52 prisoners, including juveniles, en masse - <AUTHOR> http://www.reprieve.org.uk/press/saudi-arabia-to-execute-52-prisoners-including-juveniles-en-masse/ <comment><USER2> "The reports say the 52 prisoners – all of whom were convicted in the secretive Specialized Criminal Court – will be executed across nine different cities in the Kingdom in a single day."

The brutality instantly felt astonishing, and then I remembered Guantanamo is still open and will host its prisoners, sent there by secret courts, for the foreseeable future.

<comment><USER3> A single drone strike can kill 52 people, considering 90% civilian ratio in drone bombings... Middle Eastern people don't get any consideration for people's lives from their rulers or their Western counterparts.

<comment><USER4> We are screwed either way. It's sad to be frank.

</comment></comment></comment><comment><USER5> The sooner we stop burning oil the better.

<comment><USER6> Because when they have nothing we want we'll care more? Like Africa?

<comment><USER5> No because we will stop supporting them. I don't want to be indirectly supporting an illiberal neo-medieval government to continue. The people of Saudia Arabia deserve better.

There is also the issue of the huge amount of financial support for bigotry around the world coming out of Saudia Arabia. The sooner this money flow stops the better.

<comment><USER7> It's hard to have a good idea of what's going on in Saudi Arabia, but I am under the impression that the population is more conservative than its depraved monarchy and its cocaine trips to Europe. I am not sure a secular liberal government is what would result from some free elections.

<comment><USER5> I agree. All I can draw on is my personal experience and from this many Saudis are yearning for change and being part of the 21st century.

</comment></comment></comment></comment></comment><comment><USER8> Oh, Saudis are US friends, would love to see human rights watch report on Saudis.

<comment><USER9> Actually.... [http://www.independent.co.uk/news/world/anger-after-saudi- ar...](http://www.independent.co.uk/news/world/anger-after-saudi-arabia- chosen-to-head-key-un-human-rights-panel-10509716.html)

</comment></comment><comment><USER10> The UK and the US have no moral standing in this world as long as they continue to remain quiet and continually support and trade with this backwards country.

</comment><comment><USER11> But don't you dare to compare them to ISIS.

<comment><USER8> Compare? they are the ISIS, ISIS/ISIL is wrong name, Daesh is proper one, is very funny that John Kerry use Daesh, but Obama and everyone else use ISIS).

<comment><USER12> I've wondered why Obama uses ISIL, while practically everyone else is using ISIS.

I don't think it's just because he wants to remain consistent in his rhetoric. He must have a some advisor telling him to that acronym?

I think the use of two acronyms helps with the confusion. I believe Obama is a good man, but is really torn on what to do. I think about him sitting in the White House, and thinking--I can't bear to see another young man come home without legs. I guess we will send in a drone, and hope for no civilian casualties?

To anyone over there--the average American does not like the way our leaders treats your land, and people. Even though we have a democracy, we don't have much say in anything. We are all just pawns of our government. Guys join the military in order to get ahead in this competitive society. They don't realize the military offers very little job/career preparation. To any father who still tells his son, "What you need is a few years in the military!". Dummy up! If you have no good advice for your children; just be quiet? My old man was big on the military talk. I found out later his father paid a doctor to get him out of the Vietnam draft. I loved my dad, but he was a hypocrite. Even though I couldn't stand listening to his alcohol fueled diatribes, I still love the man.

<comment><USER13> > I've wondered why Obama uses ISIL, while practically everyone else is using > ISIS.

The State Department interpretation of 'al Sham' is Levant, hence the 'L'. Other agencies translate it as Syria because Levant doesn't incorporate the full area. But there's no one-to-one Western name for the region indicated by the Arabic word.

The whole Daesh meme is amusingly naive; it's like calling "NATO" as "OTAN" ( its French abbreviation ) and claiming that it annoys the British. Really, they have better things about which to concern themselves than the _actually accurate_ abbreviation some distant foreigners have adopted for them.

<comment><USER14> I agree - I still can't understand these pedantics about the name when everyone knows who you mean.

"What's in a name?..."

<comment><USER8> naming is important, specially if you want to associate something with something else, for this case: islam with violent crazy people who kill everyone, so ISIS/ISIL will associate these crazy nuts with Islam. it is like calling Americans, Western Christian Gun Owners or WCGO. do you still think it doesn't matter what do you name it?</comment></comment></comment></comment></comment></comment>