What's been wrought using the Piece Table? (2014) - <AUTHOR> https://web.archive.org/web/20160308183811/http://1017.songtrellisopml.com/whatsbeenwroughtusingpiecetables <comment><USER2> I was tasked with writing a undo/redo framework for an existing client app a few years back. It's basically an HMI system (a tool typically used in manufacturing to visually model an industrial system) that used SVG+HTML. I could have used a piece table concept (didn't know it was called that), storing a diff fragment of what was changed (using a library like diff-match- patch). Unfortunately, there was more than a text-representation that needed to be maintained so it didn't work initially.

I wound up using a stack-based architecture that pushed operations stored as functions onto a main stack then its reverse operation onto an undo stack. Once I worked out the state management problems it worked out quite well.

I've always wondered what other approaches others have done if tasked with a similar problem.

<comment><USER3> Anyone know if there is a best-practice immutable data structure variation here? The way I've thought about it is that if you store the entire sequence of operations which have occurred so far, and you have some function that can re-build the current state from that list, then you don't need any inverse operations. This means that undoing an operation is just removing the last operation performed from the operation list, and then rebuilding the state.

This seems nice since you don't have to figure out inverse operations (which I've seen get tricky), but I imagine the performance penalty of having to store all operations and rebuild the entire state every time could be problematic in some cases.

Then again, I imagine there are good standard optimizations for dealing with this kind of thing. One thing that occurs to me is that operations which 'cancel' each other could be sought out and eliminated before rebuilding the state.

I'd be glad for any more information on the subject!

Edit: more specifically I'm wondering if those optimizations _do_ in fact exist, and if so what they are.

