Gitlab's Director of Risk and Global Compliance Resigns - <AUTHOR> https://www.reddit.com/r/gitlab/comments/dtfccm/gitlabs_director_of_risk_and_global_compliance/ <comment><USER3> Candice Ciresi (aforementioned director) commented: "As I believe GitLab is engaging in discriminatory and retaliatory behavior, I have tendered my resignation."

E-mail notification (her resignation): [https://i.imgur.com/AE8UtvD.png](https://i.imgur.com/AE8UtvD.png)

First time it was edited: [https://i.imgur.com/7N7mTC2.png](https://i.imgur.com/7N7mTC2.png)

Current version: [https://i.imgur.com/YjWmpGk.png](https://i.imgur.com/YjWmpGk.png)

<comment><USER4> This:

We will not tolerate Very Serious Charge X. This post did not do X, but other people did and this post says something critical of us so we removed it.

construct is quite something.

<comment><USER5> For clarity and for the context of this thread => From GitLab: We did decide to moderate this post for review, as there have already been credible personal and physical threats against GitLab employees in this issue thread. GitLab cannot tolerate posts that threaten our employees (or anyone) personally, or posts that we believe may further inflame threats that have already been made. While this particular post did not contain a personal threat to anyone, we were concerned it would further inflame this situation. We understand that those who follow the issue already received the comment.

<comment><USER6> You can stop copy and pasting this response everywhere, it's already in the screenshot.

Censoring a respectful employee resignation, regardless of whatever "spin" you try to justify it with, is not a good look for your company.

You're guideline here is basically it makes gitlab look bad and you want to hide it to avoid further negative feedback. The thread is already locked so no further trolling can be posted in that thread.

<comment><USER7> I am not at all surprised if it was the VP of Engineering, the author of the issue, who would be the one to censor her resignation. It would not be the first time he would be spinning things around and creating a culture of fear. I am not at all surprised she would face retaliation.

<comment><USER8> No personal attacks please. They only hurt, not help, and any substantive point can be made without them.

[https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

</comment></comment></comment></comment></comment></comment><comment><USER9> I was expecting Paul Machle (CFO) to resign, at least they seem to be completely divorced from the values that GitLab was built upon.

> I don't understand. This should not be an opt in or an opt out. [Telemetry] > is a condition of using our product. There is an acceptance of terms and the > use of this data should be included in that.

[https://gitlab.com/gitlab- org/gitlab/merge_requests/14182#no...](https://gitlab.com/gitlab- org/gitlab/merge_requests/14182#note_203849107)

<comment><USER10> Honestly, it's the end of an era for Gitlab it seems to me. The CFO's views are going to become the new norm, and I doubt there's much the CEO will do to course correct (since this latest issue seemed to involve him with a big client contract?). I expect another "we're sorry, we won't do it again!" as we've gotten the past few times, but I am trusting those less and less.

<comment><USER9> The general direction of GitLab can also be steered by employees. They could organize, publish a statement, and refuse to check in for work on Monday.

It all depends on how many GitLab employees believe strongly enough in these values, and how many are willing to take some risks and defend the company and its values.

<comment><USER11> I've thought about this a lot. We could, but we are all literally terrified for our jobs and of retaliation.

<comment><USER12> > we are all literally terrified for our jobs

Life as an employee shouldn't be like that. I think GitLab is in a unique situation since a lot of y'all are remote and there aren't a lot of comparable positions available.

We need more remote working opportunities, because when there are just a few, the companies that allow it are able to string along their employees.

<comment><USER11> Absolutely. I think this is one of the strongest things keeping people here. The golden handcuffs. Everything sucks, but our situation is unique. Many positions have lots of personal freedom such as flexible working hours. You can work from wherever, you can travel. That's hard to leave.

<comment><USER13> If you're not averse to working for startups there are a lot of opportunities out there. I actually got rejected by gitlab and then got an offer from a startup for more money than I would have gotten at gitlab. There's quite a few remote first places out there too like Duck Duck Go, Mattermost, Zapier, Auth0, Automattic, Stripe just added a remote division but not remote first, Invision, just off the top of my head. I get changing jobs is full of uncertainty but don't sell yourself short either, the market has changed quite a bit probably since you were last actively looking.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> To me this seems like a huge self-inflicted mess by GitLab. Normal companies don't make touchy personnel issues public. Things like "we need to stop hiring Russian employees onto the support team because clients disapprove". It's cool to be so open in an abstract sense, but watching this play out in public really just makes me want to not air this sort of issue out in public when it comes to my own workplace.

<comment><USER15> There's nothing cool even in an abstract way if you're discrimminating people based on race and heritage in a public way. It's called racism and bigotry and the more public it is the more disgusting it is.

<comment><USER16> It's not a matter of race, it's a matter of location... GitLab has made the decision to not allow administrative (or any?) roles for those located in Russia or China. It's not about race, from what I can tell.

Russia and China engage in state sponsored industrial espionage, hacking and sometimes destructive measures frequently. Of course others have as well, but not nearly to anything resembling the same level and scale.

It got so bad at work, we had to block the entire country subnets at our routers. I would also think that most corporations would probably not allow for this. While the recent South Park episodes show a lot of humor, they don't even scratch the surface of how bad things are and how much internal influence and coercion those countries have on their residents.

Some of the best programmers I've worked with in my career are expats from China and Russia, including running a dev team out of China a while back, but I absolutely would not want to do significant (software/development/it) infrastructure business with residents of those countries in practice. It's unfortunate in the software development space in particular.

</comment></comment></comment><comment><USER17> Ignoring for a second the ethics of hiring bans around particular countries, I find it interesting that this is in a way a problem that _uniquely_ belongs to a distributed organization

In a traditional organization, none of your employees will reside in country X unless you actively open an office in that country. The organization may choose to develop satisfactory IT controls and administration tools before doing so, or simply not do so at all.

For a distributed organization like Gitlab, there is a presumption that employees live where they want unless told otherwise. Hence, the pains that Gitlab is going through now.

<comment><USER18> Another interesting aspect to a globally distributed team like this is how it's inherently uncertain how the business will be impacted by dynamic geopolitical changes/rules across the world.

Here it's about China and Russia. But the next day it could be government pressure on hiring bans in Pakistan or Indonesia or South Africa or Peru based on whatever countries are in a spat at the moment.

What happens to the current employees then? "Sorry, you're fired"?

<comment><USER19> When ukraine was starting it's revolution in 2013/4, and it was unclear what was going to happen in the country, if it would break into war, or just become some place we could no longer keep our 250 employees, my HR team came to talk to me.

I had 12+ employees there and they asked me to write down the names of 3. Those 3 would be the ones we would try to extricate from a country descending into war should that happen. Them, their wives, and their children.

How the fuck do you make that decision?

<comment><USER20> As best you can.

In December 2018, news broke that Charlotta Turner, Professor in Analytical Chemistry at Lund University in Sweden, arranged for mercenaries to rescue a doctoral student and his family from the Islamic State.

[https://www.telegraph.co.uk/news/2018/12/13/swedish- universi...](https://www.telegraph.co.uk/news/2018/12/13/swedish-university- rescues-student-isil-warzone-daring-mercenary/)

Organisations do this. Resources are limited.

</comment></comment></comment></comment><comment><USER21> Mark my words: the transparency at GitLab -- that we are all familiar with and very appreciative of -- will soon end.

I don't care what your company does or what industry you are in, pretty much any decision you make is going to piss _somebody_ off -- "you can't please all the people all the time" and all that.

This is made worse by today's highly divisive political climate. We've seen it recently where a company does _something_ , gets attacked for it, changes their mind, then gets attacked for _that_.

It's bad enough for "non-transparent" companies but it's even worse for a company like GitLab -- when everyone in the world can (and will!) "attack you" for any decision you make.

GitLab's transparency will come to an end. That's bad because there are others who are sitting back, waiting to see how this "transparency experiment" turns out -- and they'll decide that operating their company in the same manner is _NOT_ the way they should go.

I miss the days when we could agree to disagree on things and not get so damn "offended" at all the time.

<comment><USER22> When company makes a decision against Director of Compliance advice, when she is given responses like (paraphrasing): "if we want to stay compliant, we'd lose these lucrative contracts, are you prepared to answer for you decisions?", what else she's left to do other than resign? It is not about polarized world, it is about having a dignity.

<comment><USER23> Compliance (or lack thereof) is just one element of risk that a company has to face. The folks that take those jobs are typically risk averse and struggle to move quickly, as one might imagine. You can't let them run the company or you're going to get destroyed by less apprehensive competition, but if you ignore everything they say you're running a completely different set of risks. It's a balance, like everything else in risk management.

Her decision to leave is obviously a personal one. Bailing over one disagreement seems a bit unsustainable from a career standpoint, but there could be a track record or she could feel exposed by the public nature of the conversation.

<comment><USER24> I give her more benefit of the doubt.

If you express strenuous disagreement and are in an _officer_ role, when your "advice" is only treated as advice to follow or ignore, you have to take a stand if you believe in yourself. Because it's your head that's going to roll when this chicken comes home to roost. Better to go out with honor and preserve your integrity, in some cases.

Well, it's either that or she completely misjudged the position offered her. Seems gitlab didn't want an officer in this position but rather just a VP with an officer title.

</comment></comment></comment></comment><comment><USER6> An important point to communicate here is this is based on someone's geographic residence, not their ethnicity or nationality.

An American living in China or Russia would be subject to the same policy of not being hired. A Chinese or Russian person living in Europe would still be eligible for employment.

<comment><USER25> IMO 99.9% of remote workers from a country are also citizens of the country. The only difference would be top expat/nomad countries.

<comment><USER26> The parent comment has never mentioned citizenship, only country of residence and nationality. As long as a Chinese/Russian/etc. national resides in one of the non-banned countries and can get hired just as well as any other national (regardless of whether they have a citizenship of the country they reside in or not), everything is alright in my book, because it has nothing to do with them on a personal level.

</comment></comment></comment><comment><USER27> I wonder if GitLab has reached an inflection point in team-size where the traditional trappings of corporate behaviour will overcome its transparent/open culture. I wonder what the limit of global and remote really is?

<comment><USER28> Most startups are quite transparent until they hit a big backlash "inflection point" and realize they outgrew that culture. Even GitHub used to be that way.

Radical transparency works for small startups with heavy us-against-them cultures, a mutual agreement on who the enemy is, but when it starts facing tough challenges from the inside is when that starts to disappear.

<comment><USER11> Can confirm, transparency is rapidly degrading internally too.

<comment><USER29> leave the ship before it is too late. I speak from experience.

<comment><USER30> Frankly, I find this comment surprising. "Lack of transparency" describes 80% of the companies I have worked at. If Gitlab losing its radical transparency is a reason to jump ship, to where would one go?

<comment><USER29> funny you are talking about transparency while I refer to companies who care for politics.

Im talking about environments where you cant express your free opinion or have to apply to rules because of "politics".

back in the days we were just working. we cared about technology. those in control cared for money. which was absolutely fine.

today, you have to fit in some weird rules and companies play governments. if you talk negative (by eg expressing your free will) you get redacted.

thus has nothing to do with transparency btw. the transparency of gitlab can be good or can be bad. but that is another topic I guess.

<comment><USER30> No, transparency was the topic being discussed! [https://news.ycombinator.com/item?id=21483935](https://news.ycombinator.com/item?id=21483935)

<comment><USER29> I think you dont get my point. degrading transparency is just a symptom. a symptom of all this.

<comment><USER30> Fine. But even if it is, this seems hardly to be a problem exclusive to Gitlab. So what's the point of jumping ship? Won't you just end up in another similar environment?

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER31> Haven't been following this debate but has it been mentioned that China has a law that says that every Chinese citizen must spy for the government if asked.

>The law provides official sanction for the intelligence services to do things long observed in their activities: coopting officials in other government agencies; compelling cooperation from PRC citizens;

[https://www.canada.ca/en/security-intelligence- service/corpo...](https://www.canada.ca/en/security-intelligence- service/corporate/publications/china-and-the-age-of-strategic-rivalry/chinas- intelligence-law-and-the-countrys-future-intelligence-competitions.html)

<comment><USER32> Same is true for Australia, IIRC.

<comment><USER33> Source?

<comment><USER34> [https://gizmodo.com/australia-s-new-encryption-law-is- forcin...](https://gizmodo.com/australia-s-new-encryption-law-is-forcing-tech- companie-1835074557)

<comment><USER33> Seems to be very different from the above. One is about Chinese citizens the other is about Australian companies and even then, only technology based parts of them.

I as an Australian don't appear to be facing the gulag if Scomo calls me up and asks me what the Balinese are up to (I'm in Bali) and I tell him to shove it.

</comment></comment></comment></comment></comment><comment><USER35> Gitlab decided to not hire people living in China/Russia because of all risks linked to the Chinese/Russian government.

Isn't censoring one of their employee to not enflame the situation would be what China/Russia would do with their citizen for the same reason? kind of an ironic situation.

<comment><USER36> There's certainly irony, or at least contradiction, here; but there's also a huge difference. In North America, companies regularly try to censor their employees; in China, the government regularly tries to censor its citizens. In both cases though, the government is the only one with the authority to enact violence on its citizens. So while the most Gitlab can do is fire Candice, or censor communications she makes on their platform; in China, such dissension could get you locked up, exiled, or disappeared.

Note: I have no love for the sort of thing Gitlab is doing here. It's petty.

<comment><USER37> > So while the most Gitlab can do is fire Candice, or censor communications > she makes on their platform; in China, such dissension could get you locked > up, exiled, or disappeared.

This is a bit of a short-sighted argument, because in our times, pretty much everyone lives beyond their means, from paycheque to paycheque; if you're a tech worker in SF, you're probably not an exception to this rule, either. So, if you suddenly find yourself out of a job, and potentially unhireable due to your unwillingness to compromise on issues such as these, then how's that much different from being locked up, exiled or disappeared? And you have to remember, Epstein didn't kill himself, either.

</comment></comment></comment><comment><USER38> We use GitLab self-hosted at my company so I've been following this for a while.

My speculation is there's pressure for the C suite to push this Russia and China hiring ban for some reason. Looks like the board is telling the CEO this has to happen or they're in negotiation talks to be acquired by a big company like Google who wants this to happen now and the backlash to have passed by the time it's announced. So this will happen whether it's illegal or not (and it looks like it will and is illegal) but the risk will cost less than the reward.

If they go to court they spend at most a few mil fighting it over the course of a few years and the executives walk away super rich anyway. If they don't go to court they walk away even more rich. But if they don't do it they might rely on an IPO that's looking shaky because of this bad decision making for the past 2 months. So even if it's illegal, it still makes sense to do this. It looks like an exit strategy because they will never be personally liable.

She probably sees this and knows everything going on behind the scenes, but she won't walk away super rich from this but could lose her law license by engaging in discrimination.

<comment><USER39> No need to speculate, it's right there in the GitLab issue. The now-resigned director of risk and global compliance Candice Ciresi wrote this six days ago [0]:

"The countries selected were not chosen because of legal requirements, they were not chosen based on risk, they were not chosen based on political climate (as other countries are facing heightened sanctions from the US). I do hope they were not selected because a customer asked for it - or that could violate anti-boycott laws. In fact, having no objective basis for the restrictions is not conservative - it is careless. (Please let me know immediately if a customer has requested that we not do business with any particular country as that may be a reportable event.) I recommend against proceeding until you have developed a sound basis - that gets applied equally - for any exclusion of any country."

To which VP of Engineering Eric Johnson replied:

"I appreciate your position. Please be aware there is an active, time- sensitive contract negotiation linked to this matter. And you need to advocate to the DRI that the company walk away from that contract in order to enact your proposal."

See also her further comments in [1].

[0] [https://gitlab.com/gitlab-com/www-gitlab- com/issues/5555#not...](https://gitlab.com/gitlab-com/www-gitlab- com/issues/5555#note_237491303)

[1] [https://gitlab.com/gitlab-com/www-gitlab- com/issues/5555#not...](https://gitlab.com/gitlab-com/www-gitlab- com/issues/5555#note_239078066)

<comment><USER12> > "I appreciate your position. Please be aware there is an active, time- > sensitive contract negotiation linked to this matter. And you need to > advocate to the DRI that the company walk away from that contract in order > to enact your proposal."

Could this public backlash sink that deal?

</comment></comment></comment><comment><USER40> Extremely unprofessional behavior, especially for someone with a law degree. Three serious issues:

#1: She shouldn't be speculating about legal liability in a non-privileged medium. Even if she's correct, the risk is too high that her statements will later be quoted out of context. Keep it in a privileged medium, ideally an in- person meeting or phone call. This is absolutely basic stuff, and I'm sure it's taught even at Mitchell Hamline.

#2: Even if you disagree with a decision, don't leave a written record that you believe your company is legally in the wrong. There are exceptions (you believe you'd be personally liable, and you want the paper trail to make it clear you didn't make the decision), but there is absolutely no reason to make that record public.

#3 (Related) Don't burn bridges on your way out the door. This isn't specific to law - it's just good professional practice. The world is smaller than you think, and you're poisoning your professional network. Doing it publicly is even worse. Why would you be willing to hire someone who has demonstrated that they will publicly torch your company if you make a significant decision they disagree with.

<comment><USER41> Do you think it's possible that any potential liability could already have been exposed when the issue itself ( [https://gitlab.com/gitlab-com/www- gitlab-com/issues/5555](https://gitlab.com/gitlab-com/www-gitlab- com/issues/5555) ) was opened, prior to compliance becoming aware of it? It contains the statement:

"In e-group on Monday October 15, 2019 we took the decision to enable a "job family country-of-residence block" for team members who have access to customer data. This is at the expressed concern of several enterprise customers, and also what is becoming a common practice in our industry in the current geopolitical climate."

It could be that better legal scrutiny during contract negotiation might have prevented this becoming an engineering, hiring and compliance concern.

<comment><USER42> Your liability would be larger if you were known to have ignored qualified legal advice that it was risky.

Generally you don't read advice that says 'I believe doing X is illegal' because it doesn't get to that point.

I can't help but think there are other, quieter, lawyers involved.

</comment></comment></comment><comment><USER43> There is not much substance to go by. Yet, with recent events/drama her resignation feels suspicious to put it mildly.

I suppose everyone expected the CFO to drop, instead.

</comment><comment><USER44> I don't understand why GitLab is doing these things. Even on behalf of Sourcehut, there are subsets of the industry that I don't really try to compete with GitLab on. They have a place in this ecosystem and they're working to undermine it. They're making a void that I, even as a competitor, don't want to and am not prepared to fill. The community is going to suffer for their missteps.

I feel really bad for their employees. If I could help, I would, but Sourcehut isn't big enough to provide another employment option for them. To any GitLab employees who know something I can do to help, or just want to talk, I can lend a sympathetic and private ear at email@example.com.

<comment><USER45> Someone told Gitlab they'll pay them $XXX/year but only if Gitlab has no employees in China/Russia in sensitive roles. Gitlab decided the money is worth it since they have bills to pay. Doesn't seem very mysterious to me.

There's many stories of companies only letting people use burner laptops if they go to China and Russia so it's not a very far fetched contract requirement.

<comment><USER46> I know several companies, including one I've worked for before, with very strict no company property laptop or phone policy for entering China.

Issues were mainly related to IP and data sovereignty.

<comment><USER47> My current employer maintains a list of banned countries. While there's nothing stopping me from going to any of them, I am not allowed to bring my laptop into the country, and accounts will generally be locked during the duration of travel.

I'm honestly not seeing what the problem is with this policy. Gitlab's reaction to the outrage has been incredibly poor, but the policy itself seems sane based on IP laws and data protection laws in certain countries.

</comment></comment></comment></comment><comment><USER45> I'm curious about something. In one of her cited comments Candice Ciresi, the director, mentions that if the ban on Russia/China is due to a client request then it:

>could violate anti-boycott laws

Does anyone know specifically which laws she's referring to? Many companies have requirements on data not being accessed by individuals outside of certain countries or being sent outside of certain countries. Others have restrictions on not bringing company property into certain countries.

<comment><USER48> You can read about them here: [https://www.bis.doc.gov/index.php/enforcement/oac](https://www.bis.doc.gov/index.php/enforcement/oac)

<comment><USER45> Based on my reading there are two laws in question:

* Tax Reform Act: This seems to only penalize supporting an existing boycott by another country of a third country [1]. As there is no government boycott of Russia and China (at least not in countries these clients are from I'm guessing) this shouldn't apply.

* Export Administration Act: This also specifically says it related to boycotts conducted by a country against another country the US is friendly with [2].

I'm open to someone pointing out my misreading of these laws but it seems that they only apply to government mandated boycotts. So, to me, clients are free to require restrictions if there are no government boycotts in place.

[1]: [https://www.irs.gov/pub/irs- soi/03-04boycott.pdf](https://www.irs.gov/pub/irs-soi/03-04boycott.pdf)

[2]: [https://www.govinfo.gov/content/pkg/CFR-2019-title15-vol2/xm...](https://www.govinfo.gov/content/pkg/CFR-2019-title15-vol2/xml/CFR-2019-title15-vol2-part730.xml)

<comment><USER49> The violation may have been the lack of appropriate reporting. [1] mentions that "unsanctioned boycotts" must be reported.

Later in the comments she mentioned that the contract in question was screened and found to not actually be considered a relevant event for anti-boycotting laws. So whatever her initial concerns were, they were allayed by an actual review of the relevant request.

Reading through the conversation as a whole, it appears that the customer/contract in question didn't explicitly request Gitlab to take the course of action they decided on. Gitlab proactively decided that the action just happened to be a crude but effective way to comply in a timely fashion with the data restrictions the customer wanted, since their infrastructure itself currently doesn't have granular enough security controls around data access to comply with what the customer request was.

[1] [https://www.bis.doc.gov/index.php/enforcement/oac#whatmustbe...](https://www.bis.doc.gov/index.php/enforcement/oac#whatmustbereported)

</comment></comment></comment></comment><comment><USER50> Who would've thought version control software would have so much public internal drama...both Github and Gitlab.

<comment><USER29> because it all comes down to the root cause:

the attack on an area which until now couldnt care less about politics. now in the context of "free speech" we try to brake the last knowm union out there in the world. developers, who only let code speak so far.

<comment><USER51> Technology always cared about politics. Exactly what about missiles is apolitical? What about telemetry and data collection?

Do not conflate ignorance with impact.

<comment><USER52> _> Exactly what about missiles is apolitical?_

"Once ze rockets are up, who cares where they come down? That's not my department, says Wernher von Braun" [https://youtu.be/QEJ9HrZq7Ro?t=16](https://youtu.be/QEJ9HrZq7Ro?t=16)

</comment></comment></comment></comment><comment><USER53> Looks like Gitlab has censored her spreading the message of her resignation as well, nice.

<comment><USER29> once an environment got infected with "political correctness" and "censorship" in the name of "free speech" that environment becomes toxic. see.

<comment><USER54> From what I'm reading here:

(1) Gitlab decided they won't hire people living in certain countries

(2) This appears to be motivated by the politics of business

(3) An exec who spoke up against it tendered her resignation out of principle

(4) They're trying to suppress conversation about that

Please don't try to abstract "this is all the fault of those SJWs pushing political correctness" from this story.

I appreciate from your comments that you think it'd be just great if we could keep politics out of business and lament that the Great Culture War has come for coding, and I get it. The Great Culture War has come for everything, though. Science fiction. Movies. Video games. Furries and Bronies.

Here's the thing: this isn't the fault of a small number of loud people making things political that weren't before. All these things were _always_ political -- we just weren't having our noses rubbed in it until relatively recently. Making your lead video game character a woman, or black, is a capital-S Statement because making them a white male is _also_ a capital-S Statement. Trying to increase the number of women in STEM through affirmative action policies of one kind or another is obviously a capital-S Statement, but saying "hey, the fact that there are no women in science is itself proof that women just don't science well" is also a capital-S Statement. When your e-sports champion makes a capital-S Statement about Hong Kong protestors and you suspend him, suspend his camera man, and go into a massive PR defense about how gosh darn non-political you are, you are absolutely making a capital-S Statement.

As I observed before, the old Rush lyric about "when you choose not to decide, you still have made a choice" holds true whether we want it to or not. You can passionately argue that politics _shouldn 't_ affect software companies and coding jobs, but they do. "You shouldn't try to affect your employer's business practices, you should just leave if you disagree with them" may not be _intended_ to be political, but it will have political _effects_ just as much as the reverse will: either the employer changes business practices to be more in line with what the employees are comfortable with, or the employer ends up with employees who are comfortable with their business practices.

<comment><USER52> _> Trying to increase the number of women in STEM through affirmative action policies of one kind or another is obviously a capital-S Statement, but saying "hey, the fact that there are no women in science is itself proof that women just don't science well" is also a capital-S Statement._

I don't think anyone talking about being "nonpolitical" would disagree that both of those are political acts.

Would you argue that someone who has not made a statement or evinced an opinion in either direction is still engaging in a political act?

<comment><USER54> I doubt such a person would be _trying_ to engage in a political act, certainly, but I'm not sure I can make a blanket yes-or-no statement about that. Take Anduril, Palmer Luckey's startup dedicated to building a "virtual border wall." Is someone who works there really being nonpolitical even if they're personally keeping all their opinions to themselves?

</comment></comment></comment></comment></comment><comment><USER30> Off-topic, but I wonder if Gitlab employees have some way to filter the discussion, or if they have to manually skip posts by random people.

<comment><USER11> We have to manually skip posts by random people.

</comment></comment><comment><USER55> I like my infrastructure to be nice and stable. I realize that all the recent drama MAY not be a cause for concern, but I imagine this makes Gitlab a harder sell, in a world of many choices.

<comment><USER30> And this is how we discriminate against transparency. This sort of drama happens all the time in many companies, we just don't see it publicly.

<comment><USER56> Prior to the recent debacles, they were rewarded for their transparency.

</comment></comment></comment><comment><USER57> Gitlab's insistence of adjusting remote pay based on geography (and paying below market in general) never sat well with me. You pay people based on the value they provided, period. It's ridiculous to think you would take a pay cut at your current remote job just because you move to a cheaper city.

It does not surprise me one bit that where there was smoke, there's fire and a bunch of questionable behavior is going on behind the scenes.

<comment><USER24> I used to think that, but now I think it's completely fair and they way they present is completely honest. So I'm all for it, at least the way they have implemented it.

As an employer in a capitalistic society, you do _not_ pay people based on value provided. You pay based on a reverse dutch auction method. This ensures you are getting an employee at the lowest possible cost, which is your financial duty. Anything more is excess expense. This is why unions are so important: to band labor together such that there is no opportunity for a prisoner's dilemma situation, where things become a race to the bottom.

It is the employer's duty to wring as much value out of an employee as possible, not to pay them for that value. Paying by value provided would introduce so much inequality it'd be awful.

So anyway, paying market rate (or the identical fraction under/over everywhere) at any location is just like having an office in every city where you _don 't_ have a WFH policy at all and employees are competing against other local employees. So gitlab employees that have self-selected to live and work in the same location, wherever it may be, are bidding themselves against other employers in that location. gitlab gets the edge over local employers who presumably would require the employee to show up at the office, for those people that don't want to go in the office at all, for whatever reason. And therefore it's justified that gitlab pays less than market because they are only selecting for those employees that value the WFH as opposed to just "work close to home". And this justification is proven because they are actually able to employ people at "less than market".

QED

<comment><USER58> Your reasonable arguments are wholly undermined by the jackhole manner you end your comment.

<comment><USER24> i think you're reading too much into it.

<comment><USER58> TBH I don't know what I was thinking...

</comment></comment></comment></comment></comment><comment><USER42> It seems more likely that, for unexplained reasons, she was not in the loop on the area she was employed to work on (Global Compliance) and decided therefore to resign. She may have reasoned that this type of policy would have made working in BRICS countries very difficult. Ironically, these countries routinely impose residency and nationality requirements, local hosting and censorship etc.

The lack of nuance in her public communication is quite strange for a lawyer. 'Retaliatory behavior' \-- against whom are they retaliating and for what? A serious allegation. And other strange and strongly worded warnings of illegality, but which have no basis in law that I can see. So, bluster? Trying to win an argument?

I can't help but think that remote work is not for everybody, and especially not for lawyers.

<comment><USER59> She said there would be no issues if it was a legal requirement. But there could be issues if it was a demand by a customer.

The CFO replied it was part of a possible contract.

</comment></comment><comment><USER22> Plot twist: Gitlab censors message from Director of Compliance as violating code of conduct. Just wow.

<comment><USER60> This issue has 1417 subscribed users, so all of them received the uncensored email. It's completely pointless.

</comment></comment><comment><USER61> And I thought we already had this quarter's GitLab drama in the GitLabTrackerGate ;)

<comment><USER62> This is part of the same drama, as Candice Ciresi was the one who told other people at GitLab management that what they are doing (opt out tracking) is illegal in multiple juridictions.

I'm interested in what her next job will be, as hopefully another company will value her knowledge and integrity.

</comment></comment><comment><USER63> 1\. Company is applauded for strong morals

2\. Company raises a ton of money

3\. ???

4\. Company appears "divorced or original morals"

<comment><USER64> Are we surprised that companies choose money over morals? That seems to be the status quo for most companies in the U.S. currently.

There are, and always will be exceptions depending on the particular people involved, but generally if you as a company want to preserve your moral ground, do not take external funding.

</comment></comment><comment> TA-blahhh sytse is awfully quiet in the comments today... usually he has a reply for everyone whenever a Gitlab/Git/VCS story comes up

<comment><USER40> Maybe he got a real lawyer.

</comment></comment><comment><USER65> Do any of you have a recommendation for an alternative to GitLab and GitHub?

<comment><USER12> What's the issue with GitHub?

<comment><USER66> Last week people were mad that Microsoft complied with an order from the Spanish government to remove a controversial repo: [https://news.ycombinator.com/item?id=21395629](https://news.ycombinator.com/item?id=21395629)

And before that some anti-Microsoft people were mad in general that MS bought GitHub.

</comment></comment></comment><comment><USER67> Hmmm, I wonder what sort of large partnership could be so concerned with these two countries? Could it possibly be something with US intelligence agencies?

</comment><comment><USER68> I hope the contract that sparked this whole fiasco is big enough to cover the ton of goodwill they've lost (and keep losing) over this issue.

</comment><comment><USER69> How do we know her resignation is about hiring devs based in Russia/China and not about something else?

</comment><comment><USER70> I'm out of the loop here, what is going on with Git Lab? They were well regarded and now they are not?

<comment><USER71> I found more interesting information in the Reddit thread.

[https://www.reddit.com/r/gitlab/comments/dtfccm/gitlabs_dire...](https://www.reddit.com/r/gitlab/comments/dtfccm/gitlabs_director_of_risk_and_global_compliance/f6x00sa/)

\---

 _Ciresi_ : The countries selected were not chosen because of legal requirements, they were not chosen based on risk, they were not chosen based on political climate (as other countries are facing heightened sanctions from the US). I do hope they were not selected because a customer asked for it - <USER2> that could violate anti-boycott laws. In fact, having no objective basis for the restrictions is not conservative - it is careless. (Please let me know immediately if a customer has requested that we not do business with any particular country as that may be a reportable event.) I recommend against proceeding until you have developed a sound basis - that gets applied equally - for any exclusion of any country.

 _Johnson_ : I appreciate your position. Please be aware there is an active, time-sensitive contract negotiation linked to this matter. And you need to advocate to the DRI that the company walk away from that contract in order to enact your proposal."

\---

I think Ciresi has been 2/2 in the recent GitLab scandals (she was also against the telemetry issue). The most obvious version of the story is now Ciresi has "gotten in the way" of sales twice now and is being retaliated upon. I'll admit, its rare to see a company flush its morals down the toilet while chasing revenue.

</comment></comment><comment><USER72> I am so happy I resisted transitioning from GitHub to gitlab and self-hosted instead.

</comment><comment><USER73> I just wish that GitLab didn't have weekly (or more frequent) outages. Is this because they are all distracted by the drama ongoing there?

</comment><comment><USER74> Sourcehut is pretty great, y'all.

</comment><comment><USER75> tl/dr...Director of Compliance at GitLab resigns because they can't force company to comply.

</comment><comment><USER76> I imagine a Director of Compliance in the Russian or Chinese government has more authority to force people to comply.</comment>


Cmdrslog - Chrome Extension to save screenshots on tab refresh - <AUTHOR> https://github.com/enjalot/cmdrslog

<comment><USER2> author here, just started this because i was surprised there wasn't something like it out there already. i wanted something more automatic and specific to my projects than timelapse.

i'm currently struggling against the FileSystem API and getting the images out of the browser in a reasonable fashion.

up next i want to work on a simple ui to manage the urls you are tracking, as well as enabling a time delay (one of my projects can take some time to load on refresh).

love any help/feedback!

<comment><USER3> awesome, I have been documenting web development projects taking screenshots at each x seconds, but this make more sense, to just capture the browser upon refresh.

are there any chances to see this soon in the Web Store (to keep up with the updates)?

</comment></comment><comment><USER4> I made something similar, but using Git and phantomJS instead.

<https://github.com/Tanner/Time-Machine>

</comment><comment><USER5> I really like the idea behind this. It'd be a nifty way to make a timelapse of developing a project over time, because then it'd just be a matter of throwing the files together and making a gif or a video out of them.

What kind of compression is this using? I'd just be worried about high-res screenshots sucking up disk space over a long period of development.

<comment><USER6> Looking at the source it looks like it's all PNG files. So shouldn't be horrendous. JPEG would be smaller but I wouldn't want to go that far since they're good for history and making other things out of.

</comment></comment><comment><USER7> Curious, what are some use cases for this?

<comment><USER2> I wanted it because i realized that a project i'm working on has changed a lot over the past several months. would be cool to have a visual history of the evolution. I take manual screenshots but thats too unreliable, and timelapse software is too far on the other end of the spectrum as overkill.

the best kind of data collection is the kind you don't have to think about (and that is only collecting what you want it to...)

</comment></comment><comment><USER8> This is a very cool idea. Is there any intention to tie this to your commits?</comment>


How to Get Into Harvard  - <AUTHOR> http://theatlantic.com/education/archive/2014/06/how-to-get-into-harvard/373726/

<comment><USER2> I wonder why this was posted now, aren't college admissions closed?</comment>


Perl6: The World's Worst ML? - <AUTHOR> https://aearnus.github.io//2019/04/05/perl6-is-the-world-s-worst-ml <comment><USER2> To put it a bit over the top: In every other language you write code. Perl is magic and you write spells. It suppose to be this way, because the way it works is sorcery. I don't know about you, but I always wanted to be a wizard, not a typist.

<comment><USER3> > In every other language you write code. Perl is magic and you write spells.

Really? Every other language?

[https://mitpress.mit.edu/sites/default/files/sicp/full- text/...](https://mitpress.mit.edu/sites/default/files/sicp/full- text/book/book-Z-H-9.html#%_chap_1)

> The evolution of a process is directed by a pattern of rules called a > program. People create programs to direct processes. In effect, we conjure > the spirits of the computer with our spells.

> A computational process is indeed much like a sorcerer's idea of a spirit. > It cannot be seen or touched. It is not composed of matter at all. However, > it is very real. It can perform intellectual work. It can answer questions. > It can affect the world by disbursing money at a bank or by controlling a > robot arm in a factory. The programs we use to conjure processes are like a > sorcerer's spells. They are carefully composed from symbolic expressions in > arcane and esoteric programming languages that prescribe the tasks we want > our processes to perform.

> A computational process, in a correctly working computer, executes programs > precisely and accurately. Thus, like the sorcerer's apprentice, novice > programmers must learn to understand and to anticipate the consequences of > their conjuring. Even small errors (usually called bugs or glitches) in > programs can have complex and unanticipated consequences.

> Fortunately, learning to program is considerably less dangerous than > learning sorcery, because the spirits we deal with are conveniently > contained in a secure way. Real-world programming, however, requires care, > expertise, and wisdom. A small bug in a computer-aided design program, for > example, can lead to the catastrophic collapse of an airplane or a dam or > the self-destruction of an industrial robot.

...

> The dialect of Lisp used in this book is called Scheme.

<comment><USER4> "we conjure the spirits of the computer with our spells" is one of my favorite quotes about computers with "Computer programming is an art form, like the creation of poetry or music" (Donald E. Knuth)

<comment><USER5> I have to disagree. Programming is certainly a _craft_ , but it is not an art form. Programming is fundamentally a means to an end, whereas art can be an end in itself.

Programming is much closer to swordsmithing. It is possible to create a sword that is both deadly and beautiful, but the former always takes precedence over the latter. Furthermore, there are clearly-defined constraints: you cannot smith an axe and call it a sword, just as you cannot write a web scraper and call it a raytracing engine. Art does not have this limitation. In any art medium, you can imagine creating a horribly mangled artifact, like a canvas smeared with random colors, or a piece of discordant music, or a violently disorienting video game -- and yet these would still be considered art. But a program full of syntax errors is like a cracked sword without a hilt: useless. Art cannot be useless.

<comment><USER6> A cracked sword without a hilt can't be called a sword, but it can be called art.

A program full of syntax errors may not be a valid program, but it can be valid art.

<comment><USER7> It may be art, but it is not programming anymore. Therefore reinforcing the idea that programming is not art.

<comment><USER8> What makes a valid program is not easy to define.

Is this a valid program?

Well, probably not, right now as I'm writing this. But all it takes is someone writing an interpreter that maps words to a suitable instruction set. It probably won't do anything sensible, where do you draw the line? Translating code to other forms and back has a long history _that very often has been about doing it for the sake of it_ rather than for functionality or practicality.

I've linked to this elsewhere:

[https://www.reddit.com/r/programming/comments/b9fqwj/93_of_p...](https://www.reddit.com/r/programming/comments/b9fqwj/93_of_paint_splatters_are_valid_perl_programs/)

But much more famous were the many incarnations of DeCSS that sought to to blur the lines between code and other expression:

[http://www.cs.cmu.edu/~dst/DeCSS/Gallery/](http://www.cs.cmu.edu/~dst/DeCSS/Gallery/)

<comment><USER7> A valid program in a given programming language has a precise definition.

<comment><USER8> Yes, but a given string of text does not specify a language.

"Is this a valid program?" is syntactically and semantically valid Ruby for example. But in itself it will just throw an error [some might argue this means it is not a valid program, but these errors are part of the normal runtime control flow of Ruby]. Depending on environment, however, it can do something else.

E.g. if your environment contains this:

        def program?; 42; end
        def valid(arg); arg; end
        def a(arg); arg; end
        def this(arg); arg; end
        def Is(arg); arg; end

Then the string

        Is this a valid program?

Will execute and return 42.

A lot of random text will be valid programs in any number of existing languages without any intent for them to be so. But _any_ random text can be valid programs in an infinite number of possible languages that does not yet exist.

So the question of what is a valid program is very much a philosophical one about whether or not the intent of the author matters in the face of processors that can re-interpret the data in ways it was not intended.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> It's been a while since I played with Perl. I haven't looked at Perl6 at all. But reading Damian Conway's addendum at the bottom, really makes me want to play around with it.

Mostly this:

>Ultimately, I think that we're pretty happy with Perl 6 being the "World's Worst ML", so long as it can also (simultaneously) be: the "World's Worst Smalltalk", the "World's Worst Lisp", the "World's Worst Snobol", the "World's Worst QCL", the "World's Worst Erlang", the "World's Worst Prolog", the "World's Worst Python", the "World's Worst C", and even the "World's Worst Perl 5".

Because that was one of our design goals too. :-)

<comment><USER10> Wait what prolog?

<comment><USER11> Similarity that jumps out to me is that both include a large degree of support for grammars.

</comment></comment></comment><comment><USER12> It's the worst ML because it doesn't look exactly like Haskell? Oh, no, it's just click baiting using an easy target.

<comment><USER13> While I won't deny that using an eye catching title like that got me more clicks, I was trying to joke around with regards to Perl 6's flexibility.

It's the worst ML because it's not an ML at all -- but it has the impressive ability to be able to emulate the behavior of one.

<comment><USER14> Considering the amount of crap that is heaped on Perl 6 for even daring to exist, maybe in the future you might consider using language that highlights something that you find impressive.

Otherwise it comes off as more cheap shots. Thanks for adding your comment, though! It helps :)

</comment></comment></comment><comment><USER15> Since it's a Perl article, can we golf? Just as Conway shows that we can re- write the Perl, also the Haskell can be re-written. In general, manually dispatching by pattern matching on a `Maybe` type I think indicates that you should be using `maybe`; I would want to replace

        print_maybe :: Show a => Maybe a -> IO ()
        print_maybe (Just m) = print m
        print_maybe (Nothing) = putStrLn "nothing"

by

        print_maybe = print . maybe "nothing" show

<comment><USER13> not quite the same as what I wrote -- it would be more akin to:

        print_maybe = putStr . maybe "nothing" ((++ "\n") . show)

or maybe something like:

        print_maybe c = c >>= (\d -> print d >> putStr "\n")

but that's already too long to finish

<comment><USER15> According to [https://hackage.haskell.org/package/base-184.108.40.206/docs/Prelu...](https://hackage.haskell.org/package/base-220.127.116.11/docs/Prelude.html#v:print) , `print` already appends a newline, so I think that `print m` is not the same as `putStr $ show m` and hence that the refinements you suggest are unnecessary.

</comment></comment></comment><comment><USER16> Sometimes I feel my only purpose here is to repost xkcd:

[https://xkcd.com/224/](https://xkcd.com/224/)

<comment><USER17> At least as good a purpose as any other. I would even go as far as claiming it as one of the finer purposes one can have. Using ones abilities selflessly in a way that helps bring a smile peoples faces is one of the finer aspect of humanity, at least if you ask me.

Myself I mostly write too long, slightly dry comments that get mostly ignored, or entirely misunderstood. Or so it seems at times. On the positive side, I feel I'm getting to the point a bit quicker, and with less triple negatives these days, any time now I might even get my point across in less than a few hundred words. Compared to you that get it across in 9 words, and the odd dozens of syllables, I still got ways to go!

</comment></comment><comment><USER18> what is ML?

<comment><USER19> [https://en.wikipedia.org/wiki/ML_(programming_language)](https://en.wikipedia.org/wiki/ML_\(programming_language\))

<comment><USER20> > ML (Meta Language) is a general-purpose functional programming language.

\---

Your comment would have been more useful with a short citation, but nevertheless, thanks! I didn't expect to be able to find that on Wikipedia (I assumed it was 'multi threaded language' or so).

So ML is a functional language. Apparently functional languages are not quite obscure enough, we need more words and abbreviations for things!

<comment><USER21> Meta languages normally imply that you can program the language syntax itself via an extensive macro system.

But then, I'm not sure perl has that facility at all.

<comment><USER22> It does. It's small and hacky, but powerful enough to do things like [http://p3rl.org/Moops](http://p3rl.org/Moops)</comment></comment></comment></comment></comment>


I Am Spartacus: A guide for journalists - <AUTHOR> https://medium.com/@davepell/i-am-spartacus-cea182c05978 <comment><USER2> Dave Pell runs a top 10 news aggregation mailing list with commentary that sends every day. It is the only one I subscribe to and I have been directed to amazing journalism by him. He really is a top read.

[http://nextdraft.com/](http://nextdraft.com/)</comment>


Show HN: Dependency Update as a Service - <AUTHOR> http://tachikoma.io/ <comment><AUTHOR> Appreciate any feedback :)

We want programmers to focus on their problem, not on dependency hell. We build 'Bundle Update as a Service' for Ruby project, if you activate repo, then Tachikoma.io executes `bundle update`, and send pull request. To merge, or not to merge: that is only you should do. CI service(e.g. TravisCI, CircleCI) will help you. 'David Update as a Service' for Node.js and 'Carton Update as a Service' for Perl too.

Here is the link to the service concept from my Travis-CI Meetup talk: [http://sanemat.github.io/talks/20140917-travis-ci-meetup- tac...](http://sanemat.github.io/talks/20140917-travis-ci-meetup-tachikoma- io/)

Thanks!

<comment><USER2> Feedback: Find a native English speaker to clean up your copy. It shouldn't be expensive. Maybe a HN reader might even do it as a favor. Right now, it reads like the entire homepage was passed through Google Translate. Not the professional image you want when you're hoping to get people to buy in to your service.

<comment><AUTHOR> Thanks! I'll ask a native english speaker to fix my text.</comment></comment></comment>


Smartphone shipments decline 6.3% - <AUTHOR> https://www.idc.com/getdoc.jsp?containerId=prUS43548018 <comment><USER2> Same thing that happened to PCs. People are finding that their 3-5 (or more) year old devices are still perfectly adequate for their needs.

<comment><USER3> > Same thing that happened to PCs.

What happened to PCs was market saturation followed by people choosing smartphones over PCs.

It is inevitable that smartphones sales will stall and the growth will decline because the smartphone market is saturated.

<comment><USER4> And the market is saturated exactly because the consumerist need to continuously renew the mobile phone is gone, beyond a few percent that always need to show they own the latest gizmos.

</comment></comment></comment><comment><USER5> yet they keep raising prices of flagship to see where is the limit

or maybe it actually doesn't matter that shipments are failing since prices are going up and market it's already saturated outside third world countries like India and lower</comment>


Ask HN: Has it gotten easier or harder to hire developers as your company grew? - <AUTHOR> <comment><USER2> Personally, I find it has not been easier or harder to hire developers over the last 10 years.

Even though there's been an increased interest in the field from many young (and less young) people for many years, the fact remains that this also came with a steep increase in demand for those same people.

Once you get candidates in front of you, you have to assess whether they are worth your time or if you should move on to a _possibly_ better (or worse) candidates. Unfortunately, you sometime (read: most of the time) do not have the luxury of time before taking that "leap of faith" on someone due to the speed at which developers get picked up.

Some people will say that they can easily filter the good from the bad from spending a few hours with someone, I still find that there is a substantial portion of uncertainty when moving forward with a hire unless you have an overwhelming number of candidates applying and can afford to "try out" quite a few of them.

I try to stay realistic when selecting candidate and aim for the good ones, the ones that will get the job done. Every once in a while, you'll get lucky and find a great one.

Anyway, YMMV.

PS: Depending on where you are located and the type of business you are in, you also need to factor in the fact that you are battling out for the same talent with high profile or well funded companies in your area.</comment>


First encounter: COMPUTE magazine and its glorious, tedious type-in code - <AUTHOR> https://arstechnica.com/staff/2018/11/first-encounter-compute-magazine-and-its-glorious-tedious-type-in-code/ <comment><USER2> I remember typing in huge hex data dumps that were printed with smudgy ink on poor quality paper in those early magazines. Sometimes we didn't make a lot of mistakes.

We were dedicated to our hobby, that's for sure.

</comment><comment><USER3> I remember typing in a whole game from COMPUTE or maybe another magazine on my Apple IIe. It almost worked but was slightly buggy. We went over line by line making sure we didn't have a syntax error. Never found it- I think it was published buggy :(</comment>


Rust/WinRT Brings Microsoft Closer to Adopting Rust Internally - <AUTHOR> https://www.infoq.com/news/2020/05/rust-winrt-microsoft/ <comment><USER2> Imagine a world wide web where Microsoft buys Mozilla because of a programming language they happened to develop.

<comment><USER3> I think Canonical will be the next major "earth-shattering" acquisition that Microsoft makes. Ubuntu is so widely deployed as the defacto Linux OS everywhere from Linux CI images, AWS instances. Azure. After IBM bought Red Hat it seems like there's a run on owning the Linux "ecosystem", even if you can't own the code. Microsoft is demonstrating that they want to own the new world of development/deployment ecosystem end-to-end. Github, VS Code, NPM.

Next will be the operating system that everyone runs their stuff on. Doesn't WSL already default to Ubuntu anyway?

Edit: also isn't Shutteworth still funding Canonical out of his pocket? The last I checked it wasn't nearly profitable.

<comment><USER4> I think that would get a pretty close look from the justice department.

<comment><USER5> Would it? I don't believe that Canonical is anywhere close to dominating the Linux space, and MS is continuing its slow slide from total market dominance.

Under what theory would the justice department interfere?

</comment></comment></comment></comment><comment><USER6> BUILD 2020 is taking place this week, there are a 4 Rust related talks:

\- Expert Q&A: C#/C++/Rust WinRT Team

\- The 30 Min Beginner Rust Coding Challenge

\- Intro to Rust

\- Microsoft's Safe Systems Programming Languages Effort

More info at:

[https://mybuild.microsoft.com/sessions?t=%257B%2522from%2522...](https://mybuild.microsoft.com/sessions?t=%257B%2522from%2522%253A%25222020-05-19T00%253A00%253A00%252B02%253A00%2522%252C%2522to%2522%253A%25222020-05-21T23%253A59%253A00%252B02%253A00%2522%257D&q=rust&s=%257B%2522name%2522%253A%2522translate.refine.label.sort.relevance%2522%252C%2522type%2522%253A0%257D)

</comment><comment><USER7> Does Microsoft even use WinRT "internally"? Back in the day, e.g. Office would simply ignore all DevDiv and WinDiv bullshit and roll its own frameworks and even _custom controls_ libraries.

<comment><USER8> If you're racing to hit a deadline, you don't want dependencies on other teams.

So if the designers have drawn up the UI for the next major refresh, Office doesn't need to wait for the shell team to have implemented the controls, or for development to have them wrapped up in MFC.

If the dependencies already exist, you're on safer ground. Though team culture may choose otherwise; I understood Excel didn't like having any external dependencies.

<comment><USER9> Did excel not even use any math libraries? Seems kind of silly to re-create that wheel, espically when we've proven that many of our algorithms are mathematically impossible to improve, and excel is so heavily focused on math work.

<comment><USER10> You might enjoy this [0] post on a bit of the history of Excel math libraries

[0] [https://www.joelonsoftware.com/2006/06/16/my-first-billg- rev...](https://www.joelonsoftware.com/2006/06/16/my-first-billg-review/)

<comment><USER9> I did enjoy that! Thanks for sharing, it was really interesting.

</comment></comment></comment></comment></comment><comment><USER11> See also [https://news.ycombinator.com/item?id=23033451](https://news.ycombinator.com/item?id=23033451) from a couple weeks ago.

</comment><comment><USER12> So they're giving another candy, this time to developers who like/want to use Rust. Not bad for them.

My personal view/situation is a bit different. I think this is nothing more but yet another attempt by Microsoft to woo customers into a set of technologies/runtimes/APIs that are way more constrained that good ole Win32. On windows desktop GUI front I was using Delphi since 90s and barring few easily fixable hick ups what did work then works as a charm even now. So instead of wasting my time on their infinite ever changing set of front end tech I stayed on a proven path and that saved me a ton of money. And my desktop development is still the same with extra niceties as added multi platform ability and free and open source Delphi's alternative Lazarus/FreePascal combo.

<comment><USER13> Just to be clear, you think that _adding support for another language_ is Microsoft's attempt to _constrain_ Win32 developers?

<comment><USER12> I am asking you not to distort a context. That is not what I said. But just in case let me repeat it: Microsoft was for years and still is trying to move people from Win32 to a _more constrained_ platform by using various means.

<comment><USER14> You're thinking of UWP apps, which used to only allow winrt APIs, though nowadays UWP app can also access most of win32 APIs as well. UWP is more about the distribution model than the APIs (apps must be signed, are usually installed through the store, etc...)

The winrt APIs can be used from traditional desktop apps just fine, and mixed with win32 from within the same executable. They don't constrain anything. UWP, however...

<comment><USER12> _" UWP app can also access most of win32 APIs as well"_

Most and all are 2 different things. I've discovered limits immediately after investigating possibility of porting one of my apps.

 _The winrt APIs can be used from traditional desktop apps just fine_

WinRT based applications run in sandbox and have their own limits.

None of what you say has any relation to my original POV.

<comment><USER14> UWP apps run in a sandbox and have their own limits, e.g. most win32 api access requires special entitlements to work. WinRT is just a set of COM-based APIs, they don't inherently have any restrictioms on where or how they can be used.

</comment></comment></comment></comment></comment></comment><comment><USER15> I might have to see if the winrt bindings are better than the generic rust ecosystem. I think the idea of rust is a good one, but the language isn't really something I would ever recommend for a professional project at this point.

I can get around the fact that using rust sometimes feels like programming with one arm tied behind my back. The real problem is the ecosystem. I've hardly used rust enough to feel like I've got a really broad feel for the ecosystem, but the feeling I have at the moment is that its quite possible to hit deal breaker levels of problems when attempting to combine differing libraries into the same application. Particularity when one is using threads in an application. I needed to pass one libraries reference into a thread, where another library needed to have the instance used in a closure. It turned out to be impossible without either using unsafe code or adding additional traits to both libraries. A trick made much harder because I then had to wrangle cargo to pick up internally maintained versions of libraries instead of the main cargo repos.

So, I get the distinct feeling that rust is great if you can stick to a single threaded programs, or you don't rely on 3rd party libraries. Mix the two, and your in deep trouble.</comment>


Ask HN: My co-founder ghosted on me before an important meeting, what do I do? - <AUTHOR> Hello HN,
On Monday we have an important meeting to raise money. I'm the technical guy and I don't usually handle the meetings, but my co-founder has disappeared since last Sunday and doesn't answer my calls, emails, texts and Facebook messages (I receive read receipts from the Facebook messages but no response)
I'm not worried about the meeting on Monday, I'm prepared to handle the meeting myself, what I'm worried about is what should I do now? do I shut him out of the Github organization so he can't take the code and run? also should I suspend his email account so he can't access the files on Google Drive??
Our relationship before this happening was fine, I can't think of any reason that he might just ghost me.
Thanks for putting the time in to read this <comment><USER2> Don't do anything rash.

Cofounder could be having a mental breakdown and/or just have decided to get really drunk or stoned.

It could be something medical and/or embarrassing.

Some people have inner flakes that exert themselves at random times. I'd give it another week; during that week figure out:

a) How you can ensure this doesn't happen again if the guy comes back into the picture and b) What taking the hint actually entails. It should probably involve folding up shop, mailing papers, and starting something new without the cofounder.

</comment><comment><USER3> Talk to a lawyer. Unilaterally suspending his access might expose you to some legal risk.

</comment><comment><USER4> Quite possibly he's retained a lawyer and has been advised to stop communicating with you. Do you have a clear outline of ownership through contracts?

Also, is your meeting on July 4th...?

<comment><AUTHOR> I'm from Canada, we celebrate July 1st instead of 4th. We haven't incorporated, only a partnership agreement.

EDIT: yes we have a clear outline of ownership, each of us owns 50% and we have 4 years vesting.

</comment></comment><comment><USER5> Do you know any of the same people? Perhaps asking a mutual friend to reach out (and at least confirm that he's not handling a family emergency right now) might be in order.

<comment><AUTHOR> I've seen him commenting on facebook posts, sharing things, etc. I think he has access to the internet and the least he can do would be to send a message to me

</comment></comment><comment><USER6> Can we get an update?

<comment><AUTHOR> Still haven't heard from him!

The meeting didn't go well since it reflected poorly on us that one of the founders wan't present. I'm giving it another week as advised by other people here, in the mean-time I make sure to call him at least twice a day hoping to get to him

</comment></comment><comment><USER7> don't suspend his accounts yet . . . keep trying to contact him maybe he's unplugged from work over the Holiday week.

Email him Sunday, saying hey are you ready for the meeting on Monday, how was your holiday?</comment>


A free surveillance system that deploys instantly - <AUTHOR> http://homeojo.com

<comment><AUTHOR> This is a home surveillance system that works nicely for those who do not want to buy any camera. I simply put my old laptop there.</comment>


Facebook's new optical storage solution [video] - <AUTHOR> https://www.facebook.com/photo.php?v=10152128660097200 <comment><USER2> Another benefit of this system is that the storage media is immune electromagnetic pulse. So, even in the case of a large-scale EMP event our cat pictures and network graphs will remain intact and recoverable. :)

<comment><USER3> I assume SSDs are screwed by EMPs, but how does magnetic media fare (the tape/disk media itself, not reader/writer electronics)?

<comment><USER4> Wiped.

</comment></comment></comment><comment><USER5> Can anyone knowledgeable explain why they use Blu-Ray instead of tape backup? When would an organization use Blu-Ray, and when wouldn't then? Is this reflective of any kind of general trend?

<comment><USER6> I'm not knowledgeable, but some total guesses:

1) As blu-ray is a consumer product its probably manufactured in greater quantities than backup grade tapes, and therefore can be had lower in price, and there are more vendors to source them from. Similarly the drives themselves are cheaper.

2) Tapes aren't random access, therefore it's slow and cumbersome to retrieve single files.

<comment><USER7> 3) IIRC most tape storage technolgies are closed source. FB has been heavily pushing their open compute project. Using BDs get them past a lot of licensing problems.

<comment><USER8> I don't think LTO is any more proprietary than Blu-ray.

<comment><USER9> and LTO has way less licensing problems than Blu-ray and LTO-6 has a max of 2.5TB. LTO is also guaranteed to to read tapes from 2 generations earlier and write one generation earlier. Blu-ray has no such long term guarantee.

</comment></comment></comment></comment></comment><comment><USER10> My hopes were dashed when I realized that this wasn't a new type of optical hard disc, like holographic drive technology or something.

<comment><USER4> Maybe in a couple years: [http://rt.com/news/5d-nanostructured-glass-optical- memory-94...](http://rt.com/news/5d-nanostructured-glass-optical-memory-941/)

<comment><USER11> With Big Data Everything, we really need an Optical Storage System like Blu Ray but with 100x to 1000x the capacity.

</comment></comment></comment><comment><USER12> No comment on the access time and having only one drive means reading only one disc at once. This puts this storage solution in the realm of "I don't need this data within an hour" so I presume the application this system acts as redundancy for failed disks.

<comment><USER13> The guy was very explicit that this is a cold storage solution. Probably "backups of backups."

<comment><USER14> The Facebook open computer definition for "cold storage":

"where data is stored on disk but almost never read again, like legal data or backups of third copies of data — keep on increasing dramatically, there are huge demands for developing some form of cold storage system with the highest capacity and the lowest cost."

source: [http://www.opencompute.org/projects/storage/](http://www.opencompute.org/projects/storage/)

</comment></comment></comment><comment><USER15> Are these Blu-ray disks rewritable? If so, wouldn't this be a great tech for Amazon's Glacier service? I believe they currently depend of costly tape drives to store data.

<comment><USER16> Each LTO-6 tape cartridge stores 6TB of data. Each quadruple layer Blue-ray disk stores only 128GB. I am surprised that FB went with Optical Disk instead of Tape.

Optical jukeboxes/libraries for MO/DVD/CD used to be popular a decade or so ago and now considered antique. There is just not enough density with optical.

<comment><USER17> My guess: 1) Lower cost for drives (commodity drives). 2) The ability to (easily) seek to an arbitrary location on disk 3) Cost of BD burners are <$100; Cost per GB of disks is $0.025/GB. LTO-6 drives are $1000+, and cost per GB is around $0.012/GB. -- I think the cost works out actually, especially as the cost of blu-ray is still falling.

</comment></comment></comment><comment><USER18> Does anyone know what data is Facebook trying to archive? Old user posts? But that doesn't fit this usecase because of the high latency.

Or maybe its just a nice content delivery mechanism to the NSA. Just ship a bunch of blue-rays instead of pesky optical fiber interception.

<comment><USER7> FB is required by law to store all its credit card transactions that every singal FB ads account has for 6 years. (So are other US based companies that process credit cards)

<comment><USER18> Surely, credit-card info can't span 100s of terabytes, even if they record each and every transaction.

<comment><USER19> backups of images/videos/posts/everything

</comment></comment></comment></comment><comment><USER20> Facebook has built a novel implementation, but this isn't a new idea or product. Similar to how they used to buy servers and now build them to spec, they probably used to buy these and now design and build them.

[http://www.disc-group.com/products/bd-series-benefits/](http://www.disc- group.com/products/bd-series-benefits/)

</comment><comment><USER21> After I saw this on James Hamilton's blog the other day I did a quick check of BD-R versus 4TB HDDs cost per GB. Using whatever I could find after about 5 minutes of looking around, I came up with $0.05/GB for both types of media.

If anyone can provide a link to BD media for sale at a price that make this economical I'd be interested to know.

<comment><USER22> The saving is in power consumption for cold storage.

<comment><USER23> Are modern hard drives not rated to survive very long in spun-down, powered- down condition?

</comment></comment></comment><comment><USER24> Any guess on the total storage capacity in that rack and comparison to a similar sized magnetic storage?

<comment><USER25> From the video: 24 magazines/rack * 36 cartridges/magazine * 12 discs/cartridge * 50 GB/disc = 518TB/rack. Based standard dual-layer discs. I cannot comment on storage of our traditional spinning-disk racks.

<comment><USER26> Backblaze Pods are about 180TB, so 1800TB per rack. And a whole lot of power consumption.

</comment></comment></comment><comment><USER27> I was expecting some kind of optical fiber storage with reflecting crystals and shit.

This was a bit disappointing.

</comment><comment><USER28> I might be interested in cloud backup service which would backup my "keep forever" stuff, put them to optical disc and then mail the discs to me when they fill up.

Could be also an add-on service to existing online backup business.

</comment><comment><USER29> What about bit rot though? Some of my dvdr are no longer readable after 5 yrs, stored in very good conditions. Hdd backup, esp. with Zfs can provide very good bit rot protection.

<comment><USER30> These are high grade guaranteed for 30+ years. There's also 1000 year grade blu rays out there.

<comment><USER29> I had failures of both "archival" quality DVDs and SD cards before, just after a year or two after last backup.

Do you have any links on the methodology used to measure the 30+ or 1000yr grade for a blu-ray ?

</comment></comment></comment><comment><USER31> FB: How can you get a consumer version of this so that you don't have to use Amazon Glacier for personal data archival?!

</comment><comment><USER32> I did not know that they made disks that are certified for long term storage like that.

</comment><comment><USER33> At 1:55 he says "FRID'd", he meant RFID'd, right?

</comment><comment><USER34> Still magnetic storage however you read/write the data...

</comment><comment><USER35> Flash required, so it won't play here.

Really, Facebook? It's 2014.</comment>


'Real' Programming Is an Elitist Myth - <AUTHOR> https://www.wired.com/story/databases-coding-real-programming-myth/ <comment><USER2> The author really likes to beat up on these apparent snobby elitist programmers, without any consideration for all the programmers who are excited by no/low code tech. This article could easily been about the benefits and excitement without paragraphs 4-6 and the first sentence of 7.

There are purists in any industry (you're not a writer until (physically) printed, you're not a scientist until published, you're not a DJ unless you spin vinyl), but also those that accept, adopt and champion change. Some may be risk averse for good reason (perhaps because of experience with past solutions that they inherited because the company outgrew the original), others wholeheartedly try new products and paradigms in an attempt to find out what they can leverage to provide value to others.

</comment><comment><USER3> > maybe convincing Apple to let you into the App Store to join the great > undifferentiated mass of other apps. That's software. When people build > their own Airtable to feed the neighborhood, that's culture.

I'm really excited to see what other kinds of things people will create as programming becomes more accessible.</comment>


Newly discovered earliest draft of a Unix manual (1971) - <AUTHOR> http://www.tuhs.org/Archive/PDP-11/Distributions/research/McIlroy_v0/UnixEditionZero.txt <comment><USER2> Doug McIlroy on what this is and why it is remarkable (thanks to knome for this explanation):

[http://www.tuhs.org/Archive/PDP-11/Distributions/research/Mc...](http://www.tuhs.org/Archive/PDP-11/Distributions/research/McIlroy_v0/Readme)

This is amazingly cool and clearly deserves more attention, so we've changed the title and re-upped the submission to give more people a chance to see it.

(Submitted title was 'DMR Unix "Edition Zero" Manual Unearthed (restoration in progress)'.)

<comment><USER3> It was also previously submitted (without discussion) [https://news.ycombinator.com/item?id=10660727](https://news.ycombinator.com/item?id=10660727)

Perhaps change the URL to the directory, so people can see the Readme and image scans, without needing to come here to the comments?

I'm glad it's getting attention now!

</comment></comment><comment><USER4> Is it just me or are the comments here missing the point? This is the original writeup of Unix. It's amazingly well written and pretty complete for when it was done. This is v0 of Unix, it's barely started.

You could, and people did, write a lot of code with just that doc as documentation.

Maybe it's because I'm a Bell Labs fanboy, I find this doc impressive.

<comment><USER5> 100% agree on impressiveness. Great to see the architecture in its nascent form.

</comment></comment><comment><USER6> "The most important role for UNIX is to provide a file system."

I looked up TGM which is mentioned in this manual (TGML). Apparently this was what Thompson used to write the B compiler.

Anyway, I ended up on the Multicians site. Some online accounts of computing history suggest UNIX was an alternative to the Multics project.

On the Multicians site it suggests Multics had a very different concept of "files", which could also be "segments". There was apparently potential ambiguity regarding the term "file".

Here's my question for anyone who was there:

Today we often see the phrase "Everything is a file" being cited when introducing people to UNIX. But I have never seen anyone attempt to explain why. What was the context in the 1970's?

Was the UNIX notion of "files" a reaction to the approach taken by Multics?

Again, this early manual says: "The most important role for UNIX is to provide a file system."

<comment><USER7> "On the Multicians site it suggests Multics had a very different concept of "files", which could also be "segments". There was apparently potential ambiguity regarding the term "file"."

Segments are a hardware mechanism often used then for accessing or protecting things in memory due to simplicity & speed of mechanism. Several modern techniques in INFOSEC use segments to protect programs.

Here's how the MULTICs filesystem worked, though. Gist of it seems like MULTICS came up with all the key concepts I recognize for hierarchical, filesystems.

[http://www.multicians.org/fjcc4.html](http://www.multicians.org/fjcc4.html)

Hansen's history shows the Titan System also had a similar filesystem:

[http://brinch-hansen.net/papers/2001b.pdf](http://brinch- hansen.net/papers/2001b.pdf)

Both predate UNIX with Thompson and Ritchie actually using MULTIC before writing UNIX. So, it's probably main influence.

"Today we often see the phrase "Everything is a file" being cited when introducing people to UNIX. But I have never seen anyone attempt to explain why. What was the context in the 1970's?"

It's explained here:

[https://superuser.com/questions/364152/why-is-everything- is-...](https://superuser.com/questions/364152/why-is-everything-is-a-file- unique-to-the-unix-operating-systems)

More detail from authors (see 3.3):

[http://www.scs.stanford.edu/nyu/04fa/sched/readings/unix.pdf](http://www.scs.stanford.edu/nyu/04fa/sched/readings/unix.pdf)

"Again, this early manual says: "The most important role for UNIX is to provide a file system.""

Ritchie was clear in other writings that there wasn't a single goal for UNIX at all other than to be usable and more than what they were working with. It was designed to be efficient and enable programmers rather than hold them back. The rest fell into place from there.

<comment><USER6> I can appreciate the response from "alvin" in the superuser comments.

Too bad networking was not part of early UNIX; sockets could perhaps have been part of the "carefully selected set of fertile ideas" that could be "keys to the implementation of a _small_ yet powerful operating system."

"carefully selected" (i.e., things are deliberately left out)

"small" (i.e., smaller than the alternatives)

These are ideas in programming that seem to have been lost over time.

<comment><USER7> Yeah, it's unfortunate. There were a number of systems in the past that got very clever with networking and it made everything easier for developers/users. Mostly happened in the 1990's. Most are aware of Plan 9. More interesting were Amoeba distributed OS and Convergent's CTOS. The CTOS was a commercial, alternative to mainframes that distributed the system among cheaper computers. Had a lot of take-up before it was canned by Unisys after an acquisition. Couldn't have innovative products threatening their mainframe profits. ;)

[https://en.wikipedia.org/wiki/Amoeba_%28operating_system%29](https://en.wikipedia.org/wiki/Amoeba_%28operating_system%29)

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

<comment><USER6> Amoeba was mentioned toward the end of the Hanson paper you cited above. I have read about Convergent in the past, but had not read the Hanson paper. Thank you for that.

</comment></comment></comment></comment></comment><comment><USER8> Why does this supposedly old file contain UTF-8 encoded characters? (The apostrophe in " _search in the user's current directory_ " is U+2019, RIGHT SINGLE QUOTATION MARK.)

<comment><USER9> It's not an old file. It's a new file resulting from running OCR on a PDF of a physical manual. Clipping off the filename in the original URL, you'll find a directory [1] with an explanation in the README [2]

[1] [http://www.tuhs.org/Archive/PDP-11/Distributions/research/Mc...](http://www.tuhs.org/Archive/PDP-11/Distributions/research/McIlroy_v0/) [2] [http://www.tuhs.org/Archive/PDP-11/Distributions/research/Mc...](http://www.tuhs.org/Archive/PDP-11/Distributions/research/McIlroy_v0/Readme)

<comment><USER2> Thank you, that's a critical bit of context.

<comment><USER10> Indeed, and it's a good illustration of a flaw in the HN comment ranking algorithm: this "critical piece of context" is at the bottom -- and likely will stay there -- because it's the child of a heavily downvoted comment.

<comment><USER11> So include it in a new top-level comment and everyone wins.

</comment></comment></comment></comment></comment><comment><USER12> Reading this manual describe concepts without the use of computer jargon as brand new concepts makes the language sound really old-fashioned, like reading Jonathon Swift or Thomas Paine. Part of that, I'm sure, is that this document is now 45 years old. It kind of makes me want to go back and read the instruction manual that would have come with the first TVs and such.

</comment><comment><USER13> "The third and last process control system call used by the Shell is

          processid, status = wait()

This primitive causes its caller to suspend execution until one of its children has completed execution. Then wait returns the processid of the terminated process and a status value indicating how the process died. (Processes which are never waited for die unnoticed and presumably unmourned)."

A lost opportunity to give C multiple return values.

<comment><USER4> Um, structs?

typedef struct { pid_t pid; int status; } wait_t;

wait_t status = wait();

<comment><USER14> Tuple support, which in essence are anonymous structs, would have been very nice in C, too.

</comment></comment></comment><comment><USER15> > ...an output file other than the typewriter was provided...

Those were the days.

</comment><comment><USER16> Unix has made our lives much more pleasant.

</comment><comment><USER17> Fascinating. No pipes yet!

</comment><comment><USER18> This should put to rest the persistent, pedantic hypercorrection that the "cat" command is so named because it "catenates" files as opposed to concatenating them.

<comment><USER19> Don't get your hopes up - it seems to remain possible the abbreviation preceded this document and was misattributed by Richie.

<comment><USER18> OK, but at that point it's equally possible that it stands for "catharsis" and represents a file, previously being kept inwardly on disk, being released to standard output. The command doesn't predate UNIX, so it's a very narrow window of time for Ritchie to have gotten it wrong. And I have not seen any claims from the 1970s or 1980s that the command stands for "catenate".

<comment><USER20>
      > And I have not seen any claims from the 1970s or 1980s
      > that the command stands for "catenate".

The Seventh Edition (1979) man page for cat(1) says "catenate and print".

Sixth Edition (1975) says "concatenate and print".

<comment><USER3> This made me do my own investigating. The `csh` manual in 2BSD said "catenate" earlier in '79\. Even before that, a comment in the ex (vi) 1.1 source code in 1BSD (1978) says "catenate".

So it looks like Bill Joy made the mistake! (and the Bell Labs people thought it funny?)

</comment></comment></comment></comment></comment><comment><USER21> > Commands need not be on different lines; instead they may be separated by > semicolons.

Is that a joke?

<comment><USER22> What part of it sounds like a joke? That's how it is today too, but it wasn't the case at the time for all environments.

<comment><USER21> The use of a semicolon in the preceding sentence is what I thought might be the joke. Read the sentence again, Dennis's use of a semicolon is a rather strange way to punctuate the sentence.

</comment></comment></comment><comment><USER23> There must be some OCR errors in there -- the system call "create" was spelled with an "e"!

<comment><USER24> Sure about that?

       CREAT(2)                    BSD System Calls Manual                   CREAT(2)

       NAME
            creat -- create a new file

       LIBRARY
            Standard C Library (libc, -lc)

       SYNOPSIS
            #include <fcntl.h>

            int
            creat(const char *path, mode_t mode);

       DESCRIPTION
            This interface is made obsolete by: open(2).

            The creat() function is the same as:

                  open(path, O_CREAT | O_TRUNC | O_WRONLY, mode);

       SEE ALSO
            open(2)

       HISTORY
            The creat() function appeared in Version 6 AT&T UNIX.

       BSD                              June 2, 1993                              BSD

<comment><USER25> I think he's saying that in this document, "creat" is sometimes spelled with an "e", indicating that the OCR process overcorrected.

      3.5.2 Create

      To create a new file, the following call is used.

           filep = create(name, mode)</comment></comment></comment>


Study shows psychiatric meds killing more than cocaine, heroin (2016) - <AUTHOR> http://vancouversun.com/news/local-news/psychiatric-drugs-killing-more-users-than-heroin-cocaine-say-health-experts <comment><USER2> This kind of "news" article does a disservice to those in need of mental health care by perpetuating the idea that certain well studied medications are ultra dangerous when in reality they are effective when administered properly.

What kills more people than both things combined? Not seeking help when needed

<comment><AUTHOR> What proof do you have that doing nothing kills more people?

Most psychiatric medication has a black label warning that it can cause suicidal thoughts and in many cases people taking or withdrawing from these drugs do kill themselves.

Your comment is based on data promoted by pharmaceutical companies' marketing departments and front group that somehow there is a crisis due to lack of mental health care.

The real crisis is the over prescription of psychotropic medication, when there is no physical test to diagnose any "illness" it's supposed to cure, hence the diagnosis is left to a "checklist of symptoms" voted into existence by committee (the DSM manual).</comment></comment>


Tonight's XKCD moment - <AUTHOR> http://mengwong.livejournal.com/45070.html <comment><USER2> What the holy h __* has this got to do with startups or hacking?

As for what they did, it was highly irresponsible. Some people (like me) are very sensitive to that kind of thing.</comment>


One of the best "overview" pages I've seen for a web service - <AUTHOR> http://www.tumblr.com/why-tumblr <comment><USER2> Really? Personally I think it has way too much info on one page (not advocating additional pages...just less info at first). If you didn't know what the site was for before arriving, you wouldn't know in 10 seconds. There's nothing on that page above the fold that even says what it is. The first slide moved before I had a chance to even figure out what was on it. The four icons below the main slideshow have hover states but appear to do nothing.

So it's kind of pretty, has a lot of info on one page and lets you sign up if you manage to even make it to the bottom. I guess that's OK, but I'd love to hear your explanation of why it's one of the "best" you've seen.

EDIT: I didn't realize this wasn't the home page when I wrote the above so the too much info doesn't really apply. The slideshow still does nothing though to answer the "why you'll love tumblr" premise that lands you on that page.</comment>


London ranks 39th in the world for quality of living - <AUTHOR> http://www.hitc.com/en-gb/2016/02/23/london-ranks-39th-in-the-world-for-quality-of-living/ <comment><USER2> I'd be interested in seeing a breakdown of these quality of living rankings by things like wealth, socio-economic class etc. If you are wealthy I can only imagine London is more like one of the top 10 cities in the world to live in.

<comment><USER3> It really depends on your needs. If you need a city with clean streets, fresh air, up-to-date infrastructure, better value for money, you look further.

</comment></comment><comment><USER4> Belfast is 64th? Not too bad all things considered.</comment>


Using Monorepo? Do not rebuild unchanged components in CI - <AUTHOR> https://medium.com/@taleodor/using-monorepo-do-not-rebuild-unchanged-components-in-ci-c386e7c03426 <comment><USER2> Or use git diff to calc the changeset and match filename globs to builds.

No need for another SaaS expense to solve this problem

<comment><AUTHOR> Thanks for your comment!

I would discourage use of git diffs as in many CI cases builds happen per git push rather than per commit.

This means that you need to maintain a separate mapping of component vs git commit where it last changed. So you need extra commit from CI to maintain that and more scripting to parse the map.

If you don't, and say you push or merge 2 commits at once, you would lose any component that is changed only in the 1st commit.

Finally, the bash command in the article is universal and not dependent on Git.

Regarding what you mention about SaaS expense - this is a secondary use-case for Reliza Hub and I also suggested plain Git no-SaaS way in the article with extra commit from CI.

However, I know some orgs that do not allow using extra commits from CI - therefore Reliza Hub would be a nice workaround for those constraints.

<comment><USER2> You don't need extra commits to enable what I'm talking about, just some extra files. The historical commit hash you want to calculate from, and a file with globs to match against.

We've implamented this in Jenkins. You can push multiple commits at once, trigger several / multiple sub tasks / jobs, conditionally running tasks depending on what has changed in the monorepo.

There is no mapping of git commit to components, the mapping is from file globs (dependencies) to jobs (what should run if a file changes). Nor is there any need for the storing of hashes of subdirectories on some file.

Pushing two commits does not cause the loss of code

TL;DR, your first two TL;DR points are exactly what git is for, so it seems you are reinventing functionality that exists in the tool already

<comment><AUTHOR> So case I'm talking about: I'm pushing 2 commits at once - A, B (B being the latest). Last commit before that was X.

Commit A changes component 1 relative to X. Commit B doesn't change this component. In your case, how can you know that you need to compare Commit B with Commit X and not Commit A - and actually build component 1? (you can extrapolate to 3 or more commits being pushed at once). This is the problem I've seen in the git diff implementations that I encountered. They either only compare current commit with previous commit - which can be wrong - or use extra tools to keep track of commit mapping (as I suggest).

One way around that I can understand is you force a build per every commit - so now per my push there would be separate build per A and separate build per B. But to me it's a waste as I push A and B together for a reason (so why do I suddenly need 2 builds now?).

If you solved this problem and could share your solution in details, would be useful for me - I would certainly include reference in my article.

\+ As mentioned I tried to build a solution that is agnostic of various tools (so - approach that would work for any VCS or CI software).

<comment><USER2> Read the git diff docs, it can span multiple commits. Builds are tied to pushes, not commits. You will see the changes for both A and B. When you create a new branch, you add the latest hash in git history to a file. When you build, you compare the latest commit against X from the file.

Note, this is around branches, not commits. Generally people tie features to branches and build branches. You want to build all changes from the new work that is off of the main branch. Don't think about it at the commit level, that's just how the bookkeeping is done.

The hard / manual part is maintaining commit X. You end up with merge conflicts when two branches are in PR and one gets merged. Order doesn't matter.

I'll try to post something this weekend, I'll link it here and probably create a small repo

<comment><AUTHOR> Thanks, looking forward. Yeah, totally get about git diff - I'm talking exactly about how you know that it is commit X that you need to compare with and not commit A.

Also my preferred workflow is different from yours. I try to use trunk based development with commits to master directly, branches generally allowed either on dev machines only or long-term release branches which are never merged back to master (on some high-compliance projects).

I try to reduce the number of branches as much as I can - there is some pain there in committing to master and ensuring green build, but then you don't have that pain when merging (following advice of Continuous Delivery book by David Farley, Jez Humble).

<comment><USER2> Trunk doesn't really work for teams because you need multiple features to be worked in parallel

Commit X is stored in a well known file and committed to git

<comment><AUTHOR> Google does trunk-based development for thousands of people - [https://trunkbaseddevelopment.com/](https://trunkbaseddevelopment.com/)

(Although if you mean short-lived 1-day feature branches always merged back to trunk - we're on the same page here).

Worked fine for my teams as well, although I usually use multi-repo - part of what Reliza Hub does is it gives holistic view of multi-repo structure.

<comment><USER2> Just because Google does something a particular does not mean it's right for everyone else. Most of us will never experience the problems of their scale.

Do you check out subtrees from the monorepo like Google does?</comment></comment></comment></comment></comment></comment></comment></comment></comment>