Ask HN: Getting over interview anxiety? - <AUTHOR> Hi HN!
So recently I applied for a software engineering role at a startup. A week and a bit ago I had an interview where they and I chatted for a bit and got to know each other a little, which I thought went swimmingly. Yesterday however, was my technical screen. I was confident but nervous beforehand, but when it started that's when my mind froze, I couldn't think at all and I was just a bumbling mess. It was by no means a difficult problem and almost immediately afterwards and when the pressure was gone the solution became obvious to me, but by then I knew it was too late to change anything.
Stuff like this happens to me all the time. Not every time I'm being judged in person, but every time I'm being judged where I need to think and I _need_ to succeed and I'm not in a position of power. I just get so much anxiety and my mind completely shuts down. It has caused me to fail things I shouldn't have. Not only technical interviews, but e.g. my first driving test I just freaked out and so couldn't pass it. Examinations at school I am fine as I don't have another person in front of me judging me.
The software engineering job I am currently at is a consultancy agency, but probably the only reason why I was offered it a few years ago was because I didn't have to do a technical interview. If I had, I probably would have failed that too.
I couldn't sleep at all last night, the night after the interview. And the email I was dreading I received this morning. As soon as I saw the rejection I just burst out crying uncontrollably. It took me an hour to regain my composure to send a reply email thanking them for their time and wishing them success. I broke down not so much because I failed, but because of _why_ I failed. Even now, hours after the fact, I am still quite shaken.
I was wondering if you or others in this community have experienced something similar, and what steps you have taken to remedy it?
Thank you all so much in advance!
Jess :-) <comment><USER2> It is well documented in social psychology that individuals have a hard time with difficult tasks in front of others because their working memory is monitoring the social situation. It is called "social facilitation theory." Technical interviewing is not based on any kind of evidence based HR practices but is entirely instinctual. My pet theory is that the whiteboarding / coderpad epidemic is really a status hierarchy game where individuals make it clear 'if you want to work here, you are going to do what I say.'

</comment><comment><USER3> As others have said here, practice. In my career coaching service, I guide clients to practice 10-20x the length of the interview. Have a close friend test you on concepts or talk about the biggest potential areas for red flags on your resume or LinkedIn Profile as employers are looking to minimize risk. Interviewing is acting but playing yourself under stress conditions. So replicate the environment you will be in. Only 5-10 hours will make a world of difference.

To reduce stress, think about it as a conversation between colleagues (of different seniority). You are transferring information not in a court of law defending yourself.

Good luck.

<comment><USER4> I teach coding on the side, and one of my interview tips for students is to practice saying "I don't know". Make it almost muscle memory so it doesnt throw you, because rare is the interview that wont try to find your boundary, and rare is the person that feels comfortable saying "I don't know" in an interview.

Sure, try to work in something you do know, or try to show interest in learning, but mostly just be comfortable. Confidence will be taken as skill, anxiety will drag down your display of strengths, and many companies are looking for someone that will be self driven enough to not need hand holding but will also be upfront about problems rather than committing then ultimately failing with little time left to correct.

I normally smile, nod, and ignore when someone tells me to practice a social skill out loud (that may be regrettably obvious in person), and I have long experience as a class clown so interviews arent very bothersome, but in this I say practice really does make a difference since the goal is not to establish what you can do but instead to make it boring and routine.

<comment><USER5> I recently had a few rounds of interviews, I think I said 'I don't know' a dozen of times. I did get an offer.

</comment></comment></comment><comment><USER6> In an interview, especially as a software developer, you _are_ in a position of power. It may help to remember that.

Companies are desperate to hire enough good developers. You're evaluating the company as much as they're evaluating you. If you're currently employed elsewhere, you can walk away and they'll still be scrambling to find someone to hire while you're making your nice comfortable salary.

As a hiring manager, when interviewing a candidate I like, I'm as anxious about selling them on the company and position as they are about proving themselves to me. And a hiring manager who isn't concerned about impressing you too is one you don't want to work for anyway because they won't value you.

If you can keep that in mind and flip the power dynamic in your head, suddenly you're not on the spot trying to prove yourself to a stranger in a position of authority. Now you're the one in charge showing your interviewer just how much they'll be missing out on if they don't convince you that they're the one company you should choose out of the thousands that you could work for next.

</comment><comment><USER7> Let me just re-iterate practise, practise, practise. After you have done this sufficiently often, following things happen

1-You'll notice how similar interviews are and develop a routine

2-You'll become better aware of what you want and what your strengths are which will help you to sell yourself better

3-I believe each human being has a threshold of "capacity to being bothered". At some point, you will care less about how interviews go. Just imagine you had 5 interviews per week for four weeks. In no way will you be as nervous in your fourth week as you were in your first. You get used to it.

Try to not take any of this personally. It's a game anyone can learn to play.

</comment><comment><USER8> This is called choking. It is explained in the course "learning how to learn" [1] which I'm shilling for (unpaid, sadly) because the knowledge is so valuable.

The key here is that you've never performed under pressure, so you have to train yourself to perform under pressure. This way you'll get used to it and you'll be able to function normally or even excel under pressure.

[1] [https://www.coursera.org/learn/learning-how-to- learn](https://www.coursera.org/learn/learning-how-to-learn)

</comment><comment><USER9> People will tell you to practice, which is fine, but the bigger issue is that companies are being stupid by interviewing anyone this way, period.

By all means, practice is good for you. But also try looking for companies that don't involve unrealistic time pressure combined with trivia-oriented tech questions. Your experience at your current employer proves such jobs exist, and indeed they exist at many types of companies with good job offers.

Just decline the ones that do use algorithm puzzles / whiteboard questions / etc., and include your constraints about how you will be evaluated just as you would include constraints about salary, insurance, job duties, etc.

You're not interviewing to get out of the rain: it's about getting what you want in exchange for providing value to the employer.

If part of what you want is to be treated with basic dignity and respect while being evaluated during an interview — something incompatible with trivia / hazing style interviews that are ubiquitous in the tech industry — then just own that choice, be proud of it and straightforward. Just politely tell interviewers it does not work for you, accept that you may need to opt out of a lot of interview pipelines, and you'll find options better suited to you.

<comment><AUTHOR> > the bigger issue is that companies are being stupid by interviewing anyone > this way, period.

I don't know about being stupid. I think it's an okay way to evaluate candidates, and as a person who does regularly interview people for engineering positions I see its value (I just get people to code a simple singly linked list with an insert and a find method). It's just unfortunate for a small minority like me that don't do well in situations such as these, particularly with the more difficult and involved problems.

> Just decline the ones that do use algorithm puzzles / whiteboard questions / > etc., and include your constraints about how you will be evaluated just as > you would include constraints about salary, insurance, job duties, etc.

> ...

> If part of what you want is to be treated with basic dignity and respect > while being evaluated during an interview — something incompatible with > trivia / hazing style interviews that are ubiquitous in the tech industry — > then just own that choice, be proud of it and straightforward. Just politely > tell interviewers it does not work for you, accept that you may need to opt > out of a lot of interview pipelines, and you'll find options better suited > to you.

The thing is, I can't really do that. I want to move to America, in particular San Francisco, where I have absolutely no network I can reach out to like I do where I currently am. I can't imagine a situation where a company would forego a technical interview in a case like that, despite my work history or GitHub account

Thank you for taking the time to reply mlthoughts2018, I really appreciate it :-)

<comment><USER9> It's strange that you admit the interview technique doesn't work well for people like you, yet you choose yourself to administer a similar technique and see "value" in it.

Why do you think you're in the minority? Belief that whiteboard coding puzzle evaluations are broken is very widespread. Even many people who do not experience anxiety from the time pressure or "gotcha" nature of these interviews also see them as a scourge of the industry.

San Francisco is a large place with many companies. Better to find the ones that really fit your needs than to compromise yourself by trying to fit into an interview procedure that isn't right for you.

Plus, since you mention you already have a job, it means you can take your time to filter out companies. No need to rush or apply pressure to yourself to hurry up and meet some interview standards... you can take a longer, careful search before relocating.

<comment><AUTHOR> That's fair. I recognise that it's quite hypocritical of me, but I don't really have a choice in the matter. :-( I've argued enough against the practice to reduce the problem from something that would take on average an hour to something that only takes 5-10 minutes at most, something that is taught and used extensively at universities around here. Thinking about it, no one has failed it at all.

For me, I do kind of need to rush. I'm transgender and not really in a safe environment to come out, and the time is fast approaching where it's near impossible to hide. Whereas overseas, where I do not know anybody, I can be myself. That is also why I also want to move to San Francisco in particular, it is very open and friendly.

<comment><USER10> I wouldn't call San Francisco open and friendly. Hacker News frequently has articles showing exactly the opposite.

