Debugging Node.js in Production - <AUTHOR> http://techblog.netflix.com/2015/12/debugging-nodejs-in-production.html <comment><USER2> I am fairly new to node but find that it is hard as heck to debug. node debug index.js seems really weird and not at all like python's pdb. Is there something I am missing?

<comment><USER3> Trying to figure out some websocket stuff, I somehow managed to get nodejs, autobahn, and whatnot running locally (client and server) using Jetbrains' WebStorm on a Mac.

This tool stack makes me want to knock my teeth out.

That WebStorm's debugger (with break points!) works at all is a marvel. Props to the JetBrains team.

</comment></comment><comment><USER4> "Name your functions": Easier to know what the code does, flattens the "Christmas tree from hell", no need for ugly closures, + Makes it's easier to debug. Anonymous functions is probably the most abused syntax in JavaScript.

<comment><USER5> I've never understood JScripters' insistence on anonymous functions instead of named ones.

As someone just delving into Node from another platform what're "proper best practices"-based JS patterns?

<comment><USER6> Lambdas make code really easy to read compared to making the reader skip around the code. In addition, it reduces boilerplate code and requires less time to be spent on naming functions. Of course, it all depends on situation. Simple logic which is not beneficial elsewhere can be implemented as an anonymous function in my opinion.

For example: if(objects.find(object => object.id === id)) {}

<comment><USER7> > _Lambdas make code really easy to read compared to making the reader skip > around the code._

You can have lambdas that are also named, e.g:

if(objects.find(function idCheck(object){ return object.id === id})

Not sure if it's possible with the new ES6 syntax [Edit: apparently it's not, although arrow functions will automatically be assigned a name in some common scenarios].

<comment><USER8> That defeats the whole purpose of fat arrow functions.

<comment><USER7> I'm not sure what purpose you have in mind.

The main purposes of fat arrow functions is the auto-binding of this and succinctness.

A named fat-arrow function would still retain both, and in fact the feature was considered for ES6 back in 2013, but didn't made it. Syntax would have been like:

if(objects.find(functionName(object) => object.id === id)) {}

</comment></comment></comment></comment></comment></comment><comment><USER9> Interesting that they choose the brute force way. And that it works that good and maybe has less overhead than instrumenting the code.

</comment><comment><USER10> Sorry if this is slightly off topic but can anyone tell me why I would not be able to access the netflix tech blog?

Every time I try to go to it I get a "Web page unavailable" despite sites like downforeveryoneorjustme.com telling me it is not down.

Not sure if its just my laptop as I am abroad at the moment in Italy and have no other computer to check the site.

<comment><USER11> "abroad at the moment in Italy"

Here is the basic checklist for something like this:

check your hosts file ping the website tracert the website clear dns cache check dns server up/down temporarily disable av/firewall

If all the above indicate normal operation but it still fails, it could be blocked anywhere upstream of you.

