Space station leak caused by drill, not meteorite - <AUTHOR> https://www.upi.com/Hole-responsible-for-space-station-leak-caused-by-drill-not-meteorite-Russia-says/2331536013870/ <comment><USER2> > According to Russia Today, the person responsible for the hole has been > identified.

That was pretty scary sentence for me. Short story, I know the guy who made the mistake on the mirror for the Hubble Telescope. [https://www.nasa.gov/content/hubbles-mirror- flaw](https://www.nasa.gov/content/hubbles-mirror-flaw)

He was a great guy and was the President for the Trouts Unlimited when I was a kid. That one thing defined him for so long. Was pretty sad story to me. He did one mistake but the quality control department were never troubled like he was even though they had it right in front of them for years.

<comment><USER3> "An unnamed source told RIA Novosti the person responsible for drilling the hole filled it with glue instead of reporting the mistake."

A mistake is one thing. Mistakes are lessons and it's good to have people who have some solid lessons in their backgrounds.

Trying to patch it with some glue without telling anyone is a character flaw and the person needs to go, so everyone else gets the lesson.

<comment><USER4> That's easy to say from our position, but I'd bet that the person responsible had a pretty good idea what would happen if they reported it.

At my current machine shop, I'd have a half dozen people documenting what happened, helping to design, implement, and rush out the repaired part, adjusting customer expectations, and making sure that the process that allowed me to make the mistake is fixed so that others repeat it.

In my previous job, it depended on the day. Sometimes you'd get called into the boss' office and cussed at for a while with no consequences, sometimes you'd get something capricious like confiscating the offenders' drill bits and requiring check-out for each hole from the foreman's office for a week. (It only lasted 3 days, but that literally happened.) Sometimes the boss was having a really bad day with customers or vendors he couldn't punish, and you could have a half dozen guys bodging a repair out of the boss' view and keeping him distracted. Or fired on the spot, if it didn't work. I lasted 5 years and 37 hires and fires at that 20-man shop, should have left so much sooner.

The official story is:

> _It is a technological error by a specialist. It was done by a human hand -- > there are traces of a drill sliding along the surface._ \- > [http://tass.com/science/1019791](http://tass.com/science/1019791)

Drills should not be sliding along the surface of a part. You locate the hole by marking with calipers from a known location and hit the intersection with a punch. Especially in curvy aluminum aerospace work. And there's certainly little opportunity for anyone to go get some glue, install it, wait for it to cure, and paint/cover it up without inspection. I am surprised, though, that they didn't just weld in some filler and grind it smooth.

I suspect that NASA and some of their suppliers are nominally more like the former but practically there's still some risk to admitting error, and that Roscosmos/Energia is closer to the latter.

<comment><USER5> >You locate the hole by marking with calipers from a known location and hit the intersection with a punch.

Okay, and now do that in microgravity in a spacesuit with the thick gloves. Good luck.

<comment><USER6> this wasn't drilled in space....

<comment><USER7> Where did they have to repair it when the plug came loose and began leaking again?

<comment><USER8> It said the astronauts used an epoxy to plug it, but I don't think it required a space walk. I assume it was doable from inside.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> I wonder what work environment exists, that would cause a worker to hide their mistakes and endanger the crew, instead of reporting it. And how many more mistakes go unreported?

I hope russia addresses the root issue, and not just fires the person responsible.

<comment><USER10> Thinly veiled Russia-hate? Its not like US engineers are immune to such ridiculous mistakes. Why make this a Russia thing?

<comment><USER11> Since the hole was in a Russian Soyuz capsule, it seems likely that Russia will react in some way. I don't think it's "Russia-hate" to hope that they'll take steps to prevent similar issues in the future.

</comment></comment></comment><comment><USER12> This has happened before and that was catastrophic.

On June 30, 1971, the crew of Soyuz 11, Soviet cosmonauts Georgy Dobrovolsky, Vladislav Volkov, and Viktor Patsayev were killed after the cabin vent valve accidentally opened before atmospheric re-entry. There had been no indication of trouble until the recovery team opened the capsule and found the dead crew.

<comment><USER13> As tragic as the Soyuz 11 incident was, it's hardly similar in any of its aspects:

"The fault was traced to a breathing ventilation valve, located between the orbital module and the descent module, that had been jolted open as the descent module separated from the service module, 12 minutes and 3 seconds after retrofire. The two were held together by explosive bolts designed to fire sequentially; in fact, they had fired simultaneously. The explosive force of the simultaneous bolt firing caused the internal mechanism of the pressure equalization valve to loosen a seal that was usually discarded later and which normally allowed for automatic adjustment of the cabin pressure. The valve opened at an altitude of 168 kilometres, and the resultant loss of pressure was fatal within seconds."

</comment></comment><comment><USER14> This is why they do things like x-ray every cm of the welds on the new Astute class submarines. Trust, but verify.

<comment><USER15> For what it's worth, that's how a lot of critical welds are verified. X-raying welds is fairly standard practice in the field if the strength of the weld is important enough. And it's not as much about trust as how much it is fairly easy to make a mistake while welding and not know it. A good welder paying close attention can tell whether a weld is good with fairly high accuracy. But that's not always enough certainty and when skilled honest people make mistakes here, they won't nevessarily know it. So, you X-ray.

</comment></comment><comment><USER16> I bought a laser cutter from a company in Guandong for the makerspace I was involved in, and there were about a half dozen similar "bodges" I discovered in the manufacture. There were two acorn nuts which were attached to bolts that didn't go all the way through, so were effectively decorations. (The other 8 did, so I know that was a total bodge.) The bodges even included the way the bracket holding one of the mirrors was installed.

I know for a fact that you can buy epoxy which matches the index of refraction of most kinds of glass. The guy who drilled the hole and filled it with glue must have been in a bit of a hurry.

PSA from Matt Groening: If you drink, don't drill! [http://home.earthlink.net/~foghornj/drinkand.html](http://home.earthlink.net/~foghornj/drinkand.html)

</comment><comment><USER17> Do these modules undergo pressure tests before launching? I would hope there's some quality control to catch this type of flaw.

<comment><USER18> I would expect "glue in a hole" to fail as the sun hits the module every 90 mins, and the surface probably heats to 100C and cools to -25C. That kind of heat cycling causes expansion and contraction, causing the boundary between the metal and the glue to weaken then fail.

One can test for that in the lab, but it involves heat cycling for a _long_ time to reproduce the same number of cycles the space station could undergo in its multi-decade lifespan.

<comment><USER19> Where do you get this glue info? I don't see it in the article.

So someone accidentally drilled through an expensive space station module on earth and filled the hole with glue. Wow..

<comment><USER20> Third paragraph, with a quote directly after it:

 _An unnamed source told RIA Novosti the person responsible for drilling the hole filled it with glue instead of reporting the mistake.

"The glue dried and was squeezed out, opening the hole," the source told the media outlet._

It's fun that the astronauts did the proper/final fix with epoxy, which to most people is of course _also_ a glue. So perhaps the worker used (or mis- used) the wrong glue to fix this, rather than tried to cover up the mistake? Of course it sounds reasonable that it should have been reported, which didn't happen, so so the working environment seems improvable.

<comment><USER19> Ugh ok, wtf. Believe it or not but with JS disabled I get a completely different text that doesn't mention glue.

<comment><USER21> I can reproduce that on chrome with JS off. It looks like the first two paragraphs are there but covered by the image.

</comment></comment></comment></comment></comment></comment><comment><USER22> I imagine incidents like this will become a lot more common as space travel becomes commonplace and spacecraft are built in assembly lines.

Also, the fix should be simple - either the epoxi or a small metal plate glued or welded on top of the hole (I'd suggest glue, because of the lower thermal stresses). The guy used the wrong glue.

It's just one atmosphere. Taking turns and putting a finger on top of the hole is a reasonable emergency fix.

<comment><USER23> The Expanse sci-fi novel series goes into this subject quite a lot.

The people who live on and around the outer planets ("belters") are all said to have an extreme fixation on ship maintenance, those who didn't having been "weeded out" of the gene pool by their negligence.

<comment><USER22> The ones who don't carry duct tape will certainly be weeded out rather quickly.

<comment><USER16> There's some kind of aircraft repair tape like duct tape, which is made with much stronger fibers and uses a much stronger adhesive. It's not called "aircraft tape," however. That's something else. A friend was telling me that there was a small hole in a submarine once found patched by the stuff.

I try to carry 4 strips of medical tape stuck to the back of my emergency credit card. I think I have to check it and restock.

<comment><USER22> The one used in aircraft is called speed tape. It's thick aluminum foil and a high-grade adhesive and resists well to heat, some fire, and lots of wind. There's also one called "Gorilla tape", IIRC, that's like duct tape but much stronger.

A submarine is subject to much higher pressure differentials than aircraft or spacecraft (and also from the wrong directions for easy repairs from the inside) and I wouldn't recommend relying on it for long. I'm not sure how speed tape would work if applied in a vacuum, but I guess most repairs like this would be done from the inside, under some pressurization. Speed tape would be better, but, if you have external thermal blankets over the hull, duct tape should do just fine. It's only 1 atmosphere, after all (0.25 if you can do pure oxygen).

Eventually, when you stop by a proper facility, you'll want to do something more permanent (and fix the thermal blankets/external hull, because, if it was a micrometeorite that reached the pressurized part, there must be a hole there too).

<comment><USER16> _A submarine is subject to much higher pressure differentials than aircraft or spacecraft (and also from the wrong directions for easy repairs from the inside) and I wouldn 't recommend relying on it for long._

The story was that the discovery was one of horror. Basically, it was a tragedy averted. Also, the tape was on the outside, but I forget the particulars.

<comment><USER22> I hope the crew knew about it and was ready to surface if it started leaking. Well... I guess submarine crews are a good model for astronauts in that they live surrounded by a lethal environment. The difference is that, if you venture outside low Earth orbit, you may be days away from safety, so an extra amount of zeal with improvised repairs may be warranted.

</comment></comment></comment></comment></comment></comment></comment><comment><USER24> A rock hitting a space station is a meteorite or meteor?

<comment><USER25> The word you're looking for is _meteoroid_.

( _Not_ meteorite. It's not a meteorite until it has fallen on solid ground or water :-) ).

They're objects whose size is smaller than that of an asteroid, but larger than that of a micrometeoroid or space dust particle. Basically anything larger than a grain of sand, but not big enough to be an asteroid, is a meteoroid.

<comment><USER16>
        And the meteorite's just what causes the light
        And the meteor's how it's perceived
        And the meteoroid's a bone thrown from the void
            that lies quiet in offering to thee

[https://www.youtube.com/watch?v=UGoNCvoZuYA](https://www.youtube.com/watch?v=UGoNCvoZuYA)

</comment></comment></comment><comment><USER26> Living up to the standards of the Russian space station in the Armageddon movie.

<comment><USER27> "Welcome to the craft where all parts are made by the lowest bidder" is the one citation I remember. The Russians were greeted this way.

<comment><USER28> Which is a quote based upon a quote by Alan Shepard[0].

[0]: [https://en.wikiquote.org/wiki/Alan_Shepard](https://en.wikiquote.org/wiki/Alan_Shepard)

</comment></comment></comment><comment><USER29> Just a few days ago people on HN were believing it was an asteroid. If anybody would have challenged that, they would not have been believed.

My point is, people believe most things, specially from space agencies, without having any means of verifying it. And they believe it without any doubt.

If I told you that these space agencies are lying to the public, would you believe it? There is so much evidence of nasa and ess fakery. It just annoys me that most people still believe anything coming from these sources.

<comment><USER30> > Just a few days ago people on HN were believing it was an asteroid. If > anybody would have challenged that, they would not have been believed.

Typically people do and should believe things based upon the strongest evidence. While you can't trust them to be totally right all the time, you can assume that, barring additional information and reasonable cause for doubt, that the most credible sources information is a good place to start. Do you have a source that's more credible than NASA in regards to events occurring in space with NASA astronauts?

</comment></comment><comment><USER31> Err, nothing says the identified responsible was a Russian. The glue had time to dry off, so the drilling may have occurred a long time ago. Let's not jump to conclusions, But the suspense is insufferable!

<comment><USER32> What does it matter if it was a Russian or not? Obviously that person should have reported it, but I'm surprised that there wasn't more QC. I imagined at least a few people inspect everything after it's "ready to go".

<comment><USER10> The only reason it matters if it was a Russian engineer or not, is so that Americans' currently engaged in two-minutes hate can use this story as yet more confirmation of their bias against Russia. There's simply no other reason to point it out and make an issue out of it.

<comment><USER33> So where did it say that a Russian did it? The only reference is to a 'specialist'. You're putting up a straw man so that you can push it down. You sound like you're from that well-known trolling group btw.

<comment><USER10> Your reading comprehension not so good? Blinded by hate? Look at the person whose message I responded to - it was _them_ who mentioned it was a Russian.

>well-known trolling group

Yeah, thanks for proving my point that America is in the grips of two-minutes hate right now ..

<comment><USER33> I've read all the comments. The main theme is a discussion about how a working environment can be set up to avoid such potentially disastrous things to happen - i.e. hiding technical problems and errors instead of doing it properly (report, fix, verify). It's not like it's only happened in Russia. Everybody knows about the Challenger disaster, which came about due to (in that case) management ignoring issues, so it's different, but still similar.

Or do you really prefer that things like this shouldn't be discussed or revealed, but be hidden under a carpet instead?

(and a lot of people here, including myself, are not American. Wouldn't go there if I were paid for it. So that's not what this is about. At all.)</comment></comment></comment></comment></comment></comment>


When anonymous attackers went after two Yale law students, they struck back - <AUTHOR> http://www.portfolio.com/news-markets/national-news/portfolio/2009/02/11/Two-Lawyers-Fight-Cyber-Bullying?print=true

<comment><USER2> I seriously question the judgment of anyone who uses anonymous, hyperbolic statements on the internet as criteria in any decision they make, let alone for a job application.

Historically information in publicly broadcast mediums has been trustworthy, but that's simply not true anymore. We need, as a society, to realize that the signal to noise ratio has dropped precipitously in the last decade, and that this trend will only continue.

That being said, it's astonishingly stupid to spend your free time making fun of the most litigious group of people on the face of the planet. The members of the forums pretty much deserve whatever they get.

<comment><USER3> The legal profession, medicine, and a host of others depend on personal reputation. I can see an employer, recognizing that it is all baseless, passing because he doesn't want to explain to clients or colleagues that it is all baseless, particularly when there are plenty of other candidates. Suppose you or your SO were Googling a potential pediatrician and got pages of molestation accusations?

<comment><USER2> Are these molestation charges backed by the names of real families, or are they anonymous? There's a world of difference between the two. There's also a clear distinction calling someone a child molester and calling someone "cheerful and big-titted".

If a person isn't willing to put their name behind a statement, then we shouldn't lend it any credence. As lurid as the statements were, I don't think its any different from what went on behind closed doors fifty years ago. Barring wishful thinking, people didn't really believe third-hand rumors, so why should it be any different now?

I wonder, though, if this story would even be a blip on the radar if the two girls' names were replaced by some pop star. Maybe it's just that the bar for celebrity has been lowered to the point that all it takes is to be an attractive girl at a prestigious law school.

<comment><USER4> How anonymous are you talking? Libelous remarks from someone calling themselves DeathFscker are bad, but can probably be isgnored. But what about the same libelous remarks coming from Wyatt Rupert Byrd, a name I just randomly generated? Those might be taken more seriously if found in the context of a Google search.

</comment></comment></comment></comment><comment><USER3> It's a very long, very good read about what happens when defamation and character attacks get out of hand at a site. The owners did nothing to tone things down or to remove offending posts. It's interesting to note that the victims went after the perps and may have detroyed the perps careers.

I think we need a thoughtful discussion on how to deal with this or congress will do it for us.

<comment><USER5> I understand what you mean, but I think we need much more than a thoughtful discussion. Congress is in a legislatin' mood and I don't think they're interested in arguments for self-regulation.

</comment></comment><comment><USER6> This article is a good explanation of why it is wise to moderate online discussions. "One was finding out the firm where Ciolli would be working upon graduation and pressuring it to withdraw its offer. It turned out to be the Boston law firm of Edwards, Angell, Palmer & Dodge, which in April rescinded its offer. The message board violated 'principles of collegiality and respect that members of the legal profession should observe in their dealings with other lawyers,' the firm's managing partner, Charles DeWitt, wrote Ciolli."

<comment><USER7> That's a good point, and maybe without moderation users can act like a mob doing and saying things they normally wouldn't do.

<comment><USER8> The simple fact that they are anonymous is what gives them license to do this, if they were id'd then they'd never do any of this. Anonymity brings out the coward in people, and nowhere more so than online.

</comment></comment></comment><comment><USER7> This is something that can apply to us techies and just about anyone these days. Imagine a potential employer or an investor Google's your name and all they find is crap calling your character, or judgment, or skills into question. Bang goes the job or the funding ...

Heck, I don't even want people I don't know to find my Facebook or Twitter page; all it can takes is someone to post a potentially inappropriate photo, or an inappropriately tagged photo of you for your reputation to be destroyed in some circles. Which is why I keep a professional identity on LinkedIn, and obfuscate my other personal online identities (friend's can find me pretty easily).

<comment><USER9> I think Google needs to start treating searches on people as a special use case where user-generated websites like Autoadmit get low marks.

It used to be that "public figures" could be scrutinized harshly, in print media, while private citizens had a certain degree of protection. It would be considered harassment for the paper to write an op-ed about John Q. Doe, store manager at the local Drug-Fix, being bad at his job.

Now, it's worse to be a private citizen, because it's much easier to destroy a private person's "Google resume". I could talk shit about a prominent politician for days and wouldn't have much of an effect on his Google presence, but if I (or anyone) decided to go into "digital hit man" mode on Joe Q. Bloggs, it wouldn't take more than half an hour. Because there's so little content about him, it would be easy to make over 90% of web content about him be negative.

</comment></comment><comment><USER10> I'm not convinced there was anything illegal about the threatening / abusive postings. I think we need to be careful about protecting our freedom of speech.

However, I'm very happy that those individuals who were identified have faced _social_ repercussions for their behavior. I would not want anything to do with any of those posters. If I were hiring, I wouldn't hire any of them. I would probably boycott any businesses that work with them. If they're free to be jerks, I'm free take my business elsewhere.

Therein lies the more interesting issue. Anonymity. It's hard to exert social pressure on bad behavior if you can't identify the people involved. Do we have a right to be anonymous online? Do the pros outweigh the cons?

I really don't know...

<comment><USER11> I think the defendants of this case deserve a lot more sympathy than they're getting. The types of remarks you make when you're an anonymous dude on a message board of only marginal repute are not the same types of remarks you make when your name and identity are known.

There's an argument for removing the ability to be anonymous, but I think it's pretty much superior to allow people to hide their identity, but take their statements with all of the doubt that you would an anonymous, gossipy rumor. Trolls will be trolls, and the best thing to do is ignore them, not try to out them and ruin their professional lives.

<comment><USER9> I would remark that the punishment of the defendants has been uneven and had more to do with whose identities were recoverable than who did anything wrong. About half the defendants were people who made one off-hand comment (e.g. "Get in line") and are now suffering extremely disproportionate consequences. Ciolli (Great Teacher Onizuka) didn't even take part in this behavior at all-- he was an outed lawyer-- and he lost his job over this. This smacks of opportunistic target-seeking.

On the other hand, posters like Pauliewalnuts, lonelyvirgin, and :D bordered on being sociopathic and I feel like those guys are getting what was coming to them. I also think there's an enormous difference between, for example, expressing desire to have sex with someone (locker-room banter) and making jokes about becoming forceful with that person, which most women would take as a threat.

</comment></comment></comment><comment><USER12> Some of the comments were over the line (calling for physical attacks, etc), but most of the people being sued didn't actually say anything illegal (being 'mean' isn't illegal in the US). Jokes, opinions, and fantasy (no matter how lewd) shouldn't be illegal.

The article only acknowledges this at the very end: _"But many other posts, however cruel, might not be seen as extreme or outrageous enough to lose their First Amendment protection. As for defamation, the overwhelming majority of the comments could be construed as opinions, which are protected."_

These women are going way overboard, and abusing the court system (and the fact that they have sufficient resources to legally harass posters) to get what they want. Frankly, because of their litigious behavior, I don't think I would ever hire either of them.

<comment><USER13> Actually, I thought the article pretty clearly stated the opposite of your last point.

One, the women were far from litigious (depends on your definition of course but to me taking a year and using everything from humor to begging in an attempt to resolve the case without going to litigation is the opposite of litigious).

Two, they did _not_ have the resources to sue the posters - unless I misunderstood the article, Google's legal firm is representing them for free because Google wants to have control over any legal precedents that affect their ability to index non-moderated online forums.

<comment><USER14> That last part about the law firm representing them for free because it would allow Google to have some control over precedent seems, if true, very ethically questionable to me. Lawyer have a responsibility of undivided loyalty to their clients. Just because the work is being done _pro bono_ does not nullify that responsibility.

</comment></comment></comment><comment><USER9> 180

</comment><comment><USER15> Somehow this vaguely reminds me of patent trolls</comment>


Did Mark Zuckerberg just accidentally leak the new newsfeed design? - <AUTHOR> http://sefsar.com/post/16915595901/yo-zuck-whats-that

<comment><USER2> Does that even matter to anyone? Seems to me about as important as if someone had leaked a google-doodle.

<comment><AUTHOR> No, this could change how you use Facebook. A doodle doesn't do that.

<comment><USER2> Did the way you use Facebook change significantly last time they changed the layout of the news feed?

<comment><USER3> Yep. I'm commenting on and liking all sorts of things I'd never have seen before the mini-feed in the top-right corner was introduced.

</comment></comment></comment></comment><comment><USER4> Encouraging search will lead to more revenue.

Facebook's problem has always been that they are trying to convert passive users into active ones.

When you google for "watches", it makes sense to show you ads for watches; you've expressed your interest.

On facebook, you're interested in Fiona's party pics, not watches.

By increasing the focus on (social)search, FB are positioning themselves to take advantage of people expressing specific interests, instead of being as they currently are, passive users.

<comment><AUTHOR> Yeah, but I wouldn't be surprised if Facebook were planning to expand their partnership with Microsoft Bing either.

</comment></comment><comment><USER5> Downvote this comment if you must, but I have to say it:

Meh.

</comment><comment><USER6> Should have used the image enhancement software that people use in the movies, hard to see anything now.

</comment><comment><USER7> From what I've heard is that Facebook employees essentially used a custom Facebook that's integrated into their actual work and work environment. My guess would be is that is what we're seeing in this photo.

</comment><comment><USER8> If I was zuck, I would totally have my own version/skin.

<comment><USER9> I agree with youssefs, too. It makes sense that he would use something that everybody is using and testing the latest experiments on top of the public build.

<comment><AUTHOR> Yep. Here's a quote by George Clooney about a conversation he had with President Obama.

"I talked with the president at one of those fundraisers some months back, and I asked him, "What keeps you up at night?"

And he said, "Everything. Everything that gets to my desk is a critical mass. If it gets to my desk, then no one else could have handled it."

<comment><USER10> I don't know what you mean, but are you really comparing Zuckerberg to a President?

<comment><USER11> If you're not trolling, he means those at the top have their problems filtered for them. The stuff that get to them are mostly top priorities.

Comparing the head of an organization to the head of a state is fair in this kind of context.

</comment></comment></comment></comment></comment><comment><USER12> You my friend have far too much time on your hands!

</comment><comment><USER13> At this stage nothing is leaking "accidentally". Facebook has gone through enough press cycles, feature releases, competitive responses, etc., that anything you are seeing is carefully crafted. Even if it has the look of an ad-hoc casual internal-only just-for-my-friends feel.

The userspace reactions to even minor changes and features are predictable.

</comment><comment><USER14> To me it looks like he has no blue bar on top at all and has in fact just scrolled down a bit. The white part is a browser tab.

<comment><USER15> I don't think so. The ticker on the right suggests the bar is part of the Facebook site.

</comment></comment><comment><USER16> This is a good catch. This is almost certainly a development version of facebook that gets rolled out internally before it hits the world, or even A/B testing.

</comment><comment><USER17> maybe it was just admin view?

</comment><comment><USER18> I wonder if they would be interested in buying out Greplin (greplin.com) If they are moving in that direction.

</comment><comment><USER19> Could Facebook ever challenge Google as the place where people do their searches?

<comment><USER20> Hypothetically—and with much more compelling brand pages than are around at present—Facebook could replace much of the web.

Why go on a brand's website when you could just go on their Facebook page?

</comment></comment><comment><USER21> The feed itself still has a long way to do. I want to try a Timeline feed.

</comment><comment><USER22> He just has user styles and scripts applied, he knows to code, right? :-)

</comment><comment><USER23> You could at least make photos bigger. Now it's impossible to see.</comment>


The worst program I ever worked on - <AUTHOR> http://jacquesmattheij.com/The+worst+program+I+ever+worked+on <comment><USER3> My instructor in the introductory programming course informed us that yes, the grader did indeed read our source code, and check to make sure we'd commented it meaningfully.

I decided to test this assertion.

The program in question was trivial - it was one of those contrived examples of how OOP works, a "Kennel" which had "Dog" objects which possessed various traits, and would bark() or wag(), stuff like that.

I obfuscated the code as much as I could - indentation all over the place, line breaks in inappropriate places, code hidden inside multi-line comments, and multiple dummy variables named one character off from the useful variables. The useful variables had names like "satrtrek," "maryppopins" and "pizza." The dummies were "startrek" and "marypoppins."

This exercise taught me nothing about writing code, but because my code gave the expected output, I still got an A. Source code comments from then on were made only as needed.

The next semester, I got an email from a friend of mine who just couldn't get his head around what was supposed to be going on. He asked whether I'd kept the source to one particular program, so that he could review it and see if he couldn't make sense of the assignment.

I had indeed kept it, and just sent the .java files to him without opening them for review. By coincidence, the program he was stuck on was the one I'd obfuscated. He switched his major to Math and Spanish for what I believe to be unrelated reasons.

</comment><comment><USER4> Worst for me was something I was asked to maintain a little while ago. Was essentially Microsoft Reporting Services implemented in 80,000 lines of VB.NET.

The first thing I did was chuck it into VS2010 and run some code metrics on it. The results follow,

10 or so Methods had 2000+ lines of code. The maintainability index was 0 (number between 0 and 100 where 0 is unmaintainable). The worst function had a cyclomatic complexity of 2500 (the worst I have ever seen on a function before was 750 odd). It was full of nested inline dynamic SQL all of which refered to tables with 100+ columns, which had helpful names like sdf_324. There were about 5000 stored procedures of which most were 90% similar to other ones with a similar naming scheme. There were no foreign key constraints in the database. Every query including updates, inserts and deletes used NOLOCK (so no data integrity). It all lived in a single 80,000 line file, which crashed VS every time you tried to do a simple edit.

I essentially told my boss I would quit over it as there was no way I could support it without other aspects of work suffering. Thankfully it was put in the too hard basket and nobody else had to endure my pain.

I ended up peer reviewing the changes the guy made some time later and a single column update touched in the order of 500 lines of code.

EDIT - I forgot to mention, there was so much nested if code in methods you could hold down page down and it would look like the page was moving the other way, similar to how a wheel on tv looks like its spinning the other way.

</comment><comment><USER5> I met the guy who wrote this bit that I had to maintain:

      for(a=0;a<NbrOfAs;a++){
       for(aa=0;aa<NbrOfAAs;aa++){
        for(aaa=0;aaa<NbrOfAAAs;aaa++){
         for(aaaa=0;aaaa<NbrOfAAAAs;aaaa++){
          for(aaaaa=0;aaaaa<NbrOfAAAAAs;aaaaa++){
           if(aaaaa==0)else{ExamineAAAAA()}
          }
         }
        }
       }
      }

What really pissed me off was that he was such a nice guy.

He still works a lot. Makes a lot of money. And his customers love him. (No, I don't think they review his code.)

<comment><USER6> Unless there is a lot of creative abuse of operator overloading or macros lurking in there that code really doesn't look too awful compared to some monstrosities I've had to work with.

<comment><USER7> I agree. At first glance, I thought that the NbrofA/AA/etc names were just gibberish. The most nonsensical part to me is starting the for-loop iterator at zero, and then only executing the function if the iterator is non-zero.

<comment><USER6> I hadn't even noticed the if - I was thinking it was loops all the way down....

</comment></comment></comment></comment><comment><USER8> You really don't know bad programming until you have spent some time in a 50000 line cobol program. I'd post some crap I work on every day but I don't want to make anyone cry. Nevermind. Here's some random code I'm working on.

                 MOVE SPACES TO LISTBAT-NAME.
                 STRING WORK-FILES "LIST.BAT" DELIMITED BY "  "
                 INTO    LISTBAT-NAME.
                 OPEN OUTPUT LISTBAT.
                 MOVE SPACES TO SCR-S.
                 STRING "DIR /B " DATA-PREFIX " > "
                 WORK-FILES "TMPLIST" DELIMITED BY "  "
                 INTO  SCR-S.
                 MOVE SCR-S TO LISTBAT-REC.
                 WRITE LISTBAT-REC.
                 CLOSE LISTBAT.
                 CALL "C$system" USING LISTBAT-NAME, 96
                 GIVING STATUS-VAL.
                 MOVE SPACES TO TMPLIST-NAME.
                 STRING WORK-FILES "TMPLIST" DELIMITED BY "  "
                 INTO  TMPLIST-NAME.
                 OPEN INPUT TMPLIST.
                 MOVE LOW-VALUE TO LIST-NAME.
                 PERFORM UNTIL 1 = 2
                 READ TMPLIST
                 INTO SCR-S
                    AT END EXIT PERFORM
                 END-READ
                 ADD 1 TO PROGRESS-REC-CT
                 INSPECT SCR-S CONVERTING LOWER-CASE-ALPHA TO
                  UPPER-CASE-ALPHA
                  PERFORM VARYING SCR-X FROM 50 BY -1 UNTIL
                  SCR-X = 1
                  IF SCR-S(SCR-X:1) = "."
                  MOVE SPACES TO SCR-S(SCR-X:)
                  EXIT PERFORM
                  END-IF
                 END-PERFORM
                 CALL "CC/STRINGER" USING SCR-S, STRING-INFO
                 MOVE SCR-S(1:STRING-INFO-LENGTH) TO TMP-RID
                 PERFORM LOAD-RPT-FILE THRU END-LOAD-RPT-FILE
                 END-PERFORM.
                 CLOSE TMPLIST.

The newline on some of those lines is off because HN makes it wrap but you get the idea

<comment><USER9> Note to self: do not learn COBOL.

<comment><USER10> That's funny, because I look at that and think it's too bad I don't know anything about COBOL. It's not like I'm planning to learn it or anything, but it's quite different from anything I've ever worked with.

So, questions: I know I'll never program in COBOL. But I'm interested in programming languages in general. How much of a "quick intro" would be worth digesting just for the purpose of contrasting to C, VBA, Lisp, etc.? Is there a good one to look at?

<comment><USER8> I'm interning with a company that is a COBOL shop. It took me months to make the transition from "normal languages". I don't think it's worth learning honestly unless you get a job in it. Here are some things it has taught me.

It's taught me to create pretty code that is indented correctly. I pretty much live in a debugger. Most people out of a CS program think they know how to debug stuff. They don't have a clue. It's taught me to be very meticulous and review every single thing I do down to periods(which BTW terminate loops and if statements making life hell) If you can't understand what you just wrote it needs rewritten.

As far as language comparisons. All variables are declared at the top of the program. All variables are fully global. If you move a variable to a smaller variable it doesn't throw an error it just gets truncated. Loops start at 1 instead of 0. There is very limited error handling.

I don't know of any resources online. I searched when I started working but I didn't find anything real helpful. I did have a 25 year old 30 million line code base to learn from though

</comment></comment></comment></comment><comment><USER11> I worked on a piece of code that literally drove the guy who wrote it round the bend. He had a mental breakdown, ran away, and eventually ended up in a different state ~3000 miles away.

It wasn't so bad.

Now debugging code written by _Chemistry Students_... that's some scary stuff right there.

Which is not to go all elitist and put Comp Sci degrees up on a pedestal, one of the better coders I've had the pleasure of working with was a trained vet. He was very methodical.

Actually, now that I think about it, working with something that if you make it angry it will bite your hand off, is probably good preparation for dealing with a compiler...

<comment><USER12> You should try working with code written by hardware engineers. Those guys are extremely smart when it comes to digital and analog electronics, but never ever let them write a device driver ...

<comment><USER13> Those guys are _too_ smart. When you start to write programs that are too big to understand as one lump, you start to learn to decompose your code and organize it in ways that help you understand it a little bit at a time. They never do that; they just keep the whole program in their head at one time. Tell them that a function should do one "simple" thing that makes sense as a unit, and they have no problem putting the whole program in that function.

Actually, I shouldn't say they are _too_ smart, because they will continue to program like that even when it causes them problems....

</comment></comment></comment><comment><USER14> I worked with a guy (I won't name the company) who wrote Java code in one, huge, static class as much as possible. In fact, everything was largely in one function too.

He decided to name his fields alphabetically.

static int a

static int b

static String c

static float d

static int e...

What, I wondered, would happen when he ran out of letters? Scrolling down further I saw this:

static int aa

static float ab

static String ac

static int ad...

<comment><USER11> To really bork up the Java, you need a pattern fanatic. Once you stand working with Handler Adapter Handlers you know you should have taken the other colour pill.

<comment><USER15> Yes, i remember working for a company (java devs) where at some point we ended up having wrappers around wrappers around wrappers delegating stuff around, factories of factories ... It made your head spin.

<comment><USER16> Yes. APIDelegatorInvocationHandler and APIAbstractFactoryFactoryProvider. (actual Java class names)

<comment><USER17> When you said 'actual Java class name' I thought for a moment that those were actually classes in one of Java's libraries. I googled the names, though, and fortunately, they're not...

</comment></comment></comment></comment></comment><comment><USER18> I think the best way to guarantee job security is to solve hard problems for the company you work for, and make it visible (i.e., communicate about it). This will gain respect from your peers and give you a reputation of being useful and very worthy keeping around.

Writing some kind of obfuscated code is shooting yourself in the foot - <USER2> a while not even you can maintain it. Plus, your peers will notice and probably not like it. This notion will percolate up to management.

Another way to guarantee job security might be when you are the only person able (or willing) to maintain some old legacy system. This carries the risk that if that system is finally scrapped or replaced, your job is being scrapped too ;-)

edit: horrible grammar

<comment><USER19> Not a pleasant story, but true...

I used to work at a place where one of the guys wrote a horribly complicated piece of code that about half of the system depended on. He was also quite an unpleasant man who routinely mocked everyone else in the company for not being as clever as he was.

The company ran out of money and needed to halve its workforce - one of my friends overheard him boasting that there was no way that they could get rid of him, as no-one understood what he had written.

I was asked about his code - I said no-one but him could maintain it, but give me three months and I could rewrite it.

I don't like to revel in other's misfortunes but the look on his face as he left the office on the day of the redundancies was a picture.

In the end I kept half of his code (ring-fenced so it was effectively a black box that no-one touched) and rewrote the rest in about a month.

Personally, I work hard, make it visible (as Luyt says), own up to my failures and every now and then go beyond the call of duty. And I try very hard to be nice to people, even when they're acting like idiots.

</comment></comment><comment><USER20> _The only place where the names made any immediate sense was 'main' and any C stdlib calls._

Any job worth doing is worth doing right. Contrariwise, any job worth fucking up is worth fucking up stupendously. He didn't go all the way.

      #define monkeymeat printf
      #define turtlescrotum malloc
      #define wolfnipplechips gets
      #define chipotlaway exit
      ...

<comment><USER21>
        #define HEREWEGO {
        #define ENOUGHNOW }

<comment><USER20> Well we are diverging from the theme, but the proper form of that is

      #define O_HAI {
      #define KTHXBYE }

<comment><USER22> You can even go a little further and use trigraphs, which is one of those ancient features that most people have forgotten because it doesn't make much sense anymore. ??< and ??> are equivalent to { and } in C, which could be handy for further obfuscation.

<http://en.wikipedia.org/wiki/Digraphs_and_trigraphs>

</comment></comment></comment></comment><comment><USER23> Back in the day, I was an RPG programmer (on an AS/400), and I had a co-worker who insisted upon using geographical labels for all of his GOTO targets: GOTO BARCELONA, GOTO TOKYO, etc.

Needless to say, maintaining his code took some getting used to.

<comment><USER11> That sounds kind of funny. Where do you go on error?

One time I had to debug this incredibly obfuscated Word Basic subroutine. It was such a mess of gotos (deliberately so) that the company that wrote it for us thought they had us over a barrel and could charge us like a wounded bull.

That is, until I showed my cow-orkers the superior technology of "paper, scissors and sticky tape".

<comment><USER24> _Where do you go on error_

Hell, Arizona or any other village with that name. Real C# code can be like this:

        if(John is evil){ goto Hell};

([http://msdn.microsoft.com/en- us/library/scekt9xw%28v=vs.71%2...](http://msdn.microsoft.com/en- us/library/scekt9xw%28v=vs.71%29.aspx))

<comment><USER23> GOTO HELL showed up with predictable frequency. I don't recall if he used it for errors, though.

<comment><USER25> Which Hell would that be? The one in California, Michigan, the Cayman Islands or Norway?

</comment></comment></comment></comment></comment><comment><USER26> A project I worked at during an internship had an unmanaged C++ portion for rendering complex typography, which was written when every letter in a variable cost $10 (or so it seems). The result was that "pointer to a metadata character" became the variable "pmc", and that was just the beginning of it. I never quite did understand what the variable lpmnoics meant, and debugging the C++ was quite the drag and the task everybody avoided, and pushed off to the original developer of that code (who happened to be in a different geographic location).

<comment><USER27> That sort of thing is a lot easier to understand if you have the secret decoder key: <http://www.joelonsoftware.com/articles/Wrong.html>

But it's probably a defensible idea, in context. The idea is to supplement the type system of a low-level language with a manually-checked type system that helps you find semantic errors.

<comment><USER26> You're right, eventually I did get the hang of the chunk of code and wasn't afraid of it. Lots of others in the team were however. Also, because of eXtreme Programming and pairing, I knew the C# and what it was doing in 2 weeks and was writing code, having never seen C# before. I had some C++ experience, but by the end of my 6 month internship wasn't comfortable with the "views code". Yes, it was high performance code that did black magic, but making it readable is halfway to being able to understand it. It worked and it was fast enough and did good stuff (ever try doing a vertical unicode editing view?).

</comment></comment></comment><comment><USER28> It does not need to be that complicated :)

When a company I worked for was bought the new companies tried to lay of some (most) of the employees. At this time our team was working on a product that was to a large degree implemented in Scheme (because management didn't really care about the programming language). I quit at the company (for unrelated reasons) soon thereafter, but it seems that my colleague (with whom I've implemented the system) had quite a good job security at this time.

<comment><USER29> I can't tell if the number of parentheticals in your post is a pun about using Scheme or not.

</comment></comment><comment><USER30> The legacy system that I'm working on now has about 20-30 distinct classes/data types that it needs to manage and persist to the database. The previous developer chose to implement all of these different data structures in one uber-table named 'object' and in the application code with one uber- class named 'Thing'. Relationships between 'Things', regardless of meaning or type, are simply dumped into a 'relationship' table. It wouldn't be so bad except for the meaning and nature of relationships is often inferred based on the order or 'direction' of the relationships in the database.

So pretend that I have a 'Thing' representing a table, and another 'Thing' representing a column. If the relationship was from the table to the column then that might indicate that the column simply belongs to the table. However, if the relationship is from the column to the table, then that might indicate that the column is a primary key.

There are also other gems deep within the bowels of the system. Many functions named things like 'doItForRealThisTime' and 'reallyDoIt'.

<comment><USER31> One of my favorite accessor method names I've run across is 'maybeGetCube()'.

The idea was that if it was cached, then it would return the cube, otherwise null. Cube was actually relatively aptly named, it was a big matrix of data BTW.

I guess really it wasn't THAT horrible, but the whole idea of 'maybe' doing something in code has always made me chuckle.

<comment><USER32> I guess you've never tried Haskell then. :)

[http://hackage.haskell.org/packages/archive/base/18.104.22.168/doc...](http://hackage.haskell.org/packages/archive/base/220.127.116.11/doc/html/Data- Maybe.html)

</comment></comment></comment><comment><USER33> One of my former classmates names _everything_ he can get his hands on after various obscure anime references-- database names, variables, servers, you name it. Once in a blue moon, I'd recognize a function name as being a character or item from one of the few animes I'd seen and after a bit of tortured logic based on the background it almost seemed like a reasonable choice.

Needless to say, he does better working on his own.

<comment><USER34> I wonder if he read the Manga guide to databases:

[http://www.amazon.com/Manga-Guide-Databases-Mana- Takahashi/d...](http://www.amazon.com/Manga-Guide-Databases-Mana- Takahashi/dp/1593271905/ref=sr_1_3?ie=UTF8&s=books&qid=1300285857&sr=8-3)

<comment><USER33> My god... I guess it shouldn't surprise me that an EduManga industry exists.

</comment></comment></comment><comment><USER35> Call me Captain Obvious, but I feel like quite often the time spent in obfuscating code in many cases might be a major component of why programmers that do this sort of thing get fired in the first place.

What goes on in someone's mind that says: "Maybe if I spend some time making my source code hard to understand I can better preserve my job." ?

In reality all it does is slow them down, waste their time and lead to the firing of the developer. (At which point we get to hear funny stories from people like jacquesmatteij)

If that time was spent improving/refactoring their code and working on new things, they'd actually have the job security they were so desperately seeking.

<comment><USER36> While this is true, there's a lot of space in between a model developer and a purposely-obfuscating twit. There's definitely a line that lazy developers can walk where they contribute just enough to make firing them more of a pain than putting up with them. I suppose the lesson for businesses is: be very careful about who you hire in the first place, because you may end up stuck with the person whether you like it or not.

<comment><USER37> And there are a lot of subtle little ways in which a developer can drift into this state. For example, not bothering to document how systems work, or opting to make band-aid patches to brittle systems rather than refactoring. After a while of doing the easy/lazy thing, you're eventually lording over a complex black box that only you understand.

Some may find that a comfortable place to be. You become an expert; you have opportunities to be the hero. And it doesn't necessarily even happen via malicious intent. Sometimes you just don't have time to document or refactor anything, and you find yourself in a suboptimal local minimum. (Speaking from experience.)

</comment></comment></comment><comment><USER38> I've watched enough "programmers at play" and read enough code to happily believe that this guy was just letting his sense of humor have its day. I'm not at all convinced that things like this are deliberate obfuscation. Of course, I'm not the one who had to disentangle it all.

We've all read bad code with bad names that nonetheless "works" (except perhaps for the occasional minor glitch). This is perhaps just one that combines poor programming style with a mis-placed sense of humor.

<comment><USER11> I agree. Tomato and Pizza aren't any less silly than Foo, Baz and Bar, and certainly much less offensive than Fubar...

... It's not just programmers that do this either, also network admins name their computers R2D2 and C3PO, Shodan, Skynet etc.

<comment><USER39> Oh, yes......

My previous employer, you could work out the function of a server and its platform from its name; it was embedded within the name. There were index numbers when we had more than one which wasn't ideal, but....

My current employer, it helps if you know your nature taxonomies in some detail. We may have more to keep track of and so more namespace clashing, but I can't help but feel it's a suboptimal solution.

</comment></comment></comment><comment><USER40> I once took over some work that was previously the domain of our most highly paid ($150-200k a year) "architect"/contractor. Imagine my surprise when I actually examined his code and realized that it looked like it had been written by a student in an intro-level C101 class. At one point, I asked him what his approach to program design was...he replied "brute force and ignorance" and walked away laughing. We fired him shortly thereafter.

</comment><comment><USER41> This is off topic but I find it difficult to read the blog-articles from jaquesmattheij.com . Zooming doesn't help because the text doesn't wrap correctly. Just a suggestion for the author to change the layout of the page.

<comment><USER42> The typography is off. The body text is written in Arial, which is not a great choice for body text (it's better for display). When in doubt, use Verdana (sans-serif) or Georgia (serif) for body text. Also, the font size is too small.

Here is an example of his blog with better typography. I used 18px Georgia as the body text instead of 12px Arial. I used Droid Sans (a nice display font) for the blog title.

<http://i.imgur.com/jhjJA.png>

<comment><USER43> I was under the impression that serif fonts were best left to headlines that are supposed to catch your attention, and that body text should always be a serif font - and that Arial is one of the better serif fonts if you use set the size to at least 14px and line-height to 150%.

<comment><USER44> You are missing the word "sans" from that comment.

The general opinion used to be that serif was better for bodytext, and sans for title, and Arial is sans serif, but not one of the better ones.

<comment><USER43> Yeah, I meant sans serif for body text :)

</comment></comment></comment></comment></comment><comment><USER45> This story reminded me of the poor sod I met who coded for a government department: [http://blog.jgc.org/2007/08/why-you-dont-want-to-code- for.ht...](http://blog.jgc.org/2007/08/why-you-dont-want-to-code-for.html)

</comment><comment><USER46> One semester I was TA'ing a certain course all electrical and computer engineering students are required to take.

One student named all his variables in phonetic chinese (using the utf8 character set of course).

Another student named all his variables after superheros.

<comment><USER47> For the Chinese guy, I wonder if the code would have been way easy to maintain for the average Chinese developer. That would be an interesting analysis.

<comment><USER48> I once worked in a Chinese software company on the mainland and often maintained code written by Chinese developers.

I'm Irish and didn't appreciate their comments in Chinese, they didn't appreciate my comments in Irish.

Once that was understood we swapped quickly over to English for all comments / variables / declarations.

<comment><USER49> On that note, Python's style guide, PEP 8, contains this:

"Python coders from non-English speaking countries: please write your comments in English, unless you are 120% sure that the code will never be read by people who don't speak your language."

<http://www.python.org/dev/peps/pep-0008/>

</comment></comment></comment></comment><comment><USER50> I worked with a guy a couple years ago who used the planets and nearby stars as a version numbering scheme. For example, the first revision of a file might be "Jupiter" and the second revision might have been called "Mars." (Of course, he didn't use the planets in their natural order)

He also refused to use real version control or even any kind of on network backup and insisted on using a Zip drive to back up all of the code he was working on. Needless to say, we had an intervention that involved hiding the Zip drive, and he quit in disgust shortly after.

</comment><comment><USER51> I once worked on a game for the Wii using a 7 year old engine originally developed for the PS2. The company had a high turnover rate and the code was atrocious. The engine had been used for several games and each title introduced a new hack in the engine. You had the tipical spaghetti with meatballs mess with 2000+ lines functions and hacked code with comments like: "This code is for the E3 demo of the game xxx". Once I had to extend a 1000+ line switch statement.

But the worst I saw was something like this:

struct weapon { #ifdef xxx #include xxx #else ... #endif }

</comment><comment><USER27> I remember that one of the sample robots that shipped with the game CROBOTS had all of its variables named variations on ll1l11l1, which is actually even worse in a VGA font than it looks here.

</comment><comment><USER52> I came across a similar thing in the mid 1990s. The program had been written in the late 1980s, and the original author had since died, so he couldn't be consulted. In those days memory was scarce, so the program had been "compacted" by removing all spaces and with all variables represented by single characters. The original non-compacted source code had disappeared along with its originator. For any practical purpose, the whole program was unreadable.

</comment><comment><USER53> The OP's post and all the examples in the comments are good candidates for The Daily WTF (<http://thedailywtf.com>).

</comment><comment><USER54> code from a 150 line long method which is part of a 6000 line class. Obviously I can't post the actual code on here (but what it is doing isn't important in this context).

       private XXXXXXXXXXX XXXXXXXXXXX(final XXXXXXXXXXX[] XXXXXXXXXXX, final int XXXXXXXXXXX,
              final Long XXXXXXXXXXX, final Long XXXXXXXXXXX, final int XXXXXXXXXXX, final Long XXXXXXXXXXX,
              final XXXXXXXXXXX XXXXXXXXXXX, final int XXXXXXXXXXX, final int XXXXXXXXXXX, final Long XXXXXXXXXXX,
              final XXXXXXXXXXX XXXXXXXXXXX) {

             if (XXXXXXXXXXX || XXXXXXXXXXX) {
                XXXXXXXXXXX
                return null;
             }

             final XXXXXXXXXXX
             if (XXXXXXXXXXX) {
                XXXXXXXXXXX
                return null;
             }

             XXXXXXXXXXX

          if (XXXXXXXXXXX) {

             XXXXXXXXXXX
             XXXXXXXXXXX

             final XXXXXXXXXXX
             final XXXXXXXXXXX
             if (XXXXXXXXXXX {
                for (XXXXXXXXXXX) {
                   final XXXXXXXXXXX
                   final XXXXXXXXXXX
                   if (XXXXXXXXXXX) {
                      if (XXXXXXXXXXX) {
                         if (XXXXXXXXXXX || XXXXXXXXXXX) {
                            if (XXXXXXXXXXX || XXXXXXXXXXX)
                                || XXXXXXXXXXX)) {
                               final XXXXXXXXXXX
                               if (XXXXXXXXXXX) {
                                  if (XXXXXXXXXXX) {
                                     final XXXXXXXXXXX
                                     if (XXXXXXXXXXX) {
                                        int XXXXXXXXXXX
                                        if (XXXXXXXXXXX) {
                                           if (XXXXXXXXXXX) {
                                              XXXXXXXXXXX
                                           }
                                           if (XXXXXXXXXXX) {
                                              XXXXXXXXXXX
                                              XXXXXXXXXXX
                                              XXXXXXXXXXX
                                              XXXXXXXXXXX
                                           }
                                        }
                                     }
                                  }
                               }
                            }
                         }
                      }
                   }
                }
             }

          } else {

             XXXXXXXXXXX
             XXXXXXXXXXX
             XXXXXXXXXXX
             XXXXXXXXXXX
             XXXXXXXXXXX

             final XXXXXXXXXXX
             final XXXXXXXXXXX

             if (XXXXXXXXXXX) {
                for (XXXXXXXXXXX) {
                   final XXXXXXXXXXX
                   final XXXXXXXXXXX
                   if (XXXXXXXXXXX) {
                      if (XXXXXXXXXXX) {
                         if (XXXXXXXXXXX) {
                            if (XXXXXXXXXXX)
                                || XXXXXXXXXXX) {
                               final XXXXXXXXXXX
                               if (XXXXXXXXXXX) {
                                  if (XXXXXXXXXXX) {
                                     final XXXXXXXXXXX
                                     if (XXXXXXXXXXX) {
                                        if (XXXXXXXXXXX) {
                                           final XXXXXXXXXXX
                                           if (XXXXXXXXXXX) {
                                              if (XXXXXXXXXXX) {
                                                 XXXXXXXXXXX
                                                 XXXXXXXXXXX
                                                 XXXXXXXXXXX
                                                 XXXXXXXXXXX
                                              }
                                           }
                                           final XXXXXXXXXXX
                                           if (XXXXXXXXXXX) {
                                              if (XXXXXXXXXXX) {
                                                 XXXXXXXXXXX
                                                 XXXXXXXXXXX
                                                 XXXXXXXXXXX
                                                 XXXXXXXXXXX
                                              }
                                           }
                                        } else {
                                           final XXXXXXXXXXX
                                           if (XXXXXXXXXXX) {
                                              if (XXXXXXXXXXX) {
                                                 XXXXXXXXXXX
                                                 XXXXXXXXXXX
                                                 XXXXXXXXXXX
                                                 XXXXXXXXXXX
                                              }
                                           }
                                           final XXXXXXXXXXX
                                           if (XXXXXXXXXXX) {
                                              if (XXXXXXXXXXX) {
                                                 XXXXXXXXXXX
                                                 XXXXXXXXXXX
                                                 XXXXXXXXXXX
                                                 XXXXXXXXXXX
                                              }
                                           }
                                        }
                                     }
                                  }
                               }
                            }
                         }
                      }
                   }
                }
             }

          }

          if (XXXXXXXXXXX) {
             XXXXXXXXXXX
          }

          return XXXXXXXXXXX

       }

<comment><USER55> For a second I thought you meant that all variable names were a varying number of X's, and I almost crapped myself.

<comment><USER56> I thought the same - if it weren't for your comment, I would still be laughing. Brilliant!

</comment></comment></comment><comment><USER57> I had an assignment for a security class where I did just this. We each had to write code to print the contents of a file with 600 permissions upon entry of the correct password. The source code, password file, and any logs were all readable by everyone; the next project was to obtain the contents of other students' secret files (using John the Ripper, exploiting race conditions, etc.). So I replaced all my identifiers with the most distracting words I could think of - superman, flashbang, lassie, sparkles, etc. If I recall correctly, only one person in the class even tried looking for vulnerabilities in my code.

</comment><comment><USER58> The worst program I ever worked on was spaghetti code with HTML, Javascript, PHP and PERL all entangled in one file. This was in 2003.

In 2010, I encountered something very similar at a well known start up. Some things never change...

</comment><comment><USER59> The article and the comments here remind me of a great article on how to write unmaintainable code:

<http://freeworld.thc.org/root/phun/unmaintain.html>

</comment><comment><USER60> foodfuscator.com is available if anyone is interested. :)

</comment><comment><USER61> Oh you wanna try doing code golf, after a little while it warps your thinking and this sort of thing starts looking reasonable :)

using C=System.Console;class S{static int p,v,x,y,t=10;static void D(char c='@'){C.SetCursorPosition(p%t,p/t);C.Write(c);}static void Main(){var s="";for(;v<100;v++)D((s+="#### # ### ## # "[((y=v/t)<5?y:5-y+4)*5+((x=v%t)<5?x:5-x+4)])[p=v]);p=22;for(D();;D()){v=p+new[]{-1,-t,1,t}[(int)C.ReadKey(1>0).Key-37];D(' ');p=s[v]==' '?v:p;}}}

<comment><USER61> That's from here btw <https://github.com/nrkn/SimpleRLGolf>

</comment></comment><comment><USER62> Maybe with proper code review these kinds of ridiculous problems would get caught early and stomped on rather than turning into actual problems.

<comment><USER63> Honest question - how does code review work among "peers" with no seniority. Hypothetically speaking _snicker_ say one peer likes to churn out reams of nonsense code and the other peer is looking forward to a sense of maintainability.

Yes, I already know your first answer: "Switch jobs".

<comment><USER64> If he's simply green or ignorant then experience is the cure; a few good code reviews (yours and his) should transfer enough experience to make work less painful.

If he's simply lazy or doesn't care... Well, all you can do is go through the pockets and look for loose change. No amount of "process" can make a bad employee into a good one.

<comment><USER63> Thank you - I appreciate the answer. I'm not sure I will be able to apply it however as my scenario is not quite as clear cut (although it's a little more of #2 than #1).

</comment></comment></comment></comment><comment><USER65> I'll never forget when I saw a code in a production java app with lots of JSP, SQL, jdbc, html and javascript in the same file. One of the lines was something like:

<a href=# onclick="document.getElementById('field').innerHTML+=parseInt(this.parentNode.parentNode.parentNode.parentNode.parentNode.parenNode.childNodes[7].childNodes[13].split('|')[3])">...</a>

</comment><comment><USER66> Reminds me of my first programming job. One of my colleagues used variables named after baseball players.

</comment><comment><USER67> I'll summarize it by saying that one can have a lot of debugging 'fun' when you have to maintain code that starts including all kinds of other files in nested control structures which, in turn, reside in things like while-loops..

</comment><comment><USER68> _whatever goal this guy had with his trick it failed in a terrible way_

Not really. The company had to pull in an expensive consultant, causing it financial damage.

</comment><comment><USER69> actual variable name I have seen in production code I was trying to maintain:

TheThing</comment>


U.N. Must Lead Internet Regulation Effort - <AUTHOR> http://www.wired.com/opinion/2012/11/head-of-itu-un-should-internet-regulation-effort/

<comment><AUTHOR> I will note that I personally have grave concerns about many of the proposals being considered for the WCIT event. A good site to learn more is:

<http://www.internetsociety.org/wcit/></comment>


A Practical Approach To Managing Phishing (pdf) - <AUTHOR> http://www.scribd.com/vacuum?url=http://files.shareholder.com/downloads/PAY/299276218x0x186589/173FA367-4FD8-424A-A98D-14CD0ED234BF/A%20Practical%20Approach%20To%20Managing%20Phishing%20-%20April%202008.pdf <comment><USER2> Your link doesn't work, but here's the direct link to the PDF:

[http://files.shareholder.com/downloads/PAY/299276218x0x18658...](http://files.shareholder.com/downloads/PAY/299276218x0x186589/173FA367-4FD8-424A-A98D-14CD0ED234BF/A%20Practical%20Approach%20To%20Managing%20Phishing%20-%20April%202008.pdf)

<comment><AUTHOR> That's the link I submitted. For some reason, when I submit .pdfs to news.YC, I get redirected to Scribd.

<comment><USER2> YC auto-scribds PDFs, there was an Ask YC poll about it last week. I guess the result was to leave it the way it was. The problem with your link wasn't that it was to scribd, but that scribd couldn't import it as a PDF.

<comment><USER3> The majority of people wanted some form of Scribd on the site and the majority of people also wanted a change in how it is implemented.</comment></comment></comment></comment>


Connecting IQ tests with your computer usage patterns to make you smarter. - <AUTHOR>

It might be interesting to build an application that keeps track of your computer usage and sees which sorts of computer tasks you perform are associated with (at least temporary) enhanced cognitive function as determined by frequent IQ testing.
You might want to do more of those tasks to become (at least temporarily) smarter.
For example, such an application might discover that extensive participation in debates on Hacker News enhances your logical thinking for two weeks.
Moreover, such a result may not necessarily generalize to everyone else.  The idea is to discover what works for you. <comment><USER2> This is actually quite an interesting idea, but neither the precision nor the reliability of IQ tests are sufficient to gather the kind of data you are looking for.

<http://learninfreedom.org/iqbooks.html></comment>


Ask HN: How would you reinvent telematics systems for cars? - <AUTHOR>

Google Wave attempts to answer the question of what e-mail would look like if it were invented today.
Given that I work in R&D at a major car manufacturer, I've asked myself the same question of in-car telematics systems. We now have things in the car like speech recognition, image recognition, GPS, and Internet connectivity. Yet virtually the only thing I use in the car on a daily basis is AM/FM radio.
What are some of your ideas (while keeping safety in mind) for seamlessly connecting the driver and passengers with these cool new technologies that are available today? <comment><USER2> What is really needed is to have all vehicles, roads, lights, and stop signs linked together.

For example, a car should refuse to let the driver proceed thru a light/stop sign unless it's clear. Imagine all the money that would be saved from property/medical damages.

<comment><AUTHOR> This is definitely in the works. The biggest problem is convincing the countless local authorities to upgrade their existing traffic systems to support a technology that's not in the market yet.

<comment><USER3> You would have to be smarter about it than wait for local gov. Vision systems that can read street signs. etc. OCR on street signs should be pretty easy since they use High contrast simple fonts.

<comment><AUTHOR> OCR doesn't solve the problem of blind corners. In fact, even the current preemptive braking systems depend on radar, which perform poorly around corners.

<comment><USER3> Who said anything about blind corners? I would think it cool if like my GPS system my car knew the speed limit(and reading street signs in combination with storage would allow it to be correct, up to date and cover more roads than my rinky dink GPS system). sure it wouldn't know the speed limit the moment I turned a corner if it just relied on ocr but it might catch a speed limit sign I missed.

Right now all the telematics stuff is broken in to pieces you could do a lot of neat stuff if they were better integrated. You could use that preemptive braking stuff to decide I am in traffic on an interstate an find a new route.(Hint if the speed limit is sixty and I am with in a few feet of the guy in front of me and my current speed is below 5mph I am in traffic and the gps system should reroute me.)

</comment></comment></comment></comment></comment><comment><USER4> Don't know how useful or practical this will be, but I noticed anything sitting on my dash is clearly reflected on my windshield. Placing a HUD screen on top of the dash, close to the windshield defroster vents pointing up, flipped horizontally, and focused on infinity can get your current speed/fuel/etc without taking your eyes off the road.

<comment><AUTHOR> Lexus has this in production: [http://lexusenthusiast.com/2009/01/20/lexus-2010-rx-heads- up...](http://lexusenthusiast.com/2009/01/20/lexus-2010-rx-heads-up-display- hud/)

</comment></comment><comment><USER5> How about just opening up the documentation necessary to service or modify the mechanical and microprocessor-based systems in my car and then putting that into a kindle-like device? I'd much rather have something that would help me diagnose, maintain and modify my vehicle then something like a GPS. I'd also want to subscribe to service that would keep this documentation up to date.

</comment><comment><USER6> Traffic situation. I live out in the sticks so I don't know about recent construction in the city & 'burbs. The result is that often when I go into the city, I get stuck in traffic that I would have known to avoid if I were still living there.

GPS that would display streets with level of congestion would be excellent.</comment>


iOS VPNs? - <AUTHOR> Any viable VPNs for Android or iOS? Can't find anything but Ads. Thanks <comment><USER2> WireGuard to the lan

</comment><comment><USER3> PIA

</comment><comment><USER4> VPN Aegis maybe.

</comment><comment><USER5> ExpressVPN</comment>


Kip (YC W16) is using data to make therapy better for patients and therapists - <AUTHOR> https://techcrunch.com/2017/04/19/kip-therapy-app/ <comment><USER2> I'm a bit troubled by this phrase in the article: _As someone who is seeking to overcome a certain amount of anxiety and depression — and really, what human isn't dealing with some amount of anxiety or depression?_

This makes it sound more like life coaching or therapy for episodic mental health problems than for people who deal with chronic mental illness. It's hard to tell how much of this is the article author's voice and how much of it stems from the way the service is structured and marketed.

This isn't necessarily bad - people suffering minor or acute depression need help too and if this improves their outcomes at lower cost then that's a wonderful thing. But since it is profit-driven, there's a natural economic incentive to orient it around the needs of the easiest customers to deal with, rather than the ones with the most severe problems, for whom outcomes are much harder to optimize: [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4219058/#__sec2...](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4219058/#__sec2title)

<comment><USER3> How do you measure outcomes?

<comment><USER4> Our therapists use standard surveys like the DASS-21, PHQ-9, GAD-7, etc. to track treatment progress over time. Standard measures like these are really good at measuring changes in an individual's symptoms over time.

A therapist usually assigns these surveys every week or every other week. The surveys have questions such as, "Rate how much the statement applied to you over the past week: I found it hard to wind down." or "I felt I wasn't worth much as a person.' And then your answers contribute to a 'score' for whatever the survey is measuring (e.g. level of anxiety). You can google any of the form names to see the full question list–the ones we use are open source.

As an example, DASS-21 measures stress, anxiety, and depression levels in a individual at a scale of 0-34. Let's say that in the beginning of treatment, a client measures at 18-16-30 (18 depression, 16 anxiety, 30 stress). Overtime, you'd want to see a reduction in those scores.

Research shows that routinely tracking outcomes with measures like these leads to better outcomes but most therapists don't do it! This is one thing we're trying to change at Kip.

Here are some good articles on why using standard measures to track outcomes makes care more effective:

[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4910387/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4910387/)

[https://www.thekennedyforum.org/news/measurement-based- care-...](https://www.thekennedyforum.org/news/measurement-based-care-issue- brief)

[https://www.theatlantic.com/magazine/archive/2017/04/what- yo...](https://www.theatlantic.com/magazine/archive/2017/04/what-your- therapist-doesnt-know/517797/) ( linked to it in an earlier response)

</comment></comment></comment><comment><USER5> What Kip is doing is great. I'm a big fan of the company. And the founders are super thoughtful.

Improving access to therapy is a positive thing. That's relevant in particular ways to our community. Startups are hard. If you think you might benefit from talking to a therapist, you should try it.

<comment><USER4> Thanks! I'm one of the Kip founders and I go to therapy. It's been critical for me and I hear that from a lot of founders who work with us, too. Therapy helps me be mentally stronger so I can manage the stress and ups and downs that come with startups. I've also seen a huge jump in my ability to think strategically and clearly. My productivity is so much higher, too.

</comment></comment><comment><USER6> I've referred a few folks to Kip who were looking for a therapist after struggling to find one elsewhere (in one case, I downloaded the app on their phone and just sent the person to the first meeting). So far, they're reporting positive things about the app and the experience.

One of the interesting things that Kip solves is discovery: it seems like they have a roster of prequalified therapists who follow evidence-based strategies. That's pretty interesting – the basic process of finding a qualified therapist who's a good fit via the usual methods (Google, asking people) isn't easy.

<comment><USER4> Yep–we have a really high bar for therapists. We also look at outcomes data (de-identified, in aggregate) and can use that to evaluate therapist performance over time.

There was a really cool article in the Atlantic a couple weeks about why outcomes data is so crucial to making therapy more effective. It mentions an study where they used outcomes data to see which therapists treated clients more effectively: [https://www.theatlantic.com/magazine/archive/2017/04/what- yo...](https://www.theatlantic.com/magazine/archive/2017/04/what-your- therapist-doesnt-know/517797/)

</comment></comment><comment><USER7> Unless I missed it there's one thing Kip doesn't seem to currently address: privacy. I don't even see it mentioned.

<comment><USER4> Good question. Everything you share with your therapist in the app is private and visible to the two of you. We host your data on HIPAA-compliant servers (Aptible). We care a lot about this and should probably add a bit more on the website. Good call!

<comment><USER2> Add a lot more. there is no way I would consider using your service right now, even trusting that you are completely HIPAA compliant. Honestly, I'd need an assurance that you _cannot_ get at (or give away access to) my records without the cooperation of me or my therapist.

<comment><USER8> Yeah, this is important. Therapist-client privilege has a specific legal definition, and it'd be very bad to loophole that away due to some inadvertent implementation detail.

</comment></comment></comment></comment><comment><USER9> Is there a way that patients can 'on board' their current therapist to Kip?

<comment><USER4> Not right now. There used to be and it's something we're thinking of adding back in the future.

We are always looking for more great therapists to join Kip and they can do so on the website.

</comment></comment><comment><USER10> Very interesting idea. I am curious what the data will show about the differences in outcome vs traditional therapeutic interactions.

As as side note, you shouldn't have the "What Kip partners are saying" with only one person, and that person being someone that has Kip as her employer on linkedin. But not as a therapist but as a "Chief Clinical Officer" AKA chances are she does not see clients directly...

<comment><USER4> Whoops that is an old page, before she became our CCO. Good catch – thank you!

</comment></comment><comment><USER11> Very cool idea.

Is $165/session competitive with what one would pay outside of Kip ? Seems too high to me, though I don't stay in US.

<comment><USER4> Thanks! It's actually on the more affordable end for CBT therapy in the Bay Area. We see a range of $130-300+.

<comment><USER11> Wow, thats a lot of money - I am guessing for a lot of Americans too ?

What you guys think about getting therapists over skype from India ? It would be a lot cheaper for sure, if it works.

</comment></comment></comment><comment><USER12> Data suggests shrooms, DXM and/or massive ketamine can reset deep traumatic patterns. Also we recommend checking out internal family systems therapy.</comment>


Ask HN: Twice): How to do proper front-end testing? Is it useful enough to do? - <AUTHOR> Hello!
I'm currently in the situation where I'm noticing that the back-end is tested a fair amount of times, but the front-end does not have any automated tests.
So I was wondering: to what extent is UI testing even feasible / not a waste of time? What are pragmatic considerations about it? And if it is feasible, how does one go about it?
Things I thought about:
Is it simply using Selenium or Puppeteer? Is it using a visual diff and checking for that? Is it simply unit testing/integration testing?
To me, it all seems a bit of a waste unless a front-end process is super critical, like a checkout page. <comment><USER2> Back-end tests can be super robust immediately whereas front-end ones generally take some tweaking to get to that point. I still think they're worth it, especially for testing the core feature happy paths. Selenium and the like are fine. Being end-to-end these type of tests cast a wide net so it's worth logging the dev tools / browser network logs if you can at the time a test fails as well as taking a screenshot.

Use a cloud device service like BrowserStack and setup some CI. Who wants to test this stuff manually after the first time. Make sure the front end devs don't change your data-* attribute tags or whatever else you're using to find elements and are strict with that.

As lead dev and co-founders at Tesults.com I'd obviously recommend you use that for consolidating test reporting from your back-end and front-end tests :-)</comment>


Nuclear scientist predicts China could be using fusion power in 50 years - <AUTHOR> http://www.cnbc.com/2017/07/13/nuclear-scientist-predicts-china-could-be-using-fusion-power-in-50-years.html <comment><USER2> Well damn they must be almost done then. /s</comment>


Over time, leaders lose mental capacities - <AUTHOR> https://www.theatlantic.com/magazine/archive/2017/07/power-causes-brain-damage/528711/?single_page=true <comment><USER2> The research does not support this article (surprise).

\- The researchers primed subjects on "power" by having the subject write an essay about a high, neutral, or low power situation. It's not clear that the intervention maps to what the article calls power.

\- The researchers did not find statistically significant differences between the low power group and the neutral group. They also did not find significant differences between the neutral group and the high power group. If the neutral group varied this much, are we tracking meaningful differences?

\- Is reduced mirroring "damage"? Is reduced mirroring necessarily undesirable? We have no idea.

[https://www.oveo.org/fichiers/power-changes-how-the-brain- re...](https://www.oveo.org/fichiers/power-changes-how-the-brain-responds-to- others.pdf)

<comment><USER3> For good or ill, this article isn't based on single paper but a range of papers from a group of authors.

It's still legitimate to critique the approach but I don't think you can simply pick apart a single paper to do that.

</comment></comment><comment><USER4> The article seems biased: it pathologizes power. However our ability to adapt to social role is probably an important asset. Most likely the changes they measured are good for the group's survival. A leader should not be seeking approval as much as a commoner. Maybe the problem is that we've violated some unstated "design assumptions" of our tribes. As for this CEO who got hauled before Congress - a blank affect sounds like the right approach. It's just a ritual for politicians to show off for the cameras, but expressing contempt (as Shkreli did) is dangerous.

<comment><USER5> I'm not sure what relation pathologizing power has with bias? I'm also not sure that losing your empathizing ability when in power is any more adaptive than any physical sort of atrophy is adaptive when bedridden. When you're powerful you don't have to exercise the empathizing muscle and so (many) leaders don't. But they should in the same way that I should go and exercise my physical muscles even though I don't have to.

<comment><USER6> Muscular atrophy is definitely adaptive as an anti-starvation tool. Don't need that particular muscle? Lose the muscle and become more calorie-efficient. And you get some free caloric energy out of consuming the muscle at the same time.

<comment><USER3> Muscular atrophy certainly is the result of adaption over time. Pissing your pants when you get scared enough is also a product of adaptation. But neither is particularly convenient for a modern human today, which is clearly the actual point of the post above.

Reflexive lack of empathy for people in proportion to the degree you have power over them may be a logical product of the evolution of the human organism. But it might not be something a democratic society benefits from in its leaders, to bring thing back to the topic.

</comment></comment></comment></comment><comment><USER7> This is a standard part of feminist theory- basically the idea is that people with no power spend a lot of time wondering what powerful people think, so they tend to have a good understanding of what powerful people think. But people in a privileged position don't really have any need to think about what less powerful people think- so they don't do it. And that's where you get the trope of women being mysterious creatures, whereas women seem to understand men perfectly. The same logic applies to bosses and workers.

<comment><USER8> That's a really cool theory, but you're also stirring up the hornets' nest by bringing it up anywhere in tech environment, which got really feministic recently. BTW, one thing doesn't seem to stick: they don't label themselves as less powerful - in fact, their misandric agenda keeps trying to repeat the opposite.

I personally believe that the "mysterious creature" concept stems from women being more emotional and thus more difficult to analyse - we seem to have more scientific grounds for logic, whereas we still hadn't even agreed what an emotion is.

<comment><USER9> 'I personally believe that the "mysterious creature" concept stems from women being more emotional'

Why do you think women (as a gender) are more emotional?

<comment><USER10> I really get a cringe when people act as if their ideals are reality when they are just ideals in their heads. Good morning: a great majority of the world lives traditional lifestyles in patriarchal societies, and even in the "best" parts the gender disparity in responsibilities and rights continues, and the stereotypes are true to some extent for most of them too.

I dislike feminism per se as I see it to be just another sexism and not a step towards gender equality, as it tends to cause sexual etichette becoming more visual and everything having gender associations, and comes with detrimental practices like positive discrimination and extension of gender equality into non gender-related parts of life. And in tech these are so much amplified.

</comment></comment></comment></comment><comment><USER11> I can't access the research, but I was wondering if they tested on mostly men or if there was a decent size female group as well, and if they found any difference between men and women in this regard.

<comment><USER12> If men were more susceptible in a statistically significant way they would have called it out at least as a "further research needed" because it opens the door for future resource allocation. If women were more susceptible in a statistically significant way they wouldn't have framed the discussion so negatively in terms of CEOs and world leaders but instead framed it as a health issue because doing anything else in most academic settings is being needlessly reckless and unprofessional.

Since there's no mention whatsoever I'm betting there was no meaningful difference or the test group wasn't big enough to investigate the possibility of said difference.

</comment></comment><comment> r-u-k-m This is a remarkably low-quality article, and the citations are horrendously scattered throughout. This is much better, and clearer article (cited inside the original) from 2009:

[https://insight.kellogg.northwestern.edu/article/losing_touc...](https://insight.kellogg.northwestern.edu/article/losing_touch)

</comment><comment><USER13> I wonder if this is a common feature of leaders rather than a degenerative disease. Very competitive environments make way for sociopaths to get up to the top more frequently than normal people.

</comment><comment><USER14> When you're leading a team or doing public speaking and just starting out, one of the challenges is that you second guess yourself terribly after you have chatted to the group. I think empathy is part of the cause - you see yourself (and what a complete idiot your are) from the perspective of each individual in the group. It can be debilitating if you don't figure out how to stop yourself from doing that. Part of that is turning off a certain amount of empathy.

As others have pointed out, the article may be flawed. But I think the job of leader calls for reduced empathy or some way to control it and the second guessing yourself that comes with it - and that is probably what the author observed.

</comment><comment><USER15> I can vouch for it. When you're over people, they're never going to give you their version of the unvarnished truth. You always get the PR-filtered version. Stay in this scenario long enough, and it's very easy to start actually believing the toadies.

</comment><comment><USER16> Becoming worse at empathy is not the same as brain damage, people loose certain skills all the time if they are not exercised.

<comment><USER17> There is also evidence suggesting that empathy is a poor trait in leaders/judges, are we are most probably to empathizing with people we find relatable.

<comment><USER18> So you're saying CEOs have trouble relating to the average person? ;)

</comment></comment></comment><comment><USER19> This article ends in a gloomy note, I fear it might even start normalizing "asshole-ery".

I am reminded of a quote by Buffett or someone similar about more money turning assholes into even bigger assholes meaning there is nothing wrong in staying humble even after you become rich and powerful.

</comment><comment><USER20> Are the brain studies in this article subject to buggy and flawed fMRI research?

[http://www.sciencealert.com/a-bug-in-fmri-software-could- inv...](http://www.sciencealert.com/a-bug-in-fmri-software-could-invalidate- decades-of-brain-research-scientists-discover)

edit: further reading [https://blogs.scientificamerican.com/scicurious- brain/ignobe...](https://blogs.scientificamerican.com/scicurious- brain/ignobel-prize-in-neuroscience-the-dead-salmon-study/)

<comment> r-u-k-m No, they are not. None of these studies used FMRI; they were either statistical or behavioral, with no neurological investigation. Did you read the article?

From the article you linked:

"Some people like to use the salmon study as proof that fMRI is woo, but this isn't the case, it's actually a study to show the importance of correcting your stats."

</comment></comment><comment><USER21> It would seem some leaders are born this way.

I wonder how easily it can be passed to offspring (via nature or nurture).

</comment><comment><USER22> Andy Kaufman used to work as bus boy when he was famous and when people asked him, "Are you Any Kaufman?" he would deny it. I wonder if doing things like this is a good treatment.

</comment><comment><USER23> "Brain damage" is a rather extreme way of putting this. It's a slight decrease in empathy. Which sounds bad, but makes perfect sense. Empathetic people make terrible leaders. They get taken advantage of. They seek approval from others instead of making what they think is the best decision. They have trouble saying "no." They are indecisive when a decision is controversial and might upset some people.

I know this because I _think_ I am an overly empathetic person, and I know I make a terrible leader. Even watching shows like the West Wing stresses me out a bit and I don't envy people who have to make hard decisions.

<comment><USER24> The downsides you speak of are not caused by being empathetic.

They are caused by not having developed skills in setting boundaries.

Being worried about upsetting people isn't a feature of empathy. It's a feature of a lack of perspective.

</comment></comment><comment><USER25> Leaders don't but managers do lose their mental capacities.

</comment><comment><USER26> I wonder if one could simulate the effects of power by having subjects play Civilization?

</comment><comment><USER27> Article starts with jokes and it's hard for me to keep following as if it was a serious research.

</comment><comment><USER28> Shower thought: So does love.

</comment><comment><USER29> I completely misunderstood the headline going in, expecting something to do with the "current times voltage" sort of power and wondering what sort of gruesome experiment electrocuting brains was going on.

<comment><USER30> haha, that's what I thought too, some sort of EMF type research or something.

</comment></comment><comment><USER31> Mirroring = doing whatever others are doing / fitting in.

It makes sense that people in authoritative positions would not do this as often.

<comment><USER32> _Mirroring = doing whatever others are doing / fitting in._

It's a natural guess, but no. Check out:

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

<comment><USER31> The article isn't talking about mirror neurons though.

It's referencing the section of the brain that is used for social mirroring, I believe.

<comment><USER33> I think it is talking about mirror neurons. The article states

> Sukhvinder Obhi, a neuroscientist at McMaster University, in Ontario, [...] > found that power, in fact, impairs a specific neural process, "mirroring," > that may be a cornerstone of empathy.

This paper this refers to is [https://www.oveo.org/fichiers/power-changes-how- the-brain-re...](https://www.oveo.org/fichiers/power-changes-how-the-brain- responds-to-others.pdf) , which states

> with respect to action observation, neural circuits that are related to > action execution become active when the person observes someone else making > the same action; in other words, the observer's brain resonates with the > model's motor behavior. We refer to the network of brain regions involved in > this process as the motor resonance system. Motor resonance includes the > human parietofrontal mirror system, and many believe that resonance reflects > mirror system activity. [...] Researchers suggest that motor resonance > provides a scaffold for understanding the actions of our interaction > partners, and those actions are frequently less important to those with > high-power status. [...] In the present study, we examine whether power can > increase or decrease interpersonal sensitivity by examining the effects of > power priming on motor resonance.

The parietofrontal mirror system is the classic set of mirror neurons which were first identified in monkeys.</comment></comment></comment></comment>