The Awful Anti-Pirate System That Will Probably Work - <AUTHOR> http://jeff-vogel.blogspot.com/2010/02/awful-anti-pirate-system-that-will.html <comment><USER3> _1\. Make your own, free saved game server and alter the application code to use it.

This means a lot of work and expense, both to duplicate Ubisoft's game saving code and to set up and maintain the servers. Won't happen._

I'm not even a very good game hacker, and I've done much more dramatic things. It's really not a huge deal. People have reverse-engineered entire online game protocols in order to have their own unofficial servers before the games were even out of beta. The client<->server model of protection is actually a good thing to cracking and the people who use cracks, since the original binary doesn't need to be modified in any way. You just run a little thing in your system tray that emulates whatever portion of the server protocol it needs to. And now you can also get the official updates from Ubisoft, re-activate with your own fake server any time, etc. It's not a "disable one line of code" type deal, but if you think that's even a simplification of how things have been for a while, that's pretty naive.

<comment><USER4> _the original binary doesn't need to be modified in any way_

It's easy for Ubisoft to also force the binary to be cracked: have the client request the server sign a random token with its private key, and verify it with a public key embedded into the client. This way a third party server could only be written if the client was also cracked to either change the key or remove the check.

<comment> brown9-2 Isn't this the type of "check at startup" that the article mentions hackers can easily null out?

<comment><USER5> Maybe game designers should take lessons from Skype in making it as hard as possible to disassemble/hack the binary.

<comment><USER6> Something tells me both game developers and crackers have been at this a lot longer than Skype... I remember playing cracked Atari games as a young kid, but back then I didn't know what "cracked" meant. In case anyone wonders, I found the games in a huge box of 360K floppies that came with the Atari system when I got it.

</comment></comment></comment></comment></comment><comment><USER7> "Probably work"?

It was already cracked two weeks before release! From a few days ago on Buzz:

 _Just saw a post on the Steam Forum for Assassin's Creed 2 that the impossible to beat, always online, can't save your game or even play the stupid thing without being connected to the internet DRM for it has already been cracked 2 weeks before its release. sigh Did Ubisoft really expect this to work any better than previous attempts to crack down on piracy? Now what they're left with is a piece of software which is being pirated just as much as any other game, except that it treats its legitimate buyers like they're suddenly going to turn into pirates after they've already bought the game._

<comment><USER8> precisely, the only people stuff like this hurts are the legit users who pay the money.

The hackers will rewrite the whole game if they have to, to make it free. It might take a little longer for them to release it...but can you honestly name a single game that hasn't been cracked?

<comment><USER9> From the article:

      Edit 2: One quick question for the "Anything can be cracked
      right away." crowd. Where do I get my cracked copy of World
      of Warcraft that can play the real game (not some cobbled
      together emulation server) without paying. Answer: You can't.

<comment><USER8> of course you can't play on Blizzard's servers...but you can still play on emulation servers.

And WoW is a web only game. Non-web games don't suffer from that.

</comment></comment></comment></comment><comment><USER10> Jeez guys, have none of you ever played a ROM on an emulator? You know how they save and resume? By taking a snapshot of the RAM and restoring it later on. Sure, its not great to have to take a snapshot of the 2gb+ of memory being used at runtime by a modern AAA game, but it wouldn't be hard to work out what is just content (textures, geometry, sound), and what are the variables (player location, progress, etc) and just save/load that. And that's only if its too much work to emulate the back-and-forth with the DRM server. And even that is only if its too hard to patch those functions out.

All these people talking about 'significant portions of the game running on the server'... are you serious? Do you realise how fast game engines run? People have enough trouble putting up with the lag on multiplayer games with relatively few actors/entities, running on dedicated servers. If this were truly the case, single player games would also be susceptible to lag, not to mention the amount of load of millions of players' AI routines running on Ubisoft's servers. Damn.

No, this will be cracked, patched or emulated, and the only people negatively effected will be legitimate customers. I'd say that would be the exact opposite of the system 'working'.

<comment><USER11> > it wouldn't be hard to work out what is just content (textures, geometry, > sound), and what are the variables (player location, progress, etc) and just > save/load that

As the saying goes - I'd love to see you try it!

In order to capture the state of a running application in such a way that it can later be restored, you need, not only the memory contents, but also the processor state. Imagine that the app is in the middle of modifying an in- memory data structure: the variables used while doing that (e.g. loop counters) will likely be stored on the stack and/or in processor registers. Just as an example!

Even assuming you could accurately pause an application and capture its state completely, how do you propose restarting it? You'd need to reinitialise all the external stuff (graphics device, sound, file handles, etc.), then start the application code at exactly the right instruction.

Maybe installing some sort of hypervisor underneath the OS would allow these things? Good luck :-)

Emulators can do all this with impunity because they're virtual machines - <USER2> computer running within a computer. The emulator always has complete control over the memory and (virtual) processor state, display, sound devices, etc., and saving/loading that state is therefore much easier.

<comment><USER12> It's not that outlandish of a proposal. The application does not need to be savable at all times; it just needs to be savable at _some_ point, which could be a point when the game state is particularly easy to capture. For example, most applications can go into a minimized background state where almost no code is running and nothing is loaded in the graphics card.

</comment></comment></comment><comment><USER13> You missed Option 4, which is what will actually happen:

4\. Make it easy to set up your own local game server and alter the hosts file on your machine to point to it.

That is dead easy to do. I actually did it for the game FantasticContraption, not to steal it (it's well worth ten bucks. go try it: <http://www.fantasticcontraption.com/>), but because their server is so hopelessly overloaded at peak times that the game is unplayable.

Sniff network traffic with Fiddler or similar, construct a simple webapp to mimic what's needed (which for this game would only involve storing what you're given and handing it back when asked for it), and run it on localhost. Sorted.

It'll end up the same as every other copy-protection scheme: An annoyance for paying customers, no sweat for pirates. I suspect legitimate paying customers will be running their own servers too.

<comment><USER14> While I agree that this is probably what will happen, it is probably not going be as easy as you make it seem. There is a very good chance that in this case the entire conversation with the server will be encrypted. In order to emulate this, the encryption will have to be broken. That's hard enough as it is, and you also don't really know what the plaintext is.

<comment><USER15> Many of the major game protocols are not only encrypted, but are extremely complex and irregular. They're absolutely no fun to reverse.

<comment><USER5> Though it's sad that the 'extremely complex and irregular' part is probably _not_ by design, but due to haphazardly adding features just to push out a product.

<comment><USER15> In a couple cases, I know that to be the truth. You're basically looking at the results of getting PC LAN developers to implement Internet protocols, and getting Win32 systems programmers to implement encryption.

</comment></comment></comment></comment></comment><comment><USER16> The solution to onerous DRM is: just don't buy any product using it. No-one needs to buy Assassin's Creed II; there are plenty of other computer games out there.

<comment><USER15> That's a valid point but it dodges the thrust of the post, which is that piracy is pushing the industry in this direction --- this is a mainstream title from a mainstream vendor that is making a clear and visible usability concession to protect the new release window from pirates.

Most users probably won't care (remember that we're a disproportionately vocal minority --- or, you are; my job is to make these titles worse for you, and I don't ever play video games), and vendors are going to get users to adapt to concessions like this.

<comment><USER17> What's funny is that they're making it more convenient to play the pirated version than the legit version. The more invasive DRM you force on your legit users, the more they're going to look for workarounds online and fuel piracy.

<comment><USER18> Why is more pervasive DRM necessarily more of an inconvenience for the user? It will be an inconvenience for an unfortunate minority, but a well designed and executed system could well be unnoticed by most.

I only notice Apple's DRM in iTunes when I have to de-authorize an old computer or authorize a new one, which is only once or twice a year at most.

<comment><USER19> It depends on how common the minority is, yeah. In the days where DRM required you to insert the original game disc to verify it, a lot of legitimate purchasers of games got cracked copies too just to avoid the hassle of having to swap CDs. With the internet-based DRM, I think it depends on how many gamers have flaky internet connections, or play on laptops at places where there's no internet (e.g. on most trains, buses, and planes).

<comment><USER18> A lot of that can be addressed by making the connection a bit more "robust." A lot of people who play on trains and buses can could be accommodated by having 24 hours to authenticate.

</comment></comment></comment></comment></comment></comment><comment><USER20> The premise is inaccurate - the game allows you to save games locally. You still have to be online but local storage of the save games is a selectable option.

