Ask HN: Your Favourite HN Comment? - <AUTHOR> Every once in a while there are some good, __in-depth__ replies to posts on HN, worth bookmarking. What are your favourite HN comments? <comment><USER4> A commenter talked about his experience with testicular cancer and encouraged other 20-34 year old men to check themselves.

So I did, found a lump, and because I found it early it was removed with no further issue. So that's definitely one of my favorite comments!

[https://news.ycombinator.com/item?id=7120102](https://news.ycombinator.com/item?id=7120102)

<comment><USER5> Are there any other checks that one could easily do that could help with detecting these kind of random diseases early?

<comment><USER6> I don't think so. Early in this context means "less than 1cm". Males need to check themselves every 6 months to one year. The standard check is a triplex still the urologist. Additionally, I would add that it's a good practice to use a bank sperm while young. You never know what is going to happen in the future.

</comment></comment></comment><comment><USER7> On what should you be:

> This guy has gone to the zoo and interviewed all the animals. The tiger says > that the secret to success is to live alone, be well disguised, have sharp > claws and know how to stalk. The snail says that the secret is to live > inside a solid shell, stay small, hide under dead trees and move slowly > around at night. The parrot says that success lies in eating fruit, being > alert, packing light, moving fast by air when necessary, and always sticking > by your friends. His conclusion: These animals are giving contradictory > advice! And that's because they're all "outliers".

> But both of these points are subtly misleading. Yes, the advice is > contradictory, but that's only a problem if you imagine that the animal > kingdom is like a giant arena in which all the world's animals battle for > the Animal Best Practices championship [1], after which all the losing > animals will go extinct and the entire world will adopt the winning ways of > the One True Best Animal. But, in fact, there are a hell of a lot of > different ways to be a successful animal, and they coexist nicely. Indeed, > they form an ecosystem in which all animals require other, much different > animals to exist.

[https://news.ycombinator.com/item?id=469831#up_469940](https://news.ycombinator.com/item?id=469831#up_469940)

<comment><USER8> I will have to agree with the dead comment by @leafboi, it is not that every animal can live harmoniously, indeed every animal _is_ in competition by the laws of natural selection, and each animal can be seen as the outlier in its species. In the case of humans, there may be multiple paths to success, but it may be that many of them lead to failure while producing certain outliers.

Unrelatedly, does anyone know why certain comments immediately become dead, they don't really seem to break any HN rules but I see often that some comments die quickly.

<comment><USER9> As human beings, moderators have their own preferences which exist beyond the HN guidelines, and are not meta moderated, except in the aggregate.

When a comment becomes dead, it's because some mods chose to vote it down, and fewer mods choose to revive it. The net effect is an expression of the prevailing culture.

Your question about why this sometimes happens "immediately" is an interesting part of the dynamic.

<comment><USER8> Seems like the sibling comment also by leafboi shows that HN automatically makes dead, accounts with negative karma.

<comment><USER10> leafboi's account was shadow banned, meaning that any new comments are automatically, immediately marked as [dead].

</comment></comment></comment></comment></comment><comment><USER11> I think about this often when I'm programming:

 _> Dependencies (coupling) is an important concern to address, but it's only 1 of 4 criteria that I consider and it's not the most important one. I try to optimize my code around reducing state, coupling, complexity and code, in that order. I'm willing to add increased coupling if it makes my code more stateless. I'm willing to make it more complex if it reduces coupling. And I'm willing to duplicate code if it makes the code less complex. Only if it doesn't increase state, coupling or complexity do I dedup code._

 _> The reason I put stateless code as the highest priority is it's the easiest to reason about. Stateless logic functions the same whether run normally, in parallel or distributed. It's the easiest to test, since it requires very little setup code. And it's the easiest to scale up, since you just run another copy of it. Once you introduce state, your life gets significantly harder._

 _> I think the reason that novice programmers optimize around code reduction is that it's the easiest of the 4 to spot. The other 3 are much more subtle and subjective and so will require greater experience to spot. But learning those priorities, in that order, has made me a significantly better developer._

[https://news.ycombinator.com/favorites?id=jakelazaroff&comme...](https://news.ycombinator.com/favorites?id=jakelazaroff&comments=t)

</comment><comment><USER12> "The contrarian dynamic" by dang, from around a month ago.

[https://news.ycombinator.com/item?id=24215601](https://news.ycombinator.com/item?id=24215601)

> The "contrarian dynamic" is that HN threads (and internet comments > generally) are largely propelled by people making objections. Cunningham's > Law touches on this [1]. The objections come in waves. In the earliest stage > of a thread, they tend to be rapid negative reactions to the article. It's > not that these are a community consensus, it's that they're the fastest > reactions to feel, and the fastest comments to write—especially when the > topic is provocative, when most of us are reacting from cache [2].

> Then a second wave of objections is generated by the first wave. Readers > come to the thread, see the comment section dominated by those initial > 'triggered' responses, and feel some version of surprised-shocked-dismayed > at how the commenters all seem to be reacting in that way. This propels them > to write defenses of the article, often carefully expressing more moderate > or balanced views than the first wave—but they probably wouldn't have been > motivated to post anything if there hadn't been the first wave of comments > to object to!

> These second-wave comments tend to get more upvotes, perhaps because more > people tend to share the more moderate view, but also because those comments > tend to be more reflective [2] and therefore better written.

> This explains why the top comment in a thread so often begins (ironically) > with "Wow, I can't believe the comments here"—or from the current thread: > "All of these comments make me think HN has never interacted with a 5 year > old" [3]—followed by a defense of whatever those objections were objecting > to. Eventually you get objections to the objections to the objections—which > reminds me of the line "My complication had a little complication" from > Brazil [4], and also epicycles.

<comment><USER13> I'm not sure if I'm surprised that dang didn't touch on to mention downvotes as an even more rapid "contrarian dynamic" mechanism; wouldn't it be nice if downvotes had a little more friction, effort required for the action - <USER2> qualitative text from the downvoter as to why a comment is being downvoted to then allow OP the opportunity to clarify or expand on their comment - "to be more reflective and therefore better written"? The downvote-comment doesn't have to be identified as being a downvote-comment, showing up as a regular reply.

That added cost/friction may also act as a filter for lazy readers/skimmers or those misinterpreting what's said at first glance, and therefore if forced to include some critical text response along with their downvote then OP and other readers can begin to get to the bottom/foundation of the distaste, giving OP at least some guidance as to why someone/people are downvoting - arguably a valuable learning/crowdsourcing moderation tool/mechanism.

I feel the added cost of time and mental effort for downvotes would add a great balance.

<comment><USER14> This has been discussed many times and it's not a good idea - it adds friction to the _discussion_ , more than anything else. The threads would be full of pointless meta.

The fundamental problem is that getting downvoted feels kinda bad - <USER3> ever asks for explanatory notes on upvotes. It's reasonable to wonder whether getting downvoted feels, say, too bad too soon and if there are UI ways to address that. But it's worth remembering that for downvoting to actually work, it has to feel at least somewhat bad. It's going to feel somewhat bad with or without notes from others about why they thought you ought to feel a little bit bad.

</comment></comment></comment><comment><USER15> One of my favorites is a super-long one by a user named bane, about three solutions to speeding up computing: (1) "high" (more RAM, CPU), (2) "wide" (more machines), and (3) "deep" (refactoring), which is what he recommends first. More than once he has rewritten something that was running slowly even on the latest and greatest architectures (perhaps partially because of that), to running on a single machine, even an old personal computer. He reminds us that a modern computer, with its solid-state drives, gigabytes of memory, and multicore gigahertz processors, can take on many large problems, if you just stoop to give the problem a decent amount of attention first, [https://news.ycombinator.com/item?id=8902739](https://news.ycombinator.com/item?id=8902739)

<comment><USER16> We've used the terms horizontal and vertical scaling to mean those same things for a while.

<comment><USER15> He does not claim to introduce the concepts of horizontal and vertical scaling. He mentions them only to immediately discourage them: "Lots of people make the mistake of thinking there's only two vectors you can go to improve performance, high or wide. [...] There's a third direction you can go, I call it 'going deep'." Like I said, it's a long post, so I tried my best to summarize it and then linked to it.

</comment></comment></comment><comment><USER17> User mikekchar on the value of ideas:

 _My advice is to lower the value of ideas. A lot of time people think, "If only I had a good idea I would be successful". You will see other people saying things like, "Buy my good idea!". But really, good ideas are a dime a dozen. Good ideas, bad ideas... it actually doesn't make much difference. What makes the difference is execution and timing.

For things that take a long time, timing is essentially random. The world is chaotic. Had I known everyone and their dog would be locked down in their houses for months on end, I would have built something to cater to them. But of course, there is no way to know. I find it amusing that just before the pandemic there was a thread on HN talking about overvalued unicorns and Zoom was up near the top of the list. What would need to happen to make Zoom a household name, people asked?

To be successful, really what you need is execution and to have the patience to wait until what you are doing is relevant. Of course there is the fear that it will never be relevant. However, if you accept the thesis that the good idea is not valuable in itself, then you realise that it is not really valuable to pivot without a really good reason. A good idea that is never relevant is just as worthless as a bad idea that is never relevant. However, even a bad idea that is executed very well and ready when the opportunity arises can be successful._

<comment><USER18> It can be fun to think of "new" ideas, and then search the Internet for them.

This week, I wanted a handheld device to push buttons and open doors without touching them; found several for sale (though the models without covers seem useless.)

Later I wanted a 3D support structure to fit under a mask and increase its usable surface area; found several for sale.

<comment><USER19> I think I'm fairly creative, but I've only had one or two ideas that weren't reinventions of something someone else had already done. Doesn't matter what it is: software, electrical circuit, some clever mechanical thing, it's almost always already been done. Even if you look at patent grants, almost none of them are truly novel.

<comment><USER20> So what did you do with those ideas?

<comment><USER19> One of them costs too much for me to pursue. The other I'm working on as a hobby, but don't expect it to bear any fruit for a couple of years.

My main takeaway though is that an idea doesn't have to be novel for it to be a good idea. Lots of things that were tried and failed could succeed with a new approach. And lots of things that're currently successfully could be redone in a better way.

</comment></comment></comment></comment></comment><comment><USER21> This one struck me for its tongue-in-cheek levity, credit to haroldgibbons:

 _My "aha" moment was realizing most of my ideas and most apps out there are complete garbage. Not needed. Damaging, even. 99.9% of all of it._

 _For example, most "cutting edge" web apps are better off as PHP monoliths. Facebook was a PHP file for a long time. But most apps in general should never make it past being shell scripts, which are better off staying as spreadsheets or better - text files which are better off as pieces of paper whenever possible. And all paper is better off left as thoughts whenever possible, and most thoughts should be forsaken._

[https://news.ycombinator.com/item?id=24397272](https://news.ycombinator.com/item?id=24397272)

</comment><comment><USER22> For me, it's this comment ([https://news.ycombinator.com/item?id=9224](https://news.ycombinator.com/item?id=9224)) that argued Dropbox wasn't useful and was going to fail. Both the comment and its replies (by Drew at the time when Dropbox wasn't known) really get to me because they remind me to keep an open mind to other people's ideas and have conviction in my own ideas even if there are people who doubt them.

<comment><USER23> One of the things I look for when getting into a new venture, investment, etc is that most people don't understand how it would succeed. If I have a deep, realistic understanding of how it will work, that's all I need. Big gains come when you have vision that no one else does, but you know they will all see your reality as the truth with time.

<comment><USER24> Another way to think about it is that no product is ubiquitously liked by the entire population. One important part of developing a new product is figuring out who your target audience is. Their feedback is likely relevant to you, but the feedback from someone who'd never use it anyway can probably be taken with a grain of salt. It's very common for people to think that, for something to be successful, everyone must appreciate it. However, that's not true. For instance, there are lots of things I don't see the point of (like tiktok or instagram); yet, they're very successful products. I'm just not the target audience.

That said, I don't even think his main point was really invalid. Dropbox didn't really replace pendrives, people are still carying those around. As pointed out, connectivity is still an issue and people want to have an offline backup.

</comment></comment></comment><comment><USER25> It's very short and not at all in-depth, but this was my favorite comment. It was one of the greatest troll shutdowns I've ever seen: [https://news.ycombinator.com/item?id=35083](https://news.ycombinator.com/item?id=35083)

<comment><USER26> I recommend following the thread back up. Very interesting. Anyone know if cperciva ever made it big?

<comment><USER27> Tarsnap was his startup in question. It looks like it's still going strong. Even has a testimonial from the CEO of Stripe on the website.

</comment></comment></comment><comment><USER28> This reply to a comment about how taking an action on moral grounds might be bad for business:

 _> Yes, doing the right thing often is dangerous and earns you hatred from other people doing bad things who love the freedom of hiding amongst a herd of other equally guilty people._

 _> The reason we have so much respect for people who take stand and do what they believe is right is because doing so is so hard. That doesn't mean you shouldn't do it._

I'll probably remember this quote for years to come.

[https://news.ycombinator.com/item?id=23534277](https://news.ycombinator.com/item?id=23534277)

</comment><comment><USER29> My favourite HN comment was about burnout:

 _Burnout is caused when you repeatedly make large amounts of sacrifice and or effort into high-risk problems that fail. It 's the result of a negative prediction error in the nucleus accumbens. You effectively condition your brain to associate work with failure.

Subconsciously, then eventually, consciously, you wonder if it's worth it. The best way to prevent burnout is to follow up a serious failure with doing small things that you know are going to work. As a biologist, I frequently put in 50-70 and sometimes 100 hour workweeks. The very nature of experimental science (lots of unkowns) means that failure happens. The nature of the culture means that grad students are "groomed" by sticking them on low- probability of success, high reward fishing expeditions (gotta get those nature, science papers) I used to burn out for months after accumulating many many hours of work on high-risk projects. I saw other grad students get it really bad, and burn out for years.

During my first postdoc, I dated a neuroscientist and reprogrammed my work habits. On the heels of the failure of a project where I have spent weeks building up for, I will quickly force myself to do routine molecular biology, or general lab tasks, or a repeat of an experiment that I have gotten to work in the past. These all have an immediate reward. Now I don't burn out anymore, and find it easier to re-attempt very difficult things, with a clearer mindset.

For coders, I would posit that most burnout comes on the heels of failure that is not in the hands of the coder (management decisions, market realities, etc). My suggested remedy would be to reassociate work with success by doing routine things such as debugging or code testing that will restore the act of working with the little "pops" of endorphins.

That is not to say that having a healthy life schedule makes burnout less likely (I think it does; and one should have a healthy lifestyle for its own sake) but I don't think it addresses the main issue._

link to comment: [https://news.ycombinator.com/item?id=5630618](https://news.ycombinator.com/item?id=5630618)

<comment><USER30> Thanks for sharing this. Right now I'm burnt out beyond words, having delivered a phase of a huge project, followed by upper management actions that make me feel extremely devalued and dehumanized. I've already written a list of personal development tasks for the three weeks' leave ahead - I need to up- skill, then find a new employer - which I'll restructure into little wins.

<comment><USER31> You should prob just completely take a break during the 3 weeks. Go hiking, biking, etc and let your brain rewire so that you're not in a flight or fight mode. Something like "just walking hard for 5 hours gets me to the top of the mountain" and then you'll be so fresh after 3 weeks of that. Work won't seem as stressful or important in life.

<comment><USER27> It's amazing what a bit of exercise and a head clear of problems to solve can do for you. In my experience, it's unfortunately the case(for me at least) that the harder and longer you push before you burnout scales linearly with the length of the break you'll need to take in order to recover.

I learned this lesson the hard way and ended having to take a multiple year hiatus from even looking at a text editor. I wouldn't be surprised if it was in a way a form of PTSD; for a long while, even thinking about programming elevated my heart rate. I ended up working as a bike mechanic during that time away, and the combination of a low stakes environment and working with my hands did my mental health a lot of good.

<comment><USER31> Damn crazy. Why did that happen? Moderate burnout situation that went on for way too long? Or intense burnout in a few months?

Yeah I mean going off of the great burnout comment before, it's that the negative mental pathways are being carved super deep every day by your continued effort -> failure (or perceived failure by you or manager).

I wonder if mushrooms/acid/mdma can help cure professional burnout faster?

How's being a bike mechanic money-wise? If you have a solid amount of capital built up from grinding as a soft engr, that could be a nice segway for a time.

<comment><USER27> > Damn crazy. Why did that happen? Moderate burnout situation that went on for > way too long? Or intense burnout in a few months?

Basically a combination of both. I was at a medium sized startup fresh out of college, and I was the only one working on a completely new project using a language nobody else at the company used (I was doing NLP stuff in python). There was no code review and next to no mentorship, and every other developer was working in Java/Scala, so they had almost no clue what exactly I was working on. Early on I was actually able to deliver on pretty much everything asked of me, and had one of the models I had trained being used in production within six months. It was this terrible combination of me feeling completely out of my depth, yet everyone else only sees that I'm delivering, so thinks I have everything under control.

I knew very little python or machine learning when I started, but was able to get fairly competent in the problem domain quickly. But as things progressed, my severe lack of experience in developing a large project started to slow progress down and take a toll on me. I felt like I had to keep up the pace I had set expectations with early on, so I just started working longer and longer hours trying to meet deadlines that probably didn't matter anyways. Near the end I was secretly working nights and weekends because I had this mentality that If I didn't someone was eventually going to find out that I had no clue what I was doing. Pretty classic imposter syndrome fueled by perfectionism.

> How's being a bike mechanic money-wise?

Haha, not good. At a shop that pays well, it's around $20/hour after base pay plus commission. It was a nice change of pace though. It made me enough where I didn't have to use too much of my savings. I quit soon after Covid started and have been doing some portfolio projects and brushing up on my interview skills.

</comment></comment></comment></comment></comment></comment><comment><USER32> @dang recently (17 days ago) posted a list of the most favorited HN comments in this comment:

[https://news.ycombinator.com/item?id=24360449](https://news.ycombinator.com/item?id=24360449)

<comment><USER33> Interesting. I'm surprised the counts for the most popular comments are so low, given the number of users on HN

<comment><USER34> Favorite feature isn't really easy to discover. You have to click a comment's timestamp to go to its page, then click favorite.

</comment></comment></comment><comment><USER35> Oracle code base and test cycle description: [https://news.ycombinator.com/item?id=18442941](https://news.ycombinator.com/item?id=18442941)

I've referred to this comment a couple of times in discussions with people I've worked with. It is a great example for many problems of old code bases.

<comment><USER36> I was going to share this myself. It's really great knowing that it stuck a chord with others.

So much to takeaway from that post. For me it is 1\. Its important how you structure your code (flags and global state can wreak havoc on a program) 2\. No matter how bad your code base is - it can at least be functional if you have good testing

</comment></comment><comment><USER37> Some comments that I will always remember -

On Catering to the privacy crowd- [https://news.ycombinator.com/item?id=24123463](https://news.ycombinator.com/item?id=24123463)

Users of peanut butter shouldn't have to think about whether it contains glass and razors - [https://news.ycombinator.com/item?id=20634128](https://news.ycombinator.com/item?id=20634128)

On Telegram seven years ago - [https://news.ycombinator.com/item?id=6949814](https://news.ycombinator.com/item?id=6949814)

Indian Govt blocks a PHP project for terrorism and anti national content - [https://news.ycombinator.com/item?id=8820378](https://news.ycombinator.com/item?id=8820378)

On Show HN:Dropbox - [https://news.ycombinator.com/item?id=9224](https://news.ycombinator.com/item?id=9224)

Did you win the putnam? - [https://news.ycombinator.com/item?id=35079](https://news.ycombinator.com/item?id=35079)

</comment><comment><USER38> John Nagle commenting on Nagle's algorithm:

 _To avoid network congestion, the TCP stack implements a mechanism that waits for the data up to 0.2 seconds so it won't send a packet that would be too small. This mechanism is ensured by Nagle's algorithm, and 200ms is the value of the UNIX implementation._

 _> Sigh. If you're doing bulk file transfers, you never hit that problem. If you're sending enough data to fill up outgoing buffers, there's no delay. If you send all the data and close the TCP connection, there's no delay after the last packet. If you do send, reply, send, reply, there's no delay. If you do bulk sends, there's no delay. If you do send, send, reply, there's a delay._

 _> The real problem is ACK delays. The 200ms "ACK delay" timer is a bad idea that someone at Berkeley stuck into BSD around 1985 because they didn't really understand the problem. A delayed ACK is a bet that there will be a reply from the application level within 200ms. TCP continues to use delayed ACKs even if it's losing that bet every time._

 _> If I'd still been working on networking at the time, that never would have happened. But I was off doing stuff for a startup called Autodesk._

 _> John Nagle_

[https://news.ycombinator.com/item?id=9048947](https://news.ycombinator.com/item?id=9048947)

</comment><comment><USER39> The legendary "Putnam" one, of course: [https://news.ycombinator.com/item?id=35079](https://news.ycombinator.com/item?id=35079)

<comment><USER40> Okay, so, what do we think about TarSnap? Dude was obviously a genius, and spent his time on backups instead of solving millennium problems. I say that with the greatest respect. Is this entrepreneurship thing a trap?

<comment><USER41> I decided to make my reply a blog post: [http://www.daemonology.net/blog/2020-09-20-On-the-use-of- a-l...](http://www.daemonology.net/blog/2020-09-20-On-the-use-of-a-life.html)

<comment><USER40> Wow. Amazing. Thank you.

The parent to my comment pointed to a most remarkable piece of internet lore, but it was really about your argument against taking VC. A very quick look showed that you did exactly what you said you were going to do, with probably the exact result you indicated. I pointed to TarSnap because that was the result, and it seemed important to the story. Success? Sure, exactly as planned, but what about the audience of your original argument, those that said to go for big venture investment? Surely they still exist here. What do they think? However, if the story is to be a guidepost for others, it's really about what you think about your story, and so I think anybody following can be grateful that you've closed the loop on this. I realize that you could have interpreted this as some kind of personal slight, and a few did on your behalf, but it's obvious that you think differently, and your lack of offense is very telling of your satisfaction. So really you've answered in two ways. For my part, I don't think that gifted people necessarily owe 'us' their highest altruistic purpose. Maybe that is between them and whatever higher power they believe in, or not. But we at least hope that others also respond to aspirational attention with some kind of honesty, even if we can't possibly understand. Thank you.

</comment></comment></comment></comment><comment><USER42> My smart-ass comment[1] got us new Unicode characters[2].

[1] [https://news.ycombinator.com/item?id=11959139](https://news.ycombinator.com/item?id=11959139)

[2] [http://www.righto.com/2016/10/inspired-by-hn-comment-four- ha...](http://www.righto.com/2016/10/inspired-by-hn-comment-four-half- star.html)

<comment><USER43> Love it

</comment></comment><comment><USER44> 'graycat on Fedex has to have been the comment that most blew me away:

[https://news.ycombinator.com/item?id=9282104](https://news.ycombinator.com/item?id=9282104)

Followed closely by 'tzs on Missile Command:

[https://news.ycombinator.com/item?id=6228350](https://news.ycombinator.com/item?id=6228350)

<comment><USER45> I tracked down an explanation for the 810 bug, although it doesn't actually clarify why 80 was a magic number.

[https://webcache.googleusercontent.com/search?q=cache:7Ms9oq...](https://webcache.googleusercontent.com/search?q=cache:7Ms9oquxemEJ:https://www.twingalaxies.com/archive/index.php/t-115947.html+&cd=3&hl=en&ct=clnk&gl=us)

</comment></comment><comment><USER46> The first comment (by mikekchar) in response to this student going through a rough spot: [https://news.ycombinator.com/item?id=14312416](https://news.ycombinator.com/item?id=14312416)

<comment><USER47> Direct link to the comment: [https://news.ycombinator.com/item?id=14312684](https://news.ycombinator.com/item?id=14312684)

</comment></comment><comment><USER48> Seeing someone else bravely telling their story and account how the biggest tech company mistreated them during an interview too...going as far as trying to steal/patent their work without their consent they demoed during their interview.

I had been telling my very similar story here of my experience for a few years, then to see another say same thing with email evidence was vindicating.

Around that time and maybe before more and more negative posts about said company started and have continued to appear on Hacker News. So her story along many other things going on I believe helped highlight they do evil/aren't to be trusted per the image they once sold.

Overall I'm glad she had the courage to post her experience and in turn help other dreamers/innovators (what my aim was) to not trust this tech company and highlight they are the opposite of the mantra they sold to the public.

<comment><USER49> Can you link to the comment?

</comment></comment><comment><USER50> The first comment (umvi) in this thread I thought was great advice for those who are ambitious but also practical :)

[https://news.ycombinator.com/item?id=24261826](https://news.ycombinator.com/item?id=24261826)

<comment><USER47> Direct link to comment: [https://news.ycombinator.com/item?id=24262337](https://news.ycombinator.com/item?id=24262337)

</comment></comment><comment><USER51> Maybe not most favorite but the good one:

The comment is about how to think about "news /social networks addiction":

[https://news.ycombinator.com/item?id=13002196](https://news.ycombinator.com/item?id=13002196)

</comment><comment><USER52> This comment where I first learned about using a bare Git repo for dotfiles management: [https://news.ycombinator.com/item?id=11071754](https://news.ycombinator.com/item?id=11071754)

<comment><USER27> Dammit, now feel like a complete idiot for my mess of a bash script that creates symlinks all over the place. I guess I know what I'm doing tomorrow morning.

<comment><USER53> Urgh. Fuck me. I did the same things. How is this not mentioned in any of the dotfile repos I've seen?!

</comment></comment></comment><comment><USER54> [https://news.ycombinator.com/item?id=24532382](https://news.ycombinator.com/item?id=24532382) :)

<comment><USER55> ... Har Har ...

</comment></comment><comment><USER56> joering2's advice on picking a lawyer, which I hope to never need :)

[https://news.ycombinator.com/item?id=21711221](https://news.ycombinator.com/item?id=21711221)

</comment><comment><USER57> Dan Luu's "BestOf HN Comments" collection: [https://danluu.com/hn- comments/](https://danluu.com/hn-comments/)

</comment><comment><USER58> On indicators of employee happiness: [https://news.ycombinator.com/item?id=20571219](https://news.ycombinator.com/item?id=20571219)

</comment><comment><USER10> List of most-favorited HN comments:

[https://news.ycombinator.com/item?id=24360449](https://news.ycombinator.com/item?id=24360449)

</comment><comment><USER59> Highest signal sales advice I've ever seen:

 _Yes, there are tons of resources but I 'll try to offer some simple tips.

1\. Sales is a lot like golf. You can make it so complicated as to be impossible or you can simply walk up and hit the ball. I've been leading and building sales orgs for almost 20 years and my advice is to walk up and hit the ball.

2\. Sales is about people and it's about problem solving. It is not about solutions or technology or chemicals or lines of code or artichokes. It's about people and it's about solving problems.

3\. People buy 4 things and 4 things only. Ever. Those 4 things are time, money, sex, and approval/peace of mind. If you try selling something other than those 4 things you will fail.

4\. People buy aspirin always. They buy vitamins only occassionally and at unpredictable times. Sell aspirin.

5\. I say in every talk I give: "all things being equal people buy from their friends. So make everything else equal then go make a lot of friends."

6\. Being valuable and useful is all you ever need to do to sell things. Help people out. Send interesting posts. Write birthday cards. Record videos sharing your ideas for growing their business. Introduce people who would benefit from knowing each other then get out of the way, expecting nothing in return. Do this consistently and authentically and people will find ways to give you money. I promise.

7\. No one cares about your quota, your payroll, your opex, your burn rate, etc. No one. They care about the problem you are solving for them.

There is more than 100 trillion dollars in the global economy just waiting for you to breathe it in. Good luck._

[https://news.ycombinator.com/item?id=23285438](https://news.ycombinator.com/item?id=23285438)

</comment><comment><USER60> I got a lot out of some posts made by a user named arkades about why the nature of medical reimbursement in the US contributes to physician burnout: [https://news.ycombinator.com/item?id=22057249](https://news.ycombinator.com/item?id=22057249)

</comment><comment><USER39> The legendary "putnam" one, ofcourse: [https://news.ycombinator.com/item?id=35079](https://news.ycombinator.com/item?id=35079)

</comment><comment><USER61> Nowhere near as profound as many other comments listed here already, but here's a 2015 comment by _haberman_ that stuck with me for some reason, on how modern operating systems have learnt that 'grand abstractions' don't belong in the OS.

[https://news.ycombinator.com/item?id=9807777](https://news.ycombinator.com/item?id=9807777)

</comment><comment><USER62> I am newb here, but I found this to be hilarious.

[https://news.ycombinator.com/item?id=13142737](https://news.ycombinator.com/item?id=13142737)

Also, this one was nice.

[https://news.ycombinator.com/item?id=15107536](https://news.ycombinator.com/item?id=15107536)

Edit: Formatting

</comment><comment><USER63> Mine is the greatest comeback on HN, including comments 'pg

[https://news.ycombinator.com/item?id=35079](https://news.ycombinator.com/item?id=35079)

"As a matter of fact, I did"

</comment><comment><USER64> My favorite is [https://news.ycombinator.com/item?id=15797391](https://news.ycombinator.com/item?id=15797391), it is a reply to a story about a time traveler coming back warning us about Bitcoin.

</comment><comment><USER65> This one about alien life, and why carbon based life, like our own, makes so much sense:

[https://news.ycombinator.com/item?id=24115661](https://news.ycombinator.com/item?id=24115661)

</comment><comment><USER66> "I've seen how the burrito is made and I ain't hungry"

Discussing Android apps and trackers.

</comment><comment><USER67> From Nostrademons:

"I predict that Libra will work for a while, but will eventually be overshadowed either by competitors or by the new markets that it enables.

There's this pattern I've noticed where every major tech company, once initial traction has been established, gets three pivots. You can think of them as adolescence, mid-life, and rebirth.

The first pivot happens when the company is 5-8 years old (since the 1970s at least; older before then), and serves to define the company. The System 360 for IBM, defining it as the provider of mainframes for enterprises. MS-DOS for Microsoft, defining it as the dominant PC OS. The Macintosh for Apple, defining it as the most user-friendly consumer brand out there. GMail and Maps for Google, defining it as the conglomerate of the Internet age. Mobile for Facebook, defining it as the service that connects people regardless of where they are.

The second pivot happens when the company is 10-15, at the height of its dominance, and usually results from it entering the hottest new technology wave with a vengeance. It looks like it succeeds for a while, crushes early entrants, serves to legitimize that technology wave, but ultimately peters out as the company can't keep up with the changes that it introduces. The IBM PC for IBM, which legitimized the PC market but ultimately fell to clones. Internet Explorer for Microsoft, which legitimized the Internet but ultimately was eclipsed by Google's many products. The Newton for Apple, which legitimized the PDA market but ultimately was too early. Google+ for Google, which legitimized social networking but ultimately failed to gain traction.

The third pivot is when the company realizes that they basically incapable of innovating, and returns to the roots they established with the first pivot to live out their old age. Open-source consulting for IBM, leveraging their massive installed base of enterprise customers. VS Code, XBox, and Azure for Microsoft, recognizing that they are fundamentally a platforms company. The iPhone and iPad for Apple, refocusing on their strengths in UX and delivering top-quality consumer electronics products. Alphabet for Google, realizing that they're fundamentally a conglomerate that lets a thousand flowers bloom (and cancels 990 of them).

Libra is Facebook's second pivot. It'll look like it succeeds for a while, it'll legitimize cryptocurrency, but it'll ultimately end up eclipsed by what it creates. "

[https://news.ycombinator.com/item?id=20210791](https://news.ycombinator.com/item?id=20210791)

<comment><USER68> Generally interesting, but it's somewhat telling that the one prediction it made failed miserably.

<comment><USER67> I agree, but I still think the idea of looking at a company through its pivots is an interesting analysis. There is a lot of survivor's bias in this comment, but that's generally the case when talking about companies

</comment></comment></comment><comment><USER69> I stash mine here [https://twitter.com/hackercomments?s=21](https://twitter.com/hackercomments?s=21)

</comment><comment><USER70> Those guys with 700 to 1.5k tabs lol

<comment><USER31> The real reason people upgrade to 32/64gb of ram.

</comment></comment><comment><USER8> This one about whether designers are crazy because the OP didn't understand why designers would care about minute details in their work. It is because attention to detail creates superlative work. It is similar to why premature optimization isn't _necessarily_ bad for engineers.

[https://news.ycombinator.com/item?id=5002262](https://news.ycombinator.com/item?id=5002262)

"""

No, designers aren't crazy. You just don't understand a very fundamental concept of design. It even applies to engineering. It's okay—many people have the same frustrations as you do.

But those who care about the details achieve truly high quality results overall. It extends to all areas of the design, not just to the parts you can't see.

In the movie "Who Framed Roger Rabbit," there's a scene in a dark room where Roger Rabbit (an animated character) flies across the room, knocks a hanging lamp around, and the lighting becomes so dynamic that all the shadows move around including the animated character's shadow. Here's the scene in question: [http://www.youtube.com/watch?v=_EUPwsD64GI](http://www.youtube.com/watch?v=_EUPwsD64GI)

This was such a small detail that it would have been forgivable if the animators had left it out entirely: if they had not moved the lamp, kept the shadow steady, no one would have really noticed the difference. It would have been 100 times easier to animate and the effect wouldn't really have been that different.

But they did it anyway. The term was later coined, and "bump the lamp" is used throughout Disney (and probably other organizations) to mean something akin to "go the extra mile"—but I see it as having a special significance to design.

You're right, most people won't notice. By that logic, you could cut corners a lot of other places too. You could be lax about button colors matching exactly, or per-pixel sharpness on the map and buttons. No one would probably notice.

But if you go for every detail like it was the most important detail, you have the possibility of reaching a level of design quality that is superlative, and some people will notice. Others will not notice directly, but will see that the piece exudes style and quality subconsciously, due to the attention to small details. If you carry this into other areas of your work—programming, customer service, market strategy, marketing, and more—then you have a chance to create something of true quality.

If you don't pay attention to detail at that level, well, you might have the chance to actually get something done. Yes, it's a balance, like everything else. But you have to know that it won't be quite as good, and understand that yes, you are sacrificing something, even if you can't see it.

"""

</comment><comment><USER71> Some guy asked cpercival if he had won the Putnam. He had.

[https://news.ycombinator.com/item?id=35083](https://news.ycombinator.com/item?id=35083)

</comment><comment><USER72> [https://news.ycombinator.com/item?id=121413](https://news.ycombinator.com/item?id=121413)

> fiaz MANY days ago | parent | favorite | on: Ask News.YC: How to re-motivate > yourself?

> APOLOGIES for making this post so annoyingly long, but I really hope you > find value in the words below. > \</comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>----- I'm > going to first share a personal experience from my early trading days to > illustrate where I'm coming from. I used to wake up at 4:30 am everyday in > the Chicago suburbs to beat rush hour traffic and make it into downtown > Chicago at 6:30 am. In order to wake up so early, I fell into a habit of > sleeping at 9:00 pm and like a robot waking up at 4:30 am. This simple > routine was indirectly helpful when things seemed darkest.

For the first six months, I lost money and was ridiculed constantly by other traders who were more successful than me (which was about 20 other guys CONSTANTLY using me as a punching/whipping bag). The only thing that kept me going was the fact that some of the very same traders that would be making wise cracks at me for losing money were some of the most successful people I knew at the time. For better or worse, if I needed a trader to model myself after, it was the same people that were telling me how bad a trader I was - and although I was not open to really hear what they were saying, they were right about my skills in every way (but their feedback was always packaged in some sort of insult). After racking up some rather hefty losses, I was determined to quit at one point during month four, but because I had a habit of waking up at 4:30 am I simply "forgot" that the night before I told myself I would quit and spare myself further humiliation...by then I was warned that I was now on the red list of traders ready to be cut. Also, my personal savings were starting to approach zero (the base "draw" for house traders was enough to pay for food; you usually make your money on a percentage of your profits, and I was deep in the red at the time).

To say the least, there were many excellent reasons to be "reasonable", forget about my dreams, and quit. After 4 consecutive "failures to quit", I realized that I didn't quit because somewhere deep down I was hanging on to a dream, however remote at that point: that I could somehow be as successful as the other traders that I knew. At the same time I realized that I had hit rock bottom in that I couldn't even succeed in failing! Very tough times indeed... An interesting point to note here is that although my losses were starting to get very large, the people who were funding me as a trader kept me because I had one redeeming quality: EFFORT, and this helped build tenacity. Other traders who barely traded but had a fraction of my losses were cut much faster because they didn't put forth much effort. They were not willing to take losses and be bold/brave and fight it out; I was willing to take risks, and this saved me from getting cut faster than others.

Slowly I began to reinterpret the constant humiliation I was suffering: perhaps the other traders were right about their "jokes" and there might be something in what they are saying that will help me get out of the red. I also realized that since I had failed at quitting (which was now the ULTIMATE failure), there was no further failure for me and that if I took baby steps they were surely to succeed (this translated into taking smaller trades/profits).

Only after improving upon my abilities as a trader and channeling my energies appropriately did I succeed and earn everybody's respect as a trader (and you have no idea how this made me feel!). I quickly made enough in commissions to be trading my own account, and be successful as an independent trader onward. When I look back at those final months of 1999 (yeah that's right, I was losing huge cash at the end of 1999 when the entire market was going crazy UP!), there was more good than bad even when I was getting my ass handed to me. It's just that I was intentionally creating my own feedback (I'm right everybody else is wrong) instead of seeing the results I was getting (losses/insults) as feedback and information that would help me be successful.

I kind of snicker every time I see somebody ask for feedback on their startup on YC.News only to end up justifying themselves by telling everybody why they did what they did when they get negative feedback, which is the feedback of greatest value. If somebody tells you how crappy your idea is, thank them that they even spent a few brain cycles considering your idea.

The lessons I learned from this that are perhaps relevant to your questions:

\- Determine if you believe in yourself to succeed as an individual (I know this sounds odd, but for a moment just examine your thought patterns and your actions and see what message you are sending to yourself; do you listen to the voice that says you can't or are you paying attention to the feedback from your efforts and the results you are getting?)

\- Search deep down inside and see if the project you are working on is something you believe in or not. If you can't sell yourself, then you shouldn't bother trying any further...

\- ANY attention you get for your efforts is good attention. If you get LOTS of negative feedback, then be grateful - you've jumped the first hurdle of getting people to give a damn about what you are doing! :)

\- There is responsibility and accountability that goes with both success and failure. You need to be ready for both because they can be equally painful in equal ways. The amount of accountability that comes with success can be more unbearable than the accountability that accompanies failure. I personally know of some very talented people who enjoyed phenomenal initial success only to find just as fast that they were in over their heads.

\- The more you resist the possibility of failure then you are less likely to recognize possibilities that will help you succeed. If you are afraid to fail, then most certainly you are afraid to succeed. This sounds counterintuitive but it's based upon the fact that fear makes your mind less supple and less responsive to the changes that will push you out of the game - or conversely it will lessen the impulse to jump on the opportunities you need to succeed.

\- The results you get has everything to do with your users/market and less to do with you as an individual; it's sometimes hard to separate these two. See the other side of the equation and what side you are on before trying to solve it. Don't ever think you are above the feedback of your users...EVER!

\- Don't have expectations (this is just setting yourself up for failure). Because you are starting out you may not know what is best to help you succeed - ESPECIALLY if you're lacking motivation. Keep in mind that whatever results you get from your efforts will lead to more possibilities (in the form of additional information).

\- Have some behavioral "context" within which to exercise discipline and structure. Seek to grow your efforts within this context. My context was my sleep schedule. It was a routine that was so ingrained that my drive had a laser focus. This might not work for some, but it worked for me. Finally, I will add that in my opinion failing hard and fast is MUCH better than failing slowly. The faster you know for certain something isn't going to work out, the sooner you can cut your losses and move on to your next idea. When you eventually succeed, you will look back at all the times you were quick to cut your losses and get to where you are... \</comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>---

Please do NOT contact me asking for advice in trading/investing. This is a VERY personal thing, and it has everything to do with who you are, NOT with how much information you have, or which tools you use, or who you know.

</comment><comment><USER73> I really like this comment about learning to cope with programming when requirements keep changing:

[https://news.ycombinator.com/item?id=24543596](https://news.ycombinator.com/item?id=24543596)

> From where I sit (a backend developer, thoroughly burned out by webdev a > couple years ago), most of coding I do is software bureaucracy. Turn this > data into that data, ensuring module X and Y get paged in the process. Oh, > half of the code I'm about to write is implemented elsewhere - quick, figure > out how to juggle the dependency graph to somehow route control from here to > there and back. This data I want to convert is not of the right colour - oh, > I need to pass it through three sets of conversion layers to get back > essentially the same, but with a correct type tag on it. Etc.

> It's utterly and mind-numbingly boring, unless you architectured the whole > codebase yourself, at which point it's somewhat fun because it's your > codebase, and who doesn't like their own Rube Goldberg machines?

> At this point, I've learned a coping strategy: just forget the project scope > and focus on your little plot of land. Doesn't matter that the software I > wrote half of is going to help people do exciting stuff with industrial > robots. What matters is that the customer changed some small and irrelevant > piece of requirements for the 5th time, and I now have to route some data > from the front to the back, through the other half of the code, written by > my co-worker (a fine coder, btw.). So a bunch of layers of code bureaucracy > I'm not familiar with, and discovering which feels like learning how to fill > tax forms in a foreign country. If I start thinking about the industrial > robots I'll just get depressed, so instead I focus on making the best jump > through legacy code possible, so that I impress myself and my code reviewer > (and hopefully make the 6th time I'm visiting this pit easier on everyone).

> Maybe it's a problem of perceptions. Like in the modern military - you join > because you think you'll get to fly a helicopter and shoot shoulder-mounted > rockets for daily exercise. You get there and you realize it's just hard > physical work, a bit of mental abuse, and a lot of doing nothing useful in > particular (at least until you advance high enough or quit). And so I > started coding, dreaming I'll be lording over pixels on the screens, > animating machine golems, and helping rockets reach their desired orbits. > Instead, I'm spending endless days pushing people to simplify the > architecture, so that I can shove my data through four levels of indirection > instead of six (and get the software to run 10x faster in the process), and > all that to rearrange some data on the screen that really should've been > just given away to people on an Excel sheet with a page of instructions > attached.

</comment><comment><USER74> Originally posted by OrdaGarb on April 26th, 2015...

I have a slight fascination with sweeteners. About five years ago I imported a kilo of "Neotame" sweetener from a chem factory in Shanghai. It was claimed to be 10,000-12,000 times sweeter than sugar. It's a white powder and came in a metal can with a crimped lid and typically plain chemical labeling. Supposedly it is FDA-approved and a distant derivative of aspartame.

US customs held it for two weeks before sending it on to Colorado with no explanation. When received, the box was covered in "inspected" tape and they had put the canister in a clear plastic bag. The crimped lid looked like a rottweiler chewed it open and white powder was all over the inside of the bag. I unwisely opened this in my kitchen with no respirator as advised by the MSDS which I read after the fact (I am not a smart man).

Despite careful handling of the bag, it is so fine in composition that a small cloud of powder erupted in front of me and a hazy layer of the stuff settled over the kitchen. Eyes burning and some mild choking from inhaling the cloud, I instantly marveled at how unbelievably sweet the air tasted, and it was delicious. For several hours I could still taste it on my lips. The poor customs inspector will have had a lasting memory of that container I'm pretty sure.

Even after a thorough wipe-down, to this day I encounter items in my kitchen with visually imperceptible amounts of residue. After touching it and getting even microscopic quantities of the stuff on a utensil or cup, bowl, plate, whatever, it adds an intense element of sweetness to the food being prepared, sometimes to our delight. I still have more than 900g even after giving away multiple baggies to friends and family (with proper safety precautions).

We have been hooked on it since that first encounter. I keep a 100mL bottle of solution in the fridge which is used to fill smaller dropper bottles. I've prepared that 100mL bottle three times over five years, and that works out to about 12g of personal (somewhat heavy) usage for two people in that time. Probably nowhere near the LD50.

I carry a tiny 30mL dropper bottle of the solution for sweetening the nasty office coffee and anything else as appropriate. Four drops to a normal cup of coffee. We sweeten home-carbonated beverages, oatmeal, baked goods (it is heat stable), use it in marinades, and countless other applications.

I don't know if it's safe. The actual quantity used is so incredibly tiny that it seems irrelevant. I'd sweeten my coffee with polonium-210 if it could be done in Neotame-like quantities. Between this, a salt shaker loaded with MSG and a Darwin fish on my car, I'm doomed anyway.

[https://news.ycombinator.com/item?id=9440566](https://news.ycombinator.com/item?id=9440566)

</comment><comment><USER75> This

</comment><comment><USER76> I'm sad I can't find my favorite comment, and have actually searched for it on multiple occasions.

It wasn't a good comment, it was a bad comment — I am only sharing it on the off chance that somebody else will remember and post the link.

The discussion had veered to bicycle helmets: should they be required, is there innovation to be realized in their design, something like that.

Somebody posted some comment about definitely wanting people to have a helmet when they crash their bike and hit their head on the curb, and some other person became incensed at their evidence-free assertion that wearing a helmet would be helpful when crashing one's bike and having one's head hit the curb. The incensed party demanded links to scientifically rigorous studies, rather than some layperson's hunch, that helmet wearing would be beneficial in this particular circumstance.

I laughed out loud when I read it, because it so pithily and absurdly epitomized what is often _wrong_ with this website.

<comment><USER77> Wait, could that be me ? I had that exact conversation on HN. I was the one asking for studies (and my previous comment was sthg like "helmets should be mandatory" then I was told "do you realize it increases injuries ?" then I ask for proof) and the reasoning in the studies was that making helmets mandatory decreased car drivers' attention to cyclists making them less cautious around them, resulting in more serious injuries.

Strangely neither can I find those comments at the time.

I have the fuzzy memory that it was about a bikes around Sydney or Australia but HN comments tend to derail from the initial submission so I can't be sure.

edit: found it ! [https://news.ycombinator.com/item?id=4262081](https://news.ycombinator.com/item?id=4262081)

<comment><USER76> That is not the comment I was referring to — sounds reasonable to me!

(The comment I am looking for also started rather emotionally, something like "Ugh I hate — HATE — when people... (make assumptions like this without evidence, something something)". And then possibly invoked the names of a couple of logical fallacies.

(T_T) I thought I'd be able to find it with the double "hate", but I can't... it was some years ago too, at least 4-5, so I am probably mis-remembering.

<comment><USER77> Well, my first comment in this thread is a rant:

> I am always annoyed with articles promoting safe cycling when illustrating > pictures show cyclists without helmets or any other form of protective > gears.

> In Belgium there is a small movement promoting bikes and there are all kind > of hipsters, bobo and 50 years old grey hair vegan on fake vintage bikes > riding without helmets and without any sense of road conduct. Good bikers > wearing yellow jackets and helmets are really rare ; I am beginning to think > the formers are ruining the latters's image.

[https://news.ycombinator.com/item?id=4261122](https://news.ycombinator.com/item?id=4261122)

</comment></comment></comment></comment><comment><USER78> This one.

</comment><comment><USER79> I used to like the writings of a user called something like Marin Country until they were banned! I liked the anecdotes, flow of words, way of speaking. He was a retired programmer with lots of stories and fell across the lines of policial correctness (which moves every year) and got banned.

<comment><USER80> If a user is banned do their comments disappear?</comment></comment>


C, Fortran, and single-character strings - <AUTHOR> https://lwn.net/SubscriberLink/791393/90b4a7adf99d95a8/ <comment><USER2> I work on a large, multi-platform, legacy codebase of C/C++ and Fortran, and the FFI between the two sides has always been an area where care must be taken to ensure proper interop.

Being multi-platform, multi-compiler through the years has helped us ferret out FFI problems like the one described here, as our Windows Fortran compiler used to be Compaq Visual Fortran, which interleaved character strings with their length argument (as opposed to gfortran, which puts all such string lengths at the very end of the argument list). With Compaq Visual Fortran (and Intel Fortran with the right options set), forgetting to specify a string length argument on the C side would almost invariably lead to immediate crashes (unless, of course, the sole string argument was at the end).

<comment><USER3> Compaq had their own Fortran compiler?

<comment><USER4> It was DEC's and came to Compaq by way of the acquisition.

</comment></comment></comment><comment><USER5> The discussion is probably pretty confusing for most folks not familiar with Fortran.

Fortran compilers can set their own ABI and usually do for everything after Fortran 77. For Fortran 77 and earlier, which includes CHARACTER __* 1, most compilers use the same ABI that the Bell Labs f77 preprocessor used, which lives on as f2c in the modern era. This compatbility is common enough that many packages written in C that want to be called from Fortran have this ABI directly embedded in their source code.

The problem is that the current gcc gfortran front-end doesn't do this for CHARACTER __* 1 strings, and there 's C code expecting that extra string length argument. And if they want to change it, any object code with CHARACTER __* 1 arguments in it needs to be recompiled.

<comment><USER6> > The problem is that the current gcc gfortran front-end doesn't do this for > CHARACTER* 1 strings, and there's C code expecting that extra string length > argument.

Is it? My reading of the article is that gcc gfortran _expects_ the length argument for CHARACTER* 1 to be provided as usual, but there is a lot of C code that does _not_ provide that when calling Fortran functions.

<comment><USER7> That's how I read it too. The existing C code which is not passing the expected parameter was a result of "hey I've tried it without and it worked" approach. It "worked" at the moment, and only for that specific compiler, but once the compiler started to rely on the "fact" that the parameter is "by definition there" some the previously "working" programs started to break.

And this outcome is in fact nothing special to C and Fortran. I can just as well write a shell script (or any other) which "expects" that there is a parameter and if I don't use it and I later start to depend on it I'm sure there will be some other scripts calling that one and passing something else than what was "defined" as expected to be passed.

On that topic, erverybody should read ryl00's comment here. Having more than one really different target is the only practically effective path to immunize from these kinds of dependencies. For me, it's one of good arguments against the "monoculture" software targets.

</comment></comment></comment><comment><USER8> If the breakage is ultimately caused by compilers like GCC omitting the length for single-character strings, why doesn't this discuss the fix of simply changing GCC to start putting the length there for single-character strings?

<comment><USER9> I've never used FORTRAN, so I'm just going off of my reading of the article. It looks to me like the correct requirement is that the C source code itself include the string length, and that developer have not been doing so.

<comment><USER8> Oh I see. I was thinking that calls to Fortran functions were actually recognizable by the compiler, but you're right, the code snippet right at the top shows a manually-inserted strlen(s) in the C code.

</comment></comment></comment><comment><USER10> Hmm. Unless my understanding is off, these tail calls will work right if there happens to be a word in the stack where the missing argument is supposed to be, and that word has a value of 1 (correct string length). Because that looks indistinguishable from the correct argument having been passed.

So that suggests a run-time solution like this:

1\. The function examines the string length argument word. If that word is 1, everything is cool; the function proceeds, the helper function is tail called and so forth.

2\. If, on entry, that word is not 1, then the function calls itself (with a real non-tail call that allocates new argument). It passes itself the missing 1 value properly. When that call nested returns, it also returns.

3\. This nested invocation issued in (2) now sees a value of 1 in that argument since it is correctly passed, and so it proceeds as given in step (1). When all that tail-call-ology finally executes a proper return somewhere, it will return to this nested invocation of that function, which will pop out, and return to the C caller, as described in (2).

No need for a compiler switch to turn off tail calls. Tail calls work among functions that obey the ABI (like all Fortran-Fortran calls). When an ABI violation is detected, then we get an extra frame. (Hopefully there aren't tail calling loops that involve cycling between Fortran and broken C.)

The broken C can be gradually fixed. The workaround can be deprecated and removed when that happens. Correct code doesn't trigger the workaround behavior in the invoked functions and also doesn't suffer the performance hit of the extra nested call. That creates an incentive to fix the C code.

<comment><USER11> I'm not sure that doing that check in every function that might be called from C would actually improve performance compared to just turning off tail calls.

<comment><USER10> Well, not every function that might be called from C; every function which takes this funny string argument that is known to be of length 1 that might be called from C.

</comment></comment></comment><comment><USER12> The article quoted someone saying "OUCH. So, basically, people have been depending on C undefined behavior for ages..."

This doesn't actually have to do with c undefined behavior at all right? I think I get what is happening but that comment is throwing me off.

<comment><USER13> As I understand it, some C programs omit the final argument to a function. That function does not actually read the value of the argument, but it is still undefined behaviour for it not to be passed in.

<comment><USER14> Yes and no. This is great example of why some of the rhetoric about undefined behavior in C is misleading.

This is fundamentally an FFI issue. The C compiler is relying on the function signature declared, explicitly or implicitly, by the person writing the binding code. But this declared signature is _wrong_ , and because it's wrong C says that the behavior when invoking the routine is undefined--undefined behavior.

Other languages would have the _exact_ same result. If you told Rust that the FFI prototype for a FORTRAN routine was foo(pointer-to-char) instead of foo(pointer-to-char, size_t), you'd get the exact same broken runtime behavior as with the C code. But Rust never defines this as "undefined behavior". Rust's behavior is no less undefined in the practical sense, it just don't formalize the concept in its specification, such as it is. Like most languages it side steps the issue because it's a thorny area for a specification, especially thorny now that the literal phrase "undefined behavior" elicits reactionary flames from the peanut gallery. If you say nothing you're not inviting criticism, nor are you burdened with managing yet another dimension of consistency in your specification.

There are problems with "undefined behavior" in C, how it works in the standard and especially how compilers use it to shift blame for insecure semantics. The problems are just nuanced and technical and can't be constructively discussed outside specific contexts. And especially in discussions comparing C to different languages, these problems get conflated with orthogonal issues like type safety.

EDIT: For context here are some relevant citations to C11 itself:

C11 (N1570) 3.4.3p1: "undefined behavior [is] behavior, upon use of a nonportable or erroneous program construct or of erroneous data, for which this International Standard imposes no requirements"

C11 (N1570 3.4.3p2: "NOTE Possible undefined behavior ranges from ignoring the situation completely with unpredictable results, to behaving during translation or program execution in a documented manner characteristic of the environment (with or without the issuance of a diagnostic message), to terminating a translation or execution (with the issuance of a diagnostic message)."

C11 (N1570) 4p2: "If a ''shall'' or ''shall not'' requirement that appears outside of a constraint or runtime-constraint is violated, the behavior is undefined. Undefined behavior is otherwise indicated in this International Standard by the words ''undefined behavior'' or by the omission of any explicit definition of behavior. There is no difference in emphasis among these three; they all describe ''behavior that is undefined''."

<comment><USER12> I guess my confusion is if writing a signature for a FORTRAN function wrong is undefined behavior.

I wasn't thinking that having a function prototype incompatible with the external fortran code would be undefined, just, uh, wrong in a normal sort of way.

<comment><USER15> How could it be wrong in a 'normal sort of way', though?

The type signature is the rule of law that allows you to normally pass safe pieces of memory between two systems. If you define it badly, what exactly is supposed to catch this and tell you that it's wrong?

Is the compiler supposed to speak both languages, and be able to disassemble whatever object code it's given when linking to attempt to determine if the signature is valid?

<comment><USER12> By generating c code that correctly sets memory to call a function with a particular ABI with the given signature. Then it's the normal sort of wrong.

Since the spec doesn't speak about FFI at all it seems, I think this is implementation defined behavior, not undefined behavior.

<comment><USER15> > By generating c code that correctly sets memory to call a function with a > particular ABI with the given signature.

And it does. The signature is wrong, however, and so the resulting call will be wrong.

Since the standard doesn't speak about FFI, and the invalid call is actually in another language's memory, I'd say we're in completely undefined territory here.

To try and say that more clearly, I'd still call it undefined behaviour if an invalid type signature in Java calling Go resulted in something going wrong. Java can't know how Go is supposed to react to a fudge in it's internal memory semantics.

<comment><USER12> Ok, I understand what you mean. In the c spec undefined behavior has a specific meaning that I don't think applies to this case.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> I'm horribly amused by this article. You constantly see C programmers working around that mess of a language like this and so constantly see these glaring flaws appear as if from the ether, almost as if it's a natural consequence of programming.

Meanwhile, Ada has Interfaces.Fortran for actually interfacing with the language and doing it correctly. Fools will tell you C is the backbone of civilization and everything interfaces with it, but this is yet another example of how they're wrong.

<comment><USER17> This is not a language issue, but programmers who have made a mistake. The same thing would happen if an assembly programmer were not to set the correct registers or push all the arguments to the stack before calling an other function. The same thing would happen in most languages if a programmer declared their FFI incorrectly.

So Programmer/s have written function prototypes for the Fortran functions, but they have omitted the length parameter in that prototype. That is the reason behind this. It should have never worked to begin with but the way it was handled on the FORTRAN side things meant for single length strings it did not crash. GCC probably could have just made the change they wanted, but they don't want to break existing code right away that is technically already broken.

It boils down to some programmer/s doing the following.

int foo(char _str);

instead of

int foo(char _str, int len); // The correct prototype.

The prototype is you saying there is a function that exists with this name, return type and parameters. The compiler will then construct calls with what you have defined as the function prototype. Then when linking the linker just looks at the name of the called function and replaces it with the address/memory position of the function.

<comment><USER16> >This is not a language issue, but programmers who have made a mistake.

That's always the excuse with C, I know.

>The same thing would happen in most languages if a programmer declared their FFI incorrectly.

If the Ada Interfaces.Fortran didn't work, that would be a compiler issue, but that's only because Ada does things right.

>It boils down to some programmer/s doing the following.

I read the article, you know.

<comment><USER17> You can do the same thing in ada. Instead of using the Fortran_Character type defined in Interfaces.Fortran you could just define your own that does not follow Fortran's string calling convention.

Is that a language problem with ada? That's all the C programmers did here.

<comment><USER16> >You can do the same thing in ada.

I wouldn't know how GNAT behaves in this case, but I figure it would at the least be much harder to do by mistake, as has been done with C for years.

>Instead of using the Fortran_Character type defined in Interfaces.Fortran you could just define your own that does not follow Fortran's string calling convention.

The Ada compiler is aware of what's being done when you interface with another language. You must tell it how the procedure is from a different language and you're also able to specify the representation of Ada data types to conform. I wouldn't be surprised to learn that GNAT is capable of checking on the Fortran side of things as well, for interfacing like this.

>Is that a language problem with ada? That's all the C programmers did here.

I don't believe Ada has this issue, but I'd wager it at the least makes it harder to make. In any case, I have no personal experience interfacing Ada with Fortran.

My point, however, is that this is a very common issue with C programming, where people don't know what they're doing and things break constantly. The C language is not designed for interfacing with other languages, in part because it wasn't designed much at all.

<comment><USER18> Calling conventions are ... conventions. What language magically solves inter architecture ABIs?</comment></comment></comment></comment></comment></comment>


Icelandair letting go its flight attendants and shifting their duties to pilots - <AUTHOR> https://www.businessinsider.com/icelandair-fire-all-flight-attendants-make-pilots-do-job-2020-7 <comment><USER2> This article is confused. The cockpit crew will not be handing out drinks. Other pilot-rated employees will be acting as attendants.

You can't operate in the EU, US or Canada w/o someone attending in the back. You have to have so many attendants per passengers.

Pilots are well qualified for any cabin duties. Many US pilots who have lost their rating or are going through a health issue that keeps them out of the cockpit serve as attendants to keep their benefits or wait to be medically reinstated.

[https://www.independent.co.uk/travel/news-and- advice/coronav...](https://www.independent.co.uk/travel/news-and- advice/coronavirus-icelandair-pilots-cabin-crew-passengers-a9626041.html)

"From 20 July pilots who are currently not required for flying duties will be assigned "responsibility for safety on board"."

<comment><USER3> >The cockpit crew will not be handing out drinks.

The mental image this gave me was amusing:

>"Hey man, can you steer for a few minutes? I've gotta go push the drink cart."

>"Sure thing dude, I'll get it next time."

<comment><USER4> I remember the first time I flew in the mid eighties. The plane was a twelve seater, the pilot asked for one of the passengers to sit up front and 'be' the copilot. When it came time to hand out the refreshments, he would get the copilot to pull drinks out of the eski, and pitch the plane up so they could roll the drinks down the aisle.

<comment><USER5> It makes me sad that we've sacrificed many genuinely human moments like this to modernity.

<comment><USER6> What do you mean? I remember the pre 9/11 days, and they were fun. I was a kid that would sit with the pilots on the jumbo jets and take pictures with them and the flight attendants, who would give me extra tomato juice. Didn't happen after 9/11 though.

<comment><USER7> When I was young (before 9/11, I was 12 or so) the pilot crew of my EasyJet flight from Amsterdam to Geneva invited me to the cockpit to see. I was flying with my grandma and it was my first flight ever. I love flying and the machines, being in the cockpit as a 12 year old boy was so staggering and inmense.

Then I didn't fly for years, and about a year ago (while being 24) I started traveling more. Suddenly while being delayed at Amsterdam airport the cockpit crew of my EasyJet flight to Split invited people to the cockpit if they wanted to see. I waited 2 minutes to see if any children would come up and then decided to relive my childhood memory and go to the cockpit.

Another time while on a KLM flight to Bangkok I gave the cabin crew a bag of chocolates as a thank you gift for the good service. I did the same thing when flying back from Bangkok to Amsterdam as a thank you to get me home during the pandemic (this was end of march). Both of the times they personally thanked me, the first time I even got one of the little houses they give away to business class passengers [0].

My point is, those human moments do exist. It is just that most people don't 'want' them anymore because that means that it should come from themselves. (No one was standing up to go to the cockpit, nor was anyone else giving candy to the cabin crew). I am sure something changed after 9/11, things like being in the cockpit while flying isn't an option anymore. But with what is going on these days, I can't complain about that.

I have to admit, maybe I am a bit biased. If it weren't for my small stutter in intense situations I would've probably been a pilot. :-)

[0] [https://blog.klm.com/klm-delfts-blue-minitiature-houses- ever...](https://blog.klm.com/klm-delfts-blue-minitiature-houses-everything- you-need-to-know/)

<comment><USER6> That was a beautiful image you painted. Thank you. I must seek them more earnestly now, being in the cockpit during the flight was so cool but I would still like to see it even not in flight.

Unrelated but when I started drinking kombucha my stutter went away. Try probiotics!

<comment><USER7> I assume most pilots will let you into the cockpit if you are delayed and while being on the ground. But I have to admit that the last time it happened was a complete surprise for me. I didn't know they were allowed to do that. But maybe they aren't or it is up to their own discretion? I guess, if you really want it you could ask the cabin crew if it is possible to check it out. I don't think a pilot would have anything against it personally because they are proud of their jobs too.

Haven't tried Kombucha and didn't know about it. I will look for it and try it out. Thanks! :)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> This is already outdated. Just now the cabin-crew union and Icelandair signed a new contract.

I couldn't find an article in english but in another article they say that all layoffs will be reversed.

[https://www.visir.is/g/20201992741d/flugfreyjur-og- icelandai...](https://www.visir.is/g/20201992741d/flugfreyjur-og-icelandair- undirrita-nyjan-kjarasamning)

<comment><USER9> What kind of deal did they get? Did they meet in the middle, or did the airline force them to sign a terrible deal?

<comment><USER10> Doesn't look like the one they were hoping for:

The bargaining committee of Flugfreyjufélag Íslands and Icelandair have signed a new wage agreement. The new agreement is expected to be valid until September 30, 2025. It is based on an agreement that was recently rejected in a vote.

</comment></comment></comment><comment><USER11> That's a ballsy move that paid off for them. Want more money? Not gonna happen. Here's your termination letter. Oh, now you want to negotiate? Ok let's do it.

Hahaha. Gotta hand it to Icelandicair on this one.

</comment><comment><USER12> "In May 2019, 419,000 passengers flew on Icelandair. In May 2020, just 3,100 hopped aboard."

I mean, yeah.

</comment><comment><USER13> Stories like this one remind me how flying was diffrent when I was a kid in the 70-80's.

It was better, except for the cigarettes smoke which was supposed to miracously dissapea between rows 15 and 16.

And the price, it was way more expensive.

Beside that: light to no security, real food, a sense of excitement. A flight was something a kud remembered for a long time (I still do, after 40 years).

My teenage children, after 50 flights, treat this as an extended and cumbersome bus ride.

</comment><comment><USER14> Flight safety concerns will likely nix this. But regardless, that's a bad way to end a labor dispute in these times. But with Wow Air bankrupt there isn't all that much competition to and from that airport. Over half of all destinations reachable from Iceland are flown by Icelandair.

<comment><USER15> Will they even be allowed to operate in EU like this?

[https://www.easa.europa.eu/the-agency/faqs/minimum- required-...](https://www.easa.europa.eu/the-agency/faqs/minimum-required- cabin-crew)

>when establishing the number of cabin crew needed for each aircraft and flight (...) by either applying the number established during the certification process or by a calculation of 1 cabin crew member per 50 installed passenger seats.

<comment><USER16> Having extra pilots act as cabin crew should be ok with the numbers as long as they don't drop the count. The concern is are they qualified to act as flight attendants? When I read the article, it doesn't say the pilot and co-pilot would be cabin crew, it was additional pilots filling in. If so few people fly, there should be enough pilots. Not saying they want to do this or legal, but it would be possible.

</comment></comment></comment><comment><USER17> What a nightmare. Icelandair was a well-run airline that was a pleasure to fly.

</comment><comment><USER18> That makes sense if there are almost no passengers in planes. And if they have too many idling pilots as many flights are not scheduled.

</comment><comment><USER19> I would actually be surprised if that's legal. Flight attendants perform some critical safety functions, they're not glorified wait staff that can be replaced on a whim.

<comment><USER20> I don't mean to be ignorant, but what are these _critical_ safety functions? The closest thing to safety that I've seen is they give the speech at the beginning about oxygen masks and remind you to buckle up.

Given that the inflight safety demonstration is on video now, what's the critical safety role?

<comment><USER21> First aid, detecting issues in the cabin, firefighting, checking the emergency exits and opening them or directing passengers elsewhere in case of an evacuation, ...

<comment><USER22> Dealing with passengers that have an sociopathic entitlement complex who get violent..

</comment></comment></comment></comment><comment><USER23> People Express used to do similar things

</comment><comment><USER24> Who's going to sit with the pilot when the co-pilot goes to the bathroom (and who's going to block the isle with the cart while that happens?).

Seems like they're using COVID19 as an excuse to solve their labor dispute:

      Services "will continue to be at a minimum, as (they have been) since the impact of COVID-19 started," the airline said.

Pilots need to be aviating, navigating and communicating, not worrying about what's going on in the cabin!

<comment><USER25> There will be a pilot, co-pilot, and additional pilot-rated staff performing cabin safety duties.

</comment></comment><comment><USER26> > _the airline said it planned to have its pilots temporarily assume flight > attendants ' roles_

Excuse me captain can you top off my orange soda and fetch me a bag of peanuts?....this isn't what their pilots signed up for, expect a Icelandair pilot strike next

<comment><USER27> It will be pilots otherwise unemployed performing minimal cabin duties ('cause covid dictates minimal interaction) while collecting a pilot's salary.

This isn't a cost cutting measure but a stopgap due to failed negotiations between the airline and flight attendants.

</comment></comment><comment><USER28> we gonna hear these decisions again in a 2022 mayday episode

</comment><comment><USER29> Is this an EFTA loophole?

> It's also not apparent if such a setup is legal in the regions in which > Icelandair flies, including the US and the European Union.</comment>


Show HN: Facebook Messenger for OSX [Open source] - <AUTHOR> https://github.com/Reflejo/fachero

<comment><AUTHOR> Context: I just open sourced this. I was working on this some months ago but since I started another project I have no time right now to be very active with this project. Feel free to do whatever you want. It's not finished _AT ALL_</comment>


Ask HN: Best informal introduction to Economics? - <AUTHOR> Hi everyone,
I would like to study Economics out of curiosity and for the sake of my own education. I am not planning on becoming an expert.
Can you recommend any informal resources to study Economics? I've heard about books such as "Naked Economics" and "Economics for the Common Good" but I don't know how good/bad are they. The resources don't have to be books.
The questions are on my mind at the moment are: How does a country's economic system work? How do markets function? How do systems like Capitalism and Socialism function? <comment><USER2> Henry Hazlitt's Economics in One Lesson is a good place to start.

[https://www.amazon.com/Economics-One-Lesson-Shortest- Underst...](https://www.amazon.com/Economics-One-Lesson-Shortest- Understand/dp/0517548232)</comment>