Ask HN: How do I find a buyer for private shares? - <AUTHOR>

A few years ago, I helped get a startup off the ground with a few friends. As a result, I was given 2% of the company. Since then, the company has received roughly $8 million in capital, and as a result my shares are worth something on paper. I am no longer an employee, as I learned that living to work wasn't for me.
Long story short, I have a decent chunk of shares of a private company that I wish to sell. I'm in Canada, but the company is incorporated in Delaware. I have approached the CFO about selling my shares in the past, and he put me in touch with someone who would "get back to me."
Are there any companies (Sharespost?) or brokers that handle these sorts of things, or am I stuck trying to find a buyer on my own? <comment><USER2> You probably can't. Private companies are picky about who they let on their cap tables. That's what makes them "private".

The first thing people bring up when people ask this question is ROFR, but I think that may get your hopes up. ROFR suggests that the issuer might be forced to match whatever price you find for your shares in the market. Put aside for a second how hard it will be to get a price for those shares.

What's (I think?) a little more likely to be a problem for you than ROFR is that your shareholder agreement probably more or less prohibits unauthorized transfers of company stock. Boilerplate agreements have clauses requiring board approval for transfers.†

Finally: it's awfully hard to sell shares in a business without being able to disclose the numbers for the business. But you probably won't have the applicable numbers: revenue, projections, expenses.

The stories you hear about private shares being sold in secondary markets usually involve gigantic runaway successes, like Twitter. A company having raised 8MM absolutely does not mean your shares are worth anything on paper; the money the company took from investors was pledged to growing the company as a condition of the investment.

