The collaboration curse - <AUTHOR> http://www.economist.com/news/business/21688872-fashion-making-employees-collaborate-has-gone-too-far-collaboration-curse <comment><USER2> People's obsession with Slack and chat apps (applies to open offices too) seems overly done in Silicon Valley. Career switching from the military to development has been interesting in this regards. The military uses chat, but only when needed—realtime communication is critical and people are distributed geographically. On duty on the carrier keeping track of planes and other issues happening "in country", chat is great. On the ground in Iraq scheduling airborne assets and keeping track of SF missions, chat is great. But for most things, chat is more of a distraction and slows down the real work.

I understand chat if you are working in operations, but for pure development, it feels like a college dorm, more about the community and less about the work, where people still confuse time at the office with getting your work done. After a decade of 70+ hour work weeks, you really appreciate what is work and what isn't. Building camaraderie is important, but chat probably isn't the best way. And putting everyones communications in a single channel isn't helping communication, it's increasing distraction.

In my ideal dev team, you have chat, use it for one-on-one communication, and for anything that is time sensitive which goes into group channels. Anything that not everyone needs to know or isn't time sensitive should go in an email or a message or a shoulder tap. Cluttering a few group channels with a ton of individual conversations, meaningless alerts, and random banter is downright juvenile and a detriment to productivity. I recognizing that promoting free flowing communication is important, but dorm room chat isn't the solution.

<comment><USER3> > On duty on the carrier keeping track of planes and other issues happening > "in country", chat is great.

Very similar observations from 10 years ago and now. And in the hospital, chat has no role. It's curious watching the Dev community obsess about how many things could theoretically do without getting off their butts, and then swear the latest standing desks.

<comment><USER4> > It's curious watching the Dev community obsess about how many things could > theoretically do without getting off their butt

I understand the sentiment, but it's important to consider the people in situations where it's not feasible to meet physically. It's not about "getting off your butt" if you live multiple hours away from the office.

</comment></comment></comment><comment><USER5> The collaboration excuse is a red herring. I'm sure some of the managers believe it, but it's not really the point.

Office space is leased by the square foot. $/sf/ year. Building a new building is usually budgeted in terms of $/sf. (Aside from some base unavoidable costs, it more or less scales linearly with floor area in terms of square feet.)

The fewer square feet you need, the less your lease is, which immediately and directly decreases your overhead and increases your profit margin.

Open offices fit more people in fewer square feet. There's a specific dollar amount a manager can point to and say "I'm saving that much money".

Maybe the productivity gains of private offices would more than offset the extra cost of needing more space, maybe not. It's not as easily quantifiable. Keep in mind that office leases are often signed for 10+ years and if you're building your own building you're stuck with it for even longer. Plus once you sign a lease you have to pay to build out the office. This can easily cost several million dollars in itself.

If you're a manager making this mutli-million dollar decision, are you going to go with the guaranteed overhead savings of minimizing square footage or are you going to risk millions of dollars on a vague promise of maybe increased productivity? Unless your company has the money to spare I don't see any rational person opting for the latter, much as I would rather have a private office myself.

<comment><USER6> As I understand it though, open office is a trend. Your mechanism doesn't explain why there was ever a time without open offices. So what's changed to make office managers more penny-wise, or have there always been "open collaborative offices" just under a different name?

<comment><USER7> My guess is that the big issue at play here is land price and zoning issues in the big cities where companies need to be headquartered to attract top talent. It's hard to build new buildings, and it's hard to build them tall. Building out in the suburbs is no longer seen as attractive. So, the solution is to maximize the space available while providing other perks like catered lunches and snacks etc.

<comment><USER8> But what's the purpose of attracting top talent if you proceed to waste said talent's time and productivity in a distraction-rich environment?

Feels like cargo-cult management.

</comment></comment></comment></comment><comment><USER9> I've worked in open offices, they made it impossible for me to program, so I spent all day "collaborating" and doing scutwork until everyone went home at 5, then I'd stay til 9 to get the stuff I needed to get done done.

I'd never do that again, if a company puts me in a position where I can't work during work hours I simply won't, will raise concerns and if not resolved leave.

Life is too short to do 70 hour weeks when you are only getting 30 hours work done.

<comment><USER10> Indeed. One gig I was at consisted of spending 9-5 doing nothing but meetings/groupwork/collaborating/email and dealing with bosses who kept asking why the coding wasn't getting done and behind schedule in one breath while dragging me into a 3hr+ meeting the next. Getting work done meant getting in before the boss, coding as much as possible until the boss showed up, waiting for the boss to leave, then coding again for another 2-3 hours to keep up. It does get ridiculous.

The problem is we've turned asynchronous communication and decision making into a near-real time short loop without considering the cognitive costs. Switching from my editor to email, parsing the 30 new messages, identifying the content to reply to and fabricating the correct reply costs the mental software model being used to guide the coding and it takes time to get it back into place. Switch in/out all day and your only bit of peace comes when the email writers go home.

<comment><USER11> If you have 3+ hour meetings that sounds like a bug. Maybe figure out why they take so long or why there are so many and address that.

Maybe get fewer people in the meeting? Push as much discussion as possible out of the meeting so it only involves the people who care? More delegation and indirection?

Managers and leadership should be showing up to more smaller meetings not front line people showing up to fewer longer meetings.

I think a reasonable scheduled meeting budget is averaging 1-1.5 hours per week and that is an upper limit not a target. Unscheduled (as in does not repeat every week at the same time) are something to be avoided for a product development team.

<comment><USER9> Sounds nice in theory but the managers set the meeting.

What they never seem to realise is a 2 hour meeting with 10 people means they use two hours of their time and 20 hours of their subordinates, most of which is spent waiting for the other 9 to finish.

Lots of those managers simply don't see the inefficiency since from their point of view it looks OK.

<comment><USER12> My theory pertaining to non-technical supervisory staff is that meetings for some fill up an otherwise very empty day. All the technical managers that I have worked for never seemed too eager for meetings - they were too busy building real things to waste time in meetings.

</comment></comment></comment></comment></comment><comment><USER13> That resonates a lot with me. A few years back my manager in a big-co with a lofty motto would not allow me to work remotely for a week or two to stay closer to my dying parent. As she pointed out, "a lot of innovation happens at the watercooler".

<comment><USER14> You should've quit on the spot. "Jobs come and go, but I only have one/two parents who deserve better, etc. Bye." She would've relented and let you go. I've called this bluff several times in my career and I've never lost.

But of course, you don't want to work for someone like that in the first place, if you can help it.

<comment><USER13> It was my first 'real' job and the company was (and still is) considered extremely prestigious in our line of work. So for a junior engineer quitting that job was suboptimal at that stage. I ended up going without permission. Contrary to my expectations I wasn't fired. But was never promoted again, either - no matter how hard I would work for it.

<comment><USER15> It would have been very easy to explain in interviews however. "They wouldn't let me spend two weeks with my dying mother" is quite a valid reason for quitting a job in my opinion.

<comment><USER16> Doesn't this run afoul of the 'don't badmouth previous employers' rule?

