11 ms·
There’s nothing wrong with this post factually, but the tone sucks. It has an immensely combative energy for what is not really a charged subject matter. Like
by jchw 5y ago
There’s nothing wrong with this post factually, but the tone sucks. It has an immensely combative energy for what is not really a charged subject matter.
Like sure. Today, a lot of the historical reasons for things seem silly and irrelevant. At one point, they did not seem silly and irrelevant. For compatibility with stuff sticking around from those days, we get some performance penalties that are not strictly necessary. I don’t think anyone is doing that to be an asshole, so the oddly antagonistic tone seems unjustified.
And yes, Windows with a module-level namespace is cleaner in this regard, but Windows design is entirely different and has plenty of its own skeletons. ELF does not, to me, feel significantly more horrible than PE. And I’m not speaking from inexperience; I did at least write a couple of ELF and PE parsing softwares over time, most recently go-winloader[1].
Do we need to override symbols in the same library? Probably not... kind of. Your modules may in fact not need this. However, libc probably does. Take a look at what symbols libpthread exports on your system some time.
I hate to be the person to point this out, but please consider not approaching subjects from this position. It feels alienating, and I have no idea why it’s necessary to have such a tone.
[1]: https://github.com/jchv/go-winloader https://github.com/jchv/go-winloader
- fpgaminer 5y agoNot OP, but I read the "antagonistic" style of the post as just the usual catharsis humor. All in-jest. I've used that style of writing plenty before. It's a good way to blow off the steam of working with these rather absurd, archaic systems that we have to tackle on a daily basis. Programming can feel a bit kafkaesque at times, so a bit of aggressive/dark humor goes a long way. But I do agree, it felt too thick. Still a very interesting topic regardless.
- hn_throwaway_99 5y agoThe problem I see is that I often see this type of detached, "wow, look at all of these previous shitty decisions!" attitude inject itself, completely unnecessarily, into the workplace. I've actually made it something I won't compromise on: I refuse to hire people who I suspect will have this attitude. It's one thing to express frustration at previous decisions that make current work more difficult. However, when I see that morph into an arrogance of "how could people have made such a stupid decision" (especially when some of those "people" may still work at the company), without even trying to understand the context of why that decision was made in the first place, it shows to me that person is not an engineer I want to work with.
- QuercusMax 5y agoOn one team, we had a lot of code that had been written hastily because we were OK with taking on technical debt in order to move more quickly. We'd reconsider old design decisions and blame "old $me". It was all done in good fun, and I was happy to take the blame as senior engineer.
- zitterbewegung 5y agoIt actually seems to miss a few points. (I also agree that the post has not enough levity to balance out the negative tone). 1. PEP 445 makes the use case of LD_PRELOAD irrelevant. 2. A change like this would go under obvious code review and testing to make it into a released version. 3. The risk of a regression would still exist but that can either be caught by #2 or the existing unit testing already in Python. (Disclaimer: I have contributed to the Python codebase)
- Lammy 5y ago> It has an immensely combative energy for what is not really a charged subject matter. It becomes a charged subject matter when one works at companies like Google and Facebook and gets used to navigating performance reviews.
- jchw 5y agoThis is interesting. Not saying you are incorrect, but, I have worked at Google for a few years and didn't pick up on this, most people seem abundantly polite. But, I can just as easily chalk that up to limited experience, since there is clearly quite a lot of different things going on in any large company.
- ineedasername 5y agoWould this tone of expression be appropriate in navigating performance reviews? I mean the question honestly: My own answer is "no", but I don't know the culture of performance reviews at companies like that.
- Twirrim 5y ago> It becomes a charged subject matter when one works at companies like Google and Facebook and gets used to navigating performance reviews. The way things were at Amazon when I was there, posts like this would count against a Principal Engineer promotion. One of the standards engineers are expected to meet is "Respect what has gone before". You don't know the full details of what was going on at the time, you don't know the trade-offs and why, you don't know what they did and didn't know about the situation and what couldn't have been foreseen at the time decisions were made. Generally speaking people aren't idiots. They do the best they can with what they have, under the circumstances they're operating within, to meet the goals they have. Almost no one sets out to make a monster impossible to maintain, or with diabolical performance. Treat it with respect, even while you work to replace it.
- CalChris 5y agoThe OP was writing about a 29 year old design decision, and he wasn’t writing about a person. Design decisions don’t have feelings. I found his no holds barred clarity about something as obscure as dynamic linking namespaces made for an easier if still not easy read. But that said, I don’t think dynamic linking is in the ELF spec. I believe that’s a de facto OS + dev tools thing rather than an ELF spec de jure thing. His points are still valid.
- jordigh 5y ago> I found his no holds barred clarity Being right is no excuse for being an asshole. The attitude will appeal to some. It will strike many others in the wrong way and put them on the defensive. There's no reason to write this way. A concise, well-articulated, non-combative post will appeal to everyone and still convey the same information.
- CalChris 5y agoI don’t think it’s possible to be an asshole to an inanimate object.
- Zuider 5y agoEven though the vitriol may be directed at an inanimate object, it may be distracting and obnoxious to the person who is reading.
- jordigh 5y agoSomeone wrote that inanimate object. Someone likes that inanimate object. Someone thinks that inanimate object has reasons to be the way it is. Attacking that inanimate object is not without emotional repercussions to those related to that object.
- coldtea 5y ago>Someone wrote that inanimate object. Someone likes that inanimate object. You'll find somebody liking everything you can name. Even every attrocity has been done by somebody. Not attacking the person is of course the correct thing. But if you can't even attack the attrocity or bad choice, we've gone too far with this sensitivity thing.
- ineedasername 5y agoAgreed. I was trying to find the words for what I was so put off by the article, but you nailed it. The tone made me want to disagree with it just by default. Luckily I 1) recognize that I am not qualified to have an opinion on the technical details and 2) Ruthlessly crush instinctual responses until I've thought them through with less emotion. (most of the time... I'm not robot, or perfect) Someone in a sibling thread said it's not bad to write like that for catharsis... I guess to blow off steam or something. But if the method of blowing off steam is belittling other smart people that don't always make perfect decisions then it's probably not a great way to go. If you need to write it for catharsis, go for it, but there's no need to publish it. Otherwise, my questions on the technical side: Would this performance hit and the alternative option have been obvious at the time? If so, was there a reasonable trade off for why this approach was taken? Or was this choice only wrong in retrospect?
- galangalalgol 5y agoI read it as a way to make a tedious topic more entertaining. It didn't seem combative at all. I do identify with your desire to disagree with people whose tone I dislike, even if I intellectually think they are right. I wish I could turn that off.
- CyberRabbi 5y agoThat’s interesting, I have the opposite instinct. I have an urge to agree with and support people who have a more combative or opinionated tone. Strange!
- phibz 5y agoI read the tone as insecurity. Hey look at me, I figured this out. Aren't I smart? All these previous people are dumb. Right? Right!? RIGHT!?!
- rjzzleep 5y agoWow, it must be a cultural thing. I reread it again trying to find this emotion, arrogance or condescending tone different people have read into this, and I really can't see it. It's just very direct. This is an old engineering decision, why shouldn't it be direct?
- coldtea 5y ago>There’s nothing wrong with this post factually, but the tone sucks. It has an immensely combative energy for what is not really a charged subject matter. Perhaps because the subject matter doesn't matter. The really important takeaway message is more about the industry/community not paying attention to shitty defaults and winging it for decades, than about the potential speedup and/or this particular mechanism.
- smitty1e 5y agoThere is a risk of not knowing the historical context for decisions and getting a bit critical about How Daft The Ancients Were. Much of this is the cruft the author of TFA identifies. But so much of it was just "nature of the beast" at the time. Generosity toward these shortcomings is always in order.
- jshen 5y agoHe calls himself a troll on his FB profile. Honestly, it’s not surprising that someone who works at FB has a misaligned moral compass.
- karmakaze 5y agoI couldn't see anything wrong with the post, it seems perfectly professional and dry. Then I realize that the link was updated from one with an arbitrary excerpt: > (Windows took a different approach and got it right. In Windows, it's okay for multiple DLLs to provide the same symbol, and there's no sad and desperate effort to pretend that a single namespace is still cool.) There's no need for technical topics to be emotionally charged, it only detracts from communicating the importance, correctness or benefits.
- deleted 5y ago[deleted]
- MaskRay 5y agoInterposing libc.so symbols in a shared object is not affected by -fno-semantic-interposition or -Bsymbolic https://maskray.me/blog/2021-05-16-elf-interposition-and-bsymbolic#interaction-with-ld_preload https://maskray.me/blog/2021-05-16-elf-interposition-and-bsy... Solaris offers a similar model called direct bindings.