† (good: [http://www.nycbar.org/pdf/report/uploads/20071830-TheEnforce...](http://www.nycbar.org/pdf/report/uploads/20071830-TheEnforceabilityandEffectivenessofTypicalShareholderAgreementProvisionsforweb.pdf) )

</comment><comment><USER3> Offer your shares to the other shareholders first, chances are that you are required to do so anyway because of the shareholder agreement you presumably signed and/or the minutes & bylaws of the corporation. They are also the most likely buyers so besides the fact that you are likely obliged to do so anyway it makes good sense.

Valuation will be a problem, but you could use the last transaction as a starting point (and therefore a floor), the high end depends very much on the state of the company (growth and turnover in that order).

Just the fact that the company received an investment does not automatically mean your shares are worth something, for instance, if the company is about to tank they'll be worthless, it all depends on how the company is doing.

Good luck!

<comment><USER2> The holder of a small minority stake in a company almost certainly can't use the company's valuation at its last investment round as a floor, because that valuation set the terms of a specific sale of stock under a specific set of terms (board seat, antidilution, preferences, &c), which the minority shareholder isn't in a position to offer to anyone else. The VC valuation was also the product of due diligence and access to information that no minority shareholder could share with an outsider, which adds a huge amount of risk to the sale, which you'd expect to see taken out of the value of the shares.

</comment></comment><comment><USER4> Finding buyers: the market at this stage will be other shareholders & principals. Assuming you're on speaking terms with your old friends, start with them.

<comment><USER5> +1 on starting with your old friends. The one time I was in this position I called the founder and quickly learned it wasn't going to be worth the effort. Saved them an unnecessary distraction and saved me from counting money I didn't have.

If the company is doing well though, they'd be decently motivated to get some shares out of the hands of a former employee and into the hands of an insider (namely, their VCs).</comment></comment>


Trans-Pacific Partnership Trade Deal Is Reached - <AUTHOR> http://www.nytimes.com/2015/10/06/business/trans-pacific-partnership-trade-deal-is-reached.html?_r=0 <comment><USER2> Just a reminder: the TPP, like most trade deals, is _negotiated_ in secret, but _ratified_ in public. The final version of the deal will be published in 30 days, and then Congress gets 90 days to consider before an up-or-down vote.

The 90-day thing is a result of Trade Promotion Authority granted by Congress to the administration. This is the "fast track" Congress voted to allow the President. It means the bill can't be filibustered.

<comment><USER3> Well, isn't that the entire problem at the US side? Your Congress has 60 days to read and understand several thousand of badly written legalese, and make a decision on it.

<comment><USER2> They have 90 days from publication, don't they?

At any rate: every member of Congress has a staff with a million dollar annual payroll.

Are they going to carefully review the TPP for problems? Of course not. But the negotiation process has nothing to do with that. They'll vote for or against free trade as a valence issue and nothing more. What few surprises we'll get will be a pure result of election year posturing against Obama.

As for whether this is a problem, again, I think that boils down to a valence issue. Either you believe that free trade and trade rule harmonization led by the US is a good thing, or you (reasonably) do not. If you don't, then the process we have now is terrible, because that process creates the potential that trade deals will happen. Because of course, if Congress was looped in on TPP negotiation from the outset, with advise-and-consent on each successive draft, there could be no trade deal. This Congress couldn't work out an agreement to fund a pothole repair if the repair was close to a contested district.

Remember here we're talking about Congress deciding about laws _for other countries_ , much more so than for their own.

<comment><USER4> >As for whether this is a problem, again, I think that boils down to a valence issue. Either you believe that free trade and trade rule harmonization led by the US is a good thing, or you (reasonably) do not.

Not really.

The TPP is largely a mechanism for stripping sovereignty from signatory countries and handing it to corporations. It does this by creating a mechanism whereby they can sue governments in secret courts for lost profits.

Sure, there are probably a few provisions in there about agricultural tariffs, but trade liberalization isn't really what it's about.

<comment><USER5> That is as accurate an assertion as saying that Obamacare enables death panels to ration health care.

A better way to describe the relevant clauses is that corporations can sue governments under an international tribunal system if governments are failing to uphold their commitments to an international law. It's basically the same sort of process that was used when, say, the US and Great Britain had a dispute about the boundary of Maine.

<comment><USER4> >A better way to describe the relevant clauses is that corporations can sue governments under an international tribunal system if governments are failing to uphold their commitments to an international law

It's got jack shit to do with international law.

The wording in the agreement uses the term "indirect expropriation".

It's defined as "where an action or series of actions by a party (government) has an effect equivalent to direct expropriation without formal transfer of title or outright seizure".

i.e. lost profits caused by legislation. kinda like when Australia decided to put warning labels on cigarette packs.

Oh, and the supra-national court will be adjudicated by some corporate lawyers who can probably relied upon to interpret the wording of the above agreement in the "right" way.

<comment><USER2> Once again: the TPP excluded tobacco from ISDS.

<comment><USER4> And? It's still a clear example of how the ISDS would be used (by other corporations).

<comment><USER2> Maybe instead of repeatedly providing an example that the treaty specifically excludes, you could find one that would be enabled by the treaty.

<comment><USER6> Yea, it would be great if we could debate the actual treaty.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> Will be interesting to see how much of the leaked chapters is still in there. The old one said to make ISP's more liable for data being transfered through it. Imports of copyrighted goods without the authors permission will be made illegal (and they said barriers to international trade was dead). Copyright Terms will be extended in several countries. DRM protection is extended so that those who "enabl[e] or facilitat[e]" circumvention can be charged even if they do not violate a copyright (fun time for researchers). Last it dictate that generic medicine is destroyed if such happen to be found in a country where a patent cover it (all those who complain about Russia burning smuggled food might find this interesting).

<comment><USER8> Funny how globalization was going to flatten the world for everyone. Turns out it doesn't actually include the plebs.

Capital gets to traverse the world - its factories spewing waste and arbitraging cost of living and currency differences in SE Asia, its profits reported in tax-resorts like Ireland and the Cayman Islands, and its protection guaranteed via the US Military courtesy of the US middle class.

But should a lowly citizen try to pull a stunt like importing a medicine from India or purchasing a text book from Hong Kong, well that's against the law.

<comment><USER9> It isn't free trade without also free immigration.

Global free trade without global freedom of movement is just profit rearranging for corporations.

<comment><USER10> Right. The American worker lost his job because he was undercut by people who'll do the job for a third-world salary in third-world conditions. The solution is to let the American migrate to the third world so he can join the fun. How could we have been so blind?

<comment><USER9> It's like how the Affordable Care Act had to contain mutually reinforcing requirements for insurance. You can't have insurance that covers pre-existing conditions _unless_ you also require everybody be insured. Otherwise, people would only buy insurance when they get sick.

You have to toggle both knobs at the same time to make sure the system doesn't become unbalanced.

With trade+immigration, you can't allow the free movement of capital without also giving people the option of following their jobs to places long removed from their origins.

Is it practical? Not entirely, but the road has to flow both ways.

<comment><USER10> The two knobs you want to touch in this case go in the same direction. You're not balancing anything. You're just touching knobs for the sake of it.

If you wanted to balance things, you'd pair an open market with shared rules on safety, environment, labor rights, etc.

<comment><USER9> We should invite the world to live in America, then when the rest of the world is empty, take it over, make it all modern, then we can all have our non- polluting futuristic countries of equality and proper environmental regulations and building codes and renewable power transmission without trying to negotiate with hundreds of mutually unnegotiateable peoples.

The ole' america swircherroo.

</comment></comment></comment></comment></comment></comment></comment><comment><USER11> In other words a handful of multinationals, prepared to pay millions in endorsements in hand outs to corrupt politicians, have got exactly what they wanted.

So much for the democratic process and in fact stuff the democratic process.

This deal gives a handful few even more power in controlling the world economy. It lets them screw not only the local worker, but the ability to screw ever worker in the world, in the name of prosperity.

While I hate the fact that such an obvious power grab is happening, what I hate more is the youth of today seem to let this shit happen.

Use your voice and vote out that crap!!!

Sadly my prediction will be, nothing unlike the last ten years, where as the minimum wage remains flat (or maybe even declines), the corresponding CEO wage will see ten fold increases thanks to this amazing free trade deal :(

<comment><USER12> I agree, but let's not rush to blame "the youth". "The youth" has been writing and emailing and calling Congress to tell them we care about this issue but it's not like they really listen to their constituents when so much campaign money is on the line.

<comment><USER6> I'd guess that less than .00001% of the youth, or any other generation has written to congress.

<comment><USER13> Careful on the zeros... .00001% of 318,900,000 people (current population of America) is 31.89 people, and even rounded I suppose they get a few more than that.

<comment><USER6> Ah yes, the percent tripped me up. I was thinking maybe a few thousand letters.

</comment></comment></comment></comment></comment><comment><USER14> I hesitantly applaud such trade deals. I know that they are rife with corporate subsidies and targeted protectionism of politically favored domestic industries but it is better than the alternative. Interdependence and trade have led to a much safer world and a rising global standard of living for all.

<comment><USER15> >I know that they are rife with corporate subsidies and targeted protectionism

Actually, the goal was to eliminate a lot of that.

In trade, countries usually have two general aims:

1\. Negotiate reduction or elimination of tariffs in foreign markets so that domestic producers can expand abroad.

2\. Protect their own domestic producers from foreign competition by retaining the import tariffs that keep them competitive.

So, Japan subsidizes its domestic rice farms and tarrifs rice imports, but wants to sell its cars unfettered. Brazil wants to export its oranges and other produce more, the US wishes to export more of it's beef and cattle market. (These are the ones I'm thinking of off hand.)

The thinking goes however, that nations will gain more if they can all agree to open their tariffs, and allow goods to "trade freely". This means that while there will be short term disruption and decline in some markets, that their economies will have net growth on the whole, because economics is not a zero-sum game. For the TPP, the math is somewhat easy: One or more domestic industries will face internal competition, while their export markets will now be open to a dozen new countries. If they all do this, it's a net gain. (So the thinking goes.)

The portions that people seem to take issue with mostly in our line of interest have to do with the intellectual property provisions. This is to shore up the mismatch in legal protections that exist in countries with weaker IP laws. You can more or less sum this up with pointing out that pirated software and media is sold openly in countries like China and Vietnam. The provisions pertaining to those are other countries saying "Look, we'll trade, but only if you respect our IP."

Whether or not you agree with those provisions is of course, the million dollar question, and on things like that, the fate of the TPP depends. But that's the rationale.

And yes, you're exactly right, a rising global standard of living is /exactly/ what everyone wants. It's not some evil conspiracy, it really is that. And so long as no one can game the system (too badly), that's exactly what will happen.

(More reading on that last point. Can't recommend it enough: In Defense of Globalization - Jagdish Bhagwati [http://www.amazon.com/In-Defense- Globalization-With-Afterwor...](http://www.amazon.com/In-Defense- Globalization-With-Afterword/dp/0195330935) )

<comment><USER16> There is no need of a complete unilateral agreement. CountryA benefits from free trade with CountryB even if the later imposes tariffs to some products of industries they want to 'protect'. It's CountryB which will not have as an optimized economy as it could.

<comment><USER14> This point seems to be counter-intuitive but I believe it to be true. David Ricardo had deep insights into this very idea in the 1800s. I remember his arguments as being very persuasive.

[https://en.wikipedia.org/wiki/David_Ricardo](https://en.wikipedia.org/wiki/David_Ricardo)

<comment><USER17> Ricardo assumed immobile capital.

[https://en.wikipedia.org/wiki/Comparative_advantage#Free_mob...](https://en.wikipedia.org/wiki/Comparative_advantage#Free_mobility_of_capital_in_a_globalized_world)

</comment></comment></comment></comment></comment><comment><USER18> In general, agreements like this seem to be a threat to classical liberalism. Perhaps this is a simplified view but integration is a 7-stage process that ends with supranational organizations and political unions. Or to be specific, an eventual global government rooted more in EU-style bureaucracy rather than (in theory) American-style classical liberalism.

MEP Daniel Hannan elucidated this nicely in a speech regarding the Treaty of Lisbon-

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

Details on the 7 stages and lists of these agreements from the first 2 stages-

[https://en.wikipedia.org/wiki/Economic_integration](https://en.wikipedia.org/wiki/Economic_integration)

[https://en.wikipedia.org/wiki/List_of_bilateral_free_trade_a...](https://en.wikipedia.org/wiki/List_of_bilateral_free_trade_agreements)

[https://en.wikipedia.org/wiki/List_of_multilateral_free_trad...](https://en.wikipedia.org/wiki/List_of_multilateral_free_trade_agreements)

</comment><comment><USER19> "TPP raises significant concerns about citizens' freedom of expression, due process, innovation, the future of the Internet's global infrastructure, and the right of sovereign nations to develop policies and laws that best meet their domestic priorities. In sum, the TPP puts at risk some of the most fundamental rights that enable access to knowledge for the world's citizens."

[https://www.eff.org/issues/tpp](https://www.eff.org/issues/tpp)

</comment><comment><USER20> To put those different "Trade Deal" in their context, wikileaks has made a short but informative video: [https://www.youtube.com/watch?v=Rw7P0RGZQxQ](https://www.youtube.com/watch?v=Rw7P0RGZQxQ)

tl;dr - US is trying to rewrite the rules of world trade because they are scared by mounting BRICS influence over the World Trade Organization.

<comment><USER21> US is not really scared by BRICS at all. They're scared by China, and India maybe, but the other three economies have been pretty handily defused.

<comment><USER22> I don't think Russia can be ignored in light of growing relations between Russia and China. Russia and China have different economic strengths and weaknesses that make a Russian/Chinese bloc stronger than the sum of its parts. A large part of US diplomatic work in the Middle East over the past year has been an effort to undercut Russian oil prices so that Russian oil isn't economically viable, with great success. But this is a band-aid. Even with the current US economy, the incentives that the US is providing to i.e. Saudi Arabia to keep oil prices low are tenuous; a dip in the US economy will make it impossible to maintain these incentives even if Saudi Arabia continues to be satisfied with them.

</comment></comment></comment><comment><USER23> > For the first time in a trade agreement there are provisions to help small > businesses without the resources of big corporations to deal with trade > barriers and red tape. A committee would be created to assist smaller > companies.

That's awesome. But, if you have that much of a problem, why form a committee to help smaller companies- why not just make it easier for everyone? And what good will a committee really do? Why not just say, "We promise to make trading with foreign entities just that- you won't have to deal with the U.S. government and foreign government at all."

<comment><USER22> > But, if you have that much of a problem, why form a committee to help > smaller companies- why not just make it easier for everyone?

How long do we have to try this idiotic idea before we recognize that "making it easier for everyone" only helps big corporations?

<comment><USER23> That's not what I was saying. I was saying that government shouldn't impose so much red tape that small companies need a committee assigned to help them, when it is not known whether that committee will necessarily get them through the red tape as efficiently as a big company that has more resources available.

<comment><USER22> You can't just talk as if "red tape" is this thing that is just hanging around getting in people's way. Red tape usually exists for one of 2 reasons:

1\. Corporations have done something bad that wasn't illegal, so regulation was created to prevent them from doing that. 2\. Corporate interests have paid off politicians to make laws that favor them.

Ideally we could reduce red tape by cutting out only the laws in category 2, but in practice, corporate interests cut both ways: they screw things up when creating laws and they screw things up when removing laws. Moves to reduce regulation almost always cause more harm than good, letting big corporations go back to doing bad things they were doing before. History is rife with this kind of deregulation: the repeal of Glass-Steagall, for example. No move to deregulate that I know of has resulted in a better situation for small business. Deregulatory movements are almost always driven by monopolistic large corporations.

</comment></comment></comment></comment><comment><USER24> Wow: The New York Times is very clear on its political preference: "Donald Trump has repeatedly castigated the Pacific trade accord as "a bad deal," injecting conservative populism into the debate and emboldening some congressional Republicans who fear for local interests like sugar and rice, and many conservatives who oppose Mr. Obama at every turn."

<comment><USER25> What part of that isn't accurate?

<comment><USER24> Saying "injecting conservative populism" without any example and counter argument just comes across very dumb. They want to form an opinion for me and I'm very well capable of doing that myself based on facts. This really downgrades the NYT for me.

<comment><USER25> Have you followed Trump's campaign at all? It's very much conservative populism and it's causing a huge rift in the GOP.

<comment><USER24> Ok, I looked it up on the book of knowledge: "Right-wing populism is a political ideology that rejects existing political consensus and often combines laissez-faire liberalism and anti-elitism. It is considered populism because of its appeal to the "common man" as opposed to the elites."

I thought populism was associated with just saying anything that is popular but not necessarily true and based on circular references or other obfuscating techniques to score easily with people of low education/IQ/logical reasoning skills.. I see I was wrong. In that case, perhaps my original remark is not valid.

Actually, I agree with Trump very much. The TTIP is horribly elitist.

</comment></comment></comment></comment></comment><comment><USER26> To any NYT employees who may be reading this: It's 2015, and you're still using graphics (like this trade map) in a way that shows up tiny on mobile devices but can't be zoomed in on -- and you've even managed to thwart the usual "tap and hold, then Open Image in New Tab" trick.

This is the sort of thing that makes people demand ever-ridiculously-huger smartphones.

<comment><USER27> It's also part of the reason I don't plan on ever buying their subscription. (The other reason being I disagree with the model and believe in a free open internet)

<comment><USER28> Don't use your belief in a "free open internet" to justify why you don't pay for content. I believe in a free and open Internet as well, and as such I believe NYT is free to monetize however they want. I don't subscribe because I don't feel that most of their content is that much better than other publications which I already pay for or consume for free. But a "free and open Internet" doesn't mean that all the content is available for free.

If nobody pays for news, then the best news we're going to be able to get will be Buzzfeed articles written by a college student for $0.05 a word. That's a sad future.

<comment><USER27> I want to ask you a question but I don't want you to take it as sarcasm. It is a genuine question.

How is locking content behind paywalls not exactly the same as closing the web? I don't think there will be a point when all content will be available for free, but if paywalls are the norm, then how is that web still considered free and open?

I don't have a solution for what would be a perfect model, but I don't think paywalling is the answer.

And yes, if news providers have to rely on ads, they will eventually converge into clickbaity buzzfeed. I don't think that is the solution either.

I think we still have to find a good balance that works for everyone. But just because ads don't work, doens't mean paywalling works. That's what I meant with my comment above.

<comment><USER28> Paywalls never will be the norm; I honestly don't think the Internet can support very many paywalled news sites.

I never liked this line of argument (what if X becomes the norm?) when applied to markets: if X becomes the norm, it will be because the market is demanding X more than anything else. If paywalls become the norm, then it will only be because consumers prefer content produced under a paywall model to content produced under a "free" model. But the friction of payment alone will prevent that from happening; so I don't think the free web is really in a lot of danger.

Now I do think a lot of paywalled sites try to have their cake and eat it too by posting their articles on news aggregators then presenting a paywall prompt. I think the news aggregators need to do a better job of blocking these types of attempts, but they won't because they're funded by advertising and I would assume paywalled sites are able to pay more to acquire traffic than ad- supported sites. This is the problem with any funding model where the money doesn't come from you: others' interests are represented above your own.

NYT is especially bad about using cookie and JavaScript tricks to allow spiders to grab their articles, but enforcing their paywall on users regardless. The Economist is a better example; when they post an article online, it's available to anyone for a period of time (3 months I think?), then it enters the archives behind the paywall. But there are many other paywalled articles that never get posted online, and they don't try to promote that content.

Also, I don't think there is a "perfect model". I think there are varied consumer preferences and that many models can be successful. There may be other models we haven't tried yet. But no one model is going to be universal, and if it is, it will be because the market actually wants it to be.

</comment></comment></comment></comment></comment><comment><USER29> Does someone know if the treaty has to be ratified by all parties before becoming a law? If it's rejected by Canadian or NZ parliaments, would it still be implemented?

<comment><USER2> That's a good question. I couldn't easily find a clear answer. Do the other 10 parties just go forward with the deal and exclude the defector?

<comment><USER30> It's certainly quite possible that Canada will defect. We've got an election in 2 weeks and it's a very tight three way race. The traditional "middle" party is running on a very left-leaning platform, so opposition to the TPP is going to be one of the major differentiators between the two left-leaning parties.

<comment><USER31> It will be really unfortunate if we cannot see the document before the election. I am not sure we can trust the government to give an honest assessment of it.

<comment><USER32> Yeah, in a situation where the conservatives don't win the coming election, I have no problem imagining the NDP or Libs rejecting it on the basis of it being "a treaty Stephen Harper negotiated in secret"

Although, reflecting on the limited number of campaign ads I've heard, this seems to be something that no one is really talking about.

<comment><USER33> No one is talking about it? Just yesterday I attended a whistle-stop tour stump speech by NDP leader Tom Mulcair; he had a LOT to say about the TPP and the NDP's clear intent to oppose it should Harper try to ratify it in secret.

<comment><USER32> Very cool!

I'll admit that I don't follow the leaders' discussions all that closely; most of my opinion on what's going on in this race has to do with the ads I've seen and heard, whether on CBC Radio, TV, or before watching Youtube videos.

My impression that there hasn't been much public discussion about it mostly comes from the fact that the only memorable place I've seen TPP mentioned has been on HN.

</comment></comment></comment></comment></comment></comment></comment><comment><USER34> Most of this article is quoting what other people said about the TPP, applying labels to supposedly specific provisions eg. 'foo expert calling it "historic"' etc.

Smoke and mirrors until we can actually read the thing. Or change it ourselves.

<comment><USER2> You get to read it, all 30 chapters, most especially the riveting passages about opening dairy markets, in 30 days.

You will not have an opportunity to _change_ it, nor will Congress, but the opportunity exists to _reject_ it. It's an all-or-nothing proposition.

<comment><USER34> Does that have anything to do with selling raw milk?

Political fallout would be huge if this thing doesn't go through, right? All players in the game are heavily invested in this passing because without it, years are wasted, so I'm expecting it to pass.

<comment> tech-no-logical this, to me, is the scariest part of all these deals (TPP, TTIP, CETA, TiSA etc.) : they seem to be 'too big to fail', so chances are they'll pass simply because parties involved are 'deeply invested', not because they're actually good deals...

<comment><USER35> thats generally they're strategy it seems. literally every year, they say "we need more money or we have to shut everything down"

<comment><USER34> [http://www.amazon.com/The-Big-Short-Doomsday- Machine/dp/0393...](http://www.amazon.com/The-Big-Short-Doomsday- Machine/dp/0393338827)

</comment></comment></comment></comment></comment></comment><comment><USER36> As much as I am disgusted by the secrecy of these negotiations, the way they seem to be pushed down our throats, and indeed some of the stuff that was leaked (like the ISDS), there does seem to be some good stuff in it:

 _" The worker standards commit all parties to the International Labor Organization's principles for collective bargaining, a minimum wage and safe workplaces, and against child labor, forced labor and excessive hours."_

and:

 _" The changes, which also are expected to set a precedent for future trade pacts, respond to widespread criticisms that the Investor-State Dispute Settlement panels favor businesses and interfere with nations' efforts to pass rules safeguarding public health and safety."_

Who knows? This might actually have turned into a decent treaty. But only because of all the massive criticism on the bits that leaked through all the secrecy.

<comment><USER37> Those are nice concessions, but I rather doubt that they aren't more than offset by other provisions.

<comment><USER36> I want to see the concessions before I call them "nice". It's good that they listened to criticism, but did they listen enough? The basic idea behind ISDS is to me still a flagrant attack on justice and democracy. The article mentioned tobacco companies are excluded, which is certainly nice. But I'd also like to see everything related to public health excluded.

I understand that corporations want to be protected against arbitrary protectionist law changes that disadvantage them, and I'm fine with that. But they don't deserve any protection from laws that intend to protect public health, labour conditions, civil rights, etc.

<comment><USER37> I think we're basically in agreement.

</comment></comment></comment></comment><comment><USER38> My favorite part:

"Japan's other barriers, like regulations and design criteria that effectively keep out American-made cars and light trucks, would come down"

Take our crappy cars Japan!

I also didn't realize the US had a large (25%) tariff on trucks.

<comment><USER39> If our cars our crappy, why should Japan need trade barriers to keep them out?

<comment><USER40> I drive a Toyota Cavalier, which was built by Chevrolet to sell to the Japanese, who didn't buy them, so they all got exported to Australia and New Zealand.

It really is an odd car with questionable build quality and some baffling engineering decisions - the boot/trunk wouldn't open, which turned out to be due to the unlocking mechanism coming loose - but it was only connected to the lock by a single plastic clip, the kind you normally find securing upholstery.

Replacing it with a nut and bolt fixed that, but yeah.

</comment></comment></comment><comment><USER41> Let's say a country wants to pass stronger environmental protections, shorter copyright terms, or some other legislation which would conflict with the TPP. How would they do that? Does the treaty need to be renewed every so often at which point those items can be re-negotiated? Or does this essentially lock in certain legislation such that it can't be changed in the future?

<comment><USER42> > How would they do that?

They pass, then get sued under investor state dispute provisions.

The whole point of the bill is to have countries surrender their right to make their own laws; the US President has clearly stated that the goal is for the United States to dictate "the rules" around the world

</comment></comment><comment><USER43> Just yesterday I saw here on HN a news about what the TPP actually means for intellectual property, which should be a quite known problem here in the community. Interestingly enough though that news has only got 10 points and right now it is quite low in the list. The first news today in HN is about CPU caching. What do we need it for if we're losing our rights so quickly?

</comment><comment><USER44> USTR summary of the deal: [https://ustr.gov/about-us/policy-offices/press- office/press-...](https://ustr.gov/about-us/policy-offices/press-office/press- releases/2015/october/summary-trans-pacific-partnership)

<comment><USER45> Thank you.

Everyone in this thread should be reading this link. Yes, it is a one-sided summary by the agency whose job is to pass TPP. But it is also among the very small amount of up-to-date information we have about the deal. (We all know about the leaks from 2011 and 2013. Those aren't news right now.)

This is at least closer to a primary source than the New York Times' glossed- over description of it.

</comment></comment><comment><USER46> From the candidate who said he wanted to "re-negotiate NAFTA". This is a betrayal to American workers, and it's a disaster for the Pacific signatories.

The TPP should be treated as a Treaty, requiring 2/3rd in congress. The majority of the agreement has nothing to do with trade.

<comment><USER47> I thought it was being treated as a treaty, but that's why they passed TPA (fast-track) so they could curtail congress' power to stop it. What is it being treated as then?

<comment><USER46> Just a trade deal as if it was a new tariff.

</comment></comment></comment><comment><USER48> Where's Ross Perot when you need him.

<comment><USER49> For the benefit of non-US readers: Ross Perot was a third party candidate for President in 1992 and 1996 who ran on a platform opposing adoption of the North American Free Trade Agreement (NAFTA).

<comment><USER47> I've rewatched the 92 debates a few times in the last few months, and it's crazy how spot on he was... it's also worth noting that the 92 debates were what scared the two parties into corrupting the debate process, joining together to push out the League of Women Voters and to control the stage to prevent disruptive third-parties from being so publicly anti-establishment.

<comment><USER50> He was a pretty good speaker in person. I went to his speech in Fargo to see what he was about. His book the campaign put together was actually pretty well reasoned and a lot more concrete than the other campaigns' materials. My brother joined his party and we got 20% off a hotel room, so I guess hooking up the corporate discounts worked.

I cannot really argue with the results, but I didn't much care for EDS and some of their sayings. The whole "eagles fly alone" is factually wrong (watch a video of them eating) and just plain stupid in the context of software development.

<comment><USER51> EDS have had some massive failures here in the UK, they have a pretty terrible reputation (though they can't take all the blame, government is just crap at IT procurement generally).

<comment><USER50> Also, to be fair to Perot, EDS has been a long time without his leadership. It was 1984 when GM bought EDS, and that started quite a tussle. In 1996, EDS became independent and in 2008, it got bought by HP.

</comment></comment></comment></comment></comment></comment><comment><USER47> I knew when TPA passed it meant that TPP was nearing completion, they passed TPA (fast-track) because it curtails the power of the congress to stop what I consider to be the unconstitutional TPP. One of the best resources for both documents I have found is the podcast Congressional Dish by Jennifer Briney, who actually takes the time to read the docs and summarize issues.

Personally, I think this is a giant leap towards world government, away from constitutional representation, and away from free-trade and towards the oligarchy-controlled globalism.

I plan on digging into it more and writing a summary of my own, because this is a major issue that we need to push back on hard due to the limitations of the house and senate to oppose it.

<comment><USER52> I'm not sure how unconstitutional it is. The Constitution says: "[The President] shall have Power, by and with the Advice and Consent of the Senate, to make Treaties, provided two thirds of the Senators present concur."

 _I_ wouldn't have written that into the Constitution, but nobody asked me.

</comment></comment><comment><USER53> "The Trans-Pacific Partnership still faces months of debate in Congress[...]"

So nothing is reached : my understanding of US politics (which is quite shallow I'll admit) is that the congress majority will vote contrary to anything Obama wants.

<comment><USER2> That's true in general but not true in the case of free trade agreements. Obama's opposition is the party of free trade, and also the party of China containment.

The fact that Republican opposition voted to fast-track the treaty augurs its support for the final version. This bill is mostly stuff the Republican party wants.

<comment><USER54> The sudden flip from "we're against anything Obama supports" to suddenly standing with Obama to support the TPP is highly unusual, and more than a little suspicious.

<comment><USER55> Often I find that it's not the issues the parties disagree on that I need to worry about, it's those that get passed quickly and quietly through Congress.

<comment><USER56> Spot on - see my post above (In this subthread).

</comment></comment></comment></comment></comment><comment><USER57> NONE of the comments defending the TPP reference ANY POSITIVE reasons to support it. They all reject negative claims or argue process ("It is too democratic!" "Amendments are often bad!" etc.)

Obviously the TPP has major costs, both directly and indirectly. IF as I doubt the TPP is worthwhile, then proponents should be able to give examples of its benefits.

</comment><comment><USER58> How on earth is every country going to pass all these laws? Won't it end up broken to bits or with some countries quitting?

</comment><comment><USER59> Here is a discussion of and link to the consequences of this "great deal":

[https://news.ycombinator.com/item?id=10330126](https://news.ycombinator.com/item?id=10330126)

</comment><comment><USER60> So is TPP a treaty or merely a "trade deal"? If a treaty then IIRC only the Senate is required to ratify it, not "Congress".

<comment><USER61> Trade deals are treaties but have been recently implemented in a way that requires both houses of Congress to pass them, I believe because the legislation not only ratifies the treaty, but also changes domestic laws to comport with the terms of the treaty. Recent free trade agreements like Colombia and Korea were passed by both houses.

</comment></comment><comment><USER62> The fact that the negotiations were done in secret probably means that most of the TTP content is being given to journalists by those officially authorized to speak about it. This isn't unexpected, but it does affect how the TTP is framed (even if you don't buy the Greenwald puff-piece-for-access argument).

<comment><USER2> I'm not sure how this even makes sense. The whole treaty will be public for months before Congress votes on it. What's the "give to get" you're thinking of here?

<comment><USER63> Journalists will be interested in publishing articles about TPP _today_ , rather than a month from now. That interest might lead one to lend a friendly ear to the only people who have actually read the current draft, who just so happen to strongly support the passage of the current draft.

<comment><USER2> Why are journalists more interested in publishing articles about TPP further away from the vote?

<comment><USER63> We're discussing TFA, which is already published. There are other reports and analyses out now as well.

<comment><USER2> You're claiming here that the _New York Times_ was bought off with early access to TPP?

<comment><USER63> That's an extreme interpretation. KAB started the thread with thoughts about "how the TTP is framed". I mentioned "lend[ing] a friendly ear". How did we move from that to "bought off"?

It's not as though NYT are infallible, however, and it is well known that journalists often become sympathetic to the opinions of those government officials, company executives, etc. to whom they require _access_ in order to obtain information they need.

</comment></comment></comment></comment></comment></comment></comment><comment><USER64> Just a reminder that _this_ above everything else is Obama's legacy no matter how they try to re-write history.

So if you thought it was bad that the TSA can hold people without even a phone call to a lawyer, wait until they start putting people in prison over the TPP

</comment><comment><USER65> One positive IMO is that Ford Motor Co doesn't like it.

Ford, the company who famously exported so many manufacturing jobs out of US in the past suddenly grew a heart for the well-being of "future competitiveness of American manufacturing" ? Probably not.

</comment><comment><USER66> Welp, democracy was nice while it lasted.

</comment><comment><USER67> R.I.P. democratic free society.

<comment><USER68> do you know something we don't?

<comment><USER67> I don't. No one does (besides people who have negotiated it). AND EXACTLY THAT IS THE PROBLEM! Those who are elected are kept in the dark, too: [http://www.ip-watch.org/2015/09/09/german-bundestag-not- happ...](http://www.ip-watch.org/2015/09/09/german-bundestag-not-happy-about- being-kept-out-of-ttip-reading-room-in-berlin/)

Maybe we the citizens are just plain stupid to understand so we need to be persuaded: [https://www.techdirt.com/articles/20140620/14292827638/us- em...](https://www.techdirt.com/articles/20140620/14292827638/us-embassy- berlin-offering-cold-hard-cash-people-to-create-pro-taftattip- propaganda.shtml)

(Just like we were for Iraq war)

One of the examples of the "brave new world": [http://www.theguardian.com/environment/2015/may/22/eu- droppe...](http://www.theguardian.com/environment/2015/may/22/eu-dropped- pesticide-laws-due-to-us-pressure-over-ttip-documents-reveal)

You want you and your children and grandchildren to live in it?

If TTIP is SOOOO great why secrecy, why so many people who _don 't have_ financial interest in it are against it?

I could write a lot about it...

<comment><USER69> Of course it would be negotiated in secrecy. How else do you expect something to get done? Every political player will get facts out of context and make his rhetoric out of it, sprinkling emotions and indignation to rally up clueless people, in order to build up his image or get a political favor. Now imagine this happening in every country and mass media amplifying it.

Negotiators would have NO room to negotiate. Parliaments have to ratify and have appropriate time to get themselves familiar with the matter. Stop drinking the kool aid.

<comment><USER67> So basically, you are for sacrificing democracy on the altar of secrecy. "Clueless people" are always dangerous. And "every political player" can "rally them up". Yes! That's how it should be! People must be informed and have rights to organize and protest for or against something. All fan-boys of diverse trade agreements have only one thing to defend: Secrecy. (And, for the sanity of the discussion, throw out such words as "drinking the kool-aid")

<comment><USER69> Not interested in a discussion. You don't seem to have any regard for practicalities. Only utopia ridden dreams.

</comment></comment></comment></comment></comment></comment><comment><USER70> Unless I skipped it, the article doesn't mention anything about the new copyright clauses?

</comment><comment><USER71> Paywalled

</comment><comment><USER72> tldr: eventually end more than 18,000 tariffs that the participating countries have placed on United States exports

\- Goods include: autos, machinery, information technology and consumer goods, chemicals and agricultural products ranging from avocados in California to wheat, pork and beef from the Plains states.

\- establish uniform rules on corporations' intellectual property,

\- open the Internet

\- crack down on wildlife trafficking and environmental abuses

<comment><USER47> Good job summarising the article, but from the leaked documents none of that seems to stand up to scrutiny. Just letting you know you are regurgitating bad info.

</comment></comment><comment><USER73> Duplicate here: [https://news.ycombinator.com/item?id=10331299](https://news.ycombinator.com/item?id=10331299)

</comment><comment><USER74> I know of no other act that would so throughly demonstrate the subjugation of our democracy to corporations than to hold them to a 3-month review of a complete rewrite of the laws that bind corporations.

We are staring at a phase transition.

When this treaty passes, expect the remaining dominoes to fall hard and fast.

_digusting_

</comment><comment><USER75> Don't worry, Reddit won't have this on the home page for 4-5 hours.

<comment><USER76> Ironically, Reddit is our best hope for understanding what's in the deal in time for ratification.

<comment><USER77> I love HN and Reddit for this reason, really. It's crowd-sourced insight.</comment></comment></comment>


BadNets: Identifying vulnerabilities in the machine learning model supply chain - <AUTHOR> https://blog.acolyer.org/2017/10/13/badnets-identifying-vulnerabilities-in-the-machine-learning-model-supply-chain/ <comment><USER2> The thing with neural nets is that once one gets over being impressed by their ability to do an impressive variety of things that previously weren't doable, and consider them as simply applications that have to stand with other applications, they look like ... the worst applications ever.

They're ... undocumented and have specified behavior (leading to serious, not- hypothetical problems like racial bias). Their maintenance is unspecified or nonexistent. They inherently have security holes in a multitude of fashions. Their performance isn't guaranteed and measured only against their own benchmarks, etc...

This kind of thing is much more of a problem when they have to be a system used by a large institution as just part of its operations (a loan evaluation program or a recidivism indicator) rather than a standard alone application (a program to play the game of go). But in the former capacity, a lot more work needs to be done.

</comment><comment><USER3> This is basically one of my problems with self driving cars and putting your life in the hands of neural networks. It could theoretically be possible to find vulnerabilities in these systems. Someone could possible create some sort of genetic algorithm to evolve a sign that could cause a car to veer off the road and crash.

Maybe i'm just scare mongering or worrying about nothing. I just don't really feel comfortable putting my life in the hands of something that no one knows exactly how it works.

</comment><comment><USER4> I have a hypothesis that these errors in interpretation stem mainly from the max pooling layers that occurs in nearly all CNNs today. Simply cutting out a large fraction (at least 75%!) of the information passing through _each_ pooling layer is making the models quite brittle.

That, and obviously it would be a big help to be able to interpret meaningful symbols (e.g. words) from the images rather than just recognize a certain arbitrary class of pattern activations. That is pretty hard, of course, but IMO essential for the upcoming self-driving car revolution, if it is to succeed.

G. Hinton has some ideas though they aren't very fleshed out yet.[1]

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

</comment><comment><USER5> This is a good introduction to possible attack vectors in training models. Thank you for sharing!

</comment><comment><USER6> Galen Erso.</comment>


CUDA 7.5: FP16, GPU Lambdas, GPU Instruction-Level Profiling - <AUTHOR> http://devblogs.nvidia.com/parallelforall/new-features-cuda-7-5/ <comment><USER2> CUDA has been on my list of things to learn for quite some time. The ecosystem is just so much nicer than OpenCL... if I didn't have to support non-Nvidia GPUs, I'd have already gotten on the bandwagon.

<comment><USER3> Ive been using OpenCL recently, and have had a pretty nice experience generally. Are there any things in particular from the CUDA ecosystem that you miss?

<comment><USER2> I don't know much about CUDA, just what I see from my co-workers who do get to use it. The Visual Studio integration looks amazing. The C++ api is cleaner. I am told there are lots of little quality-of-life API things that are better from people who have used both.

</comment></comment></comment><comment><USER4> Lots of good stuff, and some not so good stuff:

"Deprecated: legacy (environment variable-based) command-line profiler. Use the more capable nvprof command-line profiler instead."

IMO there are way too many use cases for the command-line profiler to get rid of it, probably ever.

<comment><USER5> nvprof is still a command line profiler, and has even more features.

<comment><USER4> And there are a lot of cases where it doesn't work, specifically with elaborate MPI scenarios and over a network/VPN. Specifically, I do not wish to jump through hoops to enable remote profiling over heavily IT-restricted networks.

For simple apps, nvprof is great. For real low-level blood and guts CUDA optimization, the command-line profiler is still indispensable. Killing it is enough reason for me to go code FPGAs in OpenCL instead of GPUs in CUDA.

<comment><AUTHOR> Hi varelse, can you tell me more about your profiling use case? nvprof should support MPI profiling scenarios, but perhaps yours is different. I'd love to know details so I can help improve the product. Feel free to contact me at first initial last name at nvidia.com (name is Mark Harris).</comment></comment></comment></comment>


Apple Wants More Mobile Music From Labels: 3G Hints... - <AUTHOR> http://bits.blogs.nytimes.com/2008/05/19/apple-wants-more-mobile-music-from-labels/index.html <comment><USER2> "music labels argue that they should be paid more for an over-the-air download than a standard track bought over the internet, where the wholesale price is about 70 cents."

Hunh?

Dear Mr. Jobs:

Would you be so kind as to provide an "add to my wishlist" feature for the iTunes Music Store, so that when I select a track in iTMS and it tells me it is $2.99 for a mobile download (plus exorbitant data transfer charges), I can wait until I am sipping a latte at my neighborhood coffee shop with free WiFi and pay 99 cents for the same track.

Thank you very much.</comment>


Tetrachromacy: some people do perceive more colors - <AUTHOR> http://en.wikipedia.org/wiki/Tetrachromacy

<comment><USER2> "It has been suggested that as women have two different X chromosomes in their cells, some of them could be carrying some variant cone cell pigments, thereby possibly being born as full tetrachromats and having four different simultaneously functioning kinds of cone cells, each type with a specific pattern of responsiveness to different wave lengths of light in the range of the visible spectrum."

That might explain this:

<http://zanypickle.com/2010/03/color-names-men-vs-women/></comment>


Ask HN: Selling SaaS Products in China? - <AUTHOR> Can anybody share their success/failure selling SaaS products in China.<p>What are like top DOs and DONTs ? <comment><USER2> We looked into it and decided against. They wanted customer encryption keys and access to all customer data in order to get a license to operate.</comment>


Happy Birthday, Ruby - <AUTHOR> https://github.com/ruby-no-kai/ruby25/blob/master/dave_thomas.en.md <comment><USER3> I'm currently working on a Ruby project, and I love the language so much! It's elegant, fast enough for me, and the ecosystem rocks.

It seems that, after Ruby borrowed from many previous languages, a lot of rubyisms went into Rust (the nice functional-style enumerations, the awesome package manager inspired by Bundler). And I'm thrilled the best of the Ruby world found its way into other languages.

A future where the elegance of the Ruby language is available both as an interpreted-scriptable tool (Ruby) or a compiled-statically-typed language (Rust) looks like a nice place to me.

<comment><USER4> Wouldn't Crystal fit the bill for a fast compiled language explicitly designed to emulate Ruby's syntax? (I don't have any significant Ruby or Crystal experience, so if there are reasons why that doesn't fit the bill, I'm sorry)

<comment><USER5> So I do have a lot of Ruby experience, and I have used Crystal, and I've found that Crystal being Ruby-ish in syntax doesn't help with the fact that it _isn 't_ Ruby and doesn't work like Ruby. Nor does Rust, of course, though I do appreciate how Rust has liberally taken after Ruby in a lot of other ways. But I find Crystal mostly frustrating in many ways related to how it looks and presents itself. It wants to look like Ruby and it wants to court Ruby developers--by not being Ruby, but also not providing enough reason to use it over other languages.

There are tons of uses for non-Ruby languages. These days I'm primarily in TypeScript and Kotlin, even though I really, really like Ruby; as-is it doesn't scale, from the perspective of somebody who likes manageable code, as well as I'd like it to. But when I want a non-Ruby language, I am not tied to Ruby syntax (and I kind of think that Ruby's syntax works almost exclusively _for_ Ruby? I think a lot of the expressivity of the Ruby language loses something when you don't have its dynamic approach to the world) in a way that makes Crystal, with its lack of libraries or maturity, not an appealing choice of tooling.

(I also feel similarly about Elixir, though in Elixir's case there are also some interesting things around BEAM that I might like to leverage. And I think that a typed Elixir would get my attention _right quick_.)

<comment><USER6> > And I think that a typed Elixir would get my attention right quick.

Elixir _is_ statically typed, it just uses strong type inference so you rarely have to explicitly type things out.

A key difference between Crystal and Elixir is that Crystal tries to replicate ruby syntax in a more performant language, whereas Elixir tries to apply the sensibilities of Ruby and the Ruby community to the Erlang VM.

<comment><USER5> I was using "typed" as shorthand for "statically typed", but Elixir is not statically typed. Typespecs aren't static typing and IMO they get messy when you want to do more than specify primitives.

[https://elixir-lang.org/getting-started/typespecs-and- behavi...](https://elixir-lang.org/getting-started/typespecs-and- behaviours.html)

<comment><USER7> Dialyzer is indeed a pain in the ass, but what is not a pain in the ass is vscode's elixir_ls plugin which incrementally dialyzes and gently nudges you into making static type declarations (your code shows up uglier when you don't do it).

Life changing. It's stopped me from pushing runtime errors probably about 20 times now, in the last few weeks that i've been using it. At this point I'd say that it's strong enough to close 95% of the difference between static and dynamic typing.

Elixir's (maybe going to be merged into the standard library) property checking semantics (ExUnitProperty and StreamData) are quite amazing and super easy[0], and will catch whole classes of things that your compiler won't so I would strongly suggest checking out Elixir now.

[0] today I implemented in an hour a property check that makes me confident that a mathematical algorithm that I implemented for a fuzzer is ok (my first attempt was wrong), and then a property check that demonstrated that that algorithm applied to a stateful set of events doesn't violate critical invariants.

Also, you will almost certainly never get a statically typed Elixir, because it makes a lot of things like hot updates hard or inelegant. Sending interprocess/internode messages is something could be extremely intolerant to a static type system, because, in a way you're breaching the purity of the functional paradigm (it's the BEAM language's "one big lie"). Go struggles with this a lot in its channel semantic, and it's why there is a ton of boilerplate in gRPC (and almost no boiler plate in erlang RPC).

Also gently breaching the type system is incredibly useful in mock tests - <USER2> example, in my current project I do about 60 high-load end-to-end tests in parallel with clones of my central scheduling algorithm - this is possible because my test suite reaches into the main body, dynamically creates a new scheduler, and appends that information into an HTTP request, which is passed into a "plain old map" and intercepted _only_ in test environment. This not only greatly accelerates the end-to-end tests (I run the full suite as a matter of course before each commit) but it also gives me confidence that my system will run under a load that is greater than I can manually trigger.

</comment></comment></comment></comment></comment></comment><comment><USER8> Ruby is the very least favorite of all the programming languages I've had to use regularly over my career.

Its syntax strongly favors cuteness over familiarity. Wherever Ruby can diverge from expectations to give you a pointless little tickle of whimsical inventiveness instead, it seems to do so.

Visually it looks like an unwanted love child of Pascal and Python. There's no clear rhyme or reason to the use of sigils and keywords.

The standard library and built-in types are acceptable for a mediocre '90s scripting language, I guess. The difference between symbols and strings as hashmap keys is a footgun that opens up endless bugs for the type of glue code that you'd often be writing in Ruby.

Probably the only thing that keeps Ruby afloat is Rails, an extremely resource-intensive web server framework built around assumptions of what web apps were like in 2003. Everything in Rails seems to happen by pooping magic keywords in your code or in file names according to mysterious conventions, so when something goes wrong, you'll have a hell of a time figuring out why Rails isn't calling your code or is generating broken SQL. OTOH it honors the Ruby tradition of doing lots of unexpected and useless cute things like pluralizing words in your database migrations [1].

[1] [https://stackoverflow.com/questions/1185035/how-do-i- overrid...](https://stackoverflow.com/questions/1185035/how-do-i-override- rails-naming-conventions)

<comment><USER9> So, I'm old, and have done lots of stuff in lots of languages in frameworks. For about a dozen years, Rails was my go-to toolkit. I've written a couple dozen production applications with it. Unfortunately, Rails has really fallen out of favor lately. Even a Rails-specialty shop I worked for briefly has pivoted to using ASP.NET. I've played around in that stack, and found it lacking. (EF just doesn't compete as an ORM.) However, they've moved on to bigger corporate customers, and those places just don't use Rails.

Recently, and because of this same we-don't-"do"-Rails sentiment, I was forced into using Java for a web application. So I prototyped a site with Spring and Angular 6, thinking this -- arguably -- represents the "state of the art" when doing a Java web app. Out of frustration, I also cranked up a prototype with Rails. What was taking me literally 160 lines of Java and JS, to build two related models and a form to edit the relationship, took me 3 lines with Rails. Nothing else I've found allows me to be as productive as Rails for writing web applications.

I can understand criticizing Ruby for being clever. There are still magic tricks you can do with it I've never even tried to understand. I can understand criticizing Rails for being obscure. I realize that it took me MANY years to be REALLY effective with it. But if you're telling me the alternative for web applications is ANYTHING related to Java, I'll call you crazy.

I've just inherited a Laravel-based PHP site, which is so old I can't download the version of the framework it uses. Yikes. I did PHP for about 10 years, 20 years ago. It doesn't feel like a lot has changed.

So, I'm honestly asking, as someone who hates Rails: What framework, out there, somewhere, allows me to be as productive as Rails, but which is are "better," somehow?

<comment><USER5> So...eh.

Ruby has the easiest data access tools, between ActiveRecord and Sequel (which I prefer), out there. I don't know too many folks who'd disagree with you about that. But where you're happy with Rails taking a few lines, I am as of late big on Kotlin (because I agree with you regarding Java) encouraging me to be _correct_. I'm building a new product using Spring Boot, Kotlin, and JDBI and while, yes, there's boilerplate - it's not the thing that slows me down. I liken it to touch typing; I don't worry if a programmer can't touch type because getting text onto a screen is never the slowest part of the process.

The thing that slows me down, as it does whenever I'm programming, is _thinking_ , and I've learned over time that Ruby doesn't really help me with that. (A lot of other toolchains, both statically and dynamically typed-- hello, TypeScript!--do.) I just don't worry about writing a query with a join - it forces me to understand my domain while I'm writing it, not when it runs and bombs out with an error because I mistyped something or got the relationship wrong in my head because my IntelliSense doesn't exist.

It depends on what you're prioritizing. I went back to the JVM for this project in part for perf, but also because I have a pretty high bar for correctness and I want to make sure my stuff works without writing in/out tests for something as simple as types.

Horses for courses.

(Also, I would submit that the frontend SOTA for "Java" is React, FWIW, same as almost anywhere else.)

<comment><USER10> It's not just code bloat, typed languags and frameworks like spring have to dance through hoops to allow for easy testability. Spring is founded on the idea of dependency injection that's supposed to overcome that. In Rails/Python and friends you just don't need that, and consequently things have much less bloat.

<comment><USER5> ...at the cost of globals all over the place and significantly fewer code-to- interface (rather than code-to-implementatation) moments.

I'd rather test a well-factored JVM or .NET application than I would _any_ Ruby application I've ever seen in my life, to be frank. I've never, not once, had to write a _mock_ (awful) for a test in a JVM or a .NET application, and the quality of my tests reflect that.

</comment></comment></comment></comment></comment><comment><USER11> I discovered Ruby in 2005 and immediately fell in love with it. Then came across Rails which really tested that love, what with it's opinions and everything!

And finally reached Sinatra, then Roda and love prevailed! Along the way, discovered and enjoyed working with so many gems both in Ruby as well as part of it's packages!

So, after 13 years now, I'm glad I chose the right language. A language which always asks, is there a simpler, more beautiful way to do the same thing?

So, Happy birthday, and thank you.

<comment><USER12> I've also been using Ruby full time for 13 or 14 years and I am really hoping its popularity and commercial viability continues for another 13 years (or another 25).

I'm certain my level of mastery contributes to my enjoyment. And it's not that I don't like learning new things, I do! But Ruby is just an absolute pleasure to write, and it's hard to imagine spending 8+ hours a day living in any other ecosystem.

<comment><USER13> definitely - it's not getting slower it's getting faster and more stable. ruby's here to stay

</comment></comment></comment><comment><USER14> > Ruby isn't the most beautiful language out there

Huh, I sure think it is. I wonder what the author thinks the competition might be? Ruby has its issues for sure, but aesthetics ain't one of them - far and away my favourite out of any major language.

<comment><USER15> I'm not sure what language would be more beautiful than ruby, to be honest, and it's not even my favorite language to use.

Let's do a mini code challenge in the thread -- implement fizzbuzz in the most beautiful way you can, in the most beautiful language you know:

<comment><USER16>
        (defn fizz-buzz [n]
          (map #(cond (= 0 (mod % 15)) "FizzBuzz"
                      (= 0 (mod % 5))  "Fizz"
                      (= 0 (mod % 3))  "Buzz"
                      :else            %)
                (range 1 n)))

<comment><USER17>
        (def fizzbuzz-nums (range 1 101))

        (defn fizz? [n] (zero? (% n)))

        (defn buzz? [n] (zero? (% n 5)))

        (defn fizzbuzz? [n] (and (fizz? n) (buzz? n)))

        (defn fizzbuzz [n]
          (cond (fizzbuzz? n) "FizzBuzz"
                (fizz?     n) "Fizz"
                (buzz?     n) "Buzz"
                :else         n)))

        (def fizzbuzz-list (map fizzbuzz fizzbuzz-nums))

        (apply println fizzbuzz-list)

<comment><USER16> Simple.

But this brings up a debate I've been having with some folks. I have the memory of a gnat, so I can't keep a lot of context in my head. I prefer the previous two examples to this one, simply because with this one, I have to remember a lot more contextual vocabulary.

It's a pet-peeve of mine to pull up a source file, and then have to ping-pong around between 50 different function calls, when the entire thing could have been written linearly in fewer than 50 lines of code.

On the other hand, small functions like yours are easier to verify at a glance and move on. I haven't figured out what the right trade-off is.

Anyone else want to weigh in on this conundrum?

<comment><USER18> Well, I would say that the primary refactoring done in Slackwise's example is just to assign names to the different conditions and the list produced by range. I think it makes most sense to break these things out and assign them to names when they both become a common idiom in your code (it is used in multiple places) and the logic spans a few lines or has sufficient complexity. I, too, would rather look at one piece of code than have to find out what each function is attempting to do if the name is perhaps ambiguous. For Slackwise's example, I would say that that is too much abstraction because you've basically created as many pieces of abstraction (the conditionals and list) as there were lines of code without them. Maybe the decision for when to abstract can boil down to:

* Is a common idiom in the code base / same logic used in multiple places

* Has "sufficient" complexity

* Can be replaced with a good name that is generally clear with what it will achieve

For Slackwise's example, I think that the names used in the abstractions are exactly what I would use, but I also think that they're not really descriptive enough. If I wasn't the original author and thought I should refactor the names, I would probably try to choose divisible-by-3?, divisible-by-5?, and divisible-by-15? because what the hell is a fizz or a buzz anyway? Maybe you had already thought about all of this and wanted a deeper response; sorry to disappoint.

</comment></comment></comment></comment></comment></comment><comment><USER19> Ruby was my re-entry into programming. Before it, I had tried programming in highschool (c++) and, while I did well at it, felt like it wasn't for me. I was going to go into some other field like Photography instead.

By chance I had to do a programming class in college, and they had put me into the wrong one by accident - a final year software project in Ruby. I did really well at it, fell in love with the language and got into other programming languages from there.

I've been doing Ruby for 12 years now and it's my go-to language when I can choose. My entire programming career has Ruby to thank.

<comment><USER14> Me too actually. I flirted with programming around uni-time and after - PHP, java, friggin' _ada_ \- and just couldn't see myself enjoying it so I went into network management instead.

10 years later I was thoroughly sick of that, so started to look around and heard about this little language called Ruby - and it was love at first sight. Then this little software project called Rails started to gain momentum and there was no looking back. 13 or so years and counting.

And now funnily enough just when I feel like Ruby is lacking a few necessities in our always-connected world, along comes a project which is basically reworking Erlang to look a whole lot more like Ruby - Elixir. I'll always love Ruby but Elixir feels right for the next step, that kind of instant attraction I never felt for the likes of golang. Here's to the next 13 or more years of Ruby-like programming joy!

<comment><USER20> I don't get this Elixir as the natural progression for Rubyists. OO/mutable Ruby and functional/immutable Elixir are worlds apart beyond the superficial syntax similarities.

<comment><USER14> > worlds apart beyond the superficial syntax similarities

I never understood this argument. That "superficial" syntax is what I have to stare at, reading and writing, for 8 hours a day. That I actually enjoy doing so is therefore hugely important to me.

I mean, you can make the same argument against Elixir itself, and I've seen it done - Erlang old-timers arguing against the necessity of these "superficial" syntax improvements. Suffice to say that I profoundly disagree.

<comment><USER20> I didn't say the syntax is superficial - I'm an Elixir fan, in fact. I meant the similarities with Ruby syntax are superficial.

</comment></comment></comment></comment></comment><comment><USER21> > Ruby changed my life. Ruby gave me a whole new way of looking at things, and > a whole new set of friends.

Matz himself said something similar about Emacs / Lisp [1]:

> Emacs made me realize anything can be changed by a programmer...Emacs taught > me freedom for software...Emacs has changed my life

[1] [http://ergoemacs.org/emacs/Matz_Ruby_how_emacs_changed_my_li...](http://ergoemacs.org/emacs/Matz_Ruby_how_emacs_changed_my_life.html)

</comment><comment><USER22> Years ago, as a (traditional) designer trying to learn how to code, I spent what felt like an eternity trying to wrap my head around JavaScript. This was in the ES5 days. After a lot of effort I could usually do something approximating what I wanted, but there were a lot of stumbling blocks that got in the way of really understanding what was going on.

Once I learned Ruby, the fog parted and everything started making sense. Compared to JS, Ruby was transparent. Everything was just a bunch of objects sending messages back and forth to one another. The simplicity of defining classes and methods made it easy to think about how a program could model aspects of the real world – domain modeling, abstraction, etc. One early experiment I recall was using Ruby's built-in Enumerable and Comparable modules to represent a deck of playing cards in code (complete with > and < methods which respected suit, royalty, etc) – this was a real "aha" moment in my learning process.

Reading code written by others was much more straightforward (making it easy to learn from the masters), and writing extensions/plugins to existing tools to add features that I needed suddenly became feasible. Books like David Black's "The Well Grounded Rubyist" and Sandi Metz' "Practical Object Oriented Programming in Ruby" were great, accessible introductions to the art of programming.

I don't write much Ruby any more, but I'm in total agreement with Dave Thomas here. Ruby for me was the "royal road" into learning how to program, and it continues to inform the way I think and write code in other languages. As a non-CS person, I can't think of a more accessible way to learn about software development.

</comment><comment><USER23> There is one thing I really dislike about Ruby (and other languages like Scala that have the same feature), and it's non-parenthetical function invocation. I get that it's good for writing DSLs and similar endeavors, and you're only supposed to use them where its implicit what you're doing, but in my opinion, it really hurts readability (though Scala is much worse when it comes to flexible yet opaque syntax).

<comment><USER24> Unfortunately you really can't get the refactoring capabilities without being able to substitute a method for a local variable transparently, which is extremely useful over the long run.

</comment></comment><comment><USER25> In July 2009 around Rails 2.1.2, I decided I'd be happy if I could write Ruby for a living for the rest of my life... So far so good!

</comment><comment><USER26> It seems like it is currently Ruby's turn to take a beating just like Java before it. I guess people relentless hate on Java even to this day, so maybe it will never get much better. But Ruby certainly holds a special place in my tool box. Here's to another 25 years.

<comment><USER27> Most of the Java complaints date back to the [https://steve- yegge.blogspot.com/2006/03/execution-in-kingdo...](https://steve- yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html) era. A lot of things were needlessly painful before Java 8.

</comment></comment><comment><USER28> Ruby's readability has been a huge plus for me, and I love working with Rails. I've only completed one Rails project, and I want to work with it again in the future.

</comment><comment><USER29> This makes me wistful for the 00s and Ruby back when people like _why were around doing fun, weird stuff that felt more like art than engineering. Of course much of that is mixed up in my own early 20s and Ruby as the first language I truly fell in love with. I'm sure just as much (probably more) great weirdness is going on right now, so maybe I'm not mourning that as much as experiencing a maudlin touch of nostalgia.

</comment><comment><USER30> > > Matz is clever so we can all feel a little smarter, too.

> (OK, I just made that up)

I liked it :).

<comment><USER31> Careful, Oscar Wilde said something like (can't find the exact quote) "I always feel smarter after listening to you." It wasn't a compliment.

</comment></comment><comment><USER32> Great writeup! I agree that Ruby is a remarkable language. One that changed my perspective about what a language could be while at the same time combining some of my absolute favorite ideas from Perl, Smalltalk, and Scheme into a syntax far cleaner and more satisfying than almost any other language I've worked with.

Dave Thomas's Programming Ruby was a fixture on my office desk for a decade. One of the best programming books I've ever read, with a fantastic reference section (built from Ruby's own excellent baked-in docs), my copy is well worn, and I still find reasons to dig it off the shelf from time to time.

I can't give enough Kudos to Matz, Dave, and the rest of the Ruby community for bringing this language into my life. The community they've built is truly amazing, and the language has endured even as it's grown with far fewer bumps and jolts as compared to other similar languages over the same time period.

In summary, quite simply amazing! Happy Birthday, Ruby!

</comment><comment><USER33> All my accomplishment happen because of ruby. I've been unhappy and depress with java(2006-2010) and then I manage to move to ruby. And I totally like the language. I'm sad when people say python is more nicer, or the nicer and better language there. I've done python and I never find it appealing as ruby

<comment><USER34> What about people liking python makes you sad?

</comment></comment><comment><USER10> Hope for another good 25 years :) if I can I will keep programming in it in my 50s and 60s.

</comment><comment><USER35> This should have " (2018)" in the title.

<comment><USER36> My first reaction was "2018 was only 10 days ago!" But then I clicked the link and saw the article is from February 2018, so Ruby is nearly 26 now.

<comment><USER37> unless you go by the actual release date of dec 1995..

</comment></comment></comment><comment><USER38> > Ruby is the Katamari Damacy of programming languages

love it.

<comment><USER39> Sounds like they're trying to borrow-and-modernize the "Lisp is like a ball of mud. Add more and it's still a ball of mud" metaphor.

</comment></comment><comment><USER40> After getting tired of Java's verbosity in 2008, I switched to a Ruby job, where I was fortunate to work with an incredibly talented developer and Ruby expert. It was a joy coding in Ruby after 4 years of Java and XML.

After that, I moved to Groovy, which seemed like a nice middle ground between Ruby and Java, or as I called it at the time: Java as it should have been.

I don't hear much about Ruby and Groovy lately, and while I focused more on front-end development, my back-end work rolled back into Java, which, I admit, has gotten slightly less painful with Java 8. At least in some ways; in other ways, it's just become an even bigger mess where some parts are sensible while other parts are dragging the weight of decades of poor choices with them.

I hear Kotlin is nice, though.

My Ruby skills have gotten a bit stale, sadly. The last thing I did with it was in 2013 I think, when I ran into trouble with Ruby's handling of unicode.

<comment><USER41> Java may suck to some, but it pays huge chunk of corporate salaries. Although there is the best of both worlds: JRuby! Scripting JMX and some heavy JDBC stuff with Ruby saved me so much time.

</comment></comment><comment><USER42> I love the syntax, but I'm hating the debugging. Feel like a big chunk of my time is wasted chasing after errors that a compiler could catch for me.

Would love to have optional some kind of optional typing. Has anyone tried any of these? [https://github.com/soutaro/steep](https://github.com/soutaro/steep) [https://github.com/plum-umd/rdl](https://github.com/plum-umd/rdl)

Any other suggestions?

<comment><USER43> I've not personally tried it, but I remember thinking rdl sounded promising after seeing this talk (looks like there's a video online): [https://www.thestrangeloop.com/2017/type-checking- ruby.html](https://www.thestrangeloop.com/2017/type-checking-ruby.html)

</comment></comment><comment><USER44> The decision to implement DSLs by overriding method_missing seems to have opened a can of worms and the community has never managed to put the lid back on. More than anything else, this is the thing that seems to cause no end of consternation with Rails. At the same time, it's pretty much the defining feature of Rails.

<comment><USER45> I'm not aware that this has caused much consternation. I disagree that DSLs are a defining feature of Rails. There are other ways to implement DSLs besides `method_missing`, and rubocop and other style guides warn against using this method.

<comment><USER44> I'll admit to not having used Rails, but I was under the impression that Rails itself was a DSL.

<comment><USER45> Rails is a web framework. It's an easy one to use, and often the way to express something is concise enough that I would feel okay saying that "Rails is a DSL for web applications". That would be a simile, however, and not literally correct. It would be more literally correct to suggest that Rails was composed of several DSLs, but that probably stretches the definition as well.

The routing system in Rails is definitely a DSL. You might say that defining model properties was a DSL. You can probably call an ORM query interface a DSL. The controller and view layers are going to look like just about any other framework. Rails is a full-featured framework, which can be configured with a minimum of fuss, bother, and actual code-writing. For toy apps I don't think there's anything else that's faster for development, and for real apps I'm pretty sure that all frameworks are roughly equivalent.

There are Ruby projects which do provide a "DSL for web apps", of which I believe Sinatra is the most popular. Rails incorporates some DSL-like features, and I would agree with anyone who said that it "is basically a DSL for web apps", but I would consider that a figure of speech.

</comment></comment></comment></comment><comment><USER46> After 25 years it seems Ruby is in gradual decline these days? You will find one ruby related post at HN after reading 500 of Javascript and/or Python posts here for example.

<comment><USER47> I agree with the other poster who says it's mature, not in decline (so maybe that's boring to the crowd that likes to always hop to the latest tech). Basically most of the kinks have been fixed and desired features have been added, and now it's about gradual improvements and adding new functionality as it comes. Students also commonly learn Python and Javascript in college and are probably more active on social media like HN.

I think Rails is the obvious choice for backend apis these days. It's robust, takes care of most of the hard stuff, saves you time and mistakes. Use whatever you want for frontend (React for me) in tandem with it. Many of the job postings I've seen have listed Rails + React.

It used to get accused of scaling poorly, but tell that to Github, Gitlab, and other large-scale sites with millions of users. It's true that bad Ruby is slower than bad Java, but the solution is to write cleaner code.

I know this was all about Rails. I use Ruby for scripting work as well, and it's enjoyable to use.

<comment><USER48> > It used to get accused of scaling poorly, but tell that to Github, Gitlab, > and other large-scale sites with millions of users.

I've worked on one such large-scale enterprise-level web app, and it really does scale poorly in some areas, specifically database management. ActiveRecord tends to get extremely expensive when db's take on large amounts of records and complex relationships start forming between those large tables. You need VERY good software engineering practices and understanding of which choices will utterly kill you down the line in terms of performance when using this ORM, and it's hard to see those consequences at the outset due to the fact that Rails code is so easy to pick up and understand.

<comment><USER13> Isn't this true of any language? I mean the language isn't what decides how you connect or build your sql queries? In rails I could choose to write a pretty scary join

```

       User.joins("left join ponies on ponies.user_id IN (select id from foobars where user_id=users.id").group("so_funny").count

```

or I could have a policy to avoid joins at all cost and reject any commit that uses a join and get fun things like:

```

       users = User.all # all fucking hell

       JSON.parse(HTTP.get("http://your-things.json"))['results'].select {|r|

      users.detect {|u| u.id == r['user_id'] } # for realz??
     }

```

[edit]: cause formatting

<comment><USER48> You are right, but aren't really attacking the point I was making. Even with totally optimized sql, one language's ORM will be inherently slower than another due to the intrisics of how the records being operated on are represented in that particular language. In Rails's case, EVERY single record pulled out of a database gets its own object. There is overhead to being able to represent table members from a relational database in a language with all of the lovely convenience methods tacked on to the resulting object (things such as treating ranges of records pulled like a hash, for instance.

This is compounded by the fact that ActiveRecord obfuscates much of the sql code you posted above (not always, but in many cases). When a user new to Rails goes in and sees "Oh, all I have to do to set up foreign key relations is to just say this model belongs to this other one? NICE!", it isn't immediately clear what the implications of whats happening under the hood to accommodate that are, and all of the ways which this can quickly be misused to cause a huge performance bottleneck. That syntactic sugar smooths over some of the pitfalls of efficiently interacting with a relational DB.

It's important to note that these things do not make ActiveRecord a bad ORM in and of itself, as many users will not build projects large enough to have to worry about such bottlenecks, but it CAN and DOES cause problems when projects get larger and have to start taking on overhead from the resources allocated for all those records. That is what people are complaining about when they mention Rails doesn't scale well (or at least one of the reasons).

<comment><USER13> That is why we have pluck

<comment><USER48> > it's hard to see those consequences at the outset due to the fact that Rails > code is so easy to pick up and understand

Yes, there are tools in ActiveRecord that can help mitigate some of the performance issues, but as I noted above, it's extremely easy to overlook such tools until you are too far down stream to really do much about it. The symptoms of not using such features may not show up until much later when the number of records swells, and some code someone wrote 2 years ago starts slowing down the whole shebang simply because they used a select rather than a pluck. This is ESPECIALLY true in large corporate web app environments where the number of records is large and the number of people with their fingers in the code base is equally sizable. And good luck convincing management to go back and fix old ORM tech debt until the whole thing starts falling apart at the seams.

Hell, pluck didn't even exist until 2012 with the release of 3.2.1.

<comment><USER49> Might depend on the amount of spaghetti, but I've typically been able to retroactively fix bad AR patterns backwards compatibly, and get huge speedups. The only time it's a real issue is when an API endpoint is just returning way too much and you have a lot of clients depending on that API returning all that data.

What's a lot harder to deal with is AR callback hell, which can be very slow if you have enough nested callbacks, and can be really hard to fix without breaking everything. Using many AR callbacks is just a bad idea for a big app!

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER37> "First appeared 1995; 24 years ago" Wikipedia who's right?

<comment><USER50> >The name "Ruby" originated during an online chat session between Matsumoto and Keiju Ishitsuka on February 24, 1993

>The first public release of Ruby 0.95 was announced on Japanese domestic newsgroups on December 21, 1995

</comment></comment><comment><USER37> Wikipedia says it came out in 95..?

</comment><comment><USER51> If it wasnt for Ruby and DHH, I doubt web development would be where it is today.

</comment><comment><USER52> .. Quickly Googles "Katamari Damacy"..

</comment><comment><USER53> Ruby's bare word syntax, while sometimes clunky, is usually nice to read. Other than that, Ruby is a stain on software engineering. If you have the choice, don't make it your first language! Ruby has the most fundamental flaws of any of the scripting languages.

<comment><USER54> WAT?

Have you looked at the array_* methods in PHP?

<comment><USER53> yes, php's standard library is bonkers. but at least you can tell where a variable is defined.</comment></comment></comment>


Lawyer "love letters" (patent license demands) - <AUTHOR> http://www.law.com/jsp/article.jsp?id=1202458646351&Looking_at_Love_Letters_From_Both_Sides_Panelists_Discuss_Patent_License_Demands

<comment><USER2> I understand the value behind IP and there are reasons for some of the protections but as an programmer I really really hate this side of business.</comment>


Implications of Monoclouds for As-A-Service Startups - <AUTHOR> http://tomtunguz.com/implications-of-monoclouds/ <comment><USER2> "Third, because of the freedom extended by the two most popular open source licenses these infrastructure vendors can host successful open source projects without constraint. And because of their scale, they can do it at a fraction of the cost by the startup would."

This is why we've kept GPL thus far. So far the only people who seem to have a huge problem with it are for-profits who want to monetize us or put their brand in front of us without paying for it.

If you're releasing service code under an ultra-liberal license you're just working for Amazon for free.

<comment><USER3> How does the GPL prevent Amazon from hosting say GNU Health, and charging for it? If the source is free to distribute, and they don't make any changes, the GPL won't save you. Or am I missing something?

<comment><USER4> There's probably not much software that can really just scale like Amazon needs to, especially in practice vs theory. There's probably also not a lot of software they want to build that kind of scalability into themselves.</comment></comment></comment>


What do you consider a "good" conversation? How do you go about having one? - <AUTHOR>

I've recently become interested in improving the quality of conversations I have with people I don't know very well.
The types of conversation I consider to be "good" can be split into two major groups:
Comedic - irony features fairly heavily in my sense of humor. Unfortunately it seems that it takes someone else with similar sensibilities to successfully build a conversation.
Epiphanic - one or both parties realize something that he/she hadn't before (could be personal or impersonal, due to exchange of ideas).
I don't really attempt to dictate the direction of a conversation, which I think may be a problem. <comment><USER2> Allot yourself 175 words a day. Then measure the results.</comment>


Show HN: Write redismodule in golang - <AUTHOR> https://github.com/wenerme/go-rm <comment><AUTHOR> I think redis is powerful, but with golang, it can be more powerful(e.g. eval js script, customize datatypes).Use your imagenations you can do a lot of things with redis.</comment>