<comment><USER4> Do you mean [https://en.wikipedia.org/wiki/Persistent_data_structure](https://en.wikipedia.org/wiki/Persistent_data_structure) or something more specific for this case? It's known how to only incur an O(1) cost in time and space for making a data structure persistent. So then you just need to keep a reference to all past versions of the data structure you might ever want to undo back to.

EDIT: actually reading the wiki more carefully, I think they were talking about making a BST persistent specifically rather than any data structure. In that case looking at implementations such as rrb-vectors might be more interesting: [https://github.com/clojure/core.rrb- vector](https://github.com/clojure/core.rrb-vector)

<comment><USER3> That wikipedia article looks interesting. I guess the only thing more specific I'm wondering about is persistent data structures for undo/redo systems. But just knowing the name 'persistent data structure' is useful.

</comment></comment></comment></comment><comment><USER5> For context, this was almost certainly submitted because of a recent submission about data structures for use in text editors.

If anyone wants to check out the comments: [https://news.ycombinator.com/item?id=15381886](https://news.ycombinator.com/item?id=15381886).

<comment><AUTHOR> True, but the original post only partially talk about the algorithm at the end (when I almost was on my way to leave the article). The link I posted was mentioned as a cool read in between, but I feel it deserve more credit and readers.

<comment><USER5> Absolutely. Thanks for posting!

</comment></comment></comment><comment><USER6> Just mentioning that "unlimited undo/redo" meant that it was really fast to undo and redo one step in Word. This system didn't necessarily enable an undo history like we expect from word processors now. In fact, up to Word 5.1a for the Mac and Word for Windows 2.0, Word didn't have undo history. Undo would undo the last action, and then it would undo the undo. I believe undo history was added to Word 6.0.

</comment><comment><USER7> Fun fact: UC Berkeley's intro course on Data Structures used a Text Editor for the massive project of the semester in Spring 2016. (Source: I wrote the autograder.)

Our undo/redo feature was suggested to be implemented as a stack.

[http://datastructur.es/sp16/materials/proj/proj2/proj2.html](http://datastructur.es/sp16/materials/proj/proj2/proj2.html)

</comment><comment><USER8> Wow. The inventor Piece Table is none other than Moore of Boyer Moore string search algorithm:

[https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_sea...](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm)

<comment><USER9> Also related to both strings and piece tables is the rope data-structure for concatenations of strings

</comment></comment><comment><USER10> A few years ago (2003, time flies) I wrote a piece table with a twist, instead of using a linked list I used a tree. I put a description of the whole algorithm here:

[http://e98cuenc.free.fr/wordprocessor/piecetable.html](http://e98cuenc.free.fr/wordprocessor/piecetable.html)

A years later it was integrated in AbiWord.

There was a major mistake in the profiling. The dots in the graphs were the best of 3 measuraments. At the time I thought that was the fairest to prevent outliers due to concurrent process. It also warms the data in the cache making the best measurement super fast.

</comment><comment><USER11> If you're interested in this kind of structure it's worth taking a look at 'transclusion' devised by Ted Nelson in the mid 60's [https://en.wikipedia.org/wiki/Transclusion](https://en.wikipedia.org/wiki/Transclusion) reply

</comment><comment><USER12> Is fast save the (in)famous Word file format where the in-memory state is written to a file?

<comment><USER13> Yes. Along with - as I assume you're alluding to - state that you might not intend to share along with the current state of the document.

<comment><USER14> Saving internal memory state to a file is such a terrible idea, who would do that!

 _Proceeds to go write a program to manipulate memory-mapped files._

<comment><USER12> That's what Emacs (and AFAIK, some other interactive lisp environments) do to speed up boot time.

<comment><USER15> The famous unexec function…

</comment></comment></comment></comment></comment><comment><USER16> The writer of the article wrote more details in a reddit discussion on the article three years ago: [https://www.reddit.com/r/programming/comments/22fpz0/whats_b...](https://www.reddit.com/r/programming/comments/22fpz0/whats_been_wrought_using_the_piece_table_how/)

Found it in the wikipedia footnotes :)

</comment><comment><USER17> How does a piece table differ from a linked list?

<comment><USER18> More similar to a rope/cord: [https://en.m.wikipedia.org/wiki/Rope_(data_structure)](https://en.m.wikipedia.org/wiki/Rope_\(data_structure\))

</comment></comment><comment><USER19> Is this in any way related to Operational Transformation?

</comment><comment><USER20> There are some other pages about MS Word here too: [https://web.archive.org/web/20150822081514/http://1017.songt...](https://web.archive.org/web/20150822081514/http://1017.songtrellisopml.com:80/)

</comment><comment><USER21> What's the difference between this and ropes? They seem conceptually similar.

<comment><USER22> Ropes are inherently a binary tree. From what I can understand you can implement piece tables both as a double linked list and a b-tree. Furthermore in ropes every leaf spans one character, in piece tables, pieces have different lengths.

Furthermore with ropes, every operation returns a new rope data structure, that means ropes are immutable. If you want to implement undo, you only keep references to the former ropes. There is no inserting or adding via looking up the changes in an undo list.

I think maybe if you implemented a piece table, where every piece spans one character, used a binary tree and made it immutable, you'd get a ropes data structure.

For more information about persistence vs immutability this link might help: [https://stackoverflow.com/questions/10034537/persistent- vs-i...](https://stackoverflow.com/questions/10034537/persistent-vs-immutable- data-structure)

<comment><USER23> > _Furthermore in ropes every leaf spans one character,_

The Boehm paper on ropes[1] (which is about the _only_ academic literature on the subject that I know of) does not do that (and explicitly suggests one should not), nor does any real-world implementation, (e.g., the Boehm implementation, SGI's impl) do that. It would be incredibly inefficient, and for no real gain.

A good rope implementation will store an array of characters/bytes in the leaves, up to some threshold.

> _Furthermore with ropes, every operation returns a new rope data structure, > that means ropes are immutable._

There is nothing inherently immutable about ropes, and it is certainly possible to mutate a rope. (For example, appending a single character to a leaf with space is much quicker if the rope as a whole is mutable.)

Look at the SGI implementation for an example here; their reference docs[2] contain sufficient details to see that the rope itself is mutable.

Now, a rope typically just describes a sequence of characters. It is entirely possible for a leaf node in a specialized rope to reference on-disk content, and other leaves to reference in-memory content. In that regards, it can be like a piece table. Implementing an undo/redo on top of a rope is less straight-forward; whereas a piece table's undo history can essentially share large portions of the linked list (see the lovely diagrams here[3]) I'm not sure the same can be done on a Rope's tree, due to the tree's need to balance and re-balance. That is, without copying the tree, since that kind of defeats a lot of the benefits that a piece table has — not needing to copy the entire "file", even if that's just a bunch of spans.

Now, one could make the leaves in a rope ref-counted (so they could be shared) and then copy the Concat nodes for undo/redo levels. Keeping the concat nodes as copies means the copies can balance independently, and since concat nodes are small (~2 pointers for left/right and a depth, IIRC) that isn't _too_ much copying (the bulk of the data, the text, is refcounted in the leaves). But the simplicity of the piece table really starts to shine at this point.

[1]: [http://citeseer.ist.psu.edu/viewdoc/download?doi=10.1.1.14.9...](http://citeseer.ist.psu.edu/viewdoc/download?doi=10.1.1.14.9450&rep=rep1&type=pdf)

[2]: [http://www.sgi.com/tech/stl/Rope.html](http://www.sgi.com/tech/stl/Rope.html)

[3]: [http://www.catch22.net/tuts/piece- chains](http://www.catch22.net/tuts/piece-chains)

<comment><USER22> I stand corrected, thanks for the thorough answer.

My interest in ropes was arisen from the "data structures for text editors" post here on HN. Most resources were haskell implementations. IBM Developerworks had an article about ropes and a corresponding java library, the article stated ropes were immutable. [https://www.ibm.com/developerworks/library/j-ropes/index.htm...](https://www.ibm.com/developerworks/library/j-ropes/index.html)

I admit being wrong on every node storing a single character, that misconception stems from a graph I saw representing ropes on yesterday's article.

Undoing with immutable ropes is very straightforward I think. You don't copy the whole file, but just the references. I admit it is heavier on the memory, but you could store an arbitrary amount of previous "states" or versions in ram. The benchmark on the Java library may prove this point.

I will try to read the original article to gain more insight. Thanks again for the resources.

</comment></comment></comment></comment><comment><USER24> Is there nothing that J Strother Moore hasn't touched?

</comment><comment><USER25> Back in 2000, i was hired to write an app that recovered damaged Word documents, and i had to experience it first hand. Impressed me as well!

</comment><comment><USER26> The title makes it seem like it was exclusive to Word and developed by Microsoft when in reality it was developed at Xerox and used by their Bravo word processor.

<comment><USER27> That was the rewritten title (see [https://news.ycombinator.com/item?id=15388593](https://news.ycombinator.com/item?id=15388593)). We've reverted it to the original now.

<comment><AUTHOR> God point, thanks. Agree with you. I will try to remember that next time an article make the front page.

</comment></comment></comment><comment><USER28> The history of FullWrite is slightly wrong. Wikipedia has a better one: [https://en.wikipedia.org/wiki/FullWrite_Professional](https://en.wikipedia.org/wiki/FullWrite_Professional)

(1988 is also around the time of a famous DRAM shortage BTW)

</comment><comment><USER29> What was wrong with the original title? It was "What's been wrought using the Piece Table?"

<comment><USER30> It seems a bit click-baity ("well, what _has_ been wrought using it?"). I suppose that the current one is arguably still a bit so (it could be "How the piece table enabled unlimited undo …"), but it seems better to me.

<comment><USER31> Hmmm... my guess is you're probably not making a whole lot off those ads on your website if "What's been wrought using the Piece Table?" strikes you as click baity.

<comment><USER32> They're referring to the format of "click to find out!" when it can be mentioned right there in the title.

That nobody is going "oh boy, so what _has_ been wrought using the piece table?" is part of their point.

<comment><AUTHOR> Click to find out without the normal read the whole article to find out? You are given a new title when you enter the site. Those two combined give you more then enough information to figure out if you already know it. And if you already knew that Word is using the algorithm, you would probably just skipped or opened the link to verify that is was this algorithm. All this combined, do you mean I should have kept the original title?

</comment></comment></comment></comment></comment><comment><USER33> We call it now as redux</comment>


Uber C.E.O. To Leave Trump Advisory Council After Criticism - <AUTHOR> https://www.nytimes.com/2017/02/02/technology/uber-ceo-travis-kalanick-trump-advisory-council.html?em_pos=small&emc=edit_dk_20170202&nl=dealbook&nl_art=0&nlid=65508833&ref=headline&te=1&_r=0 <comment><USER3> We've tried to consolidate the discussions from the previously flagged threads here, and have prevented flags from killing the thread. If you'd like to participate in the discussion, please do so thoughtfully and carefully. Users often flag these stories reflexively because they cringe at the thought of yet another uncivil political flamewar. Let's please try not to have one here.

</comment><comment><USER4> This is really unfortunate. If you're in the "Trump is a mad man" camp, don't you want voices of reason like Kalanack's to be in his ear? And if you're pro- Trump, this also is a good thing.

The underlying problem in the US is we've stopped talking to each other. We only hurl partsisan-charged invectives at each other. Kalanack's choice here is a visible example demonstrating that "not talking" is the solution. I am saddened by his choice and I am ashamed of my fellow Americans, from all walks of the political spectrum for their choices to sling mud instead of speaking to each other and finding ways to cooperate with each other.

I also highly doubt this move will have the intended effect of mitigating the #deleteuber campaign. Even considering the facts about some of Lyft's key investors being Trump supporters. Mostly because people as a whole can't hear reason any more. Sure, #deleteuber is hurting Raisier LLC, but you know who it's really hurting? The immigrant Uber drivers who are renting/leasing their vehicle through one of Uber's partners, and are contractually obliged to drive only for Uber. There's no reasoning there. No critical thought. Just "fuck you #deleteuber".

<comment><USER5> _If you 're in the "Trump is a mad man" camp, don't you want voices of reason like Kalanack's to be in his ear?_

Based on his actions since Jan 20, he should be isolated, shunned, denounced and blocked by all available means until he either resigns or is impeached. It doesn't seem like "reason" is something that he will ever listen to, by this point.

That said, in principle it can be useful to have people capable of exerting the kinds of influence he seems to understand better (force, and threats of force). But not a hidebound accommodationist of dubious ethical principles like Kalanack.

(EDIT: apologies, didn't see the upvotes before revising the above substantially).

<comment><USER6> If that were completely true then he wouldn't have a council of tech advisors that all hold views counter to his own.

If the man is willing to talk to you about the things you care about, then why on earth wouldn't you?

<comment><USER7> I've independently come to the same conclusion as you and OP, but some of my liberal friends on Facebook don't agree. I don't really understand the argument to "isolate and shun" by not joining his advisory boards. If there is pressure to keep Trump's ideological enemies out of the process, then that only leaves his supporters... Which leads to all of his sources of information supporting his decisions.

<comment><USER8> Because the Advisory Council serves in name only and is a prop to grant legitimacy.

<comment><USER5> Very succinctly put.

</comment></comment></comment></comment></comment></comment><comment><USER9> Kalanick faced pressure not just from consumers #DeletingUber, but from his own team. Uber is locked in bitter competition for talent with a bunch of smart, well-funded Silicon Valley companies all of whom offer fun challenges and comparable compensation packages. Talent in the valley is overwhelmingly concerned by Trump and in opposition to racist immigration bans, war in Asia, and pretty much the rest of the Trump issue portfolio.

I'm glad to see Kalanick distancing himself from Trump. But we should look at things like this not as a hopeful sign that Silicon Valley leadership is growing a conscience, but that it's ultimately responsive to the focused desires of its rank-and-file employees, without which none of these companies can accomplish anything.

If we're looking to create change, we should keep laser-focused on what we can do as the real engines of growth that tech companies depend on. We should look at things like Kalanick buckling as an indication that the pressure we can bring to bear works. And we should look for more ways to focus that pressure uncomfortably on our employers to ensure that none of us end up looking back 10 years from now and realizing we were culpable for something horrible that we could have avoided.

<comment><USER10> Yes, we can demand our leaders signal their virtue to us. They'll all turn their backs on Trump. Maybe we can even get Peter Thiel to do so.

I'm sure we disagree on a Thiel presidency. But I'm pretty sure we're 90% in agreement on a Bannon presidency. I'm the epitome of what Bannon opposes - <USER2> American who feels more connected to the geek in Bangalore than the trucker in Nebraska. As Thiel and Bannon try to push Trump to prioritize their own agendas, I really don't want Bannon to get his way.

Trump has one fewer person in the Thiel camp talking to him. If we push harder, we can shrink the Thiel camp down to just Thiel. Trump will see the tech people moving away from him and the nationalists rallying around him. What positive result do you think will come from this?

<comment><USER9> I refuse for a moment to entertain the notion that you, of all possible personalities on Hacker News, find it ethically indefensible for a group of people to use their market power to influence policy. Pull all the rhetorical tricks you have in your bag --- "virtue signaling" is so stale it's begun to stink --- and I still won't dignify this argument from you.

<comment><USER10> I didn't say it's ethically indefensible. I said it's counterproductive.

<comment><USER9> You seem to believe Thiel is an important mover in the Trump administration. But there's very little evidence that's the case; it's the sort of thing it seems to me one could only come to believe if their only source of political news was places like Hacker News. Reality's Trump administration is governed by Priebus and the GOP establishment on the one hand, and Bannon's clownshow on the other.

I haven't read a story about Thiel's influence other than the fact that Trump made a fool out of him by enacting exactly the policy on immigration restriction that Thiel said wouldn't happen when he said people should Trump "seriously but not literally".

It seems to turn out that Thiel wasn't anywhere nearly as influential as he thought he was.

</comment></comment></comment></comment></comment><comment><USER11> I think this is justified and expected. What proportion of Uber drivers are themselves first generation immigrants? In New York City anyway, it seems like > 90% of them are.

It seems untenable for the CEO of Uber to participate in a regime so with such a revanchist anti-immigration policy. Maybe Kalanick thought he could counterbalance that tendency, but he won't be able to do it. The anti- immigration fanaticism is the driving force behind Trumpism.

<comment><USER12> There is immigration, and illegal immigration.

Trump has given no sign of being against the former.

<comment><USER13> Trump's senior strategist, his appointee to the Security Council and political advisor is Steve Bannon.

      "Isn't the beating heart of this problem, the real beating
      heart of it, of what we gotta get sorted here, not illegal
      immigration?" Bannon asked Miller. "As horrific as that
      is, and it's horrific, don't we have a problem? We've
      looked the other way on this legal immigration that's
      kinda overwhelmed the country?"

      Bannon goes on to decry the "oligarchs" of Silicon Valley
      and Washington and call the number of immigrants in the
      United States "scary."

It's very hard to say Trump's given "no sign" of being against legal immigration. He has yet to actually put forward an anti-legal immigration Bill in the first two weeks of his presidency, but it seems likely he will given his choice of advisors.

</comment></comment></comment><comment><USER14> Too bad. I think that the more tech insiders remain at arms length from Trump, the better. But Kalanick reports that he was pressured to resign from this position not from Trump or his cabinet, but by those that felt it was an endorsement of Trump.

I think that we need more of the Valley close to Trump, not avoiding him. They might be the ones he ends up listening to.

<comment> norea-armozel Hard to change his mind when that mind is manipulated by Stephen Bannon. If Bannon leaves then I suspect he would fall more in line with a typical Republican President.

<comment><USER15> If you read anything besides the headlines, you'd realize he's more of a Democrat than a Republican. Most of the policies he supports are more traditional Democrat views, except for the anti-Muslim ones.

<comment><USER16> Oh my god. Please list the traditional Democratic views he holds, starting with abortion, health care, gun rights, separation of church and state, and undocumented immigrants. Please list the cabinet nominations he's made that would be typical for a Democrat. Please list the Supreme Court justices he's considered that would be typical for a Democrat. Please list the interactions with foreign leaders he's had that would be typical for a Democrat.

<comment><USER15> Very much pro-American workers, and anti-globalization. Rejection of TPP, increasing taxes on hedge funds by getting rid of carried interest, decreasing drug prices, full unequivocal support of LGBTQ,

If you were following the Republican nominations, the other Republicans were accusing him of being a Democrat.

<comment><USER17> _full unequivocal support of LGBTQ_

What has he done, or promised to do, other than lip service?

<comment><USER15> What has he done that goes against his lip service?

<comment><USER18> [http://abcnews.go.com/Politics/trump-executive-order- draft-c...](http://abcnews.go.com/Politics/trump-executive-order-draft- curtail-lgbt-rights/story?id=45209220)

> A draft of an executive order on "religious freedom" is circulating in the > Trump administration, outlining a possible weakening of protections designed > to shield LGBT individuals from discrimination, according to a copy of the > proposed order obtained by ABC News.

If that's true, then "A lot".

<comment><USER15> Educate yourself. Anyone can write a draft of an executive order. It's most probably not related to anyone in the White House. So there's nothing to that particular story. Stop scaring yourself over unnecessarily and wait for actual things to occur.

<comment><USER18> > Stop scaring yourself over unnecessarily and wait for actual things to > occur.

It's funny - people were saying that for all of 2016 and look how well that's turned out.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER19> It'd be neat if there were a website where you can put in any company you might do business with, and it'd give you a "Crooked President" rating, for how likely it is to be one which enriches the President in some way. Particularly by being a subsidiary or partly-owned etc. (Obviously there are limits to how accurate you can get when it comes to those Cayman island accounts and things.)

While it's no excuse for his complete lack of ethics, Trumps' refusal to divest and Congress' lack of action means it may be up to individuals to ensure they don't inadvertently encourage in government corruption...

<comment><USER20> Sort of exists, here: [https://grabyourwallet.org/](https://grabyourwallet.org/)

I believe the creator put this together during the campaign when his 'grab them by the p*' news broke. To be honest, I haven't really looked through it in much detail so unsure of it's accuracy, but it certainly seems like an extensive list!

In fact, Uber was taken off this list after this statement. So they are in fact keeping it up to date.

<comment><USER20> And Nordstrom's now too: [https://www.nytimes.com/2017/02/02/business/nordstrom- ivanka...](https://www.nytimes.com/2017/02/02/business/nordstrom-ivanka- trump.html)

</comment></comment></comment><comment><USER21> How does it help to drive out a smart person from Trump's sphere of influence? This man needs as much help as he can get.

<comment><USER22> Trump is a despicable person trying to do despicable things. Helping him to limp along marginally less disastrously would be a shallow, short-term palliative benefit.

Our long-term prospects are better if we stumble for 4 years and prove that flushing out competent but flawed public servants, who believe in and preserve the principles of our system, and replacing them with reality TV hosts is not an improvement.

This is an inflection point in history that will inform future generations whether winning an election with lying, demagoguery, and appeal to fear is a winning long-term strategy or a losing one.

<comment><USER23> So how is it better for Travis to quit now rather than in two or three years after he can credibly talk about specific things the council has been tasked with?

It seems that Travis was essentially shamed into virtue signaling by quitting.

<comment><USER22> The fact that you see the world in terms of people signalling virtue and not sincerely believing in virtue says more about you than it does about them.

<comment><USER24> This is a silly statement. It's almost impossible not to think he left his position on the advisory council due to the fantastic level of backlash his company has received over the last couple of weeks. To think he is doing anything except trying to stop the bleeding seems willfully ignorant.

</comment></comment></comment></comment></comment><comment><USER16> From those well-known commies at Bloomberg Businessweek, note the image half- way down:

[https://www.bloomberg.com/news/articles/2017-02-02/stability...](https://www.bloomberg.com/news/articles/2017-02-02/stability- is-good-for-business-trump-s-whims-threaten-it)

Business is figuring out that the Trump endgame isn't going to be good.

<comment><USER25> And yet the market is near an all time high. What gives?

<comment><USER26> What gives is that people are forgetting that the Dow 20K thing was already super close toward the end of Obama's term, and that the DJIA stood at 8279.63 on the day of Obama's first inauguration.

If you're riding what are basically daily fluctuations of the massive high achieved in your predecessor's term, it's hard to claim the market likes you.

<comment><USER27> The fact that markets haven't tanked suggests that investors aren't predicting major negative events in the future. That doesn't mean investors are correct, but I would think that if "[b]usiness is figuring out that the Trump endgame isn't going to be good" then it would likely be reflected here.

<comment><USER16> Maybe so. But there's also people's natural desire not to believe the worst will happen. I admit to being one of those people in 2007. Based on the last couple of weeks, I don't see good reason to believe that his (and Bannon's) recklessness will be brought under control.

</comment></comment></comment></comment></comment><comment><USER28> Like many here, I'm also disappointed about his decision to quit.

I've read some articles comparing Trump's style to some Latin American leaders, and I can see several things that look alike (populist style, protectionism, appealing to nationalism, etc). But what I've learned living under those kinds of governments, is that when they first get to power, they usually have advisors that avoid them from going too far to either side of the political spectrum.

But eventually, as some of the advisors with different points of view start to leave (usually because of internal struggles), the leader tends to take far more radical positions reflecting the view of the surviving group of advisors.

And this starts a spiral that ends up with the leader having an inner circle so radicalized, with a few powerful advisers and several obsequious servers, that won't accept any opposing view on almost any subject.

In Argentina, the last example of this was Cristina Kirchner, whose economic policies were similar to what Trump is suggesting (mainly protectionism, and that's why several of her former economic team praised Trump). When she first got to the presidency after her husband, she 'inherited' most of the advisors his husband had. But the leftist side won her ear, and as the most centered advisors started to resign, her policies started to be more and more reactionary and radicalized.

What I mean with this is that even when you don't agree with the one who is in charge now, just the fact that you are in a position to make him hear you, even if you frequently argue, probably sometimes not in the best of terms, at least it shows that there is going to be lots of resistance and that tends to moderate in some ways some policies that would otherwise be much much worse.

If you leave the inner circle, the only ones who are left are either the ones trying to radicalize the leader, of the ones who won't move a finger as long as they keep their share of power. And that inner circle becomes an eco- chamber, where eventually the leader really believes that what he is doing is great and can not comprehend why some people can't agree with what he proposes, basically living in a fantasy fed by the remaining advisors.

Again, this is what I've seen happening several times, not some wild speculation... and I hope this won't happen here. But every day I'm a little more pessimistic.

<comment><USER29> Trump isn't clay waiting to be molded; he has clear ideas on what he wants to do, he's been talking about them since mid-2015 and has been acting on them, extremely aggressively, since November. It's past time to believe that he means what he says.

In the last week:

* He acted to ban immigration by many Muslims

* He issued a statement on the Holocaust, and then defended it, using the language of Holocaust deniers.

* He said immigration would favor Christians.

How far does he have to go before you say, 'enough'?

<comment><USER28> He is not clay, of course, but his policies and ideas can be softened. But that won't happen if the people who can talk to him behind closed doors, where they can be truly honest about what they think, just leave!

If the ones who can tell him to his face that he is wrong with something quit, you can't expect this to get any better, and believe me when I tell you that it can get much much worse.

<comment><USER29> > He is not clay, of course, but his policies and ideas can be softened.

What makes you say this? I don't agree and I've seen no sign of it, from mid-2015 until now. Has anyone softened them?

There are two options:

A) Advise him: There's a tiny chance you'll affect his policies, but there's a certainty that you will empower him by giving him your credibility. On a selfish level, he will devour that credibility, because he can only discredit you in return.

B) Oppose him: Your advice and resources will help the opposition slow or stop Trump, and you will give them credibility (which will enhance your own credibility).

I strongly believe B will accomplish far more good than A.

<comment><USER28> I know it's counterfactual history... but what if his only advisers would have been fanatics? Seeing his rhetoric in the campaign, with a full radicalized Trump, I guess the ban would have been much larger, including many other countries (Saudi Arabia, UAE, Lebanon, etc).

And the same could be applied to other issues: e.g. exit NAFTA altogether overnight instead of renegotiating.

<comment><USER29> Is the argument really that 'it could be worse'? I guess that argument theoretically can be used anywhere, but then what does it mean? Arguably, it's never been worse.

My strong belief is that lack of opposition makes things much worse than lack of advice.

As a side note, one radical advisor people are forgetting about in this discussion is National Security Advisor Michael Flynn.

<comment><USER28> The argument is that giving up and leaving, is the best way to have a more radicalized group leading the country, and that will result in even worse policies.

You don't want to have a POTUS with majority control of the Congress and a friendly SCOTUS, to be fully radicalized. But that is what you'll get if their only advisers left are the ones wanting him to rule like that.

</comment></comment></comment></comment></comment></comment></comment><comment><USER30> Translation: "Uber CEO closes barn door after criticism following horse departure."

<comment><USER31> Personally I'd consider using uber again. If everyone hates uber and refuses to use them, then they aren't customers and uber has 0 incentive to listen to them.

If a bunch of people delete the uber app, and the CEO takes positive action, then I think we should reward good behavior and consider reinstalling it.

<comment><USER32> Could you clarify why you would consider? I started using Lyft after the taxi situation in NY (At the request of some immigrant friends) and have noticed absolutely no reason to switch back to Uber. The price is on par, the service is on par, the app in general is on par (In San Francisco, where I use ride- sharing around ~5-10 times a week). I guess I don't see a reason to switch back, which I'm hoping you can clarify?

<comment><USER10> I favor Uber because Uber is pushing the world forward. Uber regularly engages in civil disobedience and political actions (at significant cost to themselves) that are necessary to defeat the entrenched powers.

Lyft and the others are free-riding on Uber's work. They wait for Uber to fix the world then they try to make money in that new, better world.

<comment><USER33> I question whether it's genuinely possible for a corporation to engage in civil disobedience, even insofar as the government considers corporations to be the same as people in certain circumstances.

<comment><USER10> If you prefer, it's the humans behind Uber who are engaging in civil disobedience. I prefer to support these humans.

The corporate person is just a simpler way to speak about the same topic.

</comment></comment></comment></comment></comment></comment><comment><USER34> As an Uber employee and an immigrant I am very happy to see this. It's a good day.

</comment><comment><USER35> "Earlier today I spoke briefly with the President about the immigration executive order and its issues for our community. I also let him know that I would not be able to participate on his economic council. Joining the group was not meant to be an endorsement of the President or his agenda but unfortunately it has been misinterpreted to be exactly that.

I spent a lot of time thinking about this and mapping it to our values. There are a couple that are particularly relevant:

Inside Out - The implicit assumption that Uber (or I) was somehow endorsing the Administration's agenda has created a perception-reality gap between who people think we are, and who we actually are.

Just Change - We must believe that the actions we take ultimately move the ball forward. There are many ways we will continue to advocate for just change on immigration but staying on the council was going to get in the way of that. The executive order is hurting many people in communities all across America. Families are being separated, people are stranded overseas and there's a growing fear the U.S. is no longer a place that welcomes immigrants.

Immigration and openness to refugees is an important part of our country's success and quite honestly to Uber's. I am incredibly proud to work directly with people like Thuan and Emil, both of whom were refugees who came here to build a better life for themselves. I know it has been a tough week for many of you and your families, as well as many thousands of drivers whose stories are heartfelt and heart-wrenching.

Please know, your questions and stories on Tuesday, along with what I heard from drivers, have kept me resilient and reminded me of one of our most essential cultural values, Be Yourself. We will fight for the rights of immigrants in our communities so that each of us can be who we are with optimism and hope for the future."

</comment><comment><USER36> You can't bring about the change you want by disengaging from the system.

<comment><USER37> If I had my career to live over, this is the most commonly-repeated "advice" I'd ignore. In my experience, it's damn near impossible to bring about change while _remaining_ in a system, if that system is toxically dysfunctional to begin with.

<comment><USER38> "The Master's Tools Will Never Dismantle the Master's House." \-- Audre Lorde.

</comment></comment></comment><comment><USER39> Reminder: Uber is the utmost evil.

1\. It dismantles the very society by undermining the rule of law. What would remain of society if every business decided there are some regulations it could wilfully ignore and build a business based on this?

2\. It pushes subprime car mortgages on its drivers. Then the repayment comes out of their wages. Often these cars have remote inhibitors so if you didn't make enough, your car won't start next week. All this has a name: indebted servitude.

3\. It launched automated cars with known bugs that put cyclists in deadly danger. It even admitted doing this although not the "deadly" part.

These are all easy to verify to facts. I know I will be downvoted, I am always downvoted when I post this (although 3. is somewhat new), I do not know why I am downvoted -- but I will not stop. Edit: barely a minute after posting I am already downvoted but there's never an answer disputing the facts.

Edit: really? I need to repost this pile of links every bloody time?

1\. I do not have or need a source on this, ignoring taxi legislation is what Uber does, simply.

2\. 2014 article on subprime loans: [http://valleywag.gawker.com/uber-and-its- shady-partners-are-...](http://valleywag.gawker.com/uber-and-its-shady- partners-are-pushing-drivers-into-su-1649936785) 2016 article on subprime loans: [https://www.bloomberg.com/news/articles/2016-05-31/inside- ub...](https://www.bloomberg.com/news/articles/2016-05-31/inside-uber-s-auto- lease-machine-where-almost-anyone-can-get-a-car) A personal experience report: [https://twitter.com/shashashasha/status/688734478181732352](https://twitter.com/shashashasha/status/688734478181732352)

3\. Self driving shit: [https://www.theguardian.com/technology/2016/dec/19/uber- self...](https://www.theguardian.com/technology/2016/dec/19/uber-self-driving- cars-bike-lanes-safety-san-francisco) (and again it defies regulations!)

<comment><USER40> Maybe if you published your sources, instead of voicing unsustained claims, you'd be less downvoted.

<comment><USER39> Sure.

</comment></comment></comment><comment><USER41> If this garners much media interest (and I can't see how it won't), what are the chances that Trump takes it as a public rebuke and looks for revenge?

Yesterday, it was with Australian PM Turnbull whose crew had been publicly very supportive of Trump and especially on this immigration issue. Up came the 1,250 refugee deal that risked making Trump look like he lacked control, and he reacted pretty badly and very publicly. And that was with a long-time ally and ongoing supporter.

<comment><USER29> An article I wish I could find pointed out that Trump regularly acts against people who support him, often openly humiliating them. Turnbull isn't alone.

The theory was that Trump respects strength only and not political support. Remember the President of Mexico met with Trump during the campaign, yet with a Mexican delegation in DC Trump humiliated him over Twitter.

Note that Trump has very few political allies in DC.

</comment></comment><comment><USER42> I assume Travis saw his "Digg moment" coming from Lyft and this is purely damage control. I envision he said something like "Sorry Donald, our share is tanking, I can't stay visible with you, I have to leave the council, even if it costs me some insider information and state-driven business in the future", and then went off to write a memo with a spin to make Uber Look Great Again ;-)

</comment><comment><USER43> Right call. Though I understand that being on the council is not an endorsement, it does normalize Trump and set back the resistance movement.

<comment><USER29> > I understand that being on the council is not an endorsement

I disagree. He can say it's not an endorsement, but that's its effect. Kalanick is no fool or neophyte; he knows that if he is an advisor for Trump, he is saying that he and Trump have mutual respect and Trump takes his advice; if he says he'll talk to Trump, it implies that Trump is open to reasonable discussion on these issues.

</comment></comment><comment><USER29> A fantastic argument about whether to serve and try to mitigate, or to oppose Trump:

The Case Against Serving

[https://www.justsecurity.org/34404/case-serving- trump/](https://www.justsecurity.org/34404/case-serving-trump/)

It's a prominent government attorney and Georgetown professor advising others.

It's

</comment><comment><USER44> This is pretty astonishing considering the Uber exec's personality is not exactly held in highest esteem, that even he thought it was unpopular to be affiliated with Trump. I guess the power and potential wealth isn't enough to balance out the abuse. With Donald Trump's confrontational demeanor, he might push a lot of big egos away, and some that he would have to contend with.

</comment><comment><USER5> Based on Kalanack's very high-profile role in the tech community, the news item was certainly "of interest to hackers", per the HN guidelines. Seems inappropriate for it to have been flagged.

<comment><USER45> The 'no politics, please, we're techies' likely reflexively flag anything that contains the word 'Trump'. I wouldn't be surprised if there are bots active to do this, the speed with which some articles are flagged is eerie.

</comment></comment><comment><USER29> Does anyone know here the Business Advisory Council's homepage is? I looked around with no luck.

I'd like to know who else is on it. Elon Musk is one, but who else?

<comment><USER46> It's the awkwardly named "Strategic and Policy Forum". Names are included here: [https://greatagain.gov/president-elect-trump-announces- addit...](https://greatagain.gov/president-elect-trump-announces-additional- members-of-presidents-strategic-and-policy-forum-8aa8822eced9#.7da3gnd23)

As I understand it, the first meeting is today, and all but Kalanick (who dropped out) and Iger (who had a scheduling conflict or "had a scheduling conflict") will be attending (or "are attending" or "did attend" \- not sure exactly when it was scheduled).

</comment></comment><comment><USER47> Did he leave because of pressure from employees and customers or because he didn't want to or couldn't work with the Donald?

</comment><comment><USER48> Silicon Valley culture needs to recognize its tendency towards bullying people that are perceived to not fit the ideological mold, and fix it. Like now. Brendan Eich and Peter Thiel are two examples in recent memory. In addition to being ethically wrong, it's also bad for business in the long run. Trump isn't going away anytime soon, and part of his nationalist populist economic strategy to pick winners and losers. Silicon Valley may find itself as one of the losers.

<comment><USER49> This isn't about their ideology; it's about their actions. We should be putting pressure on anyone working with Trump regardless of ideology.

<comment><USER50> If everyone who cares what you think stops advising Trump, all his advice will come from people who don't care what you think. Why would you ever want that!?

<comment><USER49> All his advice already comes from people like that. If Trump were planning to swap out Bannon for Kalanick, what you're saying would make sense, but this is a relatively unimportant advisory council. It's not exactly Trump's inner circle.

</comment></comment></comment></comment><comment><USER51> .

<comment><USER9> I understand why people feel this way. But the premise of this concern is that the Trump administration could be meaningfully influenced by these clubs. In really no administration is this the case. Kalanick's real role on the "Business Advisory Council" is as an endorser of Trump and his policies. That's not just supposition: it's Kalanick's stated reason for leaving the "Council".

Further, there being no rational basis for the construction of an immigration ban that detains pre-schoolers at the border and denies visa- and green-card- holders access to their homes, we've already reached a point where the idea of rational inputs to Trump's policy process miss the point. Trump isn't looking to accomplish serious domestic policy objectives.

Finally, I don't think we need to spend too much time on the concern that leaving a "business advisory council" is going to deprive the leadership of multi-billion-dollar corporations of access to the policy-making process anyways. I'm pretty sure any CEO in the Fortune 500 can get any meeting they want regarding policymaking in the Trump (or Obama) administration.

Unless there's some demographic anomaly about Uber I haven't picked up on, Kalanick's employees _overwhelmingly_ oppose the Trump administration. I prefer to see this as a hopeful sign that no matter how outsized their compensation, tech's leadership remains beholden in at least some ways to its rank-and-file employees. Now it's time to find better ways to put that influence to use.

We can't spend 8 years complaining on this message board about how unfair options packages at big tech companies are and then shrink away when given the opportunity to use our market power to help people in real need.

<comment><USER52> I agree with this analysis.

Let's presume that Mr. Kalanick feels the way that I think most of us do, which is different from how Mr. Trump feels.

Staying on the council will give the appearance of endorsement. That's a negative for him (and Uber, probably). That could be counterbalanced by his ability to affect change. And if Mr. Trump had given him the impression that he could influence his behavior in any way, perhaps he would have accepted the negative in exchange for a chance at the positive. I simply doubt that Mr. Trump gave him any reason to think he would have any real influence. Therefore, quitting expeditiously is a rational move.

</comment></comment></comment><comment><USER53> there is not a shard of morality involved in this, he's quitting because it's hurting his business...

</comment><comment><USER54> Convenient timing - wasn't there supposed to be a meeting of CEOs and Trump tomorrow?

</comment><comment><USER55> Honestly this is a bit of a bummer.

Not because it's good or useful for Travis to be on the advisory board, but because I want to live in a world where Uber continues to correctly be branded across social media as a fascist-collaborating parasite that nobody wants to use

</comment><comment><USER56> Why does Elon Musk get a pass but not Uber's CEO?

<comment><USER57> Because Musk didn't draw attention to himself the way Kalanick did during the NYC cab driver strike. Also Kalanick tends toward the image of someone trying to do away with labor unions whereas Musk is seen as someone trying to save the planet.

</comment></comment><comment><USER58> I wonder why the techcrunch article just got flagged? (how do you even flag something here, do you need to have an account with a certain number of points?)

discussion was here: [https://news.ycombinator.com/item?id=13555124](https://news.ycombinator.com/item?id=13555124)

<comment><USER16> This post has more top-level comments criticizing the decision, so I guess it stays.

<comment><USER16> Comments from the previous thread moved here. Since I can't delete the above, consider it retracted, and thanks sctb.

</comment></comment></comment><comment><USER59> > have prevented flags from killing the thread

Which is why -- 20 minutes later -- it shows up on page 3 when pts vs time indicates it should be the #1 result?

I realize the number and voting on comments can affect this rating somewhat but should it drop the #1 result to #63+ so that it shows up around +8 submissions that are 3 times as old?

<comment><USER3> We've also dampened penalties that would have otherwise tanked the story, like flags and the overheated discussion detector.

We detached this comment from [https://news.ycombinator.com/item?id=13556391](https://news.ycombinator.com/item?id=13556391) and marked it off-topic.

</comment></comment><comment><USER29> Does the _[flagged]_ tag mean some individual flagged it, or that the moderators approved the flag?

Unless HN is changing its standards, and I wouldn't like to see that, then this shouldn't be flagged.

</comment><comment><USER60> They're both evil, but incompatible. Uber needs cheap illegals to keep driver costs down. That's not a good match to Trump's position.

<comment><USER61> > Uber needs cheap illegals to keep driver costs down.

Inflammatory phrasing aside, are you sure an 'illegal' could actually become an Uber driver? I suspect not - they are forced to work for cash-in-hand payment and don't have social security numbers. I don't see how Uber could enable that.

<comment><USER62> > they are forced to work for cash-in-hand payment and don't have social > security numbers

Seriously? Do you really think needing an SSN is a barrier to employment these days? Aside from the fact that I'm sure uber would take a ITIN, it is not at all unheard of for 'undocumented immigrants' to 'borrow' SSNs from unwitting citizens. In fact, many times this isn't even a problem for the legitimate holder of the SSN.

Plus, these days you don't need to have immigrated to the US legally at all to get a driver's license*

Now, that said I doubt very much that Uber relies on such employees - I just think saying it can't happen is ridiculous.

[1][http://www.dmv.org/ca-california/ab-60-drivers- license.php](http://www.dmv.org/ca-california/ab-60-drivers-license.php)

</comment></comment></comment><comment><USER10> I think this is a very bad development. Trump was previously exposed to a lot of intelligent people - Thiel, Kalanick, Musk, etc. In our quest for ideological purity, we are driving all the people who can provide Trump with good advice to stay away from him.

Trump is hardly an ideologue on this matter:

Trump: "When someone is going to Harvard, Yale, Princeton, Penn, Stanford, all the greats and then they graduate, we throw them out of the country, and they can't get back in, I think that's terrible, We have to be careful of that, Steve. You know, we have to keep our talented people in this country."

Bannon: "When two-thirds or three-quarters of the CEOs in Silicon Valley are from South Asia or from Asia, I think...A country is more than an economy. We're a civic society."

[http://www.huffingtonpost.com/entry/steve-bannon- disgusted-a...](http://www.huffingtonpost.com/entry/steve-bannon-disgusted- asian-ceos-silicon-valley_us_582c5d19e4b0e39c1fa71e48)

Guess what - now Trump has one fewer voice telling him to be inclusive. Bannon is still advising Trump to double down on nationalism.

Realistically, we can have two presidencies: the Bannon presidency or the Thiel presidency. The odds of a Bannon presidency just went up.

<comment><USER29> Trump has demonstrated, beyond any doubt, since 2015, that he will not listen to anyone who disagrees with him and is not interested in knowledge, expertise, or reason.

There always is a slim possibility of some tiny influence. This is the reasoning of people who have advised all sorts of monsters, including the many ministers who helped the Nazis and Soviets. It's also a convenient, seductive rationalization to avoid risking yourself and your career in a political war. Far beyond the tiny influence they lend him, they lend him their enormous credibility. People see him talking to people like Musk, Kalanick, etc, and think he has their respect, their advice, and their approval (at least enough to keep working with him). And they deny the opposition that same credibility.

Think of it this way: Would they work with a CEO who consistently and publicly (not in private) pushed the same hateful ideas as Trump? Not for long.

At some point, one must decide there is a war and pick a side. To stay home, to keep one's head down and play it safe while victims are suffering and dying, and while other people are standing up, taking those same risks and suffering themselves, is cowardice. (A harsh term, but I think it's applicable.)

If Trump's behavior over all this time doesn't convince someone there is a war and an enemy, I don't know what will. I can't imagine what could make it more clear. Evil people usually are far more subtle; look at Putin, for example.

<comment><USER10> Bannon disagreed with him (see the quotes above) yet he's listening to Bannon.

Consider the possibility that your caricatures of Trump being stupid and irrational might not be true - if they were, he probably wouldn't have won the election.

If you look at his cabinet picks, and the actions he's taken so far, there is pretty clear Thiel influence. The 2 for 1 rule on regulations is pretty clearly Thiel. So is Balaji Srinavasan and O'Neill for the FDA. In fact, much of the transition team is Thiel, as is much of the advisory council.

<comment><USER9> This is a facile argument. The "cut N regulations for every K new regulations" has been a Republican trope for decades; Romney used it in 2012. Virtually none of Trump's appointees are within 6 degrees of Thiel.

</comment></comment></comment></comment><comment><USER63> It appears that bullying does work. I mean "criticism". Trump is President for at least the next four years. This childish "us vs them" attitude is not healthy. Silicon Valley needs to have people advising Trump, regardless of their differences.

[Update]

I'll update here so I have one downvoted answer, not several.

1\. Bullying doesn't necessarily involve violence. The future of his company was threatened. Here's an example of Trump being called a bully for threatening to remove funding from Berkeley:

[https://www.buzzfeed.com/tasneemnashrulla/uc-berkeley- milo-p...](https://www.buzzfeed.com/tasneemnashrulla/uc-berkeley-milo- protests-aftermath?utm_term=.awr2KdrrNa)

<comment><USER64> > It appears that bullying does work

How is a boycott bullying? There is no violence here.

> childish "us vs them" attitude is not healthy

It's called nonviolent resistance and resisting normalization. It's very healthy: [https://www.washingtonpost.com/news/monkey- cage/wp/2016/11/2...](https://www.washingtonpost.com/news/monkey- cage/wp/2016/11/21/people-are-in-the-streets-protesting-donald-trump-but-when- does-protest-actually-work/)

> Trump is President for at least the next four years

Nope... impeachment... Lotsa work to do... No non-violent resistance that has mobilized more than 3.5% of the population has failed in the last 100-ish years. On Jan 21st 1-1.5% of the US population participated. [https://rationalinsurgent.com/2013/11/04/my-talk-at- tedxboul...](https://rationalinsurgent.com/2013/11/04/my-talk-at-tedxboulder- civil-resistance-and-the-3-5-rule/)

<comment><USER24> > Nope... impeachment... Lotsa work to do... No non-violent resistance that > has mobilized more than 3.5% of the population has failed in the last > 100-ish years. On Jan 21st 1-1.5% of the US population participated.

While there certainly was a large anti-Trump sentiment at the Woman's March, there were a plethora of issues that brought all those people together. To imply that all who participated want a Trump impeachment is not accurate.

<comment><USER64> > To imply that all who participated want a Trump impeachment is not accurate

Really? Were you at one? I can't speak for everywhere, but the 100k folks I marched with in Denver seemed pretty gung-ho on the idea. Most common theme on signs I saw was something to the effect of: "This cat has claws" (tried to clean it up a bit ;) )

Also, currently 40% of registered voters support impeaching Trump: [http://thehill.com/homenews/administration/317627-poll-4-in-...](http://thehill.com/homenews/administration/317627-poll-4-in-10-back- impeaching-trump)

Ultimately though that data is about what percentage you can mobilize and activate. Just answering a survey isn't enough.

<comment><USER24> > Really? Were you at one?

Yes, I was at the one in Oakland.

<comment><USER64> I'm surprised that was your impression then, but I certainly could be projecting my own biases.</comment></comment></comment></comment></comment></comment>


Is Multicore Hardware for General-Purpose Parallel Processing Broken? - <AUTHOR> http://cacm.acm.org/magazines/2014/4/173217-is-multicore-hardware-for-general-purpose-parallel-processing-broken/fulltext

<comment><AUTHOR> As a researcher involved in parallel processing and parallel computing, this article has really crystallised some of my thoughts about the field.

I sometimes hesitate to even call our current multi- and manycores parallel processors. The actual superscalar architecture is actually very parallel, you just have direct control over any of the parallel features baked into the silicon.

You have market forces limiting the exploration of vastly different architectures. Our multicore processors are the result of small incremental changes to the efficient sequential microprocessor design that is the von Neumann architecture. Even if a designer bakes a parallel processing feature, such as the 'micro-dataflow' out-of-order execution cores; this still needs to fit into the high-level processor architecture. In other words, the processor still needs to pretend it is a sequential one.</comment>


Is there logic behind France's rumored €1 Billion Google Tax? - <AUTHOR> http://www.rudebaguette.com/2014/02/05/logic-behind-frances-rumored-e1-billion-tax-google/ <comment><USER2> I had to kind of laugh at the seeming distress expressed in the article the Google merely passed on the taxes to the consumer, as in who do politicians and journalist think pay all taxes? Business taxes are merely an indirect means of taxation on the populace, it is done to fool the general population into believing someone else carries the load.

<comment><USER3> Can you elaborate? how google being taxed has an impact on my own income?

<comment><USER4> It's a bit of a stretch but it has some truth...

On one extreme, Google keeps it's prices static and it's customers don't change their buy resulting in the tax coming only out of Google's profit.

On the other extreme, Google raises it's prices exactly proportional to the tax, it's customers buy the same amount of ads and raise their prices exactly proportional to the increase and you pay them for service or good $x. Your income stays the same but it buys less because everything is more expensive.

The real result is in the middle, google eats some of the loss from tax, raises it's prices and customers somewhat lower their ad spend and somewhat raise their own prices eating some of the loss from tax. Which extreme any individual believes is more accurate has more to do with political bias than truth.

<comment><USER5> Then, of course, Google has shareholders which are none other than the public (either by direct ownership of stocks or through funds of various sorts). Whatever taxing Google can not offset by raising prices, is passed on to the shareholders in the form of reduced EPS.

</comment></comment></comment></comment><comment><USER6> _" For now, the tax is just a rumor, A rumor that is a symptom of a very real problem. And that problem is Taxation on Internet Companies. Expect this problem to be solved in the next 10 years."_

A very real problem indeed. But it's not a Google problem. It's a France/Hollande problem. France is in recession (agian or still).

French private sector contracts as Germany's grows Business activity in the eurozone's two largest economies is diverging sharply, with France's private sector contracting after two months of growth while in Germany it accelerated to a 10-month high, according to a survey. [http://www.ft.com/cms/s/0/87e4a572-5285-11e3-8586-00144feabd...](http://www.ft.com/cms/s/0/87e4a572-5285-11e3-8586-00144feabdc0.html)

French officials warn of social tinderbox as economy contracts again The latest data show a continued erosion of France's industrial base and export share. It risks shattering the credibility of President François Hollande, who has been talking up recovery for months. [http://www.telegraph.co.uk/finance/financialcrisis/10450889/...](http://www.telegraph.co.uk/finance/financialcrisis/10450889/French- officials-warn-of-social-tinderbox-as-economy-contracts-again.html)

<comment><USER7> Find another article to comment on with your fucking french bashing.

This article is about International Companies avoiding taxation in Europe, which is, believe it or not, a real problem in terms of finance and ethics.

They make money out of EU citizens and get out of it with 0% taxes when EU business have to pay between 15% and 35% of their benefits in tax.

<comment><USER6> Thank you for your kind words. Were you a waiter from Paris by any change? I read the article is about _France's_ rumored €1 Billion Google Tax. Not a European Tax...

<comment><USER7> I thought this article was more about the fact that "some" non EU companies are making huge loads of money and evade tax.

I'm not a fan of this french government but I have to admit that it's not an heretic idea to say that a company should be taxed on its revenue.

Sorry for the tone but I'm so used to the comparison with Germany by people who seem to forget that the Euro is tailored for countries with an strong export oriented economy, like Germany.

Euro is more the core problem than France/Hollande or the fake North vs South Europe fight.

<comment><USER6> No worries. I agree with you this one-size-fits-all euro is hurting our country's abilities to rule over our own fate. We no longer control our own money… Be it French Francs or Dutch Gilders. This, combined with no representation makes for a lousy combination.

</comment></comment></comment></comment></comment><comment><USER8> The problem for Google which might cost them 1 Billion is that they say that all sales to french customers are done in Ireland but in the same time Google has 100+ employees in france whith title like "sales manager" who talks about theirs "clients" in internal emails.

<comment><AUTHOR> I don't think that is true.

<comment><USER8> This is what this article [http://www.bfmtv.com/economie/enquete-google- france-sorganis...](http://www.bfmtv.com/economie/enquete-google-france- sorganise-echapper-fisc-703022.html) ( in french ) explain.

Realising this was a mistake everything was renamed in 2011, apparently.

</comment></comment></comment><comment><USER9> The article is not replete on details on how this supposed tax would work. Personally, I'm in favour of taxing Internet companies, but I believe tackling such a complex issue affecting many countries on a national level is a mistake.

Disclaimer: I'm French too.

<comment><USER10> _Personally, I 'm in favour of taxing Internet companies_

Why?

EDIT: I was just curious to hear more.

<comment><USER9> Why shouldn't they pay their fair share? Normal companies who make profits get taxed. Giant companies funnel their profits through Holland and Ireland, and pay a paltry amount.

Back in the days, the nobility had also exempted itself from taxes. I see no reason for this state of affairs to continue.

<comment><USER11> So the solution is for .nl and .ie to close their loopholes, not create new taxes, no?

They recently passed a similar tax in Italy, and the whole thing was about how the big bad American companies are making money and not investing in Italy. This, at the same time Fiat is decamping from Italy because the business climate is so shitty. So what's their creative answer to improve things? Another tax!

<comment><USER12> _So the solution is for .nl and .ie to close their loopholes, not create new taxes, no?_

.ie _is_ the loophole, most of the time.

<comment><USER11> I think it'd be fair if companies like Google that have their corporate EU base in Ireland were taxed in the EU at Ireland's corporate tax rate, in full. It's low, but higher than what they effectively pay.

<comment><USER13> To be fair, they do pay their tax in Ireland. It just seems that there isn't a whole lot of profit earned due to 'admin-charges'

[http://www.theguardian.com/business/ireland-business-blog- wi...](http://www.theguardian.com/business/ireland-business-blog-with-lisa- ocarroll/2011/mar/24/google-ireland-tax-reasons-bermuda)

Disclaimer: I am Irish

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> The article is kinda poor, but the subject is interesting. Once again technology is way ahead of the justice estates all over the world (for good or bad).

Google and Apple (among others) are renown in Europe for paying virtually no taxation[1]. And while once upon a time no one really cared, now it's hard to swallow for voters being crashed by the financial crisis, so either this will change or some political figures might lose additional points in the next elections.

I'm not angry with Google. I'm angry with our corrupted politicians who've done nothing to fix this, all over Europe, not just in France and not just for Google.

Since we have the technology to tackle the issue at hand, everything else sound like an excuse.

[1] [http://www.dailymail.co.uk/news/article-2549379/Fresh- questi...](http://www.dailymail.co.uk/news/article-2549379/Fresh-questions- raised-Googles-tax-avoidance-tech-giant-announces-profits-3-4-billion.html)

</comment><comment><USER15> Maybe this kind of taxation could be a way of coping with NSA surveillance of European citizens? (That's just a provocative sentence, so please keep on reading.) Currently, Europe is at data disadvantage comparing with USA, and this disadvantage is used by USA not only for security reasons, but also to protect interests of USA. (That's what Snowden claims himself.) In such case, shouldn't Europe also protect its interests? I think the only two ways out are:

1\. Imposing taxation on foreign Internet giants in Europe. Needless to say, that would lead to divisions of the Internet, which we all want to avoid.

2\. There should be an international act signed between Europe and USA providing Internet companies certain degree of independence from national- level surveillance, which would protect privacy of citizens of each country involved in the act to the same extent.

<comment><USER16> Most of these US companies are huge tax avoiders. They use very trick to avoid paying ANY taxes. For some reasons these companies have tricked the countries to be able to. About time they get taxed at all.

</comment></comment><comment><USER17> The answer is "no". Disclaimer: I'm French.

<comment><USER18> The fact that you are french does not make your opinion meaningfull without any explanation on why you disagree with this tax. Please, explain us why or do not leave this kind of comments.

<comment><USER19> Another French there, but with hopefully more insight on the why.

If France alone stands up for this one, it's meaningless because they'll find a loop (or carry on with the Double Irish and Dutch sandwich) and we'll just look like communist heaven (hyperbole) while not reaping anything.

We need to do it at the EU level, with a law which overrules local business taxations settings if the company is owned by a non EU entity.

Of course, the only way to push for it is to have champion country doing the dirty work, so I guess we're stuck with that.</comment></comment></comment>


Ask HN: What do you want to avoid or minimize in your next job? - <AUTHOR> <comment><AUTHOR> In a week or so, I'll take all the answers here and summarize them as a comment on this post.

Disclosure: I have a startup that matches tech talent with opportunities, but I'm NOT a recruiter and it's NOT a recruiting or contracting business.

</comment><comment><AUTHOR> Lengthy, pointless meetings</comment>


Should the DAO Hire Professional Consultants? - <AUTHOR> https://www.cryptocoinsnews.com/dao-hire-professional-consultants/ <comment><AUTHOR> This thing is so conceptually new, just thought to ask what people here, in the start-up, VC world, think it can best move forward.</comment>


Ask HN: White label analytics? - <AUTHOR>

Does anyone have an suggestions for web analytics SaaS companies that do white label reporting (so you can include stats as part of your own control panel with your own branding)? I'm looking people focused analytics such as KissMetrics or Mixpanel (with their newer features). I know that the (rather good) Clicky (getclicky.com) does white label but they're more page view based which isn't what I need right now. <comment><USER2> I believe you can do that using Google Analytics API. Take a look at <https://developers.google.com/analytics/devguides/reporting/>

</comment><comment><USER3> You can white label clicky...haven't used them personally. <http://getclicky.com/whitelabel/></comment>


Scrum Master Wants to Do Home Visits - <AUTHOR> Thoughts on this insanity?<p>https://www.reddit.com/r/cscareerquestions/comments/g4viz4/scrum_master_wants_to_visit_each_member_of_the/ <comment><USER2> Just...wow...</comment>


Graphviz in the browser - <AUTHOR> http://mdaines.github.io/viz.js/ <comment><USER2> My Graphviz in browser with embedable alien URL.

[https://graphviz.gomix.me/](https://graphviz.gomix.me/)

Source: [https://gomix.com/#!/project/graphviz](https://gomix.com/#!/project/graphviz)

Sample graph in SVG:

[https://graphviz.gomix.me/graphviz?layout=dot&format=svg&mod...](https://graphviz.gomix.me/graphviz?layout=dot&format=svg&mode=download&graph=%23%20http%3A%2F%2Fwww.graphviz.org%2Fcontent%2Fcluster%0A%0Adigraph%20G%20%7B%0A%0A%09subgraph%20cluster_0%20%7B%0A%09%09style%3Dfilled%3B%0A%09%09color%3Dlightgrey%3B%0A%09%09node%20%5Bstyle%3Dfilled%2Ccolor%3Dwhite%5D%3B%0A%09%09a0%20-%3E%20a1%20-%3E%20a2%20-%3E%20a3%3B%0A%09%09label%20%3D%20%22process%20%231%22%3B%0A%09%7D%0A%0A%09subgraph%20cluster_1%20%7B%0A%09%09node%20%5Bstyle%3Dfilled%5D%3B%0A%09%09b0%20-%3E%20b1%20-%3E%20b2%20-%3E%20b3%3B%0A%09%09label%20%3D%20%22process%20%232%22%3B%0A%09%09color%3Dblue%0A%09%7D%0A%09start%20-%3E%20a0%3B%0A%09start%20-%3E%20b0%3B%0A%09a1%20-%3E%20b3%3B%0A%09b2%20-%3E%20a3%3B%0A%09a3%20-%3E%20a0%3B%0A%09a3%20-%3E%20end%3B%0A%09b3%20-%3E%20end%3B%0A%0A%09start%20%5Bshape%3DMdiamond%5D%3B%0A%09end%20%5Bshape%3DMsquare%5D%3B%0A%7D%0A)

<comment><USER3> Technically, that's GraphViz as a service, as it's actually executing on the server.

This is executing clientside (for better or worse; yours is much faster :) )

</comment></comment><comment><USER4> Nice to see Graphviz trending.

I created [http://agile.pics](http://agile.pics) a couple years ago based on the .js graphviz library.

The site is a thin wrapper that renders Graphviz of Sequence Diagrams from GitHub gists.

Example: [http://www.agile.pics/gist/163647fe40ae4911e469](http://www.agile.pics/gist/163647fe40ae4911e469)

<comment><USER5> > Nice to see Graphviz trending

agree completely; GraphViz is extraordinary.

for intance, Yifan hu (U Florida faculty, i think) maintains a spectacular gallery of very large graphs comprised of millions of nodes, all rendered using GraphViz (persisted and input to GraphViz as incidence matrices): [http://yifanhu.net/GALLERY/GRAPHS/index2.html](http://yifanhu.net/GALLERY/GRAPHS/index2.html)

The graphs in the gallery i liked to above were rendered using sfdp, one of the 5-6 layout engines in GraphViz, and which is the GraphViz engine of choice for very large _undirected_ graphs not limited to a particular layout geometry

</comment></comment><comment><USER6> This is a beautiful thing. D3 can do a lot but very few programs have replicated what graphviz's dot can do.

<comment><USER7> I still think dot could be reimplemented in d3. I agree dot is very expressive but it's starting to feel like TeX where it works great until you need to mix it into more recent applications.

<comment><USER8> dagre.js uses DOT. [https://github.com/cpettitt/dagre-d3](https://github.com/cpettitt/dagre-d3)

<comment><USER9> it uses the dot language, but not graphviz's dot layout engine

</comment></comment></comment></comment><comment><USER10> Phabricator had allowed for specifying dot notation in their markdown (remarkup) which would use graphviz to render the images in the comment. I loved this feature but it was removed due to potential exploits [0]. Is anyone familiar with how graphiviz-as-a-service could be possible while addressing these concerns?

[0] [https://hackerone.com/reports/88395](https://hackerone.com/reports/88395), [https://secure.phabricator.com/T9408](https://secure.phabricator.com/T9408)

<comment><USER11> As both a heavy phabricator user AND a graphviz lover, your comment got me quite excited....up until the part where it was removed :(

<comment><USER10> If you look through the task description on the phabricator task I linked, there is Paste file which has the contents of an extension to allow continued use of graphviz, however they state it's insecure and not supported.

</comment></comment></comment><comment><USER12> This is very cool. I love graphs, they're really expressive.

P.S. if you're interested, just the other day I posted a related experiment of mine on Show HN ... [https://news.ycombinator.com/item?id=13308150](https://news.ycombinator.com/item?id=13308150)

<comment><USER13> This may be a tangent, but I feel like pointing out that I, for one, have recently become more aware of the fact that a graph is really just a binary relation.

This is not discussed much in all the talk about social networks. It's always the graph (the "one") that's foregrounded, rather than the multiplicity of edges, each a relation.

I know this is mathematically an obvious thing, but surely the relational perspective is more amenable to generalization. We should make more of it.

<comment><USER12> If you're thinking of weighted, directed graphs, a binary relation doesn't quite fully represent it. In the weighted directed case, a graph is a function from _Nodes_ × _Nodes_ → _Weights_ , (where _Weights_ ⊆ ℤ or _Weights_ ⊆ ℝ or something like that)...

Which makes weighted graphs perfect for representation by _matrices_!

Studying adjacency matrix of weighted, directed graphs gave me a profound realization matrices are a table of relationships between their "dimensions". I never looked at matrices the same way again. I realized that the identity column was literally the entries that represented a relationship between a dimension/node and itself. I went down many rabbit holes... particularly the question of graph isomorphism. That problem is a rabbit hole. Another rabbit hole is the Hamiltonian cycle problem.

P.S. check out hypergraphs, which are not necessarily binary relations and generalize graphs. Incidentally, hypergraphs have an _adjacency tensor_. I've started to understand that tensors are like 'tables' of relationships between dimensions + dimensions representing some or all of their possible combinations.

By the way, if you can figure out a way to do fast multiplication of matrices over degree-truncated polynomial rings, I'll show you a fast way to count the number of hamiltonian cycles in a graph. These problems are intricately linked.

<comment><USER13> Sometimes the matrix, like for example the adjacency matrix for Wikipedia internal links, will be very sparse. Another reason to use relations rather than an inefficient, mostly empty implicit data structure.

That Wikipedia adjacency matrix would be interesting to visualize, though. There are tools out there for visualizing sparse matrices as graphs:

[http://yifanhu.net/GALLERY/GRAPHS/](http://yifanhu.net/GALLERY/GRAPHS/)

<comment><USER14> I've never seen a visualization of a graph at the scale of Wikipedia that conveys anything useful in the visualization. You just get a big hairball.

<comment><USER15> The best you can usually do is clustering, but at that point you can just as well render clusters as single nodes and significantly lessen the strain on the visualization or the layout. I'm always astonished when customers ask about visualizing graphs with tens of thousands to millions of nodes. Thy usually have never thought about the UX implications of that (let alone the time needed to calculate a layout which results in an image so large that each node is smaller than a pixel anyway).

<comment><USER16> This is a very good point. In the early days of Graphviz we put a lot of effort into making very readable diagrams of fairly small graphs, mainly in drawing directed graphs (dot). We aimed at graphs with under a hundred objects. We agree with the viewpoint that it is better to apply some sort of analysis to reduce a larger graph to a smaller one that can be read and understood. People still want to draw much larger networks. In fact it is valid to want an overview of all the data, it's just not clear how to do this with many thousands of random connections. Graphviz sfdp (based on Yifan Hu's earlier work) and recent work on Maxent (which has a decent theoretical justification) and from Ulrik Brandes group are good examples. One reason graphviz neato does not make such great layouts of large graphs out of the box is that it is straight statistical multidimensional scaling, and we just drop shapes on top of the points, so they can overlap badly. We felt since people are relying on it for data visualization we did not want to post process the MDS layouts by default in a way that could be misleading. But you can turn on overlap removal (neato or sfdp -Goverlap=false). We really should document all this in one place that is easier to find and understand.

About the external shape loader issue - this code is somewhat centralized in graphviz/lib/gvc/gvusershape.c and in gvrender.c which calls it, and I thought it could be disabled at compile time (because we did address the security concerns at one point) and there's a lot of other machinery to control compile time features. Maybe John Ellson can comment here. Kudos to John for recognizing the problems with the shape loader as soon as I proposed it but apparently that didn't stop us at the time. Stephen North

</comment></comment></comment></comment></comment></comment></comment><comment><USER17> I see plenty of libraries and tools for displaying a graph that has been defined in text code. Is there a really easy tool for generating graphs with a gui, easily and intuitively, and converting that into text? The solutions I've found don't make the node and edge creation easy enough.

<comment><USER18> I like using yEd[0] for quickly drawing workflow graphs. It exports as GraphML, but you'll have to convert it to dot yourself.

[0]: [https://www.yworks.com/products/yed](https://www.yworks.com/products/yed)

</comment></comment><comment><USER19> Seems much like this: [http://cpettitt.github.io/project/dagre-d3/latest/demo/inter...](http://cpettitt.github.io/project/dagre-d3/latest/demo/interactive- demo.html) what are the differences?

<comment><USER20> So far it seems like dagre-d3 is the best option for those that want directed graphs to be automatically redrawn (with transitions) based off of user input. I'm continually looking for better options, though.

<comment><USER21> viz.js is Graphviz recompiled to javascript with Emscripten. Dagre is the dot algorithm implemented in JS. I found dagre to work really well in most cases but Graphviz beats dagre in some edge cases (e.g. not order dependent, better with hierarchies, ...).

</comment></comment></comment><comment><USER22> Nice work!

I needed to use something to render directed graph in the browser and the biggest problem was the download size.

This library is 851KB gzip, which is way better than the 1.3MB I was using.

Maybe being able to bundle the engines (and output format) as separate modules could reduce its size?

So once again, great work!

<comment><USER23> Mermaid.js can render directed graphs in the browser, and the minimised JS and CSS are ~620 KB.

[https://github.com/knsv/mermaid/tree/master/dist](https://github.com/knsv/mermaid/tree/master/dist)

e.g. live online editor:

[http://knsv.github.io/mermaid/live_editor/#/edit/Z3JhcGggVEQ...](http://knsv.github.io/mermaid/live_editor/#/edit/Z3JhcGggVEQKICAgIEJbImZhOmZhLXR3aXR0ZXIgZm9yIHBlYWNlIl0KICAgIEItLT5DW2ZhOmZhLWJhbiBmb3JiaWRkZW5dCiAgICBCLS0-RChmYTpmYS1zcGlubmVyKTsKICAgIEItLT5FKEEgZmE6ZmEtY2FtZXJhLXJldHJvIHBlcmhhcHM_KTs)

<comment><USER24> Related HN Post: [https://news.ycombinator.com/item?id=13326065](https://news.ycombinator.com/item?id=13326065)

</comment></comment></comment><comment><USER25> I've been using [http://www.webgraphviz.com/](http://www.webgraphviz.com/)

</comment><comment><USER26> The hairball problem sometimes has solutions. this is a filtering soltuion which works with all general layout methods: [http://visone.info/wiki/index.php/Backbone_Layout](http://visone.info/wiki/index.php/Backbone_Layout)

It also scales for large graphs

</comment><comment><USER27> Graphviz is great. I did a project in undergrad that used [https://github.com/jrfonseca/xdot.py](https://github.com/jrfonseca/xdot.py) to render data structures into a nice, pretty, visible form.

<comment><USER28> I use graphviz, [https://github.com/anaynayak/aws-security- viz](https://github.com/anaynayak/aws-security-viz), and xdot.py somewhat regularly to mechanically generate pretty graphs of things like connectivity between EC2 security groups.

It's wonderful and I love being able to use my $EDITOR / awk / sed / etc to manipulate the results.

<comment><USER29> There is also "vimdot" in the graphviz distribution.

Its really just a hack where graphviz uses inotify() to watch for changes in a file being edited by vim.

</comment></comment></comment><comment><USER30> I actually had no idea that graphviz was actually a graph description _language_ until I clicked on that link. I had used it before, but as a ruby gem, so I thought it was just a library. So thanks!

<comment><USER23> DOT is the language, and there are other tools which can work with it as well as Graphviz (e.g. Omnigraffle) - [https://en.wikipedia.org/wiki/DOT_(graph_description_languag...](https://en.wikipedia.org/wiki/DOT_\(graph_description_language\))

</comment></comment><comment><USER31> Does a dot->gis conversion exist? Would anyone aside from me want such a thing?

I'd like to render complex graphs with Mapnik, as I do for OSM (which is just a graph after all).

<comment><USER15> Since you'd need the graph layouted already anyway, I'm wondering what Mapnik would bring. Nice label placement along paths is about the only thing I can think of right now. Or tiled rendering maybe, but there should be easier ways for that, too.

<comment><USER31> Tiled rendering is what I'm most interested in, but I'm not aware of any easier way to go about it. The alternative would be to code something from scratch... But my graphs look so much like the road network I'm inclined to leverage what's out there already.

I'd be very grateful for suggestions.

</comment></comment></comment><comment><USER32> I could never use this to make a callgraph in a project. Probably because I have two many lines. How does a .dot file looks for you?

<comment><USER29> Doxygen ( [http://www.stack.nl/~dimitri/doxygen](http://www.stack.nl/~dimitri/doxygen) ) automatically creates callgraphs from sources code using graphviz.

A good intro is at: [https://romanegloo.wordpress.com/2012/03/29/generating-a- cal...](https://romanegloo.wordpress.com/2012/03/29/generating-a-callgraph-by- using-doxygen-and-graphviz-13/)

<comment><USER32> Unfortunately not supporting my language.

</comment></comment></comment><comment><USER33> So this is a JS client that calls a C file that calls graphviz libraries? And it renders the output SVG? Very cool.

<comment><USER34> I think it's all compiled into JavaScript with Emscripten.

</comment></comment><comment><USER35> Support for this would be very useful in a Jupyter notebook.

<comment><USER36> Wouldn't Jupyter do most of the heavy lifting on the server side so it would be more fitting to render with graphviz there?

<comment><USER37> Definitely. Jupyter makes it very easy to display SVG, which graphviz (naturally) targets out of the box - as an example, I've used this before in a project to display Python ASTs ( [https://github.com/hchasestevens/show_ast](https://github.com/hchasestevens/show_ast) ).

</comment></comment></comment><comment><USER38> There is also Graphiz compiled to JS which works: [https://github.com/mdaines/viz.js](https://github.com/mdaines/viz.js)

<comment><USER39> This is the same project.

</comment></comment><comment><USER40> Those layouts besides dot are truly horrible.

<comment><USER15> They all emphasize different things and thus are usually useful for different graphs. dot has a hierarchical layout, circo arranges nodes on circles, neato uses force-directed layout, etc. Of course they're not going to be all useful for the same graph. When preparing our own layout styles demo [1] we took care in crafting a graph for each layout and also explaining a bit on which layouts are good for which use case. There isn't really a magic layout algorithm that works on every graph to make it clearer. We have something built into our graph editor that analyses the graph and picks a layout that might be suitable, but that still errs often enough since it can't know about labels or what the graph actually represents.

[1] [http://live.yworks.com/yfiles-for- html/2.0/layout/layoutstyl...](http://live.yworks.com/yfiles-for- html/2.0/layout/layoutstyles/index.html)</comment></comment>