<comment><USER17> It's expected that you aren't going to be gumdrops and rainbows about your prior employer in an interview. The point of this rule is that you don't look like you're bitter or holding a grudge; if the new company thinks you create vendettas whenever there's a problem, they're going to want to stay away from you for fear that you'll be unfair to them if such a misunderstanding arises in the course of your employment with them (e.g., hurting their reputation in the marketplace, leaking source code because you're mad at your boss).

It'd be reasonable to say something like "We had different perspectives on the structure of the workplace and it just wasn't really what I was looking for". They'll probably ask "Oh, what was the issue?" and you'll say "I needed to work remotely to be at the bedside of an ailing parent and they said they'd fire me if I tried, so I quit".

You don't want to look like you're blaming them for making you miss your parents' final moments (we're grownups and take personal responsibility for things like that, don't allow people to stop you from participating in important life milestones), which is why it's a good idea to allow them to dig a little bit before getting at the real dispute. This is a good principle when discussing previous employers anyway. You always want to sound like you're over whatever the slight was, that you see and understand their perspective and don't blame them for having it, but simply don't agree with it. You won't be faulted for that.

</comment></comment></comment></comment></comment></comment><comment><USER18> I work in an open office, and would consider myself a knowledge worker. The easiest way to manage it is to work from home, however I also positioned my desk in a corner facing the window (so my back to the room) I also by default put wvery meeting invite to tenative and ubless its absolutely necessary i dont show up.

All that has put me at odds with management to a degree. However, im given all the hard problems and churn out solutions. Based on projects completed, im doing the work of 4 employees at the same level. I should also add that I still answer 5 - 20 questions from coworkers a day, and am the go-to guy to fix many issues (so I dont completely shut myself off). This has put me in a position where my manager has hinted that im going to get promoted if I keep it up.

Of course the company I work for has "non-management management" i.e. you can become a VP without having to manage people. This lets the anti-social hard- core workers still move up in rank and pay.

<comment><USER14> You will not get promoted. As long as you're super valuable in your current role, they only have incentive to keep you put. I got strung along with that bullshit for years at my first job before I learned this lesson.

It's not a total loss though. If they do find you valuable, play hard on your salary.

<comment><USER18> I tried to explain that in my original comment, but did a poor job. They can promote you, but you keep your role. i.e. you can be promoted to "VP of Web Development" essentially. So your role doesn't change, but your responsibilities related to engineering can increase.

This can lead to some pretty weird hierarchy where a people manager at the director level is managing an engineering manager at the VP level. However, I feel it is a pretty interesting environment and lets both "knowledge works" and "people managers" be rewarded on equal footing.

<comment><USER19> Does the "VP of Web Development" get paid on par with the VP of Marketing or VP of Sales?

</comment></comment></comment></comment><comment><USER20> Sadly, there really is a lot of collaboration cargo culting these days.

But it's interesting because in the large majority of fields the best outcomes really are in some ways collaborative efforts. The lone genius is actually extremely rare.

I'm inclined to say the key to effective collaboration is that it has to be driven entirely by the collaborators, and it is only actively happening for a very small percentage of the time spent on a project.

A cargo culting middle manager might think she's helping by setting up hours of meetings with different people to get their "perspective". Those people probably can add value. But the best way to do it is to let the project lead go to them with questions or asking for feedback when they think it makes sense.

Management can help by fostering a culture where people are willing and eager to talk to their colleagues when they need help, or to get new ideas. To some extent communication tools can help, but there are other much bigger factors: Don't make people feel like they'll be penalized in performance reviews for not knowing things or needing help. Cultivate a sense of shared ownership of projects and outcomes. Give people maxuimum autonomy over their schedules.

</comment><comment><USER21> I really want to figure out which plan is better. I honestly feel that people with bad experiences with open plan get on here and gripe, and it makes open plan sound horrible. But there are bad experiences with offices too. Like rarely interacting with colleagues outside of scheduled meetings. And there's a natural bias towards one's own productivity vs helping the team.

Maybe it's just because open plan is more the norm nowadays, now we hear all the downsides of that. But it's worth considering it was adopted in response to the downsides of offices and cubes (shudder), not some shortsighted irrational plot to cut costs at the expense of productivity.

One thing I know: If anyone says rarely interacting "sounds great", they shouldn't be trusted. Yes you will absolutely maximize your coding focus. Yes that is an invalid argument. Team collaboration is important too. I suspect that to make either plan work you've got to pair it with a solid culture that shores up its weaknesses: minimize distractions in open plan, fight isolation in offices.

My straw man ideal is an open plan that is relatively quiet, but let's you look at each other and leverage body language and enhanced awareness to gague when it's a good moment to interrupt. That's the only way that a whole class of "quick questions" and "crazy ideas" get fielded that would otherwise not cross the interrupt bar of a door-knock or even an IM-ping. And that stuff can be super valuable esp. to a startup team. And it actually can get those handled quicker!

But I suspect it has to be paired with a culture of minimizing extended subcritical conversations at your desk and taking them over to separate meeting areas that are less disruptive.

</comment><comment><USER22> At my new job, I've really started pushing back against meetings that seem superfluous. Often times I'll find myself saying the same exact thing at 3 different meetings, and it almost never affects anyone else in the room.

<comment><USER23> What form does this pushing take? How is it working? I ask because I've failed at this before; managers have great power to defend their habits and processes.

<comment><USER22> >What form does this pushing take?

I've asked my manager specifically what it is I and others are supposed to be getting out of each meeting

> How is it working?

Well, I only got out of one meeting so far, but I'll be damned if I don't keep trying!

</comment></comment></comment><comment><USER24> Is it possible that there's no one-size-fits-all solution to this problem? I get the feeling that if cubicles were still in fashion people would be complaining just as loudly about them as others are complaining about open offices. I think a good balance between the two extremes combined with allowing people to work from home on days they need to focus is the best answer we have to this problem today.

</comment><comment><USER23> We can keep writing these articles and reading them and knowing we are right and get nowhere.

1) Say I'm an engineer with a manager who doesn't get it. How can I empathetically (that is, without spontaneously developing a "political performance problem" on my next review) help my manager improve?

2) Say I'm that manager, and I want to improve but meetings and spreadsheets are all I know. What can I do?

<comment><USER25> There was a post today about Stanley Kubrick, which got me thinking: programming is like making a movie in many ways. So you can tell your boss: "if I were a film director and you knew I'm busy at the film set making a feature film for you, with some Hollywood stars, would you be calling me out for your shitty meetings as often as you do otherwise?"

Or: "If you were Stanley Kubrick's boss, would you interrupt him as often?"

<comment><USER17> I don't think this will get through to anyone. The only reason people can respect the time used up by a director is because every minute of filming has a _massive_ directly attributable dollar cost to the company. In normal employment, the company is going to spending that money on either yourself or your replacement, so there's not an obvious, immediate economic incentive in allowing you to do what you consider "real work" (building something) instead of allowing the manager to do what he considers "real work" (sitting around and talking about stuff).

</comment></comment></comment><comment><USER26> My read on pushing collaboration is that it's a hedge against doing the wrong thing. In startups (say, <100 people and in grow-or-die mode), I think you have to focus on producing revenue on a 3-9 month timeframe. If you have a bunch of people working on their own, a lot of them will do things that are valuable, but won't show value to the company for 2-5 years. That not really OK, unless everybody agrees it's OK.

