Darts for Geeks: Statistician Cracks the Game's Secrets - <AUTHOR> http://www.wired.com/magazine/2009/11/st_darts?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+wired%2Findex+%28Wired%3A+Index+3+%28Top+Stories+2%29%29&utm_content=My+Yahoo

<comment><USER2> This is a great idea.

I think there is one catch, though. I think he's assuming that my accuracy is the same around the target that I am aiming for, regardless of where it is.

I find that this is not the case. As a "below average" player, I am still much better at hitting the triple 20, for example, then I am at the triple 19 - even though the triple 19 is theoretically "easier". What throws me is that the triple 19 is not centred across the board so lining up to it is more difficult.

<comment><USER3> It's pointed out in the comments on that article that left-right aiming is a lot easier than up-down aiming, too, since left-right aiming depends only on being able to line your arm up with the board, while up-down aiming requires you to correctly calibrate your throwing speed.

</comment></comment><comment><USER4> Is that the son of the machine learning expert Robert Tibshirani? All signs point to 'yes'.

</comment><comment><USER5> I sort of did something similar for my Darts app for the iPhone, specifically for defining the throw model for the "AI" player.

I found it easiest to simulate millions of random dart throws parameterized by throw angle and velocity. I record the slot on the board (1-20, Bull) hit given the launch angles and force of the throw. I let this "simulation" run until I had 50 samples per board slot.

The simulation is run once ahead of time. The simulation results are bundled with the app.

When it becomes the AI's turn, it picks a slot to aim at based on the game variation and state of the game. Currently, it chooses rather poorly in Cricket.

Then it picks a random sample from the sample pool recorded from the aforementioned simulation. Based on the user-chosen competence level, it adds a small, random amount of error to the angle and velocity associated with the selected sample. Finally, the dart is launched using the calculated angles and force.

While the app is Objective C, the offline simulation was written in Python. The whole thing was a blast to write.

Here's an old video of gameplay:

<http://vimeo.com/2010432>

Skip ahead to around 1:10 to see the AI take its turn.

</comment><comment><USER6> Not sure there is that much statistical analysis needed. If you are bad at darts aim for a high number that has high numbers around it (like 14). If you are good or excellent at darts aim for the highest pointed areas (triple 20 or triple 19).

From the heat maps, I would say that even the "above average" skill level should still be shooting for the triple 20, but if the study said that it makes the findings moot.</comment>


Show HN: Real-time US gourmet food truck map - <AUTHOR>

Web app is at http://www.foodtrucksmap.com/
We also have a free iPhone app at http://itunes.apple.com/us/app/truxmap-lite-food-truck-map/id391286574?mt=8
and free Android app (not that great) at https://market.android.com/details?id=com.truxmap
This has been a work in progress for over a year and a half, but I'm now feeling confident enough in the app to ask the HN community for feedback. <comment><USER2> Clickable:

Web App: <http://www.foodtrucksmap.com/>