Here, just 4 days ago, is an article about the city abusively forcing a person to build an undesirable house because a hostile neighbor wanted to cause trouble: [https://news.ycombinator.com/item?id=18695241](https://news.ycombinator.com/item?id=18695241)

We've seen articles about violence too, for example in BART stations and against tech company buses.

</comment></comment></comment></comment></comment><comment><USER11> Interviews are stressful. I recall an interview years ago where I totally blanked on how to write an SQL JOIN. 3 seconds after the interview, it came right back. I can recall the two interviewers exchanging glances that I interpreted as "wow, this guy is a waste of our time." Totally sucked. Very defeating. A different place took me on a few interviews later, and it worked out really well for me (glad I didn't get that other gig!).

A buddy at work wrote this: "I'm Not Great at Technical Interviews. How I Got Hired": [https://sendgrid.com/blog/im-great-technical-interviews- got-...](https://sendgrid.com/blog/im-great-technical-interviews-got-hired/) (dang, those url slugs are terrible).

His 'briefcase problem' made hiring him a no-brainer; I recall our excitement to just hire him. He may be the best hire I've ever been a part of. Maybe a similar approach could help you.

</comment><comment><USER12> To echo everyone else: practice. Last time I looked for work I immediately went after the job I really wanted, and since I hadn't interviewed anywhere in years it didn't go very well. I then did a bunch of interviews for places I didn't necessarily care about and after a handful I felt much more comfortable with the whole process.

Interviews seem like they should be something you should naturally be good at, but it's a very specific type of situation and it helps a lot to have recent experience in that type of environment. Even just hearing the types of questions other companies are asking for a similar position will be helpful.

</comment><comment><USER13> I wonder if explaining in advance would help. Push as much of the screening into take home tests. Use a github profile to show your work. And the for any real-time screening have the option to split it into two where you can revisit stuff you think you didn't do so well in because of nerves.

Not sure if this would work but maybe it is worth a try. Some employers might be understanding and help you out. And they'll be better people to work for anyway.

End of the day if the job doesn't require pressured presentation of your knowledge then why screen for that.

</comment><comment><USER14> Two things that have helped me a lot are one speaking at toastmasters. It's a public speking community. Just show up as guest to one near you and pick a topic for an impromptu talk and speak in front of few dozen people. It will make interview seem like a piece of cake: [https://www.toastmasters.org/](https://www.toastmasters.org/)

Second, speak more with people in events and stuff. It helps a lot. Talk to strangers, cab drivers, kids, elder, everyone. Good luck!

</comment><comment><USER15> One way to change your mindset is to remember that the interviewers WANT to like you.

They're not bringing you in hoping you're an idiot and that they're wasting your time. Everything they know about you is positive and they WANT to hire you.

It's like going on a date. There's something about that person you like and you want to find more things to like!

</comment><comment><USER16> Beyond practice, low doses of beta-blocker drugs (e.g. propranolol ~10mg), have been known to be helpful with performance anxiety and are commonly used by actors and musicians. I know at least one person who says it is very helpful for them when interviewing. [https://www.consumerreports.org/cro/2012/04/can-you-treat- st...](https://www.consumerreports.org/cro/2012/04/can-you-treat-stage- fright/index.htm)

<comment><USER17> With a doctor's blessing. Self-medicating is often dangerous. Propranolol is Rx only in the US.

</comment></comment><comment><USER18> Practice. Basically exposure therapy for interviews. Also look into doing some CBT to change the way you react and think about people judging you.

<comment><AUTHOR> Hi jryan, thanks for your reply! :-)

> Practice. Basically exposure therapy for interviews.

That's the thing though. I have and I do already do that. I like doing coding challenges, some time constrained others not, in my spare time. The difference is that I do not need to succeed in those. There is no person watching over me and everything I do, there is no environmental pressure other than the time. And if I fail, I learn from it and have the ability to try again.

I do currently see a therapist to deal with things, not sure if it's CBT or not. But what I'm told to do is to try and bring myself back into the present, which I can't really do during the middle of an interview.

<comment><USER18> Doing coding challenges doesn't count. It doesn't include the part your afraid of. They have to be real interviews. Maybe line up a bunch of interviews for companies you don't actually want to work for, and try that in your spare time?

On the CBT side you need to be aware of the various cognitive distortions that feed anxiety [0], and be critical of negative thought patterns. Critical in the sense of what they do to you, and which ones are cognitive distortions. Maybe sit down with a journal after the next interview and try to record lots of details about how you were feeling, and how your feelings made you think certain thoughts, and how it makes your body feel and how it's all related.

Let me do an example. You start the interview and you're asked a question, and you're brain freezes up. You start thinking, "oh no, it's happening again! It's already over, I know how this plays out. What are they thinking about me right now, just standing here doing nothing. I'm not going to get this job!" You can attack a lot of those thoughts. These are all distorted thoughts.

First say it's just an interview. You can try again another time. It's not the end of the world.

This happens to other people. I'm not the only one who has this problem in interviews!

They are probably thinking "oh she's taking their time trying to think the problem though. I know how they feel, I've been in their shoes before too. This is a lot of pressure." Most people are understanding and empathic, pretend that you are the interview, what would you be thinking?

You can even be honest with them! Tell them that you get a little psyched out doing technically problems and make a little joke about it, that it might take you a second to get ramped up. I've done this on plenty of interviews. It really helps defuse the anxiety for everyone! Let me tell you right now that as an interviewer whose interviewed dozens of people I spend a ton of time worried about what I'm going to say or ask next. They won't even be super focused on you the whole time.

Some of the physical sensations could be heart racing, sweating, thirst, etc etc. Acknowledge them and do some breathing to slow down a bit, and come back to the present.

Think of your interview more as a stepping stone. A learning experience. It's not black or white. I get the job or I don't. It's a process. Care a little bit less of how they see you.

In regards to a therapist, it took me 6-7 tries to get one that knew CBT and could help me. I'm not saying stop seeing your therapist or anything, just telling you my experience. And finding a therapist that can actually help and is trained in CBT and exposure therapy was very difficult for me.

The good news is you can do it yourself if you learn how to, but it's very hard to observe yourself and put in the work to basically be your own therapist.

Also disclaimer that I am not a doctor! :P

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

<comment><USER18> Reading your comment again, I see some distortions:

> "I do not need to succeed in those."

You don't NEED to succeed. Most people go on many interview to find a job!

> "There is no person watching over me and everything I do"

Like I've said the interview isn't going to be watching everything you do. I can tell you from experience that a lot of your interviewers are bored and thinking of other things. You're not under a microscope.

> "And if I fail, I learn from it and have the ability to try again."

Why doesn't this apply to interviews? :)

</comment></comment></comment></comment><comment><USER19> This is just my two cents but I think lots of practice with various companies will help you get more confident. Apply to a bunch of jobs you probably wouldn't even want to do. You'll be less stressed about them because you don't care as much about getting them, then slowly ramp up to other companies.

</comment><comment><USER20> The following beliefs helped me with my nerves.

Hold the belief that everything will work out and the future is bright.

Focus on doing your best regardless of the outcome. Even if you fail, you can handle it and other good opportunities will come up.

</comment><comment><USER21> In my case, I found that giving talks at local meetup groups helped very much. It gets you used to talking about code in front of people.

</comment><comment><USER22> Like everyone else said, practice, practice, practice. But I also have a little anecdote that may or may not help you. I'll share it, if you don't mind.

Many many moons ago, when I was in middle and high schools, I was terrified of getting up in front of the class to speak. I mean, absolutely petrified. In fact, I was so terrified of the prospect that I would take zeroes on entire assignments because I would have had to present them to the class. It's the main reason why I didn't get a 4.0 in high school and instead got a 3.0: entirely, 100% stage fright.

Then I went to college. Part of the core classes was a Speech class. It was __required __. We __had __to do it. I decided that I 'd take it as a summer class, so I could get it over with in 3 weeks instead of stretching it out across an entire semester.

I got to the class, sat way in the back, and shook and sweated and just generally felt awful. The teacher gave us the first assignment. "Bring a book and read a passage out loud to the class."

OK. I can do that! I brought The Hobbit, one of my favorite books of all time, and I read the first chapter out loud. I could focus on the pages and not the people, and I just pretended I was reading out loud in my room. It went... _okay_. I was still nervous as shit, but I wound up doing it and I got an A, mostly because, I mean, how hard is it to read out loud?

The second assignment was to describe a quality in ourselves to the class. Serendipity struck, and I decided to tell the class about how terrified I was of speaking in front of people.

"Um, um... -cough- uh, hi. Um, my name is, uh, Jemaclus, and I uh... I mean, my quality is that I'm, uh, totally terrified of, um, speaking in front of people, because, um, everyone is staring at me likeyouareallstaringatmenow um, and uh.. it makes me, uh... nervous, and I say uh and um a lot, and I shake, and i, um..."

I basically spent my 5 minutes in front of the class describing anything and everything I was doing and feeling and I even acknowledged that we weren't supposed to be doing any of these things because the teacher had explicitly said "don't say um" before! But I was legitimately having some sort of anxiety attack or something. I just kept talking, and eventually, the timer went off and I shakily made my way back to my desk and hyperventilated until I calmed down.

At the end of the class, the teacher handed out her scores, and to my very, very great surprise, I got an A+. On the side, she had written a note: "Great acting!"

Whiskey. Tango. Foxtrot.

I hadn't been acting! I was legitimately about to shit myself!

And that's when I had an epiphany, which is sort of the lesson of this anecdote. The epiphany was this: people project their desires onto you. My teacher wanted to believe that nobody could possibly be that bad, so she chose to believe that I was acting. She didn't want me to fail. Nobody in the class wants anyone to get up and make a fool of themselves. They want to see someone do something successfully. In most scenarios, they don't expect perfect oration or flawless performance, just enough to enjoy it! (Alternately, she just felt bad for me... but I like my version better.)

A second mini-epiphany came after class. I was talking about it with my classmates, and they all admitted they had been so terrified of their own upcoming performances that they barely noticed mine. Instead of listening to me, they were mentally rehearsing their own speeches. In other words: not only did nobody want me to fail, most people weren't even paying attention!

For the next speech, we had to teach the class how to do something. I decided to demonstrate how to juggle. It was physical, so it was something that would keep my mind off the people watching me. It worked... And not only did it work, but it let me sort of realize that literally nobody was paying much attention except for the teacher, and _she_ wanted me to do a good job. And I got another A.

I got straight As in speech class. It was the most terrifying three weeks of my life, but I made it. And I realized... it wasn't that bad. Not only was it not that bad, but I went on to change my major from computer science to theater. In the last 15 years, I've performed in over 40 stage shows in front of thousands of people. I eventually became a high school English teacher, and I stood in front of 150 teenagers a day for nearly two years before I switched back to computer stuff. (I'm now a Director of Engineering at a startup.)

With theatre, with teaching, I put my lessons to use: nobody wanted me to screw up. People who pay $30 to see a play don't want to see a terrible actor -- they're more likely to interpret any screwups I may have made as intentional and think "Huh, that's weird" and not "HAHAHAH THAT DUDE TOTALLY FUCKED UP". My students were a bit harsher, but at the end of the day, they saw me as an authority figure, and thus on some level, they wanted me to be competent. Any mistakes I made were chalked up to... I don't really know. But I've had former students come up to me years later and say they loved my classes.

This is a bit rambling, but here's the point of my story:

We (the interviewers) _want_ you to succeed. We _want_ you to do a good job. If you make a mistake, it's okay. Generally speaking, we're not trying to find any tiny flaw -- quite the opposite, we're trying to find promise that you can and will become _better_.

We're rooting for you. We really are. We want you to be awesome. If you're awesome, then we can hire you, and we don't have to sift through any more resumes. If you're awesome, then we don't have to talk to anyone else. If you're awesome, then our work load gets lighter. If you're awesome, then a lot less stress sits on our shoulders. If you're awesome, then we look good to our peers and our bosses and our employees. If you're awesome, then everyone wins.

I'm not looking for perfection, either. But I need you to demonstrate to me that you have promise. There are tons of things I can totally teach you. Don't know what a REST API is? It would take me 15 minutes to explain it to you. Don't know what an MVC pattern is? You can learn it.

It's nice if you already know those things, of course. But what I'm generally looking for are smart people with lots of promise, even if they have some anxiety.

Most of all, I really, really, really, really, really want you to be awesome.

Try framing it in your mind like that. It might not work for you, but it worked for me.

It's not really enough to just "not suck", but that's why you should keep practicing. Practice makes perfect. It's harder to blank out when you've practiced so many times that you couldn't forget it if you tried.

Good luck. I'm rooting for you. And if you're in the SF Bay Area, shoot me a DM. I'd be more than happy to practice with you.

<comment><USER13> Top story!

</comment></comment><comment><USER23> These interviews are designed to filter less visible people.

None of my friend went through these interviews.

Companies have two kind of employees:

1\. Directioner 2\. Executioner

If they are hiring for second role, they are put through mind numbing problem solving.

But if it's for the first kind of role, then you don't go through all that. The expectation is that you'll figure out the direction and solution as you go.

One thing is not everyone has to go through these interviews.

Do you've experience? Do you posses a lot of knowledge in a particular niche?

I hire people without these quizes based on their knowledge of the area we gonna work.

What't your tech stack and experience? Where are you based?</comment>


OOP vs. Functional Programming (2014) - <AUTHOR> https://blog.cleancoder.com/uncle-bob/2014/11/24/FPvsOO.html <comment><USER2> > Objects are not data structures. Objects may use data structures; but the > manner in which those data structures are used or contained is hidden. This > is why data fields are private. From the outside looking in you cannot see > any state. All you can see are functions. Therefore Objects are about > functions not about state.

The statements are correct but the conclusion is backwards. The defining characteristic of OOP is that hidden state. Passing functions around is done all the time in functional languages.

> The bottom, bottom line here is simply this. OO programming is good, when > you know what it is.

Ehhhh nope. The idea that you need "function pointers" to do polymorphism is confusing one particular implementation technique in one particular (frankly, bad) language for some universal rule. You can do polymorphism perfectly well without needing hidden mutable state - and when you do, life is generally better.

<comment><USER3> > The defining characteristic of OOP is that hidden state.

Hidden state is the characteristic of abstraction, period. OOP has no special claim to it.

<comment><USER2> Nonsense. Most abstraction isn't about state at all (you won't find state anywhere in the definition of a group, say). You can of course abstract over the difference between having state and not having it (as OO does), but that's a virtually useless abstraction because it doesn't preserve any nontrivial rules/symmetries.

<comment><USER4> Perhaps a better way of saying is is that hidden _data_ is a characteristic of abstraction. Which is certainly fair, and fits the analogy to algebra quite well.

But in any case, parent's comment that "OOP has no special claim" to hidden state/data (or abstraction) is sound; after all, ADTs already do that.

<comment><USER2> > Perhaps a better way of saying is is that hidden data is a characteristic of > abstraction. Which is certainly fair, and fits the analogy to algebra quite > well.

I'd disagree with even that much; I'd say abstraction is much more about parameterisation - factoring out the common structure from different constructions - than outright hiding anything.

> But in any case, parent's comment that "OOP has no special claim" to hidden > state/data (or abstraction) is sound; after all, ADTs already do that.

ADTs don't hide _mutable_ state. That much is something OO has a special claim to.

<comment><USER4> "hiding data" and "factoring out the common structure" are almost always intrinsically connected in software systems, because if you can poke at the data then you can violate contracts that give rise to the common structure.

This is _particularly_ true of software, but I'd argue it's also true of basically every branch of mathematics outside of a few particular sub-fields of algebra (which are either extremely simple or extremely abstract, and often both).

 _> ADTs don't hide mutable state. That much is something OO has a special claim to._

How so? Abstract datatypes certainly hide mutable state. Just because a language doesn't have the "private" keyword doesn't mean that internal data can't be excluded from the interface... this was done _all the time_ in e.g. C without the message passing semantics that characterize OO languages.

<comment><USER2> > if you can poke at the data then you can violate contracts that give rise to > the common structure.

Maybe if you can mutate it, but having it be visible isn't an issue.

> Abstract datatypes certainly hide mutable state.

ADTs are normally understood to be values i.e. immutable. Hidden structure is not the same thing as hidden state.

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> The article lost credibility with me for the "OO is not about state" section because it misses the point.

If all you have are singleton objects with static functions and no private data attributes, then I agree, but it's also meaningless because such objects are very sincerely unrelated to anything from OOP. They are just stateless buckets of functions, which is more like a module than an object.

This is actually quite a good way to program in many cases. You can do it in Scala by only defining companion objects and never the actual class that it would correspond to (except for occasional cases where you need case classes or structural typing). You can do this in Python by just writing modules with no classes, and either use primitive data structures (list, set, dict, tuple, etc) for all your data, or else use absolutely minimal namedtuples.

I'd say this way of programming is almost totally FP and has hardly anything but superficial connections to OOP, which I think undermines the author's point.

You can always claim it's a semantic difference and different people mean different things with certain words. IMO that'd be disingenuous here. Any type of OOP that just uses objects as buckets of functions with no private data attributes is really just FP.

As soon as you add private data attributes whose values can break referential integrity of the object's function calls, then it's game over for FP and you're in total OOP land.

<comment><USER6> > As soon as you add private data attributes whose values can break > referential integrity of the object's function calls function calls, then > it's game over for FP

Technically you can do something like this in fp land if you're using the actor model to encapsulate hidden state and erroneous code in a passed lambda does something strange to the hidden state. It's pretty hard to do since most fps with actor model put all of your interfaces to the state right in front of you.

<comment><USER7> Actors are very closely related to OOP, especially the Smalltalk/Self message- passing perspective. The main difference is that message sends to actors are asynchronous whilst objects usually aren't.

</comment></comment></comment><comment><USER4> I think the author does characterize a primary distinguishing feature of OOP.

That said, the post is a windy road with some dead-ends. Lots of statements that are highly contestable (see other top-level comments for examples).

So here is, IMO, the important take-away from the post on what's novel/unique/significant about the combination of abstraction/program design/programming techniques we call oop:

 _> In most software systems when one function calls another, the runtime dependency and the source code dependency point in the same direction. The calling module depends on the called module. However, when polymorphism is injected between the two there is an inversion of the source code dependency. The calling module still depends on the called module at run time. However, the source code of the calling module does not depend upon the source code of the called module. Rather both modules depend upon a polymorphic interface. This inversion allows the called module to act like a plugin._

This is a particular programming style. The author calls it "polymorphism", but that's far too large a label. The paragraph above is specific way of using polymorphism. This sort of programming style _can_ be done in functional languages, but I think it's fair to say that 1) OOP did it first, and 2) OOP provides the most natural setting for thinking about what's going on in these sort of "plugin architectures".

<comment><USER8> Can you help me understand the pullqoute? I didn't understand what he's talking about at all. Is it about not having to recompile?

<comment><USER4> See [https://en.wikipedia.org/wiki/Inversion_of_control](https://en.wikipedia.org/wiki/Inversion_of_control) and [https://en.wikipedia.org/wiki/Dependency_inversion_principle](https://en.wikipedia.org/wiki/Dependency_inversion_principle)

And don't overthink it. You've probably seen this a million times in your work life. The description is indeed not great.

It's not always about not having to recompile, but can be (see eg dependency injection)

</comment></comment></comment><comment> 08-15 There's a 2018 update/rehash here:

[https://blog.cleancoder.com/uncle- bob/2018/04/13/FPvsOO.html](https://blog.cleancoder.com/uncle- bob/2018/04/13/FPvsOO.html)

Not that it adds any value, it's exactly as confused and pointless. Uncle Bob is getting old. He tries to find defining characteristics of OO, and ends up talking gibberish:

> The behavior [of o.f()] is dependent upon the type of o. i.e. f is > polymorphic.

Nope, behavior of a "polymorphic" invocation depends on the _value_ of the 'o' argument. (Types don't exist at runtime.) This happens all the time in FP, where passing around functions is normal.

> The mechanism of polymorphism must not create a source code dependency from > the caller to the callee.

That's called a higher order function. You pass a function from module A to a HOF from module B. B ends up calling into A without a source code dependency. Big deal.

> What is FP? > referential transparency

Lispers would object. My take on it is that the essence of FP is higher order functions. If you don't have them, you need Design Patterns instead. If you do have HOFs, you don't see why anyone would bother with OO.

Bottom line: OO doesn't exist. It's just pointless jargon that only exists to make a difference without a distinction (e.g. between Smalltalk and Scheme), and possibly to sell books and Clean Code seminars.

</comment><comment><USER9> Progress has come from making immutability more usable. Many of the troubles in programs come from something mutating state that something else is depending upon. This is not really a functional thing.

The important concept is "single assignment". This is where values are initialized at creation and never changed. Go, which is an imperative language, favors single assignment. Functional programming is a form of single assignment.

Single assignment in an imperative syntax has some advantages over a pure functional form. Values have names, which helps when reading code. You can use the same value twice. It's functional programming without the cult.

The downside of single assignment is that you're frantically creating and discarding values. Underneath, the machine is imperative. So you need compiler support for efficient creation and discarding of values. LISP spends a lot of time creating and discarding values, then garbage collecting them. So do Javascript, Python, etc. Vast amounts of effort have gone into making that efficient, and today it's not a big problem. Rust goes even further, handling most of that overhead at compile time.

<comment><USER10> > Go, which is an imperative language, favors single assignment.

Go doesn't even have final variables. Go doesn't favor single assignment in anyway. Rust does as it is harder to create a mutable variable than an immutable one.

<comment><USER9> Go has "=" and ":=", to distinguish alteration of variables.

</comment></comment></comment><comment><USER11> > OO is not about state

OO is very much about state, and that's the fundamental difference between non-FP languages and FP.

        a1 = object.f(b);
        a2 = object.f(b);

If a1 != a2 or f performs any side effects at all you've got state. Doesn't matter if it's "private" or "hidden". Your functions are not referentially transparent.

It also doesn't matter if your language implements OO in terms of message passing (Smalltalk, Erlang) or method calling (Java, C#, ...).

<comment><USER12> This is orthogonal. Many languages traditionally considered functional do not enforce referential transparency, and nothing prevents you from building referentially transparent functions in an OO language.

<comment><USER13> Not speaking specifically about this situation, but just because a language considered functional implements a certain behavior doesn't mean the behavior is functional. The causation usually works the other way. It's because a majority of the behaviors a language implements are functional that the language is considered functional.

As an example, you can write procedural code in Java, which is the poster child of OOP programming. That does not make the procedural code OOP.

</comment></comment></comment><comment><USER14> > Indeed, the word "variable" is a misnomer in a functional language because > you cannot vary them.

Variables in functional languages are variables in the sense of mathematical variables, i.e. they can take on multiple possible values. They don't need to change from one minute to the next to be true variables.

</comment><comment><USER15> I do understand his initial frustration. Saying that FP languages solve the Strategy Pattern (say) with functions is correct, but so reductionist as to be useless. It's like saying you solved a problem using objects, or saying you solved a problem using monads. Sure, you absolutely can, but _which_ monad you use is actually _really important_. There are a lot of things that fall under "The Strategy Pattern", and 'how you use functions to implement those' is just as big (and interesting!) a question as 'how you use objects to implement them'.

<comment> 08-15 The Strategy Pattern comprises a single interface with a single method. In other words, the Strategy _is_ a function, so it's entirely appropriate to say the FP equivalent of the Strategy Pattern is "function". Objects and interfaces just obscure that simple essence.

<comment><USER15> See, that's what I mean about being reductionist. Is your answer wrong? Eh, not entirely, it's just useless. Plenty of uses for the Strategy Pattern require more than just a function, and even those that a function is sufficient, what the function returns, and when, and why, matters. Reducing it down to a single function offers no understanding, it just sidesteps the point.

</comment></comment></comment><comment><USER16> I normally like what "Uncle Bob" has to say but I do not agree with a lot of what he says in the article.

> Objects are bags of functions, not bags of data.

That might be an ideal case, but it is not reality. Pretty much every OO language has both of them combined.

> Is there really so much difference between f(o), o.f(), and (f o)? Are we > really saying that the difference is just about the syntax of a function > call?

Yes, there is.

Try doing a compose function with the OOP / member expression syntax.

Here it is in JS using FP syntax:

const compose = (...fns) => fns.reduce((f, g) => (...args) => f(g(...args)))

It would be even shorter in Haskell.

Try doing long division with Roman numerals.

Syntax is the structure behind mental representations and mental representations have tremendous power in expanding the physical limits of thought in the brain.

> The overriding difference between a functional language and a non-functional > language is that functional languages don't have assignment statements.

The overriding difference between FP and OOP languages is that the unit of composition and abstraction is the function or object, respectively.

</comment><comment><USER17> > _Objects are bags of functions, not bags of data._

That is just silly. I'd be willing to swallow the following revised version, in the context of immutable programming: " _classes_ are bags of functions, not bags of data."

An object (class instance) is then just _a_ datum which serves as a domain value to these functions. Given that domain value, each function in that bag- of-functions class produces a range value: and that bag of range values comprises the properties of the object.

Under traditional mutable OOP, those functions are impure in ways that logically require the object-datum to carry a representation of state somehow.

And anyway, since functions are data (being first class values), any bag of functions is necessarily a kind of bag of data.

</comment><comment><USER18> I think the point of the two styles not being mutually exclusive is helpful. So often, is the literature treating the two concept like either-or, very black and white....

</comment><comment> Avi-D-coder The statement author makes that polymorphism is belongs to OPP is incorrect.

Functional languages by design require better type systems that can accommodate more forms parametric polymorphism.

OPP traditionally encouraged the use of ad-hoc polymorphism (via classes) over parametric polymorphism (via generics). OPP languages generally also make it easy to perform Ad-hoc polymorphism at run-time with dynamic dispatch some languages even use dynamic dispatch by default.

TLDR: FP and OPP both have polymorphism. FP encourages parametric polymorphism. OPP encourages ad-hoc polymorphism.

<comment><USER19> Ad-hoc polymorphism is interfaces in java, typeclasses in haskell, implicits in scala etc. Classes (usually) enable _subtype polymorphism_.

<comment> Avi-D-coder I would argue that subtype polymorphism is functionally equivalent to Ad-hoc polymorphism especially in the presence of multiple inheritance.

The distinction is how polymorphic code is written not what the semantics can be expressed. E.g. rust traits allow for dynamic dispatch. While there is a distinction between ad-hoc polymorphism and subtype polymorphism, I don't believe it is necessary when comparing what semantics FP and OPP languages express.

</comment></comment></comment><comment> d--b please add (2014)

<comment><AUTHOR> Done!

<comment> d--b thx ;)</comment></comment></comment>


You still can't choose your preferred TLS 1.3 cipher in Nginx - looper-l10e https://trac.nginx.org/nginx/ticket/1529 <comment><AUTHOR> The "fix" mentioned in the later replies to the tick, using an openssl conf file, is something I didn't know about - but will test!</comment>


Scala popularity - <AUTHOR> http://dcsobral.blogspot.com/2011/03/scala-popularity.html <comment><USER2> I don't understand why this has so many upvotes... there's nothing in this post other than the guy saying he got more hits than usual on one of his articles.

<comment><USER3> Scala enthusiasts just upvoting anything with Scala in the title without actually clicking through first, probably. I was tempted, hence my suspicion.</comment></comment>


Fewer high school students taking computer science classes - <AUTHOR> http://www.washingtonpost.com/wp-dyn/content/article/2009/12/20/AR2009122002477.html

<comment><USER2> The only course my high school offered was "web design" and "programming". Both classes were jokes, the teachers were those who were "familiar" with the subjects, which meant that they may have designed their own myspace page or read a book on visual basic. As the commenter below me said, these classes were nothing more than study halls. In some situations I was so far ahead of the class that I was doing the teaching or expanding on the projects with so many design changes/features that the teacher had to give me an A because they could not understand what I did.

<comment><USER3> I don't understand why they can't just point you at the MIT and Stanford lectures and let you work at your own pace. If you have to have a grade, you could present your work at some regular interval.

</comment></comment><comment><AUTHOR> I know at my high school, it wasn't even an option. The "web design" course I took basically was a study hall for me.

I also think this is a symptom of our poor math curriculum. I took every math class available to me and I still didn't touch discrete math or formal logic until college.</comment>


Do you believe in P = NP? – the 3. PollPaper [pdf] - <AUTHOR> https://www.cs.umd.edu/users/gasarch/BLOGPAPERS/pollpaper3.pdf <comment><USER2> I took a class from Gasarch in the 80's at UMD. He's a freaky smart guy!

I swear to God (and have said before [1]): He wore a t-shirt that said:

"P=NP? I don't know, and I don't care!"

How times have changed!

[1] HN discussion:

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

of Scott Aaronson's article "My 116-page survey article on P vs. NP: better late than never":

[https://www.scottaaronson.com/blog/?p=3095](https://www.scottaaronson.com/blog/?p=3095)

Also:

P vs. NP and the Computational Complexity Zoo

[https://www.youtube.com/watch?v=YX40hbAHx3s](https://www.youtube.com/watch?v=YX40hbAHx3s)</comment>


Germany's Wi-Fi Shortage Set to Ease as Merkel Backs New Bill - <AUTHOR> http://www.bloomberg.com/news/articles/2015-09-16/germany-s-wi-fi-shortage-set-to-ease-as-merkel-backs-new-bill <comment><USER2> I'm currently suffering two copyright infringement cases, which I can only assume are the result of the storm that reset my FritzRepeater back to factory settings, leaving an open bridge into my network.

Two copyright claims, from two law firms, for albums I've never heard of, at times that I wasn't in the house.

Because of an arcane, but largely logical German law named "Störerhaftung" I am by default responsible, and have to pay both claims (in the order of €5,000 each). I have no recourse.

Tech-savvy as I am, powerless to defend against a case such as this, where do I stand, I could theoretically bring a case against AVM Deutschland (manufacturer of the Fritzrepeater) but then the burden is on me to prove their buggy software failed, and reset to factory settings.

An impossible situation, and I hope that laws such as these move in the direction of transparency, the Störerhaftung is designed to make sure that someone who loses out always has someone to claim against (common other uses, are for example if drunks throw stones from the top of a building, and then run away, the building owner is responsible, in lieu of finding and proving that the drunkards were responsible) - it's arcane, and whilst well intended, and the "terrorism" argument holds strong, this is about copyright, and always maintaining the Störerhaftung right.

<comment><USER3> [https://de.m.wikipedia.org/wiki/Unterlassungserklärung](https://de.m.wikipedia.org/wiki/Unterlassungserklärung)

I think that is what you need.

<comment><USER4> Not without consulting a lawyer first.

If you signed one of these in the past and get "caught" again, you're in even worse trouble than you would be otherwise. The last thing you want to do is give them more ammunition against you.

</comment></comment></comment><comment><USER5> This bill is actually heavily criticized in germany, for example by the Freifunk initiative: [http://freifunkstattangst.de/2015/06/16/neuer-tmg- entwurf-zu...](http://freifunkstattangst.de/2015/06/16/neuer-tmg-entwurf-zur- notifizierung-an-die-eu-noch-immer-keine-rechtssicherheit-wlan-stoererhaftung- bleibt/) (german)

The bill requires network operators to make "reasonable effort to secure the network against unauthorized access" and to "allow access only to users that have agreed not to violate the law during their use" of the network.

The bill also takes service providers into liability if they offer "gefahrgeeignete Dienste" (I have no idea how that accurately translates to english).

Heise has more information in german: [http://www.heise.de/newsticker/meldung/Bundesregierung- besch...](http://www.heise.de/newsticker/meldung/Bundesregierung-beschliesst- umstrittenen-WLAN-Gesetzentwurf-2818747.html)

<comment><USER6> > _The bill requires network operators to make "reasonable effort to secure > the network against unauthorized access" and to "allow access only to users > that have agreed not to violate the law during their use" of the network._

Can you elaborate on why this is bad?

<comment><USER7> Would a bad person actually refuse to agree with not breaking the law? A 'bad' person already has a willingness to not follow the rules, so how would an agreement matter?

<comment><USER8> I think the point is to clearly shift the moral hazard away from the provider to the user. The user may not uphold the agreement, but then they are clearly the morally wrong party.

<comment><USER9> Isn't there some meta rule about the first world countries law systems (us excluded) that the only crimes you are responsible for are the ones you personally commited?

<comment><USER10> Few things: Firstly, this is about civil cases, not crimes. Secondly, the wrongdoing here is allowing someone else to use your internet connection to perform illegal actions, not those actions themselves. Thirdly, in any law system I can think of there are crimes you can commit by literally _doing nothing_ (neglect). For example, in Germany it's a crime to know about a planned murder and not do anything about it.

</comment></comment></comment></comment></comment></comment><comment><USER11> > providers won't be held liable as long as they secure the network properly > and get users to agree not to act illegally

Of course they had to include that paragraph, forcing everyone to tick some stupid check-box. As if the cookie agreements weren't enough already.

<comment><USER12> I'm really trying to understand how anyone can think this is sensible. Maybe 20 years ago when these laws were written by people who had never used WiFi at a cafe before, but surely everyone involved with writing this bill intuits that this sort of a measure is utterly worthless and just induces frictions. Maybe it enables prosecution later for lying? Hard to believe they think that outweighs the costs.

<comment><USER13> Did you ever take a look who sits in the European Parliament and European Commission?

Introducing Günther Oettinger, the European Commissioner for Digital Economy and Society: (wait for his English at the 0:20 mark) [https://www.youtube.com/watch?v=88OGXLFpeMw](https://www.youtube.com/watch?v=88OGXLFpeMw)

As a German I am completely embarrassed.

<comment><USER14> wait, you're embarrassed because a politician has an accent when speaking English?

<comment><USER15> No, because his english is horrible, and then he said, during a press conference "we're here in Germany, we talk Deutsch!".

In general, his english is so bad that it's become some kind of running gag.

<comment><USER16> > No, because his english is horrible, and then he said, during a press > conference "we're here in Germany, we talk Deutsch!".

You're confusing Westerwelle with Öttinger.

<comment><USER15> Öttinger said the same, too. Extra3 made fun of him for copying Westerwelle.

It doesn't change anything anyway.

</comment></comment></comment></comment></comment></comment></comment><comment><USER17> > as long as they [...] get users to agree not to act illegally

Is forcing everyone to set up captive portal pages just so people can check a stupid box on a form going to make anyone's life better? Is it going to benefit anyone in any way? I can't understand how anyone could possibly think that this requirement is a good idea.

</comment><comment><USER18> Germany is no longer going to be one of the only places on Earth which punishes Wifi providers for what users do while on their network? I may actually be able to choose between more than 3 different cafes' that offer Wifi from my half of the city? (One fewer than a month ago.)

Wow. That would actually be fantastic thanks for getting on that.

<comment><USER19> France does as well

<comment><USER20> Yes, but they have introduced new practical rules for simplified user registration.

And anyway they're not as restrictive as the Germans. For some fun, check GEMA vs Youtube: [https://apps.opendatacity.de/gema-vs- youtube/en/](https://apps.opendatacity.de/gema-vs-youtube/en/)

<comment><USER21> GEMA vs youtube is not really related.

</comment></comment></comment></comment><comment><USER22> Oh, that explains. I've always wondered why there are so incredibly few hotspots in Germany - and the few existing hotspots are paid. Voiced it a few times to Germans but nobody knew it was because operators would be held liable.

<comment><USER23> May I introduce you to Freifunk:

They're basically working around Störerhaftung by channeling the traffic over a gateway as an ISP. Everyone can offer up part of their traffic, and there are quite a few members (as shown in the local groups, they have maps). Feel free to use some of our traffic, for example. No problems so far.

[http://freifunk.net/en/](http://freifunk.net/en/)

</comment></comment><comment><USER24> > as long as they secure the network properly

How do I prove it? This right here is so abmahnung trolls can keep on threatening

> and get users to agree not to act illegally

Yet another useless popup, cookie popup is not enough

> "digital agenda" aimed at blanketing the country with high-speed Internet by > 2018

A yeah, "VDSL for all". Where do I buy VDSL modem in 2018? I will have to break into Technisches Museum and steal one (no, I don't want your "free" fritzbox)

<comment><USER25> Why don't you want a Fritz!Box? If the internet comments are to be believed, they are the best routers in Germany. [0]

[0] Note: I'm a USian who is _rather_ happy with his EdgeRouter Lite + UAP-AC- LR.

<comment><USER26> Oh here is my chance to complain about this pet peeve! My provider gives you a Fritzbox with you subscription, I called them a few times that they should use their mass-purchase leverage to demand better functionality but of course the poor support people couldn't make that happen even if they understood what I was getting at :) Fritzboxen are praised across the internet as great routers, but they won't even let you

\- change the default host name suffix \- assign static host names for internal use \- see which device uses how much bandwidth (only the total - yeah great, now I have to hunt for which machine/mobile is uploading all those photos to dropbox) \- block machines from the network, and/or throttle bandwidth. It _looks_ like you can do it, but the implementation is useless - yes you can prioritize smtp over http, hurrah! Everything bandwidth-hungry in 2015 goes over http, and then it's all-or-nothing on fritzbox.

</comment></comment></comment><comment><USER27> This is an issue across many EU countries, that require by law that WiFi providers track what their users do online, and to keep a permanent record of it. Its onerous to implement and support. I believe it arose from anti- terrorism legislation.

<comment><USER7> It also feels like Stasi era nonsense. If someone borrows my phone, must I record the call?

<comment><USER28> Yes obviously, how do you prove it was not you who made the call?

<comment><USER9> Voice? Being provably somewhere else when the call was made?

<comment><USER28> Voice -> it is not recorded by default by anybody unless you are under the spotlight.

Prove you are somewhere else -> can you prove you were somewhere else 24/7? I bet you can not.

<comment><USER9> If you don't have the voice then you can't say I made the call. Only that it came from phone registered to me. I can't disprove that if that happened.

</comment></comment></comment></comment></comment></comment><comment><USER29> Thanks Merkel for the small mercies! I do know of at least one free WiFi providing service in Germany - "Freifunk Saar".

[https://saar.freifunk.net](https://saar.freifunk.net)

</comment><comment><USER20> From the "WLAN" café I spent 2 weeks to find in Kiel (currently in a seminar, no internet access), and having just paid my €40 bill for 6 GB (bad) 3G Internet this month, I fully approve this bill.

I also hope at some point cellular internet will get cheaper in Germany... France 20€ 20 GB, Latvia 10 € 20GB with LTE, Germany 500MB 12€.

<comment><USER29> > From the "WLAN" café

Is there any other country which calls WiFi as WLAN? I have traveled to many countries in Europe but I assume Germany, France and Luxembourg seem to be the only countries that use this term.

<comment><USER4> Just a sidenote: I think the reason the term "WiFi" never caught on in Germany is that

1\. It sounds really awkward in German (most speakers will pronounce the "W" as in German, i.e. "Vi-Fi").

2\. WLAN is easier to say (think "V-LAN").

3\. It can easily be confused with "HiFi" (which, btw, is commonly pronounced as "Hi-Fee" for some reason, creating additional confusion about the acceptable pronunciation of "WiFi" in German).

Another interesting(?) note: unlike WLAN, LAN is commonly pronounced with a long "a" in German. I'm pretty sure I've heard the word "LAN" used a lot less since WiFi became so widely used and most people seem to just use the German word "Netzwerk" (network) or even simply "Netz" (net). Confusingly, a lack of "Netz" ("Ich hab kaum Netz" \-- "I have barely any net") can also refer to mobile connections (because "Handynetz" = cellular network -- and yes "Handy" is a faux-English word commonly used in German to refer to mobile phones because marketing is stupid).

<comment><USER30> I'd guess HiFi is pronounced Hi-Fee as it takes the "fi" sound from "High Fidelity".

<comment><USER4> Sure, but then WiFi would be expected to be pronounced the same -- yet I've never heard it pronounced as "Wi-Fee" in English.

<comment><USER26> Everyone except the British call it 'wee-fee' in Europe (well, I can't claim to have a representative sample for _everyone_ , but at least among those I've heard about it)

I was already starting to think that I was the weird one.

</comment></comment></comment></comment></comment></comment><comment><USER24> Each time Germans are passing any internet related laws or their brave lawyers are winning another case against evil Facebook/Google I'm just facepalming. They keep on hurting themselves, which part of the internet is so difficult they are not capable of understanding?

</comment><comment><USER31> Can we shut down GEMA while we're at that?

<comment><USER32> Why? They are trying their best to collect a fair fee for artists. YouTube are the ones that have decided that those rules shouldn't apply to them and rather than accept those laws they use their own site as propaganda to blame GEMA. What you get presented on YouTube isn't telling the whole truth by any means. It is really annoying as a YouTube user in Germany to have so many music videos blocked, but that is what Google want you to feel. They appear to be doing a very good job of it by the sound of it!

The reality is that GEMA and Google are both acting like children over the matter that has been going on since 2009. Both are to blame but the only thing users see is that it is all GEMA's fault.

The issue needs to be blamed on both.

[https://en.m.wikipedia.org/wiki/Blocking_of_YouTube_videos_i...](https://en.m.wikipedia.org/wiki/Blocking_of_YouTube_videos_in_Germany)

<comment><USER33> While you're right that the youtube issue is more complicated than "google good gema bad" it's an interesting assessment that the GEMA is trying to collect a "fair" fee for the artist. The GEMA is in dire need of reform on the fair front and on a couple of other issues as well. For example, only the upper 5% of the members get to vote on the distribution of funds, classical music gets ranked higher etc. The goal of the GEMA is a fine one, but over the years the institution has gone somewhat astray.

For german speakers I can recommend [http://www.internet-law.de/2012/05/ist- das-system-gema-unfai...](http://www.internet-law.de/2012/05/ist-das-system- gema-unfair.html) as summary.

</comment></comment></comment><comment><USER34> Is that why Wi-Fi is so bad all over Berlin?

<comment><USER24> In Berlin? Impossible, it's European startup hub! /s</comment></comment>


Online, Are You Really Reading? - <AUTHOR> http://www.nytimes.com/2008/07/27/books/27reading.html?_r=1&partner=rssnyt&emc=rss&oref=login

<comment><USER2> It's articles like these that make me wonder whether the NY Times knows it's insulting its subjects:

Nadia also writes her own stories. She posted "Dieing Isn't Always Bad," about a girl who comes back to life as half cat, half human, on both fanfiction.net and quizilla.com.

Nadia said she wanted to major in English at college and someday hopes to be published. She does not see a problem with reading few books. "No one's ever said you should read more books to get into college," she said.

<comment><USER3> Oh, they definitely know it. The deadpan diss is a Times specialty.

<comment><USER2> I suppose the nice thing is that they will probably never realize they are being mocked.

</comment></comment></comment><comment><USER4> Oh yeah I'm reading, up until a site does something stupid like require registration.

I also stop am forced to stop reading sometimes when a site converts a pdf to a scribd link and crashes my whole computer =)

<comment><USER5> +1. Feel free to use anewaccountname. The pair-word for it is right after $myaccountname on the login/registration page.

<comment><USER4> huh?

</comment></comment></comment><comment><USER6> I didn't go so far as to read the article behind the wall, but the upshot is this:

1) On the Internet, people read selectively, to pick out the information that they want.

2)If people find communication to be more efficient by using language differently, people will read that language differently.

This is all fairly obvious, and is not news.</comment>


Reddit plans to rewrite its website in 2017 - <AUTHOR> https://www.reddit.com/r/announcements/comments/5q4qmg/out_with_2016_in_with_2017/ <comment><USER2> > One project I would like to preview is a rewrite of the desktop website. It > is a long time coming. The desktop website has not meaningfully changed in > many years;

IMO it's not broken and shouldn't be fixed. I've used reddit pretty regularly since before they had comments. The only feature I think I'd like now is for it to remember collapsed threads (like HN does).

<comment><USER3> I worry they're gonna repeat Digg's mistakes somehow, dressing everything up and coincidentally increasing their ad/sponsored zones. The minimal comment- and-reply-focused experience is the reason I use Reddit.

<comment><USER4> That's how the mobile is already. More pictures less content.

</comment></comment></comment><comment><USER5> To bad they can't rewrite their mods and admins, thats where I would start.

<comment><USER6> Unfortunately it was the mods and admins that rewrote the company and cemented their place as kings of the burning trash pile that is Reddit.

It used to be a much more civilized place, but over time kingdoms were established, trolls grew in numbers, and now, yikes. Even living in a sub-sub- Reddit doesn't isolate you from the occasional incursion.</comment></comment>


Hackers Use Google Analytics to Steal Credit Cards - <AUTHOR> https://www.searchenginejournal.com/hackers-exploiting-google-analytics/373046/ <comment><AUTHOR> It's not a vulnerability in Google Analytics itself, more so the fact the browsers implicitly trust the GA hostname.</comment>


Why NoSQL is bad for startups - <AUTHOR> http://labs.mudynamics.com/2010/04/01/why-nosql-is-bad-for-startups/

<comment><USER2> TL;DR: CouchDB is nice because reliability, no JOINs, Javascript is untyped, no SQL injections.

This article could fit in a Tweet, and wouldn't even exist if you took out all the non-points: SQL is reliable too, nobody forces you to write JOINs, there are languages better than JS, use prepare statements/stored procedures.

<comment><USER3> Agreed. A tool in bad hands can be used badly whether it is SQL or NoSQL, just as a tool in good hands can be used well.

Also, Java may be verbose, but the way I see it, the programmer didn't have to write more than a few letters out of each word before letting autocomplete do its job, and has the added benefit of an IDE that can reason logically about his code. I'm not anti-dynamic language by any stretch (I love Python), and Java is almost never visually beautiful, but extensive machine-assisted code reasoning abilities can be awfully useful.

<comment><USER4> Check the date on the article. :)

<comment><USER3> It was a joke, I get it - I was arguing against the implications of the author's perceived actual thoughts behind the sarcasm. Java is an incredibly good language in many useful ways, yet also incredibly bad in others. SQL has not been successful without reason, either

</comment></comment></comment></comment><comment><USER4> thanks for the _delayed_ april 1st HN reference. Had fun writing this one! It's CouchDB's fault. :)

<comment><USER5> I didn't even notice the date! I started getting really confused at the Java/Javascript part before I realized it wasn't a serious article.

</comment></comment><comment><USER6> NoSQL doesn't mean No Injection attacks. Just ask Patrick:

[http://www.kalzumeus.com/2010/09/22/security-lessons- learned...](http://www.kalzumeus.com/2010/09/22/security-lessons-learned-from- the-diaspora-launch/)

<comment><USER7> I wish I could vote this up more. It isn't the 'SQL' in 'SQL Injection' that is the issue, it is the 'Injection'.

If you don't properly understand your database (or any other tech), assuming it doesn't have security issues because it is 'different' is the height of naivety...</comment></comment>


Project Management - activity network diagram tool - <AUTHOR>

Does anyone know of a time-scaled activity network diagram tool similar to PMA Technologies NetPoints (that doesn't cost $4k!) ? <comment><USER2> See page 19: [http://s3.amazonaws.com/37assets/svn/Rework-by-Jason- Fried-a...](http://s3.amazonaws.com/37assets/svn/Rework-by-Jason-Fried-and- David-Heinemeier-Hansson-Excerpts.pdf)

;)</comment>


Rasa Core: Throw away your state machine and use ML-powered dialogue - <AUTHOR> https://medium.com/rasa-blog/a-new-approach-to-conversational-software-2e64a5d05f2a <comment><AUTHOR> The Rasa Core framework has been in development for 1.5 years, so we're incredibly excited to launch it & make it accessible to everyone.

We wanted to make Machine-Learning based dialogue usable for as many developers as possible. There's so much great research in conversational AI but very little that developers can actually use to build bots and voice apps.

One of the big challenges was making Rasa Core useful on day one, when you have no training data. We came up with the interactive learning approach, where you teach the system by talking to it and providing feedback. Rasa lets you scale from nothing up to a robust dialogue system trained on a large number of real conversations.

We're so happy with the community that's developed around Rasa NLU, and so we're really, really excited to see what people build with Core.

</comment><comment><USER2> [https://github.com/RasaHQ/rasa_core](https://github.com/RasaHQ/rasa_core)

</comment><comment><USER3> This seems like a home run for bot devs.</comment>


Ask HN: The traffic a webpage gets when on the front-page of hackernews? - <AUTHOR> Of course it depends on several factors like:
1. No. of hours the page spent on the front-page
2. The position of the article on the front-page
3. The number of times the same article has been on the front-page
4. The topic that it covers
5. Different factors like, the page gets slashdotted, featured on a subreddit, linked to from a popular blog might inflate the traffic, but "http-referrer" can help clear things up?
I'd like to know, out of mere curiosity, how much traffic your site got because of it being "hackernews'd" I've seen a lot of blogs / sites hit hosting limits or go down when it has spent a mere 2 hours on the front-page.
Thanks. <comment><USER2> Here is one data point:

When [http://www.productchart.com](http://www.productchart.com) was on the frontpage and got 79 points, Google Analytics reported 2752 visitors from news.ycombinator.com. Looking at the rest of the statistics, my guess is that another 2000 came from here but without referrer.

This is the submission: [https://news.ycombinator.com/item?id=8907681](https://news.ycombinator.com/item?id=8907681)

</comment><comment><USER3> Someone posted a blog post of mine that reached the 3rd-2nd spot on HN for much of a day. The aggregate number of unique views I received on it were about 200k. I say aggregate because the number wasn't entirely from HN directly, but it being on HN led the post to be picked up by other channels such as Reddit, Gizmodo, 'ifuckinglovescience' and many other outlets. Several other outlets later reported the news that my post did but didn't link directly, making it so that more people were reading about the topic then my numbers reveal, but I don't think I could take credit at that point because these other outlets were probably doing their own independent research on the topic by then.

What was interesting was that 2-3 days later when its spot on HN was probably on the 3rd or 4th page or maybe more, the page was still garnering a considerable number views from HN.

</comment><comment><USER4> My side project made it to the front page - [http://pattle.github.io/simpsons- in-css/](http://pattle.github.io/simpsons-in-css/)

From memory it was around 25,000 - 30,000 visits

</comment><comment><USER5> One of my blog posts made to the top of the front page and remained on the front page for 3-4 hours. The blog was on Medium and their stats showed close to 25k visits on that day.

</comment><comment><USER6> My [http://www.gradifycss.com](http://www.gradifycss.com) was top for an hour or so, got a few tens of thousands of views</comment>


Ask HN: Which school do you attend? - <AUTHOR> I'm always interested in seeing who from HN goes to my school.  Feel free to chime in and name your school, see who else from HN is going there too. <comment><USER4> Stanford undergrad, although I am taking 2 years off to work on startups/travel the world in south america, asia, europe, etc.

<comment><USER5> Stanford undergrad as well. Do you have a way to contact you?

</comment></comment><comment><USER6> Hillel Torah North Suburban Day School (graduated)

Oh, and I once took a linear algebra class at Northwestern University, but it didn't take and later I had to reteach myself from scratch.

</comment><comment><USER7> APU - www.anglia.ac.uk - a 3rd rate polytechnic university in the UK ;)

<comment><USER7> (wonder why this was upvoted, are there /other/ APU users out there?! seems rather unlikely :/)

</comment></comment><comment><USER8> from Georgia Tech

<comment><USER9> Current Georgia Tech CS student

<comment><USER10> Same here.

</comment></comment></comment><comment><USER11> University of California - Santa Barbara

</comment><comment><AUTHOR> University of Illinois Urbana-Champaign

<comment><USER12> I think I met you today in campus.

<comment><USER13> ;-)

<comment><USER14> I just got into the CS Ph.D. program here!

</comment></comment></comment></comment><comment><USER15> Georgia Tech alum

</comment><comment><USER16> Indian Institute of Technology, Delhi.

Hmm, no one here from IITs i guess.

<comment><USER17> Illinois Institute of Technology - CPE '02

Maybe not one of the IITs you were thinking of, though.

</comment></comment><comment><USER18> University of North Carolina, Chapel Hill

<comment><USER19> Duke

<comment><USER20> same here. GTHC.

</comment></comment></comment><comment><USER21> What about University of Michigan (Ann Arbor)? My graduate school. Anyone remember when they built their own campus-wide system - wasn't it a rather unique hardware - early Amdahl or something?

</comment><comment><USER22> University of California - Santa Barbara

</comment><comment><USER23> University of California, San Diego (recently graduated though)

</comment><comment><USER24> Stanford University

(or rather, I went there until I graduated a few weeks ago)

</comment><comment><USER25> MIT

</comment><comment><USER26> Boston University '07

<comment><USER27> Nice. I'm not the only one from there. BU '04.

</comment></comment><comment><USER28> University of Copenhagen, Department of Computer Science (called "DIKU", an abbreviation of "Datalogisk Institut, Københavns Universitet").

<comment><USER29> Me too, though I don't really go there anymore.

</comment></comment><comment><USER30> I no longer attend school, but when I did it was at the University of California at Irvine.

Just down the street from Blizzard, for all you WOW players.

<comment><USER31> Also an anteater alum. I was beginning to think that there weren't any other UCI representatives here!

</comment></comment><comment><USER32> The University of Chicago.

<comment><USER33> CS and Econ Alum here (graduated in 2006).

</comment></comment><comment><USER34> Long since graduated. Attended University of Minnesota, where oldest son now attends as a dual-enrollment "eleventh grader."

</comment><comment><USER35> Hard Knocks.

</comment><comment><USER36> University of York, UK

<comment><USER37> Well, I'm no longer a student, but I graduated from York in 2006.

<comment><USER38> Also graduated in 2006 from York.

Now moved to Edinburgh for MSc/PhD.

</comment></comment></comment><comment><USER39> UNM, surprisingly had to point that NM was part of US! keyword 'Mexico' makes ppl jump to conclusions..

</comment><comment><USER40> University of Florida

<comment><USER41> UF Alum.

</comment></comment><comment><USER42> Washington University in St. Louis

</comment><comment><USER43> University of Toronto (graduated)

</comment><comment><USER44> Cornell University

<comment><USER44> hopefully one of those upvotes is pg

<comment><USER45> Yep. Class of 86.

</comment></comment></comment><comment><USER46> Milwaukee School of Engineering

</comment><comment><USER47> Purdue University

</comment><comment><USER48> INSA of Rennes in France (National Institute of Applied Science), graduated 2005 \+ Rochester Institute of Technology for 6 month as an exchange student

The courses between both were pretty different and kind of complementary...

</comment><comment><USER49> The University of Texas

<comment><USER50> Which year?

I'm UT CS BS, '08.

<comment><USER49> '09 Finance / MIS

</comment></comment></comment><comment><USER51> Montgomery Blair High School in Silver Spring, Maryland.

I wouldn't be surprised if someone at HN was from there too... we have quite a number of computer-interested people. Anyone?

<comment><USER52> Close: I'm graduated from B-CC.

<comment><USER51> Do you know of any meeting groups around here? I'd love to meet a few fellow HNers.

</comment></comment></comment><comment><USER53> University of Virginia

<comment><USER54> Nice - doing CS here now

</comment></comment><comment><USER55> Rutgers

<comment><USER56> RU CS '04-'08

</comment></comment><comment><USER57> Penn State

<comment><USER58> i go to penn state as well

<comment><USER59> PSU alum ('07)

</comment></comment></comment><comment><USER60> Cal Poly SLO ... CS (left after jr. year in '00)

</comment><comment><USER61> Duke, BSE Biomedical Engineering (Exp. 2011)

<comment><USER62> BA History/Computer Science, 2006

</comment></comment><comment><USER63> from University Of Southern California (USC)

<comment><USER64> I graduated from USC in '07. Fight on!

</comment></comment><comment><USER65> University of Illinois at Urbana-Champaign

<comment><USER14> How do you like it? And are you a CS major? I'm considering coming here for a Ph.D. (just heard I've been admitted!!!)

</comment></comment><comment><USER66> Walla Walla University -small denominational school with under 2k students. Graduates about 25 engineers a year.

<comment><USER30> Is the song by The Offspring at all related?

</comment></comment><comment><USER67> Rensselaer Polytechnic Institute (RPI). Also Northwestern University and Bethel Theological Seminary.

</comment><comment><USER68> Graduated from Temple University, and am currently auditing classes at the University of Pennsylvania.

</comment><comment><USER69> University of Toronto -- Undergrad.

</comment><comment><USER70> Rochester Institute of Technology.

</comment><comment><USER71> California Institute of Technology

<comment><USER72> second.

<comment><USER71> Oh damn. I looked you up on donut, and I live right down the hall from you in Marks (117) :).

</comment></comment></comment><comment><USER73> University of Colorado at Boulder

</comment><comment><USER74> University of Illinois at Chicago

<comment><USER74> I am studying computer science as an engineer.

</comment></comment><comment><USER14> University of California Berkeley

<comment><USER75> Same here.

<comment><USER76> Ditto! Soda Hall is my home.

<comment><USER77> You mean The Dungeon? ;)

</comment></comment></comment></comment><comment><USER78> TU Darmstadt

<comment><USER79> Me too. Nice to see a fellow here!

</comment></comment><comment><USER80> Case Western Reserve University

</comment><comment><USER81> Bard College at Simon's Rock (currently, will be transferring after this semester)

<comment><USER82> Wow, you don't see Rockers too often. I'm an alum.

<comment><USER81> Yeah, that's very true. Usually, it's "where's that?"

What year?

</comment></comment></comment><comment><USER83> University of Central Florida. They paid me the most to go to their school ;)

</comment><comment><USER84> University of Vaasa, Finland

<comment><USER85> Savonia University of Applied Sciences, Finland

</comment></comment><comment><USER86> Faculdade de Ciências e Tecnologia - Universidade Nova de Lisboa, Portugal

</comment><comment><USER87> Georgetown University, '07

<comment><USER87> Also, if there are any Hoyas here, please email me. I'd love to connect.

</comment></comment><comment><USER88> The College of New Jersey.

Not too impressive after some of the names listed here. :-/

</comment><comment><USER89> Berklee College of Music

</comment><comment><USER90> Missouri State University (previously Southwest Missouri State)

</comment><comment><USER91> Maranatha Christian University, Bandung, West Java, Indonesia

</comment><comment><USER92> ISEL (Instituto Superior de Engenharia de Lisboa) - <USER2>

</comment><comment><USER93> Babson College alumnus

</comment><comment><USER94> University of Applied Sciences and Arts Dortmund, Germany.

</comment><comment><USER95> Louisiana Tech University.

Anyone else attending school in Louisiana?

</comment><comment><USER96> Chalmers University of Technology, Göteborg, Sweden

</comment><comment><USER97> Vilnius University

<comment><USER98> University of Latvia

<comment><USER99> i graduated in 2008 :)

</comment></comment></comment><comment><USER100> Tufts University

<comment><USER101> Go Jumbos!

</comment></comment><comment><USER102> Washington State + University of Washington

</comment><comment><USER103> State University of New York at Stony Brook

</comment><comment><USER104> Università degli Studi di Milano-Bicocca

</comment><comment><USER105> Australian National University, Canberra

</comment><comment> a-priori University of Guelph (Ontario, Canada)

</comment><comment><USER106> University of Maryland, College Park

</comment><comment><USER107> University of Southern Mississippi.

</comment><comment><USER108> Ozarks Technical Community College

</comment><comment><USER109> Rochester Institute of Technology.

</comment><comment><USER110> University of Wisconsin - <USER3>

</comment><comment><USER111> U. of Arizona, Tucson (graduated)

</comment><comment><USER112> Worcester Polytechnic Institute

</comment><comment><USER113> ITESM Campus Zacatecas (Mexico)

</comment><comment><USER114> University of Miskolc, Hungary

</comment><comment><USER115> EPFL (graduate school alum)

</comment><comment><USER116> Cambridge University (alum)

</comment><comment><USER117> Northeastern University :(

<comment><USER118> Why the sad face? If I knew that a significant portion of the PLT Scheme developers were at NEU back when I was applying to colleges, I would have seriously considered going there.

</comment></comment><comment><USER119> University of Sussex, UK

</comment><comment><USER120> Arizona State University

<comment><USER121> What's the startup environment like in Phoenix? I have lived here for the past few months but it does not seem to have the vibe.

<comment><USER120> To be honest I haven't seen much. I've been abroad lately, but in my first couple of years I heard very little.

I haven't lived in a startup hub, so I can't really give a valid comparison.

</comment></comment></comment><comment><USER122> University of Washington

<comment><USER123> Same here.

</comment></comment><comment><USER124> University of Queensland

<comment><USER125> +1 (alumni)

</comment></comment><comment><USER126> University of Amsterdam

</comment><comment><USER127> Northwestern University

</comment><comment><USER128> Exeter University, UK.

</comment><comment><USER129> University of Kentucky

</comment><comment><USER130> Gothenburg Uni, Sweden

</comment><comment><USER131> Santa Clara University

</comment><comment><USER132> Ohio State University

</comment><comment><USER133> Marquette University

</comment><comment><USER99> University of Latvia

</comment><comment><USER134> Epita, Paris, France

</comment><comment><USER135> University of Miami

</comment><comment><USER136> Ghent University

</comment><comment><USER137> Emory University

</comment><comment><USER138> Mizzou, 02-06

</comment><comment><USER139> Univ of Utah

</comment><comment><USER140> Durham

</comment><comment><USER141> Wisconsin

</comment><comment><USER142> Glasgow

</comment><comment><USER143> drexel

</comment><comment><USER144> Brooklyn College -- Brooklyn, NY

</comment><comment><USER145> San Diego State</comment>


Arduino unleashes a serious Internet of Things system for hardware hackers - <AUTHOR> https://techcrunch.com/2016/09/29/arduino-unleashes-a-serious-internet-of-things-system-for-hardware-hackers/ <comment><USER2> > -MCU: Microchip SAMD21 ARM Cortex-M0+

Saw this on their kickstarer page [1]. Does this mean that even Microchip has given up on MIPS?

[1] www.kickstarter.com/projects/iot-invention-kit/eslov-iot-invention-kit

<comment><USER3> No, Microchip bought ATMEL so now every ATMEL product is a Microchip product</comment></comment>