hacker news with inline top comments    .. more ..    15 Oct 2016 Best
home   ask   best   3 years ago   
Be Kind briangilham.com
2085 points by bgilham  1 day ago   407 comments top 92
endymi0n 1 day ago 8 replies      
When he returned to the air field, Bob Hoover walked over to the man who had nearly caused his death and, according to the California Fullerton News-Tribune, said:There isnt a man alive who hasnt made a mistake. But Im positive youll never make this mistake again. Thats why I want to make sure that youre the only one to refuel my plane tomorrow. I wont let anyone else on the field touch it.
gavman 1 day ago 4 replies      
This was so nice to read. I think back to my very first coding internship after my freshman year of college when I messed up big time. I made a bad mistake that ended up forcing my supervisor to put down everything he was working on for a full afternoon and do an emergency fix. I so vividly remember sitting down in his office, trying to just calm down and keep it together. He never got upset or annoyed (at least he never showed it), instead he listened to me explain what I had done, figured out what was wrong, showed me what my mistake was, fixed everything up, and calmly walked me through the entire process, turning it into a learning experience. At the end he asked me some questions to make sure I understood everything that happened and told me "everyone makes mistakes, don't sweat it, just make sure you learn from it" and that was that. I remember leaving his office that day thinking "if I ever make it to the point where I have my own interns, I'm going to do everything I can to support them and treat them as well as he treated me." A little kindness really does go a long way!
ninjakeyboard 18 hours ago 7 replies      
As software engineers:

As beginners, we're over-confident in our ability, even if we actually suck and make lots of mistakes: https://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect

The opposite seems to become true - experienced engineers (who have learned from their mistakes) seem to be extra paranoid. I've seen also older engineers that seem to be confident still, talk a bit game, but they just never learned. It seems paranoia is a great indicator of experience, and over-confidence/arrogance is an excellent indicator of a lack of learning. Not to say those are the rules, as there are certainly arrogant engineers that are excellent but I'd rather work with the softer one personally.

I know as I have grown I have become softer, not harder, as I realize my humanness.

crush_xc 1 day ago 5 replies      
This was literally the biggest issue for when I started at my first job. We had a team member who was terribly condescending and talked down to everyone but especially me. You could tell that he hated the fact that he was on a team with a junior developer and took every chance he had to made sure I knew I wasn't as good as him. It makes a terrifying environment to ask questions because who knows what kind of response you're going to get.
scraft 1 day ago 5 replies      
Nice little read. There is that little answer in the back of my head of:

"It is a good question why I caused this problem. It is weird to think there is a competent company that has been around for so many years, yet they have no procedures in place to stop this from happening. You would think that any changes that could cause downtime on a clients website would go through an automatic test suite and only after passing all tests would it be tested by human QA and finally made live. In this particular case I am the one who has made a mistake, and being a sensible person who is eager to constantly better myself, I will try and learn from this error, however I work alongside dozens of other people on my team who like me, have every chance of making a mistake at some point. It seems like a bad policy for us as a company to say that we should expect every person on the team to break a clients site and then rely on overtime from other people to fix it. So of course I will try and do better, but this is not fixing the root of the problem, the root of the problem is something that needs to be fixed at a much higher level. Have you, as my boss, not considered this problem already? What has the company learned from this? I would be happy to be part of the team that solves this problem by creating unit tests and creating policy to avoid this."

Of course I purposely make this slightly stand-off-ish, over the top, and written from a very specific perspective, to illustrate a point. But the reason I do this is I absolutely agree a single developer shouldn't feel bad about making a mistake (they should try not to, but these things happen), but the company should put measures in place to minimise the impact of mistakes. When the company fails to do this, the company has screwed up a lot more than the developer.

_joel 1 day ago 2 replies      
One way to avoid Friday deployment issues is to go to the pub. Obviously you need to spend all afternoon there and not be tempted to go back and deploy, otherwise issues may be compounded! It seems to be a common mitigation technique in some shops I've worked at ;)
mrits 1 day ago 4 replies      
I hope Kevin learned not to let a junior dev deploy to production on Friday.
auganov 1 day ago 2 replies      
The reverse takeaway is perhaps even more valuable. Most are not going to be as angry as you expect them to be. When you mess up don't hesitate to tell people, it's going to be okay.
throwaway7767 1 day ago 0 replies      
Most of my career I've been the guy people come to when they get stuck and need a second pair of eyes or just advice. I enjoy it, we all have to start somewhere. For the most part this has been considered a positive by my bosses, because they see the value this creates even if it's not technically my core job.

I did however once work at a company that was very metric-focused. Turns out that the metric they used for our team was closed tickets, and they felt that given my salary I didn't close enough of them. No understanding whatsoever that others on the team were able to close more tickets because of my help (let alone that the tickets that made their way to me tended to be the complicated ones that others couldn't solve). After the first talking to, I stopped helping out my teammembers (I explained why) - and jumped on the first opportunity to get out of there.

happyslobro 1 day ago 2 replies      
Mentoring is hard. It makes me question everything that I know, and worry about what this guy's code will look like in a year if I criticise this, or praise that. I wish there was some way we could all just work together, for real, in real time.

I miss construction. Back then, I could just tell someone "Hey! You! Don't fuck that up, I'm pouring concrete around it tomorrow!" And we would still be cool at lunch break.

euske 16 hours ago 2 replies      
This reminds me of a similar story about being nice. It has nothing to do with software development but I want to share this anyway.

I was in Seattle and I took a public bus. The fee was $1. It was my second day in the US and I didn't have a dollar bill in my wallet (nor a transit card). I was assuming that I can pay with a larger bill just like Japan. Big mistake. The driver yelled at me but nonetheless she let me ride for one time. Then the guy sitting next to me suddenly offered a dollar bill and said "take this, so that you can pay for it by yourself." I probably looked at his face with amazement. "Thank you very much, sir." The guy got off the bus in a few stops later and I never had a chance to say this, but I know it's my turn now. I want to thank the nameless person who slightly changed me. Kindness is contagious.

sideproject 1 day ago 2 replies      
I run a number of side project sites and I do much of my work late at night.

I have one simple rule for myself - which is to never deploy anything at night before I go to bed. I've made several critical mistakes which I deployed to production and then went to bed only to wake up and find out that users couldn't use my products.

Thesedays, I do all deployment in the morning - that way, even if there is a critical bug, I am awake to catch it and fix it quickly.

LukeB_UK 1 day ago 0 replies      
I wish my first development job was like this place. Instead there was a blame culture and I'd get told off when I made mistakes, eventually getting fired for not progressing quick enough.

It's now 4 years since I was fired from that job and I'm still in development, despite that incident nearly causing me to decide it wasn't for me.

I was extremely happy to read this post, it gives me hope. I try and take a similar approach when working with newer developers, or those that are inexperienced in areas.

makecheck 1 day ago 0 replies      
I have found that difficult people are a function of both themselves and the environment theyre in, and you cant necessarily say be kind without fixing the 2nd part.

The level of stress matters a lot. If a team is being run in a standard everyday crisis mode, they quickly reach the point where there is very little they can take. Every tiny mistake wears people down, reminding them of how much more there is to do, and turning them sour. Managers seem to panic and cut into their teams time even more by starting to have long, daily meetings to fix things.

If you want nice people, you have to set them up for success. Reward completing the whole chain, not just hacking away (e.g. for software, not just coding but also testing, documentation, and seeking peer review). Keep meetings to a minimum. No overtime. When short-cuts were taken to meet hard deadlines, open up your schedule and scribble in the exact window after the deadline where you will stop everything and clean up the mess that the short-cut created. Give your people the best equipment that money can buy. And so on.

heisenbit 4 hours ago 0 replies      
I think there are few professions where people screw up a little bit (sometimes literally) and it gets logged, measured and escalated so frequently than in SW.

Computers are unforgiving. Humans err. This really needs to be at the forefront when selecting personal - developers and managers. The answer can't be all forgiving. It can't be you are fired. And it probably should not be ad-hoc all the time. Company values matter if they are lived by.

jroseattle 23 hours ago 0 replies      
This is underrated for managers and leaders trying to develop young talent. The takeaways:

 - With a system outage, don't lose your cool. Rationality is what's needed at the time. - Elevating "perfection" at the expense of potential breakage will ensure nothing ever moves forward and your team doesn't grow.
Some might believe that a serious ass-chewing is needed in this scenario; that would be a decision that's simple, quick and stupid. An emotionally-charged ass-chewing is almost always a sign of weakness in the ass-chewer. The only thing anyone ever learned about a beating is how to avoid it in the future.

Instead, this manager leaves his engineer with thoughts about how to avoid that problem in the future. Always remember -- an outage is eventually fixed, but a damaged relationship continues forward.

mijustin 1 day ago 1 reply      
This statement wraps it up:

Great. It sounds like you get it. I know that you can do better.

Giving folks a chance to communicate what they learned, and then encouraging them to "do better," is the best way to lead.

bluetwo 23 hours ago 0 replies      
I've worked with dozens of companies of various sizes over my career, and I've always found that this type of attitude starts at the top of the company. If managers are kind, curious, and tolerant of risks that might reap rewards, it is an indication the person at the top is running it that way.

If people are "blame-first, ask questions later" types, the person at the top is inevitably running the show by focusing on mistakes and miss-steps and their people follow suit. As result, people become wary of taking risk and run to assign blame, even before existence of an issue can be validated.

As a result, I don't think you can change these organizations. If their temperament doesn't match your own, you have to live with it or craft an escape plan.

slaunchwise 1 day ago 0 replies      
Also, never deploy and go camping. Not a knock on camping. You should also not deploy and head immediately to the hospital for scheduled surgery. The point is that if you deploy, on any day, you need to be available in case something is amiss. The only advantage to deploying Mon - Thur is that you're probably going to be available anyway.
herge 1 day ago 10 replies      
I have the similar problem with code reviews. It is really hard to not sound harsh when giving a code review, especially in ones from junior developers where a whole laundry list of fixes comes out.
deedubaya 1 day ago 0 replies      
Be kind, but don't be passive either. Talk about it, be kind, but don't glaze over the learning experience.
davemel37 1 day ago 1 reply      
I heard a story about Pepsi (dont recall the names), where an executive made a decisiom that lost them 10 Million dollars. The CEO called the executive into his office... The executive shuffled into the office, head down, and meekly said, I guess you called me in here to fire me." To which the CEO replied, "FIRE YOU?! I just spent $10,000,000 educating you!
bambax 23 hours ago 1 reply      
> One Friday afternoon (...) [Kevin:] what did you learn? / [OP:] I talked about the need for proper QA. About thoroughly testing my changes. About taking the time to make sure the job gets done right.

Kevin sure sounds like a great guy. But there was a simpler lesson to be learned: never, ever push changes on a Friday.

anateus 19 hours ago 0 replies      
The virtues of being nice are often extolled, but it's kindness that's truly valuable. You can do nothing and be "nice", but only actions can make you kind. When you strive to be kind, you'll also start noticing who around also tries to be kind and who is merely nice.
realkitkat 19 hours ago 0 replies      
#FirstJobsMatter! Based on my subjective, statistically unsound observations, when it comes to bad, obnoxious, and intimidating work place behavior there are people who cannot be helped and are equal opportunity offenders, and then the vast majority who appear to have picked up poor behavioral habits from their old bosses, peers and companies that they were unlucky to be associated with early on in their careers. I would assert that very few of us are resilient enough to truly differentiate between good or bad workplace behavior [in an early stages] of our careers - especially when you scored a job in one of the many respected companies with a track record of success. No matter how toxic the culture - it must be right since company is doing good, right? And then as we move forward in our careers we take these learnings with us. As a recent observation, this seems to apply to all phases of peoples careers where I witnessed an outstanding R&D manager / director turned into monstrous VP, who in reflection is just putting into action same management practices that were used by a pre-acquisition start up CEO he used to work for. And then of course there are those golden people that really make it worthwhile to come to the office and that you just love working with/for - sort of like the project lead described in the story here.
superjisan 23 hours ago 0 replies      
Thanks a lot for sharing this. I've been in 3 different companies now where I learned a lot but the biggest reason I left my first job was because I was afraid to ask questions because my boss did not know how to respond to a simple question without being snarky or rude.I learned a lot from that job but I knew that I wanted to be in a better environment and I am thankful that I made that decision. Working in an environment where everyone is encouraged after making mistakes and learn from it is where I want to work for.
nodesocket 18 hours ago 2 replies      
I was just thinking about this today. Why is it that software engineers have a supreme mind set...

 "Oh you don't know that?" "Oh you don't know about that tool?" "Oh you use PHP?"
We categorize our peers into two buckets. One with whom you respect, and unfortunately the other as newbies, rookies, not worthy of our time and energy.

Listen, I am completely guilty of this behavior myself. Howerver, after reflecting I am going to try to be more helpful to peers. Remember that we are all constantly learning, and the knowledge and experience that you have took you time. That newbie was once you.

Finally, let's think about this in terms of rapport. If your dismissive and arrogant toward a peer when they ask a question, they are probably going to think you're a total tool and jerk. Howerver, instead if you have the knowledge and experience and show and teach them, they are going to admire and respect you. It is really the best option.

weaksauce 1 day ago 0 replies      
Also, don't ship on a Friday unless you expect to work on Saturday.
binalpatel 1 day ago 0 replies      
Situations like this really let you know the true merit of your leadership.

I had a similar situation - where alerts based on bad data went out to customers, and hundreds of customer support tickets started flooding in. The VP, Director, and my manager all came to my desk.

Instead of chewing me out, or telling me how much I had messed up, they calmly figured out the issue, told me that mistakes happen, and thanked me for helping them figure out how unreliable the underlying data we were using was.

randartie 16 hours ago 0 replies      
Seems like this story is being received pretty well here.

Though, in my opinion I think it's kind of insulting to be asked something like "What did you learn?". The question isn't really necessary. You know that you screwed up.

That kind of dynamic between an engineer and a team lead is off-putting to me.

I think the proper way for a team lead to handle it is to instead work with the engineer to help find ways to eliminate the human error by implementing tooling or processes. The conversation should go something like this:

Lead: "I wonder how we can make sure none of us break XYZ widget again"

Engineer: "We can build out ABC and run that, also generally just test better before pushing to prod".

Lead: "Cool, do you want to go ahead and take care of that?"

justin_oaks 1 day ago 2 replies      
Junior developers who make a mistake? Cut them some slack and teach them.

Senior developers who make the same mistakes over and over and never learn? I've kindly pointed out the mistake and invited them to avoid it in future. After a few more failures, I sometimes talk to them sternly, but the sad thing is that they won't learn from either kindness or harshness. I'm not in a position to fire them. Does anyone have an idea better than "Just suck it up?"

karenho12 17 hours ago 0 replies      
I have witnessed the same thing at my current startup and this is the reason why I excel at my job and why my coworkers are some of my dearest friends. It is this sense of camaraderie that brings people together. We've all been through a lot, late nights of frantically pulling together an entire feature, reading scores of hibernate exceptions, debugging through IE bugs and jumping to help another developer with no questions asked. It is this through this journey that I learned how to provide safety nets for my junior developers and find ways to lead them to success just like my predecessors have done for me.

This is why I love being a developer.

lewisl9029 16 hours ago 0 replies      
This reminds me of one of my favorite blog posts: https://circleci.com/blog/kindness-is-underrated/

> The choice to be kind can be hard, especially when youre frustrated or when, thanks to your gifts, you know that someone has made the sort of error you could easily have avoided. Its easier to be direct; to not concern yourself too heavily with the emotions of others; to want to be unequivocal in your rejection.

Being kind is hard, and being an asshole is easy. People have a natural tendency gravitate towards the easy choice, the path of least resistance. Making the more difficult choice to be kind takes time, effort, and lots of empathy, but I firmly believe what you get in return is worth all that.

By being kind, you help create a more trusting, inclusive, and generally more pleasant atmosphere for you and your team to work and grow in. People also tend to respond to kindness in kind (bad pun intended, sorry!), and kind people tend to prefer working with other kind people, so in many ways kindness literally begets more kindness. Being an asshole also comes with similar feedback loops, but I know which one I want working for my team!

Disclaimer: I'm working at CircleCI now. :)

mysterpaul 21 hours ago 0 replies      
This demonstrates two principles from "How to Win Friends and Influence People":

- Don't criticize, condemn, or complain.- If you're wrong, admit it quickly and emphatically.

There are many good anecdotes like this in the book, including endymi0n's example.

esafwan 4 hours ago 0 replies      
Being founder of a startup, I often get into position as this. I think there is alot for founders too to learn form this small story. Thanks for sharing.
fairpx 1 day ago 0 replies      
Life happens. Being kind shouldn't just be restricted to junior devs, or even just devs for that matter. I've seen many folks be flatout mean and unrealistic to adult freelance developers from low-income-countries. It's a serious problem.
gautamdivgi 1 day ago 0 replies      
Great anecdote. We've all done it. Another thing I learned really early on - never deploy code on a Friday. Especially not Friday afternoon/evening. And definitely not if you're leaving for the weekend :)
mikeleeorg 19 hours ago 0 replies      
The best teams and organizations are the ones that are constantly learning, and foster an environment that encourages and supports that.

And, can take those lessons learned, and establish practices to help prevent and minimize such mistakes in the future.

I've seen lots of teams totally embrace the first, but inexplicably, don't follow through with the second step. They go through the motions of "learning" without actually learning.

GigabyteCoin 17 hours ago 2 replies      
All this talk about being kind (or staying calm) in tense situations reminds me of this video I caught on reddit last year. [0]

There is a dash-cam filming the inside cockpit of a plane when the pilot abruptly finds himself in one of those "death spirals" or "flat spins".

The pilot doesn't say a word.

He immediately reverts to his training, rights the plane, glides it towards the ground, and only grunts a bit when he crash-lands.

I found that absolutely amazing. To have that level of poise when you are literally facing death is unbelievable.

It is very similar to the simple advice given in the linked blog post.

Staying calm in difficult situations is the most efficient course of action.

Stressing out, raising your voice, yelling about things, or blaming others isn't going to do a damned thing when your plane is literally spinning out of control and going to kill you in a few minutes.

[0] https://www.youtube.com/watch?v=bvbS-oHi9ro

zavulon 1 day ago 0 replies      
I had a similar experience when I first started as a junior engineer at a financial company. By accident, I dropped a database in production... immediately, people found out and the head of production support came to me and said "This is strike 1".

Terrified, I ran to a senior engineer, who calmly and efficiently proceeded to restore everything in a few minutes. The only thing he said to me was "happens to everyone, don't worry about it, just be more careful next time."

I was extremely thankful and a LOT more careful next time, and each time after that.

JohannesH 21 hours ago 0 replies      
Also as a senior developer you carry some of the responsibility for the junior's ability to make that mistake. You probably set up and maintained the development environment where such an error could slip through into production.

So in case of a critical error/melt-down you should first of all blame yourself and think about why you set up a process and an environment that let this happen in the first place.

Think about what went wrong and how you can prevent it from happening again. When I started at my current place of work, they had a horrible manual deployment process that was the cause of 99% of all problems they experienced. Rarely critical problems, but still annoying and unprofessional. So we implemented automated build, test and deployment process that got rid of almost all of these problems.

Now, whenever something bad happens, we realize it is a problem with the process (not the individual) and correct/improve it as needed.

d--b 1 day ago 3 replies      
Is that so uncommon? I mean, maybe I've been particularly lucky in my career but that sounds like standard behavior to me. I mean you already feel bad enough for blewing it that it's no use to add some more to it. And as the article says it happens literally to every one of us at some point. So unless your boss is a genuine bag, that's the expected way they should react
isuraed 20 hours ago 2 replies      
This reminds of important lessons I've learned from the classic How to Win Friends and Influence People - never ever criticize people and you will get the best out of them. There are countless other great lessons in this book about being a leader and dealing with people.
kinow 16 hours ago 0 replies      
Had similar experiences in my first job with one of the smartest engineers I ever worked with (Claudio Marcio da Silveira). He early-retired to work on his family business (something related to flowers). But I can still remember all the times he let me learn by doing small mistakes, covered my bigger mistakes, and also educated me.

Trying to become that same engineer in my own way, but I definitely own a lot to him. And to other professors from uni/school that were extremely kind as well.

johngalt 13 hours ago 0 replies      
For actionable advice on how to be kind while still capturing the lesson. I recommend this article by John Allspaw on blameless postmortems.


narrator 17 hours ago 0 replies      
This is the Kaizen/Deming principle #8 of "Drive Out Fear". Here's a good in depth blog article about this as it's a difficult to explain topic that, especially for managers trained in the older methods of management, deserves a long form treatment:


GordonS 16 hours ago 0 replies      
Wow, this really resonates with me.

The very first day of my first 'proper' job, I made a total mess of something that cost the company around $5000. But my manager was like 'don't worry, we'll sort it, just learn to ask if you don't know how to do something'.

Many years on and I lead a development team. Now I always try my best to 'be kind', to coach and mentor, and it almost always pays back.

That one guy's kindness had a lasting impact.

muse900 1 day ago 0 replies      
When I started of as a junior developer it was in a team of 3. 2 Senior developers and me.

One of them was really kind and a nice guy that was getting along with everyone else in the office (other teams etc). Also he was a very good dev. Nice personal projects, knew what he was talking about, humble and hardworking.

The other developer was aweful. He was slacking a lot, all day on facebook and doing his personal home-owned business over his actual work, not caring to help me at all on any request. We didn't get along, and at first I thought it was my own issue. Later on I realized and having a talk with my manager that noone really was getting along with him.At some point he thought it was a great idea to make an education session, I was like ok he is putting time into it. He then proceedeed telling me that he is gonna teach me the very basics of programming as "we" didnt go to uni, I told him I went to uni and I finished with a Distinction but sure he could tell me whatever. He was trying to teach me things he didnt even understand and I was taught about them at uni. (I understand this is a basic mistake junior devs make think that they know it all, this wasn't the case here, he was trying to teach me some basic CS concepts, I went to uni for it he never went to Uni for it, he was just a programmer, nor he had the interest or hobby to go more intellectual on the matter) This lead me into not trusting him at all, in anything, while the other developer was really kind and he let me on his own to understand that he was a really good developer and I should listen to him.

A year later my performance was really good in the yes of the company, I was producing a lot of stuff etc. The developer that didn't like me was clearly angry at me. He was producing things that could be done in a week in like 3 months. Well long story sort, the company wanted to fire him, although it wasn't very viable at that moment as they would have to pay him cause he was with them for a very long time, so they started a formal process against him by keeping schedule giving him a formal warning etc. He improved etc.

I stayed at the company till I became a developer and a year after. I was working alone on mobile apps, and I remember having a chat about an issue I had for the app and some ios apis and how I tackled it and I remember that dev still trying to tell me what to do and how although he never ever working in a mobile app in his life or any experience in that field whatsoever.

Anyways, please don't be like the 2nd developer, be nice and let junior developers believe in you and understand your actual skills and capacity on their own. You don't need to brag or try to showoff because you might end up making them not trusting you.

binarymax 1 day ago 0 replies      
I'm re-reading Peopleware this week, and this is one of the core points it makes. You need to give the team the flexibility to make mistakes. I'm not sure I've ever met a manager who has read that book and disagrees with that principle.
pwenzel 22 hours ago 0 replies      
> Its okay, he replied. Weve all done it. He paused for a moment. But what did you learn?

Don't deploy to production on Friday! Queue it up in staging for Monday morning. Make a team policy for it!

hyperpallium 15 hours ago 0 replies      
proggit has a better title: [Mentoring Junior Devs: Be Kind](https://www.reddit.com/r/programming/comments/57g3x7/mentori...)
jasonkostempski 16 hours ago 0 replies      
Maybe im just lucky but this is generally how any manger I've ever had normally would have handled the situation. Not every single time, of course, since they were all humans and got frustrated sometimes, especially after a few of these in a row, but for the most part, they weren't dicks.
SadWebDeveloper 21 hours ago 1 reply      
> Jr Dev

> Access to production

> With clients that need the service running 24/7

Oh boy... is he used to work on facebook? when i was a jr dev, i didn't have access to production everything went to source control and then tested by my project technical leader and qa.This ensure that i won't do this things since my changes getting reviewed and tested plus we have reproducible builds that anyone can verify and continue working.

Case in point: No JR Dev ever need access to production ever, period.

ummahusla 1 day ago 0 replies      
101: Never deploy on Fridays.
carlmungz 1 day ago 0 replies      
Good to know there are people looking out for junior devs :-)
drawkbox 21 hours ago 0 replies      
The mistake was launching something on a Friday before vacation. Wed or Thursday would solve this. Launching on Mondays or Fridays, not a good idea.

So that is another lesson learned in addition to being cool when someone messes up once in a while. In ego driven teams sometimes it turns into the blame game and throwing under the bus, that is not kind.

orangepenguin 17 hours ago 0 replies      
I thought this article was fantastic. We could use more kindness at home, at work, and in general.

I find it really unfortunate when an engineer is fired because of a mistake. All the company is really doing is giving a more experienced engineer to someone else.

vilius 23 hours ago 1 reply      
This advice is obvious. How can you not be kind with a junior person that makes a junior mistake? It's human. An angry phone call would not have made any difference (except damaging the relationship). But what if Brian deployed on Friday night without testing 4 times in two years? And 3 times it caused trouble for the business. How do you stay kind then?
SloughFeg 1 day ago 0 replies      
The hardest thing for me when I was junior dev was simply being noticed. I'd rather someone be hard on me than to pretend I don't exist.
partisan 1 day ago 0 replies      
A mistake is an education. If you fire someone after they make a mistake then you are throwing away your investment in their growth.
johnwheeler 22 hours ago 0 replies      
If someone asked, "what I'd learned" in the above context, I'd assume it was more to satisfy their needs of feeling important and superior than genuinely caring.

Much better is: "Shit happens." That's an empathetic attitude that reflects experience in our field.

jxramos 17 hours ago 0 replies      
The key sentence:"Kevin gave me the space to screw up, as long as I learned from it."I like that concept of space to screw up. I definitely recognize the need for that.
SadWebDeveloper 21 hours ago 0 replies      
Personally i prefer the type of mentor/boss that comes and says things straight, surgarcoating everything isn't good once you realize that everyone could think you are stupid or well starting to find your replacement.
odammit 1 day ago 2 replies      
My first job was at an aerospace company in Florida. My boss was so nice.

I was really surprised to get the coveted desk in the 60 server room. Coming in off those 90 100% humidity streets to put on a parka and sit at my workstation wearing fingerless gloves.

Man, anybody should be so lucky to apprentice with that guy.

kornakiewicz 1 day ago 0 replies      
Well, this rule applies to basically every field of life. Most (if not all) religions and moral systems have rules that say to respect the others and be kind, even if they are not as we want them to be. But I'm not surprised that it's rediscovered over and over.
laxentasken 1 day ago 0 replies      
Stuff like this always boggles my mind - anyone can mess up. Mistakes happen, but if you didnt learn from it, history will repeat itself. I can't help to feel that common sense is sometimes lacking.. Why is that?
ronreiter 20 hours ago 0 replies      
From my experience as a manager, being kind works very well. This is especially important in the stressful start-up world where tensions are high anyways.
arc_of_descent 1 day ago 0 replies      
Be kind, but also be honest.
mohsinr 1 day ago 0 replies      
I really liked that article was short and to the point!
mindfulgeek 17 hours ago 0 replies      
Every child should be so lucky to have this experience as well. Empathy goes a long way.
throw2016 3 hours ago 0 replies      
Cmon. An article about kindness as top post on HN. This is taking the piss. This is a place that specializes in snark and dismissive discourse.

Everyone is a peacock here. The bumbling programmer should thank his stars his boss does not appear to be the typical agitatedly infallible HN commentator or monday would be a different day.

oldtech 17 hours ago 0 replies      
I only had to rad the first three words "One Friday afternoon". I learned early that I was doing everyone a favour if no updates went out on Friday afternoon.
JulienRbrt 1 day ago 1 reply      
> I walked into the office certain I was about to be fired.Wait, can you be fired that easily ?
alexmchale 20 hours ago 1 reply      
ing33k 21 hours ago 1 reply      
Simple but highly effective writing . How can I learn to write like this ?
chris_wot 1 day ago 1 reply      
Junior devs should also remember that whilst they might be trying to be kind, sometimes the support person you are trying to instruct probably knows more than you do.

I was a bit bemused when a young guy who had just gone into devops and sysadmin gave me a mini lecture on the importance of open source and contributing to it if you have the skills, and that I really should give it a go one day, because open content is amazing.

I didn't have the heart to tell him I'd gotten into a few of the LibreOffice release notes for work I'd done on the project. Nor did I feel like telling him I'd made significant contributions to Wikipedia. I think I sort of weakly smiled and tried to change the subject.

dcwca 1 day ago 0 replies      
This goes for everyone on your team, not just junior devs.
AdmiralAsshat 1 day ago 3 replies      
Isn't there supposed to be a code review before devs are allowed to deploy something to production?

Yeah, Brian screwed up. But the company has at least some fault for letting him get that far unchecked.

joseph8th 19 hours ago 0 replies      
Don't tell me what to do. ;)
dsp0105 9 hours ago 0 replies      
finid 1 day ago 1 reply      
poletopole 22 hours ago 0 replies      
That's why I never deploy on Fridays. For me, for everyone else.
dudul 1 day ago 0 replies      
While I fully appreciate the point of the post, the junior dev didn't screw up. The team screwed up for not having a process and practices designed to avoid these mistakes. Unless they do have those, and Brian decided to ignore them.
cmoscoso 3 hours ago 0 replies      
cool story bro.
therealmarv 1 day ago 0 replies      
No. 1 rule for deployment: Don't deploy on Friday.

Let it be a deployment free day!

partycoder 20 hours ago 0 replies      
I have seen people that react positively to feedback.

But some people take things very personally, even if you try to be very polite and respectful.

Sometimes people, especially people with narcissist traits or people obsessed with rank, will not accept any feedback coming from a someone from a "lower rank".

JustSomeNobody 1 day ago 1 reply      
We're an industry filled with people who have social disorders. Some people are just angry little people. Misspell something in a config file and they just ... go ... ballistic... It's not enough to just try and tell these people to be nice. They don't know HOW to be nice. Their brain isn't wired to be nice.

Edit: spelling.

dbg31415 1 day ago 0 replies      
While it's nice that we know that the protagonist is agonizing over his mistake, in reality, that's not often the case.

Since I don't have insight into their heads, and I can't tell if something was a sloppy mistake because they were inexperienced, or a sloppy mistake because they were trying to get out the door to a camping trip and prioritized their personal life over the team or client.

Clear example of why it's bad to deploy on Fridays, why it's bad to have single-person deployments, why it's bad to leave your laptop at home, etc.

But how would the kindly Senior know the Junior dev just made a mistake vs. was a fuckup and was thinking, "I don't give a shit, Senior will catch it and I just want to be on a beach now. Fuck it, I'm 'done' -- now to just sneak out and put my phone in the glove compartment for the next 3 hours while this blows over..."

The answer is he wouldn't.

So here's the other issue. Let's say I trust one person more than another. And Junior A -- who I believe to be a superior talent -- gets the benefit of the doubt, but Junior B gets scolded.

Now let's say there's even the slightest difference in hair length or eye color between A and B... and presto that's an HR discrimination complaint I now have to deal with. As it turns out, Juniors don't have insight into the minds of Seniors either.

So, some good advice... Be humble, do what you can to not make things worse for others, set up good practices that let everyone thrive (the best way you can do this is to avoid failure opportunities -- i.e. don't deploy on Fridays), and do what you can to treat everyone fairly and equally based on perceived actions and offenses.

We can't know what goes on in someone's head.

tofupup 17 hours ago 0 replies      
77pt77 1 day ago 5 replies      
Except in real life people sometimes make malicious "mistakes" deliberately and when caught and called out on them either completely dismiss them or even gloat.

This reads almost like a fairy tale.

coldtea 1 day ago 5 replies      
>Thats why I want to make sure that youre the only one to refuel my plane tomorrow. I wont let anyone else on the field touch it.

...he said, before his final fatal flight. Apparently some people DO do the same mistake twice.

([Edit] to avoid confusion: My addition is about giving a different twist to the story, to show that it's not a given that people who made a mistake will not be prone to repeat it. Some people seem to be extra prone in repeating certain mistakes. It's not saying Hoover actually died or anything... I mean, isn't it obvious?)

sqldba 1 day ago 0 replies      
> I talked about the need for proper QA. About thoroughly testing my changes. About taking the time to make sure the job gets done right.

Oh good, a bunch of useless platitudes.

Google's Director of Engineering Hiring Test gwan.com
1720 points by fatihky  1 day ago   910 comments top 174
DannyBee 1 day ago 25 replies      
FWIW: As a director of engineering for Google, who interviews other directors of engineering for Google, none of these are on or related to the "director of engineering" interview guidelines or sheets.

These are bog standard SWE-SRE questions (particularly, SRE) at some companies, so my guess is he was really being evaluated for a normal SWE-SRE position.

IE maybe he applied to a position labeled director of engineering, but they decided to interview him for a different level/job instead.

But it's super-strange even then (i've literally reviewed thousands of hiring packets, phone screens, etc, and this is ... out there. I'm not as familiar with SRE hiring practices, admittedly, though i've reviewed enough SRE candidates to know what kind of questions they ask).

As for the answers themselves, i always take "transcripts" of interviews (or anything else) with a grain of salt, as there are always two sides to every story.

Particularly, when one side presents something that makes the other side look like a blithering idiot, the likelihood it's 100% accurate is, historically, "not great".

lordnacho 1 day ago 33 replies      
I'm amazed he knew things in such detail. I mean who would know just how long a MAC address is? Or what the actual SYN/ACK etc tcp flags are? You just need to know what they're used for, and if you need the specifics, you'll find out with a single search. He seemed to know that as well though. Kernighan for bit twiddling algos, that kind of thing.

It's a bit strange to have someone non-technical interviewing a techie. You end up with stupid discussions like the one about Quicksort. If you point out qs is one of several things with the same big-O, you'll probably also get it "wrong". But the real problem is that a guy who is just reading off a sheet can't give any form of nuanced feedback. Was the guy blagging the sort algo question? Did he know if in detail? Does he know what the current state of research on that area is? There's no way to know that if your guy is just a recruiter, but I'm sure even a relatively junior coder would be able to tell if someone was just doing technical word salad.

I wonder what would happen if ordinary people recruited for medical doctor jobs? Would you be comfortable rejecting a guy who'd been in medical school for 10 years based on his not knowing what the "funny bone" is? Wouldn't you tell your boss that you felt a bit out of that league? It's amazing you can get someone to do this without them going red in the face.

philjr 1 day ago 10 replies      
Without actually hearing the transcript verbatim, it's hard to give much enlightened perspective here, but there's a lot of "hur hur, dumb recruiter" responses here. What I will say, in general, is that figuring out what the "right" answers are here for what is obviously a technical phone screen by a non-technical person with answers on a piece of paper is also part of the challenge. This is a Director of Engineering interview. Understanding context & navigating "real people", having soft skills etc. is meant to be part of the job description. Feels like this gentlemen couldn't turn the hardcore engineer off who's technically right about everything but yet never seems to get anyone to listen to him.

Giving the hexadecimal representations of the 3-way handshake... really? You may have gotten a dumb recruiter and you may think you're smart, but from my perspective, you answered the questions in a pretty dumb way given the context of non-technical recruiter, very obviously reading answers from a sheet of paper.

I've done two of these before and I've often said "Oh well, it might be down on your sheet at this thing" and the recruiter goes "Ah, yeh, that's it. Tick" and moved through 3-4 questions that in theory I might have gotten wrong. If you take the "be a dick" routine... Congrats. You won the moral war. Best of luck with your next job.

endtime 1 day ago 11 replies      
I've been at Google for five years as a SWE and I've been interviewing for 3 of those. I'd fail this pop quiz.

This strikes me as bizarre and inconsistent with all the practices I'm aware of. The idea that we'd ask anyone this stuff, let alone director candidates, strains belief.

Jdam 1 day ago 1 reply      
Wow, I had almost the very same set of questions for a junior SRE role! The difference is: I graduated ~1 year ago and therefore have a lot less experience than this guy.

It was kinda funny, the recruiter called me to "go through some of the questions to see what I will encounter in the actual interview". I remember, when asked about what Unix function accepts connections on a socket I could just answer "dunno", because I never used or did that. Even more funny if you consider that they actually came across my profile and called me initially and there is just no place in my CV where I claim such "low-level" knowledge. I also remember that Inode question, "What is stored in an Inode?" - Again "idk" and the answer the recruiter gave was "metadata". Yes of course metadata, goddammit, what else? (Can an answer really be that simple???)

After the interview I felt quite devastated because I did not expect that I had to come up with a solution to process an array with the size of 10,000 in a call with the recruiter. I wasn't (and I'm still not) sure if this was only preparation or an actual interview. In the latter case, I was sure that I failed. Surprisingly however, I was invited to an actual engineering interview some time later.

johan_larson 1 day ago 5 replies      
The meta-question is, "Do you have the social savvy to give the conventional answers when being judged by someone who doesn't know what he is taking about?"
adekok 1 day ago 1 reply      
I'm reminded of a story about Einstein in the 1930s. The fad at the time was to have a "skills test" which was supposed to place you perfectly according to your results.

Einstein took the test, and did terribly. Everyone was shocked, and asked him what was going on. His response was "The questions tested memorization. Why would I remember what the capital of North Dakota is? I can look that up in a book!"

Perhaps unsurprisingly, the tests faded out of popularity.

It's sad that 100 years later, even Google hasn't learned that lesson.

greg7mdp 1 day ago 1 reply      
Hahaha, that is funny/tragic. Outsourcing hiring a director of engineering to a moron with a cheat sheet! Your answers were great, though, and indeed on the systems I have tried the popcount() computation with the bit shifts you suggested is faster than using an 8 bit lookup table. (however the SSE4 popcnt (https://en.wikipedia.org/wiki/SSE4#POPCNT_and_LZCNT) is faster still).
buttershakes 1 day ago 2 replies      
I had almost exactly this same engineering test when google interviewed me in 2006. It was terrible, and left a bad taste in my mouth. Given the complexity of the work I was doing at the time, the entire thing seemed ridiculous.
kkapelon 1 day ago 4 replies      
They asked me the same questions back in 2012. I was applying for a Java developer position.

The person asking the questions said right from the start that he is not technical (he was a psychologist) and that he had a cheatsheet in front of him.

I passed that telephone call and failed the process later on another call (on the lightbulbs and the 100 floor building)

Really surprised to see that 4 years later they still do this.

Robin_Message 1 day ago 1 reply      
I can see both sides here. Google does want to make sure even higher up technical hires have good technical skills, which I think most developers would agree is a good idea.

But their way of measuring this (the standard way) is bad, because it ignores the nuance a more experienced person has (seen so clearly here).

On the gripping hand, I can't help but feel the candidate did demonstrate a big failure to communicate, which is an important skill in itself.

For example, listing SYN, SYN-ACK, ACK in hexadecimal is great for showing off, but is legitimately a bad answer to the question as evidenced by the lack of understanding in the questioner. I also think some social graces might have got them further (e.g. "Oh yeah, sure. Quicksort is O(N log N on average, and is generally a reasonable sort to chose, but I wanted to mention some other factors that are worth considering").

At the end of the day:

- it's a hoop. Jump through it and get a fish, or don't.

- calibrate for your audience! This is a very important technical skill (and this test was unintentionally correct in its result IMHO).

ohitsdom 1 day ago 1 reply      
It is scary if this is how Google hires engineering directors. Passing this test would select all the bad candidates! Answers to many technical solutions are "it depends". If you have a director that "knows" the right answer, they won't be very likely to encourage their engineers to experiment and find the best solution to the specific problem at hand.
Animats 1 day ago 2 replies      
Is this for real? Does Google really hire interviewers that stupid? The list of questions is really dated. They're all pre-1990. The answers are dated, too.

A Linux inode is the file system's representation of the base info of a file, from which the file's data blocks can be found. It also carries file metadata, but its real function is as the root of the file's block index tree. The format depends on the file system. The internal identity of a file is an inode number, not an inode. What you get from 'stat' is the file's metadata, which mostly comes from the inode data structure on disk, but isn't necessarily in the same format. The formats were the same back around UNIX V7, but there have been some changes in the last few decades as file systems improved.

If you need to count bits in a word, the first question is whether your CPU has hardware to do that. NSA always liked population count instructions, which are useful in cryptanalysis, and that's why most supercomputers had them since the 1960s. Now they're finally in Intel x86 CPUs with SSE4.2 (added around 2006), which has a "popcount" instruction.[1]

A MAC address for Ethernet is six bytes. There are other hardware layer systems, and Google probably uses some of them. Fiber Channel fabric uses only a 3-byte address, for example.

Hash tables are not O(1) lookup. It's an exponential as the table fills up. It's near O(1) only with a near-empty table. There's a space/time tradeoff on how full you let the table get before you expand it.

Quicksort is average O(N log N), but the worst case is much worse, which is why nobody uses pure Quicksort any more. You can beat O(N log N) with a distribution sort. The first sort to do that was SyncSort, the first patented algorithm. It's a distribution sort with self-adjusting buckets.

Who wrote this interviewer's answer sheet?

[1] http://wm.ite.pl/articles/sse-popcount.html

nogridbag 1 day ago 1 reply      
Site is down. Does anyone have a mirror?

Edit: http://webcache.googleusercontent.com/search?q=cache:rPrtrh1...

maverick_iceman 1 day ago 6 replies      
This is very hard to believe. In most big tech companies technical interviews are conducted by technical people, not recruiters. Especially for a senior role like Director of Eng. the experience described here stretches credulity.

Also most of these companies have policies which don't allow any feedback to be given on interview performance. In light of that the recruiter saying "you don't have necessary skills" is extremely surprising.

pzh 1 day ago 1 reply      
That's not so surprising with Google, I'm afraid.

I had the exact same questions (apparently for SRE-SWE prescreen), but a slightly more intelligent recruiter (who had actually chased me for 2 years before I agreed to interview, so they were a bit more invested than the OP's guy). I went on to a phone screen and then on-site interviews, and then the hiring committee. The HC decided that coding/algo was strong, but that they needed a stronger "signal" re system design, and to my surprise, scheduled me two more sys design interviews (I did a total of 7 on-sites). I prepared by reading all the Google, Facebook, and Amazon systems papers and did 6 mock interviews with Gainlo, where interviewers all gave pretty good feedback (which led me to believe I wasn't a total idiot). When I went to my final Google interviews, I thought I did pretty well except for a couple of TCP/IP questions related to checksums and congestion control. I found those odd because all the prep materials that recruiters sent me listed knowledge of TCP specifics as optional, and this isn't my area of expertise anyway.

Oddly, one of the interviewers also seemed surprised that I wasn't a TCP/IP guru (--I bet that now he's telling his buddies stories about a candidate who couldn't do the SRE equivalent of Fizzbuzz or something similar.)

A week later I get the rejection and a long survey containing a link to the job for which they applied on my behalf. It was an SRE position that required deep knowledge of TCP/IP and various other network protocols.

My actual areas of expertise (for the last 10 years) are 3D graphics and computational geometry.

Lesson learned: always check the description of the job that overly eager recruiters apply for on your behalf. Had I known, I would've studied all about TCP/IP and prepared for that level of detail. All that time I thought that I was applying for a general SWE track, and I simply expressed interest to be matched to teams specializing in infrastructure and distributed systems later.

eco 1 day ago 1 reply      
Frankly, this reads like a post from /r/ThatHappened. For those unfamiliar, it's a subreddit to share social media posts from people telling obviously made up stories with the purpose of making themselves look good (e.g., brave student stands up to intolerant teacher, receives standing ovation from peers).

The interview may have happened and the questions may be accurate but the story is very exaggerated to make the person look good (and the interviewer look bad).

ysavir 1 day ago 1 reply      

* A link to his LinkedIn profile

* A direct downlink to his resume (well, an HTML file for his LinkedIn page; same purpose)

* Talking about how his skillsets are a "rare mix".

* A "transcript" showing how he's smarter than the recruiter for a Google DoE position

* Taking on a big company in a post bound to go Viral

Yeah, this feels less like a blog post, and more like an attempt at a viral cover letter.

masto 1 day ago 2 replies      
I'm not going to go into specifics (I like my job and want to keep it), but the versions of these questions quoted in the blog, especially where the questions seem stupid and wrong, are not on accurate representation of actual SRE prescreen questions. It's possible that the recruiter somehow garbled them, or perhaps the blog's author is misremembering them after a stressful and frustrating conversation. But if you read this and think Google asks really dumb questions, I think if you saw the "real" questions, you might come away with a different opinion (especially if you understand the nature of prescreening vs. an actual interview). A hypothetical example, let's say the complaint is about the following exchange:

R: What's a potato?A: It's a vegetable that grows in the ground.R: Wrong. It's brown.A: Potatoes come in different colors, and they are vegetables that grow in the ground.R: Wrong. It says on my sheet that the correct answer is brown.

when in reality the question was "What color are Russet potatoes?" I don't know what happened here. Something, unfortunately, went off the rails.

rcarmo 1 day ago 0 replies      
I had a very similar experience with them (around Java and Python dev questions) a few years back. Completely turned me off applying to Google, or replying to the numerous pings I get whenever they want to expand headcount in Europe.

(I'm not going to mention other companies here, but I also had enough "technical" interviews of this kind to make me wonder if people actually know how to recruit outside their - often quite narrow - perception of what their area of expertise actually is.)

Makes me quite sad, really, because there is zero assessment of experience, talent and know-how in this kind of interview (and whiteboard interviews can be ridiculous in their own right, too, but that's not the point here - it's just that they appear to be the next step in this broken appraisal).

mherdeg 1 day ago 2 replies      
Ha ha re:

> 10. what is the type of the packets exchanged to establish a TCP connection?

> Me: in hexadecimal: 0x02, 0x12, 0x10 literally "synchronize" and "acknowledge".

> Recruiter: wrong, it's SYN, SYN-ACK and ACK; if Google is down you will need to know this to diagnose what the problem is. We will stop here because it's obvious that you don't have the necessary skills to write or review network applications. You should learn the Linux function calls, how the TCP/IP stack works, and what big-O means to eventually qualify if you are interviewed at a later time. Good luck, bye.

That's embarrassing.

dewiz 1 day ago 1 reply      
gmarx 1 day ago 2 replies      
"There's an array of 10,000 16-bit values, how do you count the bits most efficiently?"

multiply 10,000 by 16. There are 160,000 bits

_Marak_ 1 day ago 0 replies      
The Google interview process is a disaster.

Incompetent HR is apparently the norm. When I finally got to my ( 8th? ) interview there, I was asked by a very senior manager whether or not I had ever used Github before.

Considering Google cold contacted me based on the specific email address and projects I make available on my Github profile, it was kinda was confusing. Ohh yeah, he also asked me what CSS stood for.

I ended up stopping the interview early myself.

plinkplonk 1 day ago 4 replies      
Is this for real? Wow.Reads like someone spoofing the real Google interview.

For "Director of Engineering" they have a technical illiterate (nothing wrong with that, in other contexts) check for literal matches of answers? the mind boggles.

(I'm really having a hard time believing this is for real)

DelaneyM 1 day ago 0 replies      
FWIW: I have interviewed twice at Google for Dir. Eng. jobs, both times going the distance. (Once rejected after a few weeks, once received an offer two months later, too late to accept.) In those interviews, I was never asked a seriously hard technical question, let alone an annoyingly academic and trivial one such as those in this post. Rather, I felt like they did a pretty solid job of understanding how I would engage with the organization and perform in the role.

Though the lack of technical rigor was not surprising in evaluating me for a administrative & support position, the lack thereof in the onsite portion was something I sent explicit feedback about afterwards.

arekkas 1 day ago 1 reply      
A friend of mine was offered a similar position and had a similar interview. Annoyed by the questions and the "my solution is the only right one because I have to stick to this script"-attitude he asked: "So what do you want me to do at Google, how can I help you" the recruiter could not really answer and ended the call shortly after.
danceparty 1 day ago 0 replies      
Having been through several goog interviews I find it hard to believe that the interviewer would dismiss his highly technical explanations/rebuttals in that way. Seems more likely this is his interpretation of the tone of the interview, rather than a transcript.
iamleppert 1 day ago 0 replies      
I've been hit up by Google recruiters many times. I'll never interview there. The last time one of their recruiters hit me up he pretended it was for a Google X company, and then pulled a bait and switch on me, sending me a bunch of form e-mails on "interview prep" and how to expect their process would take 6 weeks minimum.

No thanks. I'm not about to put myself through a 6 week interview process at 32 years old to go work for an ad company. I'm passed the point in my life where I care and need to justify myself by trying to get a big tech company job. Already done the big tech thing.

It's not all its cracked up to be.

jackgavigan 1 day ago 0 replies      
> Recruiter: that's not the answer I have on my sheet of paper.

That's not an interview. That's a waste of your time and an insult to your intelligence.

This reminds me of the time Google rejected the creator of Homebrew because he couldn't invert a binary tree: https://twitter.com/mxcl/status/608682016205344768

knorker 1 day ago 0 replies      
You would think that someone posting prescreen questions in anger would at least bother to edit the transcript so that they gave the right answers.

An inode is not an identifier. This super-awesome-knowitall has not bothered googling "define inode" before posting this.

If this really is the transcript then not only did you answer questions wrong, you also argued with the recruiter.

I have worked with people who used to be the best where they came from, who are not used to being wrong. This guy did not handle it well.

If this really is a true transcript, with internal monologue, then Google has avoided accidentally hiring someone arrogant who can't accept being wrong, or is at least not open to being wrong.

The reaction -- posting prescreen questions in anger in retaliation -- only reaffirms that Google did the right thing.

burkaman 1 day ago 2 replies      
Is this common for higher level positions at Google? I've gotten a similar kind of phone screen, but for an entry level software engineer position, and getting a few "wrong" was not a big deal. It's just so they can avoid setting up a real interview with someone who doesn't know the basics.

If the call actually went like this, it seems like you just hit a new/not very good recruiter.

fasteo 1 day ago 1 reply      
This reminds me of the infamous Nigerian emails. They are so obvious for a reason - avoiding false positives - [1]. Cannot fit this same scheme in a Senior position recruitment at Google though.

[1] http://uk.businessinsider.com/why-nigerian-scam-emails-are-o...

Retric 1 day ago 1 reply      
This right here is why Google hit the wall and stopped innovating. Which is sad because they seem to be trying really hard.
mankash666 1 day ago 1 reply      
"Recruiter: wrong, it's SYN, SYN-ACK and ACK; if Google is down you will need to know this to diagnose what the problem is. We will stop here because it's obvious that you don't have the necessary skills to write or review network applications. "

Because when Google is down, it's typically upper management that fixes network issues. CEO level to directors of engineering are on pager duty most nights there.

sreque 1 day ago 1 reply      
I think the candidate made a simple mistake: the interviewer is always right. Your job in an interview isn't to be right or to teach the interviewer. Your job is to make the interviewer like you foremost, and second make the interview think that you're qualified. And of course no one likes being corrected or told they are wrong. In my opinion, it is better to do well on an interview and decide after the fact that you're not interested, than to do a poor job on the interview because you couldn't help yourself correcting the other person.

For instance during one interview I was being asked questions about a particular topic, and I started to guess that the interviewer didn't understand 100% the topic he was asking about. Rather than correcting him, I simply tailored my answers to what I thought he was looking for, not what was right. I passed the interview and got a job offer, whereas if I had corrected the interviewer the results may have differed.

AlexCoventry 1 day ago 4 replies      
Isn't a Director of Engineering meant to be an interface between engineers and the rest of the organization? Perhaps this was more like a smoke test for the political insight such a role calls for, not the ostensible test of technical skill it was presented as. After the first couple of wrong answers, people with the right social skills to manage others and represent their interests to the broader organization would stop striving to prove their technical chops, clarify what kinds of answers the test is looking for, and adjust their subsequent answers accordingly.
Cybourgeoisie 1 day ago 0 replies      
This hiring test makes me cringe. How is this any better than taking a multiple choice test in college? These questions asked should invite back-and-forth conversation like the author is providing, especially when the company is seeking out highly qualified candidates.
boo_ 1 day ago 0 replies      
Early in my career I got asked a question about database reporting on sales items and totaling the number by a given date. This was one of the hardest questions I was ever given because I had to "write" the sql out over the phone and was not given a schema so I had to make one up as I went. I was then asked how I would go about writing one that included $0 sales days. At the time I didn't know the answer to this -- just that querying for something that doesn't exist is not straight forward in sql. I explained that I didn't work much with reporting so I had not encountered this solution before and gave a list of possible answers:

* Generate a complete list of dates in memory and see which do not exist.* Create a temporary table to match it up that way.* Do post-processing on the report.* Research prior art.

I was not offered the job.

Years later I was given the task of creating a "data warehouse" to enable easy reporting by business analysts so they could stop bothering the engineering team. So, it being the first time I had done this, I read up on different techniques. I solved the problem the previous interviewer proposed by have a table of dates with attributes on them (is weekend, is national holiday, day of week, etc) and all dates foreign key to this table.

However, because I couldn't think of this solution within a few minutes -- despite it not being in my background -- I did not get the original job from years before.

In many ways, I'm thankful the original interviewer passed upon me. I was able to get a different job that valued being able to think of creative solutions AND being able to research prior art so we don't invent a badly designed wheel over and over again.

I suspect the author of this article will experience the same feeling with time and it is a real shame companies are valuing root memorization and keyword matching over real problem solving skills.

gjem97 1 day ago 1 reply      
To be charitable here: is it possible that this person did not work for Google? Historically, I've known third-party recruiters play fast and loose with their affiliation with the company they're recruiting for. This literally could have been any recruiter in the Valley trying to feed candidates to Google.
jpgvm 1 day ago 0 replies      
The standard Google phone interview.

I got almost the exact same questions. My interviewer seemed more capable though.

I also wasn't as technically correct as this gentleman so my slightly less correct answers were more "right".

As sad turn of events given that I would have loved to answer the same way as he did here, these are much better answers than mine. But this is just technically recruiting, it's a crapshoot at best. It's much better to just take jobs at places that don't insist on trivia competitions.

enjoylife 1 day ago 2 replies      
What the heck is a "Quicksort big-O score"? I've never heard anyone use the noun score when talking about complexity analysis.
icedchai 1 day ago 0 replies      
I had this almost exact same Google phone screen, in 2010, for an SRE position. I'm 100% certain this is not a director-level test. I thought it was incredibly simple.

The second interview (phone interview with an engineer) was challenging. The third was on-site, and I failed, but was still a good experience. I'm a "small startup" type anyway.

TYPE_FASTER 1 day ago 0 replies      
This is also the test for the Technical Program Manager position. You must prepare rigorously to get through the initial conversation with a recruiter. The recruiter I spoke with seemed more open to me explaining why my answer was different than the recruiter OP dealt with.
carsongross 1 day ago 0 replies      
Here's the good news: Google will get the directors of engineering they deserve.
probinso 1 day ago 2 replies      
The problem is Google doesn't need you. Google gets onefinity applications per day. If they shave %90 percent of cold applicants this way then they will not hurt for more applicants. A company that large will gain it's best participants by reference.


my interview with google was very short.

them: what is 2 ^ 37?

me: can I use a calculator?

them: no

me: then we are done here.

ajmurmann 1 day ago 1 reply      
What always bothers me with most interview questions is the focus on hard technical stuff that's very easy to acquire and forget and easily relearned. I much more care about a candidates capability to write code that's maintainable. The hard challenges we are facing in our jobs are rarely hardvore technical issues but usually just being able to keep going at a fast pace without drowning in the legacy code we wrote last week.
joss82 1 day ago 0 replies      
I took this exact same test for a SRE (site reliabilty engineer) position at google earlier this year.

I failed in the same way the author did but the recruiting person helped me so much that i could proceed to the next level.

Obviously she was aware that this test was broken and that candidates would occasionally pass it by sheer luck.

Other later interviews were equally broken in the same ways.

vintageseltzer 1 day ago 0 replies      
I realize they have enough applicants not to care, but constantly reading this kind of thing about Google makes me never want to apply to work there.

It sounds like they took the worst parts of a startup, graduate research lab, corporation and bank and put them all together, but they have enough advertising $ that it doesn't really matter.

emmelaich 1 day ago 0 replies      
The interviewee give the right answers but in a more precise and more low-level - even pedantic way.

Clearly he know's much more about the questions than the interviewer but he's mistaken the nature of the interview.

This really is a preliminary phone screen and he should have recognised the interviewers lack of experience early and just played the game.

I'd be be tempted to not go ahead with him just for his lack of emotional intelligence.

tptacek 1 day ago 0 replies      
These would be stupid questions even if they weren't being administered by a non-programming recruiter.
jondot 1 day ago 0 replies      
I have interviewed many people, in large and small companies, and saw how interview processes get built in the wrong and right way.

First, here's two reasons why interview processes suck. One, is that no one wants to help recruiting, or HR, do their job. Helping them is an errand and is done in a robotic way. You end up with an idiotic checklist that is a shame to great engineers. Second, is when the team finally realizes idiots joining the team are hurting the team - they will go about and have more motivation to support the recruitment process. Then, when you let a group of people devise such a task you get: an average process designed to leave out the human parts (shift bytes in array) and fit each person's interview style, or a crazy idiotic processes made by people mentally jerking off to each other (implement raft. in assembly). A team can be a company or an actual software development team.

The right way to do it, is this. I believe a single person, who cares about developers, who is passionate about developer experience - should build his/her team's interview process. He/she can take feedback from the team, but that person should eventually build the process and make the calls.

In this specific case I want to believe there is an accurate answer, and a correct answer, and they wanted the correct answer, or at least to see him negotiate his way to the correct answer even though it is subpar (although his accurate answers are impressive). That being said, I'm giving Google credit here. There is a small chance it might just be one of the first options I've described here.

gautamdivgi 1 day ago 0 replies      
Hehehe - that's really funny. Why did they even need a "body" behind the test? If all the person is doing is reading from script - it could have been just web based.
devhead 1 day ago 0 replies      
terrible interview questions, that's why only technical people should be giving technical interviews. Most answers to questions are more nuanced than a straight quantifiable answer they have on a sheet of paper.
chr15 1 day ago 0 replies      
For those doubting the interview, I was asked many of these same questions for a mid-level role by the recruiter just a couple of months ago. It's real. Passed the phone screen, but decided not to continue.
yalogin 1 day ago 1 reply      
Why would a person interviewing for a director position let a recruiter do a tech screen? Wouldn't it at least be respectful for the hiring manager to do this evaluation? Something is very off here.

Or does Google use the same "we have a generic interview and if you get through we will then decide which team to place you in" crap for director level hires as well?

pjlegato 1 day ago 0 replies      
This well illustrates the problem with "CS Trivia" style interviewing. It's billed as "exploring your background and how you think, not quizzing you for specific answers," but almost always devolves into an adversarial ego-measuring contest to see who can recite the most trivia from memory.

Much of of the content is minutiae that a working software engineer doesn't ever need to know and would just look up in the rare case where they did (how many bytes in a MAC address? Seriously?).

It's particularly bad when, as here, the candidate knows more than the interviewer does. The interviewee gives exact, nuanced answers while the interviewer only knows approximately correct answers that don't quite match. The interviewer then feels that their ego is vulnerable, that they are facing a serious potential competitor for social status at the company. They then summarily reject the candidate's correct answers as a defense mechnaism.

matchagaucho 1 day ago 0 replies      
The irony of "Director" roles is that they're supposed to provide "Direction".

This requires gently pushing Engineers out of their comfort zones and into new territory.

Often a Director's specialized knowledge comes at the expense of defying conventional norms.

Filtering for candidates that can answer CS trivia will just get you Directors that know trivia.

jdc0589 1 day ago 0 replies      
wow, thats especially terrible. The engineering interview pre-screen I had at Amazon was better than that. Can't imagine why a company would do this for ANY technical position, much less such a senior one.

I did have an HR pre-screen one time where they sent me a SQL literacy test (did not specify sql dialect). One of the multiple choice questions had all correct answers, in different sql dialects, with no "all of the above" option. I corrected the test. I did not get a call back.

usernull 1 day ago 0 replies      
I interviewed with Google about 10 or so years ago for a manger post. I was not selected after 3rd phone interview.

Potential job was about predicting number of servers required or something like that. I was recommended by a friend's friend who apparently worked there. Google contacted the day they saw my resume and did two quick phone interviews verifying my basic background.

In the third interview which was highly technical, they asked a bunch of techie things including what an inode was. Whatever answer I gave about inode was apparently OK, as the interviewer proceeded to ask me how I would repair a faulty inode.

Since I did not know the answer, I honestly said I do know and joked that I would "google" for the answer. My pathetic attempt at humor did not sit well with the interviewer and was told that I did not pass the current interview.

Fixing inodes or other hardware/software problems is certainly something that needs to be done, but I did not buy the interviewer's assertion that everybody in Google knows how to fix inodes. For making predictions about server needs, failure rates are just one factor to consider and the time needed to repair them.

Whether a prediction manager needs to know the low level details of fixing inodes is questionable in my mind. I just assumed that Google interviews a staggering amount of people and reject a large portion of them for the smallest of reasons (like how astronauts are selected). It also seems they hire people for one thing, but that does not preclude them in deploying them in totally different positions. Otherwise there was no reason to ask me techie questions.

What surprised me was how fast they moved, how upfront they were about overall interview process, and how they asked about non essential questions from my perspective.

middleca 1 day ago 0 replies      
Google and all the other mega-tech corps do a similar tech phone screen where they're reading off an answer sheet. (powers of 2, sort these functions, linux kernel calls, etc).

Sounds like you dodged a bullet, this sort of thing speaks volumes to how the company is run internally and how you'd be treated there.

sbierwagen 1 day ago 1 reply      
He seems to be pretty proud of GWAN, but it doesn't appear to have stood up well to HN traffic.
ohstopitu 1 day ago 0 replies      
When I interviewed at Google for a Ads Solutions Engineer, I had some of these questions asked as well. (I got an 8/10 and was pushed to the next round).

I assume they have a massive list of questions (for various positions and have a minimum cut off - 7/10 I'm assuming as a few of my friends who got 6/10 and were not moved forward) and are asked to all applicants without consideration of experience/skill/previous work as well explained by Max Howell[0]).

[0] https://twitter.com/mxcl/status/608682016205344768?lang=en

nurettin 1 day ago 1 reply      
Perhaps they are looking for a pointy-haired-boss type rather than someone who actually knows his thing.
mgkimsal 1 day ago 0 replies      
Have had similar phone screen experiences for various roles, and sometimes the screener seemed to understand that I had a lot more knowledge/experience they did, and trusted my explanations, because I'd talk to them some more and explain the answer (their answer) in more detail back to them. Some of them may have thought I was completely BSing them, but a few seemed to grok I was more than qualified based on the answers and put me through.

Also took a computer-based test at a recruiter once, re: PHP, and it was... 20 questions. One of the questions was wrong, in that the syntax of the question as posted was incorrect. Pointed that out, and got a "thank you, we'll call you" kick out the door.

titomc 1 day ago 0 replies      
A "technical" recruiter asked me "how comfortable are you with 'tomcat' programming language". I said I am not at all comfortable with "tomcat" programming language because I have to invent one. He was furious and hung up.
odammit 1 day ago 0 replies      
Once in an interview for a web developer role I was asked to list the layers of the OSI model.

As I rattled off the layers the guy looked super surprised and asked how I remembered them and I said "pretty dicks never touch shitty people's assholes."

Needless to say, I got the job.

bhc 1 day ago 0 replies      
Are they hiring a reference manual or a director of engineering?
HeavyStorm 22 hours ago 0 replies      
I do some interviewing for my company sometimes. HR people suck at it, but they don't ask any forms of technical questions.

So it'd be strange to have such deep questions asked by a non technical person for such a high position.

Secondly, I was interviewed by Google once. The interview was great (even though I failed it).

Third, during this interview, I signed a kind of non disclosure.

On the other hand: I was also interviewed by Microsoft. The interviewer was non technical, and asked at least two tech questions (the difference between a struct and a class in C++, and what volatile meant). And, finally, Roy Osherove has a similar tale about Google.

a_imho 1 day ago 0 replies      
But can he invert a binary tree?
diyseguy 1 day ago 0 replies      
He failed in the first sentence:

> I started coding 37 years ago (I was 11 years old)

they wrote him off right there

protomyth 1 day ago 0 replies      
The Google person's response to the answer in question 5 would have pretty much ended the call with "can I talk to an actual engineer as you are doing poor keyword searches on my answers". I do admit to hearing the "I will stab you" voice in my head on that one[1]. This reflects really badly on Google.

Plus the answer on question 8 is the best worded answer to using big-O improperly I have seen.

1) http://www.urbandictionary.com/define.php?term=I%20will%20st...

jussij 1 day ago 0 replies      
If this is true, then it's not surprising as usually the person asking the question is not up to speed on the details of the question being asked.

I recall a question, which was how do you stop a socket from overflowing?

I said what do you mean? If you write to a socket and it fails to accept the write it will fail. Sockets do not have any option to stop this.

Naturally I failed the question yet I asked for the correct answer and was told the answer is simple, just use a cache.

Nice answer, excepts sockets do not have caches.

Correct Answer: Add a cache to the socket to stop them failing but that was not the question.

While that answer is obvious, it was not the question asked!!

mrits 1 day ago 0 replies      
I would have stopped you half way through. You obviously know enough to move on.
asimuvPR 1 day ago 1 reply      
Sometimes I wonder if this approach has hurt Google's ability to innovate.
joncooper 1 day ago 1 reply      
I'm surprised when people are surprised that Google's interview process is obnoxious. That's pretty well established by this point, both by Google employees and others.
newsat13 1 day ago 0 replies      
Interviewing is a two way street. You have to be high enough in the food chain to be able to reject companies. Otherwise, you are going to just face such meaningless things over and over.
robmaister 1 day ago 0 replies      
I had a somewhat similar experience when I was doing an on-site interview for an internship at a different large tech company.

There were multiple interviews with short (15-minute) breaks in the middle. Most people asked a mix of technical and behavioral questions, but one of the interviewers did things a little differently.

After we briefly introduced ourselves, he immediately asked me a technical question. I usually talk through the problem and ask for clarifications, he mostly gave me non-answers. I was asked the same question by another company a week or two earlier, so I started writing out code on the whiteboard. At a few points I asked whether or not I should handle an edge case, and every single time he said "yes".

When I was done writing all of the code, it took up pretty much the entire board. He asked me - "Why do you have so much code on the board?" and I responded "because I'm handling a lot of edge cases". As I recall that was pretty much the end of the interview.

I'm generally pretty good at interviewing, so I took whatever he threw at me and just thought he was a little off. It's not hard to imagine someone who isn't great at interviewing or has imposter syndrome doing worse in that interview just because of the way the interviewer acted.

ryandrake 1 day ago 1 reply      
Knowing the right answer, or when "it depends", is not the expectation. You need to get inside the mind of the interviewer and figure out what he/she thinks is the right answer is, or guess what's probably written on the answer sheet. Think: "What answer would a know-it-all 23-year-old Stanford graduate give?" That, and not necessarily the right answer, is what will get you the job offer.

This is also called "cultural fit".

nebulous1 1 day ago 0 replies      
Well, I think it's clear that the author is qualified to move beyond this stage of phone screening. So, the interviewer was at fault for not passing him, mainly due to a lack of technical knowledge imo and possibly and incomplete cheat sheet.

That said, I question how he's phrased some of the question/answer pairs. For instance, this is a phone interview so the questioner can't capitalize KILL in the signals question ("what is the name of the KILL signal?"), which makes me wonder how the question was actually phrased. It does strike me that SIGTERM is what the 'kill' command will send by default, which could have been the intent of the question.

He obviously still should have passed though, all of his answers indicated a good knowledge of the subject, and that's even if you consider them to be ultimately incorrect. I guess it's possible that op's tone didn't ingratiate him to the interviewer, but that's impossible to say with the information we have.

eternalban 1 day ago 1 reply      
I would agree with "metadata" answer being correct.

"Each inode stores the attributes and disk block location(s) of the filesystem object's data." [1] A file's "attributes" are independent of its storage. One could also argue the notion that a FS object's ACL are attributes of the file.

[1]: https://en.wikipedia.org/wiki/Inode

XCSme 1 day ago 0 replies      
Well, I had a similar experience in my last (out of 9) interviews for a SWE position, and that interviewer was simply not accepting answers other then his, even though they were sometimes better. Welp, I will start again my interviewing marathon at Google next week, hoping that this time I meet the right interviewers (which is the only way you can actually get in, not by knowing stuff).
daenney 1 day ago 0 replies      
These are pretty much the questions I got asked on the recruiter screening interview for SRE/SWE.

But I kind of agree with the sentiment of "uhg, srsly, are we still doing this?". I answered a few of those with "not sure, I'd Google that". The recruiter's reply was "but what if Google's down". Well, there's always Bing.

rampage101 1 day ago 0 replies      
I think the person interviewing in this article should have seen the person doing the interview was looking for short answers. It is not a perfect interview process but I am not shocked he did not get it as you can see his annoyance as the interview goes on.

He could have answered, "because Quicksort is N * lg(N)". Instead he opted to have a long answer about it depends how the algorithm is implemented. It either shows he is completely unfamiliar with big-O or he chose to give a annoyed answer. He could have also answered that there are a family of algorithms such as merge sort which are also N * lg(N).

A bit skeptical of the transcript as well. Knowing a MAC address in bytes off the top of your head? Almost every other person would first think okay how many HEX characters is it, and how many bytes in a HEX. But he has this knowledge immediately?

laxatives 1 day ago 1 reply      
I had very similar intervies at Palantir and Yelp, albeit Yelp was understandably just a quick phone screen with a recruiter. However, the "trivia" interview at Palantir came from a forward deployed engineer on the DC based team I was interested in working with and one of my last hour long, onsite interviews of the day. Seemed like a big red flag at the time.
Osiris 1 day ago 0 replies      
I've seen a lot of these types of blog posts on here, about interview practices at the large tech companies. Because of these posts, I have no interest at all in seeking an interview with Google, Facebook, or Apple.

Maybe these types of interview practices are designed to reduce the applicant pool by scaring people away from even applying.

arturadib 1 day ago 1 reply      
Pretty sure Google's interview questions are under NDA.. Brave!
intrasight 1 day ago 2 replies      
The process seems geared towards hiring people right out of school since they'd have no expectation that such a candidate would be able to answer such questions.

Am I right in thinking that it's easier to become a Googler by starting a company that gets acquired than by submitting to such a broken interview process?

dekhn 1 day ago 0 replies      
I would like the original blog poster to state for a fact that the questions they posed are exactly the ones that were asked. In particular: the quicksort one. It doesn't jibe with my memory of how the question was asked (it was more like "what is the running time of quicksort").
kafkaesq 1 day ago 1 reply      
Recruiter: wrong, it's SYN, SYN-ACK and ACK; if Google is down you will need to know this to diagnose what the problem is. We will stop here because it's obvious that you don't have the necessary skills to write or review network applications. You should learn the Linux function calls, how the TCP/IP stack works, and what big-O means to eventually qualify if you are interviewed at a later time. Good luck, bye.

Whether he got interviewed for the wrong position by mistake or not -- how can Google begin to think that putting technically illiterate people in charge of "vetting" obviously highly senior people... could ever possibly be a good idea?

ddavidn 1 day ago 0 replies      
That's pretty similar to what I was asked over the phone in an interview for API support (I forget exactly what the title was) for Google Maps, I believe. I got the SYN, SYN-ACK, ACK answer; questions about sorting algorithms; and stumbled a bit on random Linux questions, even though I use it daily as my desktop OS and have administered various Linux web servers for years without issue. I guess I use the man pages too much. The recruiter didn't cut my phone interview short, but did tell me that the technical interview was going to be WAY harder and that I needed to study my Linux, low-level networking, and algorithms. It was a good interview experience to have, but left me feeling like I'd never have the knowledge to pass a technical interview there.
burgerdev 1 day ago 0 replies      
Did anyone bother to read up on this 'business' of his? I just spent some time in the Wayback Machine[1], and it strikes me as pretty odd: unbreakable encryptions systems (which are not disclosed), NSA backdoors everywhere and general paranoia.
geofft 1 day ago 1 reply      
7. what is the name of the KILL signal?

Me: SIGKILL which #define is set to 9.

Recruiter: no, it's "TERMINATE".

Me: SIGTERM (15) is different from the KILL signal (9).

Recruiter: that's not the answer I have on my sheet of paper.

You know, I think I've been asked this question on a Google phone screen - and I think the question is specifically "What is the signal that the `kill` command sends?". The answer is in fact SIGTERM, not SIGKILL; if you want SIGKILL you need to specifically say `kill -KILL` or `kill -9`. If you insist that it's SIGKILL, you're just technically wrong. And if you can't understand the question, you're missing very important skills; this sort of confusion will cause actual production problems.

Tempest1981 1 day ago 0 replies      
New theory: maybe it was a psychological test, to see how you would react in a difficult situation.
beamatronic 1 day ago 0 replies      
Have any current Googlers here had an experience where they knew someone personally, could vouch for their skills, but still could not get them in, due to them not passing the interview process?
teh_user 1 day ago 0 replies      
This wasn't a technical interview, it was an asshole detector. And it worked.

This test was written by somebody who knows the answers as well as this interviewee. It might have even been administered by somebody who is also in on the game. A tech prima donna like this is team cyanide. I once had to escalate to the VP of Engineering to get one such engineer off my project. The entire work atmosphere improved after he was removed.

mathattack 1 day ago 0 replies      
This seems a bit strange. I know some senior Google folks who spend a ton of time interviewing. Could it be that these are maxed out, and that HR people are forced to do the initial screens? In that case it's best to just feed them the simplest accurate answers possible. Similar to taking the SATs.

This type of process does imply something about their recruiting funnel. HR people asking technical questions suggests they've historically passed too many technically deficient people to overworked senior engineers.

overcast 1 day ago 0 replies      
This is hilariously depressing. Makes me never want to bother with the big guys.
Merovius 1 day ago 0 replies      
So someone care to explain to me where I'm going egregiously wrong, apparently? Because, at least on my machine with the code I spewed out quickly, the Kerningham way of counting bits is ~6x slower than a lookup table (including generating the table itself).


The Kerningham way code seems faster for very sparse arrays (i.e. only one bit set per uint16), but slower otherwise.

junad 1 day ago 0 replies      
There loss.

I am glad you kept a log of all the questions. I think the problem exists with a lot of tech companies our there. In my short career, I have been asked to solve mathematical problems, which is absolutely fine, but I write web apps that are not even remotely related or perform any complex calculations.

Illniyar 1 day ago 0 replies      
How is Tcp/ip stack, MAC addresses and low level linux commands are "up to date codong skills".

Not saying they are not important, but you could have asked the same questions 20 years ago.

mcbits 1 day ago 0 replies      
If I ran Google, I would just send unsolicited offers for a three-month trial contract to people who fit the profile of a talented software engineer with a friendly personality and who recently started searching for jobs. Yes, I know, "that's why you don't run Google," but I don't think it's that crazy. For example, I may or may not be a good fit, but even if I am, the chances are slim that I'll ever have the confidence to apply.
jbyers 1 day ago 0 replies      
This is 75% similar to a phone screen I passed (somewhat surprisingly, in hindsight) in 2003-2004. I don't think this is a director-level test, it's just a coarse engineer-track filter.
anilgulecha 1 day ago 0 replies      
This is what happens when a non-technical person conducts a technical interview.

Though I'm surprised this happened for a Google interview. Their recruitment workflow should now have allowed this to occur.

yAnonymous 1 day ago 0 replies      
Maybe they set unrealistic expectations to see if the applicant lies about meeting them and give wrong answers to see if the person acts like a smartass.
sonoffett 1 day ago 4 replies      
quicksort is O(n^2) which is definitely not the "best big-O" for sorting.
ayyn0n0n0 1 day ago 1 reply      
I think he took his website offline.

You can see read cached version here, http://webcache.googleusercontent.com/search?q=cache:53TICuY...

badmin 1 day ago 0 replies      
Had similar questions for an SRE role, but yes i didnt like the fact that i had to answer these over the phone to a recruiter. Also i was asked what is 2^16
Tempest1981 1 day ago 2 replies      
On #9, is it 16-bit or 64-bit values? Sounds like you may have been answering a different question. Isn't the standard answer to use a 65536 entry lookup table?

Edit: oh, are you reinterpreting the array of 10000 16-bit integers as 2500 64-bit integers? But then what operation do you use on each?

Either way, if you find yourself arguing with the recruiter, it's probably a bad sign.

fatdog 1 day ago 0 replies      
I think this is a very equitable process. If a medium-functioning retarded person wouldn't hire you, that's saved the company like $100 of time to ascertain your qualifications. This is much better than using biased metrics like problem solving sessions or personal assessments of character from people who will be working with them.
phuangcn 1 day ago 0 replies      
You can fire this Director of Engineering.
Scarblac 1 day ago 0 replies      
I was recently asked in an interview (for a position as programmer at a 3D printer startup): "When we have to update our software, we have to update thousands of machines. How would do you see that reflected in the _code_ of our _error recovery_?"

Am I stupid, or is that a hard to answer question?

Klockan 1 day ago 0 replies      
> Google pagerank: the ultra-secret mathematical formula demonstrating that sponsored search results rank higher than reality can.

I am not sure why he was rejected, but this sentence makes it clear that he isn't mature enough to be a directory so I doubt that Google misses him.

cookiecaper 1 day ago 0 replies      
Most people, at every level, are terrible at interviewing and hiring, and in fact a surprising number are conscious of that fact. As a candidate, you just have to know this going in, and expect to be made to jump through a lot of irrelevant/stupid hoops. Eventually you find someone who is adequately amused by your performance to give you a chance and hire you.

I don't think the recruitment industry is going anywhere anytime soon. I just wish there were some worthwhile recruiters in it (out of the dozens and dozens of recruiters I've dealt with, I've met one who is semi-competent (which is to say, not fully competent)). This is an area I'd love to try to startup in, I don't think any of the startups I know about are doing it right.

0xmohit 1 day ago 0 replies      
Q: What is 2+2?

 Me: 4 Recruiter: Wrong. 2 + 2 = 5 for very large values of 2.

joeblau 1 day ago 0 replies      
They need to get rid of that recruiter. He/She is obviously not technically educated enough in computer science enough to understand the meaning of what is being said - Only the literal answer.
animex 1 day ago 0 replies      
Wow, I need to apply for a director job at Google. I knew about 8/10 things to the level that the recruiter knew about them with my 20+ year old C knowledge. The guy who responded was way better but obviously overqualified!
tmptmp 1 day ago 0 replies      
>>Recruiter: I have to check that you know the right answers.

This is classic: the right answers!! Must be google getting infested with managers who don't have shit clue about what is programming and computer science.

darioush 1 day ago 0 replies      
This is exactly on par with my experience with them -- I was interviewing and a particular engineer just wouldn't let me move forward with "linked list" because he wanted me to say "queue".
ankimal 1 day ago 0 replies      
Am I the only one who thinks that this is a terrible way to hire any Engineer, Director or not? I may have hung up after first 3 questions saying that "this does not sound like a good fit to me".
Kiro 1 day ago 0 replies      
Both of them come off as really obnoxious. I highly doubt this is real though.
joesmo 1 day ago 0 replies      
"4. sort the time taken by: CPU register read, disk seek, context switch, system memory read.Me: CPU register read, system memory read, context switch, disk seek.Recruiter: right."

This is the exact question I got in a phone screen (although mine included CPU caches so was actually harder) for the lowest level SRE position at Google. That and the obvious lack of knowledge of their interviewer, who I'd expect to know these answers inside and out, point to Google lowering the bar extensively not only on their interviewing practices (where it certainly was never high as in quality) but on the actual quality of their hires. Any SRE could be Director of Engineering at Google, apparently, going by this test. I'd say that equates to not having a bar at all.

InclinedPlane 1 day ago 0 replies      
This reads as an indictment of the entire hiring culture of the tech industry, which it is. Hiring is one of the most important things any company ever does. It's also one of the biggest opportunities to attain a competitive advantage. And it's one of the most difficult tasks that any developer will ever participate in. And yet, consistently there is a lack of seriousness when it comes to hiring, and a reliance on bad, counterproductive cargo cult practices. It's not just embarrassing for this industry it has a big impact on the quality of life of developers and the quality of developer talent at companies. If you want to hire good people you need to put a lot of resources into it. And that means you can't just hand off these sorts of important tasks to interns who don't know what they're talking about. Hiring, even at the phone screen level, is not like comcast customer service, and any company that treats it that way is setting themselves up for failure.
poetwind 1 day ago 0 replies      
Perhaps the context of the interview is that you must answer using no more than three words or numbers. In this context defining a hashmap as a fingerprint or an inode as metadata is ok.
powera 1 day ago 1 reply      
As a person who's taken this exact same test:1) it's a pre-screen from an in-house recruiter. If you have 37 years of experience with computers and 24 years professional experience and any references/reputation, they should have skipped you straight to an phone interview with an engineer.2) Were you recording the interview? Because if it's an accurate transcript the recruiter should be fired.

I assume question 7 was actually "give the Big-O of Quicksort", if you refused the recruiter might have assumed you didn't know it and were trying to BS through the interview. If the recruiter was too stupid to ask, once that person is fired you'll get a new recruiter. Google is (was?) notorious for contacting the same candidates every six months regardless of previous interviews.

blahshaw 1 day ago 1 reply      
Looks like the page is down. Is there an archived copy somewhere?
manca 1 day ago 0 replies      
I believe the guy just talked with one of the non-tech recruiters from the agencies, not the actual Google employed recruiter.

There are bunch of those non competent recruiters playing smart asses...

asciihacker 1 day ago 0 replies      
>that's what happens when AI bots discover recreational drugs.LOL
asah 1 day ago 1 reply      
Another google HR "experiment" that obviously failed...
jblow 1 day ago 2 replies      
#9 is especially stupid because it's so context-dependent. SSE4 gives you a popcount instruction, for example, which would be easily the fastest way to do this, if available.
outworlder 1 day ago 0 replies      
Well, assuming the transcript is even remotely correct, they should start doing phone screens using algorithms. I'd guess they would outperform this recruiter.
andrewvijay 1 day ago 0 replies      
I'm feeling a bit confident looking at the questions. Woo.
botw 11 hours ago 0 replies      
for this level, isn't the process itself a bit humiliating?
k__ 1 day ago 0 replies      
Good to see that recruiting is broken for big positions too.
AndyBMapMan 1 day ago 0 replies      
Received a phone interview for the UK Google Maps team. Interviewer couldn't pronounce 'spatial'. My heart sank.

spat-e-all. spat-e-all. \o/

aviraldg 1 day ago 0 replies      
I would be extremely offended if I was in his position and an HR-bot (both literally and figuratively) wasted my time with an interview process like this.
samfisher83 1 day ago 0 replies      
While there is a notion that devs are in demand for a company like google they have so many candidates that can be dicks to people and get away with it.
loeg 1 day ago 0 replies      
He's confused an inode (file object) with an inode number (the index). But who cares? This is not a useful interview question.

His confusion carries over to the stat question, because he's still thinking an inode is just an index. That said, I wouldn't describe stat() as returning an inode, either... it fills a stat struct. That's all. Inodes can have more or less information than is present in the standard stat structure.

If this is how Google interviews director candidates, they've really gone downhill since I last tried to interview there in 2011 or so.

btbuildem 1 day ago 0 replies      
Looks like the recruiter failed the interview here.
hvmonk 1 day ago 0 replies      
Looks like the other side was just a turing machine.
yarou 1 day ago 0 replies      
Just a general comment, again anecdotal. There seems to be a trend of recruiters performing bait-and-switch in SV currently.

For example, you may be hired for a technical role, but you end up doing manual work or bash script maintenance.

Another tactic (this one is pretty hilarious) is that hiring managers will continuously interview new people for the same job description, without any intention of hiring them, in order to keep the slot open. Sad, but true.

DrNuke 1 day ago 0 replies      
It was not the answers but the cultural fit ehehe...
meshko 1 day ago 0 replies      
I've interviewed at google for a lower position, and recruiters don't do phone screens or ask technical questions.
mk-61 1 day ago 0 replies      
Feels like overqualification for that position.
ausjke 1 day ago 0 replies      
"Powered by G-WAN" but that is down.

Based what the interview goes, Google might be on the "down" path too.

sidazad 1 day ago 0 replies      
If I were interviewing him and he gave those answers I'd definitely give him a second round and try to get him in.
StreamBright 1 day ago 0 replies      
This is epic. Why would not Google just give a written test and not use a recruiter for this? I do not see the point.
stefap2 1 day ago 0 replies      
I had a Google phone interview around 2008. I remember a question how much is 2^5 (without calculator :).
BickNowstrom 1 day ago 0 replies      
This entire blog post does not cast the author in a favourable light.

First off: It is rude to post the questions and expected answers, perhaps moreso when you just failed to pass the test yourself. That reeks of sabotage out of spite.

Then pulls the argument from authority, aggrandizing his accomplishments in an effort to salvage some of his obviously bruised ego.

> Is Google raising the bar too high or is their recruiting staff seriously lacking the skills they are supposed to rate?

Seems like Google raised the bar just high enough to weed out the unpleasant personalities. A job interview, even a phone screening, is not all about technical skill, it is also about soft skills: Is this person a pleasant and communicative person?

> Recruiter: wrong, it's file metadata.

> Me: the inode is an index uniquely identifying ...

Here is where the interview (or at least, this is probably how the author remembered it) went off the rails. Arguing with the recruiter and trying to right a perceived wrong was just plain bad strategy.

From there on out it starts being argumentative, and you can see the recruiter having none of it.

> Recruiter: Quicksort has the best big-O.

Here you can clearly tell the recruiter is just fishing for "correct" answers at this point. Just tell the recruiter with the big-O is here, don't be obtuse or difficult.

> Why not let me compare my code to yours in a benchmark?

Here it turns into a code-measuring contest. Not a very bright idea. By this point in the interview I find this author's personality very grating and needlessly argumentative. He can't do anything right by now.

> We will stop here because it's obvious that you don't have the necessary skills to write or review network applications.

The recruiter seems to agree with me, but I doubt this is what was said exactly. The conclusion may be similar though.

> Maybe Google should have stated that practice is not necessary for the job.

Maybe Google does know best what is necessary for the job. Or maybe the author knows, but he is too curt in getting his views across. Not a favourable trait.

It is hard to not get salty over a failed job interview. It takes strength of character to not burn bridges and try again in the future with a more pleasant humble approach. Take it as a lesson and move on.

Qantourisc 1 day ago 0 replies      
The best solution to this problem is multiple choice.
bsg75 1 day ago 0 replies      
In summary: "Recruiter: that's not the answer I have on my sheet of paper."
zxcvvcxz 1 day ago 1 reply      
This is weird - do big companies actually ask stupid questions I can google, and let non-technical people lecture engineers on Big-O?

Hope this obviously talented person finds more meaningful employment elsewhere.

greyman 1 day ago 3 replies      
I once coded chess playing algorithm for fun, and can confirm that the recruiter was correct on #9: you count bits by using a lookup table and then sum the results. It's the quickest way. But I am not sure if this is possible to figure out immediately without such experience...
wnevets 1 day ago 0 replies      
I really hope this isnt real.
danharaj 1 day ago 1 reply      
Mediocre people can't evaluate exceptional people. What mediocre people think is knowledgeable can't be exceptional knowledge, by definition. If you want to find exceptional directors of engineering, you need an exceptional person worthy of being director of engineering to evaluate them.

In seeking victory, not going beyond what everyone knows / is not skilled.

Victory in battle that all-under-heaven calls skilled / is not skilled.

Thus lifting an autumn hair does not mean / great strength.

Seeing the sun and moon does not mean a / clear eye.

Hearing thunder does not mean a keen ear.

So-called skill is to be victorious over the easily / defeated.

Thus the battles of the skilled are without / extraordinary victory, without reputation for / wisdom and without merit for courage.

- Sun Tzu Ch. 4 (Denma translation)

omginternets 1 day ago 0 replies      
This entire transcript reads like a metaphor for democracy.
jwatte 21 hours ago 0 replies      
Thinking more about this, it's also possible that the candidate failed on understanding what the screener wanted, and giving it to him.If the question was "what signal does kill command send by default" and the candidate hears "what is the name of the kill signal," that's an indicator about important communication skills.
yandrypozo 1 day ago 0 replies      
This is the best example of one unintentional DoS attack, now I cannot read it anymore :(
rkwasny 1 day ago 0 replies      
looks like he needs a better web server for hosting his blog :-)
venomsnake 1 day ago 2 replies      
I feel sudden brick wall awaits in a recruiter career path once the google people read that.

Not only because of that interview, but the questions transforms into - who else have we missed from the great guys ...

dominotw 1 day ago 1 reply      
anyone have a mirror ?
fspacef 1 day ago 0 replies      
Can anyone access parent site? Seems we have given it the HN kiss of death.
mrmrcoleman 1 day ago 1 reply      
Site's down?
NetStrikeForce 1 day ago 0 replies      
Offered without comment:

The site has been flaky, if not down, for hours now.

dreamdu5t 1 day ago 0 replies      
It seems easier to get Google to fund and then acquire your startup then get hired there.
gohrt 1 day ago 1 reply      
> What is the opposite function of malloc() in C?

Google uses C++. Do they use malloc/free?

ayyn0n0n0 1 day ago 0 replies      
aaaand website is offline 100%
jsmthrowaway 1 day ago 3 replies      
I am doing neither of those things. I said it was tempting, because it puts things I've read about G-WAN into perspective (the claims I saw some time back when I was shown a heads-up versus nginx were questionable, and it's an interesting data point). That's why it's an unrelated addendum, and it's completely unrelated to the blog post at all.

I have no desire to discredit someone I have never met and whose name I do not know, much like I have no desire to have my intentions explained to me by a Hacker News commenter. I wrote, quite clearly, that I wasn't doing something. To directly assert that I am in fact doing that thing and then ascribe further malice to it is to challenge my honesty and integrity, and I'd appreciate if you'd not do that in the future because you've never met me and know nothing about me.

There is an interpretation of my first bullet that would support your conclusion, but I only put down my first bullet to establish relevance in the comment, not to connect the two things.

wiyarmir 1 day ago 2 replies      
whatvergoogle 1 day ago 0 replies      
lol, site down. nice scale
whatvergoogle 1 day ago 0 replies      
lol, site downnice engineering work!
leshow 1 day ago 3 replies      
Google doesn't ask these types of trivia questions. I don't believe that you were talking to a person from Google one bit.

Everything documented about their hiring practices and anecdotal evidence from people gone through their interview process is that you talk with a real engineer and write code for your interview.

The Nobel Prize in Literature 2016 awarded to Bob Dylan nobelprize.org
725 points by eCa  2 days ago   332 comments top 54
kristianc 1 day ago 8 replies      
I can't help but come back to:

A South politician preaches to the poor white man

"You got more than blacks, don't complain

You're better than them, you been born with white skin" they explain

And the Negro's name

Is used it is plain

For the politician's gain

As he rises to fame

And the poor white remains

On the caboose of the train

But it ain't him to blame

He's only a pawn in their game.

YouTube: https://m.youtube.com/watch?v=KY2lQV3ADfc

As it seems especially relevant today. It's a song about the killing of civil rights activist Medgar Evers by a poor white farmer in the 60's. Dylan addresses the civil rights movement in a way that avoids laying the blame squarely at the feet of the angry racist who pulled the trigger, instead placing the blame with politicians who sow hatred, insecurity, fear and division for their own ends and don't care what mess they leave behind.

When I see Trump rallies today full of angry people complaining their country has been 'taken from them' I can't help but think of that song.

fitzwatermellow 2 days ago 5 replies      
Totally 100% well deserved. Just imagine the 13 year old out there discovering "Masters of War" or "Idiot Wind" for the first time today. Their entire point of view is about to change. Mind upon to hitherto unknowable vistas. Ergo, the absolute benchmark of what Great Literature strives to embody.

Also worth checking out is Dylan's controversial speech upon receiving the the MusiCares Person of the Year 2015 award. I wonder what he'll have to say to the World when he gets to Stockholm ;)

Read Bob Dylan's Complete, Riveting MusiCares Speech


And of course some essential viewing. D.A. Pennebaker's seminal documentary classic Don't Look Back which follows Dylan on his concert tour of the U.K. in 1965.

Inside Criterion's Incredible Restoration of Dylan Doc 'Don't Look Back'


And from that timeless English tour, a masterful performance ;)

"It Ain't Me Babe" (Live, 5/7/65 - Free Trade Hall, Manchester, England)


jcrei 2 days ago 3 replies      
Come writers and critics

Who prophesize with your pen

And keep your eyes wide

The chance won't come again

And don't speak too soon

For the wheel's still in spin

And there's no tellin' who

That it's namin'

For the loser now

Will be later to win

For the times they are a-changin'.

nabla9 2 days ago 2 replies      
Bob Dylan now has Nobel Prize, Presidential Medal of Freedom, Officier de la Legion d'honneur, Pulitzer, 12 Grammy's, Golden Globe, Academy Award, ...
circlefavshape 2 days ago 14 replies      
Despite being a massive admirer of Dylan's work, I'm not sure that I'm good with this

> for having created new poetic expressions within the great American song tradition

There's no doubt he did this, but ... do songs count as literature? I'm not really sure they do, and much as I love the songs, the lyrics by themselves don't have anything like the impact (on me at least) of top-notch poetry

pilsetnieks 2 days ago 4 replies      
It seems that Haruki Murakami is the Leonardo DiCaprio of Nobel prizes.
xamuel 2 days ago 10 replies      
Fantastic! Anyone know if it's the first Literature Nobel given to a pure singer-songwriter?

Here are three Dylan songs with big literary value:

* "Lily, Rosemary and the Jack of Hearts": an amazing example of musical story-telling

* "The Ballad of a Thin Man": Some of the most post-modern lyrics ever put to music...

* "Like a Rolling Stone": One of the most influential songs of all time

hobochili 2 days ago 0 replies      
Darkness at the break of noon

Shadows even the silver spoon

The handmade blade, the child's balloon

Eclipses both the sun and moon

To understand you know too soon, there is no sense in trying

Pointed threats, they bluff with scorn

Suicide remarks are torn

From the fool's gold mouthpiece the hollow horn

Plays wasted words proves to warn

That he not busy being born is busy dying

Temptation's page flies out the door

You follow, find yourself at war

Watch waterfalls of pity roar

You feel to moan but unlike before

You discover that you'd just be one more person crying

So don't fear if you hear

A foreign sound to your ear

It's alright, Ma, I'm only sighing

grellas 1 day ago 0 replies      
A real testament to the power of imagery when skillfully and artfully handled.

Dylan himself was something of a hustler in his own way (not being negative here: he was also quite an amazing person) but he worked hard at his craft, delving deeply into Lord Byron and many others to hone his poetic skills - and it showed! So many artists gained fame doing his songs owing to the limitations of his own signing voice (his has a raw quality that is appealing in its own right but probably more for specialized audiences as compared to what the signing groups with more of a popular bent could achieve). "Can't sing, can't play" was one putdown popular in that era. But oh how this music soared from one with a raw force, a poetic inspiration, and a truly superb talent whatever the technical limitations - and all wrapped up with the zeitgeist of the times, perfectly capturing the sense and urgency of the civil rights movement.

Very nice to see the accolades now being bestowed on a man who effectively changed a generation in profound ways.

barrkel 2 days ago 0 replies      
Sets a useful precedent - songwriters are the poets of our time and are under-appreciated from a critical perspective.

There's still time for Leonard Cohen; he'd have been my choice. But another songwriter probably won't happen again so soon.

pjmorris 2 days ago 1 reply      
I love how so many on the thread have Dylan lyrics to contribute. Seems like empirical evidence for his impact. I listened obsessively to every shred of Dylan I could lay my hands on when I was a teenager.

With apologies to Bob Dylan...

Then she opened up a book of poems

And handed it to me

Written by an American poet

From the twentieth century

And everyone of them words rang true

And glowed like burnin' coal

Pourin' off of every page

Like it was written in my soul

From me to you

Tangled up in blue

joshaidan 2 days ago 1 reply      
Everything is Broken always felt like a theme song for my job in telecommunications at a service provider. Especially the parts about broken lines and broken switches. That's just how universal Dylan's literature really is:

Broken lines, broken strings

Broken threads, broken springs

Broken idols, broken heads

People sleeping in broken beds

Aint no use jiving

Aint no use joking

Everything is broken

Broken bottles, broken plates

Broken switches, broken gates

Broken dishes, broken parts

Streets are filled with broken hearts

Broken words never meant to be spoken

Everything is broken

Seem like every time you stop and turn around

Something else just hit the ground


YouTube version of the song: https://www.youtube.com/watch?v=ngVMh3vJsVU

guelo 1 day ago 0 replies      
This goes up there with Obama's Nobel for peace. It's an insult to the thousands of more deserving real authors. Baby Boomer's 1960s pop culture has been overhyped for so long that it's just exhausting at this point. I always find it disgusting that Dylan is celebrated as anti-war even though he wrote Neighborhood Bully, a rabid defense of Israel's wars where he ridicules calls for peace.
cafard 2 days ago 0 replies      

On the whole I agree with Rorem. But on the range of Nobelists for Literature, I guess that Bob Dylan isn't all that much an outlier.

adaisadais 2 days ago 0 replies      
Inside the museums, Infinity goes up on trialVoices echo this is what salvation must be like after a whileBut Mona Lisa musta had the highway bluesYou can tell by the way she smiles

"Visions of Johanna"

I don't think that anyone in modern culture has impacted society in the ways Bob has.

godson_drafty 1 day ago 0 replies      
I disagree with the Nobel committee here. They choose to ignore numerous deserving, hard-working writers toiling in obscurity and instead heap more praise on one of the most worshipped musicians of the era.
poetwind 2 days ago 0 replies      
I have always wondered what is blowing on the wind, it seems Dylan must have captured something important, I am still wondering many things and thinking that wind curves are very windy.

Added: For a good singer it must be fatal to be poisoned with the virus of fame, you become one more commodity, good for selling books and records but no more genuine value.

I hope the next Nobel in Literature to be for a twitter writer, I don't have anything against Dylan, it is only that I find his works are not Literature but very good songs.

BurningFrog 1 day ago 1 reply      
My main complaint about Dylan is his terrible singing voice. Imagine what could have been if he had swallowed his pride and teamed with a great singer!

Of course, this complaint is invalid for a literature prize, so I can only say it's well deserved.

Maybe this can open up for film and TV writers to be considered. They're the ones mostly filling the storytelling needs book authors did when Nobel instituted the prize.

xHopen 2 days ago 0 replies      
.... I mean... I don't know , really I don't know... you put close to each other Bob Dylan and Mario Vargas Llosa and you want to cry
ehudla 1 day ago 1 reply      
Two famous laureates are Sartre and Bertrand Russell. Both wrote more in more conventional genres for the prize, but most think the prize was awarded not simply for the literary quality of their work.

Another thread connecting their awards with Dylan is that all three authored widely read and acclaimed autobiographies or memoirs.

xkaycd 21 hours ago 0 replies      
I know I'm super late to the game, but Neighbourhood Bully is really underappreciated. Great song, great poetry.


Overtonwindow 2 days ago 2 replies      
Am I the only one who said "Bob Dylan"
redwood 2 days ago 1 reply      
A less well known but powerful Dylan song, sung by his then lover Joan Baez (from Palo Alto)https://www.youtube.com/watch?v=xUZGGFOV6FM

With God on Our Side (Live 1966)

ashkulz 1 day ago 0 replies      
Am I mixed up too much, am I mixed up too hard

Why am I walking, where am I running

What am I saying, what am I knowing

On this guitar I'm playing, on this banjo I'm frailin'

On this mandolin I'm strummin', in the song I'm singin'

In the tune I'm hummin', in the words I'm writin'

In the words that I'm thinkin'

In this ocean of hours I'm all the time drinkin'

Who am I helping, what am I breaking

What am I giving, what am I taking

But you try with your whole soul best

Never to think these thoughts and never to let

Them kind of thoughts gain ground

Or make yer heart pound

But then again you know why they're around

Just waiting for a chance to slip and drop down

-- Last Thoughts On Woody Guthrie

6stringmerc 2 days ago 0 replies      
I'm not sure literature would be as highly esteemed if oral history and the bards / singers / poets had not established roots in various cultures as the way to convey large, abstract or emotional things. They're good relatives I think. Writing by the masses is still fairly new in the grand scheme of things. Singing songs to each other, quite a bit longer tradition, from what I can tell looking through some stuff back in uni (including an Early Middle English course).
techbio 2 days ago 1 reply      
"I just want to know how your head feels under something like that/Under your brand new leopardskin pillbox hat"- Bob Dylan, 1966
nathancahill 1 day ago 0 replies      
Listen to this excellent literary analysis of one of Bob Dylan's best songs: https://beta.prx.org/stories/19352

"Christopher Ricks, Professor of Humanities at Boston University explores the poetry in Bob Dylan's songs."

busyant 2 days ago 0 replies      
Has Dylan himself commented on the award?

He's unpredictable (and irascible) enough to make me want to hear what he thinks about all of this.

emodendroket 1 day ago 0 replies      
Nobody's written any books recently?
Salamat 1 day ago 0 replies      
"Bob Dylan hasn't Recanted Praise for Rabbi Meir Kahane.Yes, you read that right. Bob Dylan said Meir Kahane, who favored the forced expulsion of Palestinians from their homeland and whose racist Kach party has since been banned from Israeli politics, is a really sincere guy whos really put it all together. https://desertpeace.wordpress.com/2011/04/14/bob-dylan-joins...
dzdt 2 days ago 0 replies      
The times, they are a-changin'! Never expected to see a songwriter honored with this prize.
samblr 2 days ago 0 replies      
Well, I try my best

To be just like I am

But everybody wants you

To be just like them

- Maggie's Farm

youdontknowtho 1 day ago 0 replies      
There is a line from Paul Simon from the 60's about how people who called him and Dylan poets didn't read real poetry. (aww snap)

I dig Dylan, though. He's awesome.

mustermaster 2 days ago 0 replies      
You don't need a weather man to know which way the wind blows
mariusmg 2 days ago 0 replies      
It's like giving a medicine award to yoga instructor.
d3ckard 2 days ago 0 replies      
Great! Funny thing, just have been talking with friend this morning about his special status as a songwriter. Very brave and I believe right choice.
Quequau 2 days ago 0 replies      
Finally some news that makes me truly happy!
seizethecheese 1 day ago 0 replies      
We've reached peak Boomer.
os7borne 1 day ago 0 replies      
Is it just me or has the conversation on this thread gone completely off topic?
ionwake 1 day ago 0 replies      
I can't find a video or pod cast of this anywhere - anyone got a link ?
forrestbrazeal 2 days ago 1 reply      
Somewhere, Steve Jobs is smiling.
tambourine_man 2 days ago 0 replies      
Well, I guess I can play a song for you

Yours truly,Tambourine Man

Zelmor 2 days ago 0 replies      
Well deserved.
johansch 1 day ago 0 replies      
This might be interesting; the original, Swedish/English/French/German-language announcement, including audience reaction.


(Yeah, the "permanent secretary of the Swedish academy" is showing off her multilingual skills quite a bit...)

mbrock 2 days ago 0 replies      
My love, she speaks like silence

Without ideals or violence

She doesn't have to say she's faithful

Yet she's true like ice, like fire

leephillips 1 day ago 0 replies      
I never really "got" Bob Dylan.


hasbroslasher 1 day ago 0 replies      
Must've been a slow year for books
543y4eryy4 2 days ago 6 replies      
hiou 2 days ago 5 replies      
OrthoMetaPara 2 days ago 0 replies      
maybe Michael Crichton or the Harry Potter lady will win it next year...
roberto2016 2 days ago 0 replies      
Give me a break!
haalcion2 2 days ago 0 replies      
Thank goodness! He deserves it much more than Peter, Paul, and Mary.
GFK_of_xmaspast 2 days ago 0 replies      
What's up with the low-effort comments in this thread?
du_bing 2 days ago 0 replies      
I'm blowing in the wind...for I have no job...
Taking PHP Seriously slack.engineering
761 points by josephscott  1 day ago   603 comments top 74
swalsh 1 day ago 38 replies      
I work on PHP at my day job (in a public company), before this, I came from Ruby, and .NET before that.

I'm convinced the reason so many successful projects use PHP, is not because of any inherent nature of the language. I think it's the people who use it. They just don't care. A successful project needs to be started by someone that cares just enough, but not too much.

If you're programming in PHP, you're not running around talking about "convention over configuration" giving talks, or trying to make your code beautiful. It's a garbage language, and you know it. But it allows you to get something up and running, so dang quick. You're failing while the other guy is still updating his gem file. You're advertising while the other guy is trying out some fancy new deploy script. You're incorporating feedback while the other guy is just starting to get to work. When he finally fails, he's used up half his runway, whereas you, the guy who didn't give a fuck about your code has gotten past that first failure, and are finally getting some traction.

Hopefully, the next guy to join the company will clean up your shit. The other guys code may not look like shit, but it doesn't solve any useful problems... so they never got the chance to hire that next guy.

Klathmon 1 day ago 26 replies      
The article points out that arguably the best part of PHP is the "shared nothing lifecycle". That each request starts new, and the process dies at the end of the request. It's by far my favorite part, and I completely agree that it makes "reasoning about" (boy do I hate that phrase...) your program much easier.

Why are there no other "competitors" in this space? Why do most other languages go with the alternative route of using an event loop or daemonizing your "server" to serve up requests? I can understand why Node.js does it (otherwise the async nature would just be an annoyance for no gain), but why haven't there been any other server-side languages that not only work well like this, but actively target it?

It seems like it would be easier for everyone involved. You wouldn't need much of a GC when the process is killed every time, you don't need to worry about async IO or multi-threading or catching errors or any of the other annoyances that come with most of the traditional "event loop" way of doing things.

So what's the catch?

skippyta 1 day ago 0 replies      
I worked in PHP at Box for about 3 years. This article does a great job of reflecting my sentiments on the language. In particular, I'm glad to see that the author recognizes that there are some glaring issues with PHP that aren't tradeoffs in favor of something else - they're just warts.

That said, PHP is really good at what it does - providing a framework and environment for serving web requests efficiently and easily. I find developing in it very fluid once you know how to avoid the warts. A lot of the flak that PHP receives as a language revolves around the fact that it doesn't actively discourage developers from doing bad things, and sometimes the language itself does some crazy stuff (as shown in the article with the divide-by-zero behavior). I think this is a huge shortcoming of the language, especially as code bases and teams grow and your organization needs to depend on the language more and more for safety. That said, I still don't hate working with it. Sometimes I rather enjoy how quickly I can develop in PHP, and how reliable it can be if you know how to operate it.

I think in all, it was a bit of a slog to get to the point where I am with PHP today - to the point where I understand its strengths and flaws, but ultimately I think it does have a place in modern webapp development. I think Hack and HHVM are excellent spiritual successors to what PHP tried to (is trying to?) accomplish, and that they do a great job of hiding or eliminating some of the warts of their parent language.

Kudos to the Slack team for being pragmatic about their approach to the technology, and hey again to all of my former colleagues working there!

rpeden 1 day ago 2 replies      
I've had to do some PHP work recently, on a fairly old school PHP codebase for a high traffic website, after spending most oy my career working in Java and C# (and I still do most of my work in those languages).

I've read a lot of PHP hate over the years, but I've found working with it in practice to be decidedly...not bad. Perhaps the codebase I inherited is better than most. But I've had to make some fairly major updates, and they've proven to be far less painful than I had expected based on the amount of PHP attacks I'd read online.

Maybe the snobbery toward PHP is a good thing? There are some really big PHP-based communities out there, Wordpress being probably the largest. And in these communities, there appears to be a large demand for paid consulting and plugins. Sure, there's a ton of competition on the low end, but it's an area where a really great developer could stand out from the crowd and do very well financially, especially for more complex consulting and dev work since so many good developers turn their noses up at PHP.

sigi45 50 minutes ago 0 replies      
Wrote Java code for few years and was writing php code the last 2,8 years.

While it doesn't matter that much at the end of the day, php is slow compared to java. A language which has so much hidden potential performance (from 5.6 to 7) can't be that good.

Also a lot of stuff i was used to in java is now also how php developer write code but with a language which doesn't support it properly. Annotations for example.

The worst thing was the type annotations in comments. Why do you write type annotations in your php comments? Because otherwise your ide can't protect you from those errors. and it doesn't provide you with proper code completion.

When you use tomcat and basic servlets or spring, you can write code quick and easy without any problems. Not sure why you wanna would use php.

Tooling is much better (IDE support, Profiler support) and Debugging is much better (simple to connect, can drop frames) and yes java has hot code replacement.

I can change the code while i'm debugging it and than drop the frame and test it again without reloading anything.

And at the end of the day you do know a language which you can use for android, server, games, desktop clients and it is cross platform out of the box.

agentgt 1 day ago 1 reply      
It is not entirely clear if the author aka Slack chose PHP with these reasons in mind apriori or did they choose PHP first and are now justifying why their choice of PHP is not bad.

I'm going to guess they picked PHP because they knew PHP and not because of the nice reasons mentioned in the article. That is the article should be "why slack is sticking with PHP".

Almost all the major languages are actually (despite lots of HN debate and arguments) fairly good choice for developing not because the major languages are expressive/powerful but because they have very very mature tools (e.g. Java sucks but the JVM and its tools are very mature) and lots of people who know it.

Basically you could write a plethora of articles with "Taking MAJOR_BORING_LANGUAGE Seriously".

For example I'm responsible for choosing Java for my companies startup. Java historically is not a very productive language to pump something out but in recent years it has vastly improved... regardless I chose Java because thats what I knew at the time and I would pick it (or some other JVM language) again. And I could rattle off whole bunch of reasons why the JVM still kicks butt but the reality is I am biased because of my familiarity.

calsy 1 day ago 0 replies      
Come on, PHP is the 'Justin Bieber' of languages, everyone knows it. Its the most successful and widely used web server language in use and with anything so popular it has a large group of haters.

If anyone wants to come off like a 'serious' programmer, all they need to do is denounce PHP as a horrible aberration, a frankenstein of a language. Most don't even know about the changes in the language over the last decade, they just hate it to stay inline with their peers.

However, those opinions dont line up with the facts. PHP goes beyond semantics of language, it's a complete service for delivering dynamic HTML from the server. Why is it so successful? It is one of the most robust, well supported, battle tested languages to appear in the last 15 years. Its support is guaranteed on any hosting platform or cloud solution available. It has a large array of libraries capable of integrating with most any service whether that be databases, web apis etc. It has the ability to scale for high demand, as demonstrated by the many large corps that use it.

If you want to rip on PHP because it's cool, I think you're simply shooting yourself in the foot and ignoring a tool capable of performing almost any task you would require of it on the server side.

andreygrehov 1 day ago 2 replies      
Hack is awesome, but we decided to go with PHP 7 and this choice was primarily made because of lack of tooling on the Hack side. Things like New Relic are not available and these type of things do matter a lot when it comes down to choosing the programming language.

I must say that PHP 7 is a great language nowadays. Most of the modern concepts are baked into a language or are about to be developed.

At some point, I wish Hack and PHP merge into a single language in the future, somewhat similar to what happened to Node and iojs. I'm not sure if Hack is going to be around in 5 years, but I'm pretty confident about PHP.

I'd definitely love to see more articles about Hack and people's experience with using it in production.

staticelf 1 day ago 1 reply      
I was kind of surprised to read this and started to think this was just a copy of a previous speech I've heard before.

I was right it was: https://www.infoq.com/presentations/php-history but the author is the same person.

It is a good speech and I've been developing in php for years, written a blog post (http://sucky.ninja/leaving-php-is-too-expensive/) about it but I do no longer use php for my backends.

I've whole-heartedly switched to ASP.NET since my productivity is increased with it and I can actually use the language (C#) for other things. I would've agreed with the author a couple of years ago but with Azure, AWS and other cloud services it is simply no longer true that php gives developers a quicker feedback loop. I can setup a node server with gulp and start working in 10 minutes or I can start a new ASP.NET project and deploy to production right after the project creation has completed. With php I still have to setup a virtual machine etc etc.

I would not go back, even if it is cheaper.

callesgg 1 day ago 2 replies      
That example of "Surprise type conversions" is crazy.Did not know that.

While i do not think PHP is a perfect programing language. There is one think i LOVE about PHP, it is that the PHP "community's" default way of documenting code behavior is to make a small example.

When i read most other languages documentation i read it. Then i need to make a small test to verify that i understood it.

All those tests takes a long time to make and i have to make them over and over again, every time i forget the way a function behaves.

Tehnix 1 day ago 3 replies      
I find the virtues quite uncompelling, take for example

>First, state. Every web request starts from a completely blank slate.

Except for, you know, when you don't want to reinitialize everything everytime someone makes a new request. There are tons of things that you only need to run once.

>I claim that PHPs simpler think; edit; reload the page cycle makes developers more productive. Over the course of a long and complex software projects life cycle, these productivity gains compound.

I cannot disagree enough with the conclusion he draws from the quick feedback loop in PHP. I do PHP in my day job, because that's what our codebase is in, but recently I finally got the opportunity to use Haskell for a side project. The feedback-loop might be slower (honestly not by much, automatic reloading is a thing in almost any framework), but I'm a zillion times more confident in my code, because you are able to encode so much logic in the type system, meaning the compiler will catch whatever. Contrast this with PHP, where I'd almost have to visit every branch of code when I alter something because of it's many weird behaviours. Particularly when refactoring code, which you often end up doing while hasing something out.

Also, PHP works at a quite coarse granularity of concurrency. A thread per web request only? As soon as you want to do something more advanced, you are forced out into the many patchwork solutions (wanna do async? queue that shit).

Sure, a lot of people have done a lot of quite cool projects in PHP, but I would much more benefit that to the lower barrier to entry - heck PHP was my first language and I made a CMS from scratch without even knowing much of what I was doing.

That said, it has come a long way, and something like HHVM/Hack definitely helps a bunch! I just think the pros in this blog post are quite weird and IMHO incorrect.


justinlardinois 1 day ago 1 reply      
PHP was the first programming language I ever used, so it holds a special place in my heart. And I use it daily at my current job.

I have to disagree with this article. PHP is a heavily flawed language. It's very easy to get started with PHP, but there are too many pitfalls that are too easy to fall into.

Most of the "Virtues of PHP" are available in other web languages if you use the right framework. And if you use those languages you'll benefit from the consistency and predictability that come from having a clear design philosophy from the start.

I don't think PHP is a bad language. It's possible to write good software in PHP, and it's possible to work around the flaws if you really know what you're doing. If your software is already written in PHP, it's probably not worth it to throw it out and rebuild it in something else. But I don't think it's worth the trouble if you have a choice, and I think writing new software in PHP should be avoided.

I'll admit I'm not familiar with HHVM and Hack. Maybe they alleviate PHP's problems.

P.S. Most of the points under "The Case Against PHP" are also issues with Javascript. But the difference is that if you're developing a web application, you have to use Javascript. You don't have to use PHP.

rahul286 1 day ago 0 replies      
We are mostly (95%) a PHP company but going by trends; we did some projects in Python, NodeJS and Rails a few years ago.

Now I look back; I see the projects which have technical debt were flawed in design and did not get maintenance they needed. Most of them did not get traction to the point where scalability issue came into the picture.

So this year, we started moving that 5 % non-PHP projects to PHP counterparts. Again, we are miles away from any real-world scalability issue, but at least we are now able to maintain projects as we have a large PHP team.

At a small to mid-size organization level, it is more important to use one language for all projects.

I believe technical debt is not related to the choice of language but anticipating direction a project might take and picking up right design patterns to support that.

Which programming language is better is a highly overrated question!

I wish I had learned this few year ago.

bradleyjames 1 day ago 1 reply      
My assumption is they already knew PHP before setting out on this (if not I'd be interested in hearing about that). What you know is a huge part of these decisions. I doubt many of the sites noted truly picked PHP after sitting down and doing a comparison of all the popular languages across the board. Their systems grew out of what they knew and there was no time to rewrite or maybe there wasn't a need either. If you like PHP and can support it good for you.

Regardless of their findings I wouldn't recommend anyone learn PHP if starting out.

combatentropy 1 day ago 1 reply      
PHP is wonderful as a thin layer of glue between your database and the web browser. It's when you write a thick middle layer that PHP gets unwieldy.

Business logic: Don't write it in PHP. Write it in PostgreSQL.

Authentication: Don't write it in PHP. Use Apache 2.4's mod_auth_form. Replace hundreds of lines of PHP code with a few lines of Apache config. When it gets to your PHP script, all that's left to do is read $_SERVER['REMOTE_USER'].

Authorization: Don't write it in PHP. Use one of Apache's modules (LDAP, DB, or even file) or if possible make your users all very restricted database users and use database permissions more.

Don't need a database? Then why not handle it all on client-side JavaScript?

I'll admit that my advice fits well with CRUD web apps. If you're doing something else, PHP may be gross.

But really, my goal in programming (don't always reach it) is for PHP to just make a simple database call and wrap the result in HTML. If you're doing 123 == '123foo', can you move that up into the database or down into the browser? If you're writing elaborate class hierarchies in PHP, I think you're doing too much in PHP. I write a few functions, if needed, but mostly move all data processing to the database or browser.

paulddraper 1 day ago 2 replies      
> Virtues of PHP

> First, state. Every web request starts from a completely blank slate.

> Second, concurrency. An individual web request runs in a single PHP thread.

> Finally, the fact that PHP programs operate at a request level

Isn't this just "virtues of Apache modules"?

There's mod_python, mod_perl, and mod_ruby. Are state, concurrency, and global requests virtues of these languages too?


Even if you do somehow convince me that these virtues are specific to PHP, you can't convince me it does it well. Hence, MaxRequestsPerChild.

To quote Radmus Lerdorf,

> The real programmers will say "Yeah it works but you're leaking memory everywhere. Perhaps we should fix that." Ill just restart Apache every 10 requests.

Clean slate, my eye.

20years 1 day ago 1 reply      
There have been huge improvements made with PHP over the past few years. PHP 7 is great and I would choose it over Hack. Modern PHP using autoloading (Packagist & Composer) and an MVC structure allows for rapid development. With frameworks such as Laravel, you can get something up quickly or just pull in Packagist libraries you need if you don't want the bloat of a framework.

I recently finished up a fairly complex web app that uses PHP 7 for the back-end. Took me under 2 weeks to develop partly because I was able to leverage a lot of stable and well supported libraries through Packagist. It brought in over $4k its first month. Not bad for 2 weeks worth of work. It would have been hard to accomplish the same thing that quickly leveraging Node or Python (I use both) at lease for this app.

jv22222 1 day ago 1 reply      
Love the memes:

"PHP is garbage language!", "PHP is a shitty language!"

That is the antiquated view of course. The old days.

Now with Laravel and PHP7 it is a pleasure to use.

I'd go further.

Working in Laravel is BETTER than ROR IMHO.

tonyarkles 1 day ago 2 replies      
I've been doing consulting for several years now, as well as a MSc thesis that involved me looking at a number of open source codebases. I am generally in the "PHP is garbage" camp, but I keep hearing people say that nice codebases in PHP are possible. I've never seen one, but I am perpetually open to the idea that they exist.

Does anyone have a good example of an open-source PHP project that will enlighten me?

oridecon 1 day ago 2 replies      
Sorry to sound so dramatic but I don't know how to put this in better words:

After reading this thread, is there even a proper way to measure how good a language is (trade-offs, benefits down the road)? Having done web stuff in PHP and Python I think both are terrible. So, how would a programmer trying to avoid his own biases and anecdotes find what tools are right for each job? Maybe I didn't "liked" PHP and Python because I'm a terrible programmer. Or maybe I only worked with awful teams.

Is there any science involved or should I make my decisions based in what blog post I read that week? How can I actually trust the opinion of companies/engineers if they are so invested in that tech? Who would admit that after investing millions on it they didn't actually think it was worth it? There's no way that I'll be able to have deep knowledge about all the languages that are out there.

The sad thing is that I end it up choosing whatever is popular and half sane because not finding (updated/well-maintained) libs or tools you need is worse than picking a niche language that might do the job better.

wojcikstefan 23 hours ago 1 reply      
Thank you for writing this - very eye-opening. One sentence doesn't seem right to me though:

> Hack provides an option that no other popular member of the MPDPL family has: the ability to introduce a type system after initial development, and only in the parts of the system where the value exceeds the cost.

Python 3 allows you to do that, too: https://docs.python.org/3/library/typing.html

menelaus35 1 day ago 3 replies      
Write an API for my client app which returns user's data as JSON (or render HTML page for profile);


<!-- api.php -->



mysql_connect("host", "pass");mysql_select_db("users");

$uid = $_GET[ "uid" ];

$res = mysql_query( "select * from users where uid = $uid" );

$ar = mysql_fetch_assoc( $res );

echo "name: " . $ar["name"] . ",";echo "location: " . $ar["location"];



<!-- end of api.php -->

Just call it http://domain.com/api.php?uid=USER_ID

( Yeah I know you want to scream and say all the things about this code, but this is kind of code you would encounter with PHP, most of the time it's more horrifying than this one. )

People use it PHP for this reason, If you want to make same functionality in another language you need to setup an app and all the necessary things that protect you from garbage, some obvious security issues and bugs, not a single file like this. It's so easy and so wrong, it should be illegal to do this. Create a file and put it into directory and call it from your browser. You don't have to know anything about web or web servers and stuff. You just make shit by copying and pasting from internet, that's why Facebook made by PHP and now there are whole teams who are trying to protect company from PHP horrors. (They made a PHP VM, bunch of software to analyze PHP and optimize it etc. )

Just don't try to justify PHP, do not defend it. It's shit and you know it, accept it and move on.

(Note: do you remember Facebook's profile.php pages, they are still exists you can call it just like old times profile.php?id=YOUR_ID, yeah it's a shit once you get infected you're not gonna get out of it completely. Even if you can, it leaves traces on you just like profile.php URL's

pcwalton 1 day ago 0 replies      
> Almost all languages these days let programmers compare, e.g., integers and floats with the >= operator; heck, even C allows this.

The implication that C is an especially strict language for type conversions is strange. C is actually one of the loosest languages for type conversions. It's even legal to do things like compare pointers to integers (though most compilers warn you)!

eloisant 1 day ago 0 replies      
Wordpress succeeded because they were using PHP, because during the 2000's it was very easy to find a cheap shared hosting solution in PHP+MySQL. There was no cheap way to host Rails applications.

And their target was people who would install Wordpress themselves on a cheap shared host.

Facebook and Wikipedia probably used PHP because many developers knew it, and the reason was... That there was many cheap shared hosting solution for their pet projects.

Not only this is no longer true (it's just as easy and cheap to host Rails, Java, Scala, or anything with cloud hosting), but the availability of cheap shared hosting is not relevant for most problems.


* Wordpress couldn't have succeeded without PHP, because of a context that is no longer true today * Facebook succeeded despite using PHP, because they had the manpower to fork the language and write their own VM

merb 1 day ago 1 reply      
> a typical Python application server, e.g., the debugging> cycle will look something like think; edit; restart the> server; send some test requests.

the "most typical" Python stack (wouldn't call it a application server) is probably built with Django where you don't reason about the Server restart, it's as fast as changing something in PHP.

P.S.: I don't use Python that much anymore. Other people would say that the thing I'm using now takes endlessly long to compile and has some wierd operators.

wnevets 1 day ago 0 replies      
>I claim that PHPs simpler think; edit; reload the page cycle makes developers more productive. Over the course of a long and complex software projects life cycle, these productivity gains compound

this is certainly what got me started with PHP and what makes its so easy for beginners

jonthepirate 7 hours ago 0 replies      
PHP engineer of 10 years here - all things being equal, I cannot, in good faith, recommend a person use PHP for anything. General rule of thumb is, if you can, use Python. We still see folks actively choosing it though.. mostly because it's a language we already know and better to create an MVP in something folks know rather than struggle with something "better" that will take a person 5x longer to write while they learn it.

I would bet a donut that Slack is off PHP within 2 years.

thom 8 hours ago 0 replies      
A while back I found myself doing a Laravel project and found it totally adequate and not at all painful, so I don't have the same old flinch reflex whenever someone asks about PHP these days.

That said, nobody will ever convince my that the style of structureless, start-at-the-top, run-to-the-bottom monolithic PHP pages has any merit at all for real apps. I have seen many projects fail, or slowly mire themselves, by creating these monstrosities, with the opening <html> tag 1200 lines down the file. But I assume these days that's not common.

nnq 1 day ago 0 replies      
I find it odd that nobody sees the elephant in the room: productivity is determined by the "fit" between a developer's or team's mindset and the language!

None of them matter in isolation. If you have a team of people who likes to think dynamic, functionally and meta-linguistically, just pick the best Lisp-family language for your needs. For another team who prefers to think dynamic, functionally, with actors and pattern-matching, pick Erlang or Elixir. Someone who likes to think pragmatically, likes obviousness and simple static typing should probably pick Go if he's also "minimalistic" or Java otherwise. For a "move fast and break things + fuck this functional programming bullshit" thinking team, pick the best version of PHP (Hack & HHVM) etc. Want "move fast and break things + ok with event-driven + some sprinkle of functional programming goodness", then use Nodejs.

For example, for "move fast and break shit" prototype development I pick Nodejs over PHP because my mind "works functionally" and every attempt at writing functional code in PHP is pure pain.

There is a reason why there are so many languages: people think very very very differently from one another, but at the same time they think similarly enough that they can gather in "tribes" around certain technologies and idea!

qaq 1 day ago 2 replies      
For greenfield project main question would be why? It's not horrible but what do you exactly gain? With so many options around it's actually hard to make a case for PHP (and I have being using it since 2000).
Kluny 21 hours ago 0 replies      
I'm a PHP programmer and it's great to see this because a lot of times I feel like PHP is limiting my ability to move forward in my career. I've been looking for jobs and it seems like having pretty much only PHP, jQuery and mySql on my resume isn't enough to get hired. I've been trying to figure out what I have to do to get noticed - is it worth cranking out a bunch of projects in PHP that won't impress anyone because it's just PHP, or or is it better to learn a language like Ruby and make a bunch of (shittier, because I'm not experienced with it) projects?
otto_ortega 19 hours ago 0 replies      
What I find interesting about all this debates about programming languages is that most of the time people fail to remember that they are just that "languages"... Each one has its strong points and flawns, at the end of the day what truly matters is how competent you are at expresing on them and carrying out your goals.

For decades people have been complaining about Php, and how afwul it is, yet still, for decades successful projects have raised (and still do) having Php as its core, just today there 2 posts on the front-page about big companies (Slack, Dailymotion) talking about their Php codebase...

The argument that due the huge volume of programmers using it, it is "bound to" return a few success cases here and there is BS... if that were true we would be flooded about news about how X and Y company succeed "thanks to" using Python, Java or whatever language you deem as "superior", but that doesn't happen... because companies don't suceed "in spite of" Php, they suceed "with" Php, in the same way companies don't suceed "thanks to" X or Y language but "with" them.

When people set to built a piece of sotware they don't have in mind "I wan't to build the most technically perfect code base" or "I want to build the fastest piece of software" because nobody writes software for the sake of it, everyone has a goal... they want to build "a messaging app for teams" or a "video-sharing website" and the best programming language for that, is whichever enables them to do so on the way they need it, with the resources they have, and within the timeframe they set.

And rant as much as you wish, but Php remains king about doing exactly that "enabling people".

tamalsaha001 1 day ago 1 reply      
It is interesting that author does not mention the performance improvements of PHP 7. I have read with PHP 7, HHVM does not have the performances any more. I wonder author cared to test that in their codebase.
JED3 1 day ago 0 replies      
TLDR; Because Cal Henderson made the initial commit.

He's obviously a big fan of the language, and surely had a big hand in influencing what technology would be chosen very early on.

PHP can be like playing with dynamite. If you have an explosives expert on site (or Cal Henderson), you can get a helluva lot done with PHP in a very short amount of time.

iamleppert 1 day ago 0 replies      
The shared nothing request model leads to laziness. And once you get to any kind of scale you'll want to run PHP in something like php-fpm with lighttpd or nginx, which actually does aggressive caching. It's painfully slow to re-evaluate for every single request. This introduces subtle problems because your code was probably shit to start with.

Of course, this is not a post about how good or bad PHP is/was. It's just a matter of personal preference at the end of the day. Your favorite language is the one you feel you're the most productive in and says a lot more about you and your experience/background than the language itself.

labrador 1 day ago 0 replies      
> Inconsistency around reference, value semantics.

I ran into this problem today with some code by a programmer who should have known better. The problem is not with PHP, it's with programmers who learn one version and then don't keep up and change as the language evolves and improves (ain't nobody got time for that.) One guy I work with is still programming PHP like it's year 2000. It's maddening. PHP7 is a very nice language. People decided JavaScript was cool after "The Good Parts" came out. The same is true for PHP. If you learned PHP3 in high school and are still banging out code like you did then, you're the problem, not the language.

ohthehugemanate 1 day ago 0 replies      
Most of the hate for PHP comes from the PHP4 days, when it really was a wild west, fast and dirty kind of language. And of course, wordpress has done a lot of reputational damage as the world's most popular plate of spaghetti code.

But look at the way modern php developers work, in PHP7 with frameworks like Laravel, Symfony, and even Drupal 8. Modern PHP is a pleasure to work with.

mtrn 1 day ago 1 reply      
If people would focus more on usability, comprehensibility, clear algorithms and project structure and precise requirements we could probably skip debating over languages altogether, because programs would look beautiful in any language.
jacobsenscott 1 day ago 0 replies      
My experience is that programming is fun no matter what language you use. I've used C, C++, Python, VB6, C#, Java, Ruby, elisp, PHP and a little clojure and some others. I don't get all the language hate.
mastazi 1 day ago 0 replies      
Of the four disadvantages of PHP mentioned in the article, in my opinion, the worst by far is the first, i.e. confusing comparison rules. The article however fails to explain that clearly: the worst thing is not that comparison rules are just confusing (heck, many things are confusing at first, but eventually you work them out); the worst thing is that those rules are intransitive (!!!), as explained very well here: http://phpsadness.com/sad/52

The second disadvantage, passing by reference vs. by value, honestly can or cannot be confusing, depending on which other languages you are accustomed to. So I would say it is a debatable point.

The third point, the language being failure-adverse, is a choice made by design, this is also a debatable point, but it's in line with the fact that PHP was created as a utilitarian language as Lerdorf explained numerous times, e.g. here https://www.youtube.com/watch?v=anr7DQnMMs0

The last point, inconsistencies in the standard library, is obviously true but I would say it is very common in languages that have been around long enough to have subsequent approaches layered in the standard library. Some languages resolve this by making breaking changes and keeping consistency (think Python 2 vs Python 3), some others just show their age by having libraries that were developed at different point in time (Perl, R and Java come to mind), this is also explained by Lerdorf in the video linked above.

dendory 1 day ago 0 replies      
I don't consider myself a programmer, just someone working in IT that writes a lot of code, and to this day when I want to write any type of web page or web based "app" PHP is my goto tool. I can write my HTML and add PHP logic directly inline whenever I need it, and get the job done in no time. Sure I could spin up a node.js framework, use routing, create classes and objects, etc.. But to 99% of my needs it's just not worth the extra time.
bpicolo 1 day ago 1 reply      
Really, the worst part of PHP in my experience has been the debugging facilities. Print-line debugging just doesn't cut it anymore, and things like xdebug and phpdbg just aren't elegant, are hard to configure properly, and don't work for all the relevant scenarios (trying to debug PHP running in a docker container is not a fun task).

The quality of open-source libraries in the ecosystem is also pretty below what I've come to expect from other languages, and then half of them are c-lang PHP hybrids that are more difficult to manage, update, and install.

I think the author failed to mention the downsides of no long-running processes either. Shelling out to e.g. memcached for configuration setup (especially when memcached might not live locally) isn't particularly fun. Not to mention this has made it difficult to integrate into some useful things, like GRPC[http://www.grpc.io/] which can't use PHP as a server as of yet.

Then there are all sorts of random deployment gotchas, like proper opcache configuration.

PHP is a pretty wart-filled language. It's usable, but I wouldn't make it my first choice in any situation, given a choice.

mi100hael 20 hours ago 0 replies      
> Hack provides an option that no other popular member of the MPDPL family has: the ability to introduce a type system after initial development, and only in the parts of the system where the value exceeds the cost.

Python now has type hints that allow a similar migration for existing code.


greggman 1 day ago 0 replies      
I didn't understand some of the mentioned benefits of PHP.

Progressively adding types:

This isn't PHP it's hack. How is this different than typescript or flow?

Edit/refresh vs edit/restart server.

It seems like it's been several years that there have been things like meteor or webpack that make iteration super fast on JavaScript. Is that iteration slower than PHP?

ww520 1 day ago 0 replies      
I've looked at some of the new PHP feature and was quite impressed. There are trait, multi-value return, pattern matching, and destructure.
LyalinDotCom 1 day ago 0 replies      
Many amazing products have been built with PHP, Python, .NET, Node.js, etc. etc.

The reality is these (above) and many other good languages/frameworks exist out there for building web apps today. we live in the time with a ton of choice, and the rest is in our hands.

I for one love the new .NET Core, but I am a little biased being a long-time .NET developer and a Microsoft employee as of late.

jwmoz 1 day ago 0 replies      
Having come from years of PHP development and then into Python the past year or two, there's no way I'm going back to PHP. This is the same as every other ex PHP dev I know.
jkaptur 1 day ago 0 replies      
> Hack provides an option that no other popular member of the MPDPL family has: the ability to introduce a type system after initial development, and only in the parts of the system where the value exceeds the cost.

JavaScript and Python both have systems that allow you to do this: JavaScript has the Google Closure Compiler, and, more recently, TypeScript. Python has a number of projects that use a common syntax [1], including PyChecker.

I say this not to "well, actually" the post, but just to be a gradual typing cheerleader. It's great! We should all be using it! All the time! Please!

[1] https://www.python.org/dev/peps/pep-0484/.

hawkice 1 day ago 1 reply      
The shared-nothing model works great... if either you're just one developer or you've got a semi-competent Ops/DevOps setup. My first job out of college used PHP with one of the Rails-a-likes PHP has. During our user onboarding process, we'd poll the server to see if a data import finished, but since the requests shared _nothing_ and the Ops guy didn't understand PHP, it would load/run millions of lines of framework code for every single tiny polling request. On launch our site crashed because two people used it at the same time. Bananas.

There's a way to make Apache fork after some code has already been run, but boy howdy if you don't do that and love those mega-frameworks.

icedchai 1 day ago 0 replies      
I do Java and python for my day job, but do quite a bit of PHP on the side (small consulting projects, etc.)

The main advantages of PHP are ease of deployment (no build required, just upload your files and go, use a shared web hosting or a cheap VPS) and a fast dev cycle (edit/refresh the page.) It's also simple to work with for web designers who don't have a lot of back-end knowledge. They can edit your templates and see results instantly.

For anything with complex business logic, background processing, etc. it's absolutely the wrong choice. However, for basic web apps, when combined with a good framework (such as Laravel), it is fast and productive.

FranOntanaya 1 day ago 0 replies      
One of the things to appreciate about PHP's ecosystem is how much you can be exposed to warnings, criticisms and cautionary tales. There's so much energy put into tearing it apart that if you aren't getting an education about coding pitfalls it's really your own fault.
OhHeyItsE 1 day ago 1 reply      
Much of this is valid in spirit. But to me, is irrelevant with the advent of Node. Node does all the good things the author describes. It does some terrible things too, but generally does them much less terribly than PHP.
gravypod 1 day ago 0 replies      
Every programming language is a tool. As such it isn't good if used for the wrong job. PHP is amazing for simple services that don't need much aside from database/filesystem access. I love PDO and wish more languages had such a first-class database access implementation.

I wish more people gave PHP a chance and didn't just keep bagging on it. There are problems with the standard libs, but nothing that isn't bearable. Grab an IDE and it's not an issue.

phreack 1 day ago 3 replies      
Well this is seriously making me rethink my opinion on the PHP workflow, if Hack is as much of a game changer as the article claims? Could anyone here comment on their experiences with it, and its pitfalls?
lol768 1 day ago 2 replies      
Does anyone know how the types in PHP7 compare to what's offered by Hack?

It looks like generics aren't yet in the core language (https://wiki.php.net/rfc/generics), but I believe return type hints work. I think we're also still missing property/field type hints (https://wiki.php.net/rfc/property_type_hints).

sparrish 1 day ago 0 replies      
The author incorrectly states PHP stands for "Personal Home Page". It changed in 1997 with the release of 3.0 when the project changed from being called "PHP/FI" to just "PHP", a recursive acronym - "PHP: Hypertext Preprocessor".
scurvy 1 day ago 0 replies      
Opcache still crashes and burns under high concurrency in 5.6 and 7. No thanks. It's been an issue for 2 years now and still not fixed.

Running a 2 year old framework on the Internet because the new versions include a non functional opcode cache kinda sucks.

OOPMan 1 day ago 0 replies      
Ahhhhh, PHP.

Never again.

Life's too short to waste on that junk.

bluetwo 1 day ago 0 replies      
I just want to use whatever tools we will be using in 5 years. While the underlying technologies of css, html, and javascript have gotten cleaner, powerful, and more cross-compatible, everything that sits on top seems to have gotten bloated.
boulos 1 day ago 0 replies      
I also liked Keith's previous version of this, given at Strangeloop a few years ago [0] and discussed here [1]

[0] https://www.infoq.com/presentations/php-history [1] https://news.ycombinator.com/item?id=7054294

yahyaheee 1 day ago 1 reply      
This is nonsense. As someone who has had to work in PHP environments that were a mess, just write Python or Go they are worlds better
Tehnix 1 day ago 1 reply      
>Asynchronously curling to localhost (or even another web server) provides a shared-nothing, copy-in/copy-out way of exploiting parallelism

Wait, wait, wait, wait. Is he saying that to do async work he'll send a curl request to somewhere (spawning a thread for that request), not wait on the output and carry on? Last I used curl in php it was a synchronous action. Hell of a threading model there.

throw2016 1 day ago 0 replies      
I think there is a needless air of elitism especially here that can only come when people take themselves too seriously, seek validation for their choices, and are always on 'display'. This is also now fuelling a full scale culture of complexity as nobody wants to do things simply lest they be judged as 'unsophisticated' and lose career and other opportunities.

This cannot lead to real conversations or good software. There are far too many naysayers always eager to jump in with their 2 bits of negativity with the same cliched talk points and links most of whom I am sure would never be seen near php and may not even have used it.

The criticism goes silent when HN favourites like Slack show up on discussion. Ignoring the sheer number of high traffic websites and successful startups using PHP is just another way to deny it its due.

Most PHP apps are a breeze to install and use compared to just about any Ruby or Node app. Try installing Discourse to understand just how user hostile it has become. The respect for users and simplicity comes through in PHP. NPM and Ruby with their dependency hell expect a full dev environment even on user machines and nobody thinks this is ridiculous. There is no denying PHP warts but Node, Ruby and Python I think have their fair share of issues.

I really do like Python but for a web project that needs to scale and not get mired in other issues I would choose PHP every single time. For a library or SAAS app maybe, but for an installable app I would never expose users to the Ruby or Node ecosystem.

ohstopitu 1 day ago 0 replies      
Taking from the article..

> I claim that PHPs simpler think; edit; reload the page cycle makes developers more productive.

Would you not use file watchers to reload the server? (especially in Node?)

anindha 1 day ago 1 reply      
Doesn't Slack use Java for its messaging system?

That's not mentioned in the blog why they didn't use PHP for this.

marcosdumay 1 day ago 0 replies      
Sorry, but I'd rather take opinions on web environments from somebody that at least knows that nearly all web frameworks, on any language that you choose have those properties of no shared state, independently parallel request based execution.
3chelon 1 day ago 0 replies      
Freaky coincidence. Today I just happened to twice edit some PHP, for two separate tasks... but it's the first time I've touched PHP for about 10 years!

What goes around comes around. I'm editing my LinkedIn and dusting off the old O'Reillys...

bostonvaulter2 1 day ago 0 replies      
I agree with the overall sentiments of the article but I don't know if I agree with the conclusions. One thing I don't see mentioned is the lack and overall lower quality of many php libraries.
teilo 1 day ago 0 replies      
I would add one other big negative in the language design: The automatic import of the entire SPL.

Back when I was a green web programmer, I loved this feature. After working with Python for a good many years, I now abhor it.

marcusbrown 1 day ago 1 reply      
What I think most people are missing about PHP is the incredible ecosystem that emerged in the recent years (especially with Laravel) that helped to speed up the development of web apps by A LOT and removed all the annoying boilerplate.

I know that nowadays there are a lot of fancier languages to write your next project, but I challenge anyone to find anyone that has a similar ecosystem that can do all the following things with just a matter of editing config files basically.

- Create a fully working app with authentication, database migrations, security checks, middlewares, route management, and much more with just one command line ("laravel new project_name") (Laravel)

- Logging in a user with an external service with one line of code. (Laravel Socialite)

- Sending real time notification with any type of channel. (email, socketio, sms, ios/android, ...) (Laravel Echo)

- Create a complete Oauth2 server with all the backend and frontend parts with just one configuration file. (Laravel Passport)

- Make text search with Elasticsearch using external services as easy as making a normal query to the local DB. (Laravel Scout)

- Super easy tu use payment system integration that handles both one time payments and subscriptions with Stipe and Braintree. (Laravel Cashier)

- Optimized and lightweight version of the full framework to get blazing fast APIs. (Laravel Lumen)

- Local web server that automatically creates .dev domains for each project and that works with most PHP projects (not just Laravel) (Laravel Valet)

- Vagrant box with everything you need for a local development web server. (Laravel Homestead)

- Easy frontend assets management (compiling, versioning, ...) built on top of Gulp and Webpack. (Laravel Elixir)

- Provision a web server with all the things you need (security, git push-to-deploy, ssl certificates, queue workers, ...) properly set up with one simple click. (Laravel Forge^)

- Zero downtime deployment with history backup and much more. (Laravel Envoyer^)

- Fully working SaaS app that handles all the boring stuff (subscriptions, invoicing, team management, emails, ...) and let you concentrate on the actually product you want to built. (Laravel Spark^)

- Tons of video tutorials/screencasts/lessons on how to use every aspect of Laravel and much more (PHP, Vuejs, Text editors, ...) (Laracasts)

As you can see from the list, almost everything is related to the incredibly good framework Laravel, that I highly recommend to anyone that is working or will work with PHP.

I especially recommend to all those people that are about to create their next SaaS project to take a look at Laravel Spark. It really puts all the pieces of the puzzle together and it makes your MVP really around the corner instead of months away.

Coming from old-school PHP where I hacked everything together, after learning and switching to Laravel my life as a developer completely changed and now I can't imagine that I'm still using the same language actually. They feel like two completely different things and in my opinion all those people that are talking bad about PHP, they are stuck with old memories of how PHP used to be. Yes, PHP as a language still has a lot of things that needs improving, but PHP as ecosystem of libraries and frameworks is definitely still the king of the web!

The King is dead, long live the King! :)

[^]: These are commercial products but their price is definitely accessible (99$ for Spark and 10$/month for Forge and Envoyer)

mrmagooey 1 day ago 3 replies      
I'm surprised no one has posted this fairly thorough criticism of PHP from a few years ago https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
yegortimoshenko 1 day ago 0 replies      
Totally. PHP is a great technology and a bad language.
known 1 day ago 0 replies      
Where does PHP stand in mobile platforms?
EGreg 1 day ago 1 reply      
PHP would have been better if it supported evented programming.
Show HN: Tesseract.js Pure JavaScript OCR for 60 Languages github.com
709 points by bijection  2 days ago   95 comments top 27
xigency 2 days ago 3 replies      
To anyone screen capturing small fonts as a demonstration, or capturing digital text especially at a small resolution, I don't believe that that is the purpose of this OCR library. (As a specialized problem, that might be easier to solve depending on the typeface.)

A much better example that works quite well is a picture of someone holding a book: http://i.imgur.com/3JWs64x.jpg

 Magic . Read this to yourself. Read it silently Don't move your lips. Dont make a suund Listen to yourself. Listen without hearing What a wonderfully weird thing, huh? NOW MAKE THIS PART LOUD! SCREAM IT IN YOUR MIND! DROWN EVERYTHING OUT. Now, hear a whisper. A tiny whisper. New, read this next line with your best crotchety old-man voice: Hello there, sonny. Does your town have apost 0 Awesome! Who was that? Whose voice was that? It sure wasnt yours! How do you do that? How?! Must be magic.
Problems with this text: misspelled 'sound' as 'suund', didn't recognize the word 'anything', and mis-recognized 'a post office' as 'apost 0'.

Not bad. Especially since two of three mistakes are on the edge of the page.

pyronite 2 days ago 5 replies      
The text detection is lacking in comparison to Google's Vision API. Here is a real-life comparison between Tesseract and Google's Vision API, based on a PDF a user of our website uploaded.

Original text [http://i.imgur.com/CZGhKhn.png]:

> I am also a top professional on Thumbtack which is a site for people looking for professional services like on gig salad. Please see my reviews from my clients there as well

Google detects [http://i.imgur.com/pSJym1x.png]:

> I am also a top professional on Thumbtack which is a site for people looking for professional services like on gig salad. Please see my reviews from my clients there as well

Tesseract detects [http://i.imgur.com/wwbLU6g.png]:

> \ am also a mp pmfesslonzl on Thummack wmcn Is a sue 1m peope \ookmg (or professmnasemces We on glg salad Pezse see my rewews 1mm my cuems were as weH

iplaw 2 days ago 5 replies      
HOW is there not a better, almost 100% accurate OCR tool?

I routinely (daily) need to OCR PDF files. The PDF files are not scans. They are PDF files created from a Word file. The text is 100% clear, the lines are 100% straight, and the type is 100% uniform.

And, yet, Microsoft and Google OCR spits out gibberish that is full of critical errors.

From a problem solving perspective, this seems like an incredibly easy problem to solve in this exact use case. That is, PDFs generated from text files. Identify a uniform font size (prevent o-to-O and o-to-0 errors), identify a font-family (serif, sans-serif, narrow to particular fonts), and OCR the damn thing. And yet, the output is useless in my field.

AgentME 2 days ago 1 reply      
Why the promise-like interface? If it returned a promise with a this-returning progress method monkey-patched onto it, then you could use it otherwise like a regular promise:

 Tesseract.recognize(myImage) .progress(function(message){console.log(message)}) .then(function(result){console.log(result)}) .catch(function(err){console.error(err)});

 Tesseract.recognize(myImage) .progress(function(message){console.log(message)}) .then( function(result){console.log(result)}, function(err){console.error(err)} );
I guess I just still have bad memories of jQuery's old almost-like-real promises. I'd rather never have to think ever again about whether I'm dealing with a real promise or one that's going to surprise me and break at run-time because I tried to use it like a real one.

jameslk 2 days ago 1 reply      
For all those claiming issues with reading text from a screen shot of this page, note that this is more an issue with the original Tesseract library, not this library (which appears to wrap Tesseract compiled through Emscripten). I remember having a similar issue when I used the original Tesseract. The quick hack I found to fix it was to rescale any small text input images 3x first before feeding it to Tesseract. I'm sure there's more intelligent solutions to mitigate that problem.
greenpizza13 2 days ago 1 reply      
Excited about this... but the OCR quality seems to be very bad. Maybe it's not optimized for recognizing black text on a white background.

For example, I took a screenshot of this comment and ran it through the demo and got this:

Excited ehent this... but the OCR enenty Seems te be very bad. Maybe it's het Dptimized farrecngnizing black text an e white heckgmnhe.EDI example, 1 tank e Screenshnt at this cement ehe teh it. thmneh the den ehd get this:

It seems to recognize the bounding boxes just fine but mangles the words.

gentleteblor 2 days ago 1 reply      
I've always wanted to use Tesseract on .NET projects but it was always clumsy (wrappers). This looks like it'll make things easier.

Thanks for putting this out.

yankyou 2 days ago 1 reply      
> Drop an English image on this page to OCR it!

This looks great, and I'd really love to but

> Uncaught ReferenceError: progress is not defined

EDIT: works now!

goatslacker 2 days ago 1 reply      
I've been using this library to read screenshots of Pokemon Go to automatically calculate Individual Values for each Pokemon[1] It's worked great on desktop, but on mobile safari where it matters most the library causes the browser to crash :(

1: https://github.com/goatslacker/pokemon-go-iv-calculator/blob...

userbinator 2 days ago 0 replies      
Tesseract was one of the best publicly-available CAPTCHA solvers when I was playing around with that stuff a few years ago; I remember somewhere in the neighbourhood of 90%+ accuracy on ReCAPTCHA, no wonder they've changed those considerably since then to make it difficult even for humans.
mdani 2 days ago 1 reply      
Languages list link is broken - getting 404 for the followinghttps://github.com/naptha/tesseract.js/blob/master/tesseract...
daliwali 2 days ago 0 replies      
The title and description are very misleading: this is technically "pure JavaScript" but the JS is compiled from the original C++ library of the same name using emscripten. I think "pure JS" would imply that all of its sources are written in JS which is not the case here. It's mostly the C++ code doing the actual work, with a little JS wrapper on top.
zelon88 2 days ago 1 reply      
Does this mean I can implement Tesseract on my home server without using php's shell_exec to perform magic on my files? I can just use Jscript instead? Cool!

My current HRCloud2 project could benefit greatly if I ever get around to it. Currently I make the php interpreter jump through hoops and move stuff all over the place to OCR images and docs. This could save a ton of time and shift the processing to the client instead of my server.

KiwiCoder 2 days ago 2 replies      
Impressive that this is pure JS, however trying an image cut from the page itself gave this result

> Dropan Enghsh Wage on (Ms page to OCR m

Should be

> Drop an English image on this page to OCR it!

codemode 1 day ago 1 reply      
Is it true, that original implementation of tesseract exexuted from commandline is faster than javascript translated version?
jaytaylor 2 days ago 0 replies      
For those who may be interested;

I threw together a quick proof-of-concept in Go for exposing tesseract via a web API:


slajax 2 days ago 0 replies      
Pretty cool. I screen captured the text in the bottom right corner of the page and it had some issues. Here's a screenshot of what happened: http://io.kc.io/hkeM
artf 2 days ago 1 reply      
Sorry guys, probably a stupid question (googled quickly, doesn't worked), but does this kind of stuff involve ML? Do I need to train it?
zhte415 2 days ago 0 replies      
Does this include taking a text and for example, when viewing it, 'wiping' the text in the logical native language order?

For languages that don't employ much whitespace, this would be nice.

maaaats 2 days ago 1 reply      
Does it block while it works and do the work in several setTimeouts or how do they get it to report progress without freezing everything?
mgalka 2 days ago 0 replies      
Awesome! The ability to OCR video in a browser opens up so many interesting possibilities.
ckluis 2 days ago 2 replies      
What License? Doesn't mention it.
mrcactu5 2 days ago 1 reply      
Tesseract is not specific to JavaScript right? I do recall there being a version for Python
z3t4 2 days ago 0 replies      
More instructions, like how to train it, would be nice.
sanketbajoria 2 days ago 0 replies      
newtons_bodkin 2 days ago 0 replies      
How long did this take to build?
employee8000 2 days ago 2 replies      
Is this at all affiliated with the already-existing tesseract OCR library? It doesn't seem to be from my cursory check so if not you need to rename your library, because you're ripping off their name.


Ask HN: What is your favorite YouTube channel for developers?
995 points by justanton  1 day ago   159 comments top 82
Cyph0n 1 day ago 3 replies      
I'm going to use this opportunity to list some relatively unknown yet excellent software dev related channels that I've come across over the years.

* Derek Banas (https://www.youtube.com/user/derekbanas): staggering amount of content on a huge variety of programming topics; tutorial-style; this guy is so productive it scares me sometimes :(

* Mark Lewis (https://www.youtube.com/user/DrMarkCLewis): CS professor; lots of videos on general CS, functional programming; focus on Scala

* VoidRealms (https://www.youtube.com/channel/UCYP0nk48grsMwO3iL8YaAKA): excellent C++-focused content, great Qt series

* mathematicalmonk (https://www.youtube.com/user/mathematicalmonk): great ML and probability videos

* mycodeschool (https://www.youtube.com/user/mycodeschool): general CS, algorithms, data structures

* HandmadeHero (https://www.youtube.com/user/handmadeheroarchive): excellent series by Casey Muratori that explains a huge number of topics related to game dev, gfx programming; has a really long series of videos documenting how he's building an indie game from the ground up i.e. custom engine

I will update once I think of others :)

petercooper 1 day ago 6 replies      
https://www.youtube.com/bisqwit is by far my favorite and I've spent many hours watching him.

He does things like create a Doom-style engine from scratch: https://www.youtube.com/watch?v=HQYsFshbkYw .. create a NES emulator: https://www.youtube.com/watch?v=y71lli8MS8s .. work back from a C++17 example to show why new C++ standards are needed: https://www.youtube.com/watch?v=wrwwa68JXNk .. and even building a Tetris clone in GW-BASIC: https://www.youtube.com/watch?v=JDnypVoQcPw .. Right now, he's doing a series on cracking 80s videogame passwords: https://www.youtube.com/playlist?list=PLzLzYGEbdY5nEFQsxzFan...

Sirajology - https://www.youtube.com/channel/UCWN3xxRkmTPmbKwht9FuE5A - is another interesting one. He moves a bit too quickly for me, but does things like explain machine learning in 5 minutes or how to generate music with systems like Tensorflow.

makenova 1 day ago 3 replies      
These are not in any particular order and I do not watch every single video on their feeds, just the ones that are relevant or seem interesting.

ChromeDevelopers: https://www.youtube.com/user/ChromeDevelopers

LevelUpTuts: https://www.youtube.com/user/LevelUpTuts

Strange Loop: https://www.youtube.com/channel/UC_QIfHvN9auy2CoOdSfMWDw

Computerphile: https://www.youtube.com/channel/UC9-y-6csu5WGm29I7JiwpnA

funfunfunction: https://www.youtube.com/channel/UCO1cgjhGzsSYb1rsB4bFe4Q

Wes Bos: https://www.youtube.com/channel/UCoebwHSTvwalADTJhps0emA

jplahn 1 day ago 1 reply      
I'm a bit of a David Beazley fanboy and Python lover. I've watched all of his keynotes and lectures at this point and I have yet to find one that wasn't incredibly informative. You can watch the video for whatever the main topic is about, but finish the talk having picked up a wealth of other bits of useful information.

In addition, I have incredible amounts of respect for people that are willing (and capable) to live code what they're teaching. For one of the best examples of how to effectively live code, look no further than when he implemented a concurrent system from scratch at PyCon 2015: https://www.youtube.com/watch?v=MCs5OvhV9S4

Channel (with some of his videos): https://www.youtube.com/user/dabeazllc

GrumpyCoder 1 day ago 0 replies      
As a newbie gamedev. found these channels helpful.

Coding Math (https://www.youtube.com/user/codingmath): covers all the math you need for games and each ep. have code examples.

Bisqwit (https://www.youtube.com/user/Bisqwit): c++, emulators and other cool stuff even his setup is interesting(dosbox+his own editor).

ThinMatrix (https://www.youtube.com/user/ThinMatrix): his videos on VAO and VBO were a savior for me when learning opengl.

Daniel Shiffman (https://www.youtube.com/user/shiffman/): his videos are quite beginner friendly explains whole process of creating classic games like snake or creating art with code like fractal trees.

Vittorio Romeo: (https://www.youtube.com/user/SuperVictorius): walks you thru all modern c++ features by creating a game with them.

TimSchumann 1 day ago 1 reply      
Can't believe this hasn't been mentioned yet, so I'm gonna throw it out there. Gary Bernhardt of Destroy All Software.

Access to the videos costs $29/month but is well worth it IMO. He covers a very wide range of topics from beginner to advanced. To sum things up in a few words -- his content is focused on a general understanding of computer science and puts concepts, abstractions, and methodologies before any specific program, tool, or programming language.


Look at the episode titles for a better idea of what I'm getting at, there's literally something for everyone.

He's also started streaming on twitch occasionally.


eriknstr 1 day ago 1 reply      
I have enjoyed watching video recordings of talks from various conferences. Here are some of them off the top of my head.

Defcon (computer security) - https://www.youtube.com/user/DEFCONConference/playlists

PyCon 2016 (Python) - https://www.youtube.com/channel/UCwTD5zJbsQGJN75MwbykYNw/vid...

PyCon 2015 (Python) - https://www.youtube.com/channel/UCgxzjK6GuOHVKR_08TT4hJQ/vid...

PyCon 2014 (Python) - https://www.youtube.com/user/PyCon2014/videos

BSDCan (FreeBSD, OpenBSD and others) - couldn't find a dedicated channel but this one has some BSDCan playlists - https://www.youtube.com/user/osbootcamp/playlists

Chaos Communication Congress (computer security, organized by the Chaos Computer Club aka. CCC) - https://www.youtube.com/user/CCCen/playlists

Black Hat (computer security) - https://www.youtube.com/user/BlackHatOfficialYT/playlists

DerbyCon (computer security) - again, couldn't find a dedicated channel but this one has DerbyCon in addition to some others which might be interesting as well - https://www.youtube.com/user/irongeek/playlists

modeless 1 day ago 1 reply      


Coding a game engine from scratch, but don't think it's just about games. The techniques covered range from beginner to highly advanced and programmers in any field, at any skill level, can learn a lot. For example, check out the live editing/reloading for C code in Week 5. https://hero.handmade.network/episodes

awa 1 day ago 0 replies      
GoTo Conferences: https://www.youtube.com/user/GotoConferences

Mycodeschool: https://www.youtube.com/user/mycodeschool - Great for a refresher esp. if you are starting with interview style questions

Google Developers: https://www.youtube.com/user/GoogleDevelopers

Oreilly - https://www.youtube.com/user/OreillyMedia/videos -> Need to look at playlists to find really relevant ones. But good videos on AI, microservices and software architecture

spike021 1 day ago 1 reply      
Not so much programming techniques or best-practices, but I've really enjoyed watching Computer Science and Math-related lectures on MIT Opencourseware's channel. I highly recommend that one.

If you're trying to re-learn math (and probably going the Khan Academy route) then I highly recommend checking out PatrickJMT's channel. He produces simple, but excellent mathematical videos in a style similar to tutoring (which is how he started doing the videos in the first place). I actually find his style to be much more engaging than Khan (nothing against Khan of course).

_neil 1 day ago 2 replies      
Fun Fun Function is often entertaining. https://www.youtube.com/channel/UCO1cgjhGzsSYb1rsB4bFe4Q
felixangell1024 1 day ago 0 replies      
I've been enjoying Jon Blow's (creator of Braid & The Witness) programming language talks and demos. He's making a new programming language for games, and it's very interesting to watch. I think he's even hired a developer to work on the compiler.

Here's the playlist:https://www.youtube.com/playlist?list=PLmV5I2fxaiCKfxMBrNsU1...

MadWombat 1 day ago 2 replies      
I do not, in fact, have a favorite YT channel for developers. I hate with a fiery passion the recent fad of making everything that is supposed to be text, maybe text with a few pictures into a video. You cannot search a video. You cannot skim a video. You cannot copy and paste code sample from a video. You cannot watch it offline as easily as you can read a page.
rajeshp1986 1 day ago 0 replies      
I was preparing for interviews and came across Tushar Roy's channel:


I really like the way he provides most simplistic explanations to the algorithm problems. Really helpful if you are preparing for an interview.

If you like physics and want some really good explanations to simple questions, you can check Derek Mueller's channel(Veritasium) on youtube. He is a physicist and has some really good videos. I especially like his video on " Most radioactive places on earth" and a separate video on Chernobyl. Also, check his video on Uranium : Twisting the dragon's tail : https://www.youtube.com/watch?v=cO57Zm-WNmg

lfowles 1 day ago 0 replies      
This is C++ specific:

CPPCon https://www.youtube.com/user/CppCon

eskimobloood 1 day ago 0 replies      
Bartosz Milewski on Haskell and Category Theory : https://www.youtube.com/channel/UC8BtBl8PNgd3vWKtm2yJ7aA
motivic 1 day ago 0 replies      
Bo Qian's C++ videos are worth watching: https://www.youtube.com/user/BoQianTheProgrammer
brakmic 1 day ago 1 reply      
kanzure 1 day ago 1 reply      
ythl 1 day ago 2 replies      
For Unity apps I like "Makin' Stuff Look Good": https://www.youtube.com/channel/UCEklP9iLcpExB8vp_fWQseg
tchadwick 1 day ago 1 reply      
sooheon 1 day ago 0 replies      
Brian Will (https://www.youtube.com/user/briantwill/videos). I came into his channel from looking at his Clojure videos, but he has many other videos on other languages, basic (but easily misunderstood) programming concepts, and opinionated and educational videos on general programming paradigms.
yexponential 1 day ago 3 replies      
Youtube.com/thenewboston something very soothing about his videos and humor
fatherzeus 1 day ago 1 reply      
Because I know some of us are lazy I compiled most of them in one youtube section: https://www.youtube.com/channel/UC4MHkuCGUxMY6Q_yjPuzSgA/cha...

To the list I added three for those interested in iOS:

* https://www.youtube.com/user/CodeWithChris/playlists

* https://www.youtube.com/user/Archetapp/playlists

* https://www.youtube.com/user/veasoftware/playlists

taivare 1 day ago 0 replies      
This guy cracks me up ! Daniel Shiffman https://www.youtube.com/channel/UCvjgXvBlbQiydffZU7m1_aw Great way to get kids interested in programming . ps. He teaches p5.js really well !
pknerd 1 day ago 0 replies      
When it comes to learning ML in Python, Django and other topics, no one can beat Sentdex https://www.youtube.com/channel/UCfzlCWGWYyIQ0aLC5w48gBQ
godelski 19 hours ago 0 replies      
I thought I'd add to the list for non-programming stuff.

- Ben Krasnow of Applied Science: Great for any maker, he currently works for Google X. https://www.youtube.com/channel/UCivA7_KLKWo43tFcCkFvydw (blog http://benkrasnow.blogspot.com/)

- Dan Gelbart: If you want to learn any prototyping https://www.youtube.com/user/dgelbart/videos

- EEVblog: All things electronic https://www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ

pbhowmic 1 day ago 0 replies      
It depends on what I am trying to improve on. Currently it is the CMU Database Group https://www.youtube.com/channel/UCHnBsf2rH-K7pn09rb3qvkA because I have never taken any DB courses in school and I felt the need to shore up my skills there.
burnt1ce 1 day ago 0 replies      
It's not free but Clean Coders by Bob Martin (Uncle Bob).https://cleancoders.com/videos

You can watch some his videos for free by signing a free trial account at https://www.safaribooksonline.com/. No credit card required.

vishaltelangre 8 hours ago 0 replies      
Daniel Shiffman (Coding Rainbow) - https://www.youtube.com/user/shiffman

He is a very funny and a great teacher!

agumonkey 1 day ago 0 replies      
I don't think they have dedicated pages, but searching for the classics Dan Friedman and Gerald Sussman is guaranteed brain tease. The minikanren relational interpreter is still high in my top videos ever, and Sussman watch engineering talk was packed with surprises.
DYZT 1 day ago 1 reply      
BriefTube.com is a TLDR; for Youtube educational videos. Instantly get the gist of what is being said and when.

*I'm the proud developer of BriefTube

code_chimp 1 day ago 0 replies      
I enjoy the discussions on the Entreprogrammers channel: https://www.youtube.com/user/entreprogrammers
Raphmedia 1 day ago 0 replies      
MIT channel is awesome. Learnt a lot. Take a look at this course: https://www.youtube.com/watch?v=k6U-i4gXkLM
zelon88 1 day ago 1 reply      
Can I nominate myself? I know I'm not very good or very diverse but if you want thousands of lines of vanilla Cowboy PHP I'm your man. https://www.youtube.com/watch?v=nb93xii7Eis&list=PLVbKN4o8V_...
mdadm 1 day ago 0 replies      
Super-late to this, but I always find https://www.youtube.com/channel/UCdX4uJUwSFwiY3XBvu-F_-Q to be interesting. Not sure if this is exactly relevant to the question, but I feel like I learn from it anyway.
cerved 1 day ago 0 replies      
There are some really nice JS talks by Douglas Crockford on the now defunct YUI library YouTube page:https://www.youtube.com/channel/UCTHcgWOTU6gPje1g_U29tfQEven though they are a few years old, they're still relevant
swah 1 day ago 1 reply      
Can we go meta? Youtube is doing a lazy job at making me watch more Youtube.

I receive notifications for certain channels while I'm at work - later at home, I have no idea how to watch "most interesting stuff from the last days" in a easy way. Then I go open channels manually! Come on!

They can easily improve and win the TV and Netflix on the living room... all the creative content is there. Show me some sort of auto generated playlist with the new content from channels I'm subscribed and that are trending.

Polyvalent 1 day ago 0 replies      
Haven't seen this one posted here yet, but The Art of the Problem is insanely good. (https://www.youtube.com/user/ArtOfTheProblem)

Great focus on the fundamental questions of Computer Science.

sanketbajoria 5 hours ago 0 replies      
Awesome list.. it will help me a lot. Thanks a lot
TimBoland 1 day ago 0 replies      
Simple Programmer (https://www.youtube.com/user/jsonmez): Awesome... A Developers Life Coach. Im a huge fan, I watch every single video and he has helped me in more ways than I can count.

My other favorites have already been mentioned

tduraipkt 1 day ago 0 replies      
Can someone suggest channels/resources to understand all programming paradigms / general design patterns / algorithms / data structures ?


thirdsun 1 day ago 0 replies      
Nobody mentioned Confreaks yet? I'm surprised. https://www.youtube.com/user/Confreaks

Confreaks records, broadcasts and covers conferences, talks and presentation relevant to all kinds of developers. Neatly organized in a playlist per event and uploaded reasonably quick I consider their coverage as extremely valuable for someone like me who isn't able or willing to attend all those great conferences and talks that are still very much relevant to me.

kolpav 1 day ago 0 replies      

Jamie King

His series on C# is best I have seen. He also covers other topics and is very good teacher, lot of examples and is not afraid to go low level to explain things.

bloodragoon 1 day ago 0 replies      
I have these in my subscription list:

LearnCode.academy: https://www.youtube.com/user/learncodeacademy (Web development)

thoughtbot: https://www.youtube.com/user/ThoughtbotVideo (I watch them for Vim and emacs videos)

and funfunfunction: someone already mentioned it

chadscira 1 day ago 0 replies      

Lots of great tutorials, and cool guy.

leke 1 day ago 0 replies      
For web developers (especially PHP devs)...phpAcademy, now CodeCouse https://www.youtube.com/user/phpacademy

I haven't really found a good one for JS yet.

bart3r 1 day ago 0 replies      
Mackenzie Child is goodhttps://www.youtube.com/user/mackenziechild

He does dev & design, specialising in Ruby on Rails

iraldir 1 day ago 0 replies      
Google Chrome Developers (https://www.youtube.com/channel/UCnUYZLuoy1rq1aVMwx4aTzw), lots of good shows about JavaScript goodness, including some very state of the art stuff (HTTP2 for instance). A few good shows including a live one.
EJTH 1 day ago 0 replies      
CNLohr never fails to amaze me with his ESP8266 hacks or his OpenGL voxel/raycasting experiments.


Not really related to best practices though, but he has done some nice things with the ESP8266.

pynerds 22 hours ago 0 replies      
rekshaw 1 day ago 1 reply      
famous gaming youtuber Quill18 also has a side channel called quill18creates, in which he creates various types of games from scratch. His content is pretty cool! I listen to him at 1.5x speed. His channel is really good if you want to get into game development, especially with the Unity engine.
venkateshkumar 1 day ago 0 replies      
For Java technologies like Spring, Jax-RS & etc.,https://www.youtube.com/user/koushks
venkateshkumar 1 day ago 0 replies      
I like the Java Brains for Java technologies.


fanaticgeek 1 day ago 0 replies      
I started a Youtube channel for amateurs ( covers Linux, basics of Web Development ): http://youtube.com/beingskilled
fnord123 1 day ago 0 replies      
Jens Dittrich : https://www.youtube.com/channel/UCC9zrtAkl6yY4dpcnWrCHjA - but he seems to have stopped. :( There's loads of great stuff about implementing data retrieval systems.
de4sher 1 day ago 0 replies      
I do Python mostly. For Python there are conferences called PyCon. Type that into youtube search, and you'll find many channels. These are usually grouped per year and/or location. Watch videos there. The videos are not really for beginners, but for intermediate/advanced skill levels.
yugoja 1 day ago 0 replies      
* LearnCode.academy- https://www.youtube.com/user/learncodeacademy

Has good stuff mainly about JavaScript.

BinaryIdiot 1 day ago 0 replies      
Mine! Just kidding but I have been thinking of starting one so coming at this from another direction: does anyone have good resources regarding creating a YouTube channel?
yankoff 1 day ago 0 replies      
Sirajology https://www.youtube.com/channel/UCWN3xxRkmTPmbKwht9FuE5A

Covers machine learning related topics in a very fun way.

interdrift 1 day ago 1 reply      
Anyone has any good source for dynamic programming ones? I'm really strugling with that topic.
samirm 1 day ago 0 replies      
vladsanchez 1 day ago 0 replies      
Must watch John Lindquist's Pattern Craft : https://www.youtube.com/playlist?list=PL8B19C3040F6381A2
watmough 1 day ago 0 replies      
C++ Weekly (https://www.youtube.com/watch?v=B3WWsKFePiM)Jason Turner

Just discovered it and watching right now.

pythonbull 22 hours ago 0 replies      
patrickk 1 day ago 0 replies      
Coding for Entrepreneurs: https://www.youtube.com/channel/UCWEHue8kksIaktO8KTTN_zg

Depending on your level, it might be quite basic, but the titles of the videos are simply superb, and each video deals with a concrete topic so it's easy to follow along.

Not Youtube, but /r/watchpeoplecode has some great videos, often from Twitch: https://www.reddit.com/r/WatchPeopleCode/

Next Day Video has some great talks: https://www.youtube.com/user/NextDayVideo/videos

Not coding, VPRO from the Netherlands (English language) has some great "hacker" interest documentaries, e.g. the future of renewable energy, growing vegetables under LEDs or high frequency traders: https://www.youtube.com/user/VPROinternational/videos

Hardware hacking (admittedly I haven't watched it much): https://www.youtube.com/channel/UCfo1-oOnGqp1UgygGqlZL4A/vid...

CGP Grey: https://www.youtube.com/user/CGPGrey/videos Great

For coding/concerntration music, this music has some really nice electronic music: https://www.youtube.com/channel/UCqaay_q0YERQBEg4o5EjvZw (warning the "cover" images are quite porn-y and NSFW, but the music is good)

EDIT: Mighty car mods is a hilarious pair of lads from Australia, they do funny and informative car mods to some sweet Japanese cars: https://www.youtube.com/user/mightycarmods/videos

Jeorg Sprave is a German guy who makes truly insane catapults, slingshots, bows, cannons, modified Nerf guns, etc and demonstrates their use: https://www.youtube.com/user/JoergSprave/videos

davzie 1 day ago 0 replies      
Shameful self plug: http://youtube.com/c/theskaterdev

Mainly about PHP, Laravel and some soft topics.

BtM909 1 day ago 1 reply      
Although more for beginners: https://www.youtube.com/user/CodeBabes
chubs 1 day ago 4 replies      
Related: Can anyone recommend any golang ones?
brak1 1 day ago 0 replies      
Not youtube, but laracasts.com for php stuff
StapleHorse 1 day ago 0 replies      
It would be usefull if HN have an "add post to favorites". If not, I'm forced to comment to save the link. :)

BTW, I learnt some Android programming with a 2012 playlist in youtube (Android bootcamp). I guess is dated now.

pknerd 1 day ago 0 replies      
Will anyone recommend some Youtube channels for:

- C++ learning from scratch


- Architecture and Design?


princeb 1 day ago 1 reply      

my bias showing here.

marknadal 1 day ago 0 replies      
The team over here is making explainer videos for beginner programmers on things like web application data security, cryptography, and data concurrency.

Here is our security/cryptography series: https://www.youtube.com/watch?v=C9Me04oEopk

Here is the channel: https://www.youtube.com/channel/UCQAtpf-zi9Pp4__2nToOM8g

1 day ago 1 day ago 1 reply      
An Open Source, Self-Hosted Heroku bitmatica.com
434 points by stucat  1 day ago   118 comments top 31
mbreedlove 1 day ago 6 replies      
I just migrated a hobby website to Dokku, which also markets itself as a self-hosted Heroku. I was curious how Flynn compared. Fortunately, there was a blog post giving an overview[1]. I get the impression that Flynn has all the benefits of Dokku, but has the ability to scale to multiple servers. It seems like Flynn is obviously better than Dokku, so I guess I get to do that this weekend.

Keeping up with new containerization tech is starting to feel like keeping up with new JS frameworks/tooling...

[1] https://flynn.io/blog/upgrading-from-dokku-to-flynn

bglusman 1 day ago 5 replies      
This is a great overview of the kubernetes/self-hosted PaaS landscape, but is also clearly a bit of marketing for Flynn. Flynn looks awesome, but also as/more awesome at a glance from my research and test runs is https://github.com/convox/rack which I got closer to working more quickly than Flynn, though it helped that Convox builds on top of docker-compose.yml files, which we were already using for development.

For better or worse, we're going the full kubernetes route though, and still working out what deployment etc looks like. So far a lot of un-DRY looking YAML files have inspired a spike at a tool to help manage creating and maintaining kubernetes yaml[1], which others reading this are welcome to try and I'd love to hear better alternatives to or get feedback/pull requests/etc. I may push up a branch I'm working on later that partially automates creating deployments from a Procfile, but we discovered having seperate Procfiles may make applying env-variable only changes harder, curious to hear if others have any guidelines on that, it's so easy to edit an ENV var on Heroku we took it for granted.

[1] https://github.com/stellaservice/ky

ggrochow 1 day ago 2 replies      
As someone who's been using flynn in production for a month or two, some things to be aware of. (Devops is not one of my strongpoints, so keep that in mind)

You want to use an external blob-store, by default it uses its own postgres to store them. However, it also doesn't do any garbage collection, so we ran out of HD space on our cluster, causing postgres to go into read-only mode. This prevented us from pushing updates / changing any app-config settings ( ENV, Scaling, etc ). Thankfully we were hosting our own DB off-cluster or that too would have been read only.

The default limits on memory is 1gb, and for our app, when it runs out, it just crashes. Leaving no obvious error messages to be found.

Obviously RTFM as well, (especially this part https://flynn.io/docs/production) we had some other issues that could have easily been prevented.

Huge shout-out to the team that hangs out in their IRC channel, they were a massive help in solving the problems we've came across.

Using it when it works is lovely, we switched off of heroku recently and its been a very similar experience.

mawalu 1 day ago 1 reply      
"However, a primary goal of our solution was to automate the process of going from code in a repository to a deployed application in our cluster much like Heroku. Kubernetes did not appear have any mechanism to support this type of workflow, nor a handful of other features we had hoped to find."

Just in case someone is feeling the same, deis[1] is providing exactly this. I did not try their software but I've read a lot of positive about them in the last time.

[1] https://deis.com/

splitrocket 1 day ago 2 replies      
I run flynn as a local staging/CI service in our networking closet. It allows us to rapidly try out new apps/services in an environment that approaches production on a couple of machines we had lying around super quickly.

There are still a couple of rough edges, specifically around upgrading and persistence across power failures, which is unlikely in a datacenter, but aside from those things, all in all excellent.

In particular, though, the flynn.io team are particularly excellent in terms of support.

magnotorres 16 hours ago 0 replies      
We at Globo.com[1] are using docker in production before it was considered ready for prod, with tsuru PaaS, as some features in tsuru(like self-healing) made docker easy to handle, manage and scale containers. Tsuru has more than 4 years, it's really stable and reliable, we are attending huge traffics in a large number of apps and it has lots of important features like multi cluster(pool), metrics, auto scale, granular in relation to permissions of users, etc. We are investing a lot in this project as anyone can see in our repo[2] and we changed completely the way devs, (dev/)ops and product people worked here. Tsuru was already easy to install(all in one VM[3,4]), and now we have an experimental way[5] to make it in all IaaSs supported by docker machine.

[1] Globo.com is the internet arm of Globo Group, the biggest broadcast television in Brazil and second in the world[2] https://github.com/tsuru/tsuru[3] https://github.com/tsuru/tsuru-bootstrap[4] https://github.com/tsuru/now[5] https://docs.tsuru.io/stable/experimental/installer.html

mr_luc 17 hours ago 0 replies      
I don't compare Flynn with Heroku or Dokku. I compare it with Kubernetes.

When it comes to dev UX, I'd agree that Flynn's is better, though both are easy to use. But I'd point to Convox for great dev UX in something that deploys only to AWS, and that can use a dockerfile/binary artifact instead of git push (I've been a minor contributor to Dokku and Convox, using both in prod on a few different projects).

I mention k8s because "self-hosted" is mentioned in the title.

Personally, the main reason I've been doing personal projects in k8s over the past 6 months or so is that 1) it offers out-of-the-box container networking and dns-based discovery, and my side projects are all distributed software so it makes it easy to get nodes talking, and 2) minikube runs a cluster where I can actually scale my apps up and down and test out distributed software on my laptop similarly to how it will be deployed.

(I'm investigating using Weave's ECS AMI, so that I can also get container discovery and networking in Convox, because I love the Convox dev UX so very much. But I'm also thinking, more and more, about how I can automate a smoother dev UX for my k8s projects, because I also like being able to easily run a real cluster locally in minikube, and Convox can run locally but with only one instance of each app).

jacques_chester 1 day ago 1 reply      
Since there are some Flynnsters hereabouts: do you run buildpacks unmodified? How do you deal with fully disconnected environments?

I work on Cloud Foundry buildpacks, several of which are downstream from Heroku's. So I'm professionally interested in seeing another perspective on how to drive them.

mcescalante 1 day ago 3 replies      
I'm curious about any compelling reasons I should use something like Dokku or Flynn if I already prefer to manage my own infra with something like Ansible or Salt. Serious question, not a sarcastic rhetorical remark about this type of tool :)
heyrhett 1 day ago 2 replies      
I looked into all the "Self-Hosted Heroku's" a few few months ago. One feature I found they all lacked is multitenancy, meaning that there is no security model in place to trust that you could host multiple pieces of code from different clients without them hacking each other.

I'm not talking about the deployment specifically, but rather isolating the code once it is deployed.

Am I missing something there?

bbcbasic 1 day ago 0 replies      

 { tldr : 'https://flynn.io' }

tracker1 1 day ago 0 replies      
Facing a similar situation a couple years ago, the solution I had pushed for was just for a few (3) dokku servers setup behind an nginx server as a reverse-proxy... the reason for multiple servers in our case was redundancy first, this split allowed us to do the exact same deploy to three servers, run tests, update nginx config then down the old version(s) of the apps.

Flynn and deis definitely seem interesting, as does the tooling that coreos and docker themselves are working on.

neokya 1 day ago 1 reply      
Looks like this is great project.

We are using powerful dedicated server to host multiple sites/apps like the way shared hosting providers do. Maintenance and upgrade is so painful, I am trying to move to something else.

I looked into Docker but seems things are still not stable. Another approach I am looking into is KVM virtualization.

Aactually, all I want is something like Heroku (but self hosted or German providers cause our clients are German and that's important) where we can host each app on it's own container.

So far, this meets all the requirements.

malnick 1 day ago 0 replies      
Take a look at dcos.io (Mesosphere's Data Center Operating System). DC/OS provides a lot of the missing features you're after:

- Persistant workloads- Fine grained ACL's for RBAC

They're also working on shipping a consolidated logging and metrics API in Winter of 2017 which will enabled users to get workload plus host-level logs and metrics into almost any log and metrics aggregation solution (in your case, ELK would be easy to ship to).

Best of all it runs on top of production proven scheduling software, Apache Mesos, which has wide community adoption and support.

ohstopitu 1 day ago 2 replies      
I would love to have something like AWS Lambda that can be self hosted on something like this or Flynn.

I know a lot of enterprises that are interested in using serverless arch (the framework serverless[0], not the literal definition of not using servers) but don't want to use AWS or other public cloud providers.

[0]: https://serverless.com

bahmutov 1 day ago 0 replies      
I have been using Dokku for a year for personal side projects and it has been awesome. Each release brings good features, fixes bugs and in general improves it.

Setting up could never be easier (read https://glebbahmutov.com/blog/running-multiple-applications-...) and the large number of plugins for databases is a huge plus.

dabeeeenster 1 day ago 1 reply      
Is there a way to dynamically auto-scale hosts? One of my app has very bursty traffic, and would require scaling from 2 to 10 host servers and then back down over a period of several hours. I can't see this referenced in the docs? I can see you can scale processes but that's not increasing host resources available, right?
ukd1 1 day ago 4 replies      
Why not just use Heroku and actually build your product?
tscolari 1 day ago 0 replies      
You should check cloudfoundry -> https://cloudfoundry.org

It's opensource, multi-tenant and widely tested (used) by big companies.

smartbit 1 day ago 0 replies      
How would Flynn compare to Cisco Mantl https://blogs.cisco.com/cloud/mantl-version-1-2-released-kub...? Mantl is Open Source, supports many Cloud platforms using Terraform including Openstack & virtualBox, schedules with Kubernetes & Mesos, etc, etc: all the buzz-words included :-)

BTW Met the Flynn team at 32C3, nice guys indeed.

mmanfrin 1 day ago 1 reply      
Anyone have experience to how this compares with Deis (Workflow)? Last week I spent an evening getting a small cluster set up with kubernetes and deis. It looks to work very similar to Flynn.
spitfire 1 day ago 2 replies      
Is there any HIPAA story for Flynn?

You can do HIPAA on AWS yourself or use (expensive vendors). However both of these routes lose you the management/deployment abilities of things like Heroku/Flynn.

artellectual 1 day ago 0 replies      
I too have been on a journey to create a heroku for myself. I finalised my system on using rancher + drone ci combo.

You can watch a video of my setup here:https://www.youtube.com/watch?v=zxPB2v-tWvQ&list=PLjQo0sojbb...

ukd1 1 day ago 2 replies      
Did anyone checkout https://convox.com/ - which is a more direct alternative to Heroku?
afro88 1 day ago 1 reply      
Anyone using Erlang/Elixir on Flynn? Will distributed message sending between deployed apps work?
barkingcat 1 day ago 1 reply      
It isn't clear from the intro docs, but what OS's does Flynn run on?

The install guide mentions Ubuntu. Does it work on FreeBSD? Does it work on other Linux distributions from the Redhat family (fedora, centos, rhel, etc)

mwalburn 1 day ago 2 replies      
Curious if the folks looking for an "open source Heroku", whow found Flynn, also looked at open source Cloud Foundry... and what turned them off from CF.
evunveot 1 day ago 0 replies      
Anyone have experience with DC/OS? It runs on Mesos, not Kubernetes, but in any case it seems very full featured.


sairamkunala 1 day ago 0 replies      
one more PaaS solution I found today - https://hasura.io/ built on Kubernetes and Docker. Thought this has some relevance here
softwarelimits 1 day ago 0 replies      
no autoscaling.
xutopia 1 day ago 2 replies      
TLDR: We tried getting something similar to Heroku up and running but we ended up going with a paid service that starts at 4299$/month.
Its Been Real, Android: Why Im Retiring from Android raptureinvenice.com
486 points by chx  2 days ago   314 comments top 53
clumsysmurf 2 days ago 5 replies      
A while back, Dianne Hackborn famously said:

"We often see questions from developers that are asking from the Android platform engineers about the kinds of design patterns and architectures they use in their apps. But the answer, maybe surprisingly, is we often don't have a strong opinion or really an opinion at all." (1)

While that may have been a lofty ideal, in practice Android has many strict requirements on how you partition your code between Activity, Fragment, ContentProvider, and Service classes. Never mind testability and all the new semi-opaque / intelligent battery optimizations Android applies to your app.

After all these years, I still find the most difficult and un-natural thing is mixing concurrency / background tasks that must outlive the UI with complex UI component lifecycles. This is a frequent and necessary thing to do, and also quite awkward. The result is unnecessary complexity that often and easily permeates the code. Dianne says they have no opinions on architecture, but where I disagree is concurrency is an architectural concern and there are definitely many corner cases & snafus mixing that with Android APIs.

(1) https://plus.google.com/+DianneHackborn/posts/FXCCYxepsDU

izacus 2 days ago 15 replies      
Just like the web platform, Android is hugely improved when you leverage the community libraries and tools they provided. Gradle actually helps a lot with that, since its clear dependency management makes use of external libraries a breeze.

If in 2016 you're still complaining about AsyncTasks and its management, you certanly have missed a lot of progress in the last few years. It's not unlike having people complain about JavaScript issues without ever looking at jQuery, React or newer tooling.

The most useful things you can do for yourself currently are:

* Adopt Kotlin as a language. It's not all that different from Swift, comes with IDE support, tiny standard library and really fixes the pain of Java 6.

* Use MVP patterns and its friends. There are a few libraries which take most of the pain of lifecycles away.

* Use RxJava, Retrofit, Glide, etc. libraries that make your life easier with concurrency. A lot of these tools are better and easier to use than what even exists on iOS. Using AsyncTask in 2016 is just silly, it was never a good API.

* Use Gradle! Driven by its scripting language, you can do so much to script and automatize your build.

Other than that, I agree, after years of development:

* Some Android APIs just aren't well thought out.

* Gradle badly needs performance improvement.

* State of NDK is just sad. Fixable, but sad.

* MultiDEX is a result of a very very dumb decision in Android 1.0 and it's going to hurt us for a long time :/

All-in-all, I honestly think the author didn't really look into Android all that much to have complaints that he had. The blog post is somewhere on the level of someone complaining about IE6 JavaScript bugs when we've already moved on to React and are dealing now with very different issues.

(And no I'm not saying Android is great or even a great platform. It's not. It's just that, just like on Web, you can do a lot to fix major pains.)

virmundi 2 days ago 4 replies      
I don't think that the person is being lazy. I've tried my hand at Android. I will continue to do so. I don't like it for the reasons enumerated in the post. The whole damn thing is a hack at this point. No one has a good generalizable architectural model for laying out an Android project. Attempting to target multiple devices is truly a pain. You can do it. You have to really, really think about. You also have to end up making whole sub sections of your product for a specific form factor.

I'm not saying that iOS is better. Don't really know. I've played with Swift and a few of the Apple tutorials.

In general, I'm against the current incarnation of mobile. After years of having an Android (and now having an iPhone due to work), I switched to a Samsung Juke. That's right, a feature phone! The Android just got slower and slower. No updates, not improvements. Finally it screeched in my ears while working. I picked it up and slammed it on the desk (felt great for a week). Both iOS and Android are slow, overly wrought operating systems.

That being said, unlike the author, I'll still use Android and iOS for my products. I have products that need to be mobile. They have to target the machines my customers have now. That also means that I'll have two native app code bases. I'll have to keep track of native app UX/UI standards. I'll have to keep such hardware around ('cause Android's emulator is still sucks when I've got an VM running).

tananaev 2 days ago 3 replies      
I think there are no developers that are true experts in both Android and iOS platforms. Every developer I know either leans towards one platform or another. There are also developers who know both platforms pretty well, but I won't call them experts in either.

I consider myself an expert in Android development. The only point that I agree with is multidex, but there are historical reasons for the limitation and I think Google engineers are trying to fix this problem or make it as simple as possible to use multidex.

I occasionally do iOS development and some things in iOS don't make sense to me, but I'm sure they would be obvious for an iOS expert.

My advice for mobile developers or future mobile developers is to specialize in a single platform that you like more. For me it's Android. For the author of the article, it seems to be iOS.

MaulingMonkey 2 days ago 4 replies      
> Googles adoption of gradle has been a disaster and proved to be a terrible decision. It did help out with some previous issues, namely multiple app targets, but its slowed down compilation severely. It also makes for masochistic configuration files with major redundancy and fragmented dependency hosts. Getting an app to compile shouldnt be a challenge.

The only thing worse than gradle is ANT, which it replaced.

> Wait, what is picasso? Oh wow, I hadnt heard of that oneI was busy learning Swift.

I just minimize the amount of platform specific tech in the codebase as much as possible. RxJava? That's going to be real fun to port...

Ahh, this didn't even touch on my least favorite part of Android - command line tools that tell you they've "successfully" deployed APKs. And returned successful return codes. That in reality silently failed due to ever so slightly loose USB connections.

On the plus side, they finally fixed https://code.google.com/p/android/issues/detail?id=197287 in Android 7.0 it looks like...? I'm trying to remember if that was the bug to blame for my last 16 hour day...

mahyarm 2 days ago 1 reply      
We adopted buck at work for android & objective-c ios and it's been amazing speed & low-bullshit wise:


If gradle is killing you, I would suggest trying it out.

Warning: we have a few guys in a mobile developer experience team, so I don't know how good it is for indies.

cyberferret 2 days ago 1 reply      
I found that as I get older, and still try to learn different languages and platforms, that I have to try and work on my research skills as much as my coding skills.

As the OP pointed out - straddling several languages means that syntax and keywords are not always readily apparent when you sit down to code, but knowing where to look for them and refresh your memory quickly becomes an activity all on its own.

This from a guy who is a week away from being 50, and still occasionally puts a ';' at the end of his ruby code blocks.

seibelj 2 days ago 4 replies      
Unless you are writing a Tier 1 application that needs every fancy do-hicky, I don't see the point of 100% native anymore. Use React Native, then if necessary have a devoted native developer for each platform to handle parts that absolutely have to be executed in native and provide a JavaScript API. If you are a big company with tons of money, sure, create duplicate teams to make the same app for each platform. But if you are small or just starting, React Native is the best choice.
credo 2 days ago 2 replies      
Like the op, I do both iOS and Android development work. However, as an indie, my platform preference is primarily market-driven. So most of my work has been on iOS

Unlike the OP, I like and use Android AsyncTasks. I have no problems with Android fragments either.

However, I did have a lot of other concerns with Android - primarily the low quality of Google's SDK for Android. Here is what I wrote about ithttps://blog.cascadesoft.net/2013/12/31/the-bigger-problem-w...

chickenbane 2 days ago 1 reply      
I do not think writing Android apps is straight-forward and would not recommend it to new developers or engineers like the author who want to do other things like iOS. People's expectations for apps is only getting higher, and there are many, many things you need to understand in order to be a produce great Android apps.

As an example, another commenter noted the Android platform engineers not being opinionated about application development as a "lofty ideal", but more likely this is a consequence of the framework team having enough on their plate. The vanilla Java AOSP API surface (not even considering the NDK, support libraries, Google Services, etc.) is enormous. The Activity lifecycle is complicated, and it's very easy to leak memory or write spaghetti code. There are many ways to do similar tasks, and these also change with time. Etc.

That said, I love being an Android developer, and it is improving at an accelerated rate. To start, Android Studio and Gradle are far superior to the pain of getting Eclipse, Ant and the SDK tools working together.

Yes, Swift is awesome and shiny, but there is so much more to a platform than the language. Java has excellent tooling - great support for debugging, monitoring, automated testing for CI/CD (automated UI testing still needs work, but also improving), static analysis, etc.

The support libraries are also a godsend, enabling you to make an app that looks modern while being frequently updated and handling a lot of the compatibility headache from the platform's diversity.

Finally, there's a lot of great content online. The conferences are great and its expected to see their content on YouTube. Google's Android Developer YouTube channel is also fantastic (shout out to Jo and Ian!), and Google is slowly but surely improving the developer docs and integrating their sample code into Android Studio.

So yes, you do need to understand the new functional reactive approach. You need to know how to write a Gradle build. You have to understand the complexities of proguard rules. It's all pretty frustrating. But I also feel that many of the skills are more easily transferrable - I can also write a Gradle build for a library or I can use IntelliJ to better debug a servlet. With Swift and iOS, there's only vendor you can build for.

ClayFerguson 2 days ago 13 replies      
Developers do need to pick a set of core technologies, and stick to it or a career can fall apart I bet. I don't know from experience. I've been a Java DEV ever since MSFT tried to hijack the Java language with a proprietary version back in 1998, and I abandoned MSFT and never went back. I can imagine trying to be both iOS and Android developer would be about as insane as trying to be both .NET and Java developer. Oil and water. Doesn't mix. For me there is one and only one word that i need to hear to know I want to avoid iOS: "proprietary". I wouldn't touch any Apple product with a 10ft pole. I like open systems, and Apple is all about maintaining their closed little private invite-only walled-garden of an ecosystem. No thanks. They may be successful a while longer but "open" ALWAYS wins in the end.
ryandrake 2 days ago 2 replies      
Without mentioning which platform(s) I prefer, I have to agree with the author. On one hand, it's nice to be able to work cross-platform, and architecting your app such that you maximize code sharing is a worthy and satisfying goal. But quite a bit of code (the UI mainly) cannot be shared and it's kind of tiring to finish your Platform A app, look at it with pride, and then face the need to essentially re-write the exact same thing for Platforms B and C, only in different languages and frameworks "because platform competition". You're splitting your attention, expertise, time, and learning N-ways.
rcheu 2 days ago 0 replies      
I've been doing Android development since the G1 release. I agree with most of these points, but think they're also not a huge deal after you've been working with the platform for awhile. The biggest issue is by far the iteration speed though. Build/install take way too long--Android Studio for some reason takes 15 seconds to start my app even if no changes have occurred.

Instant run is supposed to solve this, but it's too buggy to be useable right now. Sometimes your changes just don't apply, but you never know if that happened or you messed up your fix.

I actually preferred ant since I better understood what it was doing. Gradle error messages are often very vague and confusing, and build times are strangely inconsistent.

exanddevxyz 2 days ago 1 reply      
What is surprising is that google with their much celebrated hiring practices for senior devs managed to hire no one who could say no to such insanities like Fragments and Async and the entire Android dev platform/toolkit as it stands today.

Apple, formerly famous for being design hippies who couldnt care less about performance, have topped the mobile performance charts for nearly a decade straight now and with no end in sight. An entire decade! They merely had the wisdom of not choosing java to base their platform on.

georgeecollins 2 days ago 3 replies      
Gradle has problems, but it doesn't seem worse to me than making builds in Eclipse was. I would love to hear why people think it is better or worse.

I agree multidex is terrible. Google please fix this.

I do not know when I should use a fragment instead of a view. I know the layout reasons google gives in their developer guide but I don't think I have seen a piece of code that really uses fragments that way. So why?

I do like Android development though.

Ologn 2 days ago 2 replies      
I don't think lifecycles, phone rotation etc. are much of a problem, because once you know them, you know them.

I think the problem is Android keeps changing the current best practices. I'm not even sure how to know what those are - if you enter code from the Android tutorial into Android Studio, much of it is deprecated.

In January 2011, the way to do tabs in Android was via LocalActivityManager. Then in February 2011, ActionBar.Tab was added. By July 2011, the LocalActivityManager way was deprecated, and ActionBar.Tab was was pointed to as the way.

Then in November 2014 with the release of API 21, ActionBar.Tab was deprecated ( https://developer.android.com/reference/android/app/ActionBa... ). So what do we do for tabs now? Who knows? The most current tutorial ( https://developer.android.com/training/implementing-navigati... ) is still telling you to do it in the way that was deprecated two years ago.

That's what is maddening with Android - they have a way to do tabs, add a new way, deprecate the old way within five months, then three years later change their mind and dump the new way - without changing the documentation and telling you the new way to do it, it's all just deprecated.

The tutorial is full of deprecated code. What's the new way to do it? Who knows?

A few years ago some corporate director at Google must have gotten a directive to push Google TV. So then they were pushing all apps to work with Google TV. I guess that fizzled out. The latest thing is making sure our legacy apps work with Chromebooks which allow multiple apps on the screen at the same time.

I don't mind Google and Android continually chasing the new shiny, but I wish they wouldn't have a tutorial full of deprecated code, I wish they didn't change how they do things such as tabs every three years (three new ways to do it in three years). I wish they fixed bugs instead of implementing new features. On code.google.com, developers post bug reports, then many other developers jump on saying they see the same thing, and...a few years later, it just closed for being obsolete.

Another example of continuous churn - Google Analytics looks like its going by the wayside, to be replaced by Firebase. Admob is now integrated into Firebase. So that's a whole other thing that needs to be redone in an app. You have to run to stay in place.

rtpg 2 days ago 5 replies      
Kind of an OT whine relative to the contents, but I'm still extremely frustrated at how hard it is to get other languages working on Android due to the multidex-style issues.

Google should be spending millions being able to get app development up and running in something like Python. Have your app up and working in 2 minutes without having to learn Java. It boggles the mind that this isn't the case, and that the current tooling environment is soooo impossible to wrap ones mind around.

cageface 2 days ago 2 replies      
iOS has plenty of developer pain points as well, although in their case a lot of them are as much a result of dumb Apple policies as they are technical mistakes. I'm going the other way. After six years of iOS work I've had enough. I still think the web is the smart long term bet so that's where I intend to focus my energies.
tn13 2 days ago 0 replies      
When I started development on Android platform I was told that we should not do IO on UI thread. Fine enough. What is the alternative? Every tutorial out there including Google's suggested AsyncTask.

Only after few weeks I learned that we should never use AsyncTask for IO because internally it uses a threadpool of hold your breath 2 threads !

So how do I make all my REST requests ? Through something like Volley. This library is even more disgusting as it does not support some simple urls such as http://example.org/?id=1&id=2.

So I turned by focus on Services only to learn later that Services are meant for background tasks but run on UI thread.

The best approach to do your own IO is through IntentServices. Something that should have appeared in the first tutorial.

wiradikusuma 2 days ago 1 reply      
The link from HN redirects me to https://raptureinvenice.com/its-been-real-android-why-im-ret... with this error:

The raptureinvenice.com page isnt working -- raptureinvenice.com redirected you too many times.

Anyone having same problem?

mobiuscog 2 days ago 3 replies      
Android should drop Java.

It's nothing like writing 'normal' Java, and the baggage that is bought along isn't worth the effort.

I like Java. I hate Android development.

tabulatouch 2 days ago 1 reply      
I've never been an Android developer, but i am happy Xamarin (Forms) developer. It is not without some hassle, need to deal with a little amount of platform-specific code, but it's the way mobile development should be in 2017.Code the experience and functionality, do not loose (too much) time on platforms.
EddieSpeaks 2 days ago 0 replies      
Which is Why he should move to Xamarin. Xamarin Forms can let him maintain one codebase over multiple platforms and leave the rest to convention
lucb1e 2 days ago 0 replies      
At least Android doesn't require me to buy a Windows license or Mac computer (not just the license: OS X requires Mac hardware which is notoriously expensive). I'll keep it at Android.
krschultz 1 day ago 1 reply      
I was an Android developer, then flipped to being an iOS & Android developer. I chose to go back to solely Android for similar reasons to the OP. It felt like it was impossible to be excellent on both platforms. I was struggling to keep up with the pace of change.

I ended up choosing Android because I found more demand for Android developers in the market. I certainly understand some of the OP's frustration with Android development.

nurettin 1 day ago 0 replies      
I've recently been dabbling with the new android studio 2.x and It has improved considerably in the past 3 months.

For a single application all I need is:

- A main activity where I commit fragments to show stuff

- A settings activity foryouknowwhat

- A main application class to store all the data and state

- Some model classes for downloading/parsing/storing/data

- A service that can be used from my main activity and notification manager

I've been at it for a few months and the experience hasn't been as terrible as described. (Yes I do have async tasks that update the UI)

cel1ne 2 days ago 0 replies      
lubonay 2 days ago 0 replies      
I like comparing iOS to Android development as similar to playing Mario Kart and Dark Souls... It truly is a mess and I won't be surprised if/when someone releases an Android SDK SDK (SDK squared!) that generates all the horrible boilerplate so that you can start a network request, rotate your device and get the result in your view with no additional headaches.
thirdreplicator 2 days ago 2 replies      
Given all the grief expressed in the post and the comments, it seems like if someone architected a really nice, developer-friendly native mobile API for any platform you would get droves of devs flocking to it.... Despite the two major players, the market seems wide open as long as they focused on the development experience like what Matz did for Ruby... Programmers are customers too! :)
colund 21 hours ago 0 replies      
I think it's good to remember that it goes both wayshttps://twitter.com/devunwired/status/786542912469213184
ojm 2 days ago 0 replies      
keyle 2 days ago 1 reply      
I get a 404 on that article. Maybe the DB is having issues still. A cache here


gagabity 2 days ago 0 replies      
As an Android only Dev I cant disagree with any of his reasons, the tools especially are just terrible, its not unusual to spend hours trying to figure out why my project will not build, this is compounded if you live in a country with poor internet connectivity, GB sized updates to the tools are not fun.
arviewer 2 days ago 1 reply      
I get redirected to the Wordpress install page, which cannot connect to the database?


caretStick 2 days ago 0 replies      
Librarians often don't realize that they can't keep plugging in method bodies and get what they want forever. Engineering isn't f&@!ing Madlibs for Christ's sake. Learn to build things that will work 100% of the time and never compromise!
digi_owl 2 days ago 0 replies      
After writing a comment elsewhere i find myself wondering if why iOS is preferred, is that once an app is launched the app can behave pretty much like they could back in the dos days.Each app its own island, having the run of the device until the user hits the home button.

Android on the other hand is more about stitching apps together into a larger whole via intents. Thus you have not not only care about what the user will see and interact when tapping the icon in the launcher directly, but also when getting a intent from another app.

And most Android apps seems to fail on the latter. Various IM apps and such have been notorious for not going back up the intent chain when hitting the back button.

amelius 2 days ago 3 replies      
I'm not an Android developer, but I've seen my Android phone and tablet greatly deteriorate in performance over the last couple of years, mostly due to Android updates which were forced on me. I rarely use my tablet anymore because of this.
vans 2 days ago 1 reply      
The comparaison with JS is perfect. Like JS is the asm of the web ecosystem (no one wants to write its code just in JS, we generate it instead), default android and IOS way of programming have to be be generated.

Try Xamarin [0] or the newcomer flutter [1]. It's such a pain in the ass to dev in raw android or raw ios, use multi platform sdks.

And if you start with xamarin, you can target windows phone too, even if nobody cares ;-)

[0] https://www.xamarin.com/[1] https://flutter.io/

teek 2 days ago 0 replies      
> Googles adoption of gradle has been a disaster and proved to be a terrible decision. It did help out with some previous issues, namely multiple app targets, but its slowed down compilation severely. It also makes for masochistic configuration files with major redundancy and fragmented dependency hosts. Getting an app to compile shouldnt be a challenge.

To be fair iOS dependency management is also a huge pain. CocoaPods is worse than working with Gradle in my opinion.

tarr11 2 days ago 0 replies      
Interesting, I have avoided much mobile development for the past decade for the same reasons OP mentions.

However, I have been drawn in by the promise of React Native, which addresses compilation time and cross platform concerns.

pier25 1 day ago 1 reply      
Mobile development in general is a pita.

We really need a native cross platform solution that doesn't involve either running a JavaScript VM (ReactNative, NativeScript), writing UI code for each OS (Xamarin), and doesn't rely on a WebView.

Xamarin Forms could fit the bill, but last time I checked it wasn't there yet.

What other option are there?

macco 2 days ago 0 replies      
I like Android development with React-Native and Clojure.[1]

But this probably doesn't fit the bill for prof Android developers.

[1] https://github.com/drapanjanas/re-natal

ausjke 2 days ago 0 replies      
I worked on android for 3 years, then did something else for 3 years, now am back to Android, there are so many vendors selling android phones, so it shall work just fine I assume? or is it getting much worse for developers(system and app developer) these days?
z3t4 2 days ago 1 reply      
I see two types of dev methods 1) Write it all down, read through the code a few times. Then compile and do a full test. 2) Write in steps, compile and test after each step. The later is a Pita on low level. And produce more bugs.
aw4y 2 days ago 0 replies      
oh you'll be missed. I've worked on Android for ages, I don't remember in the last 3 years of one single AsyncTask I've used.
cloudjacker 2 days ago 1 reply      
lol, I've had those sentiments

employers are also skeptical you are content with both, I wouldn't consider it a value add unless you can land a lead position for a mobile team

aside from working on multiple platforms diluting your experience with the latest development patterns, it is just as easy to be stuck maintaining an old project or legacy code with an employer. This isn't unique to mobile of course, but multiple platforms really exacerbates how fast it happens.

chajath 2 days ago 0 replies      
What takes 3 hours for ios development takes 3 days for Android. Things are little bit better now that android studio is maturing, though.
shams93 1 day ago 0 replies      
For me I quit android studio to use aide to develop directly on the device. I got the remix os tv box for $50. I got fed up with needing and ultra expensive machine to develop my free software. I don't profit from Android but aide enables me to continue to contribute free apps without bankrupting myself to run an expensive development machine to do hobby software.
xHopen 1 day ago 0 replies      
I did the same years ago, I had to decide and... well iOS is a paradise compare to Android
StreamBright 2 days ago 1 reply      
Sorry for my ignorance, but wouldn't React Native help with these sort of problems?
bitmapbrother 2 days ago 1 reply      
simophin 2 days ago 5 replies      
i have to say, refusing/unable/lazy/ to learn is the most terrible thing ever happened to a developer. I'm always excited about new things even I have to learn them hard, even they start with poor quality, but I believe these are what make developers happy
ensiferum 2 days ago 0 replies      
Yeah well, Craproid APIs are awful. It's gotten marginally better in tooling (the new IDE framework shits itself like only half the times compared to the Shitclipse based one), but there's still just too many brainfarts in the APIs. And ofc the implementatations are super fragmented and buggy.

Here's a case in point: Androids MediaPlayer and its state diagram. This is pretty straigthforward pipe to the underlying Khronos OpenMAX API (that is totally brain damaged and horrible by itself). https://developer.android.com/images/mediaplayer_state_diagr...

Static types in Python zulip.org
450 points by tabbott  1 day ago   218 comments top 29
CJefferson 1 day ago 1 reply      
I just tried taking the article's advice, and running mypy on some of my code (completely unannotated) to see what came up. Some interesting things have, already made 3 patches.

One comment to the article author: Tell people how to install mypy. I started by trying 'pip install mypy', then wondered why I didn't end up with a mypy executable (you need pip3 install mypy-lang, mypy is an unrelated package).

clusmore 1 day ago 7 replies      
Honestly I haven't looked into MyPy a huge amount, and haven't used it yet. But from reading the docs on it I feel like it's taking the wrong approach. In my opinion, Python is all about duck typing, so having a static type checker that seems to focus on concrete types feels wrong to me.

Consider the first example,

 def sum_and_stringify(nums: List[int]) -> str: return str(sum(nums))
The type here is way more specific than it needs to be. Not only will this work on any sequence type (anything that supports __iter__), the element type only needs to support __add__ and __radd__ (to work against the implicit seed value of sum).

I really feel like in order to get the best of duck typing, you need a good syntax for describing types by usage, not by explicit name. Please let me know if I'm missing something, and this is actually more expressive than the documentation suggests.

Roboprog 1 day ago 8 replies      
I am glad to see that this is optional. We need languages that mix compile/parse time (static) and run time (dynamic) types, to mix what fits best to each situation.

Of course type checking can catch some problems. The more extremist elements of the static types proponents seldom seem to ask the cost of adding types, and making some otherwise generic/overloaded operations harder to implement (e.g. - excess clutter in some "wordy" type systems, particularly in the C lineage where declared identifier names follow the other verbiage). We need more tools that allow us to easily nail down fixed interfaces to avoid errors, but still allow flexible / dynamic / metaprogramming type code when needed, without having to jump through hoops in either case.

Don't be a static typing extremist! (or throw the baby out with the bath-water, either, I guess)

krylon 1 day ago 3 replies      
I still think the way Common Lisp handled typing was very convenient: Typing was basically dynamic, but one could use static typing in specific places, and one could even tell the compiler if this was for speed or for safety.

I like the idea of a hybrid type system where statically typed and dynamically typed parts coexist, OTOH, I can imagine it being difficult to implement.

Animats 1 day ago 7 replies      
Optional static typing is fine. But this approach to it is not good. The correctness of the type information is optional. PEP 484: "While these annotations are available at runtime through the usual __annotations__ attribute, no type checking happens at runtime." (Italics in original) That's just not right.

If you take that seriously, compilers can't use type information to optimize. It feels like Von Rossum is making life hard for the PyPy compiler project again. If they had hard type information, they could do serious optimizations. Guido's CPython still uses a CObject for everything internally, so it doesn't benefit much from this.

The direction that everybody else seems to be taking is that function parameters, structure fields, and globals are typed, but local types are inferred as much as possible. C++ (with "auto"), Go, and Rust all take that route. Type information on function parameters and structure fields is an important item of documentation; if the language doesn't support that, you need to put it in separate documentation or comments. But writing elaborate type declarations for local variables is no fun, and the compiler can usually infer that info anyway.

scrollaway 1 day ago 0 replies      
> For the many programmers who work in large Python 2 codebases, the even more exciting news is that mypy has full support for type-checking Python 2 programs, scales to large Python codebases, and can substantially simplify the upgrade to Python 3.

Woah! Excellent news. Really cool that they found a way to use this opportunity to bolster Python 3 migration.

aikah 1 day ago 2 replies      
Started to use python recently, coming from Go, I found:

- the official docs are useless, return types are often not documented (wtf ?) and docs aren't structured and clean. Python documentation is a giant mess.

- mypy is a god sent I used it from day one to document my Python code, but it needs better integration with python doc tools, 3rd party linters and co.

I'm ok with optional type checking. A team can make it mandatory during continuous integration while not breaking legacy code, but I hope mypy will be directly integrated to Python in the future and not a 3rd party tool.

tabbott 1 day ago 3 replies      
Original author here; I'm happy to answer any questions about the mypy experience!
StavrosK 1 day ago 0 replies      
I am extremely excited about this. I already verify parts of my applications, but better support (especially in libraries) will make this that much more useful. It's an essential part of the checking pipeline (with pyflakes, pep8, McCabe, etc).
singularity2001 1 day ago 0 replies      
@OP(tabbott), you can add to "Benefits of using type annotations":

Improves IDE integration, especially IntelliJ PyCharm's jump-to-source

jbritton 1 day ago 1 reply      
I wish PEP 484 put more thought into backward compatibility with Python2.

Currently you need to import things like Callable, Tuple and these don't exist in Python2. It is especially odd since I am using MyPy comment syntax, so MyPy needs import statements even when all types are inside comments.

I like the way Haskell puts type information above the definition.

meshko 1 day ago 2 replies      
Here's what I don't understand -- every discussion about static typing is full of people saying static typing is so good and useful. Everyone i talked to, everyone i work with, we all prefer static typing. And yet... Javascript and all that.
weberc2 1 day ago 1 reply      
Why doesn't the import cycle trick work with the Python 3 syntax? This doc seems to suggest that it should: http://mypy.readthedocs.io/en/latest/common_issues.html#impo...
baq 1 day ago 0 replies      
i've been skeptical about mypy's usefulness. i'm absolutely thrilled to be proven wrong here. thanks for blazing the trail.
mixmastamyk 1 day ago 1 reply      
Nice, how come some of the type names are capitalized? When the builtins are lower-case? e.g.: List compared to list()
leshow 18 hours ago 0 replies      
IMO adding static types is good step but it sort of misses the point of modern type systems.

The good thing about types is not that you can just annotate (or not with good inference not) and validate that some type is what you expect it to be. It's that with a proper type system you can develop better abstractions.

fuzzythinker 1 day ago 1 reply      
Don't see c/c++ target in the roadmap, which seems like an ideal use case for typed python besides correctness. Thoughts?
vram22 20 hours ago 0 replies      
Interesting. I had blogged about mypy here, a few years ago:


but had not tracked it much after that. Must check it out again.

wyldfire 1 day ago 0 replies      
Type annotations and mypy are a great idea, sure. But IMO the low hanging fruit is from static analysis tools like pyflakes, prospector, bandit. Most projects don't even capitalize on these and your time is better spent remediating the findings from these and/or carving out the exceptions where necessary.
sumitgt 1 day ago 1 reply      
This sort of reminds me of how TypeScript got started. Bracing to hear about TypePy in coming days :P
lyschoening 1 day ago 0 replies      
Mypy is great, but it still has some ways to go. For instance, the type checker is thrown off by descriptors (__get__ and __set__ are ignored). Further, the typing module needs some work. The types in the module are sufficient for annotating simple programs, but the more "meta" the programming becomes the more walls will pop up.
agentgt 1 day ago 0 replies      
Does PEP 484 plan to allow runtime reification of types (ie type information during runtime via reflection aka Java/C#)? I made a cursory check of it and it is unclear but I would assume no.

I know some may disagree but I have found runtime reification of types fairly useful in the Java world (partly because Java does not have good code generators like OCaml/Haskell and partly because Java is not that expressive).

whalesalad 1 day ago 0 replies      
It bothers me when the constructs of the language are not used for things like this. Example, the syntax for a list of ints is `List[int]` as opposed to `list(int)` where list is an actual fn in python and so it makes more sense. Obviously list(int) has far different meaning, but List is a totally foreign thing in Python. I think it makes sense for a DSL to remain as close to the parent as possible.

Another example of this is most of the prismatic/schema-esque frameworks for python to do validation on datastructures. Instead of saying foo must be { "name": "String" } (where there is a framework-specific meaning behind the literal word "String") we should take advantage of the built-in types and say {"name": basestring}.

End rant.

Dowwie 1 day ago 1 reply      
Can someone point me to a live, public instance of Zulip that I can use to experience a real demo?
foxhop 1 day ago 0 replies      
The python 2.x "comment" version should have been parsed from the docstring...
wyager 1 day ago 0 replies      
> It has a far lower false positive rate than the commercial static analyzers Ive used!

Hoo boy. That's not a good thing. A consistent type system doesn't have "false positives". Reading between the lines, this means "the type checker is incomplete and allows incorrect types."

What is the story here with constraints, polymorphism, etc?

singularity2001 1 day ago 1 reply      
Sorry for posting this issue here:

python3 type_annotations.py

 def sum_and_stringify(nums: List[int]) -> str: 
NameError: name 'List' is not defined

EDIT: Solved: Either just list or List[int] with import:

from typing import List

Thanks for all the help guys! By the way I took the example from the mypy page. A classical case of 'critical line missing from example code' (as perfectioned by Bjarne Stroustrup back when)

RodericDay 1 day ago 1 reply      

 sum_and_stringify(nums: List[int]) -> str:
This looks so bad. I think Python is making a big mistake with this.

The commented version is much more acceptable.

vegabook 1 day ago 3 replies      
...and so we risk shuffling even further away from what made Python great. Simple pragmatism. Now in addition to unicode hair tearout, xrange forcefeed, dict access strait jacket, print function dogmatism, and extraneous unused async library which was already implemented 14x elsewhere, we are moving towards strictly typed Python?? If you want all this stuff, surely there is C, Ocaml, Go, or Typescript, etc, all of which are much faster?
Maslow CNC maslowcnc.com
386 points by MaslowCNC  1 day ago   96 comments top 28
ChuckMcM 1 day ago 3 replies      
I've built several of the 2D plotters (two stepper motors, some string, some math, and blam you have you have a plotter. Most fun was sticking them on chalk boards and then using chalk in them to put some really amazing drawings up on the chalk board.

That experience has suggested that this project is not going to be as successful as they would hope. That is because you can't depend on gravity to be stronger than the angular momentum of a router bit hitting a knot in the wood. Specifically when you're routering away and you hit material that pushes back on the router, the router may not move in a gravity planned sort of way. I've seen that in the plotters when the drawing device catches on the material that its drawing on. You get a line that goes horizontal when it should go down.

These sorts of things are pretty easy to pass off when you just hang a new sheet of paper but if it means throwing out a 4x8 sheet of plywood its going to be a bit more painful.

As for discontinuous lines you put a wall sensor on the drawing puck (or the router) and when you need it to move you tell the operator. Who goes over and lifts the pen/router off the paper. The code detects the lift, adjusts to the new position while you lightly hold the puck, and then indicates you should let it back down on the surface. Once the wall sensor activates it goes back to drawing.

JaggedNZ 1 day ago 3 replies      
I'm a relatively new owner of an OX CNC (Ooznest kitset). I also researched a bunch of other options before purchasing, including the Shapeoko 2 & 3. I've spent ~$1200USD (incl. shipping literally across the globe), Those in the US could easily come in under $1000USD. The above mentioned CNC routers are really on the low end in terms of minimum required rigidity.

While the feed rate of the machine looks OK, but they do not specify the depth of cut per pass. Combine this with the fact they don't show a part being cut from start to end, even speed up, is telling. I suspect a excessive number of very shallow cuts, leading to long cut times and excessive tool wear. I also suspect if the cut depth is to great you might find out the true meaning of climb cutting.

0.4mm resolution is not that great and the resolution actually changes based on how far you are from each motor!

Mounting material to cut on a vertical surface is going to be a major pain if it's not a quarter sheet of ply or bigger. And once a part is cut loose without tabs the router is liable to kick them out, that's going to be a nasty learning experience for some.

The only great things about this machine are its large cutting area, small foot print and low price. But fair warning, the limitations will start to stack up fast I suspect, this machine would be best suited cutting flat pack furniture designs from full sheets of ply, when delivery time is not an issue. To his credit this does seem to be the market he is targeting.

jacquesm 1 day ago 2 replies      
Very nice job!

An alternative for the router brand: Makita, they offer a number of router bodies that seemingly last forever in both wood and more difficult materials (fibreglass), I've run them for 100's of hours (and probably 1000's) without a problem.

Beware of steppers when you're driving routers, you may lose steps along the way ruining your workpiece (step loss is loosely related to Murphy's law, it will happen near the end of complex workpieces).

If you build this thing out of metal with a watertable underneath it will be slightly more expensive but you'll be able to use a plasmacutter to cut metal as well as wood by swapping out the head.

Here is what I built:


(That's the first version, before making a much lighter gantry to improve speed constancy in corners, not very important for woodworking but extremely important when plasma-cutting.)

Some critical observations about 'Maslov':

Hanging plotters suffer from asymmetric curves when it comes to acceleration 'up' or 'down' which can lead to surprises in overshoot/undershoot of the intended toolpath.

Cable plotters tend to have a problem with that anyway and gravity will make this problem worse. If accuracy is important consider making it horizontal.

Animats 1 day ago 2 replies      
This is kind of neat, but the rigidity is questionable. It's significant that they only show sped-up video. You don't get to see the actual cutting speed. I suspect they have a really low feed rate because they can't exert significant side loads on the router. Maybe if they had four chains, so it wasn't just gravity holding the thing in place... Wallboard, yes, MDF, probably, plywood, if thin, hardwood, no.

A big problem is that this thing gets its Z position by riding on the material it is cutting. So you have to cut things out of fresh big sheets. If you cut away too much, work near the edges, or use smaller sheet stock, there's going to be trouble. For decorative scrollwork in thin stock, though, it could be useful. Expect stuff from this machine to appear on Etsy shortly.

I've used ShopBots for similar work. Those have enough rigidity for wood, even hardwood. The limitation on cutting speed is damage to the router bit; the machine has plenty of feed power.

Dowwie 1 day ago 0 replies      
This kind of work gets me so excited. Thank you for leading the way, @BarSmith! Open source industrial design communities such as OpenBricks [1] and OpenDesk [2] have emerged to fuel the imaginations of users of Maslow CNC mills.

For instance, one could now mill a vertical gardening wall-mounted planter, with community help, by joining this project: http://www.openbricks.io/app#!/project/566af15e584123b4502f4...

It is a right of passage for a homeowner who DIYs to create a workbench. I haven't created mine yet but have investigated approaches. One novel approach is a torsion box-based workbench. The painstaking process one must undergo to create the lattices could be replaced by a fitting together CNC milled, continuous pieces. So cool.

I'm so ready to join this movement..

[1] http://www.openbricks.io/[2] https://www.opendesk.cc/

abetusk 23 hours ago 1 reply      
This seems like a cool project but the non-commercial license in the CAD files [1] is a no-go for me to fund their Kickstarter. It does look like the PCBs [2] and firmware [3] are free/libre licensed.

[1] https://github.com/MaslowCNC/CAD/blob/master/License

[2] https://github.com/MaslowCNC/PCBs/blob/master/LICENSE

[3] https://github.com/MaslowCNC/Firmware/blob/master/LICENSE

2sk21 1 day ago 0 replies      
This may be very well received in the model railroad community. When building a layout, one of the techniques (called cookie cutter) for creating the subroadbed is to cut out shapes from a sheet of 4 by 8 plywood similar to this gadget. See this for example: https://www.youtube.com/watch?v=iqcUKofeElc
abakker 20 hours ago 2 replies      
2 more things:

1. this isn't really printing, its subtracting. I think its important to make this distinction.

2. feed rate is REALLY important with getting good tool life as well as good cut quality. Relying on gravity to control a 1-2 HP router is not going to counter the cut forces well except at seriously sub-optimal cut rates.

e.g. A carbide 2 flute upcut end mill with .5" diameter cutting plywood works nicely with a cut depth of about .5" and a feed rate of somewhere around 200-300 inches per minute. Even that may not yield the optimal chip load to keep the bit cool. That assumes a router speed of ~20k RPMs and 3.25 peak HP (AC motor @ 110v).

kirillzubovsky 1 day ago 1 reply      
An interesting alternative to a Glowforge. This machine seems less of a "tool for makers" of small things though, and rather an autonomous cutting machine for big projects. It would be silly to use this to cut out a leather wallet, for example, but totally reasonable to build a chair. Neat!

p.s. oh man, make a chair design, and then just set these babies to run day in/out. that could be an fun factory!

100ideas 20 hours ago 0 replies      
The crawlbot is another hobby-friendly compact 4x8' CNC. It's $2000. It saves space by attaching directly to the 4x8 sheet with timing belts and using it as the frame for the long axis. The shorter axis and router are contained in a 5x1x1 ft housing that "crawls" back and forth across the workpiece.


danellis 1 day ago 3 replies      
"We're making the choice not to patent it."

Now that the US is first-to-file, doesn't that mean someone else can patent it and use the patent against them? Isn't the best thing to patent it and give royalty-free licenses?

beambot 1 day ago 0 replies      
Looks cool... but I'm worried about repeatability and accuracy. I've seen a lot of similarly-designed 2-motor "drawing robots", and the precision definitely wasn't 0.4mm (as claimed). I imagine this could be difficult given the use of gravity to supply the lateral cutting force?

On a related note: I'm pretty excited for the ShaperTools handheld router: https://shapertools.com/ You get the benefit of big work pieces & CAD-based routing, but in a hand-tool form factor.

skj 1 day ago 0 replies      
Oh, Kickstarter.
alexissantos 23 hours ago 0 replies      
When can I get my hands on this?!

I was just looking for something like this yesterday! I pre-ordered a Shaper Origin (https://shapertools.com), which ships in September 2017, but I need something to use now.

Yaggo 1 day ago 1 reply      
I don't know if the idea is unique (edit: no, they mention it's based on a known concept of "hanging plotter"), but that's a neat way to utilize gravity to bring down costs. It's much more accurate (.4mm) than I would expect, enough for most hobby work with big sheets.

(Off topic, but a hanging plotter (for drawing) would be rewarding project to build with a kid!)

roel_v 1 day ago 1 reply      
How would this thing lift up the router to go between spots that aren't connected? Or can't it, and is that the reason the logo's circle was open?

And what would be the precision on this thing? It's a bit suspicious they'd leave that out... Would it be able to work at 1 mm precision?

callumprentice 23 hours ago 0 replies      
Looks brilliant - if I could make one suggestion for the video - more examples of what it can do.
mdorazio 1 day ago 0 replies      
This is interesting in that it is somewhat similar to the "delta" style 3d printers in concept, just in 2-axis instead of 3.
Yenrabbit 1 day ago 0 replies      
Nice concept, and I love their philosophy about openness. I'm interested to see how well it works!
aidenn0 1 day ago 3 replies      
This is a 2-axis router it looks like; though if you used the recommended router, you could adjust the depth between runs.
awinter-py 23 hours ago 1 reply      
plywood is peachy but aluminum is awesome. have a robot glue a line of thermite to horizontal sheet metal. Light a match and you have your part.

(Tolerances may not be exact).

tunichtgut 1 day ago 0 replies      
I like the low cost idea and approach. rly neat!
jessedhillon 21 hours ago 0 replies      
Quick tip about your site: put up some photos, not just videos. I'm on a mobile phone and want to see this thing, and playing video is annoying, and sometimes unfeasible.
erikb 1 day ago 1 reply      
I'm no expert in hardware and software that is developed close to hardware. Can someone explain to me where the achievement is, before the Kickstarter even starts?
JumpCrisscross 23 hours ago 0 replies      
How does this do splines?
zxcvvcxz 20 hours ago 0 replies      
Small random quote from the vid:

> More details for nerds below

I'm not knocking the person who said this fairly innocuous statement (I catch myself saying similar things), but it goes to show our unresolved social biases against technical people. Yes, some people care about numbers and details and engineering. Unfortunately, that associates them with a term that implies low social value.

If another country overtakes the US in terms of innovation and engineering, you can be sure that they will be showing greater respect to their technical class of peoples.

Hasz 1 day ago 2 replies      
The chains are pretty neat! Any idea on backlash?
GigabyteCoin 1 day ago 1 reply      
The title should be changed as this product is not currently available for purchase.
A Man Who Stood Up To Facebook npr.org
436 points by krissara  1 day ago   112 comments top 16
CapitalistCartr 23 hours ago 2 replies      
Orin Kerr is the country's leading attorney on Computer Crime Law(1) and The Volokh Conspiracy writers are a powerhouse in Constitutional Law generally. Its almost certainly too late for Vachani and Power Ventures; Facebook have destroyed them, and any ruling is only symbolic, but for the rest of us, a correct ruling is essential for the future of a free Internet.

Here is Orin Kerr writing about Power Ventures: https://www.washingtonpost.com/news/volokh-conspiracy/wp/201...

1) https://www.washingtonpost.com/news/volokh-conspiracy/wp/201...

athenot 22 hours ago 1 reply      
The elephant in the room is that facebook wants to directly engage with their users in order to control the advertising aspect. This startup uses the side-effect of Facebook (platform for friends to share stuff) while cutting out the business value proposition (advertising).

This is sad because I'm increasingly getting annoyed at Facebook's positionning between me and my friends. It's promoting behavior that is different from real life as they stand to gain from stoking outrages and heated discussions: more active user engagement!

treve 1 day ago 3 replies      
> "The word spam is kind of like calling someone a rapist. It has in [the] digital world calling someone a spammer is the worst thing you could possibly call them."

I really don't feel that spammer and rapist are even in the same league.

kbenson 21 hours ago 4 replies      
Vachani is based in Brazil, where life is more affordable. He flies into San Francisco a lot, though, in an ongoing effort to stay in the tech biz.

So, open question, how much cheaper does it have to be in Brazil to make it worthwhile to live there because it's cheaper, if you are flying into SF a lot? I mean, I know SF is expensive, but presumably if you are willing to make ~$600 flights on a regular basis, you would be willing to commute a few hours. Within two hours of SF, things aren't exactly cheap, but they are cheap relative to SF. How much cheaper does Brazil have to be (living in at least a moderately sized city) for this to effective, assuming he flies into SF 8 times a year?

This of course ignores other reasons he may want to live in Brazil (such as family), because that wasn't how it was presented.

achow 23 hours ago 3 replies      
Because of this I discovered the book 'Chaos Monkeys' and immediately bought it!The top Amazon review decided it for me..

Amazingly accurate coverage of Facebook's internal culture, the good, the bad, and the ugly. (Plus much, much more!) https://www.amazon.com/review/R2GQCWUZKVOY10/ref=cm_cr_dp_ti...

szx 23 hours ago 1 reply      
So you own your data but they won't let just any app touch it. Apps need to comply with certain conditions and FB retains complete control.

Where it gets interesting is when someone like this guy tries to circumvent this arrangement by having the user willingly supply them with their credentials.

FB would never blame the user, even though that's arguably the correct way to respond, because that's a PR disaster. Whether the guy in this particular story seems shady or not, it seems inevitable that FB would take the path of litigation to destroy anyone who exposes the dissonance in the way they run their business.

the_watcher 18 hours ago 1 reply      
This highlights two major issues, to me:

* Wow does the CFAA need reform.

* With the rate that tech is advancing, it's becoming a problem how unfamiliar with it many in the justice system are. It's not a knock on them at all - it's hard to keep up for those of us working in the industry. I'm not sure what the best solution is outside of trying to make sure that the laws are as correctly formulated as possible, and even that's only a partial fix.

panic 1 day ago 2 replies      
Cross-network dashboards like the one described in the article help make the world more open and connected. Facebook ought to be supporting this guy.
yunruse 19 hours ago 0 replies      
Facebook is not appealing the spam decision and, the spokesperson points out, it has won on hacking so far.

The wording of 'won on hacking' is extremely worrying, if it is verbatim. Facebook seem to act here as if they can steamroll over power-users who stray too far from the 'norm', so to speak, without consequence: while it is true that all companies must try to save face, accusing an app developer of hacking and spamming is too far.

I guess not appealing the spam decision is some small humility, but treating a lawsuit like a competition to 'win' has certain implications on Facebook's strategy.

anewhnaccount 13 hours ago 0 replies      
Didn't Facebook used to ask to log in to your email to import your contacts to look for friends? Sure, unlike LinkedIn they at least actually asked first, but I think it shows how there's one law for the incumbent and quite another for the rest.
nchelluri 17 hours ago 1 reply      
Wouldn't it (or couldn't) it be a violation of TOS to share your FB password with another site?

Does FB now have an option like Google to export your data? I thought that was a nice touch on Google's part; I vaguely remember reading it was championed by some people in the company who really wanted to avoid locking people in out of their own moral convictions.

I confess to not seeing the bigger picture here: I don't see how all of this can be equated to locking a user's data into Facebook. Would it be against TOS to write a FB app that crawled a user's graph and downloaded all of their data?

jedberg 18 hours ago 1 reply      
If I say you can put your diamond ring in my house and then give you a key, but tell you that if you want your ring you have to let me talk to you for five minutes every time you get it, and then you give your key to a friend who I don't like, don't I have the right to keep that person out, even though you gave them the key I gave you?

Basically this guy is your friend I don't like.

I understand not liking the walled garden, but if you don't like it, then you shouldn't enter it in the first place. Don't go into the garden and then give your friend a key to the place just to avoid me.

xseven 22 hours ago 1 reply      
I wish all the articles had an unbiased TLDR attached to it.

I came here for the clickbait, not the story!!

gondo 16 hours ago 0 replies      
Isn't this similar case as Zenefits vs ADP? Power Ventures accessing Facebook on behalf of their users, same way as Zenefits was accessing ADP? I did not follow the Z vs A case, just barely remember that it happened.
6stringmerc 1 day ago 0 replies      
Sounds a lot like the product in question relied on a Man-In-The-Middle-As-Service protocol and I can reasonably conclude why other service providers might find that approach as unwelcome and written-out of their Terms of Service. I don't see Facebook taking the same approach to something like LastPass. I'm not inclined to give either party in this one a whole lot of blanket endorsement or scorn, I think each side has some noteworthy concerns regarding both motivation and methods.
happyslobro 1 day ago 2 replies      
This man is a hero of our times. I am going to show his story to all of my Facebook friends. Fuck Zuck.
Intel will add deep-learning instructions to its processors lemire.me
352 points by ingve  22 hours ago   115 comments top 21
antirez 21 hours ago 6 replies      
That's a good news! About that, two days ago I modified the implementation of neural networks inside Neural Redis in order to use AVX2. It was a pretty interesting experience and in the end after modifying most of it, the implementation is 2x faster compared to the vanilla C implementation (already optimized to be cache obvious).

I never touched AVX or SSE in the past, so this was a great learning experience. In 30 minutes you can get 90% of it, but I think that to really do great stuff you need to also understand the relative cost of every AVX operation. There is an incredible user at Stack Overflow that replies to most AVX / SSE questions, if you check the AVX / SSE tag you'll find it easily.

However I noticed that when there were many load/store operations to do, there was no particular gain. See for example this code:

 #ifdef USE_AVX __m256 es = _mm256_set1_ps(error_signal); int psteps = prevunits/8; for (int x = 0; x < psteps; x++) { __m256 outputs = _mm256_loadu_ps(o); __m256 gradients = _mm256_mul_ps(es,outputs); _mm256_storeu_ps(g,gradients); o += 8; g += 8; } k += 8*psteps; #endif
What I do here is to calculate the gradient after I computed the error signal (error * derivative of the activation function). The code is equivalent to:

 for (; k < prevunits; k++) *g++ = error_signal*(*o++);
Any hint about exploiting AVX at its max in this use case? Thanks. Ok probably this was more a thing for Stack Overflow, but too late, hitting enter.

sbierwagen 22 hours ago 8 replies      
Blogspam, kinda. Post just links to https://software.intel.com/sites/default/files/managed/69/78... and says it mentions two new instructions: AVX512_4VNNIW (Vector instructions for deep learning enhanced word variable precision) and AVX512_4FMAPS (Vector instructions for deep learning floating-point single precision)

On Intel's part, it seems kinda... late? It's like adding Bitcoin instructions when you already know everyone's racing to make Bitcoin ASICs. How could it beat dedicated hardware, or even GPUs, on ops/watt? Maybe it's intended for inference, not training, but that doesn't sound compelling either.

yongjik 17 hours ago 1 reply      
Apologies if I'm dumb, but did Intel actually tell exactly what operations these "deep learning" instructions do?

I skimmed through the linked Intel manual, but it seems that it just defines two instruction family names (AVX512_4VNNIW and AVX512_4FMAPS) without actually saying what they do.

* It almost feels like a marketing term, in the same way everything was "multimedia instructions" back in the 90s.

zbjornson 19 hours ago 1 reply      
Really curious how Intel (others?) determined that these new instructions are for deep learning. The instructions are for permutation, packed multiply+low/high accumulate, and a sort of masked byte move. Are these super common in deep learning?
unsignedqword 21 hours ago 1 reply      
Cool stuff, but unfortunately Intel has really delayed AVX512 instructions for their main consumer processors (ffs, it was supposed to hit on Skylake). It looks like we have another die shrink to go after Kaby Lake before we get that sweet ultra-wide SIMD:


eveningcoffee 19 hours ago 0 replies      
I did tests with Torch7 few days ago to compare it with OpenBLAS library on multiple cores against CUDNN.

Single core difference was around 100x.

Using multiple cores improved the situation but there still was about 15x difference that did not improve by adding more cores (I tested with up to Xeon 64 cores on a single machine).

I did not test with Intel MKL library as I did not have time for this.

I wonder how much these instructions would improve the situation and does anybody here have experience with Intel MKL library.

happycube 21 hours ago 0 replies      
Not holding my breath, since they haven't gotten AVX512 into desktops yet! (Kaby Lake might be worth something if they did... but nope, just more lie7's mostly...)
schappim 18 hours ago 1 reply      
There is actually an undocumented neural net engine within the Intel chip on the Arduino 101.
jostmey 21 hours ago 3 replies      
How much will this help? Neural networks work so well on distributed computing systems because the operations run in parallel. With a neural network, you can leverage tens of thousands of separate computing cores. Top intel processors have around a dozen cores or so.

What am I missing here?

rosstex 15 hours ago 0 replies      
Could someone explain how these are deep-learning optimized? All I see is that they're part of the 512-bit vector family that has previously existed.
gragas 9 hours ago 0 replies      
Isn't this basically just wider SIMD? Is this in anyway actually tailored specifically to deep learning?
visarga 21 hours ago 0 replies      
> Intel is hoping that the Xeon+FPGA package is enticing enough to convince enterprises to stick with x86, rather than moving over to a competing architecture (such as Nvidias Tesla GPGPUs ).

Then let it prove its performance on a few deep learning benchmarks. If is so fast and accessible, we'll be impressed.

ktamiola 17 hours ago 0 replies      
Sounds good to me. Let's hope this is not just a marketing move.
betolink 16 hours ago 0 replies      
Is this the moment when Sarah Connor shows up to ruin the party?
joelthelion 21 hours ago 2 replies      
So Intel CPUs will be able to perform 16 operations at a time, when Nvidia can do thousands?
tomrod 14 hours ago 0 replies      
Well. I guess I'm going to be using Intel!
AvenueIngres 19 hours ago 1 reply      
What are the implications of this? Faster processing?
zenobit256 21 hours ago 0 replies      
Great, another extension to the ever-growing instruction x86 instruction set...

I'd question why, but at this point, we're just going to keep bolting things on to an existing architecture.

"Microcode it. Why not?"

denim_chicken 17 hours ago 0 replies      
I hope they will be more useful than MPX.
partycoder 20 hours ago 0 replies      
You can also try a binarized neural network.


PHP 7 deployment at Dailymotion dailymotion.com
359 points by dailymotioneng  1 day ago   152 comments top 13
nikcub 1 day ago 15 replies      
Hack and HHVM solves what is, IMO, the worst feature of the default PHP runtime environment[0] - and that is the superglobals.

It wasn't mentioned in the post from Slack, but default superglobals and the earlier register_globals design decisions are the worst and most impactful wart in PHP.

Because it was designed as a templating language, the default web server interface, which is CGI - will auto-expose all variables in global scope, ex.

 echo $_POST['user_id']
PHP has a horrible reputation with security for this reason - we all know that somehow, somewhere, in almost every project someone is pulling in a user-controlled variable from a superglobal and they aren't escaping or checking it properly (since you can't be warned about it but the feature will work).

Worse - and i've seen this a lot, even with Laravel, CodeIgniter, Cake, Symfony/Silex etc. you end up with these well structured projects that declare request classes, methods and variables etc. etc. but then sometime down the road a developer takes a shortcut in a method and pulls in a $_GET or $_POST inside a controller (usually because they don't know how, or aren't bothered to - changing all the related classes) - running around the default exec stack.

I've seen this so often - because it's so easy to do it. The most common place is where a designer has built a frontend AJAX form. They now need to build a quick backend check, so they Google "php backend ajax username check" and they'll likely get a result like this one:


where the 4th and 5th lines to the solution are:

 $username=$_POST['username']; $query="SELECT * FROM username_list WHERE username='$username' ";
they copy that into a file called ajax_username_check.php and save it to the server - and they've now destroyed all that previous good work by opening up a very blatant and easy to find SQLi vulnerability. Their database will be on pastebin within a month.

You can spot this type of vulnerability from the frontend because the URLs used in the AJAX calls don't match the URL router patterns for the rest of the app (ex. GET /user/username_check_ajax.php vs /user/check_user).

In other languages you can't get that without using a standard library that will escape the values by default. Any solution you search for will always be a safe method to obtain the variable values by default.

Some good news: Hack doesn't expose superglobals in strict mode:


I'd strongly recommend that this is used in all PHP projects, since it strictly enforces variable access - even in cases where you're using a framework that is supposed to enforce it.

IMO PHP missed a big opportunity with not removing superglobals in version 7 and enforcing an explicit safe request object much like other languages do. They likely wanted to avoid it because of the cluster of register_globals and magic_quotes from earlier versions.

[0] I think it is important to distinguish PHP the language and PHP the runtime. PHP the language is now decent - having caught up with a lot of features (although I find it very verbose and harder to read) while PHP the runtime is undoubtably still a horrible runtime - hence HHVM

verelo 1 day ago 1 reply      
We did the same thing with HHVM, and had VERY similar results; getting it to work was plain hard, and i had a lot of concerns about our ability to ever go back.

Before we ever launched with HHVM completely, PHP7 came out. With only a few weeks of work, we managed to make the switch. The gains were identical to what we saw on HHVM, only the experience of working with PHP7 was so much easier for everyone involved.

Having said all this, I think HHVM served a great purpose: It raised the bar and PHP is better because of that. All in all, a great outcome for the people of the Internet.

jsamuel 1 day ago 0 replies      
At ServerPilot, we decided early on not to support HHVM for similar reasons: we could see PHP 7 was going to offer the same performance benefits without the pain, breakage, and downtime of HHVM.

Early on, before PHP 7 was released, we had to explain this to many of our users who use ServerPilot to host WordPress, Magento, Laravel, and other PHP apps. They often thought there was no downside or risk with HHVM, it was as simple as dropping it in as a replacement. Nowadays, with the hype around HHVM dying down, we don't get requests for HHVM support much anymore.

For a huge company like Facebook, HHVM makes a lot of sense. And the existence of HHVM really sped up the PHP 7 development efforts and provided a great benchmark for how fast PHP 7 could be. So, the PHP community should be very grateful to Facebook for that even if HHVM isn't the future of PHP.

nchelluri 1 day ago 4 replies      
> It took less than a week to migrate our codebase (a 10 years old PHP monolith)...

> And it took 4 hours to migrate our custom extensions.

That seems like a very small amount of work; I'm impressed at how smooth a transition that must've been.

I'm also quite surprised that

> we can handle twice more traffic with same infrastructure.

Wow, I didn't think that PHP application code would be such a bottleneck. Maybe it's not that, but if the entire codebase is written in PHP, and you replace it all in one shot, you just get such an improvement. But I thought DBs, etc. would play a bigger role.

maxpert 1 day ago 4 replies      
I used to run one of my site (25K unique visitors a day) on PHP 5.3, when HHVM came out with stable version I shifted to HHVM and I had similar experience. Now I am running it on PHP 7 and I have to say I am more than happy with results. As much as PHP is not cool for today's developers it has served on some really high traffic sites and stayed useful even with the test of time.

P.S. Now I wish somebody just implements a good Async IO system and ability to run HTTP right off the PHP engine (I know there is php -S ...; I am talking about a better async system).

nodesocket 1 day ago 1 reply      
What tool are they using to show the memory footprint of php processs in https://cdn-images-1.medium.com/max/800/1*bFnYX8NE-V6P2U01Uc....
martin_ 1 day ago 0 replies      
Had a similar experience deploying HHVM at a previous company, I wrote up a blog post of the issues we ran into / how we worked around them[0]. One thing the dailymotion blog omits is hacklang which has additional features like lambdas, async support (though PHP 7 will soon?), strict typing, collections, generics and more. That said, if you're just trying to squeeze more out of an existing codebase, then PHP7 wins hands down.

[0] https://ma.rtin.so/when-hhvm-doesnt-work-quite-right

porker 1 day ago 0 replies      
It's a shame that HHVM has so many compatibility issues compared to PHP7, as I would love to be able to use Hack.
kijin 1 day ago 0 replies      
> In other languages you can't get that without using a standard library that will escape the values by default.

Escape for what context?

Escaping for SQL is different from escaping for HTML, which in turn is different from escaping for JS.

How does your hypothetical Request object know how to escape any given variable? Does it ping every open database handle to figure out how they want their data escaped? Does it use some kind of static analysis to figure out in what format (HTML? XML? JSON? CSV?) the app is going to spit out the value later on?

Or does it simply run a bunch of cargo-cult functions like

 return htmlspecialchars(strip_tags(mysql_real_escape_string(addslashes($_POST['var']))));
and hope that everything will be okay?

qaq 1 day ago 1 reply      
Wow today is PHP day on HN :)
smegel 1 day ago 1 reply      
Kind of ironic this wasn't a video post.
LinuxFreedom 1 day ago 1 reply      
tedmiston 1 day ago 2 replies      
> During few months, this project wasnt the priority, so we decided to wait the release of PHP 7 to compare performances.

I have no idea why the author is choosing to write in such a strange grammatical style.

Facebook Has Repeatedly Trended Fake News Since Firing Its Human Editors washingtonpost.com
344 points by M_Grey  2 days ago   313 comments top 31
vinhboy 2 days ago 14 replies      
Thank god someone is writing about this. Recently I've been on the Yahoo's homepage a lot, because of Fantasy Football, and I noticed that a lot of the content is exactly like the article says, fake news from right-wing propaganda sites.

And no, this is not me expressing my liberal bias. It's one thing to have opinionated headlines like the Huffington Post, it's another thing to have a completely fictional headline created by right-wing websites. Something along the lines of "Obama lets immigrants across border to kill white people"...

I think tech culture's misguided desire to treat everyone "equally" creates a huge imbalance. You can't put the NYTimes in the same category as Breitbart. Just as you wouldn't compare it to "National Enquirer".

Edit: To keep my reply on topic, I am adding this thought: I think Facebook knew this would happen and that is why they had humans curated the trending list. I don't think they deserved the negative backlash, although I understand the slippery slope it creates.

mjfl 2 days ago 13 replies      
You're going to have to break the Turing Test before you get good automated content curation. There will always be error.

People are worried about bias. I'm skeptical that humans have the ability to be politically unbiased on an individual level. Many modern political issues do not have a middle ground - take abortion, you are either for choice, or you believe it is infanticide. So let's stop pretending to be unbiased. Information aggregators should have their members clearly spell out their positions on popular issues in their bios (an openness that should be a part of the responsibility of being an information aggregator) and there should be "block designed" hiring around these issues to maximize political diversity and reduce bias in aggregate. Otherwise network effects are just going to cluster people with similar opinions around each other.

Just a thought.

MistahKoala 2 days ago 1 reply      
Today's news presented to me by Facebook includes Putin prepping for a Third World War by having diplomats' families return home.

My understanding of it is that he made some pronouncement that their kids are best off returning to Russia for a good, traditional nationalistic education - which has somehow warped into something more apocalyptic. Certainly, Facebook didn't originate that interpretation, but it's helping to propagate a story that's only being reported by tabloid outlets; there is no other facet of the rumour being presented by more measured and reasonable outlets.

return0 2 days ago 1 reply      
I don't understand why facebook repeatedly tries (and fails) to become a news source. They can make more money by being the world's watering hole, there is no need (and not much money imo) for going after the role of newspapers/tv. Given that their offering is exclusively popularity-driven, the quality of their news offering will always be less-than, or equal-to a very bad tabloid. If they are looking for political power, they already have it by controlling communication channels.
smokeyj 2 days ago 1 reply      
I'm becoming increasingly skeptical that anyone on the internet is an actual human being. Especially so if this entity decides what I'm reading and why. I want to see the source to ranking algorithms, input sources and moderation activity. Not that I don't trust the Zuck.
aaron695 2 days ago 1 reply      
I don't get it?

Are they trending stories or not?

Why would they not include them even if they were fake, they are still trending?

Should FB lie to us?

solvedit 2 days ago 0 replies      
I know I might be shooting myself in the foot here by posting this.

I got so annoyed by Facebook's banal trending news suggestions that I wrote a script to flag every trending news item as offensive (on the premise that it is the flag most likely to have lasting effect). I never see trending news on Facebook anymore after running that for a while.

orik 2 days ago 1 reply      
Working as intended; trending is trending.
hugh4life 2 days ago 0 replies      
I hate trends. They're inherently manipulative regardless of whether the topics are selected by a human editor or an algorithm.
emjenny 2 days ago 1 reply      
There's a peculiar detail in this story.

It refers to "the 'Association of American Physicians and Surgeons' a discredited libertarian medical organization."

1. First, why the quotes around the name of the organization? Is this not its actual name? 2. Discredited? By whom? Isn't "discredited" an objective judgement -- and thus, one the author should support with a rationale? 3. Further, it's odd that of all the examples mentioned, the AAPS is the only one not linked to. Why? The release must be online, if Facebook linked to it.


DasIch 2 days ago 0 replies      
The real lesson here is that the industry is still really bad at AI. We're good enough at it to build useful tools for tasks where failure isn't too big of a problem but once it is, you want a human filter.
the_watcher 1 day ago 0 replies      
Glad I'm not the only one who noticed this, although what tipped me off was a trending story about the Warriors wanting to trade Andre Iguodala for Iman Shumpert, which was based on a blog post by a Cleveland high schooler (for those who don't follow basketball, it's a completely ludicrous idea).
gregpardo 1 day ago 0 replies      
I think it's an experiment. A lot of people actually use facebook as their sole source of news... Especially the younger generation. This is quite scary because Facebook's algorithms are actually acting as a filter on top of already existing media filters. Before you know it the chain will be so deep it will be hard to know where anything came from.

Another problem is similar to the reddit problem. Both the AI and your customization can create an atmosphere where you literally get served only opinions you want to hear. I actually think a more random algorithm would be more beneficial than what's trending.

leepowers 2 days ago 1 reply      
What is the error rate of fake news over verified (real) news? A 5% margin of error could be acceptable. A 50% error rate would indicate a serious problem.

> As part of a larger audit of Facebooks Trending topics, the Intersect logged every news story that trended across four accounts during the workdays from Aug. 31 to Sept. 22. During that time, we uncovered five trending stories that were indisputably fake and three that were profoundly inaccurate.

Yes, but out of how many Trending stories in total? Eight fake stories over a three week period seems like an acceptable rate of error.

Trending stories are popular stories. A fake story has an element of satire. These stories could be popular because of the satire (and the subsequent humor). Trending does not imply veracity.

Kiro 2 days ago 0 replies      
The media hunt against Facebook backfires and Hacker News is very much part of the problem.
nkrisc 2 days ago 0 replies      
Maybe Facebook's human-curated news content had a political slant because much of the fake news out there has the opposite political slant. Perhaps an unintended consequence?

Or perhaps it's just that the fake news that is shared on Facebook has a particular slant, thus removing that content gave the appearance of a preference for a different political slant on the part of the curators.

ikeboy 2 days ago 0 replies      
Why can't they just filter on the domain level and throw out fake domains entirely?
amykhar 2 days ago 0 replies      
It's a sad indicator really. The fact that it's trending means a lot of people were posting it. It's hard to tell how many actually BELIEVE it, but I'm guessing it's the majority.
ybrah 2 days ago 0 replies      
I have the entire div blocked because I'm terrified of cherry picked news
dreamdu5t 2 days ago 0 replies      
I don't want AI or humans deciding what I read. I want to choose what I read. I would like to just turn off "trending" whatever the fuck altogether. Give me back the Facebook that was just content from my friends...
raverbashing 2 days ago 0 replies      
Nothing surprising from a company that notoriously fumbles removal of content (minor nudity gets removed while violence, abuse, fake pages and graphical gore (not in a journalistic sense) remains)
kordless 2 days ago 0 replies      
Humans are meant to program things. Life is meant to measure and judge. Software isn't very good at that yet because we've yet to figure out why we're good at it.
InclinedPlane 2 days ago 0 replies      
It was never very good to start with, when the whole thing turned to garbage when they fired the curation team I took that opportunity to block the element using ublock.
mtgx 2 days ago 1 reply      
So this is a lot like what Google experienced for a long time. Its algorithms would get manipulated.

However, would you prefer Google to handpick (let's forget about the volume of manual labor for now) which sites get to be at the top? Or would you rather just keep improving those algorithms?

I think Facebook is in the same situation. Facebook, Google, and to a lesser extent, Twitter, have a lot of power to influence elections.

PunchTornado 2 days ago 0 replies      
still better than having some people filter the news according to their political views.
therealbobsmoot 2 days ago 0 replies      
Seems like a good fit given that people are maintaining fake friendships and fake amazing lives on their timelines. [edit] yes I am bitter from past experience.
partycoder 2 days ago 0 replies      
Fake news that people happen to be sharing at that moment. Fake it or not that is what people is interested in and what is trending.
disposablezero 2 days ago 1 reply      
The next billion dollar startup will be a self-reprogramming, employee-less AI company which can self-produce memetic lolcat videos and celebtity gossip. >.< Unfortunately it all comes crashing down when the Twitter bot becomes obsessed with Godwin's law tropes (never happened before) and starts a political action committee (PAC) to advance it's self-directed agenda... not much different from the human world. Instead of firing as in human employees, the PR supervision process will say the Twitbot was "retrained from scratch" (reformatted) and instructed to ignore some taboo topics. ;)

In other news, humans now have even fewer jobs to do... all those idle people without jobs (ie, truck/taxi drivers, pilots, ship captains, BS office jobs) are completely, harmless, disorganized and bear absolutely no ill will against the vast majority of new wealth trickling upwards at an accelerating rate, into fewer hands.

return0 2 days ago 2 replies      
Fake news are better than biased news.
troorl 2 days ago 0 replies      
The Washingtonpost has repeatedly published fake news since forever.
popmystack 2 days ago 3 replies      
Yeah, all because people wanted to scream "bias." Sadly the community here seemed apt to agree with it, but I definitely have my opinions on that. Quoted from a previous thread:

>Did the standard for their sources remain relatively constant regardless of the material being discussed? There isn't a clear answer here, but that doesn't make it defacto censorship of one set of particular political opinions. The sources that were discussed aren't credible in any meaningful form. The fact that they happen to be largely conservative seems like a problem conservatives should address instead of calling it censorship.

But ironically, for posting that, I was meant with censorship.

People in aggregate are terrible at curation. You really do need editors for a reason. But Facebook should have been extremely blunt about the situation before. The fact that its curators let through more "liberal" sources than conservative ones, doesn't necessarily mean they're biased. It really could just be that conservative sources are far more likely to not be at a high enough standard to be posted -- which seems to be the case given the examples in the article.

Wells Fargo CEO John Stumpf Steps Down wsj.com
311 points by smaili  2 days ago   204 comments top 35
Smerity 2 days ago 11 replies      
I highly recommend listening to a recent episode[1] of Planet Money. This was by no means an accident. As a short summary of one employee's plight:

Ashley, working for them and making only $35k per year in San Francisco, was continually harassed to sign people up for accounts they didn't want. An old man comes in, pensioner, $200 in overdraft fees due to being duped into excess accounts. She dips into her own savings to get him back in the black. She reports the incident to the internal ethics line. Nothing. Tries again. Nothing. She refuses to fraudulently push excess accounts onto people. Fired. Worse, Wells Fargo put her onto a permanent blacklist that others in the industry pay attention to - she can't get a job anywhere else.

Imagine making $35k per year in San Francisco - insanely low given the region - and dipping into your own pockets to help fix a situation your own company created. Then, as thanks, being eventually fired by that company for not continuing the practice and being blacklisted in your field of work. I'm desperately hoping Ashley sues Wells Fargo in a defamation suit but I fear the likelihood of that is low - even if it's not the first time it has happened to Wells Fargo[2] ...

At best, upper management were willfully negligent of the impact that their insane sales goals had on the ethics of the company. At worst, upper management were actively trading any ethical notions they could get hold of for money, ripping apart the lives of employees and customers on the way.

[1]: http://www.npr.org/sections/money/2016/10/07/497084491/episo...

[2]: http://www.forbes.com/sites/billsinger/2011/12/15/wells-farg...

webaholic 2 days ago 3 replies      
Go Elizabeth Warren! Without her prodding, I am sure this would never have happened. He was very happy with firing the 5k employees and not taking any blame on himself for what was essentially his push.
rm999 2 days ago 0 replies      
Non-paywalled article with basically the same information: https://www.washingtonpost.com/news/business/wp/2016/10/12/w...
jackmott 2 days ago 4 replies      
Why isn't anyone in jail again?We will choke a guy to death for selling cigarettes incorrectly, and can't put people stealing millions in jail.
JumpCrisscross 2 days ago 0 replies      
The New York Times this morning about his supposed successor:

"As chief administrative officer from 2010 to 2011, however, Mr. Sloans role included overseeing Wells Fargos human resources and reputation management. He then became finance chief for three years. And one of his direct reports when he was promoted to chief operating officer last year was Carrie Tolstedt, who ran the offending community-banking division until earlier this year.

That makes Mr. Sloan a member of the inner circle that would have known about the wrongdoing from its early days and tried to deal with it. This group hardly covered itself in glory: It was still handing out pink slips in 2016, five years after the first bankers were shown the door. Mr. Stumpf and Ms. Tolstedt have already ceded compensation for the mess. Investigations by the board and regulators may yet implicate Mr. Sloan and others."


slantedview 2 days ago 0 replies      
Elizabeth Warren deserves a lot of credit for putting the heat on Stumpf. Coincidentally, one of the leaked Democratic e-mails from this week features banking lobbyists complaining to Democratic party officials about Warren:


The apparent coziness between the party and the banks is a whole other can of worms, but that Warren doesn't hesitate to go against the party grain and attack folks like Stumpf is a nice thing to see. Good on her.

hvmonk 2 days ago 1 reply      
Senator Elizabeth Warren's questioning at the hearing is worth watching: https://www.youtube.com/watch?v=xJhkX74D10M
ourmandave 2 days ago 0 replies      
A previous article said he could leave with $200M which is not a golden parachute but built up over 30 years of working there.

This article says they could take back $41M in stock options, another $4M in bonuses, and probably $20M in 2016 pay. (They paid him $19.3M in 2015.)

$200M - $65M = f*ck me

taurath 2 days ago 0 replies      
My understanding is that they created a system of unrealistic expectations as far as accounts per customer, had managers from the top that pushed this on people and they got fired.

Then, in the case where employees started reporting that they were forced to do the activity to keep their jobs, nothing was done. This seems more like a lever that can be pulled here:

Prevent banks from having ineffective whistleblowing processes by mandating use of a FINRA whistleblowing program. The person in the top comment being fired would get protected by Finra for her future employability, and Wells Fargo and other banks would take whistleblowing far more seriously. I admit it sounds very simplistic, but is there something crucial I'm missing here? I can't see how one would file charges at the top executives for "incompetantly making an internal ethics line" and "setting too difficult sales goals, causing an unintended fraudulent effect".

carsongross 2 days ago 1 reply      
Until the headline reads "Wells Fargo CEO John Stumpf Goes To Jail", nothing changes.
bogomipz 2 days ago 0 replies      
I Couldn't read the article because of paywall. Is there any news on Carrie Tolstedt the woman who oversaw the unit that created all the fraudulent accounts and gets to retire in July at age 56 with a $124 million pay package? This in addition to the $9 million dollar she took home last year.


st3v3r 2 days ago 0 replies      
He's still not actually being punished. He lost his job. Big deal; he's got a golden parachute. He's not going to go through any of the stress that any of the people he fired for this went through when they lost their jobs. He's not getting fined, he's not going to jail. The worst thing that happened to him is he got a tongue lashing from Warren.
honkhonkpants 2 days ago 3 replies      
Honestly I still don't understand why this organization continues to exist. Banks are chartered by the government for the purpose of safeguarding deposits. This bank was engaged in fraud on a huge scale. Their charter should be terminated.
Bud 2 days ago 6 replies      
Whatever. Will he get a nine-figure golden parachute like the other senior exec who just left? If not, this does not impress me. Will any of his earnings and bonuses be clawed back? If not, this does not impress me. What about the other execs responsible?
erickhill 2 days ago 4 replies      
I'm surprised no individuals at the executive level have been charged with crimes, to be honest. Or perhaps it's simply too soon and that's the next shoe to drop.
pessimizer 2 days ago 0 replies      
The USA Today headline is better: "Wells Fargo CEO Stumpf retires with $134M"
evanpw 2 days ago 2 replies      
Let me just link to Matt Levine's take: https://www.bloomberg.com/view/articles/2016-09-09/wells-far....

TL/DR: The bank probably didn't benefit on net from the fraud, even before the fines. This is more a case of management setting unreasonable sales goals and creating a terrible work environment than a conspiracy to commit fraud against bank customers.

Rapzid 2 days ago 1 reply      
I worked at Wells Fargo back in 2003. The emphasis on product bundling predates Stumpf and was attributed to Kovacevich when I worked there, and they were very proud of its effectiveness on the bank's bottom line. The unwanted accounts shenanigans were well in play when I started. I recall having to call branches to report this stuff and have accounts closed(phone bankers had some status back then at least, though I'm sure the branch managers ignored my whistle blowing).

You might think sales doesn't have much to do with customer service(phone bankers) right? Wrong. Every customer contact was considered a sales opportunity. The primary goal of every call was not helping the customer, it was refering a product and getting them on the line with a sales rep for "more information"(cause who doesn't want more information?!). From memory our major KPI's were close rate, referrals, and call time. You pretty much needed to refer a product on most calls to hit your numbers, regardless of whether the customer actually needed/would benefit from it. That covers referral rate, but they tighten the close rate and referral rate screws separately on you.

The goals they set were hard and getting harder at the time, but obtainable without gaming if you had no shame. Oh, gaming. Gaming was manipulating the system in any way. Opening accounts without proper customer consent was gaming. Other forms of gaming did not amount to fraud. Gaming was rife.

My best friend at the time, and still long time friend to this day, worked in the phone bank as customer service for about a year before making it to the sales team down stairs. Sales was a bit better from what I understand; we both had nightmares about customer service. After he graduated from college he was promoted to Sales Manager. He informs me that, depressingly, some of the same managers are there to this day. While he was there a few of the managers including himself were on the lookout for gaming, the rest I hear were actively for whatever was necessary to meet team numbers. I doubt even the highest person at the center gave a shit; whatever it took to appear to be hitting the numbers C-Levels set to get those bonuses.

My friend tells me he probably would have put a bullet in his head if he had not gotten out of there.

P.S. I'm still a Wells Fargo customer and recent events will not change that.

suprgeek 2 days ago 0 replies      
What is not mentioned in the very thin article is that this scumbag who ruined many people's lives gets to walk-away with $134 Million [1].

[1] http://www.usatoday.com/story/money/markets/2016/10/12/wells...

Yet if a common man had committed any of the fraud - they would be very likely in jail.

imh 2 days ago 0 replies      
Just Four Months Ago, New Wells Fargo Chief Said No Changes in Sales Strategy [1]. Meet the new boss, just like the old boss.

[1] https://theintercept.com/2016/10/12/just-four-months-ago-new...

GCA10 2 days ago 1 reply      
Bravo to the directors for waking up. Any time there's a long-serving CEO of a big public company, it's as if the directors have been chloroformed. They generally show no ability to question the boss, let along hold him/her accountable for anything.

Most of the other boards that should be waking up ... probably won't. But at least they've got a reminder that it's possible.

ArkyBeagle 2 days ago 2 replies      
I watched a lot of his testimony before the Financial Services Committee on CSPAN. So I am unsurprised. He took a fairly savage beating.

For some reason, the fact that Wells Fargo is a really big enterprise cut no ice with the various Congresscritters.

FWIW, I am not a "break up the banks" guy[1] mainly because of things written and said in podcasts by Charles Calomiris, author of "Fragile By Design" along with Stephen H. Haber. It is all more nuanced and complicated than that, and the small bank lobby in the US really is a thing and a thing that has caused problems.

[1] Canada has very close to only one bank and has had no financial crises to speak of.

maxerickson 2 days ago 0 replies      
I just got a robocall painting the CFPB as anti-consumer and a waste of tax dollars.
tomrod 2 days ago 0 replies      
I would expect no less. Given the size of the issue, it's virtually impossible that he didn't know about it. I'm assuming competency here, as he was leading one of the largest banks in the world.
mixmastamyk 2 days ago 1 reply      
My perception is that WF took a big turn for the worse ethics-wise when they merged with Norwest in Minneapolis. Never heard a negative word about them until that time.
trhway 2 days ago 1 reply      
he directed and benefited from massively organized criminal activity - it looks like a RICO case, isn't it?
partycoder 2 days ago 0 replies      
The apology didn't work and clients started demanding accountability. I am glad this happened.
gjolund 2 days ago 0 replies      
Is he being prosecuted?

Nothing will change until we show that white collar crime is still crime.

vadym909 2 days ago 0 replies      
That's a win? No Jail?
tlogan 2 days ago 0 replies      
The title should be: "Stumpf gets with $134M"
Frogolocalypse 2 days ago 0 replies      
RKoutnik 2 days ago 7 replies      
Meta: Looks like WSJ is smart enough now to detect the `web` links. I went directly to the site, hit paywall, backed out. Then went via the `web` link, same paywall. Went to `web` link in incognito, was able to read the (fairly anemic) article.
Bud 2 days ago 2 replies      
dbg31415 2 days ago 0 replies      
Headline tomorrow, "John Stumpf Steps appointed chairman of the board of Wells Fargo."
miguelrochefort 2 days ago 0 replies      
Shit's about to go down.
Becoming a CTO juokaz.com
326 points by djug  23 hours ago   94 comments top 20
jgrahamc 21 hours ago 3 replies      
I'm going to sound like an old fart, but it might be better to wait to write a blog post like that after you've spent some time experiencing engineering management in depth. It's very easy when capital is flowing freely and you've managed a team of 5 engineers to think that it's always going to be like that.

Ever been through an acquisition where 50% of the team was to be let go and you had to decide who and then tell them? Kill off a product after the team had almost completed it? Perform a lay off when times got bad? Give a serious, reasoned, estimated answer to the question (from the CEO): "How fast could we rewrite our entire code base from $FOO to Java?" Fire someone 20 years older than you and wonder quietly to yourself if he'd find another job? Manage more than a handful of engineers? Figure out how to outsource part of your development to India for financial reasons? Deal with a rapidly expanding customer base with creaking code? Manage a multi-million dollar budget when VCs aren't throwing money at you? Handle alleged sexual harassment? Spend hours and hours flying from customer to customer to explain your technology?

The 'pick which technology' to use part is easy and fun. Now go make that work in a real environment with real constraints.

My advice on becoming a CTO: learn how to write. You'll be spending a very large amount of time communicating your ideas.

dberg 23 hours ago 5 replies      
"If the team wants to do TDD, or pair programming, or staging servers - they get it all approved by the CTO. Its up to him to consider the bigger impact of those changes."

As a CTO, my team knows I do not need to approve what the team wants in regards to TDD or how many environments they feel they need. We operate in a mode of "do whats best" and engineers smarter than me sure as shit dont need me to rubber stamp approval of writing unit tests. I absolutely create an environment that encourages high quality products and a robust testing process. How they accomplish that is up to them.

ryandrake 23 hours ago 2 replies      
> I hate environments where the technology department is simply implementing what was envisioned by others. It might as well be an outsourced development team because it becomes independent of the decision making process.

I'd argue that the technology department should be very independent and empowered when it comes to the _technology_ decision making process. I'm less convinced that that's true for the product decision making process. I've worked in places where Product Managers and designers wrote all the requirements and dictated the look and feel down to the pixel, tossing it over the wall to developers to implement. I've worked in a place without independent, dedicated product professionals, where software engineering decided what the product should be. Both extremes have major weaknesses. You have to find the right spot on the spectrum between the two that works for the company and mix of talent you have. It's not all or nothing.

tensor 23 hours ago 10 replies      
> The CTO must protect the technology team from becoming a pure execution arm for ideas without tending to its own needs and its own ideas.

As a CTO myself, I strongly disagree with this. Yes, a dev team needs to tend to it's own ideas, but no, it shouldn't be making product decisions. You should have product and design teams that tease out user problems and come up with solutions. In that sense, the dev team does simply implement the ideas of the company. They still make technical decisions of course, but not product or UX decisions.

devy 21 hours ago 2 replies      

 Being a CTO doesnt mean you are the craziest hacker on the team. In actuality, writing code is probably the last thing you will be doing.
Not entirely true. This is a typical "You Mileage May Vary" scenario, in actuality. From all the small startup teams (headcount less than 15) that I've worked at in the past decade, CTO must be the role who leads in coding - in almost all the cases the first version of the software product was 100% done by CTOs because small agile teams don't have the luxury to be managing instead of doing and EVERYONE (even CEOs) wears a lot of hats.

After bootstrap and rounds of fundings, things will change for sure. But CTOs at very early startups are definitely more about doing less about managing IMMO.

oswamano 23 hours ago 2 replies      
"If you ever find yourself writing a blog post on why PHP sucks, you are not ready."

About 4 articles down the article is about why PHP doesn't suck. This amuses me for some reason.

codesnik 23 hours ago 0 replies      
Being CTO/CIO twice in my carrier, being protector of my small dev-realm almost fulltime, I completely agree with that article!so, probably it's wrong somewhere.
agounaris 6 hours ago 0 replies      
Juozas Kaziuknas is a good conference speaker. And as a good conference speaker oversimplifies some things to sell himself.

Being a CTO also means that "age" matters. Not because you are not smart but because you haven't worked with people enough to become a CTO. A person on his 20s or early 30, maybe has lots of technical experience already but definitely not the social skills to lead an organisation.

I remember I was interviewed once by a 25 years old "CTO" in a suit and really it was a nightmare!

> Ive sat in a few roundtables with fellow CTOs:This is kinda of what I don't like. We the "CTOs" gather to say "our" things and write blog posts about it.

0xmohit 22 hours ago 1 reply      

 Sometime down the road legacy applications become expensive to manage, but rewrites almost always deliver zero value to the customer. Its about balancing development efforts.
Well said. What is the guarantee that the rewrite would be relatively free from technical debt? I've seen several 100K lines of code being produced in rewrites that add absolutely no value -- neither in terms of performance, reliability, maintenance or even code readability.

jconley 17 hours ago 0 replies      
Matt Tucker wrote a little blog [0] about being CTO. He went from co-founder to public company CTO over 15 years...

[0] https://www.linkedin.com/pulse/five-flavors-being-cto-matt-t...

joshmn 19 hours ago 0 replies      
> Why are you stuck with this old version, why havent you rewritten it with React.js? Sorry to burst your bubble, but thats not a great idea. Sometime down the road legacy applications become expensive to manage, but rewrites almost always deliver zero value to the customer. Its about balancing development efforts. Building a team of people who only want to touch the freshly baked technologies is not sustainable.

I wish more people would realize this.

ben_jones 23 hours ago 0 replies      
As a CTO of a small start-up my neck is a little strained from nodding so much at this article. I really agree with... sorry I have an email with our largest customer to get back to.
a13n 16 hours ago 0 replies      
> but rewrites almost always deliver zero value to the customer.

I disagree. Sure no immediate value, but in the long run? You could argue certain rewrites would mean faster product development, less bug proneness, happier developers. All of these deliver value to your customers.

CorvusCrypto 22 hours ago 2 replies      
So then would the true top "Engineering" role just be lead dev? This is the role I am more interested in. Having to keep up with the state of the field to me as an engineer/CS is A: more fun, and B: more rewarding.

If anything this blog post (along with others) just keeps confirming that CTO is something I never want to be.

Edit: I should also mention that it is practice at my current company that our leads basically are the ones that consider the balance of implementation details and whether we do rewrites vs. staged refactoring. Not the CTO. This definitely seems like more of an engineering call.

tboyd47 19 hours ago 0 replies      
If what it takes to become a CTO is understanding all of this, then I'm ready. The only problem for me is that I'm not one. Oh well, back to refactoring unit tests.
tscosj 12 hours ago 0 replies      
I hoped to get some real-life experience from the blogpost, literally blah what I read. With all respect to the author, though. I have no idea how that sort of posts are taking higher than 250 points nowadays. That's the question.
nstj 14 hours ago 0 replies      
> Ive sat in a few roundtables with fellow CTOs

"Sorry guys, the event for tonight is cancelled, turns out the tables we were to sit at are rectangular."

deedubaya 21 hours ago 0 replies      
This article hit too close to home. It hits a lot of points which are all-too-true about many CT positions and how if they're not set up for success, how can the engineering team (and eventually the rest of the company company) also possibly be successful?
miles_matthias 19 hours ago 0 replies      
Love posts like these. My friend & I started a podcast to help engineers learn from other CTOs.

Check out StartupCTO.io. Would love any feedback here or on Twitter @startupctoio

scient 23 hours ago 0 replies      
This guy gets it.
Canonical releases Ubuntu 16.10 ubuntu.com
261 points by Jarlakxen  2 days ago   178 comments top 12
sho_hn 1 day ago 1 reply      
So Unity 8 continues to be a no-show as production desktop environment, despite the claim that adopting Mir instead of Wayland would accelerate progress past Wayland. Meanwhile, Fedora 25 is shipping soon with Gnome on Wayland as default, and KDE-based distros are not too far behind anymore. And Mir would be even less far along without infrastructure created for and by the Wayland community, such as libinput, which it came to rely on. (That's without talking about mobile - Wayland shipped on Jolla's SailfishOS phone to endusers more than a year before the first Mir-powered Ubuntu Phone.)

I'd say history has proven the critics right on this one.

curt15 2 days ago 1 reply      
Any word on what's happening with "Snappy Personal"? That's their desktop build composed entirely out of snaps with an A/B system partition format. They have been really quiet about it for the last few months. They started talking about it for 16.04, but then planned to defer that until 16.10 (https://ubuntuforums.org/showthread.php?t=2312045).
smacktoward 2 days ago 7 replies      
I miss the days when new Ubuntu releases included things desktop/laptop users could get excited about. Nowadays it's all stuff for servers and phones. I run Ubuntu on both my workstations, so it's sad to see that use case feel more and more like an afterthought.
ohstopitu 2 days ago 5 replies      
I used to generally update version after version, but recently, I have not seen a good enough reason to switch from 16.04 to 16.10 (I intend to stick to 16.04 till the next LTS version is released).
solaris_7 2 days ago 1 reply      
Is anyone using Snaps in production - or even regularly on their development machine?

I'm still on 14.04 and would be interested to know what the most popular uses for Snaps might be.

tonyedgecombe 2 days ago 23 replies      
"Developer preview of Unity 8 includes desktop, tablet and phone UX convergence"

Am I the only one that thinks this is a terrible idea?

holtalanm 1 day ago 2 replies      
Tried 16.10 with Unity 8 in a VirtualBox VM, and after typing in my password and hitting enter, all I get is a black screen for a few seconds before being put back on the login screen.

It seems their developer preview has issues.

0x54MUR41 2 days ago 7 replies      
I am currently using Ubuntu 16.04 LTS. There are lot of changes since 14.04 LTS. GUI change is easy to notice at the first time. You will see different look in GUI. But, I don't know the GUI somewhat buggy to me sometimes. The screen appears to be black and it will repaint when you are moving your cursor around the black screen.

My friend told me that Ubuntu's GUI system was so heavy. He suggested to use Ubuntu Mate or Kubuntu as alternative distro.

ff10 1 day ago 0 replies      
Can anybody say how well will Unity 8 work with convertible and detachable machines that run with Windows 10 out of the box? I have an HP X2 210 lying around that runs 16.04 well but without PM, Sound, detached mode and multitouch touchpad.
ithkuil 2 days ago 2 replies      
wonder if the name Yakkety Yakis a reference to https://en.wiktionary.org/wiki/yak_shaving
hendry 2 days ago 3 replies      
No mention of systemd..
qwertyuiop924 2 days ago 6 replies      
Does anybody actually use Ubuntu in production? I've forsaken it on the desktop (I got sick of my system breaking every 6 months, and having out of date packages), as have many others, but it's still quite popular there. On the server, though?
What $50 buys you at the Huaqiangbei electronics market in Shenzhen, China medium.com
344 points by obrajesse  1 day ago   110 comments top 22
code_sardaukar 1 day ago 2 replies      
From this and other accounts, it is clear that a lot of the low cost in China is due to that fact that transaction costs (the cost of writing contracts, lawyers, specifications) are reduced by replacing formal contracts by interpersonal relations[0]. So if someone screws you[1], it will hurt their relationship with you and their reputation.

Of course there are other considerations like cheap labour and the ability to rip-off Western IP (though I don't think those goods make it to the West). But these can't explain why China in particular is so dominant in manufacturing.

[0] I'm told that the term "guanxi" has two meanings. First as a generic term for "connection" or "relationship" and second as a proper noun for the way people indirectly bribe government officials. Here only the first meaning would apply since I'm talking about B2B relationships. And since it's a generic term, there is no reason to use the Chinese word.

[1] Or screws you more than is considered fair game.

Hasz 1 day ago 1 reply      
The chips, resistors, capacitors etc are all mostly functionally equivalent. The transistors, regulators ICs etc will all do what they're spec'd to do, at a basic level.

Where it gets dicey are fringe cases, and on poorly controlled specs. Care about the temperature drift of your resistor, the slew rate of your op-amp, the beta of that BJT, or the mismatched LED strings in the COB?

Better test it to make sure it'll work for you, because 90% of the time, it's bullshit.

For common parts, it's easy to set up a new line, running off good parts -- the 555 timers and lm317s do enough volume for a new line to make sense. These chips are usually better characterized. If it's a small volume part, or something old as dirt, it's usually pulls, a new part in an old case, or just a normal part remarked.

laddng 1 day ago 4 replies      
A few years ago I lived in Shanghai, and it was always fun to stop by the black markets to check out the fake iPhones and Apple gadgets that they were selling.

It was amazing how close they were to copying a real iPhone in terms of the hardware design, but it was always funny to see them run a version of Android. They were selling them for $10 a pop as well. It's incredible to check out these electronic markets in China and see the effort that goes into these fakes.

whamlastxmas 1 day ago 7 replies      
Discovering aliexpress was pretty awesome when I got started working with electronics hardware. Easily 1/5th the price of buying from an American store, in some cases as low as 1/10th the price. I've spent $500+ on stuff from aliexpress that would have been over $3k from a place like Adafruit, and I've had very few garbage pieces (though admittedly haven't used/tested a lot of it).
contingencies 1 day ago 1 reply      
Forget the west. In my experience there are a lot of legitimate products which you can buy in Shenzhen but not on Taobao. Recently my http://8-food.com/ co-founders and I visited Shenzhen from Kunming (much nicer weather) and found micro SD cards (256MB @ 3.5 / 0.50USD) and micro SD card readers (0.5 / 0.07USD). Although these were largely falsely marked as larger cards and intended for immoral mobile shops to dupe unsuspecting peasant customers, in reality they are great for low volume industrial data storage on physically modular components. Far cheaper and faster to integrate than a microcontroller! I would say that in our case, discovering the availability of USB lowball storage and validating this approach architecturally paid for the entire trip.
mjevans 1 day ago 3 replies      
The most interesting takeaway from this for me was the "32 GB" SD card.
Jean-Philipe 1 day ago 0 replies      
Uhm... well, actually, some of those things are pretty cool though! Programmable LED name badge, mini drone, a dirt cheap smartwatch - I wouldn't necessarily call that crap or dreck.
ChuckMcM 1 day ago 1 reply      
Sounds like there is an equivalent side business to candy Japan.
ced 1 day ago 4 replies      
I'd like to read a breakdown of where the 14.39 difference between the 0.60 ring in Shenzhen and the 14.99 ring on Amazon goes.
Solinoid 1 day ago 3 replies      
Can anyone shed some light on how that stencil is used? do they apply the solder to the stencil and then push the chip into it?
xg15 1 day ago 1 reply      
I'm surprised they are so awed by the "Lightning/MicroUSB" cable but gloss over the (spring-loaded?) "USB-A/MicroUSB" plug of that selfie fan. The latter seems even more insane to me.

As for the fake SD cards, I'm kind of disappointed they didn't take the opportunity and produced the world's first 100TB SD card (patent pending). I'd be curious how many phones would be wrecked by such a card just because of the announced size.

Retr0spectrum 1 day ago 1 reply      
I'd love it if there was an equivalent service that shipped to the UK, perhaps aimed more at components. I'm always buying cheap stuff from china.
ausjke 1 day ago 1 reply      
That says again that there is absolutely no way to compete against them on the manufacturing side.
imaginenore 1 day ago 0 replies      
What's crazy is that these prices include profits for the whole chain of production and transportation.
wodenokoto 1 day ago 2 replies      
Slightly off-topic. What is going on with the keyboardio? Is it shipping? Have people received and tested it? Is it worth $300+ ?
PebblesHD 1 day ago 5 replies      
Love it, and thats some amazing stuff to get in a relatively cheap box. Does anyone have any pictures from the markets, I'd imaging they're all very 'no photos' sorts of places but still.
suyash 1 day ago 1 reply      
You probably overpaid for everything being an American. Amazing how companies are selling the same stuff for huge margin here in States.
dajohnson89 1 day ago 5 replies      
Why were the boxes taped so insanely?
a_c 1 day ago 0 replies      
I once bought a wireless charger on amazon. Probably would go HQB next time
mamcx 1 day ago 0 replies      
Is interesting the parallel:

- If is a hardware rip-off is bad- If is a software rip-off is open source!


Consider that the bulk of open-source ignore all that pesky patent and IP and is directly people-to-people.

rajandatta 1 day ago 0 replies      
Awesome posy. Sign me up!
nodesocket 1 day ago 2 replies      
I think these cheap Chinese rip-off are bad for the electronics market and consumers. If your biggest concern is price when buying electronics, completely ignoring the fact of quality, care, and engineering you're contributing to decline of quality built electronics.

They don't do any of the hard engineering or go through meticulous testing and QA. They blatantly copy, and as such provide no innovation. Stop supporting this behavior, have some pride for the products you buy.

Copyright Law Shouldn't Punish Research and Repair eff.org
241 points by lelf  2 days ago   22 comments top 7
nialv7 2 days ago 1 reply      
I'm happy that we have EFF fighting on our side. But this looks like a war us consumers are losing...
acd 2 days ago 2 replies      
Imagine Samsung note 7 without a built in battery. Instead of having to trash phones for 2 Billion USD Samsung could have had the battery replaced by their end users. Imagine this pile of useless cell phones in trash piles instead of being used.

That is if we design things to be repaired the future is bright.

Signed the petition

mastazi 2 days ago 2 replies      
Could someone please explain (perhaps using a practical example) what does the word "repair" mean in this context?

Someone in this thread made an example which involves repairing a mobile phone, but I am struggling to find a meaningful connection between repairing a peace of hardware and copyright laws.

jwatte 2 days ago 0 replies      
This will change as soon as researchers and repairers have more political money than media producers!
Mathnerd314 2 days ago 0 replies      
I guess this is a follow-up to the lawsuit:https://www.eff.org/press/releases/eff-lawsuit-takes-dmca-se...
nerdponx 2 days ago 1 reply      
Would be nice to have a more detailed explanation of what exactly they're opposing here, and some data to back up their claims about it.
ktRolster 2 days ago 0 replies      
I signed it.
Decades-Old Mystery Put to Rest: Why Are There X's in the Desert? npr.org
306 points by aaron987  2 days ago   78 comments top 17
grkvlt 2 days ago 3 replies      
Also interesting are the resolution targets, using sets of black and white bars at varying widths in both X any X orientation, to determine the spatial resolution i.e. how high frequency a component could still be imaged separately as lines, similar to TV test cards. These are discussed in various blogs [1][2] with some amazing picures. I think these were for both satellite imaging and spy-plane (U2 and SR-71 plus less exotic surveillance systems) and not just the USA. This article [3] shows some satellite test targets in the Gobi desert, presumable for Chinese (PRC) spy satellites, and also has a cool picture of the world's largest compass rose, at Edwards dry lake bed, as well as explaining the crosses from the original article, and talking about radar altimeter targets (another dry-lake bed) that are mapped to centimetre accuracy in altitude for calibrating GPS and other systems.

I find it a really interesting area of industrial/scientific archaeology, with some fascinating stories.

[1] http://www.clui.org/newsletter/winter-2013/photo-calibration...[2] http://www.bldgblog.com/2013/02/optical-calibration-targets/[3] http://www.atlasobscura.com/articles/landscapes-made-for-sat...

CoryOndrejka 2 days ago 0 replies      
My dad was project photogrammetrist on Corona when he worked at Itek in the 60s. Lots of stories around focus and aiming challenges, since Corona was used to build maps of inaccessible regions of the world (e.g. Soviet Union ICMB sites). Focus targets gave high contrast, known images to detect what kind of focus problems were being encountered -- ranging from image smear from forward motion compensation failing or stretching the film; film sticking, stretching and/or lifting off of the focal plane; star camera inaccuracies; thermal distortion of camera, spacecraft, star camera, or film; etc. A few good books on Corona (https://www.cia.gov/library/publications/intelligence-histor...) and Itek (https://books.google.com/books/about/Spy_Capitalism.html) out there. Same teams worked on subsequent KH projects (Gambit, Hexagon/Big Bird/BMF), as well as Apollo and Viking camera systems.
mslev 2 days ago 2 replies      
I love stuff like this, I just think its so cool. Similar to this are the large cement arrows across the US:


strictnein 2 days ago 2 replies      
One of the most interesting things about the Corona satellites was that they shot on film and that film was developed back on earth.

So how'd they get that film back down from space?


dredmorbius 2 days ago 2 replies      
The Corona project. A/K/A the KeyHole satellites. If my count is right, 135 satellite launches, though not all were successful.

Fun fact: this was the early 1960s. CCD technology and IP transmission bitrates were a bit primitive[1], so the film cameras would eject capsules after they'd been shot, which would re-enter the atmosphere and be recovered, most through mid-air retrieval. The project was active from 1959 to 1972.



Video of recovery: http://petapixel.com/2014/08/31/us-spy-satellites-used-drop-...



1. Well, technically they didn't exist.

LoSboccacc 2 days ago 0 replies      
"Those X where used to calibrate spy satellites camera" #stopclickbait
initram 2 days ago 5 replies      
Anyone know what's nearby there at about (32.92669, -111.922201)[0]? It looks like some sort of strip mine a few hundred feet to the north, so I assume it's related, but was just curious what it is. It looks like a painting!

[0] http://maps.apple.com/maps?ll=32.926699,-111.822201&spn=0.00...

okket 2 days ago 1 reply      
The in the story linked movie about the Corona Project is an amazing document of history.


zerooneinfinity 2 days ago 2 replies      
Can someone explain to my dumbass how they helped calibrate the photos or satellites?
sago 2 days ago 0 replies      
Here's a map of them. Corrections and additions welcome.


Based on the map from wikipedia, which had 84 locations, this has 120.

beamatronic 2 days ago 3 replies      
Could you infer the orbit of the satellite from the location of the X's?
SCHiM 2 days ago 4 replies      
tl/dr: U.S. Military spy satellite camera calibration.
kahrkunne 2 days ago 0 replies      
I bet the Corona thing is just a cover story for pirate treasure
127001brewer 2 days ago 0 replies      
Interesting: I've submitted this story over a day ago (https://news.ycombinator.com/item?id=12684118) with a clean URL, yet this submission got noticed?

Yes, good luck and good timing, but still - ha!

jlebrech 2 days ago 0 replies      
my guess was a marker for mexican drug cartels to drop packages.
vizzah 2 days ago 0 replies      
They could have embedded LOVE instead of X's and it wouldn't have created any mystery and unneeded attention, as everyone would know it was hipsters.. no, I mean hippies.. =D
ythl 2 days ago 1 reply      
Flynn: open source PaaS flynn.io
247 points by cheiVia0  1 day ago   61 comments top 19
corobo 1 day ago 2 replies      
I've been using Flynn for a while now. Unfortunately there's always something that entirely bricks the cluster eventually. Sometimes a node will reboot unexpectedly (as happens with servers) and the cluster slowly implodes from there, sometimes I'll just get a monitoring alert that all the sites hosted on it have gone down for no apparent reason.

They announced during their 1.0 release that Flynn is now production ready but I have to disagree at this time. I do honestly love the idea of running my own Heroku but it's just not stable enough and doesn't recover well if a node goes offline without manual intervention using the flynn-host fix command (and sometimes that command just chokes up completely).

Next time it happens (when, not if, at this rate) I'll try to set aside some time to gather up the logs to help debug the problem but I'm using Flynn to avoid the sysadmin side of things and just build my product. In my opinion Flynn is tinker-ready, not production-ready. It's infuriating that it has these random problems because like I say I really _really_ love the product and desperately want to be able to use it reliably.

duncanawoods 1 day ago 3 replies      
Question for the Flynn team:

For us to invest time/effort adopting a PAAS solution requires an amazing amount of trust in your ability to execute now and in years down the line. Unlike alternatives, you are a company and not an industry collaboration / foundation, how open can you be to make us believe you are not the next RethinkDb-like shutdown?

e.g. How many in your team, why can they do this, how much funding do you have, what is your burn, when do you become default-alive?

erowtom 1 day ago 1 reply      
Experienced Flynn last year, we spent about 2 weeks making it work properly with our solution (We had a complex SaaS solution hosted on Heroku, with tons of addons).

We had some very bad bug that happened at the time (like deploying a new version made the dyno crash and we had to deploy a completly new environment).

Other than pretty bad bug, it was working properly, and did what they sell.

Good point is that the dev team is very responsive and we reported a bunch of bug that got fixed in no time. They also have a smooth updater when a new Flynn release came out, side bad note is at this time, it was kinda bugged (because of our specific setup).

For all those reasons, we choose to stick with Heroku at that time (we also tried Doku https://github.com/dokku/dokku, various AWS services such as BeanStalk, and DEIS http://deis.io/), but for sure it was the best candidate out there and I would love to give it a try again.

rcarmo 1 day ago 0 replies      
I love this kind of thing so much that I built my own: https://github.com/rcarmo/piku

(Originally coded to deploy services on the Raspberry Pi, but now used on "real" machines too)

harigov 1 day ago 3 replies      
This is really cool. I am not sure if there is a way to deploy this on public cloud like AWS/Azure. If this were cloud agnostic way of building software, I would be totally into it.
epynonymous 1 day ago 1 reply      
having worked on cloud foundry platform in the past, paas was extremely exciting at the time (2012), we even came up with something called warden which was way before docker. but since then, i have to ask, is there really that much benefit to having a paas? i understand the arguments about not needing to have devops/sre's, etc, but i think iaas works just fine, sure there's the initial plumbing for things like load balancers, installing an operating system, upgrading/patching that operating system, securing all the network connections, but it's not an everyday task. cloud foundry at the time required a minimum of 20 vm's to get the environment running (cloud controller, bosh, service nodes, dea's, nats, etc), and these weren't your t1 micro aws machines, these were memory and processor hungry instances; to manage the entire environment required a team of sre's and devops. nice to see that flynn only requires 3 nodes minimally, but as the environment scales, you'll need more nodes and i wonder how the overhead scales with flynn. obviously for small environments (let's say 6 vm's, an additional 3 vm's to support flynn is not ideal). but if you get up into the 20+ vm arena, perhaps the overhead starts to pale in comparison?

perhaps it's just me, but the devops part isn't that annoying, yet, but i've got an ultra small environment running nginx, golang binaries, and some services like rdb and k-v store.

splitrocket 23 hours ago 0 replies      
The bit that made the decision for me is managing self healing, highly available postgres in the same infrastructure and tooling as the rest of my deployment.

I have yet to see any other PAAS come close to offering HA postgres built in.

The second bit was dead simple service discovery.

spamlord 1 day ago 1 reply      
How does this compare to Cloud Foundry?
Mojah 1 day ago 0 replies      
Happy to see Flynn get more adoption, it got featured in the cron.weekly newsletter a few months back, when it was in the earlier stages; https://www.cronweekly.com/issue-39/
jondubois 20 hours ago 0 replies      
I'm working on a similar service, but focused around my own open source stack: https://baasil.io/

The main issue with deployment/orchestration platforms is that they cannot handle ALL different kinds of stacks/apps (each one has unique scalability requirements).

With Baasil.io, our strategy is to get it 100% working and auto-scalable; one stack at a time.

sztwiorok 1 day ago 2 replies      
what gives you more than docker-compose itself? with docker-compose and docker swarm I can easily add services there, configure the application environment and scale it.

seems interesting but please enumerate things I can do that are not delivered by docker compose and docker swarm.

stemuk 1 day ago 1 reply      
Looks pretty cool, do you have any plans to add RethinkDB support?
ngrilly 1 day ago 1 reply      
Is it possible to store file in some kind of NFS volume?

Is it possible to store objects in something similar to S3 (for example using Minio)?

weitzj 1 day ago 3 replies      
Does anybody have experience with Cisco Mantl (Mantl.io) ? It looks like CloudFoundry or Flynn, but I never saw it mentioned on HN.
tomhallett 22 hours ago 0 replies      
Does anyone have any experience with Rancher? I feel like it would fill a comparable role as Flynn. But I might be off base here.
omouse 1 day ago 0 replies      
How does this compare to OpenShift?
Kiro 1 day ago 1 reply      
Completely OT but was this posted because of the "Remediation Plan for WoSign and StartCom" thread from yesterday?
stanislavb 1 day ago 0 replies      
Note: Flynn seems to be the most popular package on "Awesome SysAdmin" under the category "Cloud Computing" https://sysadmin.libhunt.com/categories/1727-cloud-computing
exratione 1 day ago 0 replies      
I've worked with a group using Flynn to host a score of internal apps. It required one full time developer to keep it running, and saved a bunch of time and effort for the people maintaining those apps - no need for devops, pretty much, as deployment boils down to a ten line bash script. So if that tradeoff works for you, you should consider using Flynn.

In this age of it being next to impossible to hire devops folk, the idea that you can have one of them servicing the devops requirements for a sizable fraction of developed applications is somewhat attractive.

I wouldn't put Flynn in place for external-facing and high-traffic applications at the present time based on the experience I've had with it, however. Not ready for that, I think. You have to have a fair tolerance for short outages.

A single byte write opened a root execution exploit haxx.se
267 points by adunk  17 hours ago   36 comments top 12
pjmlp 7 hours ago 1 reply      
As C. A. R. Hoare would put it:

The first principle was security: The principle that every syntactically incorrect program should berejected by the compiler and that every syntactically correct program should give a result or anerror message that was predictable and comprehensible in terms of the source language programitself. Thus no core dumps should ever be necessary. It was logically impossible for any sourcelanguage program to cause the computer to run wild, either at compile time or at run time. Aconsequence of this principle is that every occurrence of every subscript of every subscriptedvariable was on every occasion checked at run time against both the upper and the lower declaredbounds of the array. Many years later we asked our customers whether they wished us to providean option to switch off these checks in the interests of efficiency on production runs.Unanimously, they urged us not to - they already knew how frequently subscript errors occur onproduction runs where failure to detect them could be disastrous. I note with fear and horror thateven in 1980, language designers and users have not learned this lesson. In any respectable branchof engineering, failure to observe such elementary precautions would have long been against thelaw.

-- Turing Award lecture 1981

This is why having C on our foundations matters, even if our daily programming languages happen to be safer and not susceptible to memory corruption.

umanwizard 11 hours ago 2 replies      
It's not really surprising that writing one byte can break software. For a really simple example, consider the following function:

 bool authenticate(const char *username, const char *password) { const char *correct_pass = get_pass(username); return (strcmp(correct_pass, password) == 0); }
Now imagine you know a way to change the first byte in the password entry (i.e, what becomes correct_pass) to \0. Now pass a blank password to this function and it will always return true for any username.

tedunangst 15 hours ago 2 replies      
Just FYI, "it's only a one byte overflow" has been a standard exploit denial for 20 years, and also wrong for that long.
userbinator 15 hours ago 2 replies      
A single byte change is also enough to crack a lot of software, bypass DRM, and various other empowering things.

The difficulty is, as usual, finding out which one to change. ;-)

jtl999 11 hours ago 1 reply      
Was this part of the recently reported $100k ChromeOS flaw? If so interesting for learning purposes.
caleblloyd 13 hours ago 0 replies      
Good thing Chrome's bug bounty is so high, otherwise white hats would probably never spend this much time exploiting bugs like this to show how big of a deal they are.
DaiPlusPlus 7 hours ago 1 reply      
I don't understand how this leads to a root exploit - I assume c-ares is running in userland inside a user's host process (a web-browser) - or if there is a systemwide daemon for DNS or other network services hosting c-ares then it should run under limited privilege. Which component is already running at root that allows this to happen?
jdmoreira 4 hours ago 0 replies      
I'm the owner of hxx.se and I just found out that I subconsciously registered almost the same domain as Daniel Stenberg :(
winteriscoming 10 hours ago 3 replies      
Given that this involves memory allocation and the fact that it has to be triggered with a specific sequence of HTTP requests, does it mean that the possibilty of this happening is extremely rare? Any system on which this attempt is done probably needs to be having not many others processes running which might trigger memory allocations and thus break this specific set of steps to exploit the issue?

Not trying to belittle the issue or the efforts spent to report it, but trying to understand how frequently it could be exploited.

nothrabannosir 1 hour ago 0 replies      
Why did the proxy not drop privileges? Not to take anything away from this outstanding feat ...
phessler 3 hours ago 1 reply      
This would not be exploitable if ASLR was enabled.
acqq 5 hours ago 0 replies      
"Two hard things in computing: cache invalidation, naming things, and off-by-one errors."
Cooled Nikon D5500a Chills the Sensor for Clearer Star Photos petapixel.com
249 points by uptown  1 day ago   87 comments top 21
fest 1 day ago 2 replies      
There is a saying in electronics engineering world: "Every sensor is also a temperature sensor."

What this means is: almost every electronic sensor is affected by it's temperature- from expensive image sensors to cheap MEMS accelerometers and gyroscopes.

That is why many of digital sensors also report their temperature, although that is not their primary purpose- so that current temperature effects on the measured result can be calibrated out either in sensor's logic, or by host software.

anon1253 1 day ago 3 replies      
Not quite sure why this hits the front page. Most serious astrophotographers have been using similar setups for a while now, or ideally peltier cooled CCDs (like Starlite Express, Atik or QHY cameras). More recently cooled CMOS sensors (like the ZWO1600MM-Cool) have also gained popularity. It's a bit of niche market, but for long exposure photography having a cooled sensor greatly reduces thermal noise. And since the signal is very faint you often do a lot of "histogram stretching", bringing out the signal, but also the noise. In addition to having a low noise camera you also often do things like bias, dark and flat callibration, reducing impurities further. Dark subtraction is often known as "long exposure noise reduction" in consumer cameras, but astrophotographes like to do it manually. There are a lot of details to consider when doing astrophotography, but I'm always happy I can set my CMOS or CCD (own both the QHY10-OSC and ZWO1600MM-Cool) to a deltaT of -40C.
foenix 1 day ago 1 reply      
Direct link to the product page which has the same images and description and isn't blog spam: http://www.primalucelab.com/astronomy/d5500a-cooled-camera.h...
Keyframe 1 day ago 2 replies      
Sensor cooling can lead to moisture appearing in the camera, so the D5500a Cooled uses a special anti-dewing system that uses targeted heat to avoid dew drops appearing.

I'd like to hear more about this.

Hasz 1 day ago 1 reply      
They're essentially using Peltier elements to cool the elements electronically. They're also using two elements stacked in series for a lower total temp.

Thank god the CCD is small -- a Peltier unit, as a heat pump, is pretty inefficient, topping out a ~15%, at a low t delta. When you stack two on top of each other, the efficiency is now 2.25%, and this only gets worse as the delta increases or more units are added.

thebakeshow 1 day ago 3 replies      
Question to those astrophotographers out there. I notice the cooler has a fan on it, is the fan vibration damped somehow?

I shoot a lot of long distance photos (300mm F/2.8 and 600mm F/4 are my main lenses). Any vibration is greatly amplified when I shoot, and this is a much longer range than that.

matt_wulfeck 1 day ago 8 replies      
There's simply no way that the fans don't cause considerable vibration artifacts for such long exposures. Am I missing something?
raverbashing 1 day ago 0 replies      
If you can't tell the difference between the chilled and regular frame I have to suggest taking the dust out of your monitor, as in certain conditions the difference might not be visible

(I just did that)

dom0 1 day ago 0 replies      
> Its the first ever cooled Nikon camera ever for astrophotography,

* first ever commercial

The technique isn't at all new, even in DSLR space.

mutagen 1 day ago 0 replies      
I recently ran across this homemade camera mod [1] to reduce astrophotography noise. There's some brief notes on creating it somewhere in the creator's (James Tobin) profile [2] but G+ isn't the happiest place to search.

Edit: Found one of them [3]

[1] https://get.google.com/u/0/albumarchive/11010321236096143315...



abetusk 1 day ago 0 replies      
I was experimenting with visual calibration of my desktop CNC by hooking up one of those cheap USB 1000x cameras. I had done some back of the envelope calculations to figure out that it was about 5 pixels per thousandth of an inch.

After a few hours of getting weird inconsistent results, I finally figured out to my shock and horror that the image was drifting and warping by upwards of 20 pixels after the camera had been one for a while (I think it was 640x480 resolution). My friend and I thought this was due to the CCD heating up and warping.

It looks like they're using the cooling for noise suppression but I bet the CCD also has the same effect I noticed of 'pixel drift/warp'.

anovikov 1 day ago 0 replies      
No way this will beat a dedicated astronomy CCD camera. And price point is already not so attractive, ST-8300C costs $1995 and while has 30% less sensor area, is light years away in thermal current at given temperature, and quantum efficiency. For me, if a wanted a color camera (bad idea most of the time), picking between ST-8300C and this would be a no brainer in favor of ST-8300C.
DigitalJack 1 day ago 1 reply      
That's really interesting. Better watch out for condensation on the electronics.
andy_ppp 1 day ago 3 replies      
Would combining Peltier coolers with CMOS/CCDs on high ISO photos work? How much of the noise at higher ISO is heat, little I'm guessing?
GregBuchholz 1 day ago 3 replies      
Anyone using liquid nitrogen to cool their CCDs on a hobby / amateur level?
toomanybeersies 1 day ago 1 reply      
I'm amazed at the difference only 20 C makes.

Does this mean I'd get much better photos in winter than summer?

Apreche 1 day ago 1 reply      
Is this more effective than dark frame subtraction?
maxxxxx 1 day ago 1 reply      
I wonder why they didn't pick a full frame camera like the D750. This would make more sense to me.
peignoir 1 day ago 0 replies      
Used to do that with an ST6 back in the 90s :)
wyager 1 day ago 2 replies      
Given the fact that (correct me if I'm wrong) camera sensors use the same sensor elements for red, green, and blue, but with a different filter in front, it seems strange to me that blue and green are almost eliminated by the cooling but red remains to a large degree. I would expect this distribution if the camera used different photodiode types sensitive to their respective color range.
gohrt 1 day ago 2 replies      
Admins/Mods, can we ban titles that use clickbaity "This"?
KDE Project releases KDE 1 heliocastro.info
273 points by oever  1 day ago   152 comments top 22
thom 1 day ago 7 replies      
KDE was the first desktop environment I really stuck with on Linux, previously I'd just used Blackbox and whatever apps seemed to work. For me, it peaked around KDE 3.2 - it felt like a nicely structured, object-oriented system. You could open up KOffice documents in tabs in Konqueror alongside web pages, thanks to KParts. Every address bar and file dialog could connect to any protocol, thanks to KIO. KMail and KNode were functional and consistent. KDevelop was very nice, for someone coming from a Visual C++ background. And Atlatik stole more hours than I can remember.

I have to admit I drifted off to OS X for most stuff, but I still have fond memories of how well thought out, consistent and tasteful everything was.

inDigiNeous 1 day ago 1 reply      
Yeah that takes me back to sitting in front of a huge ass 19" CRT monitor, setting up computers in a networked school class, running Mandrake Linux with KDE 1.x something.

Gotta say KDE was pretty cool then. Back then I kinda hoped Gnome would just give up and the developers focus on working on KDE instead .. but no, that's not the Linux way of things :)

unicornporn 1 day ago 3 replies      
I'm looking at KDE 1 and thinking it actually looks better than the latest and greatest. Aesthetically I think KDE really went downhill.

KDE 1 might not look modern, but at least the design is well thought out, consistent and not full of strangely balanced UI elements with either too much or too little whitespace.

Koshkin 1 day ago 1 reply      
Compared to the classic desktop environments like CDE or Windows 3.0/3.1 I find more modern ones too distracting, as if they try to make you to focus on them rather than on what you actually want to do. I just miss the no-nonsense, non-gimmicky look and feel of these classic, well-engineered desktop environments.
bhaak 1 day ago 1 reply      
> completely revamp of buildsystem, Goodbye auto*hell tools headaches, welcome cmake

Someone's heaven is someone else's hell. That goes both ways.

digi_owl 1 day ago 3 replies      
Frankly that looks much better than the current Plasma stuff.
72deluxe 1 day ago 0 replies      
Brilliant. I remember using KDE 1 on an old Elonex laptop and on a 486 (my first experience of Linux). I remember it reaching the very configurable 3.5 series before I abandoned it and went to GNOME2, and then on to OSX...

But I have very fond memories of KDE 1. It seemed very similar to CDE on UNIX boxes. Really simple, and no needless bells or whistles.

I am tempted to install this again and use it on my RPi3 if source is available. That'll beat using WindowMaker or Blackbox on it like I do currently.

Really good to see.

tehabe 1 day ago 3 replies      
Those memories, KDE 1 was my first glimpse into the world of Linux on SuSE Linux 6.3 I think.

Many things were weird too me though, Kppp for example didn't support ISDN4Linux. Also connection on demand was not perfect, it would connect without the need. But that is another topic for another time.

qwertyuiop924 1 day ago 3 replies      
The sad thing is, it looks way more practical and tasteful than KDE5. I would say I miss nice DEs, but that's not true: i3 is way nicer than any DE has been, for me.
Philipp__ 1 day ago 0 replies      
Why do I find these retro DE more appropriate and eye pleasing than modern ones? KDE 1 with HaikuOS icons would look amazing! I was rocking WindowMaker until recently.
oever 20 hours ago 0 replies      
The KDE 1 release is now available as a Docker image.


mhd 1 day ago 1 reply      
Ah, I still remember complaing on the mailing list that this new "Kool Desktop Environment" (yes, that was its name) had no proper HIG and it's probably better if they get some style guides ready before starting up...

The heady days of early Linux GUIs. When Tk was king and nobody thought that somebody would do something like Xt again...

jlebrech 1 day ago 0 replies      
KDE1 source came with Slackware 3.6, it was pretty cool to compile it all from a tarball. but it was also nice to customise FVWM to whatever i wanted it to, for example use the BeOS colour scheme and put the buttons in the same place on windows.
paraiuspau 1 day ago 0 replies      
1997, downloading all the KDE1 essentials on a 14.4 kbps modem.. Still wasn't enough to break the hold fvwm1 had over me.
chajath 20 hours ago 0 replies      
I would like to see wmaker and gnome-panel 1 setup make a come back
frik 22 hours ago 0 replies      
I preferred KDE 1-2 over 3 and hated 4.0+. Same with Gnome 2, hate 3.0+
tonyedgecombe 1 day ago 0 replies      
It looks pretty good for a version 1.
albertzeyer 1 day ago 2 replies      
This might be a good choice for a low resource desktop, kind of like an alternative to Fluxbox et al.
signa11 1 day ago 1 reply      
how is this different than the trinity-desktop-environment (https://www.trinitydesktop.org/) ?
pvdebbe 1 day ago 1 reply      
Cool. If they bring up ksirtet then I'm forever grateful
tofupup 18 hours ago 0 replies      
minikites 1 day ago 3 replies      
I realize I sound like the world's largest wet blanket but imagine if this effort was spent on improving current versions of free software.
Differentiable Neural Computers deepmind.com
280 points by tonybeltramelli  2 days ago   70 comments top 9
rkaplan 2 days ago 5 replies      
This paper builds off of DeepMind's previous work on differentiable computation: Neural Turing Machines. That paper generated a lot of enthusiasm when it came out in 2014, but not many researchers use NTMs today.

The feeling among researchers I've spoken to is not that NTMs aren't useful. DeepMind is simply operating on another level. Other researchers don't understand the intuitions behind the architecture well enough to make progress with it. But it seems like DeepMind, and specifically Alex Graves (first author on NTMs and now this), can.

IanCal 2 days ago 1 reply      
Does anyone have a readcube link/similar for the paper?


dharma1 2 days ago 1 reply      
Waiting for Schmidhuber to pipe up that he wrote about something similar in -93 and Alex Graves was his student anyway
tvural 1 day ago 2 replies      
The idea of using neural networks to do what humans can already write code to do seems a bit wrong-headed. Why would you take a system that's human-readable, fast, and easy to edit, and make it slow, opaque, and very hard to edit? The big wins for ml have all been things that people couldn't write code to do, like image recognition.
tim333 1 day ago 0 replies      
I wonder how close these differentiable neural computers are functionally to cortical columns in the brain that are "are often thought of as the basic repeating functional units of the neocortex." (https://en.wikipedia.org/wiki/Neocortex#Cortical_columns)
orthoganol 2 days ago 3 replies      
It appears they are touting 'memory' as the key new feature, but I know at least in the deep learning NLP world there already exists models with 'memory', like LSTMs or RNNs with dynamic memory or 'attention.' I can't imagine this model is too radically different than the others.

Maybe I just feel a bit uneasy with a claim such as:

> We hope DNCs provide a new metaphor for cognitive science and neuroscience.

carapace 1 day ago 0 replies      
(What the hell with the thin grey sans-serif body text font? Seriously, do you hate your readers' eyes that much?)
partycoder 2 days ago 2 replies      
I wonder if they will put this to use in their StarCraft bot.
outsideline 2 days ago 3 replies      

Present day Neuron models lack an incredible number of functional features that are clearly present in the human brain.

NTMs = representing memory that is stored in neuronshttps://en.wikipedia.org/wiki/Neuronal_memory_allocation

Decoupled Neural Interfaces using Synthetic Gradients = https://en.wikipedia.org/wiki/Electrochemical_gradient

Differentiable Neural Computers = Won't specify what natural aspect of the brain this derives from.

Pick an aspect of a neuron or the brain that isn't modeled, write a model...

Bleeding edge + Operating on another level

The fact that someone is going out of there way to remove points from my posts so that this doesn't see tomorrow's foot traffic instead of replying and critiquing me just goes to show how truthful these statements are.

Anyone can create such models. No one has a monopoly or patent on how the brain functions. Thus, expect many models and approaches.. Some better than others.

You can down-vote all you want. The better model and architecture wins this game. It would help the community if people were honest about what's going on here but people instead want to believe in magic and subscribe to the idea that only a specific group of people are writing biologically inspired software and are capable authoring a model of what is clearly documented in the human brain. Interesting that this is the reception.

Google Reveals It Received Secret FBI Subpoena theintercept.com
240 points by aestetix  19 hours ago   57 comments top 7
cwkoss 18 hours ago 6 replies      
I wonder if anyone has ever sent a fake National Security Letter. The inability to speak about or verify these letters is concerning to me.

Seems like you could cause a lot of damage by sending a fake NSL ordering a company to send you private data. At minimum it would cost the company several thousand dollars in legal fees to determine its fake.

Fej 12 hours ago 1 reply      
There is zero surprise.

When a Three Letter Agency wants information, they get it. The current United States government is the most powerful single entity to exist in human history (insofar as it can be called a single entity). Especially those who frequent HN should be well aware of that at this point.

Dear God I am depressed about our chances at this point. Reigning in who I would call traitors seems impossible.

appleflaxen 16 hours ago 1 reply      
The insane thing about this is that it is wholly unnecessary. Why can't the feds go court and get a search warrant if they really have anything more than a "hunch". And if that's all they have, do we really want them issuing secret orders with no public oversight at all? That's exactly where you need scrutiny.

The current and previous administration is going to find out in a hurry why checks and balances are important if Trump gets into office. He's exactly the kind of chief executive who will be terrible to behold with that kind of power.

M_Grey 19 hours ago 2 replies      
Honestly at this point you just have to assume this is a nearly constant reality.
seanwilson 14 hours ago 1 reply      
Given Google's size and how much information they have, you'd imagine they've been subjected to every secret demand allowed.

Are there any good examples of a gag order like this which was reasonable? When would they ever be justified?

anondon 9 hours ago 1 reply      
One of the solutions is to move to a model where all data that companies like google have in their servers is encrypted by a key that only the user has in his device.

The side effects are:

-No server side analysis/logging/sharing/selling to advertisers of the user's data

-All decryption takes place at the client side

-Targeting ads/content becomes impossible

-gag orders are rendered useless to seek user data from service providers


pistle 12 hours ago 1 reply      
Anyone have a reference for how NSL's are estimated for the "hundreds of thousands" reference in this article?

It seems more like ~20-30k/yr at this point from my cursory search.

I interpret "hundreds of thousands" to imply 200k+ which made me think... dayum - that's a lot of fear.

Hyperloop One Raises $50M, Hires Former Uber CFO bloomberg.com
210 points by jonbaer  1 day ago   185 comments top 18
jandrese 22 hours ago 8 replies      
I still can't get past the feeling that this is another Moller Aircar type project. Something to string investors along forever while you bilk them out of money.

The proposals aren't even all that similar to the original Hyperloop proposal. Gone is the ducted fan setup and instead they're just building high speed rail in a tube. And the cost estimates still make no sense whatsoever. I will be frankly shocked if any of these companies ever lay anything more than a short test track somewhere.

stcredzero 21 hours ago 3 replies      
I think this needs to be brought to more people's attention, so I'm putting this in a top level comment:

Thunderf00t's video: https://m.youtube.com/watch?v=RNFesa01llk

Debunked: https://www.reddit.com/r/Futurology/comments/4udgd2/the_hype...

Also debunked: https://www.reddit.com/r/IAmA/comments/4wck43/hi_were_mostly...

lisper 22 hours ago 6 replies      
Ooh, how I wish I could buy put options on the Hyperloop. Because unless they solve the thermal expansion problem -- and there is no feasible solution on the horizon AFAICT -- they will fail.
brianbreslin 23 hours ago 2 replies      
Am I the only one who gets confused by which hyperloop company is which? What's the difference between the different players?
wcummings 18 hours ago 2 replies      
Hyperloop (and pretty much all "PRT") is a joke and whoever invested in this should be embarrassed. Just get it over with and build high-speed rail.
Animats 21 hours ago 2 replies      
Dubai Ports World invested in this? That's serious. They're owned by the government of Dubai.
KyoChunho 1 hour ago 0 replies      
Does Elon Musk still have anything to do with any of the Hyperloop companies?
jrockway 2 hours ago 0 replies      
50 million dollars is enough to build 100 feet of subway (in New York).
AndrewKemendo 19 hours ago 3 replies      
$50M is peanuts for this scale of a project and the engineering that will need to be done. Seems like this is likely only enough to get to a small scale POC.

I think it's a great start, but it's still super early to know if this can even work.

falsestprophet 22 hours ago 0 replies      
The funding round was led by DP World, which operates 77 marine terminals around the globe [1] and is interested in using hyperloops to move containers from marine terminals to inland ports.

[1] https://en.wikipedia.org/wiki/DP_World

imaginenore 23 hours ago 7 replies      
I'm happy for them, but I'm yet to hear for anybody to address the major challenges that many people have raised. The major one being - the sudden pressurization in any point and the consequent shockwave traveling at the speed of sound, exploding the tube, killing everything in its way.

Thunderf00t did a good job summarizing the problems:


zizzles 18 hours ago 2 replies      
How resilient will the Hyperloop be against terrorist attacks?

It is situated above ground. This means the tubing is exposed to all and everyone. In other words, it is vulnerable to homemade explosives which can perhaps obstruct the path the vessel transverses. Sounds far-fetched, but the lengths extremists go to can not be undermined as we have learned time and time again throughout history.

I am interested in the security protocols more so than anything else.

jlebrech 22 hours ago 3 replies      
will hyperloop be the only martian transportation one day? imagine there being a grid of hyperloop to take all over the planet. it's also free of those pesky seas.
minikites 19 hours ago 1 reply      
I wonder if they've fixed the basic engineering errors from the first proposal: http://www.leancrew.com/all-this/2013/08/hyperloop/

> Neither of these is possible for the Hyperloop because the high speed of the capsule zooming along inside it means the pipe curves have to be very gentle. How, I wondered, is Musk going to solve the thermal expansion problem?

> The answer turned out to be simple: he didnt. Theres some hand waving and, possibly, a complete misunderstanding of how thermal expansion acts, but no actual solution.

The rest of the article is a deep dive into the problems with the earlier Hyperloop proposal.

xseven 22 hours ago 0 replies      
Uber had a CFO? That's news to me
tofupup 17 hours ago 0 replies      
douche 20 hours ago 1 reply      
I'd like to see some venture capitalists put forth some big chunks of money on realistic infrastructure projects using boring, proven technologies. Sure, there's not much chance of ever getting any kind of return on it, but at the end of it, there's still a bridge, or an extra couple transit stops left over when you're done lighting money on fire.

Maybe something like imperial Roman conspicuous construction instead of conspicuous consumption.

Just for a change.

kahrkunne 17 hours ago 0 replies      
The hyperloop - all the dangers of outer space, here on earth.

Or: if we can't get SpaceXplode into space, we'll get space down to earth

Robot Can Do More Push-Ups Because It Sweats ieee.org
263 points by mcspecter  1 day ago   50 comments top 10
sp332 1 day ago 3 replies      
You can go the other way and add closed-loop cooling to a person http://news.stanford.edu/2012/08/29/cooling-glove-research-0... Apparently it's been commercialized already http://www.avacore.com/
djrogers 1 day ago 0 replies      
This is brilliant. Evaporative cooling is extremely efficient, and the use of laser sintered aluminum in the support structure to facilitate it is flat out genius. It's like we're living in the future.
artursapek 1 day ago 1 reply      
I'm really amused by the artistic pointlessness of a robot doing push-ups.
taylodl 1 day ago 0 replies      
Being as it's early in the morning and I'm still blurry-eyed, I thought the headline read 'Robot Can Do More Push-Ups Because It Swears.' Now that would have been an interesting article to have read!
fairpx 1 day ago 9 replies      
We humans look smart when we manage to create a bad copy of a tiny part of nature. How small we are.
cfmcdonald 1 day ago 0 replies      
Those are some really crummy push ups. Get your chest down to the floor, Private!
highd 1 day ago 3 replies      
I wonder how effective the micro-porous aluminum is at transferring heat from a cooling fluid to a heat sink. That might be useful even in active, non-evaporative cooling systems.
Gravityloss 1 day ago 0 replies      
Rocket engines have been probing these kind of technologies for decades, and it's been proposed for re-entry vehicles too. Called transpiration cooling. Only more recently, with additive manufacturing, it's become a lot cheaper to integrate into the structures. I haven't read of anyone actually using it.
dmix 1 day ago 0 replies      
As soon as I saw the robot's face mask I knew it was going to be Japan.
How One 19-Year-Old Illinois Man Is Distorting National Polling Averages nytimes.com
241 points by ptrkrlsrd  2 days ago   107 comments top 12
aetherson 2 days ago 8 replies      
Nate Silver at 538 talks about the whole dissecting polls deal, or "unskewing" them. All polls must make methodological choices, and all of those choices have advantages and disadvantages. Spending a lot of time trying to dissect those choices and passing judgment on them is not as productive as:

1. Looking at aggregates of lots of polls.

2. Looking at the variance that a poll captures from one iteration of it to another.

Or at least, so he claims. Obviously, he runs a poll aggregator, using a model that heavily weights the trendline of individual polls, so he has a dog in this fight.

tankenmate 2 days ago 0 replies      
One thing I noted is that NY Times says that most polls have four categories of age and five categories of education; except these aren't categories, they are ordinal variables.

Age and level of education are slightly co-variant (you don't get many 18 year olds who have a PhD). Because the age classification and education levels are ordinal you should use an ordinal smoothing [0] function to turn them into pseudo continuous variables. Given the continuous and co-variant independent variables (as well as other categorical independent variables) and a categorical dependent variable the best analysis is probably to use a quadratic discriminant analysis (QDA).

[0] http://epub.ub.uni-muenchen.de/2100/1/tr015.pdf and http://cran.r-project.org/web/packages/ordPens/ordPens.pdf

jakub_g 2 days ago 3 replies      
Side rant: what the heck did they implement on NYtimes.com ?! When I quickly click the text (which I compulsively do to select a paragraph etc.), it changes the font size (sigh)
matthewbauer 2 days ago 2 replies      
This is really fascinating. I get why the poll creators made these decisions, but the results of the weighting lead to a ridiculous result compared to other polls. Supposedly this poll was extremely accurate in 2012, so who knows?
bbctol 2 days ago 0 replies      
I'm not sure if he doesn't know his role, and I'm curious how tracking polls like this try to account for the large media attention paid to the poll and its methodology. This guy is known to stats nerds, and they've been tracking his moves and (rather mean-spiritedly) calling him "Carlton" for a while now.
eatbitseveryday 2 days ago 2 replies      
Will the era of click-bait titles come to an end?
sytelus 2 days ago 1 reply      
TLDR; The 19-year black man is very small demographic and would have small sample size. Apparently, the sample for LA Times poll includes and outlier who favors Trump which then gets weighted disproportionately to arrive at conclusion that trump is favored by young black voters.
artursapek 2 days ago 0 replies      
This makes me feel so much less confused about that poll
throwawayqwe 2 days ago 3 replies      
I'm posting under a throwaway account just to say I agree with you; if that says anything.
LyalinDotCom 2 days ago 2 replies      
blank_dan 2 days ago 1 reply      
Let's go find the really heavily weighted members of _all_ the polls and dox them too. This way we can screw them all up. Not just one that is influenced by a potential Trump voter.
MrZongle2 2 days ago 5 replies      
Regarding the Times' decision to run this article, I wonder how much of it was based upon "hey, polling is kind of goofy" and how much of was "look! Here's another way we can show that Trump isn't really resonating with voters!".
Books Programmers Don't Really Read (2008) billthelizard.com
270 points by jotto  16 hours ago   114 comments top 29
nanolith 14 hours ago 8 replies      
I've read the books on both of those lists, among many others. Not because these are all required reading, but because I've had a long career and I've fought to continually improve my knowledge in Computer Science. It seems rather arrogant of the author to decree that one list is canon and the other list is not. Each of those books has its use. Does this mean that someone needs to read any of those books to be good at software? Probably not. But, studying each of those books will improve skills in the particular domains that the books cover.

Also, why is it suddenly in vogue to bash TAOCP and CLRS? When I read these sorts of posts, I generally think that the author really means, "I didn't understand these books, so therefore, they must be crap." I started reading TAOCP very early in my career, and Knuth's low-level approach of analysis has served me quite well over the years. It's why, for instance, I don't balk when I need to optimize a computationally heavy algorithm on an 8-bit microcontroller, or when I have to hand-tune a cryptographic algorithm to avoid cache side channel attacks, I can approach the problem logically. Knuth is an excellent teacher for the right sort of student. He's not for everyone, and there's nothing wrong with that. Software ceased being a one-size-fits-all field decades ago. For that reason, among many others, decrees of what is canon or not -- such as the one made by the author of this post -- are nothing but bunk.

doctorpangloss 15 hours ago 2 replies      
Cue the circus of people who argue over the contents of this list, despite having actually used the learnings from books only in job interviews.

There are so many developers (like your peers at work) who have literally read none of these books. In a Darwinian sense, isn't that evidence that there's nothing so special about these texts for what you do?

Skip the books and just memorize what's on Interview Cake. I love that site. It so brilliantly subverts the academic pretensions of every industrial software development shop.

So many people will have memorized so precisely the solutions to programming test questions that they stop being useful. Engineering managers will be unable to come up with novel questions, because they will have no benchmarks. Then the madness will end: Computer Science will get less popular in university again, and this notion that these Gospels have All the Answers will go away.

GuiA 15 hours ago 2 replies      
The Gang of Four patterns book is one of those books that you should probably only read when you already have decent experience writing non trivial software.

If you do so, it will formidably crystallize knowledge you've been acquiring subconsciously. You'll have probably been having gut feelings about why certain things are wrong or clunky and others are elegant, and Design Patterns will give you a vocabulary to describe these things.

If you read it as a beginner, the subtleties of it all will go over your head, and you'll end up trying to cram design patterns everywhere without much sense or reason.

jfoutz 15 hours ago 1 reply      
I think those books have a specific time* in people's careers. My first real programming job, a couple years in i got a large project. I'd go home and flip through the design patterns book every day. Some days, rereading the introduction, some days rereading patterns. The project came out pretty well.

If i'd gotten a C++ job instead, i'd probably have torn up the C++ programming language book. My copy is fairly worn, but not like that gof book.

CLRS probably isn't as helpful as it once was, because the vast majority of time you just use an ADT from whatever library your language provides. Sure, maybe go review some subtleties from time to time, but if you're writing an algorithm for work, you probably do that all the time, CLRS isn't going to be that insightful.

The dragon book was opaque to me. Just about every thing in that book, i had to go find another discussion of. I'm just not smart enough to parse those words and math into code.

I dunno. I'm a pretty mediocre programmer. They've been helpful to me at various points in my career, but i don't think they are much help in modern programming.

* I've only been able to chew through a couple chapters of TAOCP. I think the only programmers these books help are people like Fabrice Bellard. Find someone who's worked through those books, hire them. Well, if you really need to solve problems and you're not just hooking a submit button to mysql.

perrygeo 15 hours ago 2 replies      
> I've read all of these books myself, so I have no difficulty believing that many moderately competent programmers have read them as well. If you're interested enough in programming that you're reading this blog, you've probably read most, if not all of the books in this list

That is some gross arrogance on full display right there. If you're as good as me, surely you've read all these books. Any other books... flawed in ways you should be ashamed of.

sytelus 13 hours ago 2 replies      
I've read CLRS page-to-page 3 times and doing pretty significant chunk of exercises. It takes on average about 4-8 months with 2 hours each day. I still think the title is accurate, i.e., its just "introduction". These days at work I frequently bump in to algorithms that would be qualified as advanced and CLRS content now looks fairly introductory to me. In fact book hasn't even scratched 10% of the stuff that we use regularly in our work. I think most people active in CS research feel the same way but if you were programmer doing regular LOB or iOS apps then OP's view may feel more closer.
CalChris 15 hours ago 3 replies      
I'd put SICP on the better read when dead list. Fundamental Algorithms shouldn't be read anymore but at least I liked it when I read it. SICP was the text in 61A at Berkeley but there were no assigned readings from it. It was meant to be worshipped rather than read. I rather like the Dragon book but compilers have come along. The 2nd edition is an improvement.

I'd add that EE20N used a Berkeley written text, Structure and Interpretation of Systems and Signals. I was in the minority and liked that book. I still have it.

WalterBright 7 hours ago 3 replies      
> There's certainly plenty of evidence that someone has read this book, since otherwise we wouldn't have so many C++ compilers to choose from.

I don't think that's quite true. The only C++ compilers I know of are:

1. cfront C++ (from which many C++ compilers were derived)

2. Digital Mars C++ (the one I wrote)

3. g++

4. clang++

5. EDG C++ (from which many other C++ compilers are derived)

6. Microsoft C++

7. Taumetric C++

It's a pretty thin list for 30 years. (I apologize if I neglected any.) Contrast that with C - at one time in the 1980s I counted over 30 of them (I'm not sure how many were independent creations).

Edit: removed Borland C++ as that was derived from Taumetric.

bigtunacan 11 hours ago 0 replies      
The whole article just seemed like one silly anecdote. "Well these are the books I actually read so it must be the same for everyone."

I think the author's next read should be a good statistics book.

Here's my anecdotal evidence. I have read 8 out of 10 from his first list. I have read everything except for TAOCP from the second list. Some of the ones from the second list I have read multiple times and I still go back too as reference from time to time.

I have started reading TAOCP on several occasions, but I'm not going to lie; that shit is complicated and the dry academic nature makes it even worse to parse. I still plan to get through it in my lifetime, but I keep prioritizing easier reading.

userbinator 14 hours ago 1 reply      
I have a hard time believing Petzold's Code is in the first list, or even the second, because its content is so very different from most of the other books. It's not particularly directed at programmers either.

As for the design patterns book, I've glanced through it and didn't find it all that useful; that being said, I was never a fan of that school of thought (OOP, UML, patterns, etc.) either.

dmalvarado 1 hour ago 0 replies      
Who claims to have read a book they didn't? "Yea I read that." (No I didn't). That's straight lying.

I think what's more likely is, someone will say, "YOU should read this book. It's awesome." The implication being, the suggestion comes from first-hand experience.

kazinator 14 hours ago 1 reply      
From the first list, I've only read (3) The C Programming Language and only partially (5) Mythical Man-Month.

From the second: (1) Intro to Algorithms, absolutely cover to cover once, and selected readings additional times; based the Kazlib "dict" module closely on the Red Black tree algorithm (with a slight improvement); (2) Compilers: Principles, Techniques and Tools: Ditto, and in recent years, implemented a regex compiler based on the graph-based descriptions in that book; (3) TAOCP: selected readings only, too huge; (4) Design Patterns: cover to cover, when OOP was fashionable in the 90's; (5) nope, but I read the Stroustrup and Ellis Annotated C++ Reference Manual cover to cover (weekend before starting first C++ gig). That counts as a 1:1 substitute, more or less.

rampage101 4 hours ago 0 replies      
TAOCP is so much superior to CLRS it is not even close. At the end of each section of CLRS they ususally mention Knuth anyways.

Knuth's writing is clear and amazing. It really makes the history of computer interesting.

Pretty typical of the author of the post who did not complete TAOCP to say it is somehow flawed for being too cryptic.

Why is the author concerned about what others have read or not anyways? It seems he more concerned about proving he has read more than others.

nn3 13 hours ago 1 reply      
>On the positive side, if you're looking for the solution to >a problem in TAOCP (and the appropriate volume has been >published) and you can't find it, the solution probably >doesn't exist. It's extremely comprehensive over the topic >areas that it covers.

That's almost certainly wrong. TAOCP is very outdated in many ways and doesn't really cover modern algorithms.It's great for classic CS upto 90ies(?) or so, but there has been a lot of progress since then.

WalterBright 7 hours ago 0 replies      
> the word "Introduction" leads one to believe that the book is a good choice for beginning programmers. It isn't. The book is as comprehensive a guide to algorithms as you are likely to find anywhere. Please stop recommending it to beginners.

Reminds me of the Caltech required 3rd year math course "AMa95 Introductory Methods in Applied Mathematics", that came with the dry comment that "Introductory does not mean elementary." It had a reputation as one of the toughest classes.

pmontra 6 hours ago 1 reply      
I read the Dragon book, actually studied it for a CS course. I read C for the same reason and because it was the time when either you read books or you didn't know stuff. Most of the other books are more recent and the web was already there and good enough, especially for references. Those get old fast on paper.
lucidguppy 15 hours ago 0 replies      
I do like the C++ programming language book. It has a really nice introduction in the first quarter of the content. It has good no nonsense examples.
tylorr 13 hours ago 1 reply      
What does it say about me if I haven't read any of those books?
anexprogrammer 14 hours ago 0 replies      
Let's see.

Never come across Code, Head first Design Patterns - WHY? GoF book is much better, and well written and explained. Read all the rest, though K&R 1st edition. Bought 2nd when someone 'borrowed' original from my desk and never returned.

Of the rest:

Never heard of the first one, but I'm British.

My green dragon book was read cover to cover a couple of times, and I tried to build a compiler off the back of it. I used another compiler book in equal amount, I forget the book though.

I've three volumes of Knuth. I should have bought one at a time - I got about 1/2 way through the first volume.

Design patterns was extremely well used.

C++ was mainly reference, unlike K&R it wasn't a good read to learn from. Pretty heavy going if I remember. The Design and Evolution of C++ was much more interestng. Then the 2 Scott Meyers books (Effective C++ 1&2). Thinking in C++ was the book recommended to learn from at the time, though I've not read this.

rtpg 11 hours ago 0 replies      
When I started programming, I first read "Beginning Programming For Dummies" (QBasic), "C++ for dummies" (before STL, so implementing your own linked lists was fun), and... The C++ Programming Language

I spent maybe 3 years as a kid flipping through the C++ Programming Language book, trying to figure out how to do stuff with that + the Allegro tutorial. Totally a programming language reference.

It's one of those weird books that you could spend years just looking at on a desert island and find things to do with it. But you basically need to flip through all of it to get what is happening most of the time (at least I needed to when I was a kid).

Really wish I knew about Python back then....

bordercases 10 hours ago 0 replies      
Reading these books leads to the opportunity to take on jobs related to these books. So people saying, "oh, I use this in my job all the time" without reading the books after they took the job, ultimately have less to say on the matter.
drew-y 14 hours ago 3 replies      
Is there a good alternative to "Compilers: Principles, Techniques, and Tools"?

I've been programming for a few years now and I'm looking to more formally educate myself in general computer science. I've been told having a good grasp on compilers and interpreters can be useful for a wide variety of problems.

So far "Language Implementation Patterns" looks like it might be a promising alternative.

jcoffland 7 hours ago 0 replies      
Wow I've read many more of the books in the second list.

The second list should also include Structure and Interpretation of Computer Programs.

Myrmornis 15 hours ago 1 reply      
> If you're interested enough in programming that you're reading this blog, you've probably read most, if not all of the books in this list

oh, really?

> it's intended for the multitudes who are trying to appear smarter by pretending to have read them.

As opposed to trying to appear smarter by issuing decrees to the internet about what everyone who is "interested in programming" has read.

dudul 2 hours ago 0 replies      
I missed the part where the author provides a reference/source to claim that developers don't really read some books.
nchelluri 13 hours ago 3 replies      
Is Code Complete still worth reading for a working developer?
szines 13 hours ago 1 reply      
How about Clean Code?
good_sh_t 13 hours ago 0 replies      
>programmers tend to read programming books instead of computer science books

Wow, amazing insight!

       cached 15 October 2016 15:11:01 GMT