Press leaks during Google's all-hands meeting enrage insiders - <AUTHOR> https://www.businessinsider.com/google-insiders-press-leaks-at-meeting-backfired-gave-sergey-brin-moral-high-ground-china-2018-8 <comment><USER2> I've managed to write 15 pages on a topic this aligns with over the last few weeks. The thesis is that Feudalism never went away, it just transitioned from kingdoms to corporations.

Putting ramparts and a moat around your primogeniture home owner's association lost to the advantages afforded by consolidation of production and trade. The traditions, structures and expressions of human nature have changed very little.

I'm sure this is probably some high octane confirmation bias, but this story just sings to me about what I've been writing about.

The landed members in this council meeting are outraged that one of their own is ignoring the duties of their vassalage. Is anything sacred when peasants who aren't even in your kingdom can listen in on your chancellors, stewards and spymasters? To the landed of the realm, this is a legitimate affront to the value of your titles! That's casus belli if I ever heard of it. I wonder how many employees are trying to rainbow table the journalist.

<comment><USER3> If you reveal sensitive information to someone in confidence, and they betray your trust, of course you're going to feel betrayed. And of course you're going to hold back on other sensitive information in the future.

Most Googlers realize this as well, which is why they too are upset with the leakers. It shuts off any visibility that they would have otherwise. Visibility that can be used productively to alter company policy, like was done with the defense contract.

Ultimately, preserving the confidentiality of sensitive discussions, is part of the social contract that benefits the employees themselves in the long term. Going on an anti-corporate diatribe and tearing up this social contract isn't doing anyone any good.

<comment><USER2> You're accusing me of engaging in diatribe? Audacious!

Google has 88,000 employees. I don't know what their definition is for "All Hands", but it's probably a lot of people. I think there's a saying about this. 88,000 people can keep a secret if 87,999 are dead?

I know you're hardly the first, but I laughed when you called them "Googlers" instead of Google Employees. I can't wait until Google calls up its levy of Googlers to arms and they hit the campaign with retinues holding bright blue- red-orange-blue-green-red standards. I believe the feeling of betrayal is real but it's still funny.

I assert this is more about loyalty to your liege/realm/company than a practical thing to be upset about. The people doing the cursing on a hot mic seem to have built their identity around the company they work for. I get how that could happen but it's still peculiar to me, I firmly believe that no matter how many times they say it, the company you work for is NOT your family, unless it's a family owned business and they are.

It just occurred to me that you might think I'm being anti-corporate because of the comparisons to feudalism. Maybe you felt an instinctually negative reaction when you read the word. I'm much more dispassionate myself. Taking the emotion out of the words allow you to see that the systems have enormous similarity with merely different vocabulary, like angular vs. react, except feudalism isn't as dystopian as angular (Ha Ha, google joke). Peasant::Non Managerial Employees, Youtube:Google:Alphabet::Duchy:Kingdom:Empire. It's there, you just have to look!

</comment></comment></comment><comment><USER4> Seattle has an open-meetings law, where the City Council cannot conduct any substantive meetings that are closed to the public. Sounds like a good idea, right?

The reality is, the meetings have devolved into events where the councilors engage mostly in political grandstanding for the press, and each faction shows up with with their activist signs, chanting, and yelling.

<comment><USER5> Anyone who starts to study how deliberative democracy works, discovers this quickly.

Transparency and publicity in deliberative democracy does not mean that everything is just public and open discussion, because it just don't work.

Most areas should be maximally public, like results of meetings, meeting agendas, who is attending, decisions and laws of course with very rare exceptions (personal privacy, ongoing criminal investigations, ...).

But sometimes the meetings themselves should not be public to enable honest discussion and ideas. Just make sure that every party involved has a representation. Chatham House rule is often good choice when full privacy is not needed (you can talk about what was said, but not about who said what).

<comment><USER6> Remove the cameras and only allow electors to attend. It's the tools and outsiders that cause this to occur, there are many thousands of cities around the country that have peaceful productive council meetings.

</comment></comment></comment><comment><USER4> > The person or people who shared the information with The Times gave Pichai > and Brin an excuse to stop discussing anything substantive about China at > the meeting

Of course. Just like any press release would be run through the lawyers before going out the door. Can't have a frank discussion with an Omarosa in the room.

I wouldn't be surprised if the next such meeting requires all phones to be left outside the door.

</comment><comment><USER7> If it is true that, following the display of the subject tweets, "all the momentum and sympathy swung in the direction of management," then the so- called leaks are actually of benefit to Google.

 _" Where I come from, that means you're about to steal a mirror."_

<comment><AUTHOR> That's an excellent point: they get a lot of potential benefits

1\. A business reason to not divulge sensitive details about any projects in future meetings.

2\. Employee support for 1.

3\. Actually being able to keep employees in the dark about this Google Search in China endeavor.

Now, the questions that present themselves are:

1\. Was the leak planned to have that effect?

2\. Was the leak planned and/or executed by one or more members of Google's management team?

<comment><USER8> And thus qanon was born.

Let's not rush too quickly into conspiracy theories and false flags.

<comment><USER9> "Who stands to benefit from this?" is the easiest way to determine _any_ leak's source.

<comment><USER10> Assuming all actors are rational, which they often are not.

<comment><USER11> Rational _and_ have perfect knowledge of consequences.

</comment></comment></comment></comment></comment></comment><comment><USER12> Loyalty to a super powerful organization whose only goal is more power and whose loyalty to you only extends as far as they can make money using you is a fool's game. The person who feels like inciting mob hate towards someone who is telling truth to power is the same person found in all of the worst movements of destruction across the world and throughout history.

<comment><USER13> While you might not owe the company loyalty, one can imagine being scornful towards those who might get rid of the openness within the company because it makes it harder to collectively oppose actions the company is taking (or talking about taking).

<comment><USER14> The Damore thing was basically leak of an internal conversation that was considered justified. Maybe the leaker thought the convention was arbitrary anyway.

</comment></comment></comment><comment><USER4> "Many people inside and outside the company consider government censorship to be a human-rights violation."

It's right there in the US Constitution Bill of Rights.

<comment><USER15> Maybe we should parse this slightly differently -- what do these people think of corporation-operated censorship that is designed to exactly please a generally oppressive government?

In 1964 America, some types of rights-violating discrimination that (as generally understood due to the victory of the Union in the Civil War) the government ought not to engage in, were suddenly also banned from the sphere of corporate activity. [1] I wasn't born at the time, but I understand that there were many US locales where the discrimination forbidden to government had been retained, and remained widespread, via delegation to businesses.

Are we headed to a similar battle around online free speech? I personally don't want Western businesses to help implement censorship in any country, whether express or local, whether administrative or corporate.

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

<comment><USER4> I certainly am concerned about media giants censoring material under the guise of eliminating "hate speech", "fake news", "russian propaganda", or anything they imagine I am too tender to be trusted to view. That sort of thing has gone on throughout history (such as people who translated the Bible into English got burned at the stake), never with good results.

</comment></comment></comment><comment><USER16> I'm curious why Google is okay with doing more business in China, but they have moral issues doing business with the US Department of Defense?

</comment><comment><USER17> Government censorship is bad, but YouTube censorship is just fine. Many hypocrites.

<comment><USER18> If I censor something on a site I own... is that the same as government doing it?

<comment><USER19> Ever hear of privately owned public spaces? At what point does a medium of communication with wide enough adoption (perhaps to the point of being a de facto monopoly) merit consideration for the same regulations as apply to those?

</comment></comment></comment><comment><USER20> Most of these people only know about the Dragonfly project because of previous leaks. I would agree that there are productive leaks, and unproductive leaks, but getting mad at leakers/the press in a general sense is shortsighted.

</comment><comment><USER21> Hold on, did someone say 'fuck you' to the face of Sundar Pichai in the all hands meeting?

<comment><USER22> They addressed the "fuck you" to the anonymous leaker.

<comment><USER21> Who did? I didn't get the context.

</comment></comment></comment><comment><USER23> It's of course totally beyond imagining that execs would plan such a leak to avoid further disclosure and sway favor to their side. Especially when they just lost to employee organizing on Project Maven and their entrance into the Chinese market is on the line...</comment>


Whatsapp chat history shown on another account on the same device - <AUTHOR> https://gist.github.com/icy/a97b8f3aa8086476df14763bba527934 <comment><USER2> this requires physical access so its not really an issue

<comment><AUTHOR> Yes it is. I could donate the phone to my friend or someone without notice. An account's histories should be only read by their owner, at least by the whatsapp design.

I guess there should be a bug somewhere...</comment></comment>


Library for parsing human written dates - <AUTHOR> https://github.com/KoffeinFlummi/Chronyk

<comment><USER2> Tcl's built-in "clock scan" command offers the same function. Even does stardates.</comment>


Experiment that ended in 1767 still linked to higher incomes, education levels - <AUTHOR> https://www.washingtonpost.com/business/2018/11/09/years-after-jesuits-were-expelled-towns-near-their-missions-still-have-higher-education-incomes/?noredirect=on <comment><USER2> I'm from that region in Argentina, my state is called Misiones (Misions) because is the area where those where concentrated, the missing piece is that it was heavily populated by European migrants in 3 waves: beginning of 19 century, post WWI and post WWII; the same happened on the Paraguay and Brazil neighboring areas, this lead to a rapid development of the whole region, which continues today. Now, sadly, most of that development didn't include the guarani tribes that today still live in poverty. The only aspect that seems to remain in guarani culture from those times is music, playing guitar & violin, everything else, construction, writing, etc, is gone, this includes religion.