iPhone: [http://itunes.apple.com/us/app/truxmap-lite-food-truck- map/i...](http://itunes.apple.com/us/app/truxmap-lite-food-truck- map/id391286574?mt=8)

Android: <https://market.android.com/details?id=com.truxmap>

<comment><AUTHOR> Thanks. First time HN poster, didn't know I had to format the links myself.

<comment><USER3> For future reference, URLs show up automatically linked in comments but it's not possible to make a link in the original post text.

</comment></comment></comment><comment><USER4> NO WAY! I've been using this for a few months now! Absolutely love it. Works great in hollywood. Didnt know you were a fellow hacker!</comment>


U.S. Recognizes Opposition Leader Guaido to Replace Venezuela's Maduro - <AUTHOR> https://text.npr.org/s.php?sId=687643405 <comment><USER2> Things are precipitating to either a civil war or a fall for Maduro and a return to democracy. Unlike the Chavez years, the regime has lost the support of the majority of the population, but nonetheless there is a strong loyalist kernel. Maybe a quarter to a third of the people still support Maduro, either because they profit directly from their position in the party cleptocracy he instituted or because they remember the "good" Chavez years of high oil revenues and generous social spending and fear that a regime switch has the potential to make things ever worse for them.

It's essentially a class warfare in a highly divided society, that was political and is turning bloody. As always, authoritarians and populists very skillfully exploit such situations to get into power. The corollary is that it could happen anywhere similar conditions exist, like high inequality and dependence on mineral exports. Russia?

<comment><USER3> Only 36% of US citizens support Trump[1] and yet we don't see calls for deposing him from abroad. We don't see sanctions freezing the assets of US- based multinational corporations because Trump has shut down the US government[2].

This is essentially a coup. Recognizing an unelected oligarch is a continuation of the US's policy of undemocratic meddling in latin american countries.

1\. [https://www.msnbc.com/morning-joe/watch/trump-approval- falls...](https://www.msnbc.com/morning-joe/watch/trump-approval-falls- to-36-percent-in-new-poll-1430479939914)

2\. [https://venezuelanalysis.com/analysis/14239](https://venezuelanalysis.com/analysis/14239)

<comment><USER4> "Guaidó was elected President of the National Assembly of Venezuela in December 2018, and was sworn in on 5 January 2019"

He seems as elected as Maduro.

<comment><USER5> Well, yes, he's elected. He's not elected as President of Venezuela, though.

<comment><USER4> Well, quoting Trump's statement:

>In its role as the only legitimate branch of government duly elected by the Venezuelan people, the National Assembly invoked the country's constitution to declare Nicolas Maduro illegitimate, and the office of the presidency therefore vacant.

<comment><USER3> It's one of those questions: do we believe the words of a notorious liar when he asserts his view of Venezuela's "legitimate branch of government," or do we believe the Venezuelan people?

Is the power to choose their country's president held by the people or by the regional superpower?

</comment></comment></comment></comment></comment></comment><comment><USER6> Brazil, Argentina, Chile, Colombia, Peru, Ecuador, Paraguay have all recognized Guaidó as president.

</comment><comment><USER7> The US can't stop meddling in South America.

<comment><USER8> It's not just the US. They weren't even the first. If I read the news reports accurately, Canada made the move first.

Look, I know we all Trump. I'm with ya. But that doesn't mean that every single decision his government makes is the wrong call. "Even a broken clock is right twice a day", yada yada.

By all accounts, Madura is an unelected tyrant responsible for the deaths of several protesters. I'm not there, so I can't say if these accounts are accurate. But there certainly seems to be an international consensus.

I don't think this action has any similarity to, say, the US's support in the 80s of the Sandinistas, or their involvement in the brutal drug wars, etc.

</comment></comment><comment><USER9> and it so begins...might e the right" move for the people as these guys have failed miserably but...we know. Anyway, sometimes you have to bite the bullet, people will die from inaction as well (starving, disease, crime etc)

[https://en.wikipedia.org/wiki/Oil_reserves_in_Venezuela](https://en.wikipedia.org/wiki/Oil_reserves_in_Venezuela) They apparently more oil any other country. Not as easy to access as or quality like Saudi Arabia but still, that's an amazing asset to work with.</comment>


Why did David Sacks crack down on meetings at PayPal? - <AUTHOR> http://www.quora.com/Why-did-David-Sacks-crack-down-on-meetings-at-PayPal

<comment><USER2> "Meetings are an addictive highly self-indulgent activity that corporations and other organizations habitually engage in only because they cannot actually masturbate."

</comment><comment><USER3> I am afraid the company I work for is falling into meeting culture. When do you guys draw the line. We (developers) have started to loose our Monday and sometimes Wednesday mornings because of this and I'm thinking of talking to some people to change the situation.

<comment><USER4> The problem is: if you bow out of meetings individually, it harms your career at the company. So once meetings are called, it's in the best interest of each person to be in them. Not being in a meeting implies that one is not sufficiently important. The only way to control meeting fever is for the person on top to rein them in.

<comment><USER5> And here I thought that if a meeting could start without you, then you aren't important to that meeting, and thus, why attend?

</comment></comment></comment><comment><USER6> I find that small-scale meetings are underused. I have been making a habit lately of going to see folks I'd usually only connect with via email.

Seeing someone face to face at their cross-town facility can't be beat.

</comment><comment><USER7> I wish people would figure this out where I work. A meeting destroys half a day because the time on both sides of that hour is spent getting back into the coding zone.

What would be nice is some way to collaboratively work on diagrams in an email thread. Occasionally it is helpful to hash something out at the whiteboard but if that could be captured and automatically included as documentation that would be even better.</comment>


Oracle v. Google and the future of software development - <AUTHOR> https://www.blog.google/outreach-initiatives/public-policy/our-fight-protect-future-software-development/ <comment><USER2> A reminder that what the law says, and what is a good idea, is not necessarily the same thing. The courts rule on the first point. Given that Oracle has prevailed in court on this before, one has to at least entertain the possibility that our law really allows for API to be copyrighted.

But if so, that law desperately needs to be amended - the nature of APIs, at least public ones, is such that interoperability concerns override everything else, IMO. If companies can copyright an API and block competitors from implementing it, that would be very detrimental to the industry as a whole, for the sake of a few rent seekers profiting.

<comment><USER3> >If companies can copyright an API and block competitors from implementing it, that would be very detrimental to the industry as a whole, for the sake of a few rent seekers profiting.

The practice of writing drop-in replacements for software products is as old as the software industry, even those replacements that diminish the original product's commercial value. E.g gnu/linux vs proprietary unix.

<comment><USER4> Google didn't do this to be interoperable. There is no set of software interoperable with Android's Java runtime. Not even the court bought this argument, because not only is it ridiculous on its face, but it's technically not true.

Why do people involved in tech keep repeating this?

<comment><USER5> > Google didn't do this to be interoperable.

This is a bold claim - but I suspect your definition of "interoperable" is stricter than common usage (i.e. executable)

> There is no set of software interoperable with Android's Java runtime.

Countless 3rd party libraries _are_ interoperable with Android - the few that aren't probably rely on sun.* - I suspect google did do this to be interoperable with 3rd party libraries as well as Java developers' mental model of where to find things.

<comment><USER4> >This is a bold claim

No it's not. Google even conceded this in court.

</comment></comment></comment></comment></comment><comment><USER6> This multi-year legal battle seem like insanity to me.

What does Oracle, who practically prints money, expect to get out of this other than exercising a fleet of expensive lawyers? At best the case was always iffy and even if they "win" it's unclear what that really means for them given the inevitable subsequent legal maneuvers. Even more puzzling is how are they making the argument that Google has, in any way, harmed their business?

It's just mind boggling. A slip-and-fall insurance scam makes more rational sense to me.

<comment><USER7> Oracle doesn't actually print money. They are cash-rich but are struggling to convert long-suffering customers from on-prem products to their cloud equivalents. Nobody trusts them; you can sort-of deal with a crocodile that shows up once a year to collect, but when you go SaaS you are basically walking by the crocodile all the time, hoping it won't bite you with higher prices at a day's notice. And their support is not very good either, which again is more critical in saas scenarios than on-prem.

In this situation, a significant new revenue stream ( an Android tax) is definitely worth fighting for. And Ellison loves lawyers; he even sued to compete in the America's Cup...

<comment><USER8> > In this situation, a significant new revenue stream ( an Android tax) is > definitely worth fighting for.

Except that there is no hope of that ever happening. Even if Oracle won in a big way, then Google would eat the one-time cost of deprecating the Java API on Android, similar to what Apple did between Objective C and Swift. There is no sustainable revenue stream there.

<comment><USER9> So Objective-C -> Swift, Java -> Go?

<comment><USER10> Java -> Kotlin, surely?

<comment><USER11> Still the same stdlib API, at least the way Google has introduced Kotlin to Android. If they had any ambition to use Kotlin as their vehicle for abandoning the Java API I would expect at least some visible efforts of opening Flutter to languages other than Dart. But in typical Google fashion they seem to deliberately avoid forcing their teams down in the trenches into some unified grand strategy, giving them the freedom to build the best version of their product that they can. Given Google's deep pockets and how badly coordination overhead would scale to their project dimensions, this hands-off approach seems reasonable enough.

</comment></comment></comment></comment></comment></comment><comment><USER12> I've read all the Oracle v. Google decisions, with a strong command of software and IP, and I side 100% with Oracle. It is not a question of whether the world would be better if API's were open-sourced (in re: EFF amicus brief), or whether Mr. Ellison needs a new yacht (in re: comments on HN), or whether copyrights are a good thing (also re: HN). The question is whether the copyright of the Java API is enforceable.

Here's the bottom line: Google didn't have to call it's resizable array java.util.ArrayList<E> \-- it could have made android.data.ResizableArray<E>. But they didn't. Google copied the method signatures, and more importantly their organization into packages, to avoid the "drudgery" of defining their own original API. While a function that finds the minimum of two numbers -- int min(int a, int b) -- can arguably only be written one way and may not be enforcable, the issue isn't any one method's signature. The issue is that the Java API is an original, curated taxonomy of classes, methods, and interfaces, organized by authors. And taxonomies are protected under copyright. In the case of the Java API, the whole API taxonomy is greater than the sum of its method signature parts. Oracle owns that taxonomy.

<comment><USER13> If that holds. Intel will sue AMD into the ground. "The 8086 API and instruction set, is an original, curated taxonomy of classes, methods, and interfaces, organized by authors"

<comment><USER14> There's a cross-license agreement in place there that would certainly cover such case -- even if they were ruled to be implicit.

<comment><USER15> This is important: this shows that AMD and Intel agree that these instruction sets are indeed protected and should be licensed.

<comment><USER16> And yet there's fx!32 (WinNT for Alpha), x86emu (of XFree86), Bochs, VMware, parallels, Plex86, QEMU plus numerous other implementations of i386+ in software (one of them shipping in Windows 7 and newer to run PCI Option ROMs) where nobody seems to care too much.

OTOH, ARM was rather adamant about not wanting to see ARM instruction set implementations in software for a long time.

Either they saw the value in these emulators existing so that changed their minds - or somebody didn't let themselves be bullied into compliance: just because a company threatens you with lawyers doesn't mean they actually have a case.

</comment></comment></comment></comment></comment><comment><USER17> Interestingly Microsoft also had it's own set of problems with Java when Sun was at the helm. Windows used to ship with Java and Visual studio had java as a first class citizen. Microsoft being microsoft, added extensions to Java which only worked on Windows which Sun didn't like. Microsoft ditched java, stopped shipping it with windows and created C#. Thanks to Microsoft , C# is a far better language than what Java is today and developing on windows is a breeze.

Google on the other hand, has not focussed on developers much. I've been building on android for a few years now and the IDE is derived from IntelliJ ( Earlier you had to use eclipse which was even worse ). They could have easily gone the MS way and used another language or one of their own. Major language features are delayed, the code is incredibly verbose(kotlin tries to solve that to a small extent) and they are fighting a lawsuit which if they lose would be pretty expensive.

<comment><USER18> Google does not sell to developers, which is fine by me. But i personally use some libraries with google package names. Even the infamous Guava one.

<comment><USER19> Guava is a nice utility lib. Why do you consider it infamous?

<comment><USER18> Guava is great, thats why its used often. And if you combine projects with each other (hadoop, spark, etc..), they bring in their own guava API level dependency. Normally that is not a problem, if you stick to non @Beta methods, the highest version is used.

I did not find it on the spot, but i remember, there was once a written promise made by the Guava people to remain compatible to a certain API version. And then they broke that promise by changing public signatures or removing methods. Vividly i have the Stopwatch example in my head.

Many projects went on to shade guava.

And thats what it is infamous for.

</comment></comment></comment></comment><comment><USER20> How many projects would be affected if the Supreme Court sides with Oracle and rules that APIs can't be reimplemented?

Java is open source, but copyright is retained by Oracle. Would this affect say, Amazon's ability to rip off the MongoDB API? What about open source x86 emulators? (Intel IP) Hercules IBM emulator? Any of the Nintendo, SNES etc game emulators?

<comment><USER21> Or, say, an S3 compatibility layer for your cloud storage system: [https://docs.cloud.oracle.com/iaas/Content/Object/Tasks/s3co...](https://docs.cloud.oracle.com/iaas/Content/Object/Tasks/s3compatibleapi.htm)

I'm not surprised by Oracle's hypocrisy. I'm surprised anyone with a soul and functioning sense of right and wrong still works there.

<comment><USER22> If Oracle succeeds and Amazon proceeds to sue Oracle for that, that would be some sweet schadenfreude. Granted, I'd still be pissed at the decision, but to have Oracle's tactics used back at them would feel really nice.

<comment><USER23> Oracle would just sue them back for Aurora's MySQL compatibility. If not sue them first.

<comment><USER24> They'd lose for the very same reason that Android is within the confines of the law via the Android Runtime. Dalvik violated the Java license, Android Runtime isn't. Aurora's compatibility layer isn't violating the MySQL license either.

<comment><USER25> > Dalvik violated the Java license, Android Runtime isn't.

Can you elaborate on this point? What license for what copyrightable work did Dalvik violate, and why does Android Runtime not violate that same copyright license?

<comment><USER24> The issue at hand was licensing. In the Android Runtime, Google is linking to the OpenJDK libraries rather than using it's "reverse engineered" runtime. OpenJDK is GPL with a classpath exception, which Google is utilizing.

The caveat for Google is any changes to the OpenJDK itself has to be upstreamed. But the Android Runtime itself doesn't have to be GPL due to the classpath exception.

In all honesty, this is how they should have done it in the first place.

<comment><USER25> That sounds more like an allegation that Dalvik was lacking a required license from Oracle, not that it was violating any existing license.

<comment><USER24> It was violating the open source license, thus required a commercial license, which it didn't have, which in turn makes this copyright infringement. At least that's the position of the courts so far.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER26> I'll appreciate links to previous discussions about the subject but let's say I create the next big thing in the JVM world(the next Kotlin compiler or something like that), it targets the JVM and I happen to replace the implementation of `String.getBytes` at linking time while keeping the same method signature. How big do I have to be for Oracle come after me and ask for royalties of any Enterprise services I could be selling on top of my product?

<comment><USER27> > How big do I have to be for Oracle come after me

Depends on Oracle balance sheet that quarter. Or if they have sold/licensed the patents to other trolls.

</comment></comment><comment><USER28> There was a story on the fp 2 months ago by someone who went to an interview at Google to present her work (didn't work out) only to find out that a patent was later filed by Google covering much of the presented material.

Reminds me of the McGreggor vs Khabib fight - "it's only business"

<comment><USER29> [https://patentpandas.org/stories/company-patented-my- idea](https://patentpandas.org/stories/company-patented-my-idea)

</comment></comment><comment><USER30> It was slimy moves on Oracle's part through and through. It's like the only reason they chose to have acquired Sun Microsystems was so they could go and patent troll with it. Some seriously sad future that Oracle is heading towards if this is their definition of continuing innovation and growth.

<comment><USER31> Also, don't forget that Ellison was a former Apple board member, and probably not entirely unbiased on giving Google a rough time, and thus rallied behind Jobs when he vowed: "I'm going to destroy Android, because it's a stolen product. I'm willing to go thermonuclear war on this." [0]

Of course, it was maybe just Ellison shrewdly leaping on a opportunity to profit off an undervalued ecosystem (Java) at the time. Going on almost a decade now, things certainly proved to be not so clear cut in Google favor, and might still pay off.

[0] [https://www.bbc.com/news/technology-15400984](https://www.bbc.com/news/technology-15400984)

<comment><USER32> Seriously him and Jobs literally would wear matching "best friend" t-shirts.

</comment></comment></comment><comment> temp-dude-87844 This blog post is laundering history. The choice quote: "With smartphone apps now common, we sometimes forget how hard it once was for developers to build apps across a wide range of different platforms. Our 2008 release of the open- source Android platform changed the game." This could be equally said of Java itself, a good eight to ten years prior, which brought a serviceable userland onto desktops of all kinds, mobile phones of the day, and embedded devices too. They lifted that API to bootstrap the developer ecosystem for Android after their efforts to license Java from Sun failed, and did a different cleanroom implementation underneath.

In the gold rush to develop Android apps, their frozen-in-time copy of the Java ecosystem rose to prominence and sought-after Java libraries were held back for years to lag behind official Java's versions. Differences between Android's facsimile of Java and real Java (from plenty of other vendors) caused confusion and divergence to the Java ecosystem, as Oracle's own efforts to leverage Java faltered too. Android's popularity de facto forked Java for years and did so without the permission of the rightsholder. If the copyrightability of APIs isn't the answer we want in the field, what instrument do we need to prevent the same from happening to other products too?

<comment><USER33> > what instrument do we need to prevent the same from happening to other > products too?

...We don't need such an instrument, because the outcome you mentioned is desirable.

If we had such an instrument, Linux would not have been possible, because it's compatible with the Unix APIs. OSX would not have been possible, for the same reasons.

<comment> temp-dude-87844 The difference between a blob storage system that implements an "S3-compatible" API, and AWS S3, is that no one is mistaking the other offering for S3. Dozens of libraries that implement the S3 API as a client, and offerings that implement it in the server aren't under pressure to diverge between fake S3 and real S3, because the API is feature-complete, and doesn't change in meaningful ways. There may be monetary harm to S3 from the competitor cloning their API and competing with them on price, but there is no reputational harm to S3.

It would be revisionist to claim that there was no reputational harm done to official Java by Android's lookalike Java -- irrespective of any mismanagement by Oracle of the Java platform. How does one prevent _that_?

<comment><USER7> "Reputational harm" comes from trademark infringement, not copyright.

And no, you cannot prevent this sort of scenario without losing the right to interoperate with most software.

</comment></comment></comment></comment><comment><USER34> There is a view that WordPress plugins are open source because they inherit the WordPress GPL by using the WP plugin API. This case seems to apply in that the question is whether APIs are copyrightable. In other words, is one able to apply a license to an API that affects code and devs that use that API.

So if Oracle loses, I wonder if that will have the unintended consequence of making WP plugins not inherit the GPL, which currently forces them to be open source. It could have similar effects on other projects.

<comment><USER35> The wordpress argument is about the question if a court would see a plugin as an independent work, or as an modification of wordpress. Copyright law allows for independent works to interface with each other without permission from both authors, but do not allow modification of a work without permission.

The distinction between a modification and a interface is an interesting legally gray area, but it is not relevant to the claim that Oracle is making. They say that the interface itself in Java was artistically made and thus made the header files copyright-able. If the courts agree with Oracle then it makes it impossible to write software that have compatible interface, since it is (almost) impossible to do so without creating copies the interface.

<comment><USER25> Is there anything in the Federal Circuit's ruling that restricts the consequences of API copyright to independent implementations of APIs, and ensures that consumers/users of the same APIs are not treated as derivative works of the API?

<comment><USER35> Not that I know of, but in general the idea of independent implementations of a compatible API is practically impossible. In order to be compatible it need to match, and while you can make a independent implementation of the libraries you will still need to copy the API definitions in order to be compatible. That is the part that Oracle sued for.

</comment></comment></comment></comment><comment><USER36> If anyone hasn't seen oyez[1], I highly recommend it. It's a simple web app that plays back Supreme Court proceedings, showing the current speaker etc. It's somewhat intoxicating to listen to history in the making. If you click on the oral argument link, you get the dialogue experience[2].

[1] [https://www.oyez.org/cases/2018/17-204](https://www.oyez.org/cases/2018/17-204)

[2] [https://apps.oyez.org/player/#/roberts10/oral_argument_audio...](https://apps.oyez.org/player/#/roberts10/oral_argument_audio/24778)

<comment><USER37> This amazing!! Better than podcast

</comment></comment><comment><USER38> Would this make the WINE project in violation of copyright for MS Windows?

<comment><USER39> Yes

</comment></comment><comment><USER40> Sorry if this dumb, but what does a fossil like Oracle have to do with the future of software development?

<comment><USER41> Oracle bought Sun, the company that created Java. Android was designed in such a way that code written for the Java Virtual Machine could run on it without modification, though the implementation itself is totally original. Oracle is claiming that even the set of vocabulary used by Java programs to talk to the JVM - not just the JVM itself - is copyrighted. This vocabulary is otherwise known as an API. APIs live between every piece of software and every other piece of software it talks to. If the precedent was set that you could copyright an API, it would be a catastrophe for people's ability to build software on other software.

<comment><USER42> If Oracle wins what would that mean for a project such as WINE? My understanding is that Microsoft could cite precedent and request WINE pay royalties as a standard install of windows.

<comment><USER41> Precisely, unless they decide to continue their recent good-guy streak.

</comment></comment></comment></comment><comment><USER43> So Oracle is saying that google violates copyright by implementing certain java interfaces for android? I'm not sure how java and android work together. Does google provide a java wrapper and then go under the hood and implement those APIs for the android device?

<comment><USER44> They use the same signatures in the header files, e.g.

        int add(int, int); //adds two numbers

Oracle is claiming copyright on a similar bit of text. If Oracle wins, any developer writing a method with that signature is violating Oracle's copyright. It's insanity.

<comment><USER45> That's not true. If you independently come up with that then there is no copyright violation. Especially if it's a single method out of a large API.

<comment><USER46> But there's the rub: they are claiming the API is copyrightable, not just the code that implements it. Independently coming up with the code is irrelevant if the API being (re)implemented is copyrightable.

<comment><USER45> Yes, I understand that. My point is that simply defining add(int, int) isn't infringement. You have to actually copy something for it to be infringement. Independently coming up with a small portion of an API is not copying and not infringement.

<comment><USER47> There's not much of a difference, practically speaking.

If you can copyright the structure and organization of an API, then interoperability becomes impossible. If every API has to be unique enough that it doesn't violate the copyright of anyone else in the same problem space, you can no longer create compatible reimplementations.

<comment><USER45> >There's not much of a difference, practically speaking.

It means you can come up with your own API design without infringing on someone else's copyright.

>If you can copyright the structure and organization of an API, then interoperability becomes impossible.

It doesn't become impossible. It simply means that people need to follow the license that the API has. If the Java API was valuable to Google then they can pay the creators a license fee to use it. If the license fee is too expensive or comes with unacceptable terms then don't use it. Write your own or use some other API with a more permissive license.

</comment></comment></comment></comment></comment></comment></comment><comment><USER48> Appealed to the Supreme Court? That's good news. They've shown more sanity than many other courts on intellectual property issues. Maybe we can get the idea of copyrighting APIs finally shot down...

</comment><comment><USER49> I've followed this case a bit and read a few articles for each side, given our current legal framework I haven't seen a good argument against Oracle.

Is there something obvious I'm missing?

<comment><USER50> Do you understand copyright? Copyright protects the specific expression of an idea, it doesn't protect immutable facts. An interface is an immutable fact. That's the essence of the argument.

<comment><USER51> It's a shit argument, because software interfaces are no more and no less "immutable facts" than software implementations. Oracle is correct here; fair use and copyright law need legislative intervention to fix the problem.

<comment><USER24> It's a Table of Contents at best. There's nothing "original" about System.out or StringBuilder.append. The only reason this case has seen success is because the appeals court ruled that an API is akin to a taxonomy and that a taxonomy is copyrightable. The problem I have with that is that facts _aren 't_ copyrightable.

You can append to a string. You can prepend to a string. You can reverse a string. And that's all API's are. There definitions of things you can do to a given structure. If the API was "Shazam.PowerBuilder.AwesomeThing()" I'd understand this position. But it wasn't. It was obvious lists of "facts" about given structures.

<comment><USER45> >You can append to a string. You can prepend to a string. You can reverse a string. And that's all API's are. There definitions of things you can do to a given structure. If the API was "Shazam.PowerBuilder.AwesomeThing()" I'd understand this position. But it wasn't. It was obvious lists of "facts" about given structures.

But in Java I can't add to a string. I can't prefix a string. Nor can I invert a string. So the things you mention aren't mere definitions or facts about things you can do to a string. They're methods specifically chosen by the language designer to be useful and those choices are a big part of what makes Java different from Ruby, for example.

</comment></comment></comment></comment></comment><comment><USER52> EU ruled that APIs are not copyrightable because they are too abstract. It's really bizarre, US courts didn't yet come to the same logical conclusion.

<comment><USER22> The court did. But the appellate courts (who are known for being pro patent) said the ruling was wrong

<comment><USER52> Well, let's hope Supreme Court will restore sanity in this case.

</comment></comment></comment><comment><USER53> I'm a bit confused about why Congress made appellate jurisdiction with CAFC work they way it does with patent cases.

The usual justification for giving courts supplemental or pendant jurisdiction over subjects for which they normally lack subject matter jurisdiction when a case involves both something they do have subject matter jurisdiction over and something they do not is that there they will usually be arising out of the same facts and involve the same witnesses.

If they were heard in separate courts, many witnesses would have to appear to both and that could be a hardship on them.

For appellate cases there aren't witnesses. It's just the lawyers arguing from the record from the trial court.

If the original case involved both patent infringement and something else, the patent aspects of the appeal are going to be handled by patent specialists, and the other aspects are likely to be handled by different lawyers.

Thus, I don't see why the appeals should be bundled together and all sent to CAFC. Why not send the patent appeals to CAFC, and the appeals for other aspects to the ordinary appellate court they would have went to if there weren't also patent appeals?

Furthermore, in the Google vs. Oracle case the second trial was just on the issue of copyright fair use, wasn't it? Apparently even though the trial court there was just dealing with copyright, because the original action why back at the beginning had a patent claim, it goes to CAFC even though there is now nothing involved that they normally handle.

If we are going to have this screwy appeals path, how about allowing CAFC decisions on matters that are normally out of their jurisdiction, such as copyright, to be appealed to the regular Circuit Court of Appeals they would have normally gone to? CAFC is supposed to follow the regular Circuit Court of Appeals for precedent on such matters, so it seems crazy that the appeals path does not go through that court. As a general principle, if court X is supposed to follow court Y's precedent for something, court Y should be in the appeals path of court X.

<comment><USER54> > I'm a bit confused about why Congress made appellate jurisdiction with CAFC > work they way it does with patent cases.

Economy of justice; otherwise, an appeal of a mixed case would often actually be two separate appeals to separate circuits, each of which would often make some legal decision and remand to the trial court, which would potentially have to wait for both appellate decisions before proceeding, especially if either required a new trial, since those new trials would have overlapping witnesses, etc.

</comment></comment><comment><USER55> Can't they both lose?

<comment><USER56> Exactly. Kent Walker's post oozes unearned righteousness. Does _anyone_ believe Google will not be doing the exact same thing with its (moribund) technologies in, say, 5-10 years?

<comment><USER54> > Does anyone believe Google will not be doing the exact same thing with its > (moribund) technologies in, say, 5-10 years?

I expect that they won't, if they win at the Supreme Court in this case, since there will be unambiguous controlling precedent that they _can 't_.

</comment></comment></comment><comment><USER57> I know for a fact that Oracle has weird rules targetting doing business with specific companies because someone from these companies did something bad to them at some point. It usually involves suing them as well. The culture is really weird there as management is some sort of monarchy. I wouldn't be surprised if this one has similar roots.

</comment><comment><USER58> So if I write a small API that for all intents and purposes is identical to one that Oracle owns, but I write it in a different language, is that still infringing on their copyright? It seems that would have to be the case in order for a pro-Oracle ruling to make sense. If not, then everyone has a good reason to stop using Java.

</comment><comment><USER39> Here is a great analogy for Software APIs:

They are the same as the ingredient lists in a "100 traditional recipes" book.

Recipes have a name, they have ingredients and they have detailed instructions how to make the end result out of the ingredients.

The detailed instructions are copyrightable but the recipe name and the list of ingredients are not!

</comment><comment><USER59> The primary loser in all of this is Java.

Companies must be actively reconsidering their involvement with Java - I know a handful.

Google, on their part, is pushing Kotlin to avoid the Java branding. Next is Flutter to entirely get off Java. There seems to be some evidence that they're also beginning to avoid the Android brand in places.

</comment><comment><USER60> I'm not a legal person or a supporter of Oracle but intuitively I've always felt their side of the story. The Java APIs are interfaces, but they're the result of tons of work which Oracle bought, and it doesn't make sense to me why those interfaces aren't their intellectual property.

<comment><USER32> > The Java APIs are interfaces, but they're the result of tons of work which > Oracle bought, and it doesn't make sense to me why those interfaces aren't > their intellectual property

Just because something takes work doesn't mean you get a government monopoly on it. Sewing patterns and recipies aren't granted copyright for instance.

<comment><USER51> The trouble with this line of thinking is there's no viable way to make a legal distinction between interface and implementation. So either interfaces are copyrightable, or code isn't copyrightable.

<comment><USER61> >So either interfaces are copyrightable, or code isn't copyrightable.

Needs citation?

I don't know where to start, but no, this case ruling in Google's favor would not make code uncopyrightable. The general idea is that there is only one way to copy a method's signature. There are many ways to implement the actual logic. It's hard to find a direct source since no one else is jumping to this extreme conclusion. So the test is, could you have done it another way? And since you can not have a function with the signature System.out without having a function with the signature System.out, it would be considered fair game.

</comment></comment></comment></comment><comment><USER62> Food for thought:

Say Oracle wins. Now android comes with a price tag.

Doesn't that mean, some open source alternatives like FirefoxOS or PostMarketOS will get more mindshare?

A cursory look at all the open source alternatives, shows that they are all based on Linux. So interoperability could be achievable.

It could be whole new world!

<comment><USER63> Google would only be able to sell new versions of Android, mainly starting with 10. They can't revoke the Apache license on Android through version 9.

On top of that, Android 7 already switched to OpenJDK. It no longer uses Harmony as a result in addition to their custom rewrites. So even if Oracle wins, Android hasn't been in violation of any API copyright they have for about two years now.

</comment></comment><comment><USER64> not forgetting an infamous HN comment: "lawyers are profit centers at Oracle"

</comment><comment><USER65> Well, the end result will be Google replacing Android with Fuschia, Java with Go and Dart, and Java no longer being relevant in the mobile space.

</comment><comment><USER66> There was an article on a blog which I can't find now where the author explained this situation in depth. Do any of you have a link to it? I think it would be useful here.

</comment><comment><USER67> Same old Google.

Had they not tried to screw Sun and then left it to die instead of acquiring it, this would never had happened.

"James Gosling Triangulation's Interview on Google vs. Sun"

[https://www.youtube.com/watch?v=ZYw3X4RZv6Y&feature=youtu.be...](https://www.youtube.com/watch?v=ZYw3X4RZv6Y&feature=youtu.be&t=57m42s)

Even with their switch to OpenJDK, they keep cherry picking standard Java APIs, forcing Java library developers to write two versions of their libraries or make do with minimal common denominator.

<comment><USER68> > they keep cherry picking standard Java APIs, forcing Java library developers > to write two versions of their libraries

Can you give some examples of what Android is missing? I know it doesn't implement various packages like awt, swing, javafx, etc., and of course sun.misc.Unsafe. But I wouldn't consider any of that "core Java", and a lot of it doesn't exist in Java ME either.

Are there any disparities in "core Java" libraries, like java.util?

<comment><USER67> They don't exist in Java ME, but a large majority does in Embedded Java, depending on which compact profiles are supported.

They also existed in SavaJe OS.

As for examples, just use the API diff tool and search for java.lang* modifications.

[https://developer.android.com/sdk/api_diff/<version>/changes](https://developer.android.com/sdk/api_diff/<version>/changes)

Or play around with the API level on the reference docs.

To be more concrete:

\- Locale.Builder, Java 7, introduced in Android 21

\- java.lang.invoke package, Java 7, introduced in Android 26

\- java.nio.file package, Java 7, introduced in Android 26

So one needs to do API hunting or just target the very latest versions to be on the safe side that an APK won't just blow up on user's device.

<comment><USER25> > To be more concrete:

> \- Locale.Builder, Java 7, introduced in Android 21

> \- java.lang.invoke package, Java 7, introduced in Android 26

> \- java.nio.file package, Java 7, introduced in Android 26

Should the legal status of Android _really_ depend in any way on whether or not it is _done_? Is there any practical way to define public policy that allows a work-in-progress reimplementation for competitive purposes but prohibits an incomplete reimplementation that you don't intend to flesh out to 100% compatibility?

<comment><USER67> Yes, Google Android J++ should be slammed 100% the same way as Microsoft one was.

Google has created a fork in the Java community.

<comment><USER25> Can you please try to address the distinction between work in progress vs. not even trying for 100% compatibility? Are you saying that neither should be legal, but a complete and 100% compatible reimplementation should? Or are you saying that reimplementations should not be legal regardless of how complete and compatible they are?

<comment><USER67> I am saying that Google has done exactly the same to the Java community as Microsoft did with J++ and should suffer the same outcome in court as Microsoft did.

It was wrong for Microsoft, it is just as wrong for Google.

Implement whatever Android specific APIs they feel like, but just like ISO C or ISO C++, don't fork the Java standard library.

<comment><USER25> > I am saying that Google has done exactly the same to the Java community as > Microsoft did with J++ and should suffer the same outcome in court as > Microsoft did.

As far as I can tell, Sun sued Microsoft for trademark infringement, and Microsoft settled. Which part of that applies to Google?

It really seems that you've decided you want Google to lose regardless of the legal basis used by Oracle. Whereas I think Google should win _because_ of the legal basis Oracle is attempting to use. I don't actually care whether Google ends up having to pay Oracle some money; I just don't want the entire legal foundations of the software industry to be retconned by this case.

<comment><USER67> Sun sued Microsoft for changes to the Java platform, making it not compliant with the trademark.

I want Google to loose because they succeed where Microsoft failed, forking Java eco-system, and having a bunch of people that call Microsoft the evil empire, actually supportive of Google's actions.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER69> Wait a minute. Oracle acquired Sun. And Google acquired Android. Oracle trys to lock down API of Java. Google locked down their services and PlayStore by Google account. Oracle sued Google for Java API usage. Am I missing something? :)

</comment><comment><USER70> Google should've definitely paid Sun for licensing.

</comment><comment><USER71> is Java a standard now? Did ECMA/ISO pick it up?

</comment><comment><USER72> This is a really good case for the supreme court. As much as we may wish to side with Google because it benefits the typical developer, it is a nuanced case that requires some serious legal study. I can see the argument for these API's being in the public domain due to their widespread use, but at the same time, that sets a precedent for making success anti-competitive. I'm reminded of the cases where brands lose their trademark because their brand becomes the generic name. Can that be seen as a precedent in favor of Google's case? I.e. that once something becomes so widely used it becomes generic and free game for others to use freely?

</comment><comment><USER73> Lots of FUD here. Please see cwyers's answer on this page to see that a ruling in favor of Oracle will change little in terms of where software stands today. Almost all the use cases we see are fair use- except Google's where they deliberately harmed the Java ecosystem, the way Microsoft tried in 1998 (PS: Their JIT actually beat Sun's so in that particular case better technology lost because it was illegal)

<comment><USER74> (IANAL, this is not legal advice.)

I wish you, and cwyers, would provide better reasoning as to why this is all FUD before decrying it as such.

I'm not seeing how "doesn't harm the ecosystem" is a fair-use defense. What logic are you using to arrive at a fair use argument for Linux's copying of Unix APIs that doesn't apply to Google's case?

I'll pose the same examples to you as I did in another thread: IIRC (it was a _long_ time ago) Window's APIs closely resemble or are exactly like OS/2's PM APIs. Windows, one might argue, _definitely_ harmed OS/2's "ecosystem", since the latter is virtually extinct in the mind of the public. Is that a violation of copyright?

Especially since _nobody_ thought APIs were copyrightable right up until Oracle decided to declare them as such, nobody has put anything regarding them in licenses. Nobody has thought that they even _needed_ a license, much less obtained one, and a lot of effort has been built on top of products that are backwards compatible with things from many decades ago.

<comment><USER73> You know the great thing about copyright? Nobody has to say anything. If it's creative work then you automatically have a copyright. You don't need a (c) 1988-2019 for that.

</comment></comment></comment><comment><USER75> On the one hand I feel bad for Google. On the other hand, if this is what ultimately ends the twin blights of Java and Oracle on our industry... so worth it.

</comment><comment><USER76> Oracle is right. Google & Android hinder and split Java with their outdated Java version support. If you write code in Java - now you have to decide whether you want it to be Android-compatible, then you need to limit your code to the outdated API available on Android. Or you can write sterling Java code which can use modern Java API. I hope Oracle wins and Android dies or switches to some other programming language, like Dart or whatever Google is capable of.

</comment><comment><USER77> I don't think Sun should have protected the code for Java. But I think it should be possible to protect it. Most people here may hate the Jaa language but it took a ton of work and expertise to invent it. And it took something to make the ecosystem as large as it is today. This seems to contain as much intellectual property as something like a book. And when it come down to it, the intellectual property is in the method signatures anyway. There is no big trick to the code inside them. An intern could write that.

As the lesser of two evils, I prefer Google to Oracle. And I hate patent trolls, especially this instance of it. But at the same time I don't want to reduce the legal value of software. If java is not protectable, is a program like Micrsoft Word or Autocad?

<comment><USER78> All of that said, if Google had to pivot by rewriting android in, say, Go, that could be extremely good for the Android ecosystem.

<comment><USER32> Given that Oracle is claiming copyright on the public API, they can't do that without also removing support for literally the entire app store. It doesn't matter if it's in Go or Java.

<comment><USER78> Yeah, that's the exciting part :D

</comment></comment></comment></comment><comment><USER79> While I don't endorse the sneaky way Oracle purchased the rights only to sue Google it does highlight what happens when you become complacent and lose focus on what's important.

In an open market Google also had the change to buy those intellectual properties but at the time, they thought they are too smart for everyone with silly bids like the Pi bid [https://www.theguardian.com/technology/2011/jul/02/google- pi...](https://www.theguardian.com/technology/2011/jul/02/google-pi-auction- bid)

If you're serious about an industry, you work to reinvent it like apple has done with their operating system and hardware. If you take shortcuts then you need to face the music and in this instance Google has been out smarted by another industry competitor.

If we support open competition and we believe in Darwin's theory of evolution then Google is the inferior because they took shortcuts & didn't make serious investments in owning the mobile landscape.

<comment><USER80> This lawsuit is nonsense. Do you think that APIs can be copyrighted? This will kill innovation and competition.

<comment><USER81> I don't see why they shouldn't. They're definitely creative works that take skill to produce.

I think using an API for the purposes of interoperability should be allowed under fair use.

However! My controversial opinion is that Google's use of the Java API _wasn 't_ for interoperability. They didn't use the Java API so that Java programs could run on Android, they used it so that Java developers could transfer their skills to a new platform which is precisely the value of a cleanly designed API -- value that Oracle doesn't want to provide for free.

<comment><USER82> _I don 't see why they shouldn't. They're definitely creative works that take skill to produce._

You're missing an argument in there that joins your two assertions.

The fact that something is creative or requires skill to produce doesn't mean that it should be copyrighted.

Copyright is a government enforced monopoly. In order for society to enforce that monopoly on behalf of private enterprise, there has to be a quid pro quo. The usual one is to promote creation and distribution of new works.

The question then is: would no APIs exist if they weren't copyrightable?

<comment><USER51> You have made a good case for adjusting fair use legislation to accommodate the general practice around software APIs vs. implementation.

Unfortunately courts generally can't write laws for the legislature.</comment></comment></comment></comment></comment>


What America can learn from the fall of the Roman republic - <AUTHOR> https://www.vox.com/2019/1/1/18139787/rome-decline-america-edward-watts-mortal-republic <comment><USER2> Not false, but... but this underestimates the extent to which all these issues were in play throughout Rome's history.

Compare this article: [http://time.com/4986516/ancient-rome-comparison-mike- duncan/](http://time.com/4986516/ancient-rome-comparison-mike-duncan/)

I've just read the book discussed in that link, as it happens. It's excellent (I've just downloaded the podcast, which is highly regarded) but it led me to somewhat different conclusions:

1) The parasite classes win most of the struggles within every large society and ALL of the wars. They come up on top, once again imperiling the society within a generation or at most two, after even modest reforms. Note that this happened in the Soviet Union, too, after a parasite-swap. (See also, China's princelings.) Marxist rhetoric isn't a magic spell, either. For a long time, Rome's opponents were even more parasite-dominated, and this helped Rome to survive more than its own virtues did.

The book "How Asia Works" reinforces this lesson, saying (with much detail) that only the discipline of forced exporting of goods has limited uber- corruption within nations, even in our own time. Not laws, custom, or internal structures. Terrifying book.

Rome wasn't markedly less corrupt or egalitarian, early in its history (when the franchise was restricted to the city itself!) - it's more that its opponents were either less developed societies, then; or even more corrupt and parasite-ridden than Rome was when they happened to cross swords.

2) You can't set out to consciously reform society and get that result, at any sacrifice; both because 1), and because your reforms are probably ahistorical and an equally bad idea (I'm looking at you, Sulla, etc, etc.) You might put 'em in place, but dare to die and those changes will be quickly reversed, because you were an idiot, or because money. Marginal changes (such as once again enforcing laws vs monopoly/extending market power/restraint of trade) are possible and desirable: but also temporary. A strong monarchy can provide an exceptional century, but!; if you roll "five good Emperors" don't be surprised if you roll "five terrible Emperors" right afterward.

3) Technological change does survive - and it's better being poor now even than five decades ago, esp re entertainment and education-wise, because tech. And way better than a couple millennia ago. So, Go science and research, and Go tech. Go art too, that can also survive, now and then. Fund all this, and don't over-institutionalize 'em (as we have)!

4) Paradoxically, 3) - tech advance - while helpful in the long run, also makes more vicious parasitism likely in the short term: because anything that makes society a lot wealthier (such as final victory in the Punic Wars) allows worse parasitism without revolt. Oil nations suffer from this acutely in our own time.

5) Mores (latin for norms): Strong restraining and egalitarian mores can survive for generations only _within_ a parasitical class that can only continue to exist if those mores also persist, keeping others down. The citizens of Rome rich and poor, were for a very long time before citizenship was finally extended to the Latins, just such a class, dominating and exploiting the Peninsula. A citizen might be poor, but they were also in the right place, and their sons and daughters had a good chance to do well off the crumbs from rich tables. But the massive extension of the vote outside Rome that Sulla entrenched also guaranteed the dissolution of previous norms. Restraint toward other Romans no longer served a practical purpose.

Similarly, after WWII the U.S. (while ruling benignly by any historical comparison, including Britain) exploited allied nations (and captured/stolen IP that it didn't share) far more than it is ready to acknowledge. That edge is gone, so without being able to exploit other allied nations, the U.S. elite can only exploit its own citizens, now - therefore goodbye to any norms that used to get in the way of that.

<comment><USER3> > The parasite classes win most of the struggles within every large society > and ALL of the wars.

It's hard to gather any lesson about this from ancient history, because parasitism was literally _everywhere_ before the industrial age. It's only _well_ into the 18th century that an overall _elite class_ (as opposed to individual craftsmen or providers of specialized services) could emerge which would potentially be putting most of its efforts into actual wealth creation, rather than parasitism.

> You can't set out to consciously reform society and get that result, at any > sacrifice

Again, probably true, back then (any social reform would amount to rearranging the chairs on the Titanic - there just was little or no ability for actual growth) but not today. The 1980s neoliberal reforms encompassed much of the Western and ultimately of the non-Western world, were highly successful, and are apparently here to stick. And they were very much the result of purposeful social reform!

Even back then, the republican form of government was very much supported by conscious reflection about how it was supposed to work, and it arguably kept the Romans out of self-inflicted trouble for 500 years - which was probably as much as one could ask for, back then! (E.g. since you couldn't _create_ much new wealth, the next best was to at least refrain from destroying what wealth and successful social organization you had!)

<comment><USER2> Again, I recommend Mike Duncan's book, "The Storm Before the Storm: The Beginning of the End of the Roman Republic." It details many, many cycles of the same phenomenon, and not just in Roman society. The truth is, it's hard NOT to make some rather firm generalizations from reading a lot of history (or anthropology.) There's lots of variation, but the themes that derive from Darwin's Spotlight: namely reproduction/sexual selection and survival, are extremely reliable.

Re elite classes, Roman economic history shows that the Gini coefficient back then was remarkably high. In the book I mentioned just reading, a contemporary famously says that only 2,000 people in Roman society - at that moment in time - owned productive land. The elite were agrarian (their wealth was) until mid- nineteenth century Britain. But they funded education and public libraries (say, in the baths.) If you think today's elite are different because they are mostly creating wealth, that's just not what Wall Street does, and it's obvious from research that finance, while capturing immense riches, actually diminishes innovation. Elon gets a lot of press because he is the exception, not the rule.

Neoliberal reforms - although I've been given that label at times (with considerable opprobrium), you'd have to specify what is sticking (or a reform.) If you mean global trade, the aforementioned book "How Asia Works" has convinced me the current reversal isn't a blip - it's impossible to police subsidization (he gives endless examples) so free trade isn't possible, much less sustainable. The tech gains in developing countries should persist, but the current system of trade is dissolving now.

"kept out of trouble", no, the bloody revolutions (mostly attempted) tended to come every ten to twenty years. This was a cycle in which the Republic regularly went from "in name only, pretty much" to "partly or mostly true," and back again.

I do get from your comment that we should probably be making a more conscious attempt to focus attention and acclaim on creators and funders of creation, particularly of technology and science. From the perspective of future generations, they will be "the elite that actually mattered."

</comment></comment></comment><comment><USER4> For me the biggest similarities is how peculiarities of the political system are used more and more as weapons against the political enemy instead of behaving according to some unspoken agreement or the way of the ancients as the romans Called it.

In Roman times it was the use of tribunate powers and circumventing the senate. In the US today it is gerrymandering, filibusters and not allowing votes on the Supreme Court nominations.

This kind of behavior can be very divisive politically, making the other side into a real enemy instead of merely and opponent one will need to work with again. Interstingly in Roman history it was basically a Democrat using these powers for true social reform that tipped the republic. So if you elect a new Obama that is worth the hype and he actually does too much for the poor and he then gets killed by the Republicans. Then you might be out of luck.

</comment><comment><USER5> I don't know if I would draw a particularly strong parallel between Julius Caesar and August Caesar in the Roman column and the current administration in the other column.

<comment><AUTHOR> I agree, it isn't a straightforward comparison. Suspect the USA see more and more demagogues/populists as the years go on (cue Idiocracy comparison), but right now we are in early days of decay. As the author of the book says, we can still walk back from the edge.

<comment><USER6> What's it like being able to see into the future?

<comment><USER7> I'm not sure what your sarcasm contributes to the discussion.

I think op has a fair point. If we remove our political views, we can still see that our government and politics are extremely divided. Furthermore, wealth is accumulating into the hands of a very few. What should be democratic outcomes are substantially influenced by capital and the ones who possess capital.

You could argue that our politics were always divided. I haven't forgotten how toxic it was during the Clinton administration (again, I'm not blaming either party or taking sides).

What's making it worse today is with access to the internet and social media, everything is amplified times 100. Spreading misinformation is a lot easier and we're dealing with adversarial nation states exploiting that to our detriment.

Personally, I don't think this is sustainable in the long term.

Now- let me mix in my more biased opinions. In the country my parents immigrated from, doing things such as jailing or threatening to jail your political opponents, labeling all your political opponents as corrupt, criminals, etc was a common thing.

Over time, it only got worse over there. We are seeing those authoritarian tendencies here, and that's the real terrifying part.

<comment><USER8> I see your point, but perhaps on occasion the labels of corrupt and criminal are accurate.

The corrupt and criminal should be called out. (never mind that those calling them out are often the same thing).</comment></comment></comment></comment></comment>


You Don't Have to Fail While Installing Ruby on Rails on Windows 10 - <AUTHOR> https://www.nopio.com/blog/rails-environment-windows-10-setup/ <comment><USER2>
        There is a mentality among developers that Windows is not for programming, which is quite unfair

(article then immediately describes how the operating system they paid for needs open-source code to have a decent terminal, SSH client, and package manager)

Yup, don't have any idea of where that reputation might've come from...

<comment><AUTHOR>
      article then immediately describes how ... needs open-source code to have a decent terminal, SSH client, and package manager

No, article describes how to get _linux-like_ console/ssh/packaging manager on the system which have its own completely different environment. You can use PowerShell for everything described (yes, you'll still need to install ssh module, one command), but you'll need to use PowerShell syntax instead of Bash.</comment></comment>


Node.js, The Bad Parts - <AUTHOR> https://medium.com/@ivanguardado/node-js-the-bad-parts-b4b9d23ef7e2

<comment><USER2> In the end of the day, it's just a glorified Reactor Pattern implementation, leveraging web APIs and some package management:

[http://en.wikipedia.org/wiki/Reactor_pattern#Limitations](http://en.wikipedia.org/wiki/Reactor_pattern#Limitations)</comment>


Ask HN: Does anyone know of a UK based lob.com alternative? - <AUTHOR>

I'm looking for an API to print and mail letters like https://www.lob.com/ but I'd like to use one based in the UK. Are there any nice ones out there? <comment><USER2> The printing API's that I use in the UK seem to be mostly for photos or high quality prints.

There is www.docmail.co.uk/API/ but I've not tested their services so I can't say if they're any good.

<comment><AUTHOR> Thanks I'll investigate them. I had the same issue, everything I'm finding is for printing photos onto various objects.</comment></comment>


Not Everyone Needs to Learn How to Program - <AUTHOR> http://dooskington.com/not-everyone-needs-to-learn-how-to-program/ <comment><USER2> I disagree. When I look at people shouting at their laptop or mobile phone because "this shit doesn't do what I want", I wish they were exposed at least to a little bit of programming. It changes the way you think. You think in a more logical way, you become better at solving problems. So next time when this shit doesn't do what they want, they might think of a way to work around it. Life is more pleasant when you don't fight the technology but try to understand it instead. If you learn how to drive a car, you should learn how the engine works. Makes you a better driver.

<comment><AUTHOR> That is a very good point.

However, programming, while a valuable skill in and of itself, sacrificing more fundamental academics in order to make room for it isn't the way to go.</comment></comment>


Introducing C++ experimental io2d (2D Graphics in the C++ standard library) - <AUTHOR> https://cristianadam.eu/20160228/introducing-c-plus-plus-experimental-io2d/ <comment><USER2> This is somewhat misleading, it's a _proposal_ to add 2D graphics to the C++ standard library which will hopefully die in committee.

This isn't something like threading or filesystem access where we need to put it in the standard library because it abstracts platform differences. This isn't something like std::unordered_map or std::sort where it's so universally useful that we want to put it in the standard library. No, this is extra functionality that should be in a third-party library.

Honestly, it worries me a little bit that such a prominent member of the C++ committee came up with such an ill-advised proposal, and it makes me worry that the success of C++11 has gone to their heads. What I don't understand is why someone would even be unhappy that this is not part of the standard library, since this kind of stuff has been available in third-party libraries for years. You shouldn't be clamoring for inclusion in the C++ standard, you should be calling for better third-party library support in your tooling!

<comment><USER3> > You shouldn't be clamoring for inclusion in the C++ standard, you should be > calling for better third-party library support in your tooling!

This. Honestly after C++11 the stuff they're adding is scarcely useful, it mostly just complicates the language itself even more than it currently is. They're trying to change the way you write C++ code without removing support for the old ways. I feel like they should make a new language instead of adding mostly useless things/stuff that barely anybody will use (could be also because barely anybody will know of that feature's existance)

<comment><USER4> Concepts, modules, a file system library, and an asynchronous I/O library have all been discussed as additions for C++17 and beyond. Most of these features are standard in modern languages. I would not consider any of these to be "scarcely useful." As someone who uses C++11 on a daily basis, I very much look forward to using these features without a Boost dependency.

That being said: I don't think that a graphics is a good addition to the standard library. It would tremendously difficult to standardize this for the reasons others have mentioned.

<comment><USER3> I forgot to add " _mostly_ scarcely useful", instead of "scarcely useful". There are some things that make sense, like file system library and async I/O library that you've mentioned (althrough I don't agree on concepts and modules, but that's up to one's preference), but then comes stuff like constexpr, rvalue reference, Deleted and Defaulted Functions, that aren't essential to most programmers, and mostly just clutter the language, because only like, 1% will use them, and the rest will be like "what the hell is this" when looking at that 1%'s code.

<comment><USER5> I disagree. I'm a scientific programmer working mainly in C++ and Python. Deleted and defaulted functions help a lot by reducing the amount of code that needs to be written, maintained, and debugged. Rvalue references help by reducing unnecessary copying, which is a huge benefit when working with large data structures. Before, the workaround was classes that wrapped pointers with shallow copy semantics, which turns into an aliasing nightmare.

YMMV, depending on your field, of course.

</comment></comment></comment></comment></comment><comment><USER6> The death of c++ in many universities could be blamed a little on the hurdles you have to jump to create something windowed and interactive (what many would consider a "program"). I saw that happen at my university between 2000-2010, and in the computer graphics department we just ended up using Processing to teach most concepts.

It's in c++'s best interest to have some components whose purpose is to make things easier, especially for newcomers. io2d fills a huge gap there, one that hasn't been filled by any compilers/IDEs in a cross-platform and straightforward way. However, I agree that better c++ package management would have solved this problem, and also eliminated the need for <filesystem> etc.

I'm not happy with the specifics of the io2d proposal (50+ colour constants?) but it's a start.

</comment><comment><USER7> Why are people trying to turn C++ into python, complete with it's legacy useless cross platform UI library (ktinker).

We _know_ from experience that this is a bad idea, and a waste of everyones time.

Build your application layer logic _onto_ of a robust module ecosystem, don't try to bake it into the standard library.

...but even if you were to say, want to do this, this is a horrible legacy api before it even exists!

Hard coded color constants? (antique_white? alice_blue? Are you kidding me?)

Font support, including (presumably) true type font parsing?

Brushes and gradients?

No mention in the whole document are programmable graphics pipeline? (ie. shaders)

No mention of device independent output scaling?

Maybe we can just fork inkscape and put it into the standard library?

I know this sounds harsh, but have the authors of this proposal actually built anything using a 2D graphics api recently?

This is a high level 2D vector graphics day dream.

</comment><comment><USER8> Give us more standard datastructures, instead. The answer to everything in C++ involves a boost library right now; focus on fixing that. This looks like an awesome _library_ , but completely unnecessary as a core part of the language. Also Cairo is marred in LGPL. Are we going to get a standard that legally requires the use of a separate, dynamically loadable binary? The actual spec for this is just an ABI for their specific implementation.

</comment><comment><USER9> Coming into C++ for the first time from QBasic, 16-year-old me would have loved some batteries-included graphics. Instead I had to learn SDL to get something going, combined with trying to use the (aptly named) Bloodshed Dev-C++, which was an unbelievable cluster.

Nowadays, I would never suggest somebody at the level I was at then to pick up C++. It's a different world now than it was then.

</comment><comment><USER10> I found it always weird that so many languages have a complete lack of graphics support. Even TTYs aren't fully supported.

But I guess if C++ realizes that, other languages may follow.

<comment><USER11> I assume you mean "so many language _standard libraries_..."; putting graphics in a language (e.g., having the compiler worry about RGBA and suchlike) would not be a great choice.

Doing cross-platform graphics well is _hard_. And the landscape changes pretty rapidly. Take a look at PHIGS, for instance. It's a standard . . . and it really sucks.

There's a bunch of common ground at the math level (matrix transforms, quaternions, etc.) and probably some data structures, but actually doing rendering? Whatever you cook up is likely to be a quaint, procrustean bed within five years.

<comment><USER10> No doubt that it's hard but just imagine how useful this would be.

Setting up a Linux desktop system is notoriously hard, at least if you are not a "computer expert". Configuring hardware that is considered mainstream among Linux professionals most of the times works out of the box. For other hardware too often CLI tools are needed. I would think that these tools often have no graphical interface because there is no standard way to program GUIs in UNIX C.

However, HTML5 seems to become the defacto cross-platform graphics standard that seems to takeover many GUI app writing tasks. It's also a good example of a standard that is actually low performance often using outdated methods. WebGL is OpenGL ES 2, DOM is so slow that people wrote React, CSS is actually designed for documents...

</comment></comment></comment><comment><USER12> While I see the value in having a robust standard library, is it really that hard to apt-get or brew install Cairo or some other 2D drawing library?

</comment><comment><USER13> In that domain the SFML API is very clean:

[http://www.sfml-dev.org/documentation/2.3.2/annotated.php](http://www.sfml- dev.org/documentation/2.3.2/annotated.php)

But I still stick to SDL for rendering mostly because it works everywhere (especially in JS with emscripten).

About pixel manipulation and image processing, VTK (from the companing doing cmake) is my favorite choice:

[https://github.com/Kitware/VTK](https://github.com/Kitware/VTK)

I think C++ won't have an standart 2D API before reflection :-)

</comment><comment><USER14> There are so many 2D libraries out there that we should know what basic form that take by now.

<comment><USER15> [https://xkcd.com/927/](https://xkcd.com/927/)

</comment></comment><comment><USER16> about time. the lack of any graphics in standard libraries going back to the crusty old days of qbasic etc. has always been a frustration.

/me hopes for image loading/saving unlike this post suggests, since most libraries are utter garbage for this</comment>


Ask HN: What starts ups are in (near) Florida? - <AUTHOR>

I am looking for startups that are based out of Florida and who might be willing to meet up and share some experience.  If not Florida south east is cool.  I would love to talk, visit and share my own experience.  I am based out of Central Florida. <comment><USER2> Drat, I just left the area. But I know the iOS developers for Seasonalysis are in Florida as well. Might want to reach out.

<comment><AUTHOR> Awesome, I will reach out to them. Thanks for the tip.</comment></comment>


Ask HN: Thoughts on memristors? - <AUTHOR> I'd love to know the HN crowd's thoughts on memristors.
How far off they are from production?
Technical problems to be overcome?
Economical problems to be overcome?
Compatibility with CMOS?
Scaling capabilities (ie can it match Moore's Law?)
Anything in general :) <comment><USER2> Some interesting resources about DIY scale memristors...

The coherer is a memristor:

[https://arxiv.org/pdf/1306.0942.pdf](https://arxiv.org/pdf/1306.0942.pdf)

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

A natural memristor: [https://www.youtube.com/watch?v=LpHJARlKT1o](https://www.youtube.com/watch?v=LpHJARlKT1o)

It'd be awesome if someone manufactured DIY friendly, through-hole memristors. All these big companies are focused on making memristors for integrated circuits, but it really makes sense to have some human-friendly memristors available for makers and tinkerers.

I imagine that this could be a viable business for some smart, creative folks who understood the potential for simple, useful applications of these things.

</comment><comment><USER3> "The main problem with memristors is no one has figured out how to make large numbers of them that are reliable enough for commercial electronic devices. Researchers continue to puzzle over the best materials to use and the most effective way of manufacturing them"

From: [https://www.scientificamerican.com/article/hpe-debuts-its- ne...](https://www.scientificamerican.com/article/hpe-debuts-its-next-gen- computer-sans-much-anticipated-memristors/)

</comment><comment><USER4> They are _in_ production, available in 16-DIP packages. They are hella expensive ($20ea for a 'burn and learn' off-spec unit, hundreds for a spec one).

You can buy them here: [http://knowm.org/product/](http://knowm.org/product/)

</comment><comment><USER5> Memristors are an interesting concept theoretically. There was a thread about this on HN recently.

[https://news.ycombinator.com/item?id=14562399](https://news.ycombinator.com/item?id=14562399)</comment>


None* -A mysterious game of riddles - <AUTHOR> http://whatisnone.com/

<comment><AUTHOR> A minimal riddle game with no images, no music, no animation. Just a keyboard and your imagination :) The questions are text only and could be a simple equation, a word association, an opposite word teaser or something else entirely...</comment>