</comment><comment><USER21> Or you could just disable the save game feature and then run it inside a virtual windows machine where you just save the state of the machine. =)

<comment><USER20> It's a 'checkpoint' system. Save game or not, the game is constantly checking with Ubisoft's servers - if it can't talk to them it just boots you out. The save thing is a bit of a red herring.

<comment><USER5> How does that work though? Can't the points where that check is called just be hex-edited to NOOP in the binary? The point of the article was that taking non-trivial portions of the game logic out of the game and pushing them to the server makes it harder to crack the system. Unless the game is constantly getting information from Ubisoft's servers that it needs to function (i.e. save-game logic, AI logic, etc), then the "verify with the server" code can just be ignored in a hacked binary.

</comment></comment></comment><comment><AUTHOR> I believe that the article is overestimating how hard it will be to reverse engineer the save game code and is fallaciously assuming that crackers will need to maintain a public facing internet server for people to use.

a) You don't need to maintain a public facing save game server -- you simply need to have a local server running at localhost:31337. A successful crack will have this running transparently as you run the game.

b) Many companies entire purpose is to provide "uncrackable" DRM. AFAIK, all of these companies' solutions have failed. Often before the games even publicly ship.

I mean, at the very least, a script kiddie will naively crack the protocol and manually generate save files from each of the levels, so that you can play the game one area at a time. I am confident that it will be properly cracked though. Or as someone else on HN mentioned: you could ship the crack with a light virtual machine and just save states of the entire VM.

There is a huge incentive to crack the game, both monetarily for pirates who will be reselling the game, as well as for the huge prestige for cracking groups. I am not aware of any high-profile game that has not been cracked within a week of release, if not days.

</comment><comment><USER22> Here's a solution no one seems to consider: make video games cheaper. $50-$60 is an outrageously high price for a game, especially when most of them are of forgettable quality. The people over at Valve/Steam have been saying the same thing, and they would know, they see the sales numbers; cutting prices for their weekend deals greatly increase sales. If companies brought game prices down to a reasonable level, say $20-$30, I bet a significant amount of piraters would start buying games. The music industry is struggling to learn the same lesson, but iTunes and streaming services have shown that making content accessible and cheap means people stop pirating.

<comment><USER23> Maybe, but on the other hand, on the app store where games are really inexpensive there is still a lot of piracy and a lot of developers can't make end meet because their price is too low...

So, I'm not convinced that making video games cheaper is the answer...

<comment><USER22> Well obviously pricing them too low won't make you any money. There is a big difference between 25 dollars and 99 cents.

<comment><USER23> Yes, but that's not my only point, the other problem is that piracy is as widespread it seems for 3$ iphone games than for 50$ games... So the argument that lowering prices reduces the number of pirates seems a little bit optimistic to me.

OT: For rick888, below: it seems that all your comments are marked as dead... which is a pity because from reading your past comments I can't figure why you'd be banned... You should try to contact pg over that.

</comment></comment></comment></comment><comment><USER24> X3 Terran Conflict had an annoying, disruptive DRM that only allowed you to install the game 5 times _and_ would count any significant change in hardware config as a new machine. When I got more memory and had to return them, plus reinstalled my OS, I used up 4/5 in the first two weeks.

Normally, I wouldn't touch this with a five-foot pole, given that it puts me at the mercy of them having their servers up to give me a new license just to play my own game. But they did something really reasonable:

After 9 months or so, they released a patch to remove the DRM.

That seems like a reasonable compromise to me.

</comment><comment><USER25> From the comments on the article:

 _"Also, you don't hold onto your saved games anymore. They do."

I'm surprised at how many people are making this mistake. Straight from the FAQ: "Will all my saved games be stored online? Yes! They will be stored both online and on your PC." \-- <http://support.uk.ubi.com/online-services- platform/>

That, right there, is why the system will fail. The DRM will be cracked within a week of release._

</comment><comment><USER26> Everyone hates DRM but I feel like we're not giving the pirates enough blame here. My unscientific conclusion judging from BT sites is PC game piracy is really off the charts these days. A new PC game release often blows away popular TV shows and movies in seeders/leechers. I have some sympathy for the game makers here. If you're already facing declining PC sales and you're releasing a console port months after the initial console release the piracy factor could make a huge difference. I feel like anyone who doesn't like this DRM scheme needs to talk to their friends/family who pirate PC games and explain to them how much they're screwing up the industry for everyone. DRM isn't effective and just ends up punishing honest customers but those honest customers may have to face the reality that they just won't be getting nearly as many PC games in the future if this trend of massive piracy continues. DRM _and_ PC pirates are the enemies here.

</comment><comment><USER27> Somewhat informative article, but I disagree with the conclusion. Assassins Creed 2 isn't going to be the best game ever, it's not even an original game, just another sequel. So it's not like people are going to buy it no matter what kind of crazy DRM they must suffer through. I imagine that Ubisoft will loose a lot customers because of this decision.

<comment><USER28> This is a test on Ubisoft's part. They're testing how the crackers, pirates and market react. I'm sure if they make significantly less money than expected they'll scrap the idea. On the other hand if they make _more_ money, they'll roll it out to future releases.

My guess is that they'll make less money. Even if a some people buy the game instead of pirating it, the abysmal reviews on Amazon will have a stronger effect.

<comment><USER29> > I'm sure if they make significantly less money than expected they'll scrap > the idea.

OR they'll still blame piracy and try to make it even harder. until it's nothing more than a streaming webcam pointed at a TV playing it on an xbox.

<comment><USER6> Those days are probably just around the corner. At least one company is trying to make 1080p streamed games playable. They could install beefy compute servers with 8 video cards per machine in ISP local offices to deal with latency issues.

</comment></comment></comment></comment><comment><USER30> What would probably work best is just allowing 200 installs per key (any more requires calling and pleading). Also, every 5 minutes the game sends something to the server and uses SSL to ensure it's communicating with the right server. This seems like an overly simple problem that isn't being approached right.

</comment><comment><USER31> The author seems to assume that being hard to crack will be a discouragement. The people cracking games are _hackers_. For a significant chunk of them, the game being difficult gives the draw of being an interesting challenge, as well as a way of getting street cred in the cracking community.

</comment><comment><USER32> Does anybody have any idea how long it took for pirate WOW servers to be running ?

IMO, most game will go towards becoming MMOG or be played online anyway, people will just get craftier at having pirate servers running.

<comment><USER33> People were running private WoW servers as early as beta, but it really took off after the game went live.

</comment></comment><comment><USER34> In Assassin's 2 save games aren't exclusively online. They're synced to Ubisoft's servers but they're not exclusively online. You can even opt out of syncing them so that they're always local to your PC. The net connection is still required though.

However Jeff vogel's conclusion is still valid:

"But they are engaged in a grand experiment. They are seeing if an adequately pirate-proof game can make money. Will keeping cracked copies off the Torrents for a month make extra sales? And enough extra sales to make writing PC games worthwhile?"

</comment><comment><USER35> The people behind DRM don't seem to get what they are dealing with. The people who pirate/steal their products are not making a choice between buying the product or stealing it, they are choosing between stealing it or not having it at all. DRM, specially of this invasive variety punishes the valid customers who pay good money for the product, while trying to combat the folks whose money the company will never see.

</comment><comment><USER36> Nice article overall, however... "2. Trick the Ubisoft servers into believing you have a legit copy, so that they will let you save your game." I haven't got a clue what exactly their mechanism is, but I believe that this is a solved problem in cryptography which should be intractably hard to solve if implemented properly.

</comment><comment><USER37> This would be one example where the DRY coding principle would backfire on them, at least for their purposes. If all of the Game Saving code funnels to one function, then the hackers may be able to relatively easily find and break just that function, and consequently the entire DRM.

</comment><comment><USER38>
      1. Make your own, free saved game server and alter the application code to use it.

      This means a lot of work and expense, both to duplicate Ubisoft's game saving code and to set up and maintain the servers. Won't happen.

Ragnarok Online private servers anyone?

</comment><comment><USER39> This will "probably work" just like MMORPG's "probably don't get pirated".

But have you _seen_ how many 3rd-party hosts there are for many MMORPGs, some built by hand to mimic the original servers? Requiring a server connection does not stop piracy, it just annoys people.

</comment><comment><USER40> Honestly, I believe people shouldn't be pirating videogames at all. And most gamers actually don't. So nobody's going to hate them. On the other hand, I think no one's planning to do the same thing for MS Office in the nearest future, that would be insane.