<comment><USER3> Hi from Buenos Aires! The population of the zone has a mixed ancestry. There are a lot of small details that still survive, like the mate. Also, there are a lot of small details in the language of the zone, the pronunciation is slightly different (or very different, it's difficult to understand some of the people), there are many loaned words and expressions.

I'm not sure about the religion, but my family is from Jujuy (the part of Argentina near Bolivia) and most of the people there is officially Catholic but there is a lot of mix with the prehispanic religions, so I guess that in Misiones there is a lot of mix of with the guarani religion. (Actually, the official Catholic religion has a lot of loaned parts from the previous European religions.)

</comment></comment><comment><USER4> > Valencia didn't just rule out other possible explanations. He also > established a few reasons that areas near the missions have tended to > succeed at higher rates, even today.

It's known that these areas had four immigration phases, from 1820 to 1960. The monarchy (then the government) began to stimulate the arrival of Europeans because of the vast land and good climate. The monarchy even used agressive propaganda and megalomanic promises. Our recent elected president came from one of those european immigration waves, from Italian Veneto region in 1888.

There's a huge italian and german presence in this southern region (as well as in Argentina and neighbors), and also great natural resources that allowed agriculture and family farming to those european experienced farmers. This southern region today produces most of Brazil's grains, oilseeds (and exports).

So in a way, knowledge, higher incomes and education levels were imported. Brazil is full of curious phenomena, and it deserves more sociological study, being a young country.

<comment><USER5> Thanks, this seems pretty damning for the study.

Any significant post-1767 immigration (and especially from some of the most developed parts of the world) would easily produce bigger effects than this claimed persistence from the Jesuits.

How much do we know about the spatial distribution of such people, and their descendants? I mean not just southern Brazil, but it would be nice to see if there are clumps... especially if one was centred on where the missions were. Perhaps just filtering census data for German surnames would work? I bet this would correlate with literacy.

<comment><USER4> I agree with you. We have a more stong Guaraní presence in Bolivia and Paraguay today, about 280 thousand people living in four countries from a study in 2017 [1], which 85 thousand living in Brazil, which is neglegible comparing to the population numbers in that regions.

The reality is that those communities are very poor, having even cases of institutionalized racism, where children were separated from their parents at their Guaraní and Kaiowá communities by the brazilian state and sent to child safety services, atrocious. [2]

[1] [https://mobilizacaonacionalindigena.wordpress.com/2017/04/27...](https://mobilizacaonacionalindigena.wordpress.com/2017/04/27/280-mil- guarani-vivem-em-quatro-paises-diz-pesquisa-que-sera-apresentada-hoje-no-atl/)

[2] [https://cimi.org.br/2018/03/racismo-institucional- justifican...](https://cimi.org.br/2018/03/racismo-institucional-justificando- pobreza-estado-retira-criancas-de-suas-familias-guarani-e-kaiowa/)

<comment><USER5> Are you saying that a majority, possibly a huge majority, of the people arrived after 1767? Or rather, that a huge majority now are the descendants of people who arrived then?

Then perhaps I should ask the reverse question, about which districts still have much Guaraní and Kaiowá presence -- is there perhaps a map? If things are as bad for them as you say (which I can fully believe, sadly) then all you would need is for them not to be perfectly uniformly distributed, to produce what this paper sees.

The paper's hypothesis then seems increasingly crazy. Did the Jesuits do something magical to the soil, so that the subsequent inhabitants of that area would be more literate?

</comment></comment></comment></comment><comment><USER6> I would be interested in a similar study done in central Virginia. My county here closed the public schools for five years in the 60s in order to avoid integrating, and after they reopened most kids who'd been out never went back. Many are still alive today and still live here.

But more importantly, so do their grandkids. And anecdotally, there is still a _strong_ bias against the usefulness of school (leading to lack of attendance, and dropping out) among kids descended from the lost generation, that isn't present even just a few miles away in the next counties over.

I don't think this has been quantitatively studied, but if the data backs up the anecdotal impression, it would essentially bolster the argument reported in the OP.

<comment><USER7> > But more importantly, so do their grandkids. And anecdotally, there is still > a strong bias against the usefulness of school (leading to lack of > attendance, and dropping out) among kids descended from the lost generation, > that isn't present even just a few miles away in the next counties over.

I live in a rural area in a Southern state. My school never closed down to avoid integration, as far as I'm aware at least, but there is still a strong bias against education by those whose parents dropped out. Some have overcome that and see the importance of education, but I have many students who don't, because their parents are doing alright (though I bet things are worse than the students are aware of), so they can do the same thing too with only a high school education, or by dropping out altogether. They don't understand how different it is, but I, too, would love to see it quantified.

</comment></comment><comment><USER8> I work in the education sphere, and this is not too surprising: one of the most significant factors in students completing more optional advanced education programs are familial and peer expectations, which are then instilled in that student to in turn pass on to their own children later in life. Students from families where they are the first generation to go to college, for example, generally have lower average outcomes. Although some of the variance in those outcomes are due to lower average socioeconomic status rather than familial expectations.

<comment><USER9> As a child of parents who either didn't go to college, or were the first in the entire extended family and didn't graduate: This rings true.

I was always encouraged to go to school. It's important they said. You need it to get a good job.

BUT! The teachers are stupid. Don't trust them too much. They dont know everything. If they were really _that_ good, they'd be doing it, not teaching. Always question what they tell you, verify things on your own. If something doesn't make sense, speak up and get them to explain. You'll soon see how shallow their knowledge really is.

And don't worry. You're never gonna need any of this in real life. Grades are important! Get good grades. But also don't worry coz nobody is gonna care as soon as you're out of school.

Mixed signals right?

I never graduated and I like to think I got everything I needed out of college except a piece of paper.

PS: In high school I was everyone's worst nightmare. When I was engaged, I'd ask a lot of questions and derail the instruction. When I thought your subject was stupid, I'd just not participate, avoid any and all homework, and get straight Fs.

The straight Fs in particular had to have been frustrating to teachers because I'd then learn enough of their entire year's worth of curriculum in 2 weeks to get a D and pass the class.

PPS: My mum eventually did go to college when I was in college. She graduated before me. Still says it's useless IRL.

<comment><USER7> > BUT! The teachers are stupid. Don't trust them too much. They dont know > everything. If they were really that good, they'd be doing it, not teaching. > Always question what they tell you, verify things on your own. If something > doesn't make sense, speak up and get them to explain. You'll soon see how > shallow their knowledge really is.

I _loathe_ this attitude. I'm a teacher, and I decided to teach because I (thought that I) enjoy teaching, not because I couldn't be doing something else. This is true for several of the teachers I know. I know some who passed up on being doctors, or lawyers or other professions to become teachers because they _enjoyed_ it, and liked doing it more.

Yes, some are stupid, but you're painting with broad strokes and, honestly, it's not easy to see why we have a cult of anti-intellectualism in America because of how common this attitude is. A lot of them have thorough knowledge to explain something, but the student doesn't yet have all the requisite knowledge to understand...Like when someone asks me why, when we study perpendicular lines in Algebra, it has a negative reciprocal slope. They don't know trig identities; they're not at a level to understand the various proofs behind it. So when I tell them not to worry about it, that doesn't mean my knowledge is "shallow".

<comment><USER10> "I'm a teacher, and I decided to teach because I (thought that I) enjoy teaching, not because I couldn't be doing something else.... I know some who passed up on being doctors, or lawyers..."

It would be nice if doctors became doctors just for the joy of helping people, not all the money and social status. Teachers work with difficult kids and put in the time to make the world a better place with zero pay [if you factor out cost of living].

<comment><USER7> Most that I know of are fine with the pay (I mean, of course we would all _like_ it to be higher!) because they know they're making a difference, like you said. What always gets me is people like GGP who basically claims that teachers must be stupid, or else they'd be doing something more lucrative. _That_ attitude upsets me, as many teachers actually want to help, and passed up on more lucrative and easier jobs.

</comment></comment></comment></comment></comment><comment><USER11> I would be ashamed to publish the graph with the "trend", the fit is so incredibly bad.

<comment><USER12> Question: if I analyze 100 junk datasets and come up with 1 which has a statistically significant relationship (especially following some horrid-fit trendline like this) isn't there going to be some name for this?

After 100 datasets you're virtually necessarily going to come across these misleading conclusions, no?

<comment><USER13> It's called multiple testing. You're not guaranteed to get a misleading result, but it would be expected. The definition of the 5% significance level used in p-value testing is that given 100 junk datasets (distributed similarly), you would only expect 5 to show as strong an effect.

However, I don't really see what this study has to do with multiple testing. As far as I can tell, they had one dataset, and they tested that, and they got a significant result. Nothing fishy there. Sure the data is noisy, but wouldn't you expect that given how coarse the data is, and how many confounding factors there must be?

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

<comment><USER14> Publication bias is a sort of multiple testing at the meta level: different groups of scientists try out different hypotheses — but only one each — and some of them just barely pass the statistical tests and thus get published.

Not saying that happened here! I haven't even read the paper. But it is a valid concern when mining data for patterns, especially when those patterns have a questionable theoretical basis.

<comment><USER13> Oh absolutely!

I totally understand you're not saying that's what's happening here, but just to clarify for other readers, I'd say in this case there are a few reasons we don't need quite that level of suspicion:

1\. There is a seemingly-sound theoretical basis for the observation (moreover, there doesn't seem to have been any element of fishing. Sometimes researchers think fishing is OK if they just do it once to avoid multiple testing. But then you certainly have multiple testing at the meta level).

2\. This study agrees with at least one other completely independent, reputable study [1] (even different methodologies, apparently) that supported the underlying theory.

I do think the problem of multiple testing at the meta level is vastly underrated by the scientific community. Just, in this case, I think there are reasons to reject that hypothesis.

[1] [https://scholar.princeton.edu/sites/default/files/lwantche/f...](https://scholar.princeton.edu/sites/default/files/lwantche/files/beninwkn- qje-final.pdf)

</comment></comment></comment></comment></comment><comment><USER15> It's interesting that the root cause is attributed to education and not living near a mission. That is live near a mission and end up 10% more educated. Be 10% more educated and earn 10% more.

If A leads to B, and B to C, isn't A ultimately the cause of C?

<comment><USER16> > If A leads to B, and B to C, isn't A ultimately the cause of C?

Only if the mappings hold for every element, ie every A has to lead to B and every B has to lead to C before you can conclude that A causes B

<comment><USER17> Not really, causation doesn't have to be 100%.

Example: Getting shot causes holes in your lungs. Holes in your lungs cause you to die. Therefore, getting shot causes you to die.

All the above, including the inference in the last sentence, are valid statements, even though they don't hold true in 100% of cases.

Answer to grandparent's question is: Yes, if A->B->C, then A->C. Just make sure those casuative arrows actually exist before you make this deduction.

<comment><USER18> No, and your example is perfect. Getting shot can end up NOT leading to B (and then not leading to C). Get shot in the leg and live. No B means you can't assume C.

<comment><USER17> You're right.

But in natural language, statements about causation don't have to be 100 percent guaranteed to be valid.

Otherwise there's very little you could really say about the world.

Consider: "smoking causes cancer." According to you, this would be false.

</comment></comment></comment></comment></comment><comment><USER19> The Jesuits brought more than education, they brought the standards with which they're being currently evaluated. I imagine that, at the time, people actively self-selected and self-deselected based on how interested they were in advancing in and trading with white culture, moving toward it and moving away from it. By the time that the Jesuits left, the area was filled with people whose ambitions were connected with white people. Those values have been passed down to some tiny extent long after the Jesuits have gone, bringing the locals slightly out of baseline.

In 1767, people who were educated by the Jesuits would be considered to have infinitely higher education levels by this study (as opposed to a baseline of zero), and people who participated in commerce with the Jesuits and the Spanish would be considered to have infinitely higher incomes than the people who didn't (who would be considered to have an income of zero.) I bet you might find out that they are slightly more Catholic, and slightly more into Spanish TV and films.

</comment><comment><USER20> Site is down for me at moment, mirror at: [http://archive.is/W3G60](http://archive.is/W3G60)

</comment><comment><USER21> The article is at [https://sci- hub.tw/https://doi.org/10.1093/qje/qjy024](https://sci- hub.tw/https://doi.org/10.1093/qje/qjy024) for what it's worth.

</comment><comment><USER22> One potential confounder that the paper does not appear to address is the possibility that members of those missions fathered children with the native population, who(se descendants) stayed in place even after the mission left. Do we have any estimate, genetic or otherwise, how prevalent this was?

</comment><comment><USER23> Fascinating. I wonder if the reverse could be found. That is areas where educated "elites" were decimated and education level plummeted.

</comment><comment><USER24> Normality test and normplot of residuals? Durbin-Watson test and residuals vs order plot? Residuals vs fit test? Bartlett's test?

</comment><comment><USER25> I don't get the gist. But my interpretation would be that missions supported literacy to read the bible. Once you were able to read this capability could naturally be applied to other domains (instead reading just the bible) as well?

<comment><USER26> According to the article, the Jesuits taught local people "blacksmithing, arithmetic and embroidery." The missions seem to have been more about vocational training than about literacy, although I'm sure they tried to teach the Bible as well.

<comment><USER27> Religion is one of the many topics Jesuits teach. To be ordained a Jesuit father one must hold two university diplomas: one in theology, and one in another discipline.

I went to a Jesuit high school, and some of the teachers were priests. My religion teacher (who also gave math classes, but not to me) was an electrical engineer whose master thesis pertained to ring token networks. He also ended up doing jail time after sexually assaulting his nephew, but that's another story...

</comment></comment></comment><comment><USER28> Just because Excel gave you a trendline doesn't mean you should go with it. Their choice of graph detracts from their argument.

They do address confounding variables a bit but it isn't especially thorough.

<comment><USER29> Have you looked at the statistics? Do you think you can glance at a graph and have better insight than someone that has carefully studied the underlying data, including run a regression over it? Do you realise that the trend line slope has a t-stat of 4.36? Did you notice that all lines contained within the 95% confidence interval for the trend are negatively sloped?

</comment></comment><comment><USER30> The study is still incomplete until you figure out whether the belief in God and specifically the bible are actually what helped retain the knowledge and work ethic over multiple generations and how it compares to atheist/muslim/[other religion] communities. Instead we get a bold claim that education itself is enough to help people when maybe the bible or religious belief in general was a primary ingredient in that help.

<comment><USER31> My protestant mother explained me once something that went like this: there is a protestant ethic that says God reward his believers with success in life so protestants would then work hard or try to be successful as a way to seek confirmation from the community that they are good standing believers.

I don't know much about protestant ethic but that sounded plausible to me.

<comment><USER32> Jesuits are Catholics.

</comment></comment></comment><comment><USER33> A better title would be "Economic Development and Investment has Lasting Influence". (Brought to you by Obvious Publishing, Inc.)

Isn't that what civilization is all about?

<comment><USER33> Wow, someone didn't like my comment!

So I'll try again...

What the article is discussing is an effect of civilization. Humans invest in things to create lasting effects.

Perhaps the best documentation on this theory is Porter's Diamond [0], which helps explain things like Silicon Valley for tech, HOUSTON for Oil & Gas, or car builders in Northern Italy.

If we didn't see these effects, then there would be no way to advance civilization. Put another way, there have to be lasting effects a good part of the time, or we'd still live back in the Stone Age. My frustration is that the author seems to think this is amazing place, despite the fact that it can be found all over the world. Another example would be London for finance, and Switzerland for banking.

[0] [https://www.investopedia.com/terms/p/porter- diamond.asp](https://www.investopedia.com/terms/p/porter-diamond.asp)

</comment></comment><comment><USER34> 10 years of additional education for 10% more income? How is that worth it?

<comment><USER35> _people living near the ruins of Jesuit missions complete 10 to 15 percent more years of education and earn 10 percent more_

Are you making a joke that I don't get, or did you skip over the first occurrence of "percent"?

<comment><USER34> Didn't see percent. Thanks.

</comment></comment></comment><comment><USER36> I know the article isn't attempting to portray the Jesuits as good actors, but from a basic human context, the indigenous Guarani didn't care about being Western-educated or earning high incomes or need these things before their subjugation by the Spaniards. Their original way of life was destroyed and they were forced to comply with the Jesuits or any other conquest-seeking organization.

This is like one society(A) conquering a perfectly functioning desert dwelling culture(B) that was previously unconcerned with A and teaching B how to swim the butterfly stroke because being a good butterfly swimmer leads to prosperity in society A's socioeconomic system. This now valuable training was passed on through the generations of B and today they are good swimmers and more prosperous in the new society then those who historically didn't get the lesson. And we look at this correlation to say that investments in swimming is a good thing and pat ourselves on the back. Ok.

<comment><USER37> I know you are getting down voted but I think there is a valid point to be taken into consideration here. It seems like the evaluation of how these groups of people are doing today is being see through the lens of our own biased ideals of what "better" is. Sometimes I wonder about some of the indigenousness peoples that have been effectively wiped out around the world what if we had a "prime directive" and let them develop on their own? Could they have founded a civilization that perhaps is "better" in other ways. Maybe one that lives more harmoniously with the environment rather than cooking the planet? Just something to think about.

<comment><USER38> > through the lens of our own biased ideals of what "better" is

I agree that thinking about ideas like that is important, but I have to point out that it's not like the entire planet was conquered by a single culture, only large parts of it were conquered by the European powers. Civilizations were founded in many different places, and the rare existing cultures who eschewed trade and weren't conquered haven't developed in a long time. There _is_ actually a question as to whether they live a generally more fulfilling life than we do, but that wouldn't be because they developed a better way, instead it's that they didn't develop at all.

<comment><USER37> Yes, I see both sides of the argument, but it is intriguing to think about, say for example if the Inca empire had continued to develop? I was reading about their system of communication that involved the Quipu which used a series of knots on strands of twine. Runners would carry them between cities, sort of a human pony express but the medium was knots on twine. What if that technology had continued to evolve replacing the knots eventually with more sophisticated coding methods and so on. The Quipunet :) Just fun sometimes to ponder.</comment></comment></comment></comment>


Start-up founders: you should look forward to tough times - <AUTHOR> https://medium.com/@collinmathilde/startup-founders-embrace-the-hardship-dc55c8c047f0

<comment><USER2> All true. My old manager laments the day when everyone on his team, independently, came to his office to tell him things had to get better or they would leave. It never rains but it pours.</comment>


You have a better chance of achieving the American dream in Canada than America - <AUTHOR> https://www.vox.com/2019/8/15/20801907/raj-chetty-ezra-klein-social-mobility-opportunity <comment><USER2> Steve Sailer has explained that Chetty's mobility numbers tend to be higher for mostly white areas, because the incomes of low-income whites and blacks tend to revert to the white and black means. Given this pattern, it is not surprising that there is more mobility in Canada than the U.S., since a smaller fraction of Canadians are black.</comment>


Skype 5 for Mac, but without the whitespace - <AUTHOR> http://pongsocket.com/experiments/skype5mini <comment><USER2> A "before" image would be helpful.</comment>


Opt out your Wi-Fi network from Google's location services with an SSID tweak - <AUTHOR> https://www.androidpolice.com/2020/02/28/opt-out-wi-fi-from-google-location-services/ <comment><USER2> > If you're adamant about protecting your privacy, this will prevent your Wi- > Fi network and its location from being saved to Google and Microsoft servers

It does not prevent that. It's an indicator that asks these companies nicely to not save the data - there is no prevention mechanism.

<comment><USER3> Right. Apple doesn't respect it and has given no indication it ever will.

</comment></comment><comment><USER4> So, how long until Apple joins in and requires "_dontmapme" as the suffix?

<comment><USER5> _dontmapmebro

</comment></comment><comment><USER6> This is Do Not Track for WiFi

</comment><comment><USER7> TL;DR:

> Just add "_nomap" to your network's name to opt out from Google's service.

> Microsoft requires you to include "_optout" somewhere in your SSID.

> So you'd need to create an ID such as "1234_optout_nomap" to reject both > services.

––––

Ugh, this seems really annoying, because SSIDs are limited to 32 chars, and you give up 13 just opting out of these services

<comment><USER8> Right. Why can't Microsoft just respect _nomap as well as _optout? It's clear what the user's intent is. Also, according to the article, Google requires _nomap to be at the end. Apparently Microsoft doesn't require the same for _optout, but what if they did?

</comment></comment><comment><USER9> _nomap works also for Mozilla's location tracking thing.

</comment><comment><USER10> > which the company maps via crowdsourcing and Street View cars

So, if I hide my SSID then they wouldn't be able to find it?

<comment><USER11> Hiding an SSID is just a feature to not show it to the user. The device already know of its existence.

</comment></comment><comment><USER11> Opt-out is kinda pointless in "crowded" places. They just take the other 10 wifi near you.</comment>


Anonymous resumes OpCartel against Los Zetas - <AUTHOR> http://idealab.talkingpointsmemo.com/2011/11/anonymous-operation-cartel-is-back-on.php

<comment><USER2> Previous discussion (before the reinstatement of the operation): <http://news.ycombinator.com/item?id=3184517>

Most of the pro/con arguments are in there.</comment>


Pinned Pull Requests on GitHub - <AUTHOR> http://blog.zacharyvoase.com/2012/05/21/pull-requests/

<comment><USER2> This is a metaphor bug in the UX. In git's original terminology a "pull request" (a request from a subsystem maintainer to pull new stuff -- usually from a branch named something like 3.5-staging-for-linus or whatever) is different from a "patch set" (a single submission of code from anyone, often via email with "PATCH n/m" subjects).

Github treats them essentially the same, which is just wrong. It's the patch set that is the unit of code review. It's just plain never correct to review a "branch", you review specific suggested changes in isolation. The idea of pulling branches is to merge already-reviewed code from different trees.

</comment><comment><USER3> This isn't really "pinning" a pull request. The problem is not that "GitHub Pull Requests are dynamic".

Any branch name is just an alias for the latest commit in that branch. For example master is just an alias for the latest commit in master so you can reference that commit without the SHA1 hash. When I submit a pull request for foo/master then push new commits for foo/master, I just changed what master points to so my pull request changes. By using the commit hash you avoid the commit alias problem because new commits won't change what a commit hash references.

In fact, virtually anywhere you use a branch name in git or github you can also use a commit hash.

<comment><AUTHOR> Sure, but I'm a git luser—and I'm sure I'm in the same boat as a lot of people in thinking of 'branches' as a named branch of code in the graph, not as a kind of floating pointer to a commit.

I never presented this as a _problem_. But clearly the nature of GitHub's pull request UI is sufficiently misleading (or the documentation sufficiently incomplete) to wrongly convince some smart people that pull requests can always change while you're reviewing them, and that there's nothing you can do about that. In this case, that misunderstanding caused them to ignore the entire feature. I just wanted to point out a neat trick that (probably) not many others had spotted before.

Now, in actual fact I would personally choose to use standard branch-based pull requests anyway, because you get to rebase your branch while work progresses on master. But then again I've never worked on an open-source project with so many interested parties, contributors or even regular committers.

<comment><USER3> Thanks for sharing. I didn't realize you can do that with Github before reading your post.

</comment></comment></comment><comment><USER4> If I recall correctly, it is possible to modify a pull-request by deleting the "active" commit of the pull request on github and adding something else, i.e. if I do something like rebase -i and then a push -f (which I can, because, after all, it is my own repository I am pushing to.)

<comment><USER5> The point of this article was that you can use a SHA1 in the pull-request dialog. Because no-one can change a SHA1, it's pinned to that specific commit.

</comment></comment><comment><USER6> Why wouldn't they just comment on the pull request to set a history point and review from there? This allows changes while still being able to see what may have changed and why. Honestly I can't see how slinging patches by email works better.

</comment><comment><USER7> Any chance you have a post sharing your prompt string? It looks quite useful.

<comment><USER8> looks like a slightly modified version of the steeef theme from ohmyzsh

<https://github.com/robbyrussell/oh-my-zsh/wiki/themes>

<comment><AUTHOR> It was heavily inspired by Steve Losh: <http://stevelosh.com/blog/2010/02/my- extravagant-zsh-prompt/>

But of course modified to suit my needs.

</comment></comment></comment><comment><USER9> I only found out that feature by accident, I agree that its a great way to ensure the code you're talking about is immutable in a pull request.</comment>


Walmart is ending its Express concept and closing 269 stores - <AUTHOR> https://www.washingtonpost.com/news/business/wp/2016/01/15/walmart-is-ending-its-express-concept-and-closing-269-stores/ <comment><USER2> And Walmart plans to open 405 stores globally in the coming year. 95 percent of the closed U.S. stores are within 10 miles of another Walmart store. They're just consolidating smaller stores into bigger ones. They experimented with express stores 5 years ago, found it didn't work as well as hoped, so they canned them. These decisions make strong business sense.

The article makes it seem like it is doom and gloom for the company but they are doing just fine.

<comment><USER3> Thanks for the 95% closing stat being stores that are close together. My wife and I live in a small town in the mountains of Central Arizona and we have a Walmart store in the closest big town (60K population) that is just a 20 minute drive. We both like and rely on that store. There are no other Walmart stores within about 60 miles of that one, so hopefully it is safe. This store is a major employer in the area. It would be a bummer if those already marginalized workers lost their jobs.

<comment><USER4> "Just" a 20 min drive.

That statmeent is the reason every bricks & mortar European retailer has failed in the US. Very interesting.

<comment><USER5> I live in Vancouver BC. To my knowledge, we don't have a Walmart within the city, the nearest location to downtown being in North Van, a suburb located across the Burrard Inlet and certainly more than 20 mins by car from downtown. 20 minutes ain't too bad.

</comment></comment></comment></comment><comment><USER6> This is the opposite of the trend in the UK. Reverting from the big stores and opening shit tons of sainsburys local, tesco express and metro, little waitrose etc

<comment><USER7> As a non-UK individual that visits occasionally, I would say that is because they are really useful stores: good selection at good prices in a very convenient location. I've never seen anything remotely equivalent in Canada or the US. In North America, the smaller stores either have nothing I want to buy, high prices, or most often, both. Further, it is rare to find the equivalent convenience of a high street shop.

<comment><USER8> I live in Chicago and frequently shop at one of the Walmart Expresses that's closing on Sunday. Obviously it doesn't have the selection of a suburban supermarket many times its size, but I've never had a problem buying normal things there. And with the possible exception of Aldi, it has the best prices in the city.

I'm sure it has something to do with being in a big city.

<comment><USER9> Aldi owns Trader Joe's, where I shop frequently. I LOVE shopping somewhere with only 4 or 5 aisles; so much more convenient than our local Safeway with 15 or 20 aisles that takes ages to walk back and forth as you keep remembering where items are. I can't imagine shopping regularly at a full-size WalMart.

<comment><USER10> >Aldi owns Trader Joe's

Not quite. They're owned by different branches of the same family.

[http://www.slate.com/blogs/browbeat/2013/12/02/aldi_grocery_...](http://www.slate.com/blogs/browbeat/2013/12/02/aldi_grocery_store_best_in_america_related_to_trader_joe_s.html)

</comment></comment></comment></comment></comment><comment><USER9> I was shocked to learn (on the news this morning) that 2 WalMart stores in the Bay Area are closing (Oakland and San Jose (Monterey Highway)). I don't know there were ANY until a week or two ago when I did a Google Maps search.

My hatred of them goes back to my youth and early online activism from when WalMart was pushing out local mom and pop record stores in small towns and replacing them with their shitty censored versions of music. (WalMart insisted that labels manufacture and sell censored copies just so they could push their twisted morals on America).

Needless to say, nothing they have done in the past twenty years has made them any more deserving of my dollars. I've never bought anything there and never will. Fortunately we live in an area of the country where it's easier to avoid them than it is to shop there, even if you wanted to.

<comment><USER11> _WalMart was pushing out local mom and pop record stores in small towns and replacing them with their shitty censored versions of music._

How would Walmart put these stores out of business? Or do you mean consumers did by shopping at Walmart instead?

<comment><USER12> They had a playbook for crushing both small local retailers and regional chains.

A big part of it was selling stuff at a loss and getting around zoning rules by dropping stores in outlying areas outside of towns, extracting tax concessions in the process. As the GP mentioned, they were selective in stocking of books, CDs and other media. Lots of Jesus stuff and "family friendly" fare, which kept the local ministers and conservatives happy.

They also used their distribution as a weapon -- their market power let them cut national deals with big vendors like P&G and actually make them rent space on WalMart trucks.

Walmart would expand by building multiple stores in a region, surrounding denser communities. Doing that and exploiting those national accounts let them flood the region with goods, and kill the regional distributors that traditional discount stores and local stores depended on.

Once the competition is dead, prices float back up. We're all stuck with a shitty shopping experience and high prices. Now they use their dominant position to extract direct and indirect government subsidy on top of everything else. The company may be a triumph of some version of capitalism, but they are a cancer on society.

<comment><USER11> Do you have any evidence to backup your claims?

Are they "crushing both small local retailers and regional chains" or just competing with them? Would it have been better had they not competed?

And yes, Walmart drove hard bargains with their suppliers. Why not? They were offering those suppliers a ton of business. If the suppliers didn't like the deal, they didn't have to take it.

I just disagree that Walmart is a bad thing at all. Like I said, nobody is forced to shop there. If customers didn't like it, they could continue to shop at their mom-and-pop stores, but the important thing to note is _they didn 't_.

<comment><USER12> You live in a place where that's true. Many places have Walmart, gas stations or a 60 mile drive to a bigger city.

Since the outcome of WalMart's success is duopoly between Target and WalMart, I would say that no, we're not better off.

This was a huge topic in the 90s, I'd suggest that you look at the many published descriptions of their business practices.

</comment></comment></comment></comment></comment><comment><USER13> here's a non-paywalled story: [http://www.investopedia.com/articles/investing/011516/walmar...](http://www.investopedia.com/articles/investing/011516/walmart- closes-269-stores.asp)

</comment><comment><USER14> I think this is a good move for them.

I don't see any of these express locations in NYC, but there is an "express" type Target relatively close to me in Brooklyn, and it's abysmal.

It doesn't really do anything for them. I saw that Target logo over by Barclays Center and thought, "Oh thank god! A real store where I can buy a variety of things and consolidate shopping trips. And it's on my way home from the work commute. Great!"

Nope. It's not any better than a RiteAid or some mom and pop dollar store or "grocery" shop.

When I found out that there was another Target even closer to me, I almost didn't bother going. I'm glad I did because it was a genuine (from my perspective as a Texan) Target store.

If Wal-Mart had these express stores in my area, I wouldn't bother. If I can't find what I need in your store anyway, I'd rather deal with a local and have the relationship with the business owner where I can at least say, "Hey, I shop here all the time. I am really frustrated that I can't find X. Would you consider placing an order for it if I promise to buy X of them every month?"

That works.

Good luck doing that at a Wal-Mart or a Target.

As much as I absolutely despise shopping in Brooklyn, I appreciate the locals. They really will help you out if you make it a point to develop a relationship with them.

And I'm not talking about the hipster-run artisanal crowd. I'm talking about the immigrants who bust ass and deal with hate speech and accusations of terrorism every time something goes down.

I hate the fact that they are good businessmen and stock only the junk food and cheap crap that people buy. It makes my life more difficult. But they are responding correctly to their market.

The difference between these guys and the shitty Target store at Barclays is that I can build a relationship with them. The goods for sale are pretty much the same.

And plus, when you are alone and single and new to the city and shit happens in France like it did a couple months ago, you can go hang out with a bunch of Muslims who know your name and drink free beer while they say 'Vive La France' and condemn that terroristic bullshit and support their community.

Try that at a Wal-Mart Express or a gimped up Target store.

I don't think the big stores like that can really succeed competing with the locals in a place like NYC. I would guess it's the same in other dense population centers like DC.

<comment><USER15> What makes the Barclay's Center Target different than other Targets? I went just last week and found it the same as any other Target I've been to in the US (clothes, cleaning supplies, home goods, electronics, toys, non-fresh food, etc.)

</comment></comment><comment><USER16> I've only seen one of these stores while traveling, and it seemed to target the small township due to it being the only one in town. So my guess is that a private individual will take advantage of their closure by buying their property after liquidation, and so the employees will simply switch employers. This is why I'm not bothered by the "16,000 workers losing their jobs" statement.

<comment><USER17> The text in the article is _The store closures are to affect 16,000 jobs internationally, some 10,000 of those positions in the United States._

Looking at the Walmart press release, there is apparently a real difference, as they will try to give many of those employees positions in nearby stores:

[http://news.walmart.com/news-archive/2016/01/15/walmart- cont...](http://news.walmart.com/news-archive/2016/01/15/walmart-continues- sharpened-focus-on-portfolio-management)

 _In total, approximately 16,000 associates will be impacted by the decision, about 10,000 of them in the U.S. More than 95 percent of the closed stores in the U.S. are within 10 miles on average of another Walmart, and the hope is that these associates will be placed in nearby locations. Where that isn't possible, the company will provide 60 days of pay and, if eligible, severance, as well as resume and interview skills training. Whether with Walmart or elsewhere, the company's objective is to help all associates find their next job opportunity._

</comment></comment><comment><USER18> Out of the stores that Walmart is shutting down in California region, few of the stores were doing very well and located in the best areas for their customer base in So. Cal. Then there were some stores that were just redesigned. This makes me think if it could again be union-related issues in California.

Reference to previous sudden closure in Pico Rivera in So. Cal.: [http://ktla.com/2015/04/16/sudden-closure-of-pico-rivera- wal...](http://ktla.com/2015/04/16/sudden-closure-of-pico-rivera-wal-mart- draws-skepticism-from-employees/)

</comment><comment><USER12> Puzzling to me that CVS, Walgreens and RiteAid can pull off this kind of business, yet WalMart can't.</comment>


Maths in Science – an interview with Don Knuth (2015) - <AUTHOR> http://authenticinquirymaths.blogspot.com/2015/11/maths-in-science-interview-with-don.html <comment><USER2> That makes sense in terms of bit flipping, but does it make sense in terms of distance?

Assuming your mouth is a unit square, where you have to hit the four "corners", with no distance between inside and outside, with Knuth's pattern, I have to travel 5 units.

Meanwhile, doing inside/outside clockwise only requires 4 units.

Am I missing a joke or something? Why, for instance, would you go across your mouth twice just to clean your upper teeth?

<comment><USER3> I don't understand your alternative or how you get 5 and 4. Knuth's algorithm travels 12 sides of your 'square' (3 sides times inside+outside times upper+lower) plus the distance between upper and lower (once).

(TIL I brush my teeth just the way Knuth does. Except sometimes mirror- flipped.)

<comment><USER2> Let me see. I may not have been very clearheaded and have miscounted.

Left upper outside to right upper outside is 1 side of the square (distance between left and right).

Right upper outside to right upper inside is 0 (I was assuming no distance between inside/outside, maybe that's not a good assumption).

Right upper inside to left upper inside is 1 (distance between left and right again).

Left upper inside to left lower inside is 1. (between upper and lower).

Left lower inside to right lower inside is 1. (left/right).

Right lower inside to right lower outside is 0.

Right lower outside to left lower outside is 1. (right/left).

Overall, that's 5.

Meanwhile, if I do:

Left upper outside (0)

Left upper inside (0)

Right upper inside (1)

Right upper outside (1)

Right lower outside (2)

Right lower inside (2)

Left lower inside (3)

Left lower outside (3)

I get 3 (not 4, don't have to close the square).

Now, making it 1/0 is maybe not a fair assumption, but the width/height of your jaw seems higher to me than the width of your teeth, so minimizing the number of times you go left/right/up/down seems sensible, doesn't it?

TIL Don Knuth only brushes the sides of his teeth.

<comment><USER3> OK. I took your rough square as: left side, front, right side all have teeth along them; the rear of the square opens into your throat with no teeth. Since we're taking it to be a unit square, each side is of length 1. Knuth's toothbrush travels a total distance of 12 in those units, plus the upper-to- lower distance, which'd be some moderate fraction of 1.

I don't understand by what units you're counting, that they uniformly measure a distance. Maybe you're tallying moves that are not brushing? That'd be 1 for Knuth, the upper-to-lower transition. But it's OK! We don't need to argue about a joke.

<comment><USER2> The square is the cartesian product upper/lower X left/right (upper left, upper right, lower left, lower right). I was only counting moves from left to right or top to bottom (along the sides of the square), so I suppose those are moves that aren't brushing (because I assume the actual brushing varies little). How would that be 1 for Knuth?

<comment><USER3> Because Knuth's path never interrupts brushing except the one time it moves from upper to lower teeth.

<comment><USER2> That seems a little arbitrary to me. You have to switch how you hold the brush to go left/right (unless your brush is double-sided). For example, I can't imagine his first move, from upper left outside, to upper right outside, to be continuous.

And you might as well argue that you're not interrupting either when going from top to bottom. I mean you're just continuing the same movement after all.

Damn, who knew brushing teeth could be so complex.

</comment></comment></comment></comment></comment></comment></comment><comment><USER4> I know it was a honest mistake, but I would hate myself if I ignored an email from Don Knuth

<comment><USER5> The author seems to feel similarly.

We've all done that though, I'm sure. Maybe not one from Professor Knuth (!) - but overlooking an important email's something we've all done... I hope?

</comment></comment><comment><USER6> Url changed from [https://beebo.org/haycorn/2016-02-24_how-knuth-brushes- his-t...](https://beebo.org/haycorn/2016-02-24_how-knuth-brushes-his- teeth.html), which points to this.

Submitters: HN prefers original sources. If you want to highlight some detail, such as a tooth-brushing algorithm, you can always do so via a comment in the thread.</comment>


Ten Years of Git: An Interview with Linus Torvalds - <AUTHOR> http://www.linux.com/news/featured-blogs/185-jennifer-cloer/821541-10-years-of-git-an-interview-with-git-creator-linus-torvalds <comment><USER2> Let's not forget the other contender for replacing Bitkeeper, Mercurial:

[http://lkml.iu.edu/hypermail/linux/kernel/0504.2/0670.html](http://lkml.iu.edu/hypermail/linux/kernel/0504.2/0670.html)

We will also be celebrating Mercurial's 10th anniversary next week during the 3.4 Pycon sprint:

[http://mercurial.selenic.com/wiki/3.4sprint](http://mercurial.selenic.com/wiki/3.4sprint)

<comment><USER3> I used Git for a couple of years then changed to Mercurial and have never looked back, except now and then to wonder at the size of the crowd that has gathered around Git, driven in no small part by the success of github (which is not a bad thing!)

Git is an entirely appropriate tool for managing as something as large and complex as the Linux kernel, but I'm doing much simpler stuff, and Mercurial is simpler and has a much shallower learning curve. I'd recommend it unequivocally to teams of modest size working on average applications.

The state of git documentation is much better today than it was five or six years ago, so maybe its complexity is less of a big deal, but so far I've not encountered any issues with Mercurial that make me think "If only I was using git this would be easy!"

What I found with git was I had to maintain a fairly complex mental model of the current state of affairs, and because I'm not very intelligent that took quite a bit of effort. With Mercurial the model is much simpler, so I can spend more of my very limited attention on writing code. It's quite possible that I simply never took the time to learn git properly, but with Mercurial I didn't have to.

<comment><USER4> Mercurial is not only simpler, but also has got really powerful features like revsets.

[http://www.selenic.com/hg/help/revsets](http://www.selenic.com/hg/help/revsets)

I have tried to switch to git multiple times. Every time, I keep coming back to Mercurial. The most difficulty I have with git is the non nonsensical naming of concepts. For eg, A branch is a pointer to a commit. Because of this, I experience a big mental block when I try to reason about something. With Mercurial this is very much easier. And if you are using a DVCS to any capacity you ll have to do this often.

Another great thing about Mercurial is how easy to get help about stuff. You can head to the IRC chat room and can have a very good chance of catching one of the developers who, in my experience, were very helpful...

<comment><USER5> > The most difficulty I have with git is the non nonsensical naming of > concepts. For eg, A branch is a pointer to a commit.

This is a frustrating thing about how people tend to talk negatively about git. I think what you mean is "not named in a way I'm used to," because there's nothing nonsensical about this naming at all, and it's actually an incredibly simple and lightweight way to reason about naming things in version control (imo, I suppose). And it permeates basically every level of how git organizes information in a pretty darn uniform way.

To me mercurial's two kinds of built-in branches and several plugins to do branch-like things is much more complex, but I still wouldn't call it nonsensical. That'd just be admitting that I stopped thinking about it when it was strange and unfamiliar to me.

<comment><USER4> >I think what you mean is "not named in a way I'm used to,"..

Of course, that is the whole point of naming something sensibility..Just, for example, imagine how hard it would be if you have to learn/work in a version of C that calls pointers as 'branches'.

>To me Mercurial's two kinds of built-in branches and several plugins to do branch-like things is much more complex, but I still wouldn't call it nonsensical.

I don't know what you mean by 'several plugins to do branch like things'. Isn't it more frustrating that people complain about a tool because they have to enable some advanced stuff by configuration. But I agree that Mercurial is actually complex than Git, because it provides more options to the user. So the complexity of Mercurial is a side effect of it being more powerful IMHO.

So the point is I say, naming a 'pointer to a commit' as branch, is nonsensical because it goes against our notion of the word 'Branch' from real life. It adds unnecessary burden for a human being trying to think in the language of the tool, without actually making the tool more powerful. Git could have been as powerful as it is now even if it had named things better, Right?

<comment><USER5> > Of course, that is the whole point of naming something sensibility..Just, > for example, imagine how hard it would be if you have to learn/work in a > version of C that calls pointers as 'branches'.

Yes, if you rename <arbitrary thing> to <other arbitrary thing>, it is very likely to result in nonsense. This is not such a case.

A branch in git is literally a name for a _branch of the DAG that is the commit tree_. It's possibly the least abstract interpretation of the concept as possible. There is nothing nonsensical about it.

But the objection seems to be that you don't _work with it_ like in svn or hg or p4 or cvs (which are also all different from each other), which does not make it nonsensical, merely unfamiliar. This is the distinction I'm driving at.

<comment><USER4> >But the objection seems to be that you don't work with it..

The objection is that, when naming is skewed in lower levels it makes it harder to reason about higher level concepts and creates ambiguity..

For example, let us continue with the idea of a 'branch'...

Suppose you define a branch as 'a set of commits'. Then it is easy to imagine a 'remove' operation on a 'branch' will remove all the commits in that 'branch'. There is no ambiguity.

But when you define a branch as 'a pointer to the last commit in a consecutive set of commits', a 'remove' operation on a branch is no longer clear what it is supposed to do.

Does it simply deletes the pointer, in which case the commits will remain untouched? But it would not be consistent with the abstraction of the 'branch'.

Does it remove all the child commits from the history? by which the operation would be consistent with the abstraction of a 'branch'.

Now the remove operation is ambiguous as to what it actually does.

Note that there would be no ambiguity if the user does not know that a branch is actually a pointer to a commit. Because git hides all the change-sets that are not the decedents of a branch. So a users concept of a 'branch removal' is maintained. But I think it is pretty accepted that using git requires that you know stuff like these...

So another way of looking at the problem is that, Git forces the user to work at multiple levels of abstraction simultaneously. And this creates ambiguity because the user wouldn't know which level of abstraction to use when reasoning about something, and defeats the whole point of having abstractions in the first place IMHO.

<comment><USER6> > _Then it is easy to imagine a 'remove' operation on a 'branch' will remove > all the commits in that 'branch'. There is no ambiguity._

The problem is not with Git's use of pointers, but with your own thinking.

One should not be able to "remove" commits, because any operation should be undo-able. In git removing commits implies updating a pointer. And if those commits end up not being referenced by anything else, then they'll get garbage collected. What git does is very close to how persistent data-structures work. And many people complain about it just because it's unfamiliar.

And in your example, of course there's ambiguity, how can it not be? What happens with the branches that are forked from your branch? That's the definition of ambiguity right there.

> _So another way of looking at the problem is that, Git forces the user to > work at multiple levels of abstraction simultaneously._

In my experience, the problem with Git is that people don't bother to read documentation for a tool that they are using every day.

<comment><USER4> >What happens with the branches that are forked from your branch?

Care to elaborate? Do you mean when removing a branch, what happens to forked/child branches? There is no ambiguity, a change set cannot exist without it's parent or cannot be moved to a different parent without changing its identity. (The revision hash is a function of its ancestors too). So if you remove a branch, the forks/child branches will be removed as well.

Anyway, that was just a made up example to show how naming can affect reasoning. I don't think Mercurial or Git allows you to delete branches directly....

<comment><USER7> Since Git is graph based, there's no guarantee that removing the branch commits will work since there might be other branches using it.

Of course, if you delete a branch and then run git prune, its commits should disappear as long as they weren't part of another branch.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> "The trick wasn't really so much the coding but coming up with how it organizes the data."

I think this really is the key to understanding git as well. When you understand the git data structures, git makes sense. Otherwise, it can be quite difficult to grasp ([http://ftp.newartisans.com/pub/git.from.bottom.up.pdf](http://ftp.newartisans.com/pub/git.from.bottom.up.pdf) was really useful for me).

<comment><USER9> Not only git. There is a nice quote from Fred Brooks Jr. (I think), that if you show me your flow charts and algorithms, I remain as clueless as before, but show me your data structures, and everything else will follow. (I am paraphrasing this from memory, Brooks put it more eloquently.)

<comment><USER8> Yes! I love that quote - so true. Linus has the same opinion:

"Bad programmers worry about the code. Good programmers worry about data structures and their relationships." [1]

I actually refered to this when discussing switching from Java to Python. One of the biggest problems for me was not easily being able to see the types of the arguments to a function in Python. [2]

[1] [http://programmers.stackexchange.com/questions/163185/torval...](http://programmers.stackexchange.com/questions/163185/torvalds- quote-about-good-programmer)

[2] [http://henrikwarne.com/2014/06/22/switching-from-java-to- pyt...](http://henrikwarne.com/2014/06/22/switching-from-java-to-python-first- impressions/)

<comment> squeaky-clean Off topic from the article, but this is something I literally just spent my morning wrestling with and fixing, so I'd like to talk/rant about it a little. My apologies in advance for rambling.

You can use doc comments to signify types. You mention you use PyCharm in your article, and it supports doc comments in it's autocomplete and code analysis, I find most popular libraries are commented well enough that PyCharm can understand them.

I also always try (and encourage others) to use names that are declarative for both purpose and type. Of course, you can't always rely on third party libraries (or even colleagues) to be so nice, but I find a good name (almost) always removes all the confusion that normally comes from a lack of static typing.

For example, one of Codecademy's very first Python lessons includes some code like this:

        meal = 44.50
        tax = 0.0675
        tip = 0.15

Which I think is unclear. Imagine these were function arguments. calc_total(meal, tax, tip) is vague. Is meal an object, or a numeric value? (I could possibly see it containing a list of all items in the meal with prices). Tax is almost always a percentage, but what about tip? Judging by the the above values, we can assume a 15% tip, but we don't know if the customer was stingy and tipped $0.15, and by just name alone, we can't tell at all.

        calc_total(meal_cost, tax_percent, tip_percent)

It's now immediately clear to me the type and range of values it accepts. The tip_percent is also an example of when a good name can provide info that even static typing could not, because in either case it is a floating point (please let's not get into a debate about Decimal or currency types :P ). This is a very basic example, but it applies at all levels. Don't call the parameter "users" if the function is not expecting an iterable of User objects. Maybe "usernames" would be better. Etc.

But of course, this only helps if the code you're working with is named well. In something like Java, you have better protection and tools when working alongside lower quality code. I also completely agree with you on point #2 about No Static Types. Navigating through my editor is so much easier in a static language than it is in PyCharm with large projects. And the most annoying thing is that autocomplete breaks with ORMs, and most ORM usage is actually flagged as a warning or error. Ugh.

I also feel very confident in the automated refactoring in something such as an IntelliJ Java project, or ReSharper, but am apprehensive about using PyCharm to refactor anything with usages spanning more than one file. Same goes for Javascript (or any other dynamic language, I suppose. Those are just the two I use).

Enjoyed the posts by the way, adding your blog to my reading list.

<comment><USER10> The example you mentioned, translated in Java, would be:

        Double mean = 55.50;
        Double tax = 0.0675;
        Double tip = 0.15;

And the function declaration would be:

        Double calc_total(Double meal, Double tax, Double tip)

So even with the types, you have exactly the same problem as in python, and creating a special class to wrap up percentages is something I find quite heavy.

Your alternatives would be to have naming conventions, like you do, or some proper documentation that tells you what the function expects for its arguments, with an example of a function call, which I particularly like in python because of the REPL.

<comment><USER11> But perhaps a better type system can still be helpful. E.g. F# supports units of measure, so you can declare 'dollar' as a unit, and write

        let calc_total (meal_cost : float<dollar>) (tax : float) (tip : float) =
           meal_cost * (1.0+tax) * (1.0+tip)

This way it is at least clear from the types that the numbers are meant to be multiplied, not added.

<comment><USER10> I never used F#. In your example, would the code:

        meal_cost + tax

trigger a compiler exception?

<comment><USER11> Yes, you get

        The type 'float' does not match the type 'float<dollar>'

There is an online typechecker, so one can try out F# without installing it: [http://www.tryfsharp.org/Learn/scientific-computing#units- of...](http://www.tryfsharp.org/Learn/scientific-computing#units-of-measure)

<comment><USER10> And how about:

        meal_cost * tax

?

This one makes sense in the real world, so I suppose an advanced type system allows the programmer to specify what operations are legit or not across different types.

<comment><USER11> One could imagine systems for that, but units of measure doesn't do any customization of different operations. It's just unit checking for for arithmetic, like in high-school math.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> I wonder if BitKeeper owner Larry McVoy has ever regretted not open sourcing his software? Git tools is a whole industry now. The most promiment one, github, recently become one of the 100 most popular websites on the planet.

<comment><USER13> Regret it? Sure. I'd do it in a heartbeat if I could figure out how to make it work. Still would and there is plenty in BK that Git doesn't have. Like submodules that actually work _exactly_ like a monolithic tree, just lets you clone what you need.

But we've never figured out how to make it work financially. If anyone has any ideas I'm all ears (though pointing at github and saying "do that" isn't an idea that I can execute).

BTW, BK used to be pretty darned close to open source, you got the source code under a funky license that said "don't take out the part that lets us make money". We stopped shipping the source when we learned that the very first thing that someone committed to the repo was taking out the part that let us make money.

<comment><USER14> Very cool of you to share your thoughts. I sympathize with your dilemma. It seems that the people who end up making money out of free/open source software are often not the ones who write the code. And I remember reading back in the day that Linus would talk with you extensively about the nuts and bolts of DVCSs, so I'm sure all git users owe you some gratitude for inspiring him to create git and getting the fundamentals right from the get go.

Out of curiosity, and please feel free not to answer, is BK still a viable commercial product bringing in significant revenue? And what obstacle do you see with going the platform/service route like github? I assume that's something you've seriously considered, even without open sourcing BK.

<comment><USER13> Yeah, BK still pays the bills for our team. We're small though, I recently found out that perforce has around 250 people, we're less than 1/10th that. But we pull in millions a year, enough to pay our people above scale even in the bay area, so far, so good.

I'll admit we've fallen off the radar (well, we were never really on the commercial radar, the only "marketing" we ever did was getting Linus to use it and that wasn't intended as marketing, it was intended to keep the kernel from diverging like the BSDs did. But it turned out to be a form of marketing that has kept us alive).

We're gonna try some actual marketing. Stay tuned. We'll probably screw it up :) But we hired a marketing company, I've gone back to writing papers, we'll give it a try. If you have ideas on how we can put ourselves back out there, we'd love to hear them.

As for viable, heck yeah. We work well on big repos (better than git), we've got what we call nested collections of repositories (did I mention I suck at marketing, yeah, I came up with what to call it) that are sort of like submodules except they work exactly like a single repo, sideways pulls work, anything that works with one repo works with N repos, that includes all the guis, command line, everything. We've got an answer for binaries that works for gaming companies. We've got a sane user interface (that's what Mercurial copied, in a somewhat sketchy way).

Git is sort of like the wild west, it never met an idea it didn't want to implement (at least partially). We're more enterprise ready (yeah, over used term) in that we work hard to make sure that BK has all the guard rails, seat belts, etc, so that you can deploy to people who could care less how any SCM works and they don't drive themselves over a cliff. Definitely less cool than git in that we take away some (bad) options, but safer.

We have seriously considered open sourcing a version of BK. We've been doing a lot of performance work and we essentially have two BK's, the almost SCCS compat ascii format slow version (slow but any version of BK will talk to it), and the fast one with a new binary file format (stuff like show the top commit comments are 35x faster in the linux kernel, that number goes up as you add more csets). We considered open sourcing the slow one but that effort has stalled. It could be revived, it just has to be worth it to us.

The github ship, in my opinion, has sailed. Maybe we could have open sourced BK back before git and done a github thing but it's all flashy UI stuff and we sort of suck at that. We're really good at systems stuff (you'll see when we start doing marketing, we scale, git doesn't) but flashy? Not so much. We do our UI in tcl/tk (I know, I know, but we have one UI person who makes it all work on windows/linux/macos and tcl/tk is a big part of that. At least we wrote a C like language that compiles to tcl byte codes so we're out of tcl. Thank God.)

<comment><USER15> Wouldn't the standard open source-as-freemium work? i.e. a free open source version with enough cool features (e.g. nested respositories), but not efficient. It's free marketing to keep you on the radar, that targets the people who appreciate your systems chops (and, like Atlasian, also gets it in under the radar, to developers). Enterprise customers happily pay ridiculous sums for full versions. And git/hg makes you immune to the competitive danger of open source clones.

I'd value your thoughts on this, as I also have a popular open source competitor, that followed me. The strategy seems sensible, but it might undermine perceived value; and it's a hassle to maintain two versions...

Also, can I please ask a technical BK question: How much does git differ from BK internally? i.e. git has graphs of commits, content-addressable for efficient checks of identity and integrity. Did _git_ get any of that from BK? Or was it more the workflow and distributed concept of everyone having a copy of the repository? Many thanks!

<comment><USER13> Linus definitely did his own thing with git. The general ideas came from BK, BK gave you clone/pull/push/commit as the model. Everyone copied that because it just makes sense. The all or nothing clone model came from BK.

How it is all glued together differs quite a bit. BK has the concept of a revisioned file, git does not, it versions trees. That's why Linus thinks renames are silly, he doesn't care about them, he cares about the tree.

The graphs of commits comes straight from BK, that's BK's changeset file - which is sort of neat in that it is a version controlled file itself. BK is the only system that I know of that uses a versioned file to store the metadata.

OK, so on the business model thing, I'm not sure. The way we did the old compatible format is compatible but it's pretty slow, it converts to the new format in memory and then converts back if you write it out. It's slower than the older implementation (but this way we have one in memory format, less bugs). I thought it was good enough for small projects, my team overrode me and said "too slow".

As for enterprise customers "happily paying", um, no. We constantly get wacked with "if you don't do this or that we're moving to git". Which could be viewed as a good thing, we have to keep making it better, but it gets tiresome.

<comment><USER15> Thanks! Renames make archeology difficult in git. I've become reluctant to change {file,directory} names, even when it's clearer...

BTW: What are the benefits of versioning changesets themselves? Isn't it rare to only change the changeset?

Chained conversions are elegant, but slower code is unsatisfying... I guess such hobbling is the essence of open-source-as-freemium. :(

I meant they "happily pay" for full over free versions. (For them, it's also paying for "new" features!)

<comment><USER13> Renames are a thing and git made the wrong choice there. It's not like we are perfect but we are way closer.

So on versioning changesets I didn't really explain. Lemme try again.

In any DVCS you have a bill of materials, that's what describes the tree. Git's is different than ours because they don't version files, we do. So our bill of materials looks like:

      path/to/file <version>
      path/to/different_file 1.1
      path/different_dir/a_file 1.19

If you "cat" the changeset file as of any version you get what the tree looks like, a list of files and a list of revisions.

Of course it doesn't work like that because, um, reality and merges and parallel development. We have UUIDs for each file and each version so it looks like

UUID_for_a_file UUID_for_a_version

and our UUIDs are pretty sweet, not sha1 or some other useless thing, they are

user@host|path/to/where/it/was|YYYYMMDDHHMMSS|checksum

those are for each node in the graph, for the very first node which is the UUID for the file, there is a "|<64 bits of /dev/random>" appended.

So the changeset file is just a list of

UUID UUID

Not sure if that helps.

The benefit of versioning the file that holds all that data is we can use BK to ask it stuff. Want to see the history of the repo? bk revtool ChangeSet Want to see what files changed in a commit? bk diffs -r$commit ChangeSet Yeah, we have to process all the UUIDs and turn them into pathnames and revisions but we can do that and do it fast. So it works.

All the tools we built to look at stuff can look at the metadata. That's worked out well.

<comment><USER15> Thanks!

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> Here is the first Git commit he talks about in the article:

[https://github.com/git/git/tree/e83c5163316f89bfbde7d9ab23ca...](https://github.com/git/git/tree/e83c5163316f89bfbde7d9ab23ca2e25604af290)

<comment><USER17> Having read "Git from the Bottom Up" [1], it's interesting and refreshing how concise Torvald's explanation is.

Of course, he also didn't have as much to explain at that stage :)

[1] [https://jwiegley.github.io/git-from-the-bottom- up/](https://jwiegley.github.io/git-from-the-bottom-up/)

</comment></comment><comment><USER18> Jesus, so Torvalds built the MVP for git in 1 day and pretty much scaled it up for kernel usage in 10 days. Now, as a humble average developer, how do I achieve Torvaldian levels of productivity?

<comment><USER19> Well, he'd been collecting ideas and requirements for a long time in his head before he finally made a system out of it. The vast majority of the time, what you're building isn't all that clear to you before you have to start. So there's a lot of time wasted just figuring that out. Cut that wasted time out and you become a powerhouse.

</comment></comment><comment><USER20> Linus says of the Github platform -

That's partly because of how the kernel is developed, but part of it was that the GitHub interfaces were actively encouraging bad behavior. Commits done on GitHub had bad commit messages etc, because the web interfaces at GitHub were actively encouraging bad behavior. They did fix some of that, so it probably works better, but it will never be appropriate for something like the Linux kernel.

I haven't ever looked at the kernel workflow, nor have I ever heard systematic criticism of Github's methodology. Does anyone else have input on what Linus may mean by his opinion?

<comment><USER21> The kernel development model is documented here: [http://lxr.free- electrons.com/source/Documentation/developme...](http://lxr.free- electrons.com/source/Documentation/development-process/)

Github doesn't scale at all for large projects. The kernel is averaging over 8 changes an hour, 24 hours a day. That rate of change can never be handled by doing pull requests and web site review. It only can work with email and review and scriptable processes.

<comment><USER22> Eh, I mildly disagree on web site review. Perhaps not GitHub's pull request/review model, but big projects like Android and Chromium do all their review on web interfaces.

<comment><USER23> Using Gerrit, which is an automated mimick of Linus' development model.

By the way, we've been succesfully using Gerrit on smaller-scale projects as well (around 8 change-requests / day) and don't even want to think about going back to pull-requests.

<comment><USER24> What you've said is essentially correct, but I'd like to make a minor correction: Chromium uses rietveld whereas Android (and some Chromium related projects) use gerrit. Rietveld and gerrit have similar workflows except that gerrit is more integrated with git (I think). Both are named after Gerrit Rietveld, a famous Dutch designer.

</comment></comment></comment></comment></comment><comment><USER25> One thing worth saying here is that Git is now the dominant player in the source control market. According to almost every survey I've seen, it's overtaken Subversion (according to some reports by a fairly large margin) not only for open source and hobbyists but in the enterprise as well. It's more or less become a lingua franca for communicating source code between teams these days, as well as being the preferred deployment option for many cloud hosting providers and even some package managers. No other source control system has ever managed that.

As such, you simply can't afford not to know it these days. In fact, I can't help thinking that not using Git should now be a major red flag for job candidates and prospective employers alike. Sure, not using your favourite tool may not be that big a deal, but not using what is to all intents and purposes the lingua franca of source code communication is a serious omission.

<comment><USER26> Can't agree with this assertion. Your source control of choice should not be in any way a red flag. It just a choice and because of learning curve I choose to learn Mercurial instead. I don't see how source control matters to that extent.

If I need to use it I will learn it then. I don't think most people care as such.

</comment></comment><comment><USER27> "Why do you think it's been so widely adopted?

Torvalds: I think that many others had been frustrated by all the same issues that made me hate SCM's"

Actually, the adoption was caused by the network effect. It took off with a core group of Linux-involved developers promoting it religiously, then it went on like a fashion (we are git-wielders, we are cool), and ended up being the default choice for a lot of other projects that either depended on some degree on 3rd party git-managed modules, or wanted to benefit from the existing disciplined git-trained developers, or just... because (for all things being equal). Having this presumption that the adopters actually thought for themselves and Torvalds's brain-child got where it is now thanks to its own technical merits is a pleasant thought though.

</comment><comment><USER28> Somewhat off topic, but I'd love to see something more git-like that works for large repositories. I work on video games and our repos are several TB. It's not practical to use git in those situations and Perforce feels too clunky to me.

<comment><USER29> Have you tried git-annex? It handles large files really well and is as close to git-like as you can get. :)

<comment><USER28> I haven't tried it, but I've looked at it. I think it adds too much complexity. Who decides which files go on the annex and which don't? Doesn't seem like an automated great solution for a scale-able team.

I'm looking for something more like CVS/Perforce where you can check anything in, but then with a more Git feeling interface. What I'd really like to do is to look at Git feature by feature and build the closest thing possible that does not include cloning the entire history locally under normal use. I know that is the fundamental paradigm of Git, but it seems that something closer to a hybrid of Git and Perforce could be created. Not sure exactly what it would look like. It's just jarring to jump from Perforce/CVS to Git and I don't think that's completely due to the local repository model. It's how branching works, it's how merging works, etc.

<comment><USER29> > I haven't tried it, but I've looked at it. I think it adds too much > complexity. Who decides which files go on the annex and which don't? Doesn't > seem like an automated great solution for a scale-able team.

I would put all binary files into git annex (as determined by `file`). This can be done by a commit hook automatically. With another hook that makes sure that `git annex pull` is run when the user checks out code, you'd have a solution that was close enough to automatic for most use cases.

(You'd have to help your users with weird situations from time to time, but that's true of git anyway.)

</comment></comment></comment></comment><comment><USER30> I wrote an article a few months ago summarizing where Git is in 2015 if anyone is curious[1]. Most developers at my company don't seem to want to learn a "new" SCM so we're stuck with SVN (or CVS for some projects).

We rarely have a stable trunk. Branching takes too long so most people don't want to do it. Merging two branches is such a scary thing that people avoid branching in the first place. Or I've seen them copy code from one branch in one Eclipse window and paste into another separate project (on another branch) in another Eclipse window. They repeat this manually for the next 5 to 20 files. I don't think they've realized a merge can often be as simple as a button click or one SCM command. But hey, it works for them.

The one time on my team that someone was interested in exploring Git was when we couldn't find an up-to-date Maven SCM connector for SVN that played nicely with Eclipse. The solution? Use an older version of Eclipse.

[1] [http://www.netinstructions.com/the-case-for- git/](http://www.netinstructions.com/the-case-for-git/)

<comment><USER31> I work for a huge-internet-corp, which I don;t want to name here (pretty easy to find out from my username and a couple of google searches, if you care). I sympathize (actually empathize) with your problem (developers dont want to learn a new SCM). We had a big drive last year where management stuck down a hammer, and told us to move to git, 100%. Several senior developers (many of them actually architects now, not really writing much code) made a lot of noise on internal mailing lists. One person would make terrible mistakes that one reading of any git manual would help you understand, and then complain loudly (with a lot of swearing) how much it sucked compared to SVN. I was annoyed by this, because except for the hammer thing, the company did everything else perfectly. We have a stable corp github, there were several training sessions offered, and the reasons clearly explained. It was the first time I was happy about the slightly dictatorial approach taken towards the whole thing, instead of trying to reason with 50-year old babies.

</comment></comment><comment><USER32> I just wanted to say thank you Linus for giving us Git. Before Git I was using SVN and while the wounds are healing, I will bear these SVN scars for many years to come. As a developer Git has made my life so much easier and not only that, thanks to Github I can help collaborate on open source projects as well as my own with ease.

</comment><comment><USER33> 99% of the time I use:

\- git status

\- git add ...

\- git reset ...

\- git commit ...

\- git log ...

\- git push/pull ...

I guess that's "the basics" \- what command should I learn next?

<comment><USER34> > git rebase -i Very useful!

<comment><USER14> Yes, but watch out if you've already pushed to remote branches or even done merge/rebase with other local branches. You're rewriting history.

<comment><USER35> I most often use it because I forgot to include a certain file in my most recent commit. I'll just commit that file then rebase -i to merge the two.

<comment><USER36> If you want to alter the most recent commit, you can 'git commit --amend', no need to rebase.

[http://git-scm.com/book/en/v2/Git-Basics-Undoing-Things](http://git- scm.com/book/en/v2/Git-Basics-Undoing-Things)

</comment></comment></comment></comment></comment><comment><USER37> I wish Linus would now turn his attention to: 1) make (ought to be a simple concept but never seems like it's quite been done right) 2) init (only he has the clout to solve the pid 1 controversy) Will check back in 2025 for progress report.

<comment><USER38> Ok, but only if he first turns his attention to a proper git submodules/multiple reposities kind of thing

</comment></comment><comment><USER39> off topic: is the there a third party service that will let me collapse all sub-comments and just read the parent comments?(and then expand them if they seem interesting?)

<comment><USER40> There's API for HN ([https://github.com/HackerNews/API](https://github.com/HackerNews/API)), it's not that hard to make one yourself. This is _Hacker_ News after all.

<comment><USER39> i know - i was hoping someone else did it already! thanks

</comment></comment></comment><comment><USER41> Linus is not a magician, he is however very good at working with systems and spotting exactly where those systems need improvement.

I respect this quality immensely.

</comment><comment><USER42> Now if you can tackle dependency management and build tools Linus, I would appreciate. With love, me.

</comment><comment><USER43> There was a nice 10 year overview of git linked from the article [https://www.atlassian.com/git/articles/10-years-of- git/](https://www.atlassian.com/git/articles/10-years-of-git/) I think Atlassian are great sports for featuring GitLab (that competes with their Bitbucket and Stash products) in there, thanks!

<comment><USER30> Kind of a nitpick, but that infographic shows that in 2014 Git was used by 33% of developers. Atlassian didn't say which source that came from, but I'm going to guess it came from a 2014 Eclipse Community Survey of 876 respondents[1][2].

I found the poll a bit misleading. There were _separate_ categories for Git and GitHub, but AFAIK you were only supposed to choose one. I'd wager most of the GitHub users are also using Git, so the graph would look more like this[3].

[1] [http://www.slideshare.net/IanSkerrett/eclipse-community- surv...](http://www.slideshare.net/IanSkerrett/eclipse-community-survey-2014) [2] [http://eclipse.dzone.com/articles/eclipse-community- survey-2...](http://eclipse.dzone.com/articles/eclipse-community-survey-2014) [3] [http://i.imgur.com/CEkIHSQ.png](http://i.imgur.com/CEkIHSQ.png)

<comment><USER43> I agree that using separate categories for git and GitHub doesn't make sense.

</comment></comment></comment><comment><USER44> I am sad GIT got widely adopted. GIT-SVN was almost superpower a few years ago. :-)

<comment><USER45> It still is, depending upon where you work. "I'm having trouble with merging the latest development changes into my feature branch. Tortoise says there are tree conflicts, what--" "Done, I'm committing the result to the SVN repo now." "What?!"</comment></comment>


Computer Created a 'New Rembrandt' After Analyzing Paintings - <AUTHOR> http://www.techienews.co.uk/9742582/computer-painted-new-rembrandt-after-analyzing-his-work/ <comment><USER2> The actual site for the project: [https://www.nextrembrandt.com/](https://www.nextrembrandt.com/) It has some weird scrolling effects.

</comment><comment><AUTHOR> source: [https://twitter.com/zedshaw/status/717845058871910401](https://twitter.com/zedshaw/status/717845058871910401)</comment>