Dropwizard 0.8.0: Java framework for ops-friendly, high-performance web services - <AUTHOR> http://dropwizard.io <comment><AUTHOR> I'm the OP of this post, which was changed to show Dropwizard home page. My initial post was about the release notes for Dropwizard 0.8 ([https://dropwizard.github.io/dropwizard/0.8.0/docs/about/rel...](https://dropwizard.github.io/dropwizard/0.8.0/docs/about/release- notes.html#v0-8-0-mar-5-2015))

They are quite significant. IMO, the most relevant one is the move to Jersey 2 (the Jersey framework is THE JAX-RS implementation for building REST services) which supports Server side async requests ([https://jersey.java.net/nonav/documentation/2.0/async.html#d...](https://jersey.java.net/nonav/documentation/2.0/async.html#d0e6914)) and took quite a lot of work to be implemented in Dropwizard.

Finally, here is a link to third-party modules for DW: [http://modules.dropwizard.io/](http://modules.dropwizard.io/)

<comment><USER2> They really should have written those async examples with Java 8. Definitely simplifies it:

[http://www.codejava.net/java-core/the-java- language/java-8-l...](http://www.codejava.net/java-core/the-java- language/java-8-lambda-runnable-example)

<comment><USER3> I totally agree but Jersey 2.x and Dropwizard still support Java 7, so the examples should also work with Java 7.

</comment></comment></comment><comment><USER4> One of the strenghts of the Java platform is the separation of vendor-neutral standards (e.g. JAX-RS, and all the REST concepts, and annotations, it provides) and particular implementations (e.g. Jersey).

Java EE is a collection of such standards, providing enormous capability while not tying you to a particular app server - I'm busy with a rather painless JBoss -> Glassfish migration as we speak.

Secondly, Java has ample platforms that allow for the developer-driven assembly of various cool libraries into a "platform" \- for example, OSGi.

It concerns me that this library absolutely ignores these two most valuable concepts in the Java world.

If you want high-performance web services with much more powerful backing technologies (EJB, JPA, JMS...) without locking into a particular haphazard collection of libraries, just write and deploy a JAX-RS module into your free, lightweight app server of choice (Wildfly, Glassfish, etc).

The Java ecosystem is much more mature than the Node.js-based "arbitrary assembly of X cool libraries" that this little project is emulating, and I would encourage people to put that same effort into understanding Java EE, which over the past 5 years has become a lean, lightweight platform indeed - but one with real horsepower for serious systems when you need it.

Not denouncing the greatness of the libraries that have been combined here, I'd steer clear of this project - you're missing out on what is really possible.

<comment><USER5> You're right but wrong. That's all OK in theory but not in reality having migrated various Java EE gubbins on a project. It's a rat's nest of supposed standards and interop that doesn't amount to much at the end of the day because there's still coupling to infrastructure and configuration at every level. On top of that there's edge cases that the APIs and standards don't consider as they're all pretty leaky.

Dropfish is a cohesive "opinion in a box" that just works without having to do a Java EE iteration zero which is hours of eye-stabbing pain. Someone did all the hard work of swapping components out until they found something that wasn't horrible and stuck them all together.

The Java EE ecosystem is mature, you're right but it's not pleasant, is inflexible despite its modularity and doesn't live up to it's promoted abilities.

Saying that I've used both in production, but would rather can both of them and use something like flask and python with SQLAlchemy just for the fact I don't have to deal with massive heavyweight environments and it's possible for a human to understand it all in a lifetime.

Also, 500 level deeps stacks in Java+OSGI projects make me cry. Trac has a better composition and component model!

<comment><USER4> I've had some terrible experiences with migrating, and maintaining, Java EE apps before. But every single one of those were caused by how the teams built the system, and not by Java EE itself.

The added complexity, and choices, imposed by Java EE require a degree of understanding, maturity, and ability to abstractly design that is beyond the average programmer that just quickly wants to hack together a couple of REST services.

I'm not trying to paint successful Java EE developers as some sort of elite here, but there is no doubt that people with a solid understanding can, and have, built long-lasting systems of beauty with it, whereas the average un- informed team, having managed to soundly lock themselves into awful pre-2005 app servers, have created conterted messes of Java code beyond belief.

Both Java EE, and OSGi, are soundly beautiful in their own ways, but both have suffered from some awful implementations and libraries that have caused a lot of pain.

For the past 5 years, my experiences with Java EE has been everything but "heavyweight". I consider it a rapid application development environment. Especially now that nobody does any server-side view frameworks anymore (it's all ECMAScript in the browser).

In this world, I challenge any environment to put more horsepower behind your REST services, for less effort.

<comment><USER6> > For the past 5 years, my experiences with Java EE has been everything but > "heavyweight". I consider it a rapid application development environment. > Especially now that nobody does any server-side view frameworks anymore > (it's all ECMAScript in the browser).

Do you have any recommended reading for that? Every time I try to get started with Java EE I am plagued with outdated material and pages upon pages of boilerplate XML configuration.

<comment> nbw-hn Check out the JavaEE tutorial from Oracle [http://docs.oracle.com/javaee/7/tutorial/](http://docs.oracle.com/javaee/7/tutorial/) and the 1st Cup [https://docs.oracle.com/javaee/7/firstcup/index.html](https://docs.oracle.com/javaee/7/firstcup/index.html)

There's also an excellent GIT repo of JavaEE7 samples that is maintained by RedHat here:

[https://github.com/javaee-samples/javaee7-samples](https://github.com/javaee- samples/javaee7-samples)

</comment></comment></comment></comment></comment><comment><USER2> If you're missing Go-like channels, actors etc then check out Quasar with can be integrated with Dropwizard using a library called Comsat.

It's pretty cool to take an existing Dropwizard app, change a couple of lines and every request becomes a lightweight fiber:

[http://docs.paralleluniverse.co/comsat/](http://docs.paralleluniverse.co/comsat/)

[http://docs.paralleluniverse.co/quasar/](http://docs.paralleluniverse.co/quasar/)

<comment><USER7> Is Quasar ready for production use?

<comment><USER8> Yes (I'm the main author)

</comment></comment></comment><comment><USER9> I love Dropwizard and I love the direction they've steered Java Web Development in, but I prefer Spring Boot: [http://projects.spring.io/spring- boot/](http://projects.spring.io/spring-boot/)

I find it much quicker to get started with, much better supported and better tooling.

<comment> brown9-2 One thing that felt weird to me about Spring Boot when I looked at it a year or so ago was the idea of enabling features based upon which libraries are on the classpath.

Has that turned out to be useful in practice? Seems like a simple method for unpleasant surprises.

<comment><USER10> I've definitely been nabbed by unpleasant surprises while using it - when you have lots of transitive dependencies you can get some surprisingly interesting behaviour :)

That said, you can also be fairly granular about you configuration (instead of the auto-config), so it's not that bad.

</comment></comment></comment><comment><USER11> Love Dropwizard! Here's the notes on what's new in the March 5 release. Can anyone summarize the best bits?

[http://dropwizard.github.io/dropwizard/0.8.0/docs/about/rele...](http://dropwizard.github.io/dropwizard/0.8.0/docs/about/release- notes.html#v0-8-0-mar-5-2015)

<comment><USER12> The move to Jersey 2.

<comment><USER13> I wouldn't necessarily call that a good thing. Jersey2 has been a PITA to get working with one of our internal apps that used Spring. Looks like I'm not alone in this either: [https://github.com/gwizard/gwizard#why-did-you-pick- resteasy...](https://github.com/gwizard/gwizard#why-did-you-pick-resteasy- over-jersey).

</comment></comment></comment><comment><USER14> If you're interested in a Guicier 'framework' inspired by Dropwizard, take a look at GWizard... [https://github.com/gwizard/gwizard](https://github.com/gwizard/gwizard)

<comment><USER15> Hm, looks like I can find examples of using kotlin with guice, and kotlin with dropwizard, but no examples of kotlin with gwizard... After recently looking at java8 and alternatives, I've tentatively come to the conclusion that I'm rather happy to use kotlin for stuff that needs to be (almost) java (eg: Android, or just mapping closely to java, eg: dropwizard?) -- and clojure for everything where java feels too constrained (but where perhaps performance isn't much of an issue). For myself, I don't see much use for scala -- it feels too complex, and in many ways less powerful than clojure. Note that I don't have any legacy java/jvm code, and so I probably just use ocaml or even standard ml where others might reach for scala.

Perhaps kotlin doesn't make much sense wrt dropwizard -- it might make more sense to just stick with java for dw, and use something different if one wants something higher level?

Anyway, some related links I've come across googling a bit:

clojure+dropwizard (example, with leiningen):

[https://github.com/stevensurgnier/dropwizard- clojure](https://github.com/stevensurgnier/dropwizard-clojure)

Experimental (old) repo for dropwizard+kotlin:

[https://github.com/arteam/kotlin- dropwizard](https://github.com/arteam/kotlin-dropwizard)

Combining kotlin and guice:

[http://java.dzone.com/articles/kotlin-guice- example](http://java.dzone.com/articles/kotlin-guice-example)

<comment><USER16> I've been using Kotlin and Dropwizard together and I quite enjoy it. To demonstrate Kotlin recently for a friend I used the Dropwizard Getting Started: [https://github.com/doomspork/kotlin- dropwizard](https://github.com/doomspork/kotlin-dropwizard)

My plan is to add more to it and eventually cover all the features of Dropwizard.

</comment></comment></comment><comment><USER17> FYI - I've written some bundles/extensions to DW 0.8.0 that support SOA. [http://soabase.io](http://soabase.io) \- Service Discovery; Load Balancing REST Client; Distributed, Scoped Dynamic Attributes; Jersey-based Admin APIs; Administration Console; Configuration Utilities; Guice Integration

<comment><USER18> This looks really cool, thanks for sharing!

</comment></comment><comment><USER19> I built an open source personal budget app using DropWizard 0.7.0 awhile back with AngularJS. If you guys have interest to see real world project using DropWizard, check this out [https://github.com/paukiatwee/budgetapp](https://github.com/paukiatwee/budgetapp)

Cant wait to upgrade to use v0.8.0 :)

</comment><comment><USER20> Also, saw this comparison of Dropwizard with Spring boot: [http://blog.takipi.com/java-bootstrap-dropwizard-vs- spring-b...](http://blog.takipi.com/java-bootstrap-dropwizard-vs-spring-boot/) Interesting to understand the libs and flexibility each one have.

</comment><comment><USER7> Congratulations, one of the best frameworks in the JVM land.

<comment><USER8> Absolutely. But it's more a curation of some excellent libraries than an independent framework. At the top of the list are Jersey, the reference implementation of the JAX-RS standard, and Jetty (DW's servlet container). Metrics (by the same author as Dropwizard) deserves another honorable mentions.

</comment></comment><comment><USER21> What is the option for rapid application development using Dropwizard? Is it possible to refresh a web page and the code changes are automatically compiled and deployed?

<comment><USER22> most IDEs have support for this - you can change a method while debugging even and itll reset the stack with your changes. Theres also pro tools like jrebel that are supposed to solve it better than the built in stuff.

<comment><USER23> As long as you dont change any method signatures, sure. I think its the JVM that provides this as part of its remote debugging functionality.

If you change any signatures (should be most of the time) you need Jrebel.

</comment></comment></comment><comment><USER24> Seems like Dropwizard makes it possible to follow the twelve factor app approach in a Java application.

[http://12factor.net/](http://12factor.net/)

Especially the "Processes" factor.

"Execute the app as one or more stateless processes"

[http://12factor.net/processes](http://12factor.net/processes)

You need something like Jetty, running in the same process as the app (as opposed to an application container like Tomcat) to make this approach work.

<comment><USER25> Is there a sample "pet shop" app?

</comment></comment><comment><USER13> While I like the opinionated nature of Dropwizard, there's still a lot of manual stuff you have to do to get things working. Wish it had some automation built-in similar to Grails and JHipster ([http://jhipster.github.io/](http://jhipster.github.io/))

</comment><comment><USER26> This vaguely reminds me of Play v1. It feels simple (err simpler) and not overly complicated like a typical Spring based app. Of course, this may change over time.

I really loved the Play v1.x framework minus the hard to debug part.

<comment> brown9-2 Why was it hard to debug?

<comment><USER26> It's been a while, but if I remember correctly Play v1.x's 'magic' depended on Play v1 messing with Java bytecode. Well this in turn makes it harder to debug. This is no longer an issue with Play v2, but the magic (and the fun) are gone.

<comment><USER27> The reloading part of Play doesn't use bytecode manipulation, it simply creates a new classloader with the newly compiled stuff and then uses the new classloader on subsequent requests. There are other pieces of Play 1 & 2 that do bytecode manipulation. In Play 2 this is pretty minimal when using Java / EBean.

</comment></comment></comment></comment><comment><USER28> we had used metrics library of theirs for some of our projects while evaluating, quite a while back. It was worthwhile for minute scale testing and was interesting to note that it had a few things worth abstracting from an instrumentation framework standpoint.

It integrates with all common monitoring tools/frameworks and best part was its JMX integration which seemed to be more lightweight compared to a few other commercial ones we tried.

We then stopped instrumenting for other reasons.

<comment><USER3> > We then stopped instrumenting for other reasons.

Any reasons you want or are allowed to share?

</comment></comment><comment><USER29> Dropwizard keeps getting heavier ... JavaEE keeps getting lighter. Dropwizard has always been friendly to developers, JavaEE took a long time to "become useable" (I was ready to give up on J2EE completely with release 1.4).

It would be interesting to compare the demo Dropwizard application with an equivalent one written in JavaEE 7. Is anyone interested? I'd be willing to run through both sides (I always learn something!).

<comment><AUTHOR> I'm not sure why you assert that Dropwizard is getting heavier. The difference between this release (0.8) and the previous one, is just about bumping up a bunch of libraries' versions and the big move to Jersey 2.

DW is essentially a collection of libraries with sane defaults and some plumbing, so I don't see how you can compare it to JEE. JEE may be lighter these days, but it still requires a container to run - unless you use the latest incarnation of the IBM JEE server, Liberty.

<comment><USER4> Dropwizard also requires a container to run. Only difference is, they are bundling a particular container (Jetty), as opposed to the model of deploying into a container that you set up.

<comment><USER30> I think you're using the word "container" when perhaps "app server container" is more meaningful. An app server container (like Tomcat, WebLogic, WebSphere, etc.) typically provides services (database connectivity, persistence, management, etc.) to the applications deployed into the app server container, where the benefit is especially useful when multiple applications are deployed in the same container (though in my experience, this is often where problems occur and people end up deploying separate app servers per application).

Dropwizard is meant to run without an app server (aka containerless), and uses the Jetty embedded web server (which is not an app server container) to provide the HTTP communication.

</comment></comment></comment></comment><comment><USER31> I remember Dropwizard being a favourite amongst many folks at a previous job. Decided to read the listed contributors to find some of their names:

Hats off to you Adam Jordens & Cameron Fieber :)

</comment><comment><USER32> Is there anyone who has tried both rest.li as well as dropwizard? How is dropwizard different? (I know only rest.li and have found it to be quite good in what it does)

</comment><comment><USER33> Why choose Metrics over Servo? Metrics lacks dimensions, which is a pretty significant oversight, IMO.

<comment><USER34> Metrics was created before Servo. Some folks at Netflix wanted to use Metrics but ran into fundamental differences of opinion with us (Yammer) that we weren't willing to yield on. So Netflix built Servo and Dropwizard kept going with Metrics.

<comment><USER33> What weren't you willing to yield on? If it was that metrics should have dimensions, Netflix has the stronger argument.

</comment></comment></comment><comment><USER35> Love Dropwizard.

Development, testing, deploying, and monitoring the way it was supposed to be.

</comment><comment><USER36> Nice framework!!

</comment><comment><USER37> Url changed from [http://dropwizard.io/about/release- notes.html#v0-8-0](http://dropwizard.io/about/release-notes.html#v0-8-0) because this project doesn't appear to have been discussed on HN before.

<comment><USER38> [https://hn.algolia.com/?query=dropwizard&sort=byPopularity&p...](https://hn.algolia.com/?query=dropwizard&sort=byPopularity&prefix&page=0&dateRange=all&type=story)

<comment><USER37> Oh, I didn't mean it had never been posted before. I meant that none of the previous posts received significant attention or discussion. Sorry for not being clear.

<comment><USER39> Having heard of dropwizard many times before (isn't it pretty popular?), and arriving post edit, I was left wondering why this was posted, until I read the comments and found this subthread.

It would be nice if there was a section for admin comments right below the link, where things like this could be mentioned instead of relying on comment- thread popularity to bubble it up.

</comment></comment></comment></comment><comment><USER40> all java frameworks suck. Hidden too much, concepts too much, config too much, dependencies too much, memory consumed too much, development circle too long, startup too slow.

that is why golang is born.

(I know this comment will be downvoted, but it is the reality, NEVER USE JAVA TO DEVELOP YOUR WEBSITE!)

<comment><USER41> spring-boot is awesome, the configuration is simple, the development is absolutely quick and easy and startup takes just 3 to 4 seconds on my mac. Seriously you just don't know what you're talking about.

And for that matter I really appreciate Go and its simplicity.

<comment><USER40> on your mac, 3-4 seconds? Then on a micro EC2 instance, it would be 10+ seconds. You visitors has gone before your page is loaded.

btw, there are very few big companies use spring. It is a over promoted products.

btw2, do you know how to cache the jsp template render result? Which is so easy in other languages.

<comment><USER41> Don't you know the difference between the startup of an application container (which takes 3-4 seconds) and a page refresh which depends on what your application is doing?

There are __a lot __of companies using Spring, at least in Europe I can 't count them. I don't know on what planet you're living :)

<comment><USER40> When your app is PaaS based, startup time (and memory usage) is very important, for your instances will restart often.

Don't know if there are any big IT companies in Europe.

No only spring but also java is a over-promoted product. Before being acquired by Orcale, Sun devoted much of its money to promote Java.

<comment><USER42> Java and spring are everywhere. I think you'd be (unpleasantly?) surprised just how often you're using websites that are running on top of Java and you just didn't know it.

<comment><USER40> for examples pls. There are really some, but very few.

<comment><USER42> Okay, if you insist..

Amazon (significant amounts of the infrastructure run on Java, take a look at their jobs board: [http://www.amazon.com/gp/jobs/ref=j_sq_btn?jobSearchKeywords...](http://www.amazon.com/gp/jobs/ref=j_sq_btn?jobSearchKeywords=Java&category=*&location=*&x=0&y=0))

Google ([http://www.quora.com/Why-does-Google-prefer-the-Java- stack-f...](http://www.quora.com/Why-does-Google-prefer-the-Java-stack-for- its-products-instead-of-Python/answer/Robert-Love-1))

Twitter (They started out entirely Ruby, but converted pretty much their entire stack to the JVM through use of Java and Scala, due to scaling issues [http://www.wired.com/2013/09/the-second-coming-of- java/](http://www.wired.com/2013/09/the-second-coming-of-java/))

LinkedIn ([https://engineering.linkedin.com/play/play-framework- linkedi...](https://engineering.linkedin.com/play/play-framework-linkedin))

Yahoo

Facebook ([https://www.facebook.com/careers/department?dept=grad&req=a0...](https://www.facebook.com/careers/department?dept=grad&req=a0IA0000006cQPNMA2) [https://www.facebook.com/careers/department?dept=grad&req=a0...](https://www.facebook.com/careers/department?dept=grad&req=a0IA000000G3E1tMAF))

Salesforce ([http://salesforce.careermount.com/candidate/job_search/quick...](http://salesforce.careermount.com/candidate/job_search/quick/results?sort_field=post_date&sort_dir=desc&keyword=Java))

The list just goes on and on. It's fast (okay maybe not as fast as carefully hand-rolled C++, but used the right way it can get near to it), has lots of mature tooling, and most importantly of all is absurdly stable.

If you're worried about start up time, you're likely worrying about the wrong thing. Amazon, for example, is well known to scale up and down their infrastructure on demand, and yet they're running on Java. They wouldn't do that if application start-up time was a problem.

It's rare to see java applications that take more than 5-10 seconds to start up unless they're insanely monolithic and pulling in large numbers of libraries (aka enterprise stacks like Websphere), and once they're running you leave them running. Java start up time should be the shortest part of the whole 'spin up a new instance and start handling requests'.</comment></comment></comment></comment></comment></comment></comment></comment>


Los Angeles unveils puny BMW electric police car - <AUTHOR> http://www.usatoday.com/story/money/cars/2015/09/12/bmw-lapd-patrol-car/72139634/ <comment><USER2> Police vehicles seem like one of the last things that should go electric, because they get used around the clock.</comment>


Anime4K: Real time high quality video upscaling - <AUTHOR> https://github.com/bloc97/Anime4K <comment><USER2> Part of the abstract at the bottom:

"The proposed algorithm can be quickly described as an iterative algorithm that treats color information as a heightmap and 'pushes' pixels towards probable edges using gradient-ascent. This is very likely what learning-based approaches are already doing under the hood (eg. VDSR[1], waifu2x[2])."

This is interesting to me because it hints at the direction I really want to see ML stuff go.

Some problems may not lend themselves to this concept, but hear me out: We train models, they start giving reliable output, then we put it in production really having no idea what the thing is doing inside. Here we have a traditional image processing algorithm that's doing something similar to what the author suspects the ML-based solution is doing... only the authors solution is much more performant. What I think we'd love to see is the ML approach yield a result that not only works, but is transparent in how it works. So plain old human engineers can internalize what the machine learned, and re-implement the solution as a run-of-the mill algorithm that does the job faster than pretending to be a brain.

Is this feasible?

<comment><USER3> Feasible? That seems highly dependent on the task at hand. Worthy? Absolutely!

Perhaps MT (machine teaching?) is the next evolution of ML.

My enthusiasm in this instance is probably tempered by the fact that image resizing is on the simple end of things we're using ML for, I'd think.

It's a two dimensional grid of data points. That's it. I mean, that's certainly not trivial (look at all the algorithms we've come up with just in the last 10-20 years! imagine all the people-hours!) but it pales in complexity to, say, weather models or automated scanning of PET scans for tumors or something.

Image the output of any given image sizing algorithm can be quickly assessed by eye so that's a very convenient feedback loop. As opposed to say, using ML to come up with proposed oil drilling locations where testing out each proposed drilling spot is a very expensive proposition.

        So plain old human engineers can internalize what
        the machine learned, and re-implement the solution
        as a run-of-the mill algorithm that does the job
        faster than pretending to be a brain.

Perhaps we can cut out the middleman here. Maybe the answer is not for ML models to come up with human-understandable algorithms. Perhaps the answer is for them to produce optimized code that implements the algorithms they've discovered.

Disclaimer, in case it's not blindingly obvious - I am not versed in ML at all.

<comment><USER4> > Perhaps we can cut out the middleman here. Maybe the answer is not for ML > models to come up with human-understandable algorithms. Perhaps the answer > is for them to produce optimized code that implements the algorithms they've > discovered.

I would rather a high level algorithm description as an output -- which could definitely be fed into some sort of compiler that ultimately outputs executable code.

I feel like going straight to executable code isn't solving the problem GP was interested in, which I believe to be the problem of transferring knowledge from machine to engineer in much the way an engineer would transfer it to another engineer.

An algorithm that outputs code without any high level understanding or documentation is about as useful to me in a large project as an intern who can copy-paste from Stack Overflow and produce volumes of code with no documentation, in the long term.

<comment><USER3> Yeah, that would of course be preferable. A humanized description like "push the pixels toward the edges" is of course a wonderful thing.

I suspect many (most?) algorithms are sufficiently complex as to make this completely infeasible, but hopefully I'm wrong!

</comment></comment></comment></comment><comment><USER5> Definitely a breath of fresh air that someone's still trying to do super- resolution without neural networks. This example shows that at the moment, it can still be better and MUCH faster to use classical CV techniques for certain applications.

<comment><USER6> A similar thing happened with upscaling algorithms for video games. AMD's Contrast Adaptive Sharpening was shown to have superior image quality than Nvidia's Deep Learning Super Sampling[1]. Plus the former algorithm works on every game and doesn't need a training set unlike the deep learning algorithm.

[1] [https://www.techspot.com/article/1873-radeon-image- sharpenin...](https://www.techspot.com/article/1873-radeon-image-sharpening- vs-nvidia-dlss/)

<comment><USER7> ML implementations can insert detail that was never present in the original image. You can't get that with other methods. That may or not be a good thing depending on the source material and your desired result.

<comment><USER8> "detail that was never present" doesn't exist.

ML can insert "its best guess based on a training set". A human-tuned algo can insert "its output as defined by the handwritten aglo", which presumably is based on the human's own "training set" of personal experience.

but the truth of any lossy encoding is that... information is lost, period. best you can do is guess as to what was there.

<comment><USER9> This is one of those old talking points people for some reason love...

"Information is lost" is too vague. You're counting bits on disk, but fewer bits does not always mean "less information" when your algorithm gets smarter. Compression is the obvious, classical example. Even for lossy compression, information loss is << change in size.

ML offers the promise to take this to extreme levels: give it a picture of (part of) the NY skyline, and it adds the rest from memory, adjusting weather and time of day to your sample. Is that new information "real"? That's really up to your definition.

The best example of this idea is those CSI-Style "Enhance" effects: It used to be true that people on Slashdot and later HN would outrank each other with the superior smartitude of saying "That's impossible! Information was lost!".

Funny story: that effect now exists. It's quite obvious that, for example, a low-res image of a license plate still contains _some_ data, and that an algorithm can find a license plate number that maximizes the probability of that specific low-res image. With a bit of ML, those algorithms have become better than the human brain in almost zero time flat.

Turns out the information was still there.

<comment><USER10> This is quite capable of producing a high-res image of _some_ license plate, yes. But it's only probabilistic: there's no proof that the license plate definitely has the exact same number as the one in the low-res photo. You have to allow for the possibility of the system hallucinating the wrong result and enhancing the certainty of it. While you could use it as input to a police search it would be grossly unjust to show such an enhanced image to a jury.

<comment><USER11> Like the Xerox scanner bug which randomly altered digits in numbers. These problems aren't just theoretical.

[http://www.dkriesel.com/en/blog/2013/0802_xerox- workcentres_...](http://www.dkriesel.com/en/blog/2013/0802_xerox- workcentres_are_switching_written_numbers_when_scanning)

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> Interesting bit since I always figured waifu2x was the best at upscaling:

>Interesting enough, waifu2x performed very poorly on anime. A plausible explaination is that the network was simply not trained to upscale these types of images. Usually anime style art have sharper lines and contain much more small details/textures compared to anime. The distribution of images used to train waifu2x must have been mostly art images from sites like DevianArt/Danbooru/Pixiv, and not anime.

<comment><USER13> Which is a bit ironic because I always thought that the name 'waifu2x' came from anime/otaku culture, yet it sucks when applied to anime. ¯\\_(ツ)_/¯

<comment><USER14> It performs well on anime-style (static) drawings, as opposed to animation.

</comment></comment></comment><comment><USER15> I'm not sure I understand how the author compares the quality in the preprint.

In the chart, it says to compare "perceptual quality", but the axis is only marked with "blurry" and "less blurry". Sharpness is not the only thing about the (perceptual or not) quality. I can tell that Anime4K's result is indeed very sharp, but the quality of the edges/lines are very unnatural even for the examples author provided. I personally would prefer a slightly blurry lines with less "oily effect".

Also, I didn't see any comparison with ground truth, i.e. having a high- resolution image first, resize it down, use the proposed algorithms (among existing ones) to upscale it back, and then compare the upscaled results with the original image. I understand it may be hard to find enough examples of 4k animes, but we can do so with 1080p -> 480p -> 1080p etc.

(I am not familiar with this domain, do similar researches normally do this or not in their analysis?)

<comment><USER16> There is no ground truth because AFAIK there are no native 4k anime produced yet. There are _very_ few produced at 1080p. Most 1080p that are released by studios are just an upscaled 720p master. Fansubbers will sometimes release their own upscaled 720p when the studio upscale was done very poorly.

To my knowledge, not much has changed since 2017 where only a single anime (Clockwork Planet) was produced in 1080p. The only two studios I can name offhand that I know have done 1080p masters are KyoAni and JC Staff.

[0] 2017 reference: [https://www.reddit.com/r/anime/comments/65wqeu/spring_2017_a...](https://www.reddit.com/r/anime/comments/65wqeu/spring_2017_anime_resolution_chart/)

<comment><USER17> Excuse my ignorance, I would have thought Anime would be much easier to be produced in 4K or even 8K when compared to movies that requires 4K / 8K Camera.

Why have they stuck with 720P and 1080P?

<comment><USER18> It is actually harder to produce in 4K/8K due to more details that need to be drawn to not make it looked too empty and need to make sure the lines are not too thick (e.g. by using a larger paper). TV series are usually drawn on an A4 paper with 1-2 inch margin while a proper theatrical releases are drawn on a B4 paper.

Another factor, I believe, is the know-how. In my opinion, despite anime being broadcasted in 16:9 for so long, it is only in recent years where the extra width are put in a good use during layouting.

</comment></comment></comment></comment><comment><USER19> I've also been wondering if there is something similar to Content Aware Fill that can help process old 4:3 cartoons to 16:9.

A lot of the really old cartoons would use a background art image and would pan over it with the characters dong stuff to create a sense of motion. Sometimes the characters would move over a still background image but the 'camera's would zoom in.

Something that could extract the full size background image to apply it to the frames to enlarge the aspect ratio could go a long way toward revitalizing a lot of older cartoons. Especially fit could fill in any gaps using the opensource equivilent of Content Aware Fill (is there an FOSS equal?)

I've been trying to get my kids into Space Ghost Coast to Coast, Home Movies, Sealab 2021, the Simpsons, etc. If the video is wide screen they try it and enjoy it. If it's 4:3 they barely give it a chance because it's "too old"

<comment><USER20> _"using the opensource equivilent of Content Aware Fill (is there an FOSS equal?)"_

[https://en.m.wikipedia.org/wiki/Seam_carving#Implementations](https://en.m.wikipedia.org/wiki/Seam_carving#Implementations):

 _"Adobe Systems acquired a non-exclusive license to seam carving technology from MERL, and implemented it as a feature in Photoshop CS4, where it is called Content Aware Scaling. As the license is non-exclusive, other popular computer graphics applications, among which are GIMP, digiKam, ImageMagick, as well as some stand-alone programs, among which are iResizer, also have implementations of this technique, some of which are released as free and open source software"_

Seam carving removes stuff, but the principle is the same. The Gimp plug-in is [http://www.logarithmic.net/pfh/resynthesizer](http://www.logarithmic.net/pfh/resynthesizer), and apparently also can do the filling-in. I haven't used it, so I don't know how good it is.

<comment><USER21> My only experience with Photoshop is through memes; is Content Aware Fill the same as Content Aware Scaling? I thought the former tried to guess what was "behind" something you removed, while the latter just moves the existing pixels around by guessing which ones need to stay together when you resize something.

<comment><USER22> See the PatchMatch research project and associated papers[1] for more detail. They are different tools in presentation and implementation within Photoshop but are based on similar concepts of randomized correspondence.

[1]: [https://research.adobe.com/project/patchmatch/](https://research.adobe.com/project/patchmatch/)

</comment></comment></comment></comment><comment><USER12> Didn't realize the madVR NGU algorithm is proprietary. A comparison of various upscaling algorithms: [https://artoriuz.github.io/mpv_upscaling.html](https://artoriuz.github.io/mpv_upscaling.html)

</comment><comment><USER23> waifu2x still much nicer for art of course (comparison: [https://i.imgur.com/4QkIUOc.png](https://i.imgur.com/4QkIUOc.png) 2x, [https://i.imgur.com/pQDuIpl.png](https://i.imgur.com/pQDuIpl.png) 4x)

but for the stated purpose this looks pretty good. for example, 720p [[https://giant.gfycat.com/AccomplishedBelatedBlueshark.webm](https://giant.gfycat.com/AccomplishedBelatedBlueshark.webm)] to 1440p [[https://giant.gfycat.com/FluidBlissfulCob.webm](https://giant.gfycat.com/FluidBlissfulCob.webm)] test. is subtle, improves video, and runs fine (tested via mpv, [https://mpv.io/manual/master/#options-glsl- shaders](https://mpv.io/manual/master/#options-glsl-shaders)).

<comment><USER24> What's GT? It performs the best in your examples.

Anime4k looks obviously like a filter (I think Photoshop has an effect that looks like that, but I can't remember the name at the moment), particular at the 4x setting.

<comment><USER25> GT = Ground Truth, it's the original image used for the comparison (before being scaled down and then to scaled up with the different algorithms)

</comment></comment></comment><comment><USER26> I found the preprint somewhat confusing with its talk of approximate residuals and "pushing" pixels. Let me propose another way to think of this and someone can tell me if I'm off base. Disclaimer, I haven't read the source code.

Consider a grayscale morphological operator such as erosion. For each pixel, you would replace the value with the minimum value found inside a structuring element surrounding the pixel. This is kind of like a weird morphological operator with a 3x3 box structuring element, where instead of choosing values based on a simple criterion such as 'min' or 'max' you use information from an approximation of the image gradient. If the gradient magnitude is above some threshold, you select the neighbor pixel in the 3x3 structuring element in the opposite direction of the gradient.

This generally has the effect of making the edges more pronounced. Intuitively, you're distorting the image by "pinching" along the edges. To prevent weird color artifacts, they're using edges computed on grayscale data so that the identical morphological filter is applied to each color channel.

It seems similar but not identical to the method described in this paper: T. A. Mahmoud and S. Marshall, Edge-Detected Guided Morphological Filter for Image Sharpening 2008 [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.384...](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.384.8621&rep=rep1&type=pdf)

In any case, great looking results! Proof that neural networks have not yet made thinking obsolete.

</comment><comment><USER27> > [...] the proposed method [...] is tailored to content that puts importance > to well defined lines/edges while tolerates a sacrifice of the finer > textures.

and

> [...] a big weakness of our algorithm [...] is texture detail, however since > upscaling art was not our main goal, our results are acceptable.

That sounds like a multiobjective optimization problem. If this multiobjective optimization problem was solved (permitting the nature or structure of the multiobjective optimization problem, of course), then the algorithm would be improved, don't you agree?

Did the authors of this algorithm not have the capability to formulate or recognize the multiobjective optimization problem?

Or if they did have the formulation capabilities, but that they did not have the capability to solve the multiobjective optimization problem? Why if so? Too difficult? Not enough time? Limited by a resource? No intention to have done so, excepting that they said that a specific trade-off was acceptable?

You're welcome to share your speculation or opinion, Hacker News reader.

I'm curious to know your thoughts, is all.

<comment><USER28> I believe they recognise the problem is a multiobjective optimization problem (hence the formulation of their sentence) but their algorithm is not parametrizable : it is a single point on the pareto front and you would need other algorithms to explore the rest of the front.

</comment></comment><comment><USER29> I'm not super clear on why speed was a primary goal if the intended application is upscaling anime. If this were intended for, say, sharpening the graphical output from a game console, sure, but why does premade video content like anime need upscaling that only takes 3ms instead of 6ms or even 60ms?

<comment><USER30> So you can simply have it as an option in a media player (as they indeed have theirs) instead of requiring a cumbersome preprocessing pass which will in addition produce a much larger file size.

</comment></comment><comment><USER31> I have a small resolution video of a (static) scene, and a high resolution photograph of the same scene. Does anyone know of an upscaling algorithm that takes an image as auxiliary input?

Maybe some style-transfer related algorithm could be useful in this situation?

</comment><comment><USER32> The examples seem to focus on characters.

Wonder how it works on more "fancy" looking anime like

[https://www.youtube.com/watch?v=eVGbgBy_yo4](https://www.youtube.com/watch?v=eVGbgBy_yo4)

</comment><comment><USER33> Any video examples? If you want a good subject, take the final fight scene from the 1080p latest episode of Kimetsu no Yaiba (Ep 19) and upscale to 4K.

Also does this run on Linux or Mac? Haven't had a Windows machine in years.

<comment><USER34> If I understand it correctly, the whole project is one shader file. Sure it's portable, just pick the glsl file from the repository and plug it into your favorite video player.

Edit: uh-huh.

[https://github.com/bloc97/Anime4K/blob/master/GLSL_Instructi...](https://github.com/bloc97/Anime4K/blob/master/GLSL_Instructions.md)

</comment></comment><comment><USER13> Can somebody explain why it would matter that the ground truth be at exactly 2160p resolution?

How about using the same algorithm to upscale 540p to 1080p, and compare with 1080p ground truth? Would that not be sufficient?

<comment><USER35> It's explain in some detail in the article, but in essence, imagine a fine pen line which in 540p would be less than one pixel wide but in 2160p would be multiple pixels wide. The problem solved by Anime4K algorithm is essentially producing sharp edges of the line when upscaled to 4k, which is a different problem from upscaling a <1 pixel antialiased line.

</comment></comment><comment><USER36> Interesting. Curious about applying this to normal real world images

<comment><USER37> It's very likely that the results won't be as desired. Anime is nearly always a synthetic image which is intended to be clean and geometrically based (even if there are gradients and more real world additions; it's a synthetic).

The application domain for this includes any other sort of abstract logical synthesis, charts and maybe videogames (even ones that look realistic).

Real world content also has sharp boundaries between objects, and whatever part happens to do that work might be shared, but within objects fuzzier is probably better. IIRC someone was making an AI assisted upscaling of DS9 which would probably be closer to a generic algorithm for 'filmed' content.

</comment></comment><comment><USER38> Nice. Can they interpolate frames, too, so that old 5fps anime can get an upgrade?

<comment><USER39> Going from something like 30fps to 60fps, interpolation works decently well in many cases, because there's already so much information encoded in the 30fps. And _some_ 15fps can work too.

But with 5fps, each frame can be so radically different, I think interpolation is generally just not possible. You can generate _something_ smooth, but it will be _so_ far away from whatever an animator would actually have inserted, that it will seem more strange/surreal than natural, and thus achieve the opposite effect as intended.

E.g. see [1] which shows animation at 15/30/60fps... you can see that even with the 15, it's hard to imagine an algorithm that would port well to 60. (Use the period on your keyboard to advance frame-by-frame.)

[1] [https://www.youtube.com/watch?v=npMreLeVD6o](https://www.youtube.com/watch?v=npMreLeVD6o)

<comment><USER40> I did some tests on this, trying to find footage I thought would be least well suited to interpolation:

[https://twitter.com/jonathanfly/status/1156343739738152961](https://twitter.com/jonathanfly/status/1156343739738152961)

[https://www.youtube.com/watch?v=FRHmGEEemoY](https://www.youtube.com/watch?v=FRHmGEEemoY)

</comment></comment></comment><comment><USER41> Are algorithms like this ever used by cartoon-style video games to improve apparent rendering resolution?

</comment><comment><USER42> Would there be a web use-case here (i.e. converting shaders to webgl) for e.g upscaling map tiles?

</comment><comment><USER43> Is this someone reinventing xbr series of pixel art scaling filters?

</comment><comment><USER44> Does anybod know how to use these shaders with pot player?

</comment><comment><USER45> In the example they're up scaling 1080p content to 4K. Am I missing something or is that not particularly impressive? Isn't it just pixel doubling?

<comment><USER46> No if they did that it would look "pixelated".

They seemed to have built an edge optimized image upscaler. It prevents the edges from becoming soft during the upsampling.

You can clearly see the difference in their comparison pictures (of which they have a metric ton)

<comment><USER47> I'm pretty sure this is what nvidia DLSS does. Only this works much better than DLSS I think.

<comment><USER48> Per the name (Deep Learning Super Sampling), DLSS uses a trained neural network to achieve high-quality upsampling. The neural network is trained on representative output of the game at the internal framebuffer resolution and at the target output resolution (with SSAA and such).

The upsampling algorithm in the OP is not based on machine learning but is also fairly domain specific and of limited general applicability.</comment></comment></comment></comment>


Galaxy S3 Features Include Free 50 GB Dropbox - <AUTHOR> http://www.galaxyinsider.com/news/1039

<comment><USER2> Misleading (and possibly flat-out wrong) title:

"There is no specific information in the deal as to exactly how much additional free space Dropbox will be providing on Samsung devices beyond the 2 GB. "

Can't we find a way to ban accounts that are solely for promoting their own blogs?

</comment><comment><USER3> I got 50gb added to my Dropbox account when I logged into the Dropbox app on the 7" Samsung Galaxy Tab 2. Maybe it will be a feature for all upcoming Samsung android devices.

</comment><comment><USER4> Kudos to Dropbox, although I wonder how this sits with the Android / Google Drive integration I assume is around the corner?</comment>


Xbox Project Scorpio Specs Exposed Eight CPU Cores, 40 GPU Cores, 12GB of GDDR5 - <AUTHOR> http://hothardware.com/news/xbox-project-scorpio-specs-exposed <comment><USER2> Original source: [http://www.eurogamer.net/articles/digitalfoundry-2017-projec...](http://www.eurogamer.net/articles/digitalfoundry-2017-project- scorpio-tech-revealed)

And HN discussion: [https://news.ycombinator.com/item?id=14050338](https://news.ycombinator.com/item?id=14050338)

</comment><comment><USER3> Sounds like a pretty interesting console. And given the customization it also sounds like the fusion of the 'standard' PC architecture and the 'custom' console architecture have blended a bit more. I find it pretty amazing that AMD sees this sort of customization as cost effective (consoles are price sensitive so it would be hard to earn back your NRE on low margin parts)

<comment><USER4> AMD also sells the console chips at a very low profit margin. They benefit a bit from their name being on so many products as well as hoping that games are optimized for AMD hardware which will benefit their PC business side as well.

Well, that's the plan, but NVidia is kind of wiping the floor with them.

</comment></comment><comment><USER5> On iOS, they circumvent the reader feature and then hover the ads on top of the article content, so all I can read is the headline.

<comment><USER5> In case anyone runs into the same thing, there's a classic mode link at the top right in the blue header bar. This will go to a more mobile friendly experience.

<comment><USER6> Yes, thanks. And we instructed our mobile platform people to remove the ribbon ad at the bottom. We do aim to please. :)

</comment></comment></comment><comment><USER7> If nothing else, it is technically impressive. Especially if they can hit "consumer pricing" as they desire to.

<comment><USER8> They probably can sell at a loss and make it back on Xbox Live subscriptions and other licensing.

</comment></comment><comment><USER9> I want something like this for deep learning at home (and gaming on my free time)

<comment><USER10> What's stopping you from setting up a PC to do this now?

GPUs with 4GB of RAM like the Nvidia GTX 1050Ti aren't expensive.

I just built a few Kaby Lake workstations with NVMe SSDs and those GPUs, and it is a slick little platform.

<comment><USER11> One of the best ways to put life back on to long unused desktops lying around is 1\. 1050Ti ($150) 2\. Ubuntu 16.04 LTS

I did this to a 6 year old Dell XPS 8300, and now that thing rocks!

(I do a little bit of Tensorflow playing around on it).

<comment><USER10> Yup. General comments to the folks reading this from home:

For machine learning, you'll want as much RAM on the GPU as possible. I can't recommend a 2GB GPU card. 4GB cards can be less than $140, and then there is a jump in price to the 8GB cards (6GB cards aren't cheaper enough to consider, in my opinion).

Check that your power supply has the extra PCIe 8-pin power connector, though some of the GTX 10xx series cards don't require any additional power.

8GB system RAM minimum is also what I'd recommend. Some NN applications can benefit significantly from a faster CPU, even though it is mostly running on the GPU. For example, for training a Caffe model, an Ivy Bridge i7 was vastly superior to a Kaby Lake i3, using the same GPU card.

</comment></comment></comment></comment><comment><USER12> Why no HBM?

<comment><USER13> HBM (and HBM2) is still too expensive. Consoles optimize for cost effectiveness, and often usually the hardware at a loss.

<comment><USER12> that makes sense thanks!

</comment></comment></comment><comment><USER14> So let me guess. After XBox 1 was rolled out, it was compared unfavorably to the competition. So MS lowered the price. Then it had to make it backward compatible with XBox 360 games - further limiting its revenues. So I'm guessing now MS thinks they can squeeze more $ out of consumers by simply upgrading once again.

Look MS, maybe you can't keep growing this market indefinitely.

<comment><USER15> I love games but I've never once used backwards compatibility with new consoles. It's never quite the same. Plus in some cases, who wants to buy the games again, really?

<comment><USER16> On the Xbox, if you owned it on the 360, you own it on the One. You can either download it from your library if it was a digital purchase, or stick the disc in the One if you have the disc.

I have not noticed any difference between playing, say, Burnout Paradise on my 360 vs. on my One. So it seems like MS actually did a decent job on it.

'Course, you're probably referring to how you have to buy Playstation 1 games to play them on the Playstation 3 or 4, right? I have a PS3, but I've never had any PS1 games. They really don't let you just stick the disc into the PS3 to confirm you own it and then download the emulated game from the Playstation store?

<comment><USER17> PS3 owner here.

There are three levels of backward compatibility for the PS3: \- PS2 in hardware / PS1 in software \- PS2 in software / PS1 in software \- PS1 in software

The PS2 in hardware was only select launch consoles (20 GB and 60 GB). PS2 in software were the 80 GB consoles, but that feature was patched out in an OS update some time ago. All PS3s have PS1 backwards compatibility for games from the PlayStation Store and the physical media. I was playing Chrono Cross the other day on my PS3 slim with no issues.

<comment><USER18> > PS2 in software were the 80 GB consoles, but that feature was patched out in > an OS update some time ago.

I never heard of that happening, when was that?

Wikipedia says that those 80GB consoles still had hardware PS2 GPUs and only did the CPUs in software, and that later models took out everything. No mention of software downgrades.

<comment><USER17> I stand corrected.

There is an 80 GB model that is backwards compatible with disc based games (though it's backwards compatibility is only listed as "limited"), and, according to Sony, all PS3s can play PS2 classics downloaded from Sony. See this article for more details:

[https://support.us.playstation.com/articles/en_US/KC_Article...](https://support.us.playstation.com/articles/en_US/KC_Article/Play- PSone-and-PlayStation-2-Games-on-a-PlayStation-3)</comment></comment></comment></comment></comment></comment>


My first year of astrophotography - <AUTHOR> https://joelkuiper.eu/astro <comment><USER2> The pictures in this story, in the context of someone trying to figure out astrophotography for the first time, are just as inspiring as NASA's deep space images. It's a pleasure to read of someone's first personal experience with deep space objects.</comment>


Sacrifice democracy, while you still have time - <AUTHOR> https://medium.com/@aptrishu/sacrifice-democracy-while-you-still-have-time-bb0ffb7d9c99 <comment><USER2> Anybody who's read anything about US history would have a chuckle at the idea that a democracy cannot build canals.

I'm also a little puzzled that your post-democracy solution, apparently, is the House of Commons and the House of Lords, more or less.

</comment><comment><USER3> IDK why this is top 50 on HN.

Not to be "mean", but it's either broken thoughts or broken English (not sure which), and off topic to boot.

> Off-Topic: Most stories about politics, or crime, or sports, unless they're > evidence of some interesting new phenomenon. Ideological or political battle > or talking points.

</comment><comment><USER4> Communism doesn't have a great track record either.

1\. Tienanmen square

2\. Great firewall of china.

3\. Most of the judicial system in china

4\. cuba

5\. venezuela

Also, the stock market and the 24 hours news cycle hasn't had as long a time to corrupt china like it has democracies.

Most of the US is optimized for better stock results.

<comment><AUTHOR> So, I am not saying to adapt communism. But to think of a better alternative that should at least sound logical (unlike democracy). We need to understand the faults in our democracy rather than criticizing china's government. Because I know there are many conflicts within china but the economic growth there is much better.

<comment><AUTHOR> The ancient greeks designed this whole concept. Can't we? Do something better? A healthy discussion was the reason for its partial working at that time in Greece but its not possible now. It is simply not feasible.

<comment><USER2> Modern democracies don't look that much like Athenian democracy did.

</comment></comment></comment></comment><comment><USER5> This is a topic that in general warrants a lot more discussion and attention than it currently receives. Also, while the components of it's analysis exist in the academy (economics, management, sociology, psychology etc) I don't think it exists as a separate domain and I don't think anyone publishes about it. If I'm wrong, please correct me.

In my limited understanding, as I've spend a lot of time pondering about these questions, the problems the writer is concerned about (corruption, inefficiency, distribution and management of resources) are not a side effect of democracy itself. Democracy allows for these problems to be corrected, and indeed in many democratic countries they have.

Regarding the slow development of India (and much of the world) in comparison to China, there are quite a few pieces to the puzzle that the author misses. China was both lucky and unlucky. The reason they were allowed to advance so fast, unlike India, Africa and much of Europe actually, is because they accidentally (in my opinion) managed to strike a number of conditions, which allowed them to develop while in control of their country. Similarly with South Korea.

That is that they joined the era of globalization with a strong, central, national and authoritarian government and a lot of impoverished workers. The Chinese government managed to be "left alone" by US corporations by playing on capitalism's greed without borders: They provided a very cheap workforce, by the condition of managing it themselves. By keeping the cancer of foreign corporate infiltration off their land, they could reinvest the profits on local infrastructure, which gave them a high ROI (as they were selling the developed countries) and simultaneously acquire technical know-how on production technologies.

Foreign powers tend to leave systems that work for them in place, ie nobody tried to fix India's caste system when they first arrived, because it provided stability for them. Similarly, the modern western corporations saw the Chinese government as a tool to control and manage a billion workers for free.

This is in contrast with much of Latin America's countries. When people took control of their own country, completely opposing the interests of US corporations, they would be murdered by US-funded coups and dictators. So that leads me to believe that the practical road to success for small countries lies in taking advantage of the predictable behavior of foreign powers and gradually taking out the leash from their necks.

And what holds for international issues scales down to intra-national ones. Proper organization and coordination between parts of society can lead to a practical, achievable path to a better world. It's a very complex problem because knowledge of the proposed solution can lead to an alteration of the circumstances, but it might be solvable.

Sorry for the blogpost.

<comment><USER6> I wouldn't say China's rise to global power (in many different categories) was due to "luck". China has been one of the most advanced civilizations in history. They also have the second largest military force. The US did not have to manipulate the Chinese workforce into global trade. China was a willing and very capable participant. You need to realize they are a large and powerful country. Not a banana republic.

Further more The Great Leap Forward is estimated to have cost 20-50+ million Chinese lives. I'd say China did pretty well on its own with out foreign intervention when it came to "greed".</comment></comment>


Poland's Central Bank Secretly Paid YouTubers to Slander Cryptos - <AUTHOR> https://www.trustnodes.com/2018/02/17/polands-central-bank-secretly-paid-youtubers-slander-cryptos <comment><USER2> So here's some more context about the campaign, because this article is very biased as well. The information campaign is owned by both the central bank and the financial supervision committee (not sure if there's an official translation of that name). It's not a local idea, but rather a local implementation of the European effort. You can find more details here: [http://www.eba.europa.eu/-/esas-warn-consumers-of-risks- in-b...](http://www.eba.europa.eu/-/esas-warn-consumers-of-risks-in-buying- virtual-currencies)

The committee's involvement is not surprising in this case. One of the agency's goals is to provide information about financial risks. It even keeps a public registry of companies reported for not paying their debts (think credit score for businesses). It's very much what they should be involved in. In case anyone thinks they're on the banks' side - they're involved in prosecuting banks and pension funds regularly.

As for the contents of the campaign's site [https://uwazajnakryptowaluty.pl/](https://uwazajnakryptowaluty.pl/) \- it's very reasonable. I couldn't find anything outright wrong on it. It doesn't even tell you that you shouldn't buy Bitcoin. The repeated information and claims are not very different from what you sign when you open a share dealing account - you can lose money, gains are not guaranteed, these investments are not insured, lack of liquidity is possible, etc.

The social advertisement campaigns are also nothing uncommon in Poland. Sober driving, don't dive in shallow water, read to your kids, and similar topics are the common target of the social ads / PSAs that are created when some issue gets too common in the country.

The fact that the are no gov logos in the video clip is weird. (Also the clip is _extremely_ cheesy - think high school video project about misinformation surrounding cryptocurrencies) But the campaign itself seems fine. The post is very sensational.

<comment><USER3> Polish people tend to have very low knowledge about any form of investing. First of all it is economically unavailable to at least ~50% of our citizens, earning dominant income of ~6400 USD _per year_. People with serious investing skills and knowledge are a bunch within top few percent of highest-earning citizens. I work as a programmer in software company. Many of my high-earning colleagues "invest" in Bitcoin because it's hot, while they know next to nothing about investing, markets etc. So I would agree that informational campaign is generally a good idea, learning a lesson from our history with CHF mortgages and scams like AmberGold. As to "lack of access to information in English language" and issues with internet access, this is just funny. We have literally the cheapest internet in the world, good LTE coverage, FTTH in cities and fiber-to-every-school programme. Silicon Valley has far worse internet than most of our country, for what I've heard :)

</comment></comment><comment><USER4> A central banks role is to provide the monetary system for the exchange of goods and services in a country.

If a countries citizens go and spend their personal money on risky or stupid investments, it is _also_ the countries problem. If those investments fail, you will now probably have to use government funds to bail them out in some way. Bankruptcy is a government bailout of sorts.

Therefore it does not seem unreasonable for a central bank, whose role is ensuring a strong monetary system, to try to educate it's indirect users on good and bad risks to take to try to make the country as a whole more competitive.

If the video should have had attribution is a policy issue for YouTube and the country. Given that attribution would probably have reduced it's effectiveness, I can see why the country would want it without attribution.

<comment><USER5> This isn't education. An analogy would be a sex "education" campaign that teaches everyone they will get pregnant or AIDS the first time they have sex and that the only way to avoid such things is abstinence.

Making up lies with the hope that it will influence behavior in the "right" way is not education and is not the way a government institution should behave.

<comment><USER6> Do you speak enough Polish to evaluate the video, whether it "lies" or not, whether it is clearly presented as a hypothetical worst case scenario that actually happens to some people like government media advertising usually does (and for that matter whether it is likely to have had any editorial oversight from the Polish govt)? It would actually be interesting to hear the views of some of the Polish speakers here.

Because unless there's an awful lot lost in machine translation, the government information website it links to might be anti-crypto slanted but is pretty bland and factual about the risks involved in crypto and its status under Polish law.

(Of course, what's easier to evaluate is the judgement of English language crypto websites like Trustnodes which attack the SEC for "effectively calling investors stupid" for having the temerity to suggest they might not be in possession of all the facts and for the "draconian" halting ICOs that were "legitimate" in every way except perhaps being precisely the sort of unlawful securities offering the SEC is tasked with shutting down. So there's a distinct possibility they just might be exaggerating a tad here)

<comment><USER7> I can speak some basic polish, but it's pretty clear from the video that this is all hypothetical.

The basic moral of the video is kind of a combination of don't just assume you're going to get rich off of crypto investing and on a broader stroke, don't put all of your eggs in one basket. (e.g. - don't invest your daily spending money)

</comment></comment></comment></comment><comment><USER8> This article is itself propaganda, of course, being from a pro-cryptocurrency "news" site. It's a little tricky to establish corroboration of the claims as all other sources are in Polish.

> "usually, within a democracy, it is illegal for state actors or contractors > to engage in propaganda directed at their own citizens."

This isn't true, or at least I'm not aware of places where it is; this would make it very hard to do "public information" advertising.

<comment><USER9> I wish it were more true. Commuting between Hayward and San Francisco, I got to see lots and lots of advertising, mostly government propaganda. It fell into two categories:

1\. "Instead of killing yourself, why not call a suicide hotline?" I guess BART tracks see elevated levels of suicide. I don't really have much of a problem with this one.

2\. "If you let your infant sleep in the bed with you, you are a bad parent." I have a problem with this. What a disgusting thing for the government to be doing.

<comment><USER10> >What a disgusting thing for the government to be doing.

There is a significant association between bed-sharing and infant death. An adult bed presents far more hazards of entrapment, suffocation and strangulation than a properly-designed crib or bassinet. I haven't seen the advert in question and can't comment on how accurately it conveys the evidence, but I think that it's absolutely right to strongly warn parents about the risks of bed-sharing.

If you think that it's disgusting for a government agency to try and save the lives of babies, that's your prerogative.

[http://pediatrics.aappublications.org/content/early/2016/10/...](http://pediatrics.aappublications.org/content/early/2016/10/20/peds.2016-2938)

</comment></comment></comment><comment><USER11> I'm Polish and I feel offended by this article, especially the last paragraph. Whatever our national bank did, it's not OK to write about it in such a tone.

<comment><USER12> Indeed. The author of the article seems to be implying certain things without any evidence. Most people in Poland dabbling in crypto are very well aware of information in English and use exchanges and websites that are in English anyway, so not sure where that article conclusion came from...

<comment><USER2> According to Wikipedia Poland's got 37% people who can speak English. That's across all population/ages. So yeah, claiming lack of access to primarily- English information is just silly.

<comment><USER3> Since nineties English class is mandatory at school on any level. B1 English is required to get our "bachelors" equivalent.

</comment></comment></comment></comment><comment><USER13> "Poland's lack of access, in general, to English language information" Im laughing so hard at this.

</comment><comment><USER14> well that's still an uneven balance between ICO fraudsters spending zillions on "get rich quick" scheme videos...

</comment><comment><USER15> Interesting note: Polish government wanted to implement a Polish cryptocurrency backed by the Polish currency PLN (similar to Tether) named dPLN, but then backed off the project [1] (link in Polish). Has anyone got any insider info on this?

[1] [http://www.wirtualnemedia.pl/artykul/kryptowaluta-digital- pl...](http://www.wirtualnemedia.pl/artykul/kryptowaluta-digital-pln- ministerstwo-cyfryzacji-wycofuje-sie-z-patronatu-nad-projektem-polskiego- bitcoina)

<comment><USER16> No, it wasn't the government - just a private company running within a state- sponsored accelerator. The government withdrew their funds after finding out about it.

</comment></comment><comment><USER17> Of course they did, because cryptos are a dire threat to their hegemony. Visa introduced changes to charge more for purchasing cryptos with their cards. Some banks block cards that are used for purchasing cryptos. Sometimes even your credit scored is lowered just for purchasing them.

The banking cartels have a vested interest in discouraging the public from taking any interest in cryptocurrencies at all, and they're only getting started. They will bring out the big guns soon, an you'll seeplain as day that the only thing they're interested in is they're bottom line, which is dependent on them controlling all your finances and taking a cut of every transaction you make.

Cryptos are a way to circumvent their control, and it's like cutting off their oxygen supply, if they become too popular the big banks and credit card companies will wither and die.

<comment><USER2> > Sometimes even your credit scored is lowered just for purchasing them.

Got any links about it? That's at least unexpected. One of the parties in the transaction would have to explicitly report that. I'd like to see what that credit line would look like.

The rest I'd expect, since those issues are directly related to Visa / banks protecting themselves from specific transactions. It doesn't even matter that it's specifically cryptocurrency on the other end. Just like they charge more for using credit cards for preorders at standard currency exchanges.

<comment><USER18> What they /probably/ mean is that VISA set a higher charge level for cryptocurrency exchanges than for other vendors.

Since the charges imposed by VISA are intimately related to the level of fraud they expect to see from a given vendor & the cryptocurrency space is stuffed to the brim with fraudsters and con artists this ought to be entirely unsurprising.

No cryptic (hah!) conspiracy theory required.</comment></comment></comment>


What happened to Liberia's ebola orphans? - <AUTHOR> http://www.irinnews.org/report/102070/what-happened-to-liberia-s-ebola-orphans <comment><AUTHOR> See also this photo essay about the stigma faced by the burial workers: [http://www.irinnews.org/report/102164/photo-feature-after- eb...](http://www.irinnews.org/report/102164/photo-feature-after-ebola-sierra- leone-s-burial-workers-fear-a-bleak-future)</comment>


Andrew Yang's Presidential Bid Is So 21st Century - <AUTHOR> https://www.wired.com/story/andrew-yangs-presidential-bid-is-so-very-21st-century/ <comment><USER2> > It's an indication that Yang is running a rather methodical, data-driven, > science-happy campaign.

Being a (1) "good grades" person trying to (2) solve "bad grades" problems (like things the govt. does) and (3) having essentially no personal experience in "bad grades" problems is a recipe for disaster.

To keep this on topic to the forum, this cultural disconnect between good grades and bad grades society makes it really hard for giant tech companies to enter new markets.

In my personal experience, a clear example of this is Google Stadia, which is all good grades people who don't really play games trying to make a product for bad grades people who play games all the time; or bad grades people who couldn't work at Google but are talented in some other way so they work for a game studio.

It's also why so many investors get sucked in by "fraudsters." They have the intuitive notion that being in bad grades society makes you more effective at understanding the average person's problems. But the interface between good and bad grades involves a lot of lying!

Andrew Yang is kind of a distilled example of this, talking about stuff that only people who lived in exclusively good grades society would believe is effective on the face of it. It's not quite the same as being super rich versus super poor (the typical dichotomy), because many people are super rich and got bad grades and just don't believe in the supremacy of technocracy as dearly as people who are its biggest beneficiaries.

The real problem is that when you're so deep in the thick of good grades, it's so extremely hard to open up your perspective. You think you're entitled to make all the decisions, and you think wielding power safely is to do so while expressing photographed emotions between dispassionate and smiling.

Meet the Zuckerberg Robot Meme the Presidential Candidate. At least Mark Zuckerberg had the good sense to look at the Facebook data and his New Jersey ed-tech experiment realize how deeply unelectable (and unqualified) he is.

<comment><USER3> What do you mean exactly by "good grades" people / "bad grades" people?

Are you trying to make some kind of insinuation as to people's intelligence here? Do you literally mean people who got good grades in high school and college versus those that didn't get good grades? Clarifying your base definitions would be very helpful in understanding the point you're trying to make.

<comment><USER4> I get this. If you've ever done software consulting for horribly backwards industries or companies, I think it's clear what he means. It's easy to look from the outside and see obvious and clear solutions. Why don't they fix that problem? Why do they still do that? You gather your requirements, make your solution, and hand it over. Of course, it's never that simple. There is a ton of historical gunk in their processes that people are too busy to fix, and they're busy tearing their hair out just to keep the ship running. Not even agile can save your software solution, it was doomed from the start. Soon enough, you're making spaghetti code to adapt to the spaghetti processes. It's so horrible that it's obvious why no sane or superstar-talented person wants to work there. It's not worth the pain and effort, it makes way more sense to work for a company that has a lot of things figured out. Ah, Netflix, where they publicly brag on their website about their culture and having dream teams full of superstars. Heck, Netflix pays way better too.

So the company gets the employees they deserve, not the employees they need. That isn't to say that Batman isn't worthy of respect. Batman saves the company over and over again every day. But they really needed Harvey Dent. Unfortunately, whenever a Harvey Dent goes to work for that company finally, he either dies a hero and has to leave, or he lives long enough to become the villain that just perpetuates the monstrosity and makes it worse. Hey, he's getting his paycheque, whatever, who cares anymore. The company is still alive and paying me. Before, I was so idealistic. Then I was biding my time while looking for a better opportunity at another company. Now I'm so full of apathy and cynicism that I'll just feed the machine while the machine pays me. I've got mouths to feed and my employees like how I still play the hero now and then. Heck, they even think I'm Batman, not Two Face. But every now and then, I'll backstab Batman, because look at what I am now. I'm not Harvey Dent anymore, I'm Two Face. But don't say that I'm not doing my job.

Companies get the people they deserve, they rarely get the people they need. Andrew Yang is trying to be Harvey Dent.

<comment><USER5> This was a delightful read.

<comment><USER6> I recongize so many people and situations at once in this little essay.

</comment></comment></comment></comment></comment><comment><USER7> As far as I can tell, Andrew Yang is the only canidate to extensively outline his positions.

[https://www.yang2020.com/policies/](https://www.yang2020.com/policies/)

<comment><USER8> This is rather common for all candidates. For example, Bernie Sanders outlines[0] all his positions in a similar fashion. I'd actually be more surprised if a candidate did not outline their positions this way.

[0]: [https://feelthebern.org/all-issues/](https://feelthebern.org/all- issues/)

<comment><USER9> Not saying your wrong, but there's a disclaimer at the bottom of that website:

"This website was built & is maintained by volunteers with no official relation to Bernie Sanders. We're regular people, unassociated with any Super PACs or billionaires. "

</comment></comment></comment><comment><USER10> How feasible would getting a federal UBI bill being passed even be? He can want it and push it all day long but if the support from congress isn't there (which it frankly isn't currently), what are the chances it will become reality? Executive orders exist but they have their limits.

<comment><USER11> Near zero. Few are really portraying how expensive this is. $1k a month for every American is just under 4 trillion dollars. For every adult American it would be just under 2.5 trillion. Currently, the entire federal budget is 3.8 trillion dollars. The GDP is 19.5 trillion. We're looking to spend an amount equivalent to the entire federal budget or 10-20% of the whole country's GDP on UBI. Yang's attempt to portraying this as fiscally feasible is based on the assumption that UBI will automagically result in extreme economic growth.

<comment><USER12> That's not how he portrays it though:

 _The means to pay for a Universal Basic Income will come from 4 sources:

1\. Current spending. We currently spend between $500 and $600 billion a year on welfare programs, food stamps, disability and the like. This reduces the cost of Universal Basic Income because people already receiving benefits would have a choice but would be ineligible to receive the full $1,000 in addition to current benefits.

2\. A VAT. Our economy is now incredibly vast at $19 trillion, up $4 trillion in the last 10 years alone. A VAT at half the European level would generate $800 billion in new revenue. A VAT will become more and more important as technology improves because you cannot collect income tax from robots or software.

3\. New revenue. Putting money into the hands of American consumers would grow the economy. The Roosevelt Institute projected that the economy would grow by approximately $2.5 trillion and create 4.6 million new jobs. This would generate approximately $500 – 600 billion in new revenue from economic growth and activity.

4\. We currently spend over one trillion dollars on health care, incarceration, homelessness services and the like. We would save $100 – 200 billion as people would take better care of themselves and avoid the emergency room, jail, and the street and would generally be more functional. Universal Basic Income would pay for itself by helping people avoid our institutions, which is when our costs shoot up. Some studies have shown that $1 to a poor parent will result in as much as $7 in cost-savings and economic growth._

From [https://www.yang2020.com/what-is-ubi/](https://www.yang2020.com/what-is- ubi/)

<comment><USER13> VAT is one of the most regressive taxes though, I don't understand how as a progressive one could see this as a benefit.

<comment><USER14> Essentially Amazon and Google etc pay little corporation tax due to legal avoidance schemes. VAT is one way to make sure they pay their share.

</comment></comment></comment></comment></comment><comment><USER12> I've been encouraged by his campaign thus far. Which seems to be much more focused on problems and solutions than engaging in the fruitless wrestling match that is our current political reality.

</comment><comment><USER15> "a dizzying list of 80 policy positions"

If I could relive my narrow miss for student council president (long before the Chicxulub crater), spraying positions everywhere like that would be the first thing I'd avoid repeating.

<comment><USER16> better than having literally no even semi-concrete policy positions. (see beto or buttigieg's websites)

<comment><USER17> Better than the candidate who says "I don't have all the answers, but as President I will weigh the opinions of both sides carefully and make an informed decision with the best interests of the American people in mind."

<comment><USER18> The problem is that candidate is undistinguishable from a chameleon who will be pushed around either by popular sentiment, special interests, eventually adopt policies you disagree with etc. Taking _some_ kind of concrete stand at least lays a base of where they're coming from and provides metrics of success or failure once in office.

The blank slate is more high risk high reward I guess.

</comment></comment></comment></comment><comment><USER4> Last month, I met various American MBA students from top US universities. Top of the top. As we rode in cars and ate lunches, they chatted about Democratic presidential candidates. They all didn't like Trump. This was about the time that a number of candidates had announced, and they were discussing who they liked or didn't like. I asked them what they thought of Andrew Yang, and they had no idea who he even was.

It showed me how much of an uphill climb Yang has to even get name recognition. I'd like to see any American to walk into any coffee shop and ask, "Hey, so what do you think of Andrew Yang?" and see what kind of name recognition he really has. If these top MBA candidates from top schools who were so enthusiastic for discussing Democratic candidates did not recognize him, who would?

As much as we might make fun of MBAs, I imagine them to still be more plugged in than average as to what's happening in the world, especially if they're Ivy Leaguers? Or does Andrew Yang really have good name recognition, and I just got unlucky in running into posers who have no idea about anything? Or are people really just not that plugged in after all?

<comment><USER19> > As much as we might make fun of MBAs, I imagine them to still be more > plugged in than average as to what's happening in the world, especially if > they're Ivy Leaguers?

I'm not really convinced this is a solid assumption.</comment></comment>


Civilization Starter Kit - <AUTHOR> http://opensourceecology.org/wiki

<comment><USER2> I've never heard of this before but it's something I've dreamed of for a long time because of _how fucking cool it is_. Whole Earth Catalog catapulted into the 21st century..!</comment>