<comment><USER41> Do you have anything to back up that statement? The article says that 90% of all copies of popular games are pirated, but he also doesn't back it up.

However, it's important to always remember that a pirated copy doesn't equal a lost sale. Many people download a game, but never install it or play it. Others download and play it, but if they couldn't have downloaded it, they would never have played it. And finally, there's a percentage of downloaders that would have bought it if they hadn't gotten a pirated version first.

It will be interesting if this experiment by Ubisoft can determine how large that percentage is. It's definitely not 100%, and it's definitely not 0%. I would guess that it's a single-digit percentage of the people that would normally pirate a game that could go and buy it instead.

However, this new DRM is so vile, that they will also lose sales on it, and I wonder if the sales they gain from delaying the pirating of it is larger than the sales they lose from having a horrible DRM.

<comment><USER34> The 90% figure is based on the scant amount of information released by a few indie studios.

[http://www.joystiq.com/2008/11/13/world-of-goo- has-90-piracy...](http://www.joystiq.com/2008/11/13/world-of-goo- has-90-piracy-rate/)

</comment></comment></comment><comment><USER42> I wonder if they turn off, or downgrade to the point of unusable, the servers the day that Assasin's Creed III is launched?

They wouldn't do that would they?

<comment><USER43> Some game companies have already turned off servers for their older games. It's not a question of whether this will happen but when, especially when the service is provided for free.

<comment><USER42> For free ?

I paid $80 for a game and they turn it off when they have a more profitable replacement.

</comment></comment></comment><comment><USER44> You want an anti-pirate system that will work? That's easy, we've had a working system for centuries!

You hang 'em from the yardarm as a warning to others, and then you burn their ships to the water line.

Pardon? Oh, you mean the OTHER kind of piracy.

<comment><USER44> So, out of curiosity, down-voted because it wasn't funny, or because jokes aren't encouraged?

<comment><USER43> Probably a little of both.</comment></comment></comment>


Why click bait articles are so effective - <AUTHOR> http://www.thepinchandzoom.com/blog/2015/5/2/click-bait <comment><USER2> Because if they weren't effective, we wouldn't call them "click-bait." (In other words, because you've tautologically defined "effective" as "getting you to click.")

Behind the headline is a pretty shallow analysis. The author does not meaningfully distinguish between headlines that hide the core piece of information ("This One Weird Trick...") and headlines that bluntly state or exaggerate the core piece of information ("Headless Man In Topless Bar"). The author does not attempt to distinguish between aggressively conversational or casual headlines (a post internet phenomenon) and headlines written in a stiffer newspaper style or an explicityly hype-y tabloidy style. Nor does the author explore why his/her examples of "yellow journalism" headlines are all date from at least the early part of the 20th century — why did they then disappear for more than half of it, and why are they back now?

Lastly, the author does not distinguish between negative costs of "clickbait" headlines (squandering of reader time) and the benefits (enticing headlines arguably fuel crowdfunding systems like Kickstarter and independent, specialized news hubs like subreddits and HN).

<comment><USER3> In other words, humans aren't all that different than fish in that we respond to base stimulus.

</comment></comment><comment><USER4> Judging by the domain name I guess this is for ipads? Absolutely annoying to read on my desktop with wide text, low contrast, whitespace all over the place.

If you want to skip to the content, ctrl-F "let's take a look at them". It's fairly low on content so nothing lost if you just skip it entirely.

</comment><comment><USER5> There's a twitter guy[1] whose entire raison d'être is to "save you a click" by giving you the gist. Problem is, there is nearly an infinite supply of these articles.

For example, here's a recent tweet of his:

       Top 5: Warby Parker, Apple, Alibaba,
       Google, Instagram. RT @FastCompany:
       The most innovative companies of 2015:

[1] [https://twitter.com/SavedYouAClick](https://twitter.com/SavedYouAClick)

</comment><comment><USER6> The irony of a click bait article being posted by a new account. Deliberate?

But it was good. And I was a new account once too.

</comment><comment><USER7> Title should obviously be changed to: "Why you don't understand click bait articles"

<comment><USER8> "7 reasons why you don't understand click bait articles"

<comment><USER9> "We had a look at clickbait articles. You won't believe what happened next..."

</comment></comment></comment><comment><USER10> I did not click on this meta-click bait.

</comment><comment><USER11> Users hate him! Local man discovers one weird trick to get people to follow links to your Web site.

</comment><comment><USER12> This title forced me to click. But it was worth it.</comment>


An Internet of people - <AUTHOR> http://cdixon.org/2011/12/19/an-internet-of-people/ <comment><USER2> A simpler explanation to 'why now?' is that more people are online now than ever before:

[http://en.wikipedia.org/wiki/File:Internet_users_per_100_inh...](http://en.wikipedia.org/wiki/File:Internet_users_per_100_inhabitants_1997-2007_ITU.svg)

Sites (even niche sites) which would previously have only appealed to a small number of users can now attract millions of users.

<comment><USER3> "...more people are online now than ever before"

or, from the article, "we finally have an Internet of people."

<comment><USER2> Erm, cdixon is talking about trust and reputation. I'm saying it's sheer numbers.

<comment><USER3> I read both as talking about numbers.

      "you can get background information on almost any prospective counterparty by searching Google, Facebook etc."

Reading that quote, I don't intuit anything about trust and reputation, but simply indexing data. He also talks about key dependencies becoming widespread --broadband, digital cameras. That's discussing numbers. I'll admit I might have a problem reading between the lines, but with such a short post and no additional information, I stand by my interpretation.</comment></comment></comment></comment>


Single C file TLS 1.2/1.3 implementation using tomcrypt - <AUTHOR> https://github.com/eduardsui/tlse <comment><USER2> If you're implementing a new TLS library from scratch, why not reduce the available cryptographic agility and get rid of vulnerable versions? This implementation would be strictly more secure if it ripped out TLS 1.0 and 1.1 and didn't use RSA for anything.

I don't mean to critique an honest effort here, if someone wants to make their own implementation that's great. But the world has enough cryptography that isn't secure by default, and I don't think backwards compatibility should be encouraged.

How's My SSL [1] is a good resource (ignore that it still uses SSL nomenclature instead of TLS). To give an example, whenever I have to set up a new Nginx instance with HTTPS these days I remove TLS 1.0/1.1 support and disable half or so of the available cipher suites letsencrypt gives you out of the box.

_____________________

1\. [https://www.howsmyssl.com](https://www.howsmyssl.com)

<comment><USER3> > I don't think backwards compatibility should be encouraged.

Since you're talking about setting up a web server you can mostly get away with this, esp. since most people are on auto updating chrome, so it's not an issue. But try to configure your browser to be that restrictive and you'll get pretty annoyed very soon. I tried this about a year ago. Horrible experience.

<comment><USER4> I've set this up 3 months ago. So far only about dozen domains I visited were not reachable using TLSv1.2 or 1.3. I messaged to all admins and half of them fixed that already, other half either said it's not currently possible for that website because it's running on very old server or didn't reply at all.

<comment><USER3> Sorry, I probably should have been more explicit. I was also referring to the part where they suggested disabling weak ciphers, like explicitly stated in GP, RSA. That's what caused problems for me.

<comment><USER4> That depends on what do you consider as a weak cipher, I do have security.ssl3.rsa_des_ede3_sha set to false in Firefox as well. If you mean all ciphers that don't have forward secrecy then I guess it may broke a lot more.

edit: i also have security.ssl3.rsa_aes_256_sha disabled, so my only non forward secrecy cipher fallback is TLS_RSA_WITH_AES_128_CBC_SHA

<comment><USER5> I would suggest to avoid disabling ciphers in your browser as it can damage your privacy.

</comment></comment></comment></comment></comment></comment><comment><USER6> I didn't look very hard (I just jumped to the RSA decrypt function, then found its caller, then verified its caller was part of the actual handshake code) but this code looks like it has the Bleichenbacher padding oracle (it decrypts with RSA, in P1v15 padding, and generates a direct error if that fails; with chosen ciphertexts, those errors reveal and update bounds of the private key).

Not at all sure (rather unsure) that this is practically exposed, but defenses against these kinds of attacks are why you generally want well-tested well- understood TLS implementations.

A broader critique is that this one-file TLS state machine just delegates the gnarliest bits of TLS --- most importantly X.509 and ASN.1 --- to its library dependencies.

<comment><USER7> You critique them for __NOT__ using well tested libraries, and then critique them __FOR__ using well tested libraries.

<comment><USER8> The first critique is a specific vulnerability, not a general comment about libraries.

</comment></comment></comment><comment><USER9> I don't understand the fascination with "single file" libraries. Sure, you can take a well organized tree of a few dozen C files and turn it into a single ten-thousand-line monstrosity, but why on earth would you want to?

<comment><USER10> Because C has no package system and it sucks, and having a single file (ideally with no dependencies, which isn't the case here) makes it super easy to integrate it anywhere.

A good example of that IMO is cJSON[1], it's a small self-contained single file implementation of a JSON reader and parser. It's easy to use, the code is pretty clean and easy to follow and I never ran into any obvious limitation. I very much recommend it.

There are also projects that are developed as multiple files but amalgamated into a single huge file before release. SQLite does that: [https://sqlite.org/amalgamation.html](https://sqlite.org/amalgamation.html)

> Over 100 separate source files are concatenated into a single large files of > C-code named "sqlite3.c" and called "the amalgamation". The amalgamation > contains everything an application needs to embed SQLite. The amalgamation > file is more than 220,000 lines long and over 7.5 megabytes in size (as of > 2018-11-24).

> Combining all the code for SQLite into one big file makes SQLite easier to > deploy — there is just one file to keep track of. And because all code is in > a single translation unit, compilers can do better inter-procedure > optimization resulting in machine code that is between 5% and 10% faster.

[1] [https://github.com/DaveGamble/cJSON](https://github.com/DaveGamble/cJSON)

<comment><USER11> gcc -shared -o mycrypto.1.1.so file1.c file2.c file3.c file4.c

#include "mycrypto.1.1.h"

Doesn't that have the same effect of being easy to include? The amalgamation may be better for the compiler but I'm not sure why.

<comment><USER12> A platform has a fixed ABI that says e.g. the first integer parameter to a function goes in register R14, the sixth one goes on the stack. If you have sixty C files the compiler is obliged to produce sixty object files which each obey that ABI for all their functions because you might stitch in some other code, not using that compiler at all, which obeys the ABI and if you ignore the rules this will unexpectedly not work.

But within a single object the compiler doesn't need to obey the ABI rule at all if that's faster.

Now, you obviously could imagine an object and more powerful linkers that had enough optimisation magic to produce the same output executable from the sixty object files, but just spitting out a single source code file is a LOT easier than making that optimisation work on every platform now and in the future.

<comment><USER13> The compiler invocation above only creates a single object file.

<comment><USER12> No, but I can see why you thought so.

The invocation above creates one object file for each C source file, as temporary files, (in a Unix system you can watch it do this with a suitably powerful syscall tracer, presumably something similar is possible on non-Unix systems but I don't know exactly how)

Then it links them and produces the output you've mistaken for an "object file", then it deletes the temporary files.

<comment><USER13> Ah, probably the easiest way to deal with some translation unit edge cases. :(

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> Oh wow I've always wanted Mark Karpeles' library in my stack of dependencies.</comment>


A Year Of Scala - <AUTHOR> http://blog.joa-ebert.com/2010/12/26/a-year-of-scala/ <comment><USER3> As someone who has spend a fair amount of time with Haskell, Scheme, Common Lisp etc, can someone give me some insight into what's really exciting about Scala? There seem to be a lot of people I respect using it, but most of the articles I've read are of the form "coming from Java, Scala is awesome!" which I haven't found particularly enticing. Every time I look at examples I don't really see anything that sticks out as particularly interesting. I really want to get excited about Scala, and would really appreciate any insight that would help me with this.

<comment><USER4> Just the pleasures of a powerful type system, inference, pattern matching, higher order functions... The usual good stuff, but on the JVM. I was paid to learn and program in it for a good five months earlier this year (everything ended up getting ported to python later...) and yes, it basically boils down to "coming from Java, Scala is awesome". If you have to build on top of the JVM and the Java ecosystem of libraries, it is a fine choice.

<comment><USER5> Which do you prefer? Python or Scala?

<comment><USER4> I enjoyed writing Scala more than I enjoy writing Python, but there are a few undeniable advantages that Python holds over Scala. The motivation to port from Scala to Python was to avoid the lengthy build process that had been slowing down development to a crawl. There may have been other ways to alleviate this, but by the time the port was completed, it took a good 15 - <USER2> minutes to get the build machine to compile and package the entire project so it could be deployed to production. At this time rapid fixes were critical.

Also, the team as a whole prefers Python to Scala... I took pleasure in learning how to express my code in increasingly functional and compact ways, but my coworkers found struggling with the type system to be too much of a headache. In particular, there are rough edges when you are integrating Scala code with Scala types and data structures with Java code with Java types and data structures. In any case it will be easier to find programmers who write in Python than those who might write Scala.

Scala gave me more personal pleasure to write in, but Python isn't bad either. I miss the type system and the many classes of errors it could help prevent at compile time, but I appreciate being able to change Python code and put it to the test immediately. The loss of expressiveness is probably made up in part by being forced to write code that is more easily read. I still hope I will be able to find a job writing in a functional language in the future...

<comment><USER6> Great response. How many LOC was your project that you got that amount of slowdown? Would you say it was the primary reason even over some developers struggling with the type system?

I'm a huge Scala fan but even after a year of hobby programming here and there I feel like a beginner...

<comment><USER4> I could pull up the LOC, but it honestly wasn't the Scala compilation that was the true issue. The true issue was that the project was built with maven and it had a tremendously large number of dependencies. If all the Scala in the project had been converted to Java, the build still would have been monstrously slow. So the port was more of an escape from the JVM than an escape from Scala - and yes, the build times were the primary reason for the port. As for the type system... not a single other person left on the team misses Scala but me. (The primary Scala evangelist had been let go for unrelated reasons)

</comment></comment></comment></comment></comment></comment><comment><USER7> Great article. I've been learning Scala for a while now as time allows, and have had similar experiences - the syntax is tricky at first, and much of the community focuses on CS esoterica that isn't familiar to me, but the major concepts are quite familiar, coming from Python, Scheme and JavaScript. I'm still looking forward to my moment of epiphany when I realize I've become vaguely competent with Scala.

<comment><USER8> Scala is the C++ of the JVM based languages.

<comment><USER6> I disagree completely. C was a well designed language that was later added onto haphazardly and you ended up with C++.

The Scala language designers took a long time examining the shortcomings of java and other languages and ended up improving them, and at the same time coming up witha much smaller language specification.

If anything, Java was the C++ and Scala is the C.

<comment><USER8> Please point out the "shortcomings" of Java. It has done quite well and provably "scales" from programming in the small to enterprise level. Even the required detour of multi-core resulted in the industry's gold standard of memory models: JMM.

"Much smaller language specification" is a red herring. The issue is (practical) comprehension.

"C was a well designed language that was later added onto haphazardly and you ended up with C++."

[http://www.amazon.com/Design-Evolution-C-Bjarne- Stroustrup/d...](http://www.amazon.com/Design-Evolution-C-Bjarne- Stroustrup/dp/0201543303)

I've read that book. (Have you?) Nothing "haphazard" about C++.

<comment><USER7> I consider verbosity and lack of closures to be shortcomings of Java. Apparently, so did the author of the article here.

<comment><USER8> Its perfectly fine to note that Java can be verbose and that it does not fully support closures. It is perfectly fine to consider these "shortcomings".

However, in context of OP's comment above, the strong suggestion made was that shorcoming == poorly designed.

And that is a completely wrong assessment of Java and its designers. It is an exceptionally well thought out _system_ and _language_. Again, the proof is in the pudding. Google and Oracle are not fighting over scala ...

<comment><USER9> They're not fighting over Java, they're fighting over the JVM. Java isn't worth fighting over.

<comment><USER8> The fact remains that the JVM was designed for Java and mirrors its semantics.

The "shortcoming" of Java is due to none other than the JVM:

[http://java.sun.com/developer/technicalArticles/DynTypeLang/...](http://java.sun.com/developer/technicalArticles/DynTypeLang/index.html)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> I did a few spare time projects with Scala, but does (did) anyone use it for commercial applications? If so, what kind?

<comment><USER11> I decided to implement (nearly) all of foursquare.com in scala.

<comment><USER12> Do you have any problems with GC pauses?

<comment><USER11> Yes, on occasion. We've combatted this in a couple of different ways:

1) Rewriting code to make fewer memory allocations or, in some cases, allocate memory for shorter periods of time (so it doesn't get promoted to a longer lived heap)

2) Garden variety GC tuning. Tune the various heap sizes, and GC algorithms used.

</comment></comment></comment></comment><comment><USER13> This article demonstrates the beauty of taking away cruft until you only have the essential stuff left. I like Scala's succinct way of anonymous function notation.

</comment><comment><USER14> [http://www.boost.org/doc/libs/1_45_0/libs/graph/doc/using_pr...](http://www.boost.org/doc/libs/1_45_0/libs/graph/doc/using_property_maps.html)

</comment><comment><USER8> "I was tired of writing code like this over and over again."

This _is_ getting tiring:

       public class MyGraphThingee extends Graph<Foo, Bar>

<comment><USER15> Doesn't this issue mostly go away when using a decent editor? I also found out that while I don't particularly enjoy writing boilerplate code, it gives me a second to rest my brain, relax, think about the context etc. I think I like the resulting "rhythm changes".

<comment><USER8> Judging by the upvotes, the comment was misread. The point was that it is trivial to extend the generalization to avoid verbose references and type names.

<comment><USER13> Does Java have typedefs nowadays?

<comment><USER8> No. Don't need them.

<https://gist.github.com/755824>

<comment><USER16> are you some kind of java troll?</comment></comment></comment></comment></comment></comment>


Ask HN: Should coders usually offer a warranty for bug-free software? - <AUTHOR> <comment><USER2> Usually? No.

Unless you're compensated multiple times what a no-warranty version would cost, and do it for an industry where bug-free matters. And even then that's a question for the company lawyers as well. In short: if you ask on HN, it's almost certain you shouldn't try.

What you may be interested in is some form of a license / retainer, where you're available to the company as a contractor for X amount of time to fix potential issues raised. But don't ever mention bug-free and rent out your time, not results.

</comment><comment><USER3> Contractually, you can make whatever agreements you want. I would consider someone _offering_ a warrantee for bug free software to be an inexperienced amateur. I would consider someone _expecting_ a warrantee for bug free software an unrealistic and thus bad client.

Now obviously, if you are making software for a medical device and you are _willing to pay for what that entails_ , you can get very close to "probably won't kill someone" but it still probably won't be bug free.

</comment><comment><USER4> I would consider also "No". If you i would consider to offer a "bug free" version i would charge a lot more for it and i would include a description of what is a bug and what is not considered a bug. Also i would include a description under which circumstances the software should be run (like hardware, software). If the customer updates host OS or changes platform/browser i can't warrant bug free behavior.</comment>


America's Hidden Duopoly - <AUTHOR> http://freakonomics.com/podcast/politics-industry/ <comment><USER2> I don't understand why so many people working for reform support ranked choice voting instead of approval voting, which on top of performing more consistently [0], is simpler to explain and understand.

It only takes one sentence to describe: "Vote for everyone you approve of."

It also gracefully handles incomplete information—if you don't know about someone, just don't vote for them.

[0] [http://zesty.ca/voting/sim/](http://zesty.ca/voting/sim/)

<comment><USER3> I'm going to have to spend some time reading over your reference when I have the free time, since it looks quite interesting.

But I can already tell you by the complexity of what that article is trying to show that most people won't understand it and won't care.

When I vote, it's in part to declare what I want and what I believe in. I generally don't like Democrats and I don't like Republicans. If I want to vote for the Green Party candidate, then I want to vote for the Green Party candidate and make it known that that's who I want to win. I don't want to be stating that I equally approve of both the Green Party candidate and the Democratic candidate since that doesn't accurately represent my opinion.

Given that the Green Party candidate is not going to win, I generally vastly prefer the Democratic candidate to the Republican candidate, even if I don't like the Democratic candidate one bit.

I don't want to vote in a way in which my statement is that I equally prefer the Democratic candidate to Green Party candidate. I want to vote in a way that states, "I want the Green Party candidate to win. And if I can't have that, I'll reluctantly settle for the Democratic candidate over the Republican candidate."

Voting in a way in which one's desires are clearly indicated is what most people would want, I imagine, even if it has some counterintuitive results at times.

Also, at least on a cursory reading, it seems that the author of the article has a bias towards "moderate" candidates winning. Who says that I want a moderate candidate to win? I want some serious progressive change!

<comment><USER4> > I don't want to vote in a way in which my statement is that I equally prefer > the Democratic candidate to Green Party candidate.

This is a pervasive logical fallacy, we call the "expressiveness fallacy". [https://sites.google.com/a/electology.org/www/expressiveness](https://sites.google.com/a/electology.org/www/expressiveness)

In short, you could allow partial approvals (1/4, 1/3, etc.), or mathematically equivalent ratings on a 0-N scale. But Approval Voting behaves almost as well in aggregate. [http://scorevoting.net/BayRegsFig.html](http://scorevoting.net/BayRegsFig.html)

And IRV/RCV will maintain two-party duopoly. [https://asitoughttobe.com/2010/07/18/score- voting/](https://asitoughttobe.com/2010/07/18/score-voting/)

Voting theory is highly counterintuitive.

<comment><USER5> Expressiveness fallacy is averted if you use global scales and score system instead of ranking system. E.g. Majority Judgement.

It is not exactly counterintuitive that aggregated orderings have problems - the problems relate to the fact that ordering cannot be averaged and ties are not allowed. The latter problem also happens in the oldest score system called Bucklin voting.

Approval voting is essentially 0-1 score voting system with ties.

<comment><USER4> Majority Judgement is severely flawed compared to Score Voting and Approval Voting.

[http://scorevoting.net/MedianVrange](http://scorevoting.net/MedianVrange)

</comment></comment></comment></comment></comment><comment><USER6> Why is it commonly assumed that "our system is broken"? What is the evidence for it? Do people consider the evidence against it? Usually not. It is very easy to fixate on things which could be better, and completely ignore things that are already great.

I am reminded of Justice Scalia's testimony regarding "gridlock"

[https://www.c-span.org/video/?c4580812/scalia- gridlock](https://www.c-span.org/video/?c4580812/scalia-gridlock)

<comment><USER7> FPTP elections are broken almost anywhere they are used, because FPTP's only real positive feature is that it is simple to understand. It demonstrably rarely delivers electoral results that actually reflect the desires of the electorate.

Combine FPTP with the electoral college system and you get arguably absurd presidential outcomes like we saw in 2016, where the winning candidate can receive less votes than the runner up and still win. Huge majorities on minority shares are often found in FPTP systems, because anyone who didn't vote for the winning candidate might as well have not voted. It can also create the opposite outcomes, minority seat shares in the legislature on majority vote shares.

It's just a plain bad voting system if you believe the legislature should at least vaguely reflect the wishes of voters.

<comment><USER8> FPTP elections are where the candidate with the most votes wins. By that definition, it ALWAYS delivers results that reflect the desires of the electorate. I think you're overstating it when you say that it leads to situations where anyone who didn't vote for the winning candidate might as well have not voted. I think it's more accurate to say that every vote mattered, but the voters who pushed the leading candidate above the runner up mattered more.

Of course, the underlying problem with those situations is that minorities are ignored via the tyranny of the majority. So if you think the presidential outcome was absurd because Hillary received the majority of votes you're arguing that in _just this_ particular election ignoring the minority, and going solely by majority vote, would have been a good thing. You can't pick and choose like that.

Combining FPTP with the electoral college did what it was supposed to, it compensated for the tyranny of the majority.

<comment><USER9> FPTP with the electoral college makes my vote count for nothing voting in a solid red or blue state. I despise this fact. Elections only really focus on swing states and thus swing states have undue influence.

<comment><USER8> The point of the election is not that _you_ get to decide the election, it's that the nation collectively decides the election.

<comment><USER10> "The nation" isn't just swing states.

<comment><USER8> Sure. That's why California has 55 electoral votes.

</comment></comment></comment></comment></comment></comment></comment><comment> crooked-v A political duopoly is the inevitable consequence of a first-past-the-post voting system existing at every layer of government. Compare to some parliamentary systems, where proportional voting means that no vote is ever "wasted" as long as you can scrape together the bare minimum for at least a single MP.

<comment><USER11> Parliaments are not defined by proportional representation; the defining feature is that government is formed on the floor of the lower house.

Parliaments which have proportional lower houses tend to be a mess. Executive government needs at least _some_ stability, so single-member electorates for the lower house and multi-member electorates for the upper house is a reasonable compromise.

<comment><USER12> > Parliaments are not defined by proportional representation; the defining > feature is that government is formed on the floor of the lower house.

> Parliaments which have proportional lower houses tend to be a mess.

If by "be a mess" you mean have higher public participation in elections, higher public satisfaction with government, and lower rate of cabinet turnover...you're right.

> Executive government needs at least some stability,

Proportional systems have greater stability; while coalitions may change more frequent than in FPTP systems, there is less frequent _total_ turnover in membership in either the governing coalition in Parliament or the Cabinet itself in proportional systems. This is sometimes masked by the fact that the same language of government "falling" being used for partial and total turnover.

</comment></comment></comment><comment><AUTHOR> The point that the interviewees make, as I understand it, is that money is not really the "problem" in American national politics, it's the way a two-party system has emerged and over the past century, increased its 'duopoly' with policy, gerrymandering, etc. I found this argument very compelling. I'm not sure if there is enough will to make the changes that might lead to some changes here, but it does seem that the intention of the constitutional framers has been lost by creating a binary that doesn't allow for some ideas, such as fiscal conservatism, to succeed at all (though I wouldn't say the framers themselves were always on the good side of history). Great book on that topic is "The Founders' Coup," which puts a lot of where we've come into perspective.

</comment><comment><USER13> I listened to this episode yesterday. Several interesting points and discussion, and the political industrial complex is real, but I'm not 100% convinced by the argument that the two parties are a duopoly therefore they do not serve the public. While the political system basically ensures that there are only two parties, they rotate over time and adopt or discard ideas as the public needs them to.

Clay Shirky discusses this argument in [https://medium.com/@cshirky/theres-no- such-thing-as-a-protes...](https://medium.com/@cshirky/theres-no-such-thing- as-a-protest-vote-c2fdacabd704)

<comment><USER14> One stern warning is that in multiple party systems, you can get one party that dominates everything, and then all the smaller representative powers are meaningless.

Argentina is a case-study with Peronism. Since the return of democracy, no party has yet to finish a term but the peronists.

<comment><USER15> While that's true, the current president, Mauricio Macri, is currently non- Peronist, and although he's unpopular and the economy is collapsing, he's made it three years, and he has a substantial chance of lasting to the end of his term in December 2019.

<comment><USER14> The exception that proves the rule. And maybe not even, as he actually got to power thanks to the peronists, and keeps it becuase they need him.

</comment></comment></comment></comment><comment><USER16> No mention of the problems of the countries that have multiparty systems. Italy (6 major parties) and Israel (18 parties in the Knesset) have dysfunctional governments with too many parties. The UK has five parties with 10 or more seats in Parliament.

The US is having lockup trouble with two parties, but that's historically unusual.

<comment><USER17> I would rather have a 18 parties and a dysfunctional government than 2 and a dysfunctional government. At least with the 18 party situation, the flip/flopping is not straight forward and predictable.

<comment><USER10> With more parties, new/different ideas have more ways to infiltrate the political decision-making process. With two parties, ideas stagnate unless they are adopted by the overly-powerful heads of those parties.

<comment><USER17> Exactly, that's a great point that I should have articulated above.

</comment></comment></comment></comment><comment><USER18> I think the Coke/Pepsi remarks are a bit facile, and play into some people's cynical attitude that "they're all the same". For someone with pre-existing conditions, that was manifestly not true. For Iraq, its people, and the thousands of soldiers who served there, it was not true. Just to rattle off a couple of examples.

<comment><USER19> I think they get that, but it's a kind of carrot-and-stick tactic. You don't really get an option; you get a guarantee that you either vote for 1: pure, eldritch evil, 2: milquetoast status quo with vague promises of reform that you aren't really enthused for but at least it's not Satan himself, or 3: throwing your vote directly into a landfill for a foolish ideal that is literally impossible under the current system.

Pragmatists should vote for the realistic option that benefits us the most, but that's not how most people work. People aren't really rational actors. If you continuously prove to the public that real reform is a stupid dream and that they must play the game and take the shitty carrot instead of the incredibly shitty stick, they rebel--even if it's not in their best interest. It's not reasonable to point out that they shouldn't do this. Of course they shouldn't, but they always will.

For authoritarians, they see options 1: and 2: from the first paragraph switched around relative to progressives. They aren't the same at all--not even a little--yet still there isn't really any meaningful choice to be made. There is only a vicious, cynical threat. Vote for what your region's culture considers least evil or watch as Armageddon devours you and your loved ones.

The constant near-perfect tie races are suspicious as hell. Haven't you ever noticed that? It's always 51-49 or somewhere thereabouts after the electoral college, gerrymandering and all the other forms of sophistry obfuscate the direct vote tallies--which always differ far more. Always. Also notice the incumbency rate compared to approval ratings. Incumbency is nearly perfect, even though approval is always sub-20%. Often it's far lower than 20%. This should obviously be impossible in pure democracy, but it should also be incredibly rare in our representative republic. But it's the rule, not the exception. In my opinion this is a smoking gun that just can't be dismissed.

This is rigged. Not the same way that crude authoritarian regimes fake their elections, with blatant but effective mafia tactics. This is structurally rigged. This is a hateful ploy that is designed to make real reform impossible, or at least slow enough for existing power structures to readjust and maintain full ownership of new trends, and furthermore to make us grateful for the barest minimum of political functioning: simply that we aren't living under a violent totalitarian state.

Both sides are certainly not the same. But the structure within which both sides operate is not designed with the best interests of the American people or the world in mind. I don't think it's some shadowy conspiracy that was masterminded by a single agent, it's just a ludicrously shitty system that naturally evolved out of our country and was taken advantage of by various opportunists. Our market style makes that very easy and very rewarding. Or at least it was at the outset, before power structures ossified and became strongly entrenched.

</comment></comment><comment><USER20> I don't understand how this keeps happening where certain people get all this free marketing and mysterious drum-up, and then their panacea is frigging Instant Runoff Voting.

At some point the discussion is going to have to evolve past IRV.

One thing to remember - ranked choice voting is just the UI/UX. It doesn't mean you have to count it IRV style. The IRV zealots know this, which is why they re-branded it to name it "Ranked Choice Voting". It's a weak method.

And Condorcet is not complicated. If one candidate would beat all others head to head, that candidate wins. It's only the tiebreaking methods that are complicated, and ties (loops; smith sets) are rare in large elections. Much rarer than additional-round Instant Runoff scenarios.

There was a long discussion just a week ago here ([https://news.ycombinator.com/item?id=18391757](https://news.ycombinator.com/item?id=18391757)) on voting variants.

</comment><comment> throw-far-away Minimum feature-set of a sensible psephocracy:

\- no campaigning or special interest ads a week before voting

\- only public funding and named individual small donations for public servant campaigns: no PACs, no super-PACs, no huge check fundraisers and no dark-money SIGs.

\- nationally-unified, same-day voting, no prior registration required

\- nationally-unified, three prior weeks of voting-by-mail

\- media blackout on counts until all final results are in

\- overturn Citizens' United (by amendment via state legislatures)

\- eliminate the primary

\- end the Electoral College

\- free & open source tech unified, _national_ e-voting system, open for all to audit

\- public blockchain for permanent results

\- printed receipt with barcode of hash saved in the blockchain

\- ranked choice voting (as it provides an instant run-off should the favorite be disqualified, die or resign; also provides N picks for boards, vice positions and directors)

<comment><USER21> It's sad you liked ranked choice voting last. That's all we need to end the duopoly.

I also feel, as the supreme court does, that Citizens United is a free speech issue. You should listen to this podcast about it to get some perspective: [https://www.wnycstudios.org/story/citizens- united](https://www.wnycstudios.org/story/citizens-united)

In a beautiful piece of irony, if it hadn't been for Michael Moore shamelessly using his corporation to produce political speech, the Citizens United court case might not have been successful.

</comment></comment><comment><USER22> With regard to Washington, this quickly devolves into a semantical discussion about what "broken" means. The observation is that it is working as intended, an outcome that is perpetuated by both parties pandering to everyone that it is broken and they can fix it.

That doesn't mean it ISN'T broken, that proves that it is. Correct, it is a selective evolution that works the way selective evolution works. But it doesn't cross the threshold of egalitarian representative democracy where the representatives get to express the will of the people they represent, which is what the masses of people it represents mean by "its broken".

</comment><comment><USER23> Does one ask virgins for sex advice?

Criticisms like Porter's aren't even wrong. They're not even talking about politics as practiced in the USA. At best, they're kibitzing about folk notions of democracy.

Everyone should run for office at least once. Give stump speeches. Earn endorsements. GOTV. Cold call strangers for cash. Wrestle over policy. Build coalitions. Etc.

People should still criticize, make demands.

I'm just saying that once you've played the game, everyone's behaviour will make perfect sense. And then you'll see where reform is needed, desirable, useful.

Source: Election integrity activist, ran for office.

</comment><comment><USER24> I think this is inevitable in a 'first past the post' voting system. The dynamic is identical in the UK.

</comment><comment><USER25> So just to talk about the Coke vs Pepsi thing a bit...

I love Diet Coke, I'm a Coke person for sure. But I have to admit that Pepsi is winning the business wars, not because of their beverage business, but because of all their other investments. Pepsi used to own KFC, Taco Bell, and Pizza Hut (later spun off into Yum! brands), and they still own Frito Lay chips. Coke I don't think has been as good about diversifying their income stream.

To take this to the political sphere, the way to win a Duopoly is to cheat and outsmart your opponent. I'd say the republicans are winning this one though, with the electoral college, citizens united, and the way they are playing for votes with fear and hatred.

Now to be sure, I'm a democrat, and I don't like what is going on, but even I have to admire an evil genius and how they manage to somehow hold on. It's finding ways around your opponent, not trying to attack them head on. I think if we changed the voting system to a ranked choice system, this would be a big way to swing things back toward the democrats.

I'm still always freaked out by people that vote green, and you can see how blue + green > red, but red is still the plurality. Ranked voting would really change this. Even I want to vote green, but am worried that I will affect the spread. Being able to bring in new blood with low risk of going with the worst option would be a huge improvement.

<comment><USER26> > Coke I don't think has been as good about diversifying their income stream

Coca Cola definitely has a diverse brand set of income streams including Minute Made, Nature's Own, Odwalla, and Vitamin Water

[https://en.wikipedia.org/wiki/List_of_Coca- Cola_brands](https://en.wikipedia.org/wiki/List_of_Coca-Cola_brands)

<comment><USER25> It's true they have a lot of brands, but a lot of them are drinks (for example, Monster energy drinks too are on that list). Whereas I think the combination of salty snack food + drinks is a winning combination.

</comment></comment></comment><comment><USER27> They touch on how true bipartisan laws like the New Deal and the Civil Rights Act just don't get passed anymore, but legislation tends to get passed based on which party has the majority of reps at that time. (Then they immediately digress into a long discussion about Trump, unfortunately).

This, to me, is a much more interesting issue than assessing the different ways of counting ballots like ranked choice or approval voting, which seem more like a dry mathematical exercise in tweaking some technical process that we don't fully understand to begin with.

There was this interview I heard on C-Span with Sue Myrick where they asked her about this lack of bipartisanship in Washington. She said that it's simply because politicians no longer relocate there, but just fly in on Monday and fly back out on Friday. So their spouses don't get together anymore for social events, and their kids don't play on the same baseball teams anymore. They don't socialize in any meaningful way with the other representatives.

If representatives are anything like normal people, then I'd wager the revocation of the Fairness Doctrine in 1985 had something to do with it, too. The news media does a pretty good job conditioning people into hating the other party.

<comment><USER12> > They also mention how true bipartisan laws like the New Deal and the Civil > Rights Act just don't get passed anymore,

The New Deal and Civil Rights Act were earthshaking bills that broke the existing partisan alignment and caused a realignment around them; they didn't happen often _before_ , the two of them happening without a few decades was essentially _unprecedented_ in US history.

Bemoaning that things like that don't happen anymore is...odd.

And, yes, the period of realignment that started with the New Deal, was just seeming to settle out before being reignited with the Civil Rights Act, and was largely complete by the mid-1990s, when the few surviving conservative Democratic holdouts finally jumped ship in the wake of the 1994 election had more other "bipartisan" legislation than was normal before or since, because the national parties and the major national ideological factions were out of alignment.

</comment></comment><comment><USER28> Radiolab just did a similar podcast "Tweak the Vote" about new voting variations. It digs into some real examples in Ireland, San Francisco and Maine. [https://www.wnycstudios.org/story/tweak- vote](https://www.wnycstudios.org/story/tweak-vote)

</comment><comment><USER4> Fargo, ND just adopted Approval Voting (better and simpler than Ranked Choice Voting/IRV) by a 64% supermajority.

[https://ballot-access.org/2018/11/06/fargo-north-dakota- vote...](https://ballot-access.org/2018/11/06/fargo-north-dakota-voters-pass- approval-voting/)

</comment><comment><USER29> There are no shortage of precedents when "winner takes all" systems were broken square and fair, keep trying

<comment><USER30> The point isn't that it can't be done, it's that voters are strongly incentivized against trying, so they only do so when the political system is completely broken and they feel like they have nothing left to lose, or they feel like there's such massive support for their third party candidate that the party shift has already occurred. It's a chicken-and-egg problem.

Depending on that to fix problems with the two dominant parties is like seeing an infection and doing nothing to treat it until gangrene sets in and you have to cut off their leg (and give them a robotic prosthetic that you hope will be better than their real leg).

It can and does happen, there's even a term for it, iirc: electoral realignment. But it hasn't happened recently, despite a clear sense by everyone that our political system is broken and stupid. Ross Perot tried to incite one in '92 and look what happened.

</comment></comment><comment><USER31> So the comments here seem to be debating the merit of various kinds of voting systems.

Does that mean we fairly unanimously agree that non-partisan primaries are a good thing? Those are something that could be passed state by state via ballot measure.

</comment><comment><USER32> Can we bring back the Bull Moose part? [http://www.progressivebullmoose.party/](http://www.progressivebullmoose.party/)

</comment><comment><USER33> Hidden?

</comment><comment><USER34> Hidden?

</comment><comment><USER35> Hidden?

</comment><comment><USER36> Duopoly?

To paraphrase the late Gore Vidal, "We have one political party, the property party, with two wings."

Here's the full quote:

"There is only one party in the United States, the Property Party … and it has two right wings: Republican and Democrat. Republicans are a bit stupider, more rigid, more doctrinaire in their laissez-faire capitalism than the Democrats, who are cuter, prettier, a bit more corrupt — until recently … and more willing than the Republicans to make small adjustments when the poor, the black, the anti-imperialists get out of hand. But, essentially, there is no difference between the two parties."

― Gore Vidal

<comment><USER37> This kind of thinking trivializes real progressive policies that "help the poor, the black, and the anti-imperialist" as "small adjustments", and not the matter of life or death as things like torte law, affordable healthcare, unions, and public infrastructure can be. I hope there is more to that in the full context.

Worse, in this context it seems to suggest that you should bargain with neither side and instead seek some new power dynamic. That would be a recipe for disappointment, especially when I think an engaged citizenry can make real (albeit slow) progress by bargaining with the major political parties.

</comment></comment><comment><USER38> My pet theory is that Trump managed to get elected because he's good for audience ratings.

So, what were the ratings for the 2018 election show?

(In past years they barely cleared 30% of voters. QED?)

</comment><comment><USER39> While neither party has serious incentive to increase competition in politics, one party engages in government breaking behavior, which it then uses as an argument for small government.

It's frustrating to see the Republican party actively sabotage government, then turn around and use it as proof the government doesn't work. All the while gerrymandering their way into house seats.

</comment><comment><USER30> The three stated solutions:

> 1\. Non-partisan, single-ballot primaries.

Seems reasonable by itself, but it won't scale to more than a few parties.

> 2\. Instant-runoff voting, (commonly known as IRV, but in the > article/transcript they call it Ranked-choice voting).

No. Absolutely not. IRV is awful.

[https://rangevoting.org/](https://rangevoting.org/)

The good options are range voting (which collapses in the pathological case to simple approval voting, which isn't too bad itself). Or, if you're willing to live with some compromises, one of the Condorcet variants. The problem with the Condorcet voting system family is that it's more complex, less intuitive, and doesn't nicely aggregate: to break ties/loops you have to have granular voting data. The complexity means that when someone doesn't like the voting outcome, FOX or CNN can find some talking head to say "voting system is unfair! election stolen!" nonsense, and get traction because most people wouldn't understand Condorcet or why it works the way it does.

> 3\. Non-biased non-gerrymandered redistricting.

Sure, but this needs to be defined strictly, with each voting district bounded by significant geographical features (rivers, mountains), and when geo features aren't available as boundaries, the boundary must be within a certain percentage of a convex hull. In other words, severely constraining the volume of concave points. Nothing like (-1,-1) to (-1, 1) to (1, 1) to (-0.5, 0), to (1, -1). That -0.5, 0 takes a big pacman-like bite out of the square volume, so it wouldn't be permitted. There are actual districts like that, or more like a blocky-letter-C or a blocky-letter-L shape, and it's absurd.

<comment><USER40> IRV is only awful in irrelevant corner cases that only political science wonks care about.

When the electorate's preferences is a statistical tie, it doesn't matter who wins, as long as one party isn't forcing all the tiebreaks to go their way.

<comment><USER41> > _When the electorate 's preferences is a statistical tie, it doesn't matter > who wins_

I wish this was more front and center in these types of discussions. Imagine a race between Alice and Bob. Alice gets 9,500 votes, Bob 9,521 votes. But—due to some controversial rules—10 of Alice's and 40 of Bob's votes are invalidated. Alice wins.

This is not a scandal or a problem. The original vote totals were a tie. The new vote totals are also a tie. Essentially a coin flip determined the winner.

For purposes of determining who won, 49%===51%. If a candidate is truly wanted by the electorate, then they need to do better than 50% +1 anyway.</comment></comment></comment>


Noam Chomsky: American Power Under Challenge - <AUTHOR> http://www.tomdispatch.com/blog/176137/ <comment><USER3> From the number of comments commited so far, I realise that Americans don't want to touch the subject because it hurts. Noam's book should be read along with all the articles written by Paul Graig Roberts. In the end, the average American will realize that she/he complicit to the warmongering attitude of the United States and how it treats the entire world with 1000+ military bases around the world "spreading freedom". If you ask where the word complicit fits in, then look no further to the average American not voting or voting for politicians who have committed crimes against humanity (Clintons, Bush, Kerry etc) or the ones who will eventually commit (Trump) Good night America.

<comment><USER4> Well, but let's talk about the collapse of Yugoslavia for a while and the subsequent genocide in Bosnia. Here was something in Western Europe's back yard, and they were totally impotent, letting genocide happen right before their eyes. If US citizens are "complicit" in "crimes against humanity", are not European citizens complicit in the genocide that they let happen? Standing by and wringing your hands until the skin rubs off does not stop genocide. It took the US to get involved with a military deployment for any effective action to be taken.

I'm sick to death of being lectured by Europeans who can't be bothered to do anything beyond writing scolding editorials in newspapers.

<comment><USER5> Well, at least we didn't start the war, not even under false pretenses, we welcomed a lot of refugees, held real trials, didn't torture or assassinate anyone and sent countless of soldiers on peacekeeping missions. And it wasn't like the US one day got involved and saved the day. NATO and the UN (Yes, the air strikes were UN sanctioned) was involved from the beginning of the war.

<comment><USER6> Its shocking that the "eurofag" crowd don't seem to get this aspect of the Bosnian conflict: Europe was _definitely_ involved. European troops got there first.

<comment><USER5> Mostly "I don't know too much about the world, but the white house said they did great". If Europe had any larger responsibility for the conflict, it was probably that it couldn't stop the war from happening (even though this is a complex topic as well). Of course this is also one of the motivations behind the EU.

<comment><USER6> It is rather shocking that the propaganda defeats peoples willingness to investigate the truth for themselves - especially with regards to a topic that is, quite literally, extraordinarily inflammatory. Europe, having suffered two major world wars as a result of countries thinking they should just intervene whenever/wherever/for whatever reason, has reason to be cautious whenever someone starts a fire in the Balkans. American nationalists attempting to defend their country's honor don't seem to factor in this key value in their analysis: European leaders have learned to be cautious when it comes to making a case for multi-national warfare. America, having gone into the great dark void it current inhabits, for the most part alone (albeit with a collection of puppet states for the sake of keeping up appearances), seems all too boisterous when it comes to just sending military resources and assets across multiple borders.

This was all factored into place when Europe responded - before the US - <USER2> the Bosnian crisis. Very definitely, mistakes were made - but the conflagration was defused and there is now - relatively speaking - a peace in the area. Bosnia could've been Europes' Syria/(Israel,Palestine). However, it isn't today - and the reason for this is the cool headedness of European leadership. Not the arrogant bragadocio of American militarism.

</comment></comment></comment></comment></comment></comment><comment><USER7> _Chinese leaders understand very well that their country's maritime trade routes are ringed with hostile powers from Japan through the Malacca Straits and beyond, backed by overwhelming U.S. military force. Accordingly, China is proceeding to expand westward with extensive investments and careful moves toward integration._

Expanding into the vastness of central Asia is a raw deal, historically. It's much too hard to secure borders, so security becomes a huge drain on resources. China would probably do better to increase trade with its neighbors, and lose some of its identity to a regional economic association. If China's trade routes become the mutual interest of her neighbors, being ringed by powerful neighbors goes from a detriment to an advantage.

The U.S. is suffering under the burden of maintaining overwhelming military superiority. The British Empire mortgaged world domination for help in WWI, then defaulted to the US for WWII and gave up many of her global network of naval bases to the US. The 1st half of the 20th century bankrupted the British Empire. Now the latter half of the 20th century and the first part of the 21st will be seen as the same process happening to the U.S.

</comment><comment><USER8> Good unilateralism is a stupid idea. May they all succeed and distribute power far and wide.

<comment><USER9> There is strong evidence to suggest that without the hegemony of the United States, there will be more war in the world.

There will certainly be more war in the Middle East (Iran vs Saudi Arabia, Israel vs Arab World), more war in Eastern Europe (Putin expanding into Crimea), more war in the Indian subcontinent (Pakistan is unstable), and so on. Is that the sort of world you want?

<comment><USER8> Strong evidence where written by whom? Do I want more war, no I don't. But I also don't support hegemony. Most of Islamic fundamentalism would not be possible with the Saudis and the Saudis would not be possible without the US. Israel would have to make better peace with its neighbors without the backing of the superpower. Pakistan would probably be less fundamentalist had it not been for the 70s CIA plots to fund Jihadism in Afgahnistan. America is the only big player on the board, it can make all sorts of justifications for its political moves. And there is no way of knowing what the world would look like without them. Only rhetoric and theory.

What the world needs to do, what Europe needs to do, is stand up on its two feet and quit being America's puppet. The same goes for pretty much everyone in the world. It is not good to rely on anyone else to represent your people and your economic interests in the world. Trusting other people's leadership is not a smart move, it keeps you incompetent.

edit: replying to the comment below.

So your point is that there is only enough room in the world for one ultra- national anti-internationalist country and the US is it. The end state of the game is when there is no such country in the world. That includes the US.

<comment><USER10> > "Strong evidence where written by whom?"

> "What the world needs to do, what Europe needs to do, is stand up on its two > feet"

Advocating ultra-nationalist, anti-internationalist policies is, precisely, what leads to the mass conflict the grandparent was talking about.

<comment><USER11> Europe is not a nation. Arguing for Europe to stand up is very much internationalist.

<comment><USER10> Stand up against whom?

<comment><USER12> The United States, obviously. The US is still occupying Europe with hundreds of military bases, it supports and funds terrorist groups and drug cartels, it undermines democratic governments and threatens the security of Europe's people through NSA and CIA sabotage.

There's no reason for the US to maintain the overwhelming global military presence that it does, particularly in Europe. World War 2 is over, and the US will never actually go to war with an enemy like Iran, Russia or China, or any country that might actually pose a legitimate threat to global security, so why keep up the pretense of being the "world's policeman?"

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> .

<comment><USER14> It's a combination of flagging and flame war detection. While I'm participating here, politics really aren't a good fit for this forum. The discussions tend to get too heated to be productive and brings out the worst in people.</comment></comment>


Ask HN: Which websites do you check regularly? - <AUTHOR> <comment><USER2> Drudge, breitbart, reddit

</comment><comment><USER3> News google. H8r news. My email.</comment>


Wall Street's Hot New Financial Product: Your Rent Check. (2014) - <AUTHOR> http://m.motherjones.com/politics/2014/01/blackstone-rental-homes-bundled-derivatives <comment><USER2> 2008 all over again, except rather than using mortgages directly, mortgages become the collateral. Just one more level of abstraction. Same problem or worse, because the lack of home ownership in the neighborhoods is undermined, making the surrounding properties more risky.

</comment><comment><USER3> If you don't punish a child for stealing cookies, there really is nothing to dissuade them from doing it again.</comment>