2,779 karma · joined September 30, 2013
Generally big tech companies don't give your manager the authority to blindly fire you, but only because that's a decision the company made.
It wasn't hard to convince anyone that this was the right way to handle things.
True time helps with things like spanner transactions. It's just a totally different use case.
It was not straightforward. I learned a lot about iptables and docker networking.
With Go, it's usually pretty straightforward. Yes, there are interfaces, but they're used in places where people actually want the choice of code to be dynamic, rather than people just having fun building up crazy hierarchies in the name of DRY.
So, with Go I find it very easy to read because of high code locality and the ease of following to the correct destination with function calls.
For things that are already local, "ease of reading" is just code for "familiar". Go is strictly easier to read because tracing through is strictly simpler. Anything else is just spelling and those barriers disappear with only minimal experience.
The availability guarantees necessary for basic authorization are far more strict than auditing. Auth fails closed, audit fails open.
Anything that can be stripped out of auth should be, even if we're talking about a best effort extra rpc from the auth service.
Auditing typically needs more information than auth as well, and making the auth pipe wide is a risk.