<comment><USER10> It's strange, nothing in the hosts file, any ping says it can't find the host [http://techblog.netflix.com/](http://techblog.netflix.com/), or even anyone of those check ip sites says the same. Asked some work colleagues here and in Ireland and it seems our company is blocking it, I guess through the firewall which unfortunately I can't disable.

<comment><USER12> I guess it is unfortunate though not too surprising that an employer would be blocking netflix.com.

</comment></comment></comment></comment><comment><USER13> Restify, interesting.

<comment><USER14> Netflix is a large supporter and active contributor (perhaps the most active?) to Restify, so it really isn't that surprising when you think about it.

</comment></comment><comment><USER15> Why not use New Relic?

<comment><USER16> My early impressions of New Relic were that they were a really fast and easy way to correlate all the default logging of the web application stack. I imagine Netflix would want something a little deeper and more customized then this, also deploying New Relic at scale would be costly and at the very least require an audit of potential performance implications.

</comment></comment><comment><USER17> always bad practice to be forced to debug in production, but I guess that's what you get in the "DevOps" model.

<comment><USER18> On the contrary: there are many bugs you will not find until software is in production. (That's not a reason not to test or roll out to staging environments first and the like, because you can continue to find new bugs that way. But despite all of our efforts, there remain bugs that only manifest for the first time in production.)

<comment><USER17> sure, but that is paramount of environments not being in sync, and inaccurate pre-production testing.</comment></comment></comment>


Working at Netflix - <AUTHOR> http://www.brendangregg.com/blog/2015-01-20/working-at-netflix.html <comment><USER3> I had a wildly different experience interviewing at netflix.

I met with the *Chief talent officer (had to look up this title from my original schedule with them...) for one of my interviews and she spent half the time telling me why the stock price was so low "We were high on a $300 share price and thought we were gods." Then, the other half telling me her favorite firing stories. I don't know what the purpose of all of this was but it gave me the impression that HR/head of HR needed to demonstrate how important they are in the company.

One of my potential colleagues interviewed me and gave me a fizzbuzz question. I successfully answered it. He then asked me to rewrite it with some restrictions. I did this. Then he asked me to do it one more time. I wasn't familiar with the python syntax for if-else shortcut (e.g., x = 100 if y is True else 0) and so couldn't rewrite it to his liking. This lack of familiarity with this python trick resulted in feedback at the end of the interview that I did not have a deep enough understanding of computer science.

I honestly could tell that the interviewer giving me the fizzbuzz questions wasn't clicking with me personally. That's fine, and I completely respect that it's a valid reason not to hire someone. However, because of this feedback, and the fact that the people at netflix generally liked me, they wanted me to work on some sort of data warehouse management team. I'm not sure why they would offer me a job so wildly different from what I was contacted to apply for, or why the syntax from one language would be considered representative of my knowledge of CS.

Overall, I think the experience of one person at a company is nothing more than an anecdote that can be entertaining, perhaps moderately informative, but it's not a complete picture. There are many stories out there about people interviewing with or working for Netflix. If you are seriously interested in the company, read a lot of those stories, discount all of them as biased, and then see for yourself by talking to them.

<comment><USER4> I also met with this same woman who talked about both the stock price and firing people. She also said something to the effect of "just because you have a job now doesn't mean you will have one in six months" and made a comparison to players being traded in professional sports. I remember feeling very put off by her. I too did not understand what the point in this bit of bravado was. It sounds like it's her standard candidate speech though which is just weird. The other thing that put me out was the first person who interviewed wasn't wearing shoes and insisted on sitting indian style with his feet pointed out to wards me. I am no stranger to a casual work environment but that is just gross. Lastly on the way to a conference room on the second floor I walked a fair amount through the office and what was notable to me was that I didn't see anybody smiling or even anyone who looked like they might be enjoying what they are doing. Ultimately I didn't get an offer because the job turned out to be a different description than the one I had interviewed about on the phone. I think that says it all.

<comment><USER5> > Lastly on the way to a conference room on the second floor I walked a fair > amount through the office and what was notable to me was that I didn't see > anybody smiling or even anyone who looked like they might be enjoying what > they are doing

Please don't ever make this assumption. I referred an acquaintance from school to my workplace (he was a great project partner, and I was the first of us to get hired after graduation, so why not?), and apparently when he passed through everyone was just... doing work. That was a telltale sign that everyone was grumpy to him.

I had to explain that we basically don't work at all on Friday afternoons because we're too busy drinking, we play pingpong religiously, frequent out of office events on the weekends, and in general it's just an enjoyable crowd. Random conversations happen all the time.

But nope, that one time he came through the office, everyone looked unhappy. Because they were working, I guess.

<comment><USER6> _[...] frequent out of office events on the weekends [...]_

That sounds ... very strange. Weekends aren't generally speaking "office hours", and more importantly also not "working hours". Having an "out of office event" in my world is when you're doing work, i.e. it's during normal working hours, but you're not _at_ work.

Having frequent work-related "events" on weekends sounds like a total bummer.

<comment><USER5> Totally voluntary. Work just pays for them. A number of people opt out and no one judges them.

<comment><USER7> How do you know what your coworkers think?

<comment><USER8> Because everyone that works at Netflix thinks the same way. They ensure that with their hiring practice that alienates anyone that thinks differently.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> "If hiring is broken, what else is broken?"

I've seen quite a few articles on HN recently where what we call "candidate experience" during the hiring process was a theme. Whether this writer chose to list "Recruiting" as the first topic because of chronology (recruiting was first experience with company) or to emphasize the importance is unknown, but candidates today seem to assume that a broken hiring process is indicative of flaws in culture and how the company values employees.

Companies that simply play the numbers game and don't consider improving candidate experience are running the risk of reducing their brand as an employer, regardless of how the public regards their products or services.

<comment><USER10> It's chronological, although I did want to emphasize this issue in recruitment.

First impressions count.

It's hard to know what a company is really like without knowing some insiders. Searching on the Internet may find opinions pointing every which way. And then, you meet their recruitment team, and get your first -- and maybe last -- firsthand exposure to the internal workings of the company.

Hiring the right staff is obviously very important. So any issues with the hiring process that cannot be fixed is deeply worrying. Does the company not value hiring? Why can't it be fixed? Who will my co-workers be? What else is broken? etc.

I regret that I didn't walk out during the misaligned interviews, to save everyone's time. I did eventually tell recruiters not to contact me anymore, but that seemed to make them more interested, and I was handed to a different team. (In the end, I picked Netflix anyway, and am very happy I did.)

Netflix recruiting was awesome, and I think other companies can do the same. Don't put up with recruiting problems -- help fix it. It may be your company's first and last impression.

<comment><USER11> Do Netflix's interviews have any trick questions (e.g. manhole covers) or coding questions that have nothing to do with the job (e.g. Write a function that can detect a cycle in a linked list)?

I would never interview at major tech' companies because from what I've read of their interview process, it is all about knowing random Computer Science trivia and studying a book of trick questions.

I like more traditional corporations/business who give you questions actually applicable to the job and your experience. Silicon Valley interviews are pretty insufferable, due to their pseudo-intellectual elitism.

Companies should take their interview, and then give it to what they consider their most successful employees. If the employees wouldn't be "hired" then the interview process is completely broken.

<comment><USER12> Can I ask for your thoughts on the cycle in a linked list question?

I asked someone that today, and it didn't go very well. I gave him the hint to start with writing code to print out all of the children of a node, then when that stack overflowed, he was able to make progress.

Do you think there are senior generalists engineers who would be great who could struggle with that question? Its hard for me to put myself in those shoes but I believe it could be possible.

The goal of that question from my perspective is to watch them solve a problem that requires recursion. I've always found that people who do well on that stuff tend to get stuck less designing software in general.

I do worry that it cuts out people who would actually be good.

I'm very interested to hear thoughts on this from others.

<comment><USER13> The problem I see with your question is that you have a bias towards a solution.

"The goal of that question from my perspective is to watch them solve a problem that requires recursion"

I wouldn't use recursion for my solution. It takes up stack space for no reason. If I'm going to be allowed to use more space, I'd just loop through the list, add them to a set, and check if I've already seen it. No recursion, but extra space. Is it more space than another stack frame? Depends on the type of set I'm using. But at least I know I won't blow up the stack (maybe the heap :-)

Since you are asking for opinions from others, I'm going to assume you wouldn't be upset with me solving it this way. So am I less of an engineer because I didn't immediately go for recursion?

With that said, everyone has a baseline - answers they expect to see. But everyone has to keep an open mind.

My company is trying to come up with a corpus of questions and answers to those questions at the junior, normal, and senior level. I've voiced my opinion that it is a slippery slope. If you get someone who isn't a skilled interviewer, and the interviewee doesn't use one of the prescribed 3 answers, what happens to that candidate? Granted it is one data point in the loop, and not the only data point. But as I stated, it becomes easier to be "lazy" during the interview.

<comment><USER12> >So am I less of an engineer because I didn't immediately go >for recursion?

No, not at all. a stack is a stack, whether it's the call stack or one you maintain in code.

Its not the recursion that's important to me, it's holding a problem of moderate complexity in your head in order to be able to come up with a solution. Problems that lend themselves to recursion seem to present a bar that some engineers struggle with, and others find easier, in my anecdotal experience.

I know I said recursion is important all over the place, clearly my thinking is sloppy on this and needs to improve.

I have this idea that there is a class of problem, that lends itself to recursion, that separates the wheat from the chaff in some ways. maybe that's nonsense.

What I really want to test for is the ability to juggle abstractions while working through code problems. there's probably a better way to do it.

Thinking about this corpus of questions and answers, I guess the common idea of fixing broken code might have a bit more merit because it removes the risk of an interview focusing too much on judging the approach and turning it into a trivia contest (have you seen this before and do you remember how to do it).

<comment><USER14> You are trying to measure what?

I'm going to assume your answer is "on the job performance". If not, this is going to be a difficult conversation, and I'd ask why you are trying to measure for something you aren't going to be paying for.

The best predictor of on the job performance is ... on the job performance. Everyone but the most junior person has experience. Look at that.

All of these exam type questions usually rely on knowing a trick, or being recently well versed. I TA'd a graduate course in Algorithms. That's rather relevant, I would think, since you aren't offered that if you don't have ability. Yet you know the last time I've done, say, dynamic programming? It's been awhile. I know about it, I know when to decide whether to pull it out, but ask me to do it, in a high pressure interview (all interviews are high pressure), and well, I'll probably fail. I'm working on other things like Bayesian inference. Bet you'd fail doing that stuff, even though it is just simple multiplications and such, when you get down to the implementation. Unless, of course, you are working on that sort of stuff right now.

I find the situation in SV somewhat ridiculous. To go out and interview means a _lot_ of prep. Google recommends spending a month reviewing algorithms before applying. You know, I have an actual job, and I have open source side projects, and I have a family, and hobbies, and an old dog I want to spend all my time with. It is trivial to find out my skills by looking at what I have done and asking me questions about it. Have me give you a 1-2 hour tech talk, for example (I like public speaking, most don't so that is not a universal solution). Have me write some code with you, if you must. I work at a very high level, but I am not necessarily 'clever' at seeing the right trick in 10 seconds under pressure in an interview.

Also, how important is that sort of thing, really? For some jobs it is, undoubtedly. If you want me to write a load balancer for your cloud infrastructure, there are some algorithms I need to understand. Even then, not knowing something now is not evidence I can't do the job. I can learn - it's how I've done everything up to now. I can learn your thing too. More importantly (to my mind) - am I a hard worker? Can I mentor others? Can I lead a team? Can I put a schedule together, and recognize when that is appropriate and not appropriate? Can I make a budget? Can I talk to clients? Do I meet my deadlines? Do I solve problems - not implement the cards in this sprint - <USER2> see friction of some sort at work and engineer a solution? Do my peers like working with me? Do I get shit done? Is my code maintainable, readable, modular, commented? Can I write? Can I teach? Can I work with the CEO?

I've been to so many interviews where they don't even try to learn any of that latter stuff, where they show no interest in what I have done, where they don't try to figure out if I can do the actual job they are doing, but are deeply interested in if I can program a smart pointer, from scratch, to some arbitrary set of requirements. It is all just deeply puzzling to me.

<comment><USER12> I understand what you mean about ridiculous SV interview practices. And your point that all we should really be measuring is on the job performance is an important one.

All I'm really going for is to ask someone to write some code live, on their laptop with their tools, so I can watch how they debug, how they think through things, etc. I want the problem to be hard enough that the person has to model execution in their head and that it's challenging to do so.

I have found that there are people who can code decently well but get badly stuck when the complexity hits a certain level. I'm trying to not hire them in senior positions.

For example, I had a recent project where we were analyzing user data and producing a bunch of edges representing potential connections detected between users, as a way of sniffing out fraud rings.

One feature associated with this was a banning UI, allowing loss prevention types to navigate through the graph, select groups of users according to certain criteria, and generally look for patterns that are evidence of fraud rings manually, to supplement the automatically generated analysis.

There are a lot of front end people who will go into brainlock on this kind of thing. I need to make sure I have some people around who don't.

When making senior hires, I want people who can write code for this sort of thing without making a huge mess or just getting stuck for weeks.

Presenting a real sample from a problem like this needs way too much context though.

I'm going to keep thinking about how to precisely define the type of task that i'm really talking about here. My fuzzy definition about ability to model execution of X complexity in one's head is obviously weak and probably flat out wrong.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER15> You know the longer I work in the industry that more one thing has becomes apparent. There are afaik no "dream" company which also are of sufficient size, except maybe Pixar (My theory is that if you work with products aimed at children it keeps your soul from corrupting)

Google started as a Xanadu everyone wanted to job for, but more and more tales about bureaucracy and people jocking for power keeps coming into light.

Apple has for long time seemed to be a very demanding employer where you sign away your life to the company the day you start working.

Microsoft was the original power employer but for a long time seems to have been paralyzed by department infighting and middle management.

Valve long claimed to have a unique and awesome culture but other accords has described it as being dysfunctional an ineffective.

I'm not sure whether Facebook is good or bad or has corrupted at this point.

Anyways, the point seem to be that the bigger the company the more business people and management who will corrupt the company. The more employees the more rules and bureaucracy is needed to enforce them.

It certainly is possible to avoid this but it seems the bigger the company the faster the entropy slide into oblivion and the more energy it takes to counteract it... and not many do. The "Bozo explosion" as Jobs described also was very apt.

</comment><comment><USER16> Is having a "high performance culture" a subtle way of saying they fire people very quickly for not producing enough results?

<comment><USER17> Yes. It is one of the few companies I've worked at where I saw substandard engineers get fired for being substandard. At most companies, they just shuffle substandard engineers around into a role where they won't cause too much damage.

<comment><USER18> Essentially it's a culture of elitism. Reminds me of Ivy League. It can work, but it's hard to scale and in my experience it's very hard to avoid a monoculture.

How diverse is the population of engineers at Netflix compared to other public tech companies at a similar stage?

A high-performing culture that emphasizes mentorship is better IMO.

<comment><USER19> It drives off a reasonable number of high-performing people as well, though obviously not all. One of the problems systems like stack ranking have encountered is that some proportion of people who are _really good_ and not the intended target of the system end up very stressed out by it. Varying reasons: some people underestimate their own skills, some are worried about the system's false-positive rate, some are stressed out by worries about coworkers being fired even if not worried about their own job, etc.

</comment></comment></comment></comment><comment><USER20> I was reading through the culture deck and I love The Values. I even like the idea of regularly letting people go who are not contributing to the success of the company.

However, there were a few points that are a little disconnected from reality, or perhaps they are not being entirely honest about the employee / employer relationship.

When I'm working for somebody I give them everything, my heart and soul. My passion. My success is the companies success.

But I think it's honest to be clear that I am giving up _time_ with my family or _time_ working on my own projects to bring home a salary. There is a big difference between my heart and soul for 20 hours a week, or 40 hours a week, or 60 hours a week. Hours do matter. Hours are my side of the bargain, and in return for hours I get paid cash.

I think its a form of dishonesty to gloss over this and wave your hands around and say hours don't matter, just come in when you want and do your best and if you perform well you won't be fired. When I hear this I think the employer doesn't expect you to have anything else in your life other than your job, and that what they really want is _all_ your hours in exchange for your salary.

I don't think that's necessarily bad, just say so and be upfront about it.

Having no holiday policy also artificially creates a grey area, or a point of conflict between an employee or employer. If I were a cynical old bastard I would suggest that the no holiday policy is actually so that holidays don't accrue from year to year. In my experience young engineers don't really take holidays and if you don't force them out of the office they end up with months and months of leave saved up.

<comment><USER21> Check out "10\. What happens to my earned and accrued but unused vacation if I am discharged or quit my job?" at [http://www.dir.ca.gov/dlse/faq_vacation.htm](http://www.dir.ca.gov/dlse/faq_vacation.htm)

</comment></comment><comment><USER22> Just as a single data counterpoint, my recruiting experience with Netflix was below par. It may have been the way that I was approached (from a friend who was also an engineer) . However, the 'process' took over 3 months to get nowhere. After many re-schedulings and me having to restart the process myself, I just gave up. Never heard from them after I had given up, either.

<comment><USER23> Curious to hear what team you were applying for?

</comment></comment><comment><USER24> "hire, reward, and tolerate only fully formed adults"

This. If I had one advice for every company out there, its to try and do this. Being adult doesn't have to do with your age. People who are responsible, curios and always willing to learn and work out differences... these are the kind of people that you really want.

Admittedly that's hard to do. Perhaps that's why many people like to hire within their network.

<comment><USER25> A lot of people make excuses based on generations, but it's more about what management is willing to tolerate.

</comment></comment><comment><USER26> I've been at NFLX for 7 months now. I agree with much of what Brendan has discussed here in terms of culture. If you are confident in your abilities it really is a great place to be and you really do get to work with some of the brightest minds in the valley.

The whole firing average performers thing is, in my opinion, really a means of making sure that only those applicants who feel strongly that they have something to bring to the table should apply. This is not where you go for job security, it is where you go to work on something that excites you. That being said, it is _extremely_ rare to see someone let go who did not have some sort of fair warning or multiple indications that their work was somehow below par. I believe the multiple claims on glass door are remnant of the culture when this company was under serious duress in 2012/2013.

Of course, as with any organization, mileage may vary. One of the negative aspects of this culture is that as you get some very smart, very confident, very opinionated minds into a room - you are of course going to get into some head butting. Sometimes the overarching business strategy may change before a team can adapt to that change, and then persons may become defensible about their territory. While Netflix as an organism does a great job of eliminating this threat, it does take some time to formally fix the mojo within a deprecated organization / way of doing things.

</comment><comment><USER27> Most of this jives with what I have heard from two Netflix engineers, except for the work/life balance. Both folks that I talked to said that Netflix was very much a place where they tried to work you as hard as possible until you burned out, but that this was balanced by the exceptional compensation. I wonder if the culture has changed or if only certain roles are like that?

<comment><USER28> Netflix has definitely afforded me the most work/life balance I've ever had. If you are still here at 6pm, it's pretty much empty.

<comment><USER29> You HN bio says

 _> Now I hang out and enjoy technology, advise startups and some other stuff (including working at Netflix as the Site Reliability Lead)_

Which gives me the impression you work part time (or at least reduced hours) at Netflix. If that's the case, it may not be a good work/life comparison to other experiences you've had.

<comment><USER28> Nope, definitely full time. :) The rest of that is extracurricular.

</comment></comment></comment></comment><comment><USER30> Netflix sounds like a pretty clued on place in terms of hiring and culture. Which considering their size is no small feat. I don't like their clever wording around what they call a "high performance culture" which basically means that if you don't meet the level they expect, you get fired. Which is fine, but they should be a little more honest about the fact without burying it behind creative HR speak.

I would love to know more about their hiring process though. You mentioned that you didn't have to answer questions unrelated to your job (something I personally experienced during a job interview on a bad scale recently). Do they make you solve puzzles and other pointless indicators that some companies use to determine if a developer is any good or not? More specifically maybe a front-end focused role, not a back-end one.

Would love to know more about the process (as much as you can without getting into trouble).

<comment><USER31> I must just be an outlier on this, but I hate the idea of only getting interview questions that pigeonhole me into some narrow role, because it suggests that the job will be similarly pigeonholed, which I think is awful. I much prefer lines of questioning that attempt to suss out how well I can participate on a team, learn and adapt, and think creatively, because they suggest that they hope for me to be doing those things a lot, which is great.

<comment><USER30> Let me elaborate. Recently I went for a job that was being advertised as a front-end developer position. The recruiter who briefed me on the position also informed me that it was a front-end only role and that there would be a test on various front-end things; HTML, CSS and Javascript for the most part.

As it turned out, the interviewer had plans to test me on a few front-end related things, but then proceeded to ask me questions about Java, databases, server administration and complex Javascript puzzles. Keep in mind this was a position for a front-end developer, their job listing didn't mention Java, databases or server administration. Looking at their current site, they are abusing jQuery pretty badly, aren't minifying their CSS/JS or tonnes of other things, so it felt weird I was being asked super complicated and mostly irrelevant questions when their site seemed so poorly developed.

I think it is important you not only get quizzed on things relating to your job, but also other things not directly relating to your job (but still important and within reason). I showed up for a particular job as a front-end developer and was asked questions that you would ask a DBA, Java developer and front-end developer. It was not the role being advertised.

This is a mistake that I discovered seems to happen at quite a fair bit. The hiring process is definitely broken at a lot of companies.

<comment><USER31> I'm with you, and it sucks and is very nerve-wracking to have the wrong expectations going into an interview. Having said that, my reaction to that would have been more like "oh good, I'm glad they're also interested in what I know about a bunch of other stuff, I was afraid they just wanted me to be the HTML, CSS, and JS guy". Specialization is a good thing, but I prefer jobs where I'm hired because they think I'll be generally useful to the company, perhaps on things they haven't even foreseen working on yet, rather than for a really narrow role.

A farther flung interview suggests an interest in hiring a person rather than a set of skills.

<comment><USER30> I admire your optimism. Perhaps I have been in the industry for too long, but these days I much prefer being a specialist in a particular niche as opposed to be known as the guy in the office who gets emailed when the printer breaks, a server goes down, a Wordpress site needs to be built or someone has a question about why their email is broken.

I have been in that situation a few times in my career, when I worked at a digital agency especially. My job varied from Javascript, CSS and HTML, to developing HTML newsletters, building Wordpress websites, setting up servers/databases and tonnes of other things. At the time it was an invaluable learning experience, but also meant I worked long hours because my list of responsibilities was longer, friendships suffered because I worked a lot of weekends/late nights. As a result of that job, I didn't feel like it made me an expert in one particular thing. I was good at many things, but not truly great at front or back-end development. I felt like I had to learn outside of work hours to get good enough to specialise in my chosen field (my day-to-day job was obviously also a factor).

If I went for a job advertised as one thing, but then discovered that they expect you to be good at a lot of other things it would make me think twice (at least now I do). When I first started out, I was willing to do anything because I was young, naive and excited I had a job doing what I wanted to do in life.

My initial thoughts would be, "Please, not again. I don't want the responsibility of wearing multiple hats. I've worked hard to get to the point where I want to specialise in a chosen field", followed by, "This company is trying to get a combination stir-fry developer so they can cheap out and not have to hire a separate database administrator or back-end developer."

If you want a developer who knows a lot of things and is expected to work with a tonne of different languages, deploy a server and make coffee: there is nothing wrong with that, just be upfront and honest about it, so people like myself don't waste your time and have their time wasted. Don't lure candidates in with a misleading job description only for them to discover the job is actually more than you initially led on.

<comment><USER31> Thanks for the great response! You're right, I would definitely be suspicious of people marketing one thing and delivering another, so to speak. I haven't had the experience of getting a software development job and finding myself fixing printers, so perhaps that's a danger I should learn from your kindly shared experience to be more wary of. I suppose our experiences and frustrations have simply developed differently!

</comment></comment></comment></comment></comment></comment><comment> brown9-2 _It 's not the kind of company where managers or departments hate each other, and use their roles to conduct political warfare.

It's not the kind of company where bad mistakes are frequently made, and no one is held accountable._

These are aspects of "culture" that are really easy to boast of but hard to actually prove that you have. Some more data on how Netflix avoids inter- personal conflict between those with power would be really interesting.

<comment><USER32> They say how they do it: Hire smart people that match with our philosophy. And that might be all you can do.

</comment></comment><comment><USER33> Just as a counter point - I had a different experience with these guys. Got approached by a hiring manager who set up the first screening call that went fairly well. Then got contacted by the Recruiter ...

Things went downhill fast after that point - the recruiter was very casual in her approach towards anything related to skills or compensation but very aggressive about how they value performance, what an honor it was to work at Netflix how lucky I am to be in the interview "pipeline"...

I had never met a bunch of folks so enamored by their own culture. I probably said something like "I have worked at quite a few places that have very good supportive cultures as well" towards the end.

The process ended after that call...thankfully.

[posting from a throwaway to avoid the fairly easy googling identification]

</comment><comment><USER34> Senior Software Engineer @ Netflix: $210,157/year/avg. Netflix seems to have some high salaries, even for the bay area.

[http://www.glassdoor.com/Salary/Netflix- Salaries-E11891.htm](http://www.glassdoor.com/Salary/Netflix- Salaries-E11891.htm)

</comment><comment><USER35> > It's not the kind of company where managers or departments hate each other, > and use their roles to conduct political warfare.

Political warfare isn't always obvious to a newcomer with several months on the job.

</comment><comment><USER36> I used to work at a place where studying organizations was important to the business itself, so we focused a lot on things like Netflix's culture slide deck. One of my favorite parts of that deck is how it points out that a company's culture is what happens every day, not what is painted on the wall in fancy letters. It made me reflect on the discrepancy between what my employer at the time said, and how they acted.

<comment><USER37> Ideology is what people do. What they say they do is their belief.

<comment><USER36> I agree! I wish I knew you in real life.

</comment></comment></comment><comment><USER38> I interviewed for a role on the website UI team in spring of 2013. I thought the interview process was one of the best I have experienced. My would-be manager initially reached out to me (not a recruiter) and we had a few nice phone conversations about what they were looking for. They flew me out for a two day interview. If they know it isn't a fit on the first day, they don't have you come back for the second.

I met with 3 developers, a hiring specialist and a development manager on the first day and they asked very domain-relevant questions within my area of expertise. No silly programmer brain teasers. I had plenty of time to ask questions of my own.

On day two I met with non-developers. Business, designers/UX, etc. I was able to get a very good idea of the people I would be working with and the types of problems I would be solving.

I ended up deciding to take another offer, but it was a very positive experience overall. I didn't encounter any jerks like some others have.

</comment><comment><USER39> brendangregg is one of The People in performance analysis. Netflix would be foolish to pass on him. So the experience is most likely not representative of the average hire. The description sounds like it's still the honeymoon phase. Or was Joyent THAT bad? (-;

<comment><USER40> Came here to say this. He's been the closest thing to a rockstar sysadmin for as long as I can remember and even before he taught the world how to use Dtrace.

</comment></comment><comment><USER41> I know this piece is mostly about what it's like to work at Netflix, but the more technical part leads to an obvious question: If FreeBSD is so great for performance analysis, and Netflix is already using it at scale, then why not also use it on the EC2 instances? Seems like they could gradually move toward FreeBSD-based instances. Or is Linux really that much better as an EC2 guest?

<comment><USER10> As jedberg said, we're heavily invested in Linux on the cloud, which means there's a large cost associated with the move (porting infrastructure software, tools, and testing).

But FreeBSD has been improving on EC2, such as PVHVM support. If the benefit was big enough, it might outweigh the cost. I'd like to do a little FreeBSD EC2 perf testing this year (as I would for any tech that might pay off)...

<comment><USER42> We've been talking about the same thing in engtools over the last few weeks... we should set up a meeting :)

</comment></comment></comment><comment><USER43> I wonder if he will still be in love with his job after another 12 months pass. :)

<comment><USER44> As with the other hires on my team I'm thrilled to have Brendan onboard. I would also hope that if he happens to leave Netflix due to issues with the culture he will share that experience as well, publicly.

</comment></comment><comment><USER45> Thank you to the people who are sharing their Netflix stories as well.

I'm curious about the time frame though. The author of the post noted that he started several months back, to anyone who is sharing their story here can you please also note the approximate time frame for when your story takes place?

I'm curious to see if the company has corrected the problems that some people have hit while maneuvering through the recruiting process.

</comment><comment><USER46> "It's not the kind of company where managers or departments hate each other, and use their roles to conduct political warfare." Laugh!

</comment><comment><USER47> I would like to know parts of the company that he doesn't like or would like to see changed. Can anyone chime in?

<comment><USER10> At companies where "stupid things happen, but can't be fixed", it's easy to make a list of things that people would like to see fixed, since they've been irritating everyone forever. Netflix isn't like that, and we have the freedom to fix stupid things anyway. So it's a hard question to answer. :-)

There have been technologies that I haven't liked, and I've had the freedom to work on them, change them, improve them, and have. I can list many of those, but it's not too different to what I've been putting in my blog during the past 10 months.

<comment><USER47> Thanks for the response. I was thinking certain technology might have been in the list of improvements. I'm glad to hear that you are free to work on them and improve them.

</comment></comment></comment><comment><USER48> Considering it's all built on well-known and tested (provided you follow the best practices) cloud services (AWS right?) I often wonder what they do all day. Netflix platform strikes me as something you invest heavily in at day 1 but then only need a boilerplate team of developers to keep it ticking over and responding to user feedback.

They love to bleat on about their Chaos Monkey this and Chaos Monkey that. But come on, they wrote a read-only cloud-hosted and distributed video streaming service that leans on standard cloud services and best practices for 90% of the hard parts. Chaos Monkey just smacks of writing a integration test for a third party component you don't own.

Frankly I wouldn't want a job at Netflix simply because the problem domain is not interesting enough. Read-only highly-resilient distributed systems are not particularly hard to create and test. It's only becomes an interesting problem when you need to do a comparable amount of write-ops at the same time as those read-ops.

</comment><comment><USER49> Does Netflix have a culture of giant powerpoint slides? This thing is massive....

<comment><USER28> Ha! No, not usually. That is by far the biggest powerpoint I've seen at Netflix in my 3+ years there.

</comment></comment><comment><USER43> One thing to remember is that one person's experience at a company can be vastly different than others. For example your job happiness can be either great or terrible depending on your manager.

</comment><comment><USER50> I really like the 9 values, i do seem to align. Except for the "analysis paralysis" bit. It perfectly describes two recent weeks.. so i put the coin- phrase on a sticky. :)

</comment><comment><USER51> I also interviewed with the talent woman, who gave me the baseball team analogy and that fact they love to fire people. A little off-putting for a candidate to hear, no?

</comment><comment><USER46> Riiiiiiight: "It's not the kind of company where managers or departments hate each other, and use their roles to conduct political warfare."

</comment><comment><USER52> As George Costanza said, "it's not a lie if you believe it".

</comment><comment><USER53> > We aren't winning by unsavory sales, legal, or marketing tactics.

Online distribution of content is pushing inexorably towards battles over hit exclusives. Some would consider that anti-consumer, and an unsavory tactic, though admittedly it doesn't fall cleanly in the sales, legal, or marketing arena. It's a little of all three.

I'm also worried about what's happening behind the scenes to push the service away from DVDs.

I used to have a video store around the corner that had a massive library of indie and foreign films. I have eclectic tastes in film, or at least don't just want the latest hits, so I rented there frequently. It's been driven out of business by online streaming. That was supposed to be ok, because, Chris Anderson, said, Netflix would stock even deeper content.

Unfortunately, Netflix doesn't have the time or inclination to fight the licensing battles required for streaming rights on anything approaching a deep DVD library. As negotiations over blockbusters and fights with Amazon over exclusives dominate the time of their lawyers, it's going to be even rarer to find gems from the long tail on the site.

Already we end up with Academy Award winners and nominees that are conspicuously absent. The 80 of 86 films on Spike Lee's "essential films" list that are unavailable. Giant holes in the catalog for major directors, like Hitchcock. Netflix has The Lady Vanishes and nothing else. That's one of over fifty films, many of which are classics, some of the best films of all time. (That one is fine but probably not his best or most noteworthy.)

To make it worse, Reed Hastings seems to hate physical discs, even though licensing for them is automatic, so he keeps trying to spin off or kill that service. So over the last year, the number of scratched discs I've received in the mail has increased, and most of the DVDs I request are on "very long wait," often dropping out of the collection entirely.

So now, even with their DVD service, pivotal noir films, like The Glass Key with Alan Ladd and Veronica Lake, or The Blue Lamp, which won the BAFTA for best British film in 1949, Netflix just doesn't know these exist. Yoji Yamada's "The Hidden Blade," one of the best samurai dramas of all time, just not there. There's basically nothing available by legendary Taiwanese wu xia director King Hu.

Sure, the Internet is the future, and shipping bits is phenomenally cheaper than shipping plastic. But there are different legal regimes here, and sometimes law trumps technology. The first sale doctrine allows DVD rentals without costly rights negotiations. So consumers get access to more content. Content owners argued for a few decades that rental stores were driving them out of business, it didn't happen.

Netflix isn't an archive, but it did knock a few of them out of business. It has a huge number of titles, but when you go through the list of really important films, it's 90% holes.

I understand they're chasing a dream to foster streaming of content. Along the way they've killed something that I don't think we can easily get back.

</comment><comment><USER54> Author mentions:

> Bad News syndrome

What is that precisely? (in context of tech companies)

</comment><comment><USER55> page isn't loading :\

<comment><USER56> Cache: [https://web.archive.org/web/20150120211415/http://www.brenda...](https://web.archive.org/web/20150120211415/http://www.brendangregg.com/blog/2015-01-20/working- at-netflix.html)

</comment></comment><comment><USER57> Netflix hired an in house P.R. Consultant.

</comment><comment><USER57> This can't be real.? I have family who worked at netflix.

Netflix must have brought their P.R. Consultant on full time for the last 3 months to write this post.

</comment><comment><USER58> Many of the benefits op describes come from having a company which is growing. As soon as Netflix starts floundering and questioning its future you will definitely see political warfare and all kinds of time burning endeavors.

This is basically an HR approved Netflix puff piece.

<comment><USER59> I understand why you would be skeptical, it seems like more rah-rah crap from a successful tech company. However, it is not a puff piece, it's completely accurate. Political "warfare" or other malicious actions are not tolerated at any level at Netflix. Netflix only looks for sharp people that are also a cultural fit. If you are smart and negative, you won't last long.

<comment><USER60> I don't think that counters what OP is saying. Netflix is publicly traded. Their CEO, who sets the cultural tone, only lasts as long as the shareholders allow him to last. If they start floundering for enough consecutive quarters, I guarantee you Reed will be gone and a PHB who will "maximize shareholder value" will replace him.

If the Mikes can be ousted from RIM, you can bet your rear that Hastings can be ousted from Netflix. And once "maximizing shareholder value" becomes the goal, "culture" becomes an afterthought.

<comment><USER61> Exactly. Because anything can happen, Netflix could be a terrible place to work in the future, and therefore it is definitely not a good place to work now.

<comment><USER60> That's not the point, and not what OP or I said. He said that the benefits Brendan describes are more a result of being a growing company than "being Netflix". He didn't say it wasn't a good place to work now, and he didn't say it would be a terrible place to work in the future. You did.

</comment></comment></comment></comment></comment><comment><USER62> In case anyone from Netflix is reading here. Why does Netflix make it so easy for my 2nd grader to watch shows like Orange is the new smut? The only way I know to prevent her having access is to set my user to "Teen". If mine is set to "Adult", all she needs to do is click my Netflix user button. If you think 2nd graders are not watching that show, that is bull. I have a friend from another country whose daughter was watching it and bragged about it to a substitute teacher.

<comment><USER63> It's called "Orange is the New Black" and you shouldn't expect a tech company to be a parent for you.</comment></comment>


A better way to sign-ins - <AUTHOR> http://seanmonstar.com/post/125352745992/whats-the-password#new

<comment><USER2> I like the idea of maybe switching Persona from callbacks to promises, but other than that I'm not sure this proposal is that much more practical than Persona...

The obvious issue I see is that there's no easy way to polyfill this with existing browser APIs, to my knowledge: Edge doesn't expose the signed in Microsoft Account to my knowledge, for one example and IE typically doesn't have a "globally acknowledged" Microsoft Account... You could bootstrap off the OAuth/OpenID Connect endpoints of the providers, but you end up with the same Persona issues of bootstrapping from email providers. At least it should be fewer providers (one per sniffed browser, presumably) but it's also potentially a larger headache because there are plenty of browsers without accounts, too. What about Opera? Lynx? What about Some New Awesome Browser? Do you use a fallback provider like Persona's login.persona.org? Doesn't that just reintroduce some of the same "workflow pain" we're trying to correct?

Also, Persona works well without being an explicitly W3C-endorsed standard (and would work better if it was, but not required for bootstrapping), where this proposal really would be best if you got it to be a W3C standard ASAP, because you are even more relying on it required as browser chrome (whereas, again, Persona is designed well as a polyfill).

I also don't think you can get away from the statefulness of Persona's navigator.id entirely, because you still presumably want the abilities to allow a user to: resume an existing session, log out, and/or switch accounts/identities.

At the moment, I'm still thinking the best solution is still more and better advocacy for Persona (and more email provider bridges, maybe), but I'm going to sleep on this.

<comment><USER2> Also, you can't entirely ignore (as an RP [relying party]) which account system your user came from, because a user quite possibly wants to use the same user account from multiple browsers and they'd all might use different account systems so you potentially wind up with the same "link an account" problem of the various OAuth/OpenID Connect worlds without the nicety of a global identifier that you can easily transport between browsers such as Persona's use of any identifying email address.

Maybe your web browser on desktop is Chrome and on mobile is Safari?

</comment></comment><comment><AUTHOR> I posted this earlier but forgot to account for the west coast time difference, I really believe Sean could get some great feedback from you all.</comment>


Best Free Offline GPS App for Android from HERE - <AUTHOR> http://here.com/beta/android/?lang=en-US <comment><USER2> Recent previous discussion:

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

</comment><comment><USER3> It looks like a really cool app, and it's something I've wanted from Google Maps for a while, that Google has danced around without delivering a real solution to "offline maps."

Is there a cost associated with publishing on the android Play Store? I am a little worried about installing this app which wants me to bypass security warnings and install out-of-band an APK download from their site. Not sure if that's a reasonable fear, but I think I could at least count on seeing it flagged and removed from the app store if it was malware. No such guarantees downloading directly from the site. Has anyone already tried out this app?

<comment><USER4> Even if there was a cost ( I don't there there is for free apps ), it would be completely obliterated by the cost of contracting Mark Monitor as their domain registrar!

Nokia is behind HERE, perhaps they just don't want to support or endorse Google in any form. Or perhaps they're aiming at the Chinese and off-brand markets that by and large don't have access to Google Play.

<comment><USER5> But why not both? You can publish on Google Play and have an .apk listed for download on your website as well.

</comment></comment></comment><comment><USER6> Here is such a bad brand name, especially for foreigners, which makes it that much more surprising that a company like Nokia, from Finland, would choose a name like that. I guess they were led by an American at the time. But I would change it, even now, to something better. I think it would be worth it. Make it more of an International name.

</comment><comment><USER7> When I read "offline GPS" I assumed accelerometer/gyro/compass positioning, now that would have been cool. Some point and shoot cameras have this for tracking position when GPS/GLONASS signal is unavailable.

<comment><USER8> They do? Everything I've read about this kind of thing says that it's woefully inaccurate. Anyone know of anything to suggest otherwise?

<comment><USER7> Just using accelerometer, as some point and shoots do, is pretty inaccurate but still somewhat usable. Using all the sensosrs on a modern phone (including signal strength from known wifi/tower beacons) would yield much better results.

My point is more in the spirit of: I got excited because there's little or no such apps on playstore, offline maps aren't anything new.

</comment></comment></comment><comment><USER9> I had HERE for my Lumia 920. It was phenomenal, excellent UI.

</comment><comment><USER10> what is wrong with OsmAnd? Have been using it for many years already.

[http://osmand.net/](http://osmand.net/)

</comment><comment><USER11> Is this post an ad? Because if so, it's like the most obvious one I've ever seen on HN.

<comment><AUTHOR> From a user of the app.

<comment><USER12> Color me skeptical, since your karma is the same as the upvotes on the story.

Also, the same link was posted 4 days ago: [https://news.ycombinator.com/item?id=8580091](https://news.ycombinator.com/item?id=8580091)

<comment><AUTHOR> This is the 2nd post I put on HN. You can check my first one.

<comment><USER12> My apologies! Reduces the probability of astroturfing :).

</comment></comment></comment></comment></comment><comment><USER13> the best map ever .... this is what i was looking for longest time ....used it on nokia ...they user vector formatting map technology which is just awesome ... wondering why google or others are not using it(?)</comment>


blog.pmarca.com: I think I can, I think I can - <AUTHOR> http://blog.pmarca.com/2007/09/i-think-i-can-i.html <comment><USER2> Who thinks they won't do a good job at doing a startup, but does it anyways? And thus, succeeds?

Healthy self-doubt is one thing, but are you supposed to be riding the line between self-doubt and giving up? (if so, I guess I'm on the right track)

</comment><comment><USER3> This article really hits the nail on the head with why I think there's a Web 2.0 bubble. People are not starting firms because of they think they can bring something both unique and compelling to a particular area, but because they want to have a start-up. Oh, and get filthy rich too. The investors are as much to blame by throwing cash at them. Facebook. 10 billion. My ass.

I love having my own company, but I also know what a roller coaster ride it is and that if you're not in it for the right reason, you're just going to come away with trauma and bruises.

</comment><comment><USER4> So the moral is, lose your confidence and think of yourself as a no-good loser. Then the billions will start flowing in.

<comment><USER5> I'm a no-good loser! How come I'm not rich yet? ;-)

</comment></comment><comment><USER5> An earlier draft of the paper cited, full text available for free:

[http://www.diw.de/deutsch/produkte/publikationen/diskussions...](http://www.diw.de/deutsch/produkte/publikationen/diskussionspapiere/docs/papers/dp501.pdf)

</comment><comment><USER6> This is really interesting. PG seems to have recognized this for some time, though - you almost have to coax the entrepreneurs out of the engineering school. The best ones don't start out full of confidence.</comment>


Incident Report: Inadvertent Private Repository Disclosure - <AUTHOR> https://github.com/blog/2273-incident-report-inadvertent-private-repository-disclosure <comment><USER2> We received an email from Github yesterday informing us that one of our repositories had been accessed by a third party due to this issue. While it's not a fun notification to receive, it definitely made our general security paranoia feel justified – we're lucky that from the get-go we've held best practices around keeping secrets out of the codebase. Obviously we still dedicated time as a team to prune through our repository history with a fine- toothed comb for anything that could potentially be a vulnerability, as we take this very seriously.

One of our engineers came up with a useful script to grab all unique lines from the history of the repository and sort them according to entropy. This helps to lift any access keys or passwords which may have been committed at any point to the top.

I think this is a great example to illustrate the tough edges of security to less experienced engineers. Github will most likely never let something like this happen to you, but on the off-chance that they do it's great to be prepared. Additionally, the response from Github was very well received. No excuses, just a thorough explanation of what happened.

I also can't help but mention that we're hiring, if you'd like to work at an organization that values security and data privacy very highly. :) usebutton.com/join-us

<comment><USER3> I'm curious, how did they calculate entropy? My first thought was to do something with Huffman encoding.

<comment><USER4> I wrote the script in question and actually used a simple shannon entropy value. ([http://codereview.stackexchange.com/questions/868/calculatin...](http://codereview.stackexchange.com/questions/868/calculating- entropy-of-a-string/909#909)). It worked well enough help rule out several problem spaces.

<comment><USER5> Would you mind posting the script? I'd love to run it against our codebase and see what it comes up with.

It might be a fun thing to open source as part of a "I've inherited a project, what now?" toolkit that helps you decide what to fix.

<comment><USER4> Sure. It's a simple tool but the concept could be augmented toward something like the scenario you described.

[https://gist.github.com/jasonmoo/06691c8fea09b62aa35235fc93e...](https://gist.github.com/jasonmoo/06691c8fea09b62aa35235fc93ee31b6)

</comment></comment></comment></comment></comment><comment><USER6> Github takes security seriously, this disclosure post is a proof of that.

</comment><comment><USER7> This honest report is a good example of transparency.

</comment><comment><USER8> One of the most striking things about this report is the scale that GitHub has now reached: the whole incident apparently lasted only 10 minutes, but during that time 17 _million_ requests were sent to their git proxy.

It's obviously unfortunate in this case, since even a relatively small and quickly fixed bug affecting a tiny proportion of requests still had serious consequences.

However, it's a remarkable achievement (if also a little terrifying for the software development industry from a single-point-of-failure perspective).

</comment><comment><USER9> I approve of the handling, but this just underscores why you want self-hosted instances.

<comment><USER10> Does it? Except for very sophisticated organizations, I doubt it.

You don't hear about intrusions into self-hosted source repositories. Not because there are fewer, but because they likely don't have the security infrastructure in place to know that they ever happened.

<comment><USER11> Also, there is very little incentive for them to advertise that they've been compromised. Whereas, Github has a duty to disclose that they've been compromised to their clients.

</comment></comment></comment><comment><USER12> Leaking private repositories is one thing, but if you have a private build server that pulls and runs scripts, you could be in for a bad time even if you ended up pulling a random public repository, if the build script is malicious... hmmm...

</comment><comment><USER13> In retrospect of course it's always easy to criticise, but still, the diff is really cringeworthy.

The deleted code is very specific-looking. Nobody writes that just casually or out of ignorance. Also it is what was at use in production.

It's very naive to just go and replace that with nice-looking, shorter code.

Key lessons:

\- Understand what you are deleting

\- Treat production code as sacred

\- Add reasonably extensive comments for delicate code (as the original one). Git commit messages aren't enough.

\- Try out infrastructure changes in production-like staging servers. I really doubt they properly did, as they say the "majority" of 17M requests failed.

</comment><comment><USER14> How did they become aware of the bug so quickly (<10 minutes)? Unless I'm missing something from the report, it doesn't say.

<comment><USER15> The bug trigger a flood of errors.

> The impact of this bug for most queries was a malformed response, which > errored and caused a near immediate rollback.

</comment></comment><comment><USER16> Interesting that they don't mention expanding the information being logged to make the multiple joins they had to do unnecessary or more deterministic.

</comment><comment><USER17> Next step: setup development system ?!

Surely they do some end-to-end testing?

<comment><USER18> They state in the post that of 17 million requests to their git-proxy server, only 230 of those requests could be identified as successful responses to incorrect data/repos, at a percent of 0.0013%.

I don't know of anyone that would recommend creating tests, even integration tests, that hammers a service to check to see if something like one hundredths of one percent of requests returns invalid data. If anything, the fact that a script is hammering a service that probably (in a Dev or QA environment) has much less data in it's database and file stores, and much less protection (like load balancing and caching) than it would in production would generate more false positives than it would generate in substantial data disclosure regression defects.

<comment><USER19> But the overwhelming majority of requests failed with errors. The happy-path was not tested either.

</comment></comment></comment><comment><USER20> Probs to github for the disclosure. And congratulations to gitlab for probably getting a nice boost in on premise support contracts:)

<comment><USER21> Github Enterprise is on-premise too.

I don't know that this would make you necessarily want to make both the change to self-hosting, and the change of platform.

<comment><USER22> Because there is one critical characteristic in a private repository, and they failed to execute. Moving on-prem doesn't fix that failure, it just mitigates fallout.

<comment><USER23> It seems highly unlikely this commit made it into a GitHub Enterprise release.

<comment><USER22> We'll never know, which is a problem unto itself.

</comment></comment></comment></comment></comment><comment><USER24> The only private repository is one you created on your own computer and didn't push to github.</comment>


The process behind our startup's logo design - draftswork shown   - <AUTHOR> http://blog.groovehq.com/post/10202618882/the-process-behind-our-logo-design-and-communication <comment><USER3> I don't think it's that great of a logo.

At the very least it is too detailed to scale well, the shell will be completely lost at smaller sizes turning into a blob of flesh color. The use of desaturated pastels is not a typical choice for a technical project. It is more fit for something soft, girly, perhaps creative. Also there is a disconnect between the name and the symbol. You tell me "Groove", I will remember GrooveShark. You show me the logo and I will have hard time recalling the name it goes with.

And while it is very satisfying to _publish_ the details of design process, it is not _that_ interesting to look at it. Once you saw one or two, you've seen them all... and every self-respecting logo designer now has a couple in a portfolio, so there is plenty of really good sketch logs to choose from.

<comment><USER4> The bigger question to me was: What does Groove do?

Branding should be about what you want to communicate about the company rather than the decoration process of picking out a color scheme. If you want to understand why this branding isn't working read the mission statement:

"Groove is a hosted customer support and engagement platform that helps companies manage customer support across all types of channels - email, web, livechat, mobile, Twitter and more."

That description sounds slightly vague and long at the same time. What's funny to me is that while the branding is their website does a great job of explaining what they do. So in a sense the logo is holding them back.

By the way if anyone wants to see brilliant logos that were done for the tech industry check out the work of Paul Rand: <http://www.paul- rand.com/site/identity/>

<comment><USER5> Logo use on internet at scale is infrequent and colors trump visual metaphor. These colors are distinctive as is the seemingly abstract arrangement of them which is really what counts. The Apple logo has been assailed from day one and contrary to michaelpinto's assertion, a logo never held back anybody....unless you feel the Yahoo logo "Y!" was a self inflicted decisive blow....and how do you construct "slightly vague" and "great job" into whole cloth. Help me here with how any of this matters, if the logo (which will more often then not be a chip on a nav bar) isn't evocative but is none-the-less a distinctive abstract color assemblage?

</comment></comment></comment><comment><USER6> Am I the only one that thinks of the Microsoft collaboration software when they hear "Groove"? That just sounds like a lawsuit waiting to happen.

Plus, I didn't see the connection between a conch shell and "groove". I actually couldn't tell it was a shell with the colored lines wrapping it - <USER2> couldn't tell what it was.

<comment><USER7> I am also confused by this. The name of the startup actually appears to be "Groove Networks LLC".

Obviously, there are a lot of Famous Ray's Pizzas and such, but "Groove Networks" seems so oddly specific. Does this startup have some relationship with the original Groove Networks of the early 2000s?

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

</comment></comment><comment><USER8> I don't like this logo at all. It's too complicated and feels contrived.

The concept of just the shell was pretty cool, but the three colors doesn't add anything. I don't care what ideation process says, if it's not adding clarity or defining the brand then I'd say it's just complicating things.

That said, thanks for sharing.

</comment><comment><USER9> Dreadful logo, sorry.

Like many others I thought it was an abstract illustration of a heart at first glance, and figured this was a medical devices company or something.. further inspection revealed everything from a boob to part of a toilet as other possibilities.

You almost certainly had _too much_ input into the logo, your process seems to have involved a bunch of bike-shedding gone awry.

</comment><comment><USER10> I couldn't tell what is it without inspecting it closely. No point of focus. Too many colors. Fine details in close proximity. etc. etc.

<comment><USER11> It's also difficult to use in B&W, most really good logos can degrade well to a black and white image (nice for letterhead) also I'm still shaking my head on what the shell has to do with "Groove".

<comment><USER12> Ditto. Great logos are simple, and get even simpler over time. This one is over-engineered and, to me, completely lacking in meaning.

The word Groove is strong enough to stand on its own, with maybe a slight embellishment, perhaps some negative space. One of my favorites that may serve as some inspiration: [https://community.jivesoftware.com/community/jivetalks/blog/...](https://community.jivesoftware.com/community/jivetalks/blog/2008/02/18/jive- gets-a-new-logo)

</comment></comment></comment><comment><USER7> I'm really curious what Alex's reaction is to the discussion here. He posted a link to the blog post, so he must be reading it, no?

The comments so far seem pretty negative, and not really for unimportant reasons.

The two main issues I see are: (1) too complicated as well as lacking contrast, so it will not print well on t-shirts, letterhead, and business cards and (2) the logo does not look like a shell without seeing the process that produced it (and in fact looks more like a pig, breast, or heart, all of which are kind of weird).

Were there business or other reasons for ignoring these aspects? Would it be possible to change the logo at this stage if this feedback were convincing?

<comment><USER13> That guy Alex is probably pumped to see so many trolls logging hours on his thread :) - point "(1)" is simply not true. Tshirts, letterhead, and business cards included. Friend put me onto this thread simply because the trolling was so horrendous, and you guys did not disappoint. Stay strong, troll on.

</comment></comment><comment><USER14> I had my laptop's screen at a slightly sub-optimal angle, and the shadow on the shell completely disappeared. I could not tell that it was supposed to be anything; it read completely as "three colorful abstract shapes and a larger honky-colored abstract shape". What are those three curvy things supposed to _be_? I dunno, but they completely ruin any hope of the shell reading as a shell at a quick glance; the silhouette is a completely confusing lump.

I am afraid to say that, in my opinion as a professional artist, this logo needs reworking, rethinking, and possibly even complete replacement.

</comment><comment><USER15> There's a lot of negativity here, and I'm not in love with the logo (although I like the colors a lot). I just want to thank you for being open enough to draw attention to it and share the process. Visual communication is a skill that gets stronger as you use it, I appreciate posts like these.

</comment><comment><USER16> I honestly didn't know it was a shell, and I've seen it 100+ times. I suppose it makes sense with the beach thing, but I didn't put it together.

But that being said, this specific logo has 0% influence on my thoughts of your company!

</comment><comment><USER17> Maybe it's just my dirty mind but it looks like a boob.

<comment><USER18> Definitely a boob. Complete with nipple.

<comment><USER19> The flesh color doesn't help either.

</comment></comment></comment><comment><USER20> That thing looks like a dissected heart with gangrened arteries... no offense.

</comment><comment><USER21> Good choice on positioning the shell to the right-top -- it indicates growth and positivity.

Not sure if flatness was intended but: <http://imgur.com/fAaMl>

I recommend clarifying deep propositions:

"Solid as a shell?" "RGB streams floating inside" -- is this a logo for a painting program?

I recommend using reference photos of a shell, or finding a real shell and studying it.

</comment><comment><USER22> Unfortunately, I have to agree with the negative comments. Even if the whole process denotes great consistency and attention to details, it really sounds like a huge amount of energy spent on something that I may consider relevant, but not to that extent.

Also, having seen the logo multiple times, I actually never got it was a shell. Anyway, thanks for sharing.

</comment><comment><USER23> Double post (a few hours ago?): <http://news.ycombinator.com/item?id=2996767>

</comment><comment><USER24> Why is everyone so negative?! I really like all the designs and seeing your thought process of how you develop an idea.

My favorite is the combination of the type and simple shell design (the one without the pink/blue/green colorway).

It could be cool to introduce color into that design with some sort of ribbon that flows through the type? Maybe even using the same color palette? ...just an idea.

keep up the good work!

</comment><comment><USER25> Honest feedback: the first thing I thought when I saw the logo was "a toilet?"

This before reading that someone else saw that too.

But your product is _very_ compelling. The screenshots look good: less overwrought than your logo and, to be honest, your homepage.

</comment><comment><USER26> There are some negative comments about the logo (and I agree with some of the posters), so on a more positve note: it's just a logo, a lot of the other things you've done are pure awesome!

</comment><comment><USER27> I'm a big fan of the site, product and logo and respect the willingness to share, and transparency of the design process

</comment><comment><USER13> To the non-artistic eye I think it's a pretty cool logo

</comment><comment><USER28> Nice artwork but forgettable.

</comment><comment><USER29> I actually like it. I mean, it is being shown at 70 pixels wide in that post and it looks fine.

</comment><comment><USER30> schweeeettttttttttttt........

-your local sneaker Junkies ambassador....maher junkies

</comment><comment><USER31> awesome- looks really accessible and user friendly</comment>


How Is Python 2 Supported in Red Hat Enterprise Linux After 2020? - <AUTHOR> https://access.redhat.com/solutions/4455511 <comment><USER2> I was hoping this would be a two word website that just said "It's not" in <h1>

</comment><comment><USER3> I really wish these big bulky enterprise and commercial solutions wouldn't prop up this technical debt. Things like ArcGIS an other $10k+ software packages have built in Python2 interpreters. If all of them decide to keep "supporting" py2, a ton of security updates are going to fall through the cracks or become non-uniform across tools.

They've literally had years and years to upgrade their tooling. But considering some of this enterprise crap still has support for VBA (Visual Basic for Applications) we'll probably see Python2 in the wild well into 2030. Makes you wonder how much COBOL is still out there.

<comment><USER4> As an alternative viewpoint, it's bizarre that we _can 't_ support these things. Mathematics textbooks from 400 years ago are relatively intelligible, and those from 100 years ago are easily readable. But with computer science, a domain which consists entirely of problems we ourselves invented, we've wedged ourselves into a situation where we are apparently _so bad_ at computer language design (let alone systems engineering/systems architecture) that something surviving for a decade is frankly notable.

<comment><USER5> Programming languages are more like spoken languages than mathematical languages. They evolve fast. Programming languages also are versioned, something that's nonexistent and blurry in spoken languages.

There's no support for Latin in almost any software today and books in Latin can be read by a extremely small minority. Even a English speaker from the 1700s would have trouble with today's English.

</comment></comment></comment><comment><USER6> For a large deployment of our SaaS software last year, in order to connect to the raw data for their POS, we discovered they were on mainframes running UNIX. Not Linux, Unix. We had to go to a local library, in the old archived basement to find books that guided us on what the hell we were doing.

50 years from now, with new completely different languages being vogue, some poor engineer is going to have to find a book for Python2.

<comment><USER7> Fun story :)

On the plus side, the Python2 will probably not look that different from Python6 :)

<comment><USER6> I'm sure by then there'll be brainwave controlled programming and the idea of using a keyboard with defined syntaxes will be as silly as punching cards sound to us today haha

</comment></comment></comment><comment><USER8> I get that enterprise-y stuff is on a more LTS slow schedule, but:

Python 3 was released a DECADE ago - literally. If you've got mission critical stuff running on Python 2 and are panicking now then it's time re-evaluate your life choices.

<comment><USER9> In fairness to those developers (of which I was one): Python 3 was released a decade ago, and _support for Python 3 in commonly used libraries_ was released, depending on the library, some time between a decade ago and "not yet".

This has required a lot of engineering work to make libraries function with Python 2 and Python 3 (e.g. pandas, numpy, scipy), to make frameworks work properly on both (e.g. django), and to ensure that the libraries that everything relies on (e.g. mysqldb) get updated, forked, or replaced with rewritten alternatives.

Sure, I as a developer "should have" been writing Python 3 for the last ten years, but for most of those years it would have required rewriting large libraries that I, and other developers, rely on to be productive.

Unfortunately this has meant that instead of starting Python 3 projects over the last ten years, people have been starting Python 2 projects so that they could get their work done in those intervening years.

<comment><USER10> Even ignoring the lib issue, there were major performance regressions. Py3 didn't really become clearly better until at least 3.4.

<comment><USER11> That was 5 years ago.

I don't do a lot of Python, and have been exclusively using v3, but I thought you could make your Python 2 somewhat compatible with v3 by using libraries, etc.

How close can you come to a Python code base that runs in v2 and v3?

<comment><USER12> > How close can you come to a Python code base that runs in v2 and v3?

Using the `six` module, this is (nearly) trivial for 99% of code. If you're doing certain weird things, its more difficult but possible. (I say this having done py2-3 conversion or dual support for lots of vanilla code, as well as a significant amount of weird code: c/c++ extensions and code that uses advanced features like code object introspection and dynamic imports/rewriting/etc).

<comment><USER13> I have some libraries I maintain with `six` -- I find it like writing in a whole new dialect (neither 2 nor 3).

I moved to futurize for some libraries -- its like writing python 3 that will run on python 2.

I am looking forward to dropping python 2 support on libraries I maintain.

</comment></comment></comment></comment></comment></comment><comment><USER14> While you should move on to python3 at this point I still stand by the whole thing was a giant waste of time. 'Better' unicode support was not worth the mess. Everything else could have been done in python2.

<comment><USER15> I strongly disagree: decoding and recoding strings to-from UTF8 was a monumental waste of time IMO. Never has one language gave so much trouble for simple tasks like reading a database. Python3 just works seamlessly.

<comment><USER16> In Python 3 if you have bytes and write them out using the "csv" module, you get something like this:

        b'A',b'B'
        b'1',b'2'

That's not seamless, and I wouldn't say it helps non-English speakers either.

This bug impacts Pandas to_csv as well.

<comment><USER17> Sorry but I don't agree this is a bug. You need to decode your bytes to properly write a string. Otherwise you get the unexpected result you are showing because it has no way of knowing how your bytes are encoded.

</comment></comment></comment></comment><comment><USER18> Given what people pay RH for, this makes sense. Given why people like me no longer choose to run RH, this makes perfect sense, as a reason why we don't run RH: The money we pay RH to maintain support for old code can be better invested in converting old code to run on new platforms.

There is a class of client who needs what RH is selling and I am glad they sell it, and that people like my bank can invest in that, because longterm stability of fintech cores for a banking product is very important: People ran applications developed for LEO, in emulation under GEORGE and then subsequently re-emulated on later operating systems because ICL committed to that to meet customer needs. People emulated PDP-11 RSTS inside Vax/VMS for the same reason. People emulate OS360 inside RS6000 based machines..

TL;DR RH supporting Python2 makes perfect sense. If you don't use RH, then this doesn't have to matter to you.

<comment><USER19> Opposite position:

The money you pay supporting security and new/broken features of fast moving upstream targets could be mostly saved with a small portion paid to RH freeing you up to improve your product instead of supporting ever-changing/insecure upstreams.

I have experienced far too many emergencies and worried about relying on far too much insecure old code in environments without RH support.

With RH I could always trust that packages wouldn't disappear overnight, if I built something against RH it would actually still be there in 6m or 6y and that I could really trust that if a security hole was discovered I would be notified and it would be fixed in a way that wouldn't break my stack.

All of that is super valuable compared to moving fast and breaking things myself while dealing with upstreams that move fast and break things too.

In many _many_ circumstances, it is really expensive to stay on the bleeding edge of everything and does not add business value, other than pleasing and attracting magpie programmers.

<comment><USER20> I worked for a company which paid for RH licenses (they don't do it anymore).

Being conservative is nice, if it comes with stability, but during RHEL6, 6.4 was the first version that was actually stable.

As for breaking your stack, this actually is not that hard. All you have to do is not tie your application to the system.

Since we're talking about Python, if you use RedHat or CentOS, I highly recommend IUS repo[1] in there you can pick which version of Python you want to use (older if you want to ensure stability, newer if you need cutting edge), you also can install multiple versions side by side, and your application is no longer tied to the OS, that means switching underlying OS or upgrading to next major version (for example to RHEL8) is no longer that should affect your application.

[1] [https://ius.io](https://ius.io)

<comment><USER19> >As for breaking your stack, this actually is not that hard. All you have to do is not tie your application to the system.

My point is the opposite, I want to tie my application to a reliable system so I don't have to deal with something else (pip, gem, npm, mvn, etc.) because those things break, I can't rely on them being available, I can't rely on packages always being there, I can't rely on the security of what is out there.

I can rely on the system python and associated packages, I can trust that security issues will be patched, and I can trust that compatibility will be maintained. Doing that I would be stuck with an aged and aging upstream perhaps blocking adoption of new technologies, but it buys me stability and peace of mind. There are tradeoffs, for sure.

</comment></comment></comment></comment><comment><USER13> I've some good luck migrating a couple of things to `pypy`, specifically "Squeaky's portable Linux binaries." [0]

"How long will PyPy support Python2? -- Since RPython is built on top of Python2 and that is extremely unlikely to change, the Python2 version of PyPy will be around "forever", i.e. as long as PyPy itself is around." [1]

[0] [https://github.com/squeaky-pl/portable-pypy#portable-pypy- di...](https://github.com/squeaky-pl/portable-pypy#portable-pypy-distribution- for-linux)

[1] [http://doc.pypy.org/en/latest/faq.html#how-long-will-pypy- su...](http://doc.pypy.org/en/latest/faq.html#how-long-will-pypy-support- python2)

<comment><USER21> I mean, it's not like CPython 2 is going to disappear on January 1, either. You can keep using it.

What you lose is a) potential security fixes (you might not care, for your use case) and b) the ability to use other libraries that are Python 3 only, including security updates to libraries whose Python 2 versions are no longer maintained. Using PyPy (or any other Python 2 implementation) definitely doesn't get you b and arguably isn't much improvement on a.

</comment></comment><comment><USER22> Tellingly they go out of their way to say security fixes are always at their discretion and come from upstream. After explaining that a no feature updates is fine as upstream will be effectively dead. This ain't Python's problem Red Hat this has been slated for years</comment>


Spotify: context switching done right - <AUTHOR> https://cdbattaglia.com/words/spotify-context-switching-done-right <comment><AUTHOR> Hiya, folks! I'm starting this a series of how CTOs and product owners attempt to keep track of all different "contexts" surrounding the same data/product. Spotify is a great example with their supposed C++ master lib.</comment>