So, everybody collaborates constantly, so when you do something like run a pen-test before you have a customer with a CISO, there's agreement that it's OK to do it early. Otherwise, you might end up with a bunch of interesting work that doesn't have any coherence, and with only 25 people, that's not enough to sustain a company.

Of course, if everybody is working on the right things, and you have manager drive-bys via Slack/email/daily standups 3 times a day, that's a separate issue. It's the fear of working on the wrong thing that's motivating that pattern.

</comment><comment><USER27> I'm shocked that SV ingenuity has ended up at such a horrific solution for office environments. The "open" plan hardly delivers any collaboration either, just a continuous stream of distractions or creepy silence with a room full of headphones. Surely we can do better?

</comment><comment><USER28> There's a cultural aspect to collaboration, and an office layout aspect.

Culturally, collaboration can be great. Getting someone from sales involved in a product meeting could be revolutionary, or getting a product person on a sales call etc. etc.

It's possible to design an open floor plan with plenty of private spaces, but most companies don't do this because the people making the decisions are not introverted enough or their jobs don't involve achieving and maintaining "flow state".

Ideas like pair programming have created the misunderstanding that programming should always be done in a social way. There are many times when a problem demands focused thinking, and the ideal office space offers places to do that.

</comment><comment><USER29> Fittingly, I'm having trouble focusing on reading this article because the team next to mine is having a conversation. They aren't speaking overly loudly, but there's nothing between me and them so I can hear everything.

I have a pair of these to help: [http://www.amazon.com/dp/B0000X6L78/](http://www.amazon.com/dp/B0000X6L78/)

<comment><USER30> I brought ear plugs to work in an open office. Apparently, that makes me 'not a team player'.

<comment><USER31> If you like music, I can't recommend enough Bose qc-25 headphones. They make it so I can actually focus in a noisy environment.

<comment><USER29> I can only focus on one stream of words at a time, and can't filter very well. What this means is that if my wife is watching a TV show, I can't have a coherent conversation with her. If guys next to me are talking too loudly (and not rudely it anything, it's just an open office) I have trouble reading.

The other result: if music has lyrics, I can't read very well. Headphones like that are great, as long as you appreciate classical or EDM, lol.

<comment><USER31> I listen to the same playlist over and over again (used to be pandora, but changed to spotify discover weekly). Literally don't hear a single song until i listen to it at the end of the week at home.

</comment></comment></comment></comment></comment><comment><USER32> I work in what might as well be an open plan: I share an office with three other people, and the desks are arranged so none of us have our backs to the wall (at least I get a really nice view of a highway out of the deal, though). The whole company is set up like this, with every 3-4 employees grouped into large offices.

It could be worse because I get along with my officemates, but it's easily the worst office arrangement I've been part of. The vulnerability of not having my back to the wall seriously gets to me, and it can get really, really annoying when multiple conversations are taking place at the same time. One of my officemates wears headphones 90% of the time specifically because of this.

Before this job, I've worked in cubes, I've had my own office, and I've shared an office with one other.

Of all those, I preferred sharing an office with one other, with desks arranged so our backs are to the wall. I had some degree of privacy, but I'm not totally isolated from other people.

<comment><USER33> I've recently moved from a 4-5 person office somewhat as you describe to open plan. It's a BIG difference.

</comment></comment><comment><USER34> I agree with the article and many of the comments here. I'd add that there's another thing: a one-size-fits-all design. Open plan offices are very good for workers for whom collaboration is constant; I've seen sales, marketing, some ops, and a few other departments who would constantly interact no matter what kind of office layout they had. For work that requires lots of concentration and little collaboration, though, that layout is counterproductive. Companies should start thinking about _role_ needs and the space required to support maximum productivity, rather than just having a single layout because it's easier/cheaper. How about a ring of private offices for those that need it surrounding a shared collaboration space? I worked at one place like with that layout and it worked very well.

</comment><comment><USER35> The Harvard Business Review reports "an overlap of only 50% between 'the top collaborative contributors in any organisation and those individuals deemed to be the top performers.'"

That's a pretty high percentage, if you ask me. I wonder what other traits you could identify in the set of top performers that would be equally or more prevalent. The article seems to equivocate more collaboration with more distraction. These two are perhaps related when policy aims to encourage collaboration through shared office space, Slack, and meetings which interrupt deep work. But let's be clear; collaboration is a good thing and we shouldn't act like it's wrong to encourage it, just that perhaps there are better, less distracting ways to do it.

</comment><comment><USER36> It's one thing to put multiple people on the same task or question and have a focused, active collaboration. This would include things like brainstorming and pair programming.

It's another thing to give people their own tasks but put them in an environment of ambient chatter and real time notifications. This would include things like open floor plans and Slack. (I'm not arguing that these things are bad, just that they're not genuine collaboration.)

It's pretty easy to make an office look and feel like a collaborative space. It's quite a bit harder to find a few tasks that would benefit from real collaboration and invest double or triple the "hourly rate" for that one thing. Then again, maybe it's totally worth the cost?

</comment><comment><USER37> First of all, forcing collaboration onto people by making them sit together isn't proven to be effective. There is no evidence to show it's in the company's best interests to have an open office environment. Doing it just because Facebook does is cargo cult thinking.

Second of all, it's also against the employees' best interests and pursuit of happiness. Employees should ideally want to choose the sort of office they have, and also be able to work from home whenever they want. Having happy employees leads to the highest productivity and employee retention.

I've worked in many different environments, and I dislike open office the most.

</comment><comment><USER38> I'm about finished with the book:

[http://calnewport.com/books/deep-work/](http://calnewport.com/books/deep- work/)

I have already tuned off my email client, only checking it in the morning and after lunch. Contemplating moving me workstation (computer) into my lab where I can get away from the open (short cubical wall) floor plan.

Of course, I am reading HN now, but only because it's taking quite a while to generate Gerbers for a PCB.

<comment><USER30> That looks like a really good book. Thanks for mentioning it. That'll be next of my list of books to read.

</comment></comment><comment><USER39> I see a lot of people bitching about meetings.

But what about people that their job is to collaborate an be in meetings. For example, I'm a business analyst, my job is to meet with users and devs. Eliciting requirements don't take me that much time. All my time is spent on being on meeting to understand what users want and review with them what have been done and make sure that's what they want.

That being said, I always try to make the meeting shorter and people thank me for that.

<comment><USER19> Then those people can go be in meetings all they want. Let the rest of us get our work done. I guarantee that they'll have no qualms about leaving at 6, but if we do without getting stuff done cause we spent all afternoon in a pointless meeting, they'll start yelling, and schedule another all afternoon meeting to discuss why we're still behind.

</comment></comment><comment><USER40> Most of the office where I am moved to being an open floor plan, with managers getting offices. The main area is quite noisy and I'm glad I'm not over there. Headphones would do me no good -- sure, I like to listen to music while developing, sometimes, but I also just like quiet. Probably lean more towards wanting quiet than music.

</comment><comment><USER41> I find that the asynchronous nature of chat programs can actually help this problem. Email takes too much time because it's overly formal. Meetings, well, don't get me started. But asynchronous chat is a pretty good balance of informal, prompt enough, and not overly intrusive. ymmv.

</comment><comment><USER42> Huh, the website won't show you any content if you're blocking cookie request notifications. You need to disable your adblock / cookie notification remover to be able to allow the site to use cookies, and only then will it show you the article.

Goes to show how ridiculous this EU law is...

<comment><USER43> Well, the EU law only is about tracking cookies. Technical cookies are always allowed – like, a sign-in cookie is automatically allowed if you click "sign in".

That means 99% of websites don't need a cookie warning.

<comment><USER42> _Far more_ than 1% of sites use Google Analytics, or similar services. I don't get why this wasn't mandated as a native browser notification, or something else that is opt-out.

The worst part is that I block tracking scripts and therefore also cookie notifications, and I still got a blank page. These blocks totally broke the website for me.

</comment></comment></comment><comment><USER44> When I see a modern-day, first-grade classroom I shudder and am thankful that when I was a kid in the 1970s we had desks in rows facing the teacher. Today there are no desks and everybody sits in a circle on the floor. Primary education: For extroverts, by extroverts.

</comment><comment><USER45> But...but... Collaboration makes us agile! /s

</comment><comment><USER46> I would like to be what appears to be the 1st person on this thread to point out one key idea:

we have these things called "laptops" with "wifi" access technology. Typically you should be able to unplug your power cord, stand up and move your feet to quieter areas.

My mac laptop also has command-Q technology built into all my programs -- including chat and email.

Also I have these things that go over my ears and delivery music.

<comment><USER47> I was very surprised how difficult it was to find _any_ quiet place in our rather large open office. Cafeteria has ping pong and sports TV blasting, conference rooms would be reserved, etc.

</comment></comment><comment><USER48> First hire good people, then just do whatever your team wants and it'll be the most productive/happy solution. This doesn't have to be some universal human rule. Humans are different.

I personally like times collaborating with short sprints alone.

</comment><comment><USER49> where is this Collaborative overload? Do I live on another planet? These diseases seem to hit only places like Silicon Valley and the like

</comment><comment><USER50> I think a lot of this depends on the type of personality the person has. I've worked in open offices my entire career (18 years). I've never had trouble zoning out from distractions and concentrating on coding. A good pair of headphones is big help in this regard.

<comment><USER51> With all due respect this argument makes me crazy. So the answer to shitty office environments is drowning it out with noise? I have partial tinnitus thanks to this kind of thinking. And every time you get management to the point where they realize they should change something there's always that one guy saying "where's the problem? Just wear headphones..."

<comment><USER50> It's not really an argument. It's more of an observation that I've never had an issue. And you don't have to "drown" anything with noise, that's what noise-canceling headphones are for.

<comment><USER51> In my experience noise cancelling headphones are just as bad for tinnitus - it's not medically clear but try googling "noise cancelling headphones tinnitus" and judge for yourself

</comment></comment></comment></comment><comment><USER52> Gee, another open space rant. We never see enough of that.

So let's review what open space helps with.

Open space helps with teams working on creative problems. It helps them by allowing them, as a team, to own their collective space in such a way such that they are constantly _socially_ interacting whether they would prefer that or not. The theory is that a group of people, left alone to work physically beside each other on something non-trivial, will eventually work through obstacles that each of them working individually and trying to email would not. In addition, people work through these problems on a non-verbal level, using body language, obfuscation, and all the other social tools that nature has given us to use when dealing with problems as a group (Insert long discussion here)

In a room with 80 people all sitting at cafeteria tables? That's not it. In an environment where teams don't have and own separate spaces? That's also not it. Working on a grunt project that doesn't requires a lot of creative problem-solving? Probably not for you -- and your job is in danger of being taken over by robots. Not responsible for truly helping a business problem and instead just being told what to do every day? You might as well work anywhere in the world; office setup isn't going to change anything for you.

This is really powerful stuff, and I've seen it make a ton of difference to how teams perform. But like everything else, it's been "re-branded", buzz- worded, adopted-and-extended, and compromised to the point where it's a disaster for a lot of folks. I can't help that. It's still a good idea in many cases. (And, quite frankly, as a developer I'd rather just be left alone to code. I do not care about creative solutions to interesting problems. Unfortunately, the people who pay me? They pay me to work through tough issues, not just try to spend the maximum amount of time in flow.)

So it's really getting hard to have an intelligent discussion about this. All the time I hear my friends say "I hate X!" Then I look at what they're doing? It's not X. I'm not sure whether to agree with them or not. I am reminded of the old joke: "Doctor! It hurts when I do this!" "Well, stop doing that."

<comment><USER19> You're gonna have to provide some evidence of your assertions, there.

<comment><USER52> I'm providing a definition, not a list of assertions. My point was that the phrase "open office" means so many different things in so many different situations that it's no wonder people suffer under it. The phrase itself has been destroyed as a useful concept.

Now it's fair to say that my definition isn't applicable here, but, well, it is _my_ definition. I teach this stuff. I'm sure all the folks making these cattle-call working spaces have their definitions as well. That's fine. It sounds like we need to start disambiguating the concept to prevent more of this cluster-fuckery.</comment></comment></comment>


"I'm a convicted terrorist. I fly a lot. And the TSA won't leave me alone." - <AUTHOR> http://jetsettingterrorist.com/

<comment><USER2> The scariest part of this is that the TSA is wasting all these resources on someone who got labeled as a "terrorist" due to his conviction for this:

 _" The property crime for which he was convicted dates back to 1997 when he went on a cross-country road trip freeing minks from fur farms in three states. His weapon of mass destruction was a pair of bolt cutters."_[1]

Which means that these resources are _not_ being spent on protecting us from actual terrorists, you know, those guys who want to kill lots of people and cause, um, terror. (I can't really see a stampede of liberated minks as something that might inspire terror.)

[1] [http://www.forbes.com/sites/kashmirhill/2014/10/22/jetsettin...](http://www.forbes.com/sites/kashmirhill/2014/10/22/jetsetting- terrorist-was-watchlisted-for-animal-activism/)

This reference can be found on his "about" page:

[http://jetsettingterrorist.com/about-a-tsa-labeled- terrorist...](http://jetsettingterrorist.com/about-a-tsa-labeled-terrorist/)

<comment><USER3> In NL a former animal activist shot and killed a politician. Maybe this has caused all animal activists to be labelled as extremely dangerous?

[http://en.wikipedia.org/wiki/Pim_Fortuyn](http://en.wikipedia.org/wiki/Pim_Fortuyn)

It would be a totally nonsense link but I've seen even weirder ones (such as sharing a name with a terrorist, as if names are supposed to be unique somehow).</comment></comment>


The Legend of Google Maps - <AUTHOR> http://spatiallyadjusted.com/2009/10/26/the-legend-of-google-maps/

<comment><USER2> I don't think everyone has forgotten that. Many people just question whether it was a good decision for Apple to try to compete directly with a mature Google Maps using such a new offering.

</comment><comment><USER3> Exactly. Which is why you shouldn't expect Apple Maps to become "good enough" at least for the next 2-3 years, no matter what Apple says at every next event. Google also has 1100 employees working on Maps and 6000 contractors. Apple has about 100.

</comment><comment><USER4> The thing is that nobody cares about where Google is now (including Apple).

Getting to where Google was a couple of years ago is the goal. Things like street view, going underwater, interior building plans etc are icing on the cake. But all Apple needs is just the cake.</comment>


San Jose mayor quits FCC advisory board - <AUTHOR> https://www.mercurynews.com/2018/01/25/san-jose-mayor-sam-liccardo-quits-fcc-broadband-advisory-board/ <comment><AUTHOR> Although this probably won't get discussed much in the blogosphere, it actually bothers me more than the recent reversal of the Title II classification for ISPs, over which so many electrons were spilled. In my view, actual competition from municipal fiber would produce better outcomes than we could ever get with Net Neutrality regulation. That Pai's FCC is moving in the wrong direction on this front as well is very disheartening, albeit, alas, unsurprising.</comment>


Ask HN: Opensource Ethernet Router OS - <AUTHOR> For a long time it seemed to be common practice in Berlin that people simply use OpenWRT on relatively cheap (<$50) Routers with Ethernet ports and Wifi.
This doesn't seem to be the case anymore. I investigated a little and wonder now even more what to do.
There is OpenWRT but some people even consider it dead. And there is LEDE which may not yet be fully usable. And both dev groups seem to be fighting with each other.
Then most router suggestions are $150++, some even over $200. Honestly I didn't plan to invest that much for a simple home wifi. I basically just need NAT and a playground, since my cable provider decided to put everything on the free internet without any protection because apparently IPv6 is suddenly cool.
So, does anyone has something additional to say about this? What would you do for the time being? <comment><USER2> I bought a QOTOM-Q355G4 and installed linux on it. It is my firewall, vpn, apt package proxy, dns server, pihole server, check_mk server, maybe handle zoneminder (might not be beefy for that), am about to try home-assistant.io on it, so.... these little boxes are no longer simple edge devices, they have enough power to do other things. and I am using SaltStack to manage configurations.</comment>


Why the World Will Run Out of Helium - <AUTHOR> https://medium.com/starts-with-a-bang/6757fcdaa283

<comment><USER2> Or maybe history _doesn 't_ end in a few decades, maybe technology doesn't completely shut down beyond the immediate planning horizon. In which case it's not at a constrained resource at all:

* Current helium consumption is 30,000 tons/year

* There's 3 billion tons in the atmosphere (replenished at 3,000 tons/year), which we already know how to extract (liquefy air and distill the cryogenic liquids), and only lack a few orders of magnitude of industrial capacity

* 1,000 terawatts of D+T fusion, a modest extrapolation (100x humanity's current energy level), would yield 100,000 tons/year of synthetic He-4. Numbers for fission are worse

* The planet Jupiter is 10% helium</comment>


Internet Explorer 10: Columns, Box-model and Gradients. No webGL or websockets. - <AUTHOR> http://karlwestin.posterous.com/internet-explorer-10-columns-box-model-and-gr

<comment><USER3> > Microsoft seem to keep their habit of adding proprietary prefixes and stuff, > but on the other hand, so does webkit and firefox too. Let me just say it > sucks.

This is actually recommended practice for vendors supporting CSS properties which aren't yet standardised or passing testing against the relevant standard.

It is supposed to help prevent the situation where one vendor's implementation of a property becomes the _de facto_ standard simply because it is the first one implemented.

> At the moment it still looks pretty lame I'd say.

They only released IE9 one month ago. What are you comparing it to? Is there some other browser development team that has achieved more in a single month of development?

I think it's great that Microsoft continues to be open and put their previews out frequently for testing and feedback. Rather than throw meaningless words around like "lame" and "sucks", how about some suggestions on what they should do differently?

<comment><USER4> IE just plain sucks, and they're lagging behind much and often. Suggestions about what they should do differently? Kill the whole IE project and make Chrome/FF default?

<comment><USER5> I don't care about the browser, what I want to see is them adopt one of the modern rendering engines - preferably webkit as that team seem to be doing an awesome job of staying ahead of the curve.

</comment></comment></comment><comment><USER6> I'm almost done with a small web app I've been working on for the last couple of weeks. Nothing sucks more than using nice shiny markup that works great in Chrome and Firefox (rounded corners, drop shadows, or even a properly working display: inline-block;) and then going back and adding fallback support for all of these because each version of IE is incompetent to deal with them. Sigh.

And, as I just discovered, for this:

       var odd = ['quick', 'brown', 'fox', ];

"odd.length" in IE will return 4, not 3, evidently because of that trailing comma.

I'm a Mac user, so this all requires firing up VirtualBox (free!) to run Windows XP.

At least, thanks, MS, for including a "compatibility mode" button in IE8 so that I can quickly switch to an older version of Trident[1].

[1] <http://en.wikipedia.org/wiki/Trident_(layout_engine)>

</comment><comment><USER7> This seems a little premature. It's the first build.

The problem with these grids or "tests" (like the Acid3) is that they are being used to prove a point - but they fall short of the real goal - <USER2> what is agreed to be implemented and has been implemented (the Acid3 test written by Google's Ian Hickson hasn't removed the W3C non-recommended SVG fonts).

\- The W3C chose IndexedDB over Web SQL so it's no wonder IE10 doesn't support it.

\- Mozilla has been working on WebGL for years now (piece by piece?), and Chrome just got it very recently (is it complete?).

\- Web Sockets, wasn't that disabled for security reasons until a fix is found?

\- Chrome is considered the pinnacle in this blog post and yet there's no mention of ECMAScript 5.

Chrome's development started in secret and took some Mozilla engineers in the process and even though Chrome is mostly developed out in the open, Crankshaft (new V8 engine) and WebM were not. I'm not going to say IE hasn't been marketed a little bit unfairly, but I think a little transparency should be welcomed no matter who it is. Remember all businesses present incorrect facts to benefit (I'm merely stating, not excusing), an example being Chrome never actually downloading the web page in the promotional video a while back, it rendered from a local file.

You're welcome to correct me if I'm wrong.

</comment><comment><USER8> I think that the biggest news here is that Microsoft has already released the next platform preview!

Download here: [http://ie.microsoft.com/testdrive/Info/Downloads/Default.htm...](http://ie.microsoft.com/testdrive/Info/Downloads/Default.html)

And there's a nice message I got in my dev-chrome: "Cool, you're using a Chrome 12 nightly build!" (<http://ie.microsoft.com/testdrive/>)

</comment><comment><USER9> Good job covering the changes through IE generations of its supposedly future- proof versions.

The only reason in my opinion that IE will continue to be strong in the market is its proprietary ties to the operating system. Which will also remain its most vulnerable point.

</comment><comment><USER10> I wonder if they'll ever add WebGL. Microsoft's strategy seems to be to tie IE as much as possible to Windows (e.g. "native" HTML5 nonsense).</comment>


Tarnished: Google Responds to Serious Chrome Vulnerability - <AUTHOR> https://www.tomshardware.com/news/google-responds-blink-chrome-vulnerability,40281.html <comment><USER2> Pushing it straight to stable seems like a reasonable response

</comment><comment><USER3> The addition of Tarnished to the headline is a bit much. I'm not sure what the complaint is. That it was a serious bug? That it took 61 days to fix?</comment>


Google Engineer Calls Google+ a Pathetic Afterthought - <AUTHOR> http://gizmodo.com/5849061/google-engineer-calls-google%252B-a-pathetic-afterthought

<comment><USER2> He was referring to the platform not the product. Everyday it seems I find yet another reason to hate the tech "press".</comment>


Ask HN: "getting rich quick" selling "get rich quick", is this guy legit? - <AUTHOR>

According to this guy, his last month income was $100K http://www.smartpassiveincome.com/my-january-2015-monthly-income-report/ <comment><USER2> If you send me 1000BTC I will tell you how to earn $100K month.

</comment><comment><USER3> spam

<comment><AUTHOR> What is the spam, my question? I'm not affiliated in anyway with this guy.</comment></comment>


The future of M:N threading - <AUTHOR> https://mail.mozilla.org/pipermail/rust-dev/2013-November/006550.html <comment><USER2> Background: The author of this proposal, Daniel Micay (a.k.a. strcat, a.k.a. thestinger), is the most prolific volunteer contributor to the Rust compiler [1], and is fairly obsessed with eliminating design hazards that could lead to Rust not being competitive with C++ in terms of performance. For example, he was the driving force behind Rust's recent widespread switch from internal iterators to external iterators, and wrote most of the external iterator libraries himself.

[1] [https://github.com/mozilla/rust/graphs/contributors](https://github.com/mozilla/rust/graphs/contributors)

EDIT: To whoever removed the [Rust-dev] annotation from the title of this submission, please put it back. It adds valuable context, and it's _in the title of the page itself_ , so you're violating HN's naming policy by removing it.

<comment><USER3> But the M:N system is already written, and it seems as though it works extremely well. In fact, it is one of the things I like most about the language, and one of the reasons why I prefer it over C++ (as well as D and Nimrod for that matter).

This decision probably puts it closer to C++, but I can't see how that is a good thing.

<comment><USER4> Note that this is not a decision; it's not by a core team member.

</comment></comment></comment><comment><USER5> 100k+ concurrent threads is a realistic starting point for M:N threading. As long as native threads require a separate preallocated stack that never shrinks there will always be a mismatch compared to the capabilities you get running thread per core event based code.

Making M:N threads a first class POSIX feature is a good starting point as long as it also allows you to express the intended locality of groups of threads. Locality isn't optional anymore. The slowdowns he reports also map to scale up issues you see when you don't think about keeping frequently accessed mutable data local and shared nothing to an OS thread.

M:N threads are just an abstraction around a stack and registers that frees you from having to bind up a bunch of related state into a series of objects and maps. It's awesome, I want it, but nothing is quite there yet. At least not if you want something like Java or C/C++ performance.

Work stealing across cores is really nice, but I am not sure it is always the behavior you want. A programmer can tell when migrating a task across cores is going to hurt more than waiting a little longer to get to it.

I also think any discussion of M:N threads or multi-threading is also incomplete if it doesn't also include garbage collection as a means of passing data between threads. Right now we have languages that are garbage collected and treat native memory as a second class citizen and non-GC languages that make multi-threading a headache.

GC is great for multi-threading, but not so great for hundreds of gigabytes of variable lifetime objects. Even if the GC can handle it, GC still has unacceptable 2x space overhead.

I don't want much :-)

The youtube video doesn't load for me :-(

<comment><USER6> The size of the OS threads with their stacks is what I am worried about as well. It is interesting the author hints that:

> It drops further when asked to allocate 8MiB stacks like C is doing

Memory, just like CPU is constrained and costs money especially if provisioned in the cloud. If I have 2G of memory available I can spawn 250 threads and keep them around without swapping.

EDIT: actually scratch the above, _wmd pointed out that stack memory is just like virtual memory, it is allocated but brought into physical memory as needed.

This changes how code is written. It is not just an internal detail! Now you cannot think "one-connection = one-task" now it is about locks, queues and mapping control blocks to connections. That is the biggest loss.

> GC is great for multi-threading, but not so great for hundreds of gigabytes > of variable lifetime objects. Even if the GC can handle it, GC still has > unacceptable 2x space overhead

Good point on GC. I see the main issues in a large concurrent system (and presumably Rust wants to be a good tool for concurrent systems) is non- blocking GC. A slow GC might be acceptable, but if one errant task allocated memory in certain pattern and GC has to lock all the tasks out to run, that could be a serious issue.

Responsiveness (liveliness) of a concurrent system is something that is often forgotten and everyone wants to talk about how fast one can transpose a matrix.

Now a concurrent GC is possible, Azul built one, for Java, it is very interesting how it work. I enjoy reading their whitepapers:

[http://www.azulsystems.com/resources/whitepapers](http://www.azulsystems.com/resources/whitepapers)

<comment><USER7> Just highlighting a small, but common miscomprehension (that on one project, caused a PM to mail everyone at 2am about a HUGE nonexistent memory leak)..

Thread stacks are virtual memory like everywhere else, so in reality an "8mb" stack means "8mb maximum size". Sure, they won't shrink once pages are faulted in to back them, but in the average application, especially on 64bit, this should never be a problem

If for the lifetime of your thread, its stack only ever grew to 32kb, then the OS will only have allocated 32kb of memory to back it.

<comment><USER5> You won't hit the worst case, but the common case is that threads will burst stack usage during task execution. If you have 100k threads your effective stack usage will be the high watermark.

It varies by workload, but for mine that is between 128 and 512 kilobytes per thread.

If you churn all your threads no problem. If you are hosting 100k persistent connections I suspect it would detract from available memory.

<comment><USER8> That's interesting. So if a thread briefly uses 1M stack, and relinquishes most of it, then the kernel still keeps that unused 1M memory in the page table?

I expected the linux kernel to be more intelligent, but maybe there's a reason it behaves like that?

<comment><USER7> Under pressure, it will eventually page the memory back out, but generally you never want to get your machine into a state where paging happens. Aside from that, there is no mechanism that allows the kernel to know the memory is no longer used unless you explicitly tell it, e.g. via madvise(2).

Though I can't think of a sane way to call madvise(2) involving a thread stack

</comment></comment></comment></comment></comment></comment><comment><USER9> Interesting analogy: Erlang implements an M:N scheduling model, where it starts an OS thread for each CPU core (by default), and (preemptively) schedules its own lightweight processes on top of these threads. However, unlike OS threads, these are very lightweight: when they are created, they only need a few hundred bytes. Erlangers have been using the one process per request model for a very long time, and Erlang applications achieve massive concurrency via this.

To me it seems it is possible to do M:N right, but you need more abstraction and a different design. M:N seems to work well in Erlang-like cases (very lightweight processes on top of a kernel threads).

<comment><USER10> This is what Rust was doing, more or less, before they removed segmented stacks.

</comment></comment><comment><USER11> M:N threading has been a great idea in theory for at least twenty years, but during that whole time actually _implementing_ it has always ended in tears. The unexpected blocking in I/O or page faults etc. always trips it up. That's why it works great for HPC, not so much elsewhere. There's far more "bang for the buck" in making 1:1 threading work better.

<comment><USER12> I'm under the impression that M:N threading has been implemented in Haskell, Erlang and Go. I think it's been reasonably successful in all three.

<comment><USER4> From what I've heard Go is considering moving to this 1:1 model as well, at least on Linux. This is the reason for the Linux patches mentioned in the thread.

<comment><USER13> Can you post a link to some discussion around this? A google didn't turn up anything obvious. Thanks.

<comment><USER14> It's hinted at in the video linked in the email[1]:

 _> Over the past year we've been looking at how a uniform, performant, synchronous programming model can be implemented across all of Google's core languages (C++, Java, Go, Python), while maintaining compatibility with existing code._

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

</comment></comment></comment></comment></comment><comment><USER15> If you're interested in this area you might like this talk from the Linux plumbers' conference:

"Over the past year we've been looking at how a uniform, performant, synchronous programming model can be implemented across all of Google's core languages (C++, Java, Go, Python), while maintaining compatibility with existing code."

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

</comment><comment><USER3> I'm not sure I understand. Are you saying that a 1:1 threading model without preemption will be more performant than an M:N threading model without preemption?

How would this affect the performance of applications that spin up thousands of tasks?

<comment><USER16> If you restrict yourself to 64 bit systems, you can essentially go back to using OS threads with blocking I/O because the address space is so large. You can fit thousands of 2MB call stacks into the processes address space and rely on the OS and MMU to manage the memory.

The problem that created the whole non-blocking, async domain was the memory needed for the thread's call stacks. You don't have enough address space to place a bunch of 2MB call stacks for each thread, if you're handling tens of thousands of connections.

<comment><USER6> 2MB call stacks?

Mine are 10MB:

        $ ulimit -s
        $ 10240

I can only spawn 200 threads in the worst case and keep them active before system starts swapping. Yes memory space is large by anytime those have to run they'd have to be brought up into the working set.

EDIT: nevermind, _wmd pointed out that stack memory is still virtual and it only be brought into the physical memory as needed.

<comment><USER17> Now I'm confused. This comment says that the stack memory is not allocated by the OS unless actually needed: [https://news.ycombinator.com/item?id=6728030](https://news.ycombinator.com/item?id=6728030)

Is this not true?

<comment><USER6> That is right, the full 8MB or 10MB or whatever of max is not being paged in.

I am stupid. I'll correct the initial comment.

Thanks

</comment></comment></comment></comment></comment><comment><USER18> The note about Windows User-Mode Scheduling is really neat - it makes mmap much more usable when you can switch out on a page fault. Is there such a thing available for Linux?

<comment><USER19> There is no User-Mode scheduling in the Linux Kernel to my knowledge, but the video[1] mentioned the post describes Linux patches that add support for it.

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

<comment><USER18> Shame. mmap is so handy, but blocking on page faults makes it annoying to work with.

</comment></comment></comment><comment><USER20> Some jump points for the interested on historical implementations other M:N projects (I remember this specifically for the case of NetBSDs work in this area):

[http://en.wikipedia.org/wiki/Scheduler_activations](http://en.wikipedia.org/wiki/Scheduler_activations)

[http://web.mit.edu/nathanw/www/usenix/freenix-sa/freenix- sa....](http://web.mit.edu/nathanw/www/usenix/freenix-sa/freenix-sa.html)

</comment><comment><USER21> If I remember correctly, this was the threading model used by Solaris. I'm sure there are many applications that make use of M:N threading, but for the server I worked on (~3000 concurrent connections and 50+ threads), this actually hindered the multi-tasking performance of the server. I remember investigating and figuring out this was the reason, and switching back to 1:1 made the performance increase.

</comment><comment><USER22> I can't find the reference, but I remember a grand old rant that threads only progressed so far because Solaris at the time had an very costly process-fork cost compared to other Unices and Windows.

<comment><USER14> What about shared memory?

<comment><USER22> True: forks have very different semantics than threads. Just thought the thread architecture would be less complicated if divisions of responsibilities were different.

</comment></comment></comment><comment><USER23> Lthread ([http://github.com/halayli/lthread](http://github.com/halayli/lthread)) is basically an M:N threading model.

You can run an lthread scheduler per core.

<comment><USER14> How is this relevant? The post is about the _problems_ with M:N threading models, and why they aren't a good fit for Rust.

</comment></comment><comment><USER24> If you have 1:1 threads in a language, can't you implement M:N threading as a library? Looking at projects like Akka[1] makes me think this is the case. Is there reason this can't be done that I am missing? Why would you want M:N threads baked in to the runtime?

[1] [http://akka.io/](http://akka.io/)

<comment><USER5> Those are usually leaky abstractions that don't allow you to do blocking operations with the idiomatic APIs and libraries of the language. You have to use the wrappers provided by the threading library which are typically incomplete and prevent you from using standard tools.

<comment><USER24> Aren't blocking operations also a problem if M:N threads are baked in to the runtime? If all of the idomatic APIs are using non-blocking IO then would there still be a problem?

<comment><USER5> When M:N threads are truly baked in (either at the runtime level or the OS) blocking an M thread doesn't block the underlying N thread.

An example would be Erlang which is a runtime built from the ground up to support lightweight threads where reading or writing to a socket of using the built in APIs won't block the underlying OS thread. You can still sabotage the runtime by writing your own native library and doing blocking operations from there, but the pitfalls are more obvious in that scenario.

If the underlying concurrency and network/disk IO primitives are truly non- blocking for lightweight threads then everything built on top of them will also be non-blocking. Non-blocking for the underlying OS thread that is.

That is where co-routines and other co-routine like libraries are a leaky abstraction. If you step into one of those blocking APIs in a third party or standard library you will block the underlying OS thread. This means you can't integrate with existing code or tools easily and you are always vulnerable to accidentally doing so.

<comment><USER24> How do run blocking code in a way that doesn't block an OS thread? Is there some abstraction that allows this that I'm missing?

<comment><USER25> You let the blocking call do a non-blocking call internally and then instruct an IO-aware user-mode scheduler to reschedule the user-mode thread when the non-blocking call has a result. This is what Haskell/GHC, Erlang and Ruby 1.8 do. There are some great papers on GHC's IO manager. In general, it is always possible to build a blocking interface on top of a non-blocking.

<comment><USER24> I guess I wasn't clear in my previous question. I know you can build a blocking interface our of a non-blocking one. My question was how you go the other way. How do you create a non-blocking interface of of a blocking one. The parent post seemed to imply that Erlang was able to do this. As far as I can tell this can't actually be done. If you have a blocking call you still have to block an OS thread somewhere.

If this can't be done, then that brings me back to my previous point. It seems like the important thing is that you have non-blocking IO and not that you have an M:N threading model in the runtime. If you have non-blocking IO then it seems like you could easily implement an M:N threading model as a library without making it awkward to interact with.

Is there some assumption I'm making that doesn't make sense?

<comment><USER25> The Erlang runtime uses non-blocking IO calls to the kernel but exposes blocking functions on top of this. Is such a function really blocking? It depends on what level you're looking at; it's blocking at Erlang level but non-blocking at kernel level. I think this is the source of the confusion. You are of course correct in saying "If you have a blocking call you still have to block an OS thread somewhere." if you're looking at kernel level, but not Erlang level (since it can translate blocking to non-blocking).

> If you have non-blocking IO then it seems like you could easily implement an > M:N threading model as a library without making it awkward to interact with.

Yes, but your language/system has to have some mechanism to manage control flow. Examples: F# does what you ask for via asynchronous workflows. Ruby via fibers/EM-Synchrony. Java via a bytecode weaver like Kilim.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER26> > Rust's tasks are often called _lightweight_ but at least on Linux the only > optimization is the lack of preemption.

I'm surprised by this, I would have expected that voluntary preemption saves you from having to save the FP registers as well. Is the absence of the optimization a non-x86 thing?</comment>


Show HN: Share this Website - <AUTHOR> http://www.sharethiswebsite.com/

<comment><USER2> There's a joke in here somewhere. And I don't get it.

<comment><USER3> Neither do I.

</comment></comment><comment><USER4> Satire/commentary on the sharing economy</comment>


WWDC 2013 On a Budget - <AUTHOR> http://www.defaultbreak.com/2013/04/25/wwdc-on-a-budget/

<comment><USER2> The lack of any capitalization on this page bothers me.</comment>


Show HN: Healthy vegetarian recipes prepared by expert nutritionists - <AUTHOR> http://www.veggieplan.com

<comment><USER2> I think this is interesting, but I would suggest showing some kind of sample recipe on the web site.

As an aside, I like cooking vegetarian recipes (usually dinner 4-5 times/week) but I usually go by whatever produce is freshest in my local grocery stores, and then design a menu around that.

<comment><AUTHOR> Author here: Thanks for you feedback, we really appreciate it!

Finding fresh local area products sounds like an interesting feature that we'll likely add.

</comment></comment><comment><USER3> Offer more than just another coming-soon-give-us-your-email page. The days for that have gone.

<comment><AUTHOR> Author here:

Thanks for your observation, the app will be released soon. We hope that you'll come back to check it out when it's ready.</comment></comment>


Dodgeball Shuttered By Google, Its Co-Creator Promises To Clone It  - <AUTHOR> http://www.alleyinsider.com/2009/1/shuttered-google-service-dodgeballs-co-creator-promises-to-make-a-new-one-before-sxsw-goog

<comment><USER2> Dodgeball looked really cool and it's a pity that Google just let it languish - especially since social networking seems to be gravitating toward real-time, location based services.

</comment><comment><USER3> Though it's a real shame to lose the dodgeball name. I've found that software projects take on a life of their own, and even if you fork or recreate it at some point with a different name you risk losing that original feel, though you also have the opportunity to create a new and unique feel for that software project too.

</comment><comment><USER4> Does anyone else feel that even if this is not a contractual breach that it's an ethical one?

If he wanted to keep his company then he shouldn't have sold it.

<comment><USER5> They (referring to both the founders) must have sold it thinking they might get access to the good tech infrastructure that other Google products and services get.

That's another important thing that would have been on their mind apart from the money (guessing they sold it for a low price).

</comment></comment><comment><USER6> An old question but has Google manage to do well with any of its acquisitions? Youtube and Blogger are still running on their old momentum...

<comment><USER7> They totally gutted my beloved MeasureMap, GRR!

And the Jaiku people are very angry.

</comment></comment><comment><USER8> I'm a bit surprised that Google doesn't have an employee agreement in place preventing this. Many can extend well past your employment.

<comment><USER9> [http://en.wikipedia.org/wiki/Non- compete_clause#Enforceabili...](http://en.wikipedia.org/wiki/Non- compete_clause#Enforceability_in_the_State_of_California)

<comment><USER10> FTA: _"...except for a small number of limited circumstances"_

If I'm not mistaken, one of those circumstances is the sale of a business. I wouldn't be surprised if G does have an enforceable agreement in place.

<comment><USER9> I realized that afterwards:

"If an owner is selling the goodwill in their business."

Though it still has to be "reasonable." And that probably means its expired.

</comment></comment></comment></comment><comment><USER11> This just represents bad acquisitions on G's part. They should examine how cisco, for example, does acquisitions.</comment>


Amazon is killing your mailman - <AUTHOR> http://www.salon.com/2015/02/13/amazon_is_killing_your_mailman_why_its_new_sunday_service_is_a_labor_travesty_partner/ <comment><USER2> I had no idea that Amazon was doing Sunday deliveries, until I started seeing my packages marked 'unable to be delivered' on Sundays. This seems like a lot of extra effort to go to and not inform the customer that you're doing it.

It's also pointless. My mail goes to a mail receiving shop, and none of these places are open on Sundays because there's never been any mail to receive. A lot of people around here have their mail sent to their office, which similarly are not open on Sunday.

Even if I received my mail at home, I have no expectation of it arriving on a Sunday. The chances of being home to receive it are very slim.

Seems like a lot of unnecessary effort and misplaced priorities. I'm fine with waiting until Monday, and that's the result anyway.

</comment><comment><USER3> Fascinating reading into the current state of the USPS. I didn't even know they were doing Sunday delivery for Amazon. There's a reason "going postal"[1] entered the lexicon.

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

</comment><comment><USER4> Then quit.

</comment><comment><USER5> I make $17/hr in a NOC position with no benefits, no pto, sick days, etc and I may not have a position next month because bureaucracy.

These CCA positions look pretty nice right now.</comment>


Ask HN: How do you test your Android Apps? - <AUTHOR>

Yesterday I downloaded Amazon.com's Android App (for their new App store) onto my Samsung Fascinate (their "Galaxy S" series device for Verizon).
Amazon was featuring Angry Birds RIO for free, which I attempted to download and install.  Didn't work.  Got some strange error message in a popup window.  It looked like the text of the error message was being truncated (like it was flowing off the screen or the popup window wasn't large enough to accommodate the text or similar).
This got me wondering - are there any helpful automated tools out there that enable an Android App Developer to test his app across multiple popular devices / multiple OS versions / multiple permutations of each device?  Maybe something like Browsershots.org, but for mobile devices?  Ideally not an emulator, but screenshots from an actual device.
If Amazon can't get it right, is there hope for any of us?
P.S. I'm new to Android App Development <comment><AUTHOR> BTW, you can see how Browsershots shows me screenshots of this exact HN page, accross many different browsers, here: [http://browsershots.org/http://news.ycombinator.com/item?id=...](http://browsershots.org/http://news.ycombinator.com/item?id=2386177)</comment>


The curl user survey 2017 - <AUTHOR> https://daniel.haxx.se/blog/2017/05/11/the-curl-user-survey-2017/ <comment><AUTHOR> Common, you use curl everyday! How many times has it saved your bacon helping you understand some weird bug?

Help its author by filling the survey...</comment>


Kubernetes on Mesos – Try It Now – Mesosphere - <AUTHOR> http://mesosphere.com/2014/12/12/kubernetes-on-mesos/ <comment><USER2> Kubernetes on Mesos makes sense to me. When you run Kubernetes on GCE, you have all of Google's infrastructure... but if you run it anywhere else, how do you get scale and HA without Mesos? (Let's be frank: when is anybody going to run 100% of their workloads on GCE). I think Kubernetes on Mesos fills the 90% gap of all Kubernetes apps running outside of Google and maybe even on Google for app portability.

</comment><comment><AUTHOR> You can try it on either Digital Ocean or GCE.

<comment><USER3> Why there is no try on AWS?

Also I'd like to know why somebody would use kubernetes/Mesos vs. marathon/Mesos ?</comment></comment>