Why Java Sucks – Jonathan Gardner - <AUTHOR> http://tech.jonathangardner.net/wiki/Why_Java_Sucks <comment><USER2> Such strong opinions.

 _> GC sucks_

 _> android app_

Android's runtime is not the Java Runtime. I'm starting to think Oracle should have at least gotten some damages from Google for causing so many people to think that the stuff _running_ on Android is _the_ Java and getting people like this guy vocally misplacing the blame.

 _> name clash: X and Y have the same erasure_

Programmer unfamiliarity. Consume a List<T> with one function.

 _> Methods With the Same Name as Constructors_

Constructors are never void. Obviously, because they have to return the object.

 _> Inner classes Don't Work_

This is a quip. What's the critique?

There are a handful of reasonable points but the overall product is not. Furthermore, the pre-emptive rebuttals make it clear that there's no convincing them.

<comment><USER3> > Android's runtime is not the Java Runtime. I'm starting to think Oracle > should have at least gotten some damages from Google for causing so many > people to think that the stuff running on Android is the Java and getting > people like this guy vocally misplacing the blame.

Because java desktop apps had such a good reputation before android?

<comment><USER4> No, but I said this the other day, Google made things worse by spreading its "Java 6.5" hybrid mess. Now we have Java 6 with 7 features and Java 8 with no Java 8 APIs being called Java 7 and Java 8 by people new to Java...

<comment><USER2> Indeed; looking back, we made the same points, and I don't think it's an isolated sentiment. While Android may have positively affected the Java ecosystem at first, official Java has long since evolved in appreciable ways that Android-compatible code can't use. It's awful, and until Android gets a wholesale port of the new APIs it won't get any better -- and despite Oracle being no angel, none of this is their fault.

</comment></comment></comment></comment><comment><USER5> My main problem with Java is the people who use it. More specifically the people who use it but have never used anything else and don't see anything wrong with that.

Java is a great virtual machine, good open source libraries, an ok language, and a terrible community of "best practices".

<comment><USER6> maybe you're measuring incidence rate without taking into account population size? The fact that there are a lot more felons who patronize starbucks than my local coffeeshop doesn't say anything about starbucks without another datapoint.

</comment></comment><comment><USER7> I lost it when the guy said don't use an IDE. What's the point of having a static type system when I can't use an IDE to see where a specific method is called.

<comment><USER8> When saying he works with a bunch of different languages and projects, but then prefers Vim...It's great that Vim is better for older practiced vi programmers (or opinionated middle aged), but the A/B testing is definitive for new developers. IDEs are more efficient for most languages (especially multi-language projects). Reducing the argument to "it shouldn't be this way" is luddite.

<comment><USER9> Not to mention the millions of features that I can't even begin to enumerate that I use on a day-to-day that I wouldn't have the time in my life to master without an integrated uniform method of interaction. Two of the best examples are Eclipse's build system and hot code patching in debug mode.

The build system lets me forget entierly about "how am I going to write my tup/make/cmake/anything file" as it just works when I click go.

The hotpatching debugger support is astounding. Nothing comes close to such a seamless integration as being able to change my code and click "go" and have my new method ready for action to see if it works on the next run.

You also get free autocompletion for everything. Oh god the ease of life autocompletion gives you. I miss it every time I need to tough another language.

<comment><USER10> > The build system lets me forget entierly about "how am I going to write my > tup/make/cmake/anything file" as it just works when I click go.

This is a bug, not a feature. Or rather, it is extremely easy for this to result in subtle "works on my machine" scenarios.

1\. If you just "click & go", you are foresaking the ability to have automated builds.

2\. If you implement the automated build independently from the IDE, you will end up in a setting where the developer makes changes to the IDE settings that are not reflected in the automated build. In a good day, this will result in broken builds. On a bad day, you will have bugs that are imposible to reproduce because the build QA uses is not the same as the build Development uses, even if they both come from the same SVCS. On an ugly day, you ship to your customers a binary version of the product that neither QA nor Development have ever tested before.

3\. Not to mention that if you have no version control of the IDE settings, every developer has a slightly different build of the project, one that mostly works, until it does not. See the problems in #2 and extrapolate.

<comment><USER9> > 1\. If you just "click & go", you are foresaking the ability to have > automated builds.

This is incorrect. Eclipse will generate ANT files that are usable via TeamCity.

> 2\. If you implement the automated build independently from the IDE, you > will end up in a setting where the developer makes changes to the IDE > settings that are not reflected in the automated build. In a good day, this > will result in broken builds. On a bad day, you will have bugs that are > imposible to reproduce because the build QA uses is not the same as the > build Development uses, even if they both come from the same SVCS. On an > ugly day, you ship to your customers a binary version of the product that > neither QA nor Development have ever tested before.

Again, just keep your ANT file in your source tree and export it after every change. This require far less maintenance then Make or cmake.

> 3\. Not to mention that if you have no version control of the IDE settings, > every developer has a slightly different build of the project, one that > mostly works, until it does not. See the problems in #2 and extrapolate.

The build settings are stored in the project files. When you download the project and import it into Eclipse your build enviroment is kept in line.

In larger projects I use a CompanyLibraries project and inside it I have 1) all libraries, sources, and documents neatly organized along with all binaries involved with that library (so if it needs to import a .so or .dll it's there) and the IDE-Bootstrap process:

       1. Go into your settings and import *.userlibraries
       2. Go to your settings and import cleanup.xml
       3. Go to your settings and import codetemplates.xml
       4. Go to your settings and import format.xml

You don't need to import the generated ant build system. You can right click it and run the build & tests from there.

After you do this you have complete autocompletion for every library we use. If needed you can cntrl-click to view source of a library, and it will work on your system even if you have windows or linux (because of the way I setup my .userlibraries). These are some from what I've seen the "little known" Eclipse goodies for collaboration.

Could it be better? Yes I'd like to eventually write an eclipse plugin that will automatically import these on a project by project basis then just make a git submodule in each of my projects that includes the global configs to make sure I still only have one.

</comment></comment></comment></comment></comment><comment><USER11> A wise man once said. "There are only two kinds of languages: the ones people complain about and the ones nobody uses." . I wish all the hate in the universe is converted to something more useful ;) .

But.. Oh wait. public static void main? seriously?

</comment><comment><USER12> If there were one perfect programming language, everyone would be using it already.

If a particular language were horrible in every possible way, nobody would be using it. If lots of people are using it, maybe you are not understanding why.

</comment><comment><USER13> Hey guys, I'm the original author of that article, and I appreciate the comments.

A few points:

* I started this article about 8 years ago.

* I've been trying to keep it up to date, so your comments are being reviewed.

* If you really, really love Java, I'm glad you found something in life to get passionate about.

* If you intend to be a professional software developer, you need to broaden your horizons before you start calling yourself senior anything. Java is only one programming language in the world.

Feel free to email me at firstname.lastname@example.com. I've been putting this email up everywhere for a very long time so getting more exposure just helps train the spam filters that much faster.

</comment><comment><USER14> Which Java? Which JVM? Which libraries, etc.? JDK 8 bears little resemblance to JDK 2. The latest JVM bears little resemblance to the first ones. Java is old. It is a huge ecosystem with lots of warts and cruft. There is a lot of good stuff, however, in that ecosystem and it's so good that it runs a huge portion of the Internet. So, some good criticisms but too much missing the forest for the trees.

<comment><USER15> And, to add another point, Android is not Java either.

<comment><USER14> True - it shares some features, but different VM etc.

</comment></comment></comment><comment><USER16> Nothing sucks at all aspects as same as nothing is great at all aspects. So, i cannot see any useful information comes from this article at all. So sad this person spends so much time to write a long article to hate a programming language. :-/

</comment><comment><USER17> This reads a lot like the C++ FQA. That is, it looks like someone wants any possible excuse to complain.

Now, in fairness, the C++ FQA has a lot more detail, a lot more specification of reasons behind the ranting. I think the perspectives are both the same (whiny ranting), but the C++ FQA is a large step above this.

</comment><comment><USER9> Are we using the same Java?

> GC Sucks So Badly, That You Should Avoid Using Memory

I'm assuming this is from before Java 8. The latest GC algorithms don't do this.

> Worst of Exceptions and Value Checking

Sometimes the correct thing to do is to throw an exception and other times it is to return a sensable value. An exception is an unrecoverable state, a null is a sensable value for when nothing exists. Something not existing and an unrecoverable state are two very different things.

> Won't cast an int to a long

Again, are we using the same language? This works. see code example at the end.

> name clash: X and Y have the same erasure

This is not sensable behavior but entierly avoidable. Objects contain data and then process them, then return the processed data to another object. The Java way of doing this is to pass "List<Long> listOfLongs" and "List<String> listOfStrings" to the constructor of foo and to have funcLong() and funcString().

> incompatible types

I've never seen this but I also suspect that this isn't an issue as I've never run into it and I've had interfaces in interfaces.

> static methods and members in a class

Static means the meaning of the method or object never changes. It will mean the same thing in every instance of usage. As such this makes sense. You never need to override a constant meaning as it will always mean the same thing.

> The "class" type is an afterthought

What does he mean by this?

> No control on member access

Use lombok. Not an issue and is fixed at compile time, not runtime.

> RSI

This makes no sense. An IDE is a tool that Java is deisgned to make use of. Locking yourself in your cave and saying it's bad isn't going to pursuade anyone.

> Camel Case

Nameing conventions aren't a reason a language is bad.

> Class-centric

That is the idea behind Java. The other concenrns not addressed by the title have been fixed by the Java 8 additions allowing you to treat one-method interfaces in Java 8.

> Iterators SUCK!

That is an implementation but it's fairly standard to just have tihs backed by some form of collection and see if there is data left in it. I usually use an index in an array and see if I have run past the end of the array.

> foreach doesn't take iterators

Yea this is crap.

> Function Pointers -- Missing

Java 8

> Constructors can't call each other

Again see the code at the end.

> Methods With the Same Name as Constructors

Yea that's allowed, I don't see what's wrong with that. It's a real function name so it should be allowed. I've never accidently made this error.

> Run-time Dispatch: Fantasy

This is a design pattern issue but you're meant to use the highest or lowest version of an abstraction. From there you can ideally handle it in a generic way or if not you can use if (x instanceof Object) to filter out specific cases.

> No Globals means Frameworks

This is where decorators and static/singleton classes come in handy. You can do some amazing things with decorators, singleton/static classes, and if you need it a bit of reflection.

> import is Useless

You can just use the fully-qualified name of the other class and it will work fine. I've had maybe one instance where my naming conflicted with another package but that was a rare case.

> No List Literals

Arrays.asList

> Inner classes Don't Work

I don't know what he means as this works perfectly fine for some design patterns. Inherit state? No way. Provide impelemntations of an abstract/interface for a specific object? Yes way.

In ArrayList it is perfectly fine to make an ArrayListIterator as they are the same bits of ideas and as such should be in the same file.

I also prefer state enums to be defined in a class.

> Java is So Hard People Prefer to Write Code in XML, Jython, Scala, and > Clojure

I don't do this only """ENTERPRISE""" Java developers do this. There's a lot of great work being done moving away from this mentality but there is still a lot to be done.

> Speaking of the JVM...

I'd love some numbers on these claims.

> DNS Client Implementation

Yea this is a problem. It's in here for compatability. There are many libraries implementing this better at the moment.

> Sun Microsystems May Sue You

I don't know if this applies to OpenJDK.

> Why Use Java at All?

Why use any language at all? Write binary and opcodes (like I've been doing in my CPU project). It's very fun!

In seriousness Java gets concurency right and I've not found another language that lets me write concurrent code like this ever before. Very nice platform to run on and one of the worlds best VMs. Everything is simple and documented well. I don't need to read a novel to get something working. I can think of a class, type that a control-space on my IDE, get a list of classes, find the one in the right package and move on. No google, no searching, just tooling and built in documentation. What's even better is most of the language is implemented in Java! I have the sources downloaded so CNTRL+Click and I can see everything's implementation! I'd love to see a python dev do that (I cant and I've been writing python for years).

I'll be emailing the author at this email: jgardner @ XXX .net and giving him this comment. I hope he can rebute some of these points.

       class Test {
       	private final int i;
       	public Test(int i) {
       		this.i = i;
       		this.test(i);
       	}
       	public Test() {
       		this(10);
       	}

       	private void test(long number) {}
       }

<comment><USER13> > > Function Pointers -- Missing

> Java 8

Yet again, they admitted an important feature was missing. Again, I am not familiar with Java 8 but I suspect their implementation is horribly wrong.

> > Constructors can't call each other

> Again see the code at the end.

See my response.

> > Methods With the Same Name as Constructors

> Yea that's allowed, I don't see what's wrong with that. It's a real function > name so it should be allowed. I've never accidently made this error.

I have. I guess I have just logged more time in Java than others.

> > Run-time Dispatch: Fantasy

> This is a design pattern issue but you're meant to use the highest or lowest > version of an abstraction. From there you can ideally handle it in a generic > way or if not you can use if (x instanceof Object) to filter out specific > cases.

Please tell me how to do it properly. IE, if I have a variable of type Foo that is holding a value of type Bar, how do I invoke the function with Bar instead of Foo in the signature?

> > No Globals means Frameworks

> This is where decorators and static/singleton classes come in handy. You can > do some amazing things with decorators, singleton/static classes, and if you > need it a bit of reflection.

My point exactly.

Other languages just use globals. Because they are useful and people need them.

Java makes you invent a new programming paradigm to overcome its artificial limitations.

> > import is Useless

> You can just use the fully-qualified name of the other class and it will > work fine. I've had maybe one instance where my naming conflicted with > another package but that was a rare case.

And what do you do when you blow out the 80-char limit on columns?

Oh let me guess. You like your 1024-char limit on columns because you are using a superior IDE.

> > No List Literals

> Arrays.asList

I don't recall that being an option. I do know that people used to prefer the curly brace format but that turned out to cause memory leaks.

> > Inner classes Don't Work

> I don't know what he means as this works perfectly fine for some design > patterns. Inherit state? No way. Provide impelemntations of an > abstract/interface for a specific object? Yes way.

> In ArrayList it is perfectly fine to make an ArrayListIterator as they are > the same bits of ideas and as such should be in the same file.

> I also prefer state enums to be defined in a class.

The issue with inner classes is that so many thing are contrary to expectations. I started to list them all but it got too long. I'll have to revisit it and try to condense it down.

> > Java is So Hard People Prefer to Write Code in XML, Jython, Scala, and > Clojure

> I don't do this only """ENTERPRISE""" Java developers do this. There's a lot > of great work being done moving away from this mentality but there is still > a lot to be done.

The point is the reason why they do it is because it's easier to write, test and debug these other languages than Java. People know that coding in native Java is slow and cumbersome and time-consuming with no significant benefit.

> > Speaking of the JVM...

> I'd love some numbers on these claims.

What claims need numbers? LLVM and PyPy exist. JS with JIT kicks the pants off of almost everything --- because it is compiled down to native machine code. Go look them up for yourself.

JIT is the new fad, and it's a huge deal.

> > DNS Client Implementation

> Yea this is a problem. It's in here for compatability. There are many > libraries implementing this better at the moment.

Name one.

> > Why Use Java at All?

> Why use any language at all? Write binary and opcodes (like I've been doing > in my CPU project). It's very fun!

I write code to get the job done so I can get paid, my company's stock price can go up, and I can get money. It's a job. Yes, I love programming, but I prefer to get as much done with as little work as possible.

> In seriousness Java gets concurency right and I've not found another > language that lets me write concurrent code like this ever before. Very nice > platform to run on and one of the worlds best VMs. Everything is simple and > documented well. I don't need to read a novel to get something working. I > can think of a class, type that a control-space on my IDE, get a list of > classes, find the one in the right package and move on. No google, no > searching, just tooling and built in documentation. What's even better is > most of the language is implemented in Java! I have the sources downloaded > so CNTRL+Click and I can see everything's implementation! I'd love to see a > python dev do that (I cant and I've been writing python for years).

Yeah, you strike me as someone who only knows Java. Let me know if I'm wrong.

> I'll be emailing the author at this email: jgardner @ XXX .net and giving > him this comment. I hope he can rebute some of these points.

My email is firstname.lastname@example.com. It's been around for decades so feel free to send me as much email as you like. I'll see the good stuff and the spam folder will eat the rest.

Let me change your example:

       class Test {
       	private final int i;
       	public Test(int i) {
       		this.i = i;
       	}
       	public Test() {
                    this.test(7);
       		this(10);
       	}

       	private void test(long number) {}
       }

Tell me how that works out for you.

<comment><USER18> >JS with JIT kicks the pants off of almost everything --- because it is compiled down to native machine code. Go look them up for yourself.

>JIT is the new fad, and it's a huge deal.

 _The term "Just-in-time compilation" was borrowed from the manufacturing term "Just in time" and popularized by Java, with James Gosling using the term from 1993.[16] Currently JITing is used by most implementations of the Java Virtual Machine, as HotSpot builds on, and extensively uses, this research base._

[https://en.wikipedia.org/wiki/Just-in- time_compilation](https://en.wikipedia.org/wiki/Just-in-time_compilation)

Java definitely has room for improvement but claiming that JS is better or faster is hilarious and makes me wonder what you are trying to sell.

JS seems fast if you only compare it to Python and PHP.

[https://benchmarksgame.alioth.debian.org/u64q/javascript.htm...](https://benchmarksgame.alioth.debian.org/u64q/javascript.html)

</comment></comment></comment><comment><USER19> Argumentum ad Populum applies here. A carpenter extols the virtue and efficiency of the nail and berates the screw and clip for its burdensome application until his roof flies off in a hurricane.

</comment><comment><USER20> Yes, java Sucks. But in many real and very important ways it sucks less than any of the alternatives. Especially considering the age of the language, and how backwards compatible it has been over the last 12 years.

Sure the eco system went all XML, but to be honest is the current JSON craze so much better? Yet this XML heritage is not something one must suffer through these days.

GC pauses, know your tools. Azul Vega was a thing in 2005 which means GC pauses are an option not a requirement. Of course there is the whole family of JavaRT as well and things like IBM metronome. If you have an big project burning engineering hours on Java GC they should look further afield. Sure most of these tools cost money. You think the extra hardware needed to run most of this stuff in Perl is cheap?

Considering where python and perl went in their 5->6 and 2->3 migrations even Java 1.4 to 1.5 was smooth. Heck even the annoying into of assert as a keyword in 1.4 was painless compared to those. I know of 2 projects that even with much more man power thrown at it have difficulty moving from Perl 5.8 to 5.12 and beyond. Gosh its like WebSphere migrations from 3 to 4 where unique in that regards, not...

Look I understand, we all hate that crap java code some consultants and solution experts wrote and that we need to deal with. But to be honest, equivalent consultants and solution experts with Perl, C, Python or JS don't create any better solutions. In someways Java pays the price of it being practically so much better that these teams in their enterprise constrains actually get something out of the door. Unlike, many other teams. Crap that ships is much better than the stuff that never got anywhere.

The hasNext and next methods are very nice. Because the author assumes all calls to next must be consumed. Well that is not true, and then having hasNext return a boolean instead of an expensive object (e.g due to remote calls) allows for lots of nice optimisations. Throwing exceptions for normal results is a horror that is too common in Python, e.g. urllib2 and 302 redirects.

This actually is rant of someone who does not really seem to know better. Yes there are some good points in it regarding generic erasure. And it is a pain, but on the other hand it made the migration possible.

Hey if you don't like longs and int casting rules just use BigInteger everywhere. Sure its slow, but so is the cpython and mri ruby implementations. 32bits is not the same as 64 and the Java Memory Model can be a rude awakening if you use longs where you should have used ints.

The camelCase thing, use an better tool ctrl-alt-R and its done consistently and correctly.

Things that would be nice too have in Java do exist. Getting Function etc.. in Java8 would have been great a decade ago. Rust borrow checking would be nice as well as a change in that locks operate (i.e. consuming a function that is called on the data) instead of the otherway round (i.e. like Perl6 locks)

The advice to use Vanilla C as an option. A language where the equivalent of following is undefined and can do anything? Including rm -rf!!! Sure no implementation calls rm -rf on undefined behaviour, except every hacker coming in via a memory corruption bug. A class of bugs that is not present in other languages, and why it should not be your first port of call in the normal circumstances.

      public class WhyIsThisUndefinedInC {
        int[] a = new int[]{Integer.MAX_VALUE};
        public test()
        {
           new Thread(()->(a[0]++).start();
           new Thread(()->(a[0]++).start();
           System.out.println(a);
        }
      }

In any well defined language you can have 3 outcomes, considering the total lack of locking etc... C gives you infinite! Heck moving a small C code base to a new compiler/libc combo is a massive undertaking in technical debt reduction. Any of the other languages, except haskel lack a memory model that is sane and useable (or any at all). When you can easily have 144 cores in single box that is not a great place to be in!

Sure we all hate Oracle, and their Sales teams. But on the other hand most of the time the customers deserve the sales team. Oh yeah I know its dirty to actually make money on Software it needs to be sponsored by privacy invading ad companies, or written by PostDocs with a lack of job stability. The JVM is solid, and WORA is true for certified Java TCK passing implementations. Android is not one of those.</comment>


Google reportedly paying Apple $9B to remain default search engine in iOS Safari - <AUTHOR> https://9to5mac.com/2018/09/28/google-paying-apple-9-billion-default-seach-engine/ <comment><USER2> What is the threshold at which this payment must be reported in either company's earnings?</comment>


Indiana woman cancels $30,000 wedding, invites homeless to reception - <AUTHOR> http://fox61.com/2017/07/14/indiana-woman-cancels-30000-wedding-invites-homeless-to-reception/ <comment><USER2> A key element not included in the title is that the reception expenses came out of _her_ own pocket.</comment>


Stackpath us-west objectstorage was down - <AUTHOR> https://status.stackpath.com/ <comment><AUTHOR> Does anyone here use stackpath for their CDN? I was evaluating it and had their us-west object-storage go down (throwing 503 errors for for all requests) yesterday. 24 hours later, it's back up but with degraded performance. I've heard nothing from support other than that they're aware of it and what the status page says.</comment>


Microsoft to Open Retail Stores Next to Apple's - <AUTHOR> http://www.wired.com/gadgetlab/2009/07/microsoft-to-open-retail-stores-next-to-apples/ <comment><USER2> If they get into the PC support business (as suggested in the article); I foresee doom for the Geek Squad / any other consumer tech support shop.

They don't even have to be any good at support; they will get plenty of customers just by having the Microsoft name.

<comment><USER3> The Geek Squad services more than just Microsoft stuff.

<comment><USER2> The question is whether they will be left with enough business to stay alive. I'm positive their bread and butter is windows issues. Why would anyone go see the Geek Squad with a Windows issue when they can go see "the Microsoft guy"?</comment></comment></comment>


Visualizing Layers in Web Inspector - <AUTHOR> https://webkit.org/blog/8262/visualizing-layers-in-web-inspector/ <comment><USER2> Remember when Firefox had 3D View? Pepperidge Farm remembers. [https://developer.mozilla.org/en- US/docs/Tools/3D_View](https://developer.mozilla.org/en-US/docs/Tools/3D_View)

<comment><USER3> I actually miss the 3D view. Anyone know why it was discontinued? I imagine it was simply too expensive in dev-hours to maintain compared to the benefit.

<comment><USER4> The first time I was telling a fellow .Net developer about the awesomeness of Firefox vs Internet Explorer, I thought the 3D view would blow his mind. It crashed instead.

<comment><USER5> Well, you can repeat the crashing experience with the Layers view in Chrome, then :)

</comment></comment></comment></comment><comment><USER6> Cool but I'm still a mile away from opening any site in safari developer tools unless I have to. It makes me want to rip my face off in that its basically unusable

<comment><USER7> I really cannot understand why you are saying this. I normally prefer Safari to Chrome as a developer tool. It has however some performance problems sometimes.

<comment><USER8> When people first learn a piece of software, they expect rival software to work exactly the same way or their brain instantly dismissed it. It happened to me when I switched from Windows to OSX, nothing was like how I expected and I had to change the whole way I use my OS, but in the end it was rewarding. Similar thing with GIMP: most people are weaned on photoshop so can't stand any workflow that is a bit different or not one-to-one feature-compatible. I learned GIMP first though so I never had any pains learning it and knew its limitations.

<comment><USER9> Maybe he's not like "most people", the point is that you can not know.

</comment></comment></comment></comment><comment><USER10> Pretty cool, but it seems like this is is getting quite far from any standards-based measure. The way another browser such as firefox renders html might be completely different, so optimizing using this tool could possibly do nothing in other browsers, or even worsen performance.

<comment><USER11> > so optimizing using this tool

This is a debugging tool. I'm not sure how you optimize for a visualization of how your layout rendered.

<comment><USER12> if certain layers were rendered before the rest, knowing which is which could help optimization.</comment></comment></comment>


Profiling serverless functions with IOpipe - <AUTHOR> https://read.iopipe.com/using-iopipe-profiling-to-gain-crucial-observability-into-your-aws-lambda-functions-506f5dda6bdf <comment><USER2> Can this do memory profiling as well?

<comment><AUTHOR> It's CPU only for now, but we'll be rolling out memory dumps soon!</comment></comment>


Open Questions about Generative Adversarial Networks - ml-engineer https://distill.pub/2019/gan-open-problems/ <comment><AUTHOR> Slightly tangential question, but this is yet another piece of work published on Distill. I keep a library of the papers I've read in Zotero. However, when it comes to Distill I've run into a problem - I can't figure out a robust method of archival.

Regular journal articles are published as PDF files, which make a decent electronic analog of physical paper. In the case of Distill, there's the usual DOI, volume, and issue, but the page itself isn't static. I did find a seemingly undocumented feature referenced in a GitHub issue - you can append "index.archive.html" to the url to get a supposedly standalone html archive of the page. However, when I tried this with a number of recent publications there were missing images and broken formatting all over the place, seemingly due to the authors having linked in external resources (primarily for a number of the figures).

Does anyone know how to do this or have any ideas?

<comment><USER2> Hi! I help maintain Distill's infrastructure. We'd love to find a robust solution for archival, too, but we haven't been able to think of a satisfying automatic way of providing static fallbacks to interactive diagrams. (That's why index.archive.html isn't a public feature ^_^)

If you have an idea of what we could do on our side with a fixed amount of work, please let me know! Unfortunately we can't require our third-party authors to be experts in graceful degradation. I'm sure better tooling could help, but currently have no specific inspiration.

As a fallback for your specific use case—we do actually provide a tiny bit of print styles in our CSS. Try your browser's PDF conversion/print feature; I find it often produces acceptable results. (Minus proper alignment to pages, of course. :/)

<comment><AUTHOR> Really glad to hear you guys are aware of this! I do love the expressiveness and ease of understanding that interactive diagrams offer, but find the prospect of a mutable scientific literature to be a somewhat horrifying one. I understand and completely agree that academic authors can not reasonably be required to become experts in web design.

\---

From my perspective, the main issue seems to be broken formatting and media (alignment, hoverable citations and notes, missing or partial images, etc). The recent activation atlases paper is a particularly good example of the problem ([https://distill.pub/2019/activation- atlas](https://distill.pub/2019/activation-atlas)). I don't have time to tally up all of the differences right now, but briefly just a few big ones so we have something concrete to refer to here:

* The index.archive.html version shows "Loading..." in place of all the images in the first figure (and most of the other figures as well).

* The Zotero web page snapshot version actually does have the images for the first figure, but that figure still has other issues. Many of the other figures still just show the "Loading..." text though.

* In both cases, text is flowing around the figures in strange and unreadable ways.

* The bibliography for the index.archive.html version is completely broken.

* In both archive cases, uMatrix is showing third party scripts running on the page. I've allowed them, but obviously loading things from remote locations means it isn't really standalone anymore.

\---

> we haven't been able to think of a satisfying automatic way of providing > static fallbacks to interactive diagrams.

Why does it have to be static? Why worry about graceful degradation at all? I guess I just find myself wondering why there would be two versions of a scientific paper (ie "real" and "archive") in the first place? I don't see any reason why scientific work needs to be published in a static medium, but it does seem like it should always be _standalone and immutable_.

To that end, why not require submissions themselves to be fully standalone entities with absolutely no external dependencies (ie review them without internet access) and then just publish those? Then instead of pdf papers, you end up with interactive (but standalone) html papers that are viewable in any standards compliant web browser, scripts and all.

Barring such a drastic solution, I don't have any clever ideas from a technical standpoint; I'm not a web design expert nor am I familiar with what tooling you allow authors to make use of in their papers. A fairly blunt approach might just be to require authors to provide static images as standins for each figure. It could literally just be a static image of what the interactive figure initially looks like before you do anything with it. Then you'd just have the existing formatting issues to sort out, but presumably those are fairly straightforward.

An aside: Figures don't seem to be numbered in the activation atlases paper I referenced above. It might be nice to add a requirement to clearly number and label figures, tables, and other such insets - as far as I know, all the major academic publications do this. If you're wondering why, at minimum it makes it _much_ easier to discuss the paper when you have a clear label such as "fig 3a" or "fig 4 panel 2" or whatever to refer to.

</comment></comment></comment><comment><USER3> Someone on the machine learning reddit asked me this:

> Question: How does copyright work for GAN output? If I input 300,000 > copyright protected photos of celebrities and generate images of new > celebrities that do not exist, are the generated images public domain or > would there be copyright issues?

AFAIK, this is not a settled issue, but I'd be really interested hear what an actual lawyer thinks about this?

<comment><USER4> The main question is that of whether the produced image is a derivative work. The interesting requirement is that the derivative work has originality. I can't tell whether there's a legal definition of originality, or if it's an "I know it when I see it" kind of thing.

What's so interesting with ML is that there's a dense spectrum between memorization and originality. I hope in the future people start checking how much their models are memorizing.

My favorite case is Google's facts, like when you google "golden retriever weight." From other people going out, measuring it, writing it up, and publishing that info to the web, Google can extract the info and never direct traffic to those sites. I still don't know whether I think it's okay.

<comment><USER5> Facts are not copyrightable

Link: [http://www.dmlp.org/legal-guide/works-not-covered- copyright#...](http://www.dmlp.org/legal-guide/works-not-covered- copyright#facts)

<comment><USER4> Legal question aside, it's still can't decide if I feel like it's dickish.

Even that has a spectrum, from "What is harry potter book is first?" to "What is the first line of harry potter?" to "What is the text of the first harry potter book?"

</comment></comment></comment></comment><comment><USER3> Hey, I wrote this! Happy to answer questions.

<comment><USER6> So let's say I'm in a regime where I'd like to train something like a language model RNN on a private text dataset. If I train the RNN directly on the data then I'm essentially leaking private data to the output. Do you know of any approaches to generate fake data using GANs, train a language model on that fake data and still get a good classifier that does well on test data while still quantifying how much private data is being leaked?

Related: do GANs work well as a data augmentation technique and can their exact contribution to how much a model could potentially be improved be quantified.

EDIT: Added some clarifications

<comment><USER7> You can train rnn on encrypted data

<comment><USER6> Sure but the output would still leak data. E.g: You give the RNN the phrase "Chase Bank" and it outputs "Sell the stock".

Encrypting the data secures the data loading part but it's not like your model didn't learn anything.

<comment><USER7> The output would be encrypted of course. You'd decrypt it on your end. Whoever hosts the model can't know what it learned, without breaking your encryption.

<comment><USER8> Unless you use fully homomorphic encryption (way too expensive for machine learning), the model can't learn anything without breaking your encryption. So you fixed the leak only at the cost of making the model completely useless.

<comment><USER7> Source? Unless the encryption actually destroys information I don't see why it would necessarily make the job harder for the rnn.

<comment><USER8> If you want to learn the function y = f(x), but present x and y as encrypted data x' and y', the problem becomes finding g such that g(x') = y' = encrypt(y) = encrypt(f(x)) = encrypt(f(decrypt(x'))), so the model doesn't just have to learn f, it also has to solve for the decryption and encryption routines.

<comment><USER7> You look at this as a human, but for an rnn this would be the same as learning to map x to y where both x and y are in a different language. It wouldn't need to also learn how to translate that language into ours.

There might be encryption schemes which make learning such a "language" harder for an rnn, but it does not necessarily mean these methods are harder to break. So it might be possible to find/design an encryption method which is easy to learn (map x to y), but hard to break. I don't know much about encryption though, so I might be wrong.

<comment><USER8> If an encryption scheme is easy to learn in the sense that if f is learnable, then so is g, then it is also easy to break.

Proof: You can easily train an RNN to return the n-th letter of its input and ignore everything else. Take that function to be f_n. Then g_n is the function that takes the encrypted input and returns the n-th letter, encrypted. If the encryption scheme is learnable in the above sense, then you can also train an RNN to perform that task. You can use multiple of those RNNs to extract an encryption of each individual letter in the input, which is equivalent to having the input encrypted with a substitution cipher. Substitution ciphers are so easy to break with frequency analysis that people have been doing it by hand for more than a thousand years.

Conversely, if you have a secure encryption scheme, then all statistical regularities in the input should be obfuscated so that they cannot be exploited by an RNN.

<comment><USER7> Good point. I didn't realize the goal of a good cipher is to remove statistical regularities (i.e. make it indistinguishable from random noise).

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> Off-topic but I love the design of this blog article. Everyone is copying Medium these days so it's refreshing to see a smaller-typed and denser design for once.</comment>


The Next Evolution of Chrome Apps - <AUTHOR> https://developers.google.com/events/io/sessions/gooio2012/200/

<comment><USER2> Aside from the things mentioned in the video (offline by default, fully customizable UI, <browser> tag etc) one of the most interesting things about this is the change to application architecture that makes Chrome apps mirror traditional native apps in an important way - the View is no longer the instance.

A challenge for a variety of apps built using the traditional web container is that the view is the instance. This poses challenges for apps that are mostly invisible, like chat apps. The main challenge is sharing live state between running instances. You can attempt to share state between views you open via script but when the user inadvertently launches another instance by clicking a link or typing a view all bets are off.

With this new system, your app has a background page that acts as the app's instance - the entry point and core event receiver, it is effectively ever- present (or can be woken by events) and can manage the app's various views.

I think this is an important and useful development that will allow a new class of apps to be more easily built using web technologies.

</comment><comment><USER3> I hope packaged apps start gaining more traction. It seems that the majority of apps in the Chrome Web Store are just glorified bookmarks. Few are packaged apps. Hopefully, as packaged apps grow in popularity, Google will develop features for the Chrome Web Store to help developers better sell their apps. One thing I've personally been waiting for are promo codes for developers to give to reviewers or to gain visibility for their apps by growing install numbers.</comment>


Backbone and Cloudant - <AUTHOR> https://cloudant.com/blog/backbone-and-cloudant/

<comment><USER2> Very cool, considering I've used Cloudant extensively with a Node server and backbone in the past. It's nice to see something that can talk directly with the DB. Though, could someone explain how I would implement permissions and security using this direct-to-Cloudant approach?

<comment><AUTHOR> The answer to that question definitely depends on the application. The Cloudant data model allows for read, write, and admin roles to be assigned to both users in the cloudant.com domain as well as generated API keys. For data consumption (e.g. read-only), it's straightforward to map those roles onto the application. For data creation, it of course becomes trickier. Approaches range from generating an API key per user to generating a cloudant.com account per user. However, you've highlighted the key question that is at the heart of all two-tier application stacks, from 'couch apps' to meteor.js, firebase, etc.

<comment><USER3> In addition to what Mike has said about how you set up auth currently the library will use basic auth with the browser dialog. There's a todo in the code to make this a load nicer, and I'd like to get that in the next release.

</comment></comment></comment><comment><USER4> This is going to sound like GUSHING, uncritical praise, but I've just started testing out cloudant (past few weeks) after previous setting up my own CouchDB instance on AWS.

I have to say that not only is the service itself great, its fantastic to be able to deal with REAL people when you need to know a little info...

Rather than just posting on a forum and waiting they always have people on their IRC channel and I've found them to be really helpful over email also.</comment>


On College and the IT Field - <AUTHOR> http://mmakai.com/post/6173211365/on-college-and-the-it-field

<comment><USER2> As someone who dropped out of school in 8th grade, got a GED at age 20, and started a career in IT at 28, I have to say that I still wish I would've stayed in school and had gone to college.

Getting in to the IT field without a degree was a struggle for me. I ended up wasting 8 years of my life working for Wal-Mart for $10 an hour because I couldn't break in to the IT industry no matter what certifications I was able to achieve. It took a lucky break being hired at a small startup IT company to get my foot in the door. I wasn't even hired for my IT skills, rather my ability to learn PHP quickly to become a freelance developer when I had finally had enough and quit my job at Wal-Mart.

I'm 3 years in to my IT career and have been successful enough to be earning close to $100k per-year. I can't help but think what sort of salary I'd be making right now if I had spent 4 years going to school and this was my 7th or 8th year of my IT career. Information Technology is my passion and I love every day of my job. I think that passion made me too arrogant to think that school was necessary and I ended up wasting 8 years hating my job & my life because of it.</comment>


Ask HN: Anyone else seeing Gmail issues? - <AUTHOR>

I just had an email disappear completely from inbox, my reply disappeared from sent. <comment><USER2> Have you asked the person you've send the email to, if he/she received it?</comment>


Mapping San Francisco's Human Waste Challenge - <AUTHOR> https://www.forbes.com/sites/adamandrzejewski/2019/04/15/mapping-san-franciscos-human-waste-challenge-132562-case-reports-since-2008/#5dee68095ea5 <comment><USER2> The human waste and needles on the street are intimately related in my mind.

Step 1: People start shooting up in public bathrooms, and then passing out on the toilets

Step 2: Public bathrooms are closed due to the drug problem found in step 1

Step 3: Now everyone begins shitting in the street because public bathrooms are no longer available. And those people shooting up in the bathrooms are also shooting up on the street.

In those public bathrooms that remain, you typically see needle disposal containers; sometimes in every stall. In Seattle on Sunday, I went to the bathroom in Macy's and every stall had them and I'm pretty sure 3 of the stalls were occupied by people doing drugs.

The obvious answer is supervised injection sites where people can safely shoot up, which would then allow public restrooms to reopen and not be constantly occupied by people with needles. Unfortunately, the republican party at the national level has worked to actively prevent SF from opening these sites. So, the author, a prominent republican, should maybe consider telling his party's national apparatus to get out of the way of SF fixing their local problems rather than his weird nonsensical admonition at the end.

<comment><USER3> Jesus Christ, this sounds horrible. There is definitely huge cultural difference between me and an average Seattleite, but for me "supervised injection sites" doesn't look like an obvious answer at all. The thing you're describing (particularly "3 of the stalls occupied by people doing drugs") sounds like an egregious safety hazard. I'm a big guy, so probably not the easiest target, but I would be terrified to think that my mother or girlfriend could get jumped at in women's restroom. Why don't people demand police to do something about this?

Yo guys, I know this may sound crazy to you, but have you thought about imprisoning those junkies? If you're so humane, maybe give them treatment AFTER you take them off the streets? While you're at it, might as well get the name of their supplier and imprison him too -- doesn't sound like a rocket science to me.

I don't buy that police is doing a good job right now -- I've been living in NYC in 2011-2015 and for whole 3.5 years every Friday and Saturday there was a guy standing at the intersection outside my work at 15th & 9th peddling coke and molly (the guy was standing there, sometimes walking crosswalks and saying out loud "coke, molly, weed"; not yelling, but loud enough that passerby's could hear him).

<comment><USER4> > every Friday and Saturday there was a guy standing at the intersection > outside my work at 15th & 9th peddling coke and molly (the guy was standing > there, sometimes walking crosswalks and saying out loud "coke, molly, weed"; > not yelling, but loud enough that passerby's could hear him).

That's too flagrant to be legit. Did he spend Monday through Thursday listing "solvent traps" on eBay under the username "TotallyNotATF"?

I could understand a dealer "advertising" in the open like that in 70s Detroit or somewhere else where the primary mechanism of "law" enforcement is getting paid by a tax on his profits and not by the city but saying "yo I got drugs for sale" is on a whole different level than standing around.

<comment><USER3> I honestly don't know if that was a police trap or not. But considering how easy it is to find drugs in NYC I wouldn't be surprised if it was legit. Like ... at least half of chess hustlers look like they're on something.

edit: to be fair -- this may be an act to lure in regular people who may think they have a chance against a tweaker. They don't. Those guys are crazy good.

</comment></comment></comment></comment><comment><USER5> Theres a pretty clear reason for the problem. SF's shelter system is terribly lacking compared to cities like NYC.

[https://medium.com/@josefow/new-york-decided-to-end- street-h...](https://medium.com/@josefow/new-york-decided-to-end-street- homelessness-and-it-basically-succeeded-ab27f3ec5a65)

</comment><comment><USER6> I had a conference in San Francisco last year. One day as I was walking between Moscone Center and the hotel, a roughly dressed woman was walking on the sidewalk alongside of me.

"Watch out for that shi*!" she exclaimed. I thought she was crazy, shouting at random. Then I saw that I'd stepped in human poop.

True story.

</comment><comment><USER7> Having lived in SF for about a year now, it's actually quite a clean, beautiful, and safe city _IF_ you just stay away from a big chunk of the center. My wife and I pretty much try to avoid it at all costs now, which is sad because there's a lot of good stuff there (architecture, theatre, restaurants, the tech scene, public transit arteries, etc.) but there are also plenty of interesting and beautiful neighborhoods to explore that don't have any of these problems, so we still enjoy living here a lot for the most part. It's a utopia and dystopia all wrapped up into one.

<comment><USER8> So, SF is _not_ a clean, beautiful, and safe city, considering that the part of it with all the interesting stuff also happens to be drowning in a putrid combination of feces and needles.

It's just like saying that Earth is a lovely place, as long as you avoid breathing the atmosphere and drinking any of the water. Look at the forests! Hope your spacesuit's faceplate doesn't become pitted by the acid rain.

<comment><USER7> My point is that all the interesting stuff is not in the center. There is _some_ interesting stuff there, but there's just as much (if not more) interesting stuff and urban/natural beauty in other less central neighborhoods like Richmond, Sunset, Pac Heights, NoPa, Castro, North Beach, Mission-Bernal, Noe Valley, Lower Haight, and a bunch more. All of those neighborhoods are safe, walkable, have plenty of things to do, and compare well on just about every dimension to any neighborhood in any big city in the world. So while the drug and homelessness problems radiating out from SoMa/Tenderloin are very serious and not to be diminished, trying to paint the whole city as a cesspool just indicates that you haven't seen much of it.

<comment><USER9> Shhh!

</comment></comment></comment></comment><comment><USER10> I work in SoMa and walk to and from the CalTrain every day. Reading this article you'd think I'd be ankle deep in poop during my walk. It's just not the problem it's made out to be, not even close. I think people who write these kind of articles like to take cheap shots at "lib" cities like SF. The last sentence of the article bears this out.

Edit: Wow, I'm being downvoted for a personal observation that a story is exaggerated. Sorry if I disturbed your confirmation bias.

<comment><USER11> How does it compare to other cities? Do other cities have dedicated "poop patrols"? Is the outcry about public defecation about gentrification or is it a genuine problem? How can we get accurate comparative statistics that also show how the homeless are treated. Like I have heard that by (almost) decriminalising public defecation and urination the city puts less stress on the homeless who wouldn't be able to afford any fines, and in "cleaner" cities the homeless have a harder life.

<comment><USER12> > How does it compare to other cities?

This is a very rare problem in literally any other Western city. Even in the severely deprived ones which have used needle problems. Dog waste and public urination, maybe.

<comment><USER13> You do occasionally encounter it elsewhere, maybe everywhere, even in "clean" cities but the scale is incomparable to most other cities.</comment></comment></comment></comment>


Luma updates its video camera app for iOS, adding cinematic image stabilization - <AUTHOR> http://thenextweb.com/apps/2013/02/25/luma-improves-its-super-smooth-image-stabilization-for-shooting-video-on-ios/

<comment><USER2> I'm completely biased in this (I know the founders), but this is the real deal. I've recorded shaky, all over the place video handholding my iPhone on a bike and it came out like this: <http://luma.io/v/B2->

It is pretty neat stuff.

<comment><USER3> That's really smooth. Installed the app after viewing that.

I'd love to see a side-by-sire as well though.

<comment><AUTHOR> Here you go: <http://luma.io/v/CIt> (thanks to cosbynator for letting me make this)

<comment><USER3> Thats awesome. (It is also awesome that when you right click and "Show video in new tab" it simply dowloads the MP4!

I hope that google glass has this level of stabilization (or that google buys this for that purpose)

</comment></comment></comment></comment><comment><USER4> Digital image stabilization is a fascinating subject. On one hand, the core idea is simple (average out motion over time in some way then pan and zoom the image to compensate for deviations from the average); on the other, it's not easy to get right since outside of random jitter some camera motion, even rapid, can be what the camera operator wants.

Here's an example of an actual algorithm used for digital IS: [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.148...](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.148.6856&rep=rep1&type=pdf).

</comment><comment><USER5> I've used this app since it was called SteadiCam (before that name was pulled for copyright reasons, of course), and there's really nothing else like it around—long ago I thought of applying 6-axis gyroscope readings in reverse to video, but this dev has done that and more better than I ever could. It's a fantastic application of amazing technology and crazy math. Major kudos!

</comment><comment><USER6> If you're clever, you can do this kind of postprocessing without a big CPU hit on mobile phones. Phones compress video in hardware, and as part of that process the hardware looks for blocks of video that are roughly the same across frames. When it finds one, it attaches a pointer indicating where it should go in the next frame.

Taken in aggregate, all of these pointers in the compressed data stream effectively show you which way the image "shook" relative to the previous image (and how far it shook) saving you CPU cycles to determine this yourself. You can even detect rotation. So all you need to do now is compensate for the shake by rewriting the compressed stream, "panning" (and perhaps rotating) in the opposite direction of the shake. In order to have room to pan, you need to emit a smaller rectangle than the original video.

This isn't sufficient for advanced stabilization, but it's a quick first pass.

I took a stab at writing this for the iPhone in 2010, but by that time the writing was clearly on the wall: Apple was soon going to offer this functionality in hardware (and they do, on the iPhone 4S and 5), and they would only do a better job with every phone refresh. The only way one can hope to compete is to perform global optimizations across the entire video clip that the hardware encoder can't do (e.g. dynamic programming), or else apply fancier transforms which are so CPU intense they kill the mobile experience. Good job on the part of the developers; the video looks great. As iPhone GPUs get more powerful stabilization algorithms will only get better.

One business angle here is to give the app. away for free and charge a dollar per video to deshake clips as a web service in the cloud.

<comment><USER7> The app is great.

It seems to take the approach of a post-processing frame shift rather than real-time stabilisation. In other words it lets the phone capture and compress using hardware, but keeps the sensor data separately and shifts the x,y of the video to stabilise. Unlike Final Cut etc. that has to analyse each frame, Luma has the raw data as the video was being shot. So the battery hit would come on export when the video has to be re-rendered I'm guessing.

I think this is the method because the Luma video appears more zoomed in than the original, i.e. they leave some space around so the video is always visible. This means that the Luma output will be lower res than the original hardware captured video I'm guessing.

Still, if it avoids walking around with your phone in a steadicam rig then it's a huge win. I have a steadicam smoothee but the ridicule from friends and family mean I don't use it, the slightly lower res output with Luma is the price my family will pay for their insensitive mockery!

<comment><AUTHOR> Luma applies stabilization on playback. We keep all the pixels we get from the camera, even when you upload to our cloud service. As we improve our algorithms your existing videos will continue to improve with time. There's much more that we can do to help you create stunning videos. We're just getting started :)

<comment><USER6> It sounds like you're applying post-decode linear transformation to the data, but, if so, the video would only appear stabilized in your own custom player. Does MPEG-4 allow one to specify per-frame linear transformations beyond simple ROI? I didn't think so, but if so, that's pretty cool. Or perhaps you keep the original data around server-side, but always stream a corrected version to anyone who asks to play the video.

Either way, your videos look great. I love the fact that you also compensate for rotation, which is expensive even when you have macroblock vectors. I hope you can stay ahead of Apple (both iPhone, iMovie, and FCP) and Android in this space. Best of luck. May you become the Instagram of online video!

</comment></comment></comment></comment><comment><USER8> Very very cool stuff. I downloaded the app and took this (not the ideal stress test, but the panning is incredibly smooth): <http://luma.io/v/CId>

<comment><AUTHOR> (Cofounder here.) That's our motion retargeting algorithm at work. It'll fit the smoothest motion to your recording. In this case a constant panning motion does the trick. You can get perfectly stationary, motorized-tripod-like panning shots, and dollies with Luma without any equipment other than your hands.

<comment><USER9> Is this a proprietary algorithm? Can desktop video editing software or plugins do it this well? I would love to have this as a quick drop in for Premier or Aftereffects.

Also, are there any plans for motion estimation for achieving super-slow motion, like Twixtor or Timewarp? That would be a neat effect for mobile video.

<comment><AUTHOR> We developed this in-house. We use additional sensor data and fairly advanced optimization algorithms to produce these videos (all done in real-time on your mobile phone!) Due to the lack of sensor data, and subpar camera models, you won't get results of this quality with desktop video editing software like Final Cut.

</comment></comment></comment></comment><comment><USER10> This is really impressive. I'd love for a similar Android product.

<comment><USER11> Me too!

</comment></comment><comment><USER12> Hmm, the comparison videos are interesting. The one with IS turned on reminds me somehow of a first person shooter video game while the other video feels more 'real'.

Maybe game developers could introduce more shake into their games to make them feel more real?

Other than that: The tech is great. The videos certainly get a cinematic feeling with that kind of image stabilization.

<comment><USER9> Shaky cams in video games can easily become a hindrance of a good experience. For example Kane and Lynch 2 was criticized for having a shaky cam that made gameplay more difficult. Its definately a balancing act to get the right amount of shake

<comment><USER13> Plus, anecdotally, it makes viewers feel 'dizzy'. See criticisms of found footage movies like Cloverfield.

</comment></comment></comment><comment><USER14> How different is this to AVFoundation's stabilization?

There's an example of it in action here, but it requires a login: [https://developer.apple.com/videos/wwdc/2012/?include=520#52...](https://developer.apple.com/videos/wwdc/2012/?include=520#520)

<comment><AUTHOR> (Cofounder here.) Ours is better: <http://luma.io/v/CJC>

You can think of AVFoundation's as dampening handshake. We retarget the motion to be along the smoothest path possible. So we can often completely eliminate handshake. Luma supports both native and cinematic stabilization modes.

</comment></comment><comment><USER13> Here's a better way of comparing the two identical videos. It's an even clearer improvement when viewing side-by-side: <http://goo.gl/xoMgQ>

</comment><comment><USER15> If you want to try it here is an iTunes link <http://www.itunes.com/apps/luma- camera>

</comment><comment><USER16> Very awesome tech! I'm really impressed -- what is the loss in terms of frames/frame size? Is data or missing parts of a shaky frame generated based on previous shots?

Also, another thing that goes with shaky videos is bad or stuttering sound. If you guys handle both, I can easily see you becoming the go-to solution for filming on cell cameras.

</comment><comment><USER17> Very nice. It's missing using the volume buttons as a record button though.

<comment><AUTHOR> It's on our todo list :)

</comment></comment><comment><USER18> How does this compare to the optical image stabilization on Nokia Lumia 920?

<comment><USER19> It's basically like comparing optical zoom to digital zoom.

Digital stabilization will inevitably lose resolution because it needs to crop some data to even out the shake, and also because there is varying motion blur in the images that needs to be cleaned up somehow.

Like with zoom, optical is always a better solution because it fixes the problem before light hits the sensor, but of course it comes with its own tradeoffs involving physical size and production cost.

<comment><AUTHOR> Luma's cinematic stabilization performs much better than Nokia's optical stabilizer in daylight. As sensors get better (more light sensitive, higher resolution), the advantages of optical stabilizers will diminish even further and eventually disappear. (Disclosure: I cofounded Luma).</comment></comment></comment>


What we can learn from Camus's "The Plague" - <AUTHOR> https://lithub.com/what-we-can-learn-and-should-unlearn-from-albert-camuss-the-plague/ <comment><USER2> "The Plauge" was one of the few books I've read during high school for a book report because I... fried my CPU and couldn't use my PC during spring break so, having nothing better to do, I sat down and read the whole thing.

I could very much feel the loss of agency the characters had to endure, because computers were my whole world back then.

</comment><comment><USER3> I read this in college 20 years ago, and understood it as an allegory of existentialism (which it is). I've been thinking A LOT about it the last few weeks. Worth a read, but not for the faint of heart.

<comment><USER4> Camus actively rejected labeling his work as "existentialism". It only frequently gets lumped into that category because of his relationship/friendship with Sartre and de Beauvoir and because some of his work contains existentialist-like themes. He was more accepting of the term "absurdism" for his work. But his work never fully aligned with existentialist thought.

"The Plague" is typically read as an allegory of the French resistance to the Nazi invasion and occupation of France, and an analysis of the relationship that humans have with authoritarianism, fascism, and how we can either help or hurt each other in times of crisis. Camus was also a humanist and believed that people were more good than evil (which he comments on in "The Plague").

Source: I got my university degree in Philosophy and Camus was my main subject of interest/study for a number of years (and continues to be even now).

<comment><USER5> this is just fascinating for me since I picked up _The Stranger_ last week and am mesmerized by his writing style. The Plague is now next on my list. I don't want to compare him with others since he very much has a distinct & brilliant style (short crisp and far from pretentious - sentences are clear and appeal to uneducated riffraff like myself - think I have seen this also in Orwell and Hemingway). The feelings and emotions he raises in me are nevertheless similar to those I get when reading Kafka and Dostoevsky. Truly amazing being in this man's head. I only regret not having picked up his work sooner.

<comment><USER6> It's worth noting that Camus consciously adopted an "American" literary style in _The Stranger_ which was modeled off of authors like Hemingway.

</comment></comment></comment></comment><comment><USER7> "It may seem a ridiculous idea, but the only way to fight the plague is with decency." ~Camus

<comment><USER8> This was the great lesson of this book for me, and it is a constant inspiration to me.

</comment></comment><comment><USER9> Fair, although I think we need to remember in difficult times like this that:

\- The plague killed 50-100% of people who got it depending on which kind of plague you got (bubonic, pneumonic or septicemic) whereas while nCoV rates are still TBD we're probably looking at an upper bound closer to half a percent, or 3-4 order of magnitude lower.

\- The average age of folks who've died of nCoV so far in Italy is _80_ and in China the mid-high 70s.

\- The plague took _everyone_ whereas the young and healthy are effectively going to get a (sometimes very, very) bad cold out of nCoV. The younger they are, the less affected. I think out of the hundreds of thousands of cases we know about so far only a single child has died -- and they had serious medical conditions going in. Currently the CFR in Korea and in the USA for people under 30 is less than 0.1%.

Perspective matters. It's easy to get swept up in the panic going on right now. Don't panic. Do listen to authorities and generally keep away from other folks. This will all be over in a few months. We'll mostly all get it, we'll overwhelmingly recover, and become immune. Chances are this is going to become one of the endemic viruses that shows up every year from now on.

As panic sets in, if you've got some cash to invest in the markets and a long time horizon to draw on it, this may be the money making opportunity of a generation.

<comment><USER10> I'm 28, fit, physically active (bouldering / running / gym), no pre-conditions whatsoever, take vitamin D supplementation, I don't take any medication.

I'm going through a nasty pneumonia that hurts my lungs just breathing and I've never had something like this before. I get tired just walking around, whereas 2 weeks ago I did a 40 minute 10k. Take that anecdata as you will, but if you can protect yourself, do.

So when you say it's just a "bad cold", I chuckle a bit. What's going to happen to the millions of overweight, high blood pressure / diabetic Americans? Sure don't panic, but be safe.

<comment><USER11> This is interesting... I wonder if we're eventually going to see that this virus is worse for Italian/Spanish/Portuguese genetics. Italy has been hit super hard, New York (the most Italian ancestry in the US) is being hit hard. Just a hypothesis, don't everyone try to kill me at once, please.

<comment><USER9> Interesting hypothesis of course, I suspect it's because the outbreak was in Lombardy which is much older on average and has 3X the average number of comorbid conditions.

<comment> blaser-waffle Italy as a whole has a higher proportion of elderly folks.

Also a lot of Italy and Spain have adults who tend to live at home or with (older) family, which also makes it far easier to expose them on an individual basis.</comment></comment></comment></comment></comment>


Google can use your name and photo alongside online ads - <AUTHOR> http://thenextweb.com/google/2013/10/11/google-reveals-plans-use-name-photo-alongside-shared-endorsements-ads-web/?fromcat=apple <comment><USER2> I seriously do not understand what the issue is. Why would you +1 something if not to have Google tell your friends and followers you +1'd it? Why would you comment on something if you don't want Google telling your followers you commented on it?

Where is the issue?

And, for what it's worth, Google claims to be "clarifying" this part of the terms of service, not changing it. I haven't verified what that means though.

<comment><USER3> As soon as I see or hear about poeople's +1's becoming ads is when I stop using +1 on anything.

Right now it's a subtle "thankyou" for the content creator and to say "I think this is meaningful". If I wanted to "shout out", I'd also take the step to post this in my Public circle.

If Google thinks a simple +1 is some wholehearted endorsement of that content, I'll simply stop using +1s. I'm sure I'm not the only one here.

<comment><USER4> In what instance would there be an ad created for a content creator that would confuse these purposes?

<comment><USER5> when your picture is used to advertise nsfw content

</comment></comment></comment></comment><comment><USER6> I don't understand why companies won't realize how creepy this is.

<comment><USER4> How is it creepy? You see an ad and also see that one of your friends voluntarily liked it. Won't this be a bit helpful if you're going to see an ad anyway?

<comment><USER7> I'm personally more creeped out by all the people defending it. I hope they work at Google at least, it would make some sense.

<comment><USER8> They are defending it, because they read TFA and understood, that basically nothing changed.

If you wrote a review or +1ed something, you published it (whether for all, or for some circle). Now this review will show for exactly the same audience alongside the ads for the same product/page/whatever.

This is just a knee-jerk reaction by people who didn't bother to read what it is about, just went straight into "bad Google" mode.

<comment><USER9> This might be a minor degree of "bad Google," but it still is firmly in the realm of "bad Google."

If you're arguing that this is a tiny sliver in the greater scheme of things, I'll agree with you. If you think this sliver doesn't reflect the larger direction Google is taking (and everything that comes with it), I would disagree.

</comment></comment></comment></comment></comment><comment><USER10> As if consumers didn't have _enough_ reasons to avoid Google Plus.

<comment><USER11> Good luck with "avoiding" it. It's getting harder and harder to use Google without using Google+ (clearly intentional), and it's nearly equally hard to use the internet without using Google.

<comment><USER12> What do I need Google for? DDG works ok for discovery, subreddits and HN aggregate news, and SO handles all of my programming questions.

</comment></comment></comment><comment><USER13> This seems no worse that than Facebook's advertisements (slightly less freaky in fact). All it shows is that you endorsed something, who cares? They already have your data all they are doing now is saying "oh hey your friend +1'd this"

<comment><USER14> Both Facebook and Google doing this is horrible. Whatever happened to: don't be evil.

<comment><USER15> FB never said that. And google stopped saying that a while ago.

<comment><USER14> [http://www.google.com/about/company/philosophy/](http://www.google.com/about/company/philosophy/) "You can make money without doing evil."

</comment></comment></comment></comment><comment><USER16> It's really wrong to have these options opt-out. They should be opt-in. I know so many people who use Google services on a daily basis and are not techno- savvy. They will never know about it.

<comment><USER17> If this is the opt-in/out checkbox, mine was already set to not allow them to use my name/profile photo: [https://plus.google.com/settings/endorsements?hl=en](https://plus.google.com/settings/endorsements?hl=en)

<comment><USER18> Hopefully they won't put "opt-in" button in gmail in exact same position where log-out used to be (as they did with G+ recently)

</comment></comment></comment><comment><USER19> there is an opt-out

[https://plus.google.com/u/0/settings/endorsements](https://plus.google.com/u/0/settings/endorsements)

ps when I checked my settings were automatically "opted out" so unlike FaceBoob they are not opting people in by default and forcing them to proactively opt out

yay google

<comment><USER20> When I went there the "Based upon my activity, Google may show my name and profile photo in shared endorsements that appear in ads." box was checked.

<comment><USER21> Box was unchecked for me. Have you been +1ing?

</comment></comment></comment><comment><USER22> If you received a cut of any revenue for an ad that you appeared in (sort of like AdSense), is this something you would opt into? I'm assuming this isn't part of the deal. But that would make it more interesting.

Edit: Oh, it's opt-out? Poor choice, Google.

<comment><USER23> I would be interested in opting in to share more data if I get a cut of revenue.

</comment></comment><comment><USER24> I see no problem with this at all if you make an actual review.

One problem with +1 (and Facebook's Like) is that as a user you aren't necessarily doing that to endorse; you might just want to subscribe in an RSS- like sense.

<comment><USER2> That's like buying McDonald's to test your credit card still works, then complaining your car trunk is full of uneaten happy meals.

If you're going to misuse a product to get some unique result you desire, expect the company that built it to continue with their original vision of the product's purpose.

</comment></comment><comment><USER25> You can opt-out and it sounds like they're only using it on Content you've +1'ed.

I only +1 content I like, and if my endorsement can somehow bring revenue to the content creator, I'm personally fine with it.

</comment><comment><USER26> Instead of continuing to attempt to make products better and appeal to more people and in a more meaningful way, they are trying to squeeze some profit out of a barely used platform. [1]Google+ didn't take off, at all. It never will if they fully monetize it before lockin.

I would be smiling so hard right now if I were at Facebook.

[1] [http://mashable.com/2013/05/10/google-has-20-million-u-s- mon...](http://mashable.com/2013/05/10/google-has-20-million-u-s-monthly- mobile-users-report-says/)

</comment><comment><USER27> I use DuckDuckGo for most of my work. I only need Google 10% of the time. You will get used to using less, and less of Google. Google and Facebook need a wakup call.

</comment><comment><USER28> So now they're on par with Facebook and Twitter in that regard.

</comment><comment><USER29> Legal question: Google sent a notification instead of email for this change. Is it acceptable legally to send notifications for this kind of legal change?

</comment><comment><USER30> What's wrong with you guys? Why do you keep complaining "in the name of privacy". There's nothing wrong with that, nothing creepy about it.

You all assume that it's bad, it's "evil", but give me a rational argument against it. Just one. You can't find one because hating on such poor basis is irrational and foolish.

Just grow up and embrace the future.

EDIT: man up -> grow up

<comment><USER12> Nice; a classic "if you've got nothing to hide" with a bonus gender role shaming.

> You can't find one because hating on such poor basis is irrational and > foolish.

+1'd a gay rights group, have fundamentalist parents.

<comment><USER30> It's not about having nothing to hide. It's about fighting for what is right. Homosexuality would probably not be so tolerated today if it was easy to hide.

You have to realize that you can't please everyone. And you certainly can't expect to live your whole life anonymously. You have to make decisions, and you have to accept that someone, somewhere, is going to be unhappy about it.

What if you were/are gay? Would you hide it from your parent all your life? Probably not (I hope). Why do you expect something different with the causes you support?

Does anyone blame Facebook for making Likes public? Probably some, but they're the tinfoil hat kind. Your support has no real weight unless your identity is known.

Should we ask Google to lower their standards, to match a culture of privacy that is both unsustainable and dying?

My suggestion, don't +1 anything until you're ready to accept the benefits/consequences. Doing otherwise is unresponsible.

<comment><USER31> Somehow for many years we've lived as a society with anonymous reviews counting for something. We've lived without each individual broadcasting everything we buy and use to the world.

Your view is the minority here. Why don't you go ask a random sampling of people if they want their choices in underwear broadcast to the world?

It's time you looked beyond yourself and realized that people don't have the same preferences regarding privacy as you, nor should they.

<comment><USER32> _Why are you +1ing underwear?_

I've been able to see if somebody +1'd a search result for _ages_ now, and quite frankly I don't want to know if somebody in my circles wears Bonds.

</comment></comment></comment></comment></comment><comment><USER27> True story. Google mail went into my camera folder on my Ipad and put up a picture of me. I know it sounds impossible, or I made a mistake. I honestly didn't. Am I the only one?</comment>