181 karma · joined July 19, 2014
All discussion of the 'Misrepresentations' article is responsive to Gary's mention of it in the original article. And at no point does Radley appear to endorse its contents.
It absolutely is, and I think it's what separates good from bad and junior from senior devs.
Most devs can produce an artifact that more or less works. But one that has an internal consistency others can understand and extend, one which accurately captures the problem as it exists and ways it will likely change, is much more of an art form.
A big part of that is knowing which situations are worth making a stand. Every you write code or leave feedback, your doing it for your team current and future.
One of the greatest developers I've worked with, who I learned a lot from and respect immensely, has extremely different tastes in software from me. To the point where I wouldn't say I think he has good taste.
But, his work still has a distinct style and intention. I can tell anytime I come across libraries he had a hand in. I understand what the code is doing and why is is correct, even when I disagree with it.
And I think that is what is important. When working with more junior people, I'll ask them why they did things a certain way and will generally me be with a "well, idk" of some variant of path dependence.
I think developing that intentionality as a developer is important. Which does come with some amount of aesthetic, and I think taste is a defensible metaphor.
The predominant wind is from the east, and the air cools aid forms rainclouds as it tries to rise over the mountains in the center of the island. Then warms again as it descends down the eastern slopes.
So the eastern (Hilo) side is pretty lush jungle, and the west(Kona) is desert. With snowy mountains in between.
[0]https://www.climate.gov/news-features/featured-images/rain-s...
Going from downtown Los Angeles to Santa Monica is $30s for a Waymo and runs up to $50s for Uber/Lyft (sometimes). Otherwise, they tend to be within a few dollars.
I figured it was a combination of Google subsidizing rides and a lack of a "traffic tax".
They're a significantly better experience for 45+ minute rides.
And the problem with Comcast is not necessarily that they will make speech decisions we don't like (an inherent part of free speech). The problem is that they're a monopoly and people don't have other options. So we should fix that problem instead of further limiting 1A rights.
Tangentially: A distillery in Los Angeles, The Obscure, is making a rye whisky aged in American Chestnut barrels, with some of the proceeds going to the American Chestnut Foundation. It's quite good.
The critical exception being avoiding issues due to path dependence.
E.g while a change is "correct" is doing X poorly because of surrounding issue Y. So we should fix Y now instead of building atop it.
In the example given, the result is that both writes happened before both reads, which directly contradicts the source. There's a valid explanation for why it happens, but it's still paradoxical.
I remember at work a C++ standards committee member was giving examples of atomic and how to use them safely with different memory models, when someone pointed out his toy example for relaxed order was wrong. It took 5 people debating for a week to figure out what a safe/correct behavior would be. For a 10 line sample class.
As times your second question, the article recommends Hans Boehm's proposal to add a no-op conditional branch after the read. I guess it forces the load to be resolved and enforces a sequenced-before behavior on the individual threads. So at least one read must resolve before one write in the example.
Diverse Double-Compiling[0] can provably detect this class of attack.
It's been my experience that Google is a super chill place to work, especially when you take advantage of the fact that you're just one cog among many.
You get 5 weeks pto plus 4 weeks work from anywhere. This year alone I'm going to the Arctic, Antarctica, and the Carribean. Including a 40 day stretch without internet. I couldn't imagine doing the latter in a startup.
And all the while getting paid and having the comfort to make plans knowing that I'll (probably) continue to do so in the future.
A traditional switch/goto loop can thrash the branch predictor. Separating into different tail calling functions gives you more slots and allows the branch predictor to learn relationships between ops.
Not to discount the many other benefits of tail calls.
*Edit: I misspoke slightly, computed gotos can also split the patch jump, but less reliably[0].
https://blog.reverberate.org/2021/04/21/musttail-efficient-i...
* They're expensive (~4-8 dollars per follicle) with a single transplant being 1000-5000 follicles. Severely bald men may need multiple
* There is a finite number of follicles that can be transplanted.
* Permanent scarring in the donor zone.
The ultimate treatment would be either hair cloning (still a ways out, very expensive) or a way to reactivate the dormant follicles. Presumably if you could solve the latter you would become very rich very quickly.
I found these two articles really helpful when trying to understand moves:
https://abseil.io/tips/55 https://abseil.io/tips/77
Though I'd also say don't worry about it too much, especially at first. If you're copying a lot of temporary objects moving can get you some performance wins, but that's something profiling should be telling you m
If you already know from previous versions that push_back makes a copy and that C++11 added move semantics and emplace_back, it's not a huge leap to connect the two. Especially if you don't notice push_back's rvalue overload (or understand rvalues).
And if you're new to C++ and are having all of this thrown at you at once it'd definitely be easy to get some crossed wires.
And that is basically the premise of the Abseil Tip of the week series, which are an incredible resource for learning how to work with modern C++.
Though place_back still has the connotation of 'take this thing and put it over there' that emplace_back is actually the opposite of.
Naming things really is hard.
Though I think the abseil article does a better job of explaining why: https://abseil.io/tips/112
[Googler; unaffiliated with Abseil(sadly)]
Especially since many of the standard containers have many more constructors that you'd think - hello std::vector(size_type count).
Complaining that modern people are literally ruining the word literally is a popular internet gripe.
[1] https://www.merriam-webster.com/words-at-play/misuse-of-lite...
For some people Teflon isn't an option. Bird owners for example can't use pans with PTFE coatings, cooking with them releases a compound that is toxic to parrots.
I have one of their pans and it's excellent.
I can't say enough good things about Quark, they were incredibly professional and the expedition staff were all top tier. I still keep in touch with quite a few of them.
Going in Antarctica was what I was most excited about but South Georgia proved to be the surprise favorite of the trip.
If you have the time and the means I would highly recommend it. Especially because due to increased tour volumes the tour companies are starting to limit their activities to limit environmental damage. Starting this year they are limiting daily landings from 2 to 1 (or that was the plan at least).