A simple idea to encourage people to browse the New page - <AUTHOR>

Move the Submit link from the main nav bar to the bottom of the Newest page. <comment><USER2> I also thought that the new button was the submit link when I was first here, as in 'submit a new story', which could put other new users off. Maybe change it to 'latest'.</comment>


Giphoscope: Analog GIF player - <AUTHOR> http://www.giphoscope.com/ <comment><USER2> Fix formatting please. On Chrome I cannot see the price as it is covered by PP button.</comment>


Ask HN: What are some tech companies that do not use an open floor plan? - <AUTHOR> It seems every tech company has fallen for the open floor plan. I'd love to find a company that respects the desk as a workspace that facilitates concentration and deep-thought. It seems the answer to this problem has become headphones.<p>How is this acceptable? <comment><USER2> I work for Viasat; all of our new-build offices in the past few years have been designed around what we call the neighborhood concept. A neighborhood is a set of individual offices (maybe 60sqft-ish?) with three solid walls, and one glass/wood wall with a sliding door. All the offices open into a central room that can be outfitted in a bunch of different ways. There are neighborhoods of different sizes, and basically, each team gets a neighborhood to themselves. The whole concept was developed through a series of experiments that took several years.

Some teams make use of the space better than others, of course, but for my group it's been a _huge_ boon to our collaborative culture. The offices are well-insulated, so you don't need headphones to achieve quiet, but if you want to, you can leave your door open and hear what your teammates are discussing at any time.

Over time we're upgrading our older facilities to the same model, but in general there are few open-plan offices or cube farms in the company, and I highly doubt we're going to build more. Many years ago, our founders made it a company priority to give folks a door they can close, to get away from "it all" and focus.

<comment><USER3> I worked in a similar environment at Apple, when Infinite Loop first opened: Pods with offices that surrounded a central courtyard, which was furnished with sofas, chairs and whiteboards. Each office had a simple (and heavy) door alongside a tall and narrow window.

The door provided effective sound isolation, and years later I realized the window was a psychological link to what was going on in the inner "courtyard", after spending time in a completely closed office at Microsoft. The message at Apple seemed to be "Okay, we know you need to concentrate on work, but remember that you're part of a community" while the office of the particular group I was in at Microsoft seemed to say "Please just sit there and write code and do email -- we will feed you under the door".

Architecture matters in the weirdest ways, and sometimes tiny tweaks make a big difference.

<comment><USER4> +1 for the Microserfs reference!

<comment><USER5> I'd forgotten that book existed,I need to read it again, it's up there with "office space" for humourous tech related media.

<comment><USER6> What book are you referring to? Sounds good :)

</comment></comment></comment></comment></comment><comment><USER7> Funny behaviors from an open office plan I experienced:

\- tribes claiming spaces: there was a couch area where a natural affinity group formed based on common personality types typical of urban/suburban tribal divide. developed an in-group/out-group mentality. a counter group formed in a lunch area.

\- posturing: top tech individual contributor used main boardroom for "really important video conference meetings," and it became his de facto office unless you had it booked.

\- tragedy of the commons: with no private space other than common spaces, meeting rooms were booked up with standing meetings so that it became impossible to get one when you needed it.

\- Callout/performative drama: challenging people would use the availability of earshot to try to draw others into their conflicts. Callout culture, where instead of addressing issues, people would call out others to demand explanations in front of teams, managers, or in main slack channels.

\- lack of personal boundaries: technical managers with low charisma routinely embarrassed in open meetings where everyone felt they could table complaints and make others accountable in front of a group, further wrecking morale as result of perceived weak leadership.

Interior design wouldn't solve all these problems, but the aesthetic of a kindergarten or hipster daycare certainly exacerbated them. I may long form this post into something, as the anti-patterns in that org were an effect of its culture, which was expressed by aesthetics rooted in beliefs that would have benefited from more insight.

<comment><USER8> A cynic could argue that only an open office plan made this toxic work environment transparent to you.

<comment><USER9> A bunch of those definitely look like "being a jerk" problems where the open office only drove a specific incarnation.

The tragedy of the commons part, though, looks like a structural problem to me. It's pretty common to want a discussion with 3-5 people for 5-10 minutes. With offices or even cubes, you can just have that in the workspace. With open plan, you either annoy everyone around you or book a conference room, which takes it away from standard users.

I'm not sure what anyone at the peon or even manager level can do about this, except try to keep meetings short or relegate them to slack/email. It really is a design issue.

</comment></comment></comment><comment><USER10> I get I'm part of the privileged few, but: I've been working for a small software company for almost 11 years, and EVERYONE at my company is remote. We don't lease any real estate anywhere, unless a mailbox and a colo rack count.

It's AWESOME, but there are caveats. The biggest one is that we can't really hire newbies; everyone we've brought in has to be mid-career at a minimum because the absence of the "water cooler effect" makes it harder to ramp up quickly. Folks with some experience handle this better.

The other drawback is mostly theoretical: I'm really not sure I could go back to working in an office. I control the music, the temp, the food, the coffee, when I take a break, whether or not I take a midday snooze, and my cats are everpresent. I mean, an office sounds like a dystopian hellscape by comparison.

<comment><USER11> This is very interesting, because your office sounds like hell to me. Any time I work from home I'm absolutely desperate for meaningless social interaction, a walk and a chat while out for coffee, a beer with my team at lunch or after work and face to face discussion. I guess it's hard to find something that works for everyone.

<comment><USER12> Interesting. I work from home most often, and I find that not having to tack on a 2 1/2 hr daily car commute leaves me time for actually socializing IRL as opposed to trying to cram that need into the office.

<comment><USER13> Yeah, but where do you find anybody to socialize with?

<comment><USER14> If you only socialize with co-workers I'd say that is the bigger problem. All my interaction with people outside office hours are with people I don't work with.

Should I consider myself privileged in this respect?

<comment><USER15> How dare you have friends, you privileged person!

</comment></comment></comment></comment></comment></comment><comment><USER16> If avoiding open-plan is a priority, I recommend you focus on negotiating for a remote work arrangement, rather than excluding good companies. My last two long-term engagements have been at Fortune 100 companies and I've worked remotely for both.

In the first case, I was the only remote employee in my business unit. I was hired because I had a high level of competency with a technology they were investing heavily in. When I first interviewed, they told me that the were only considering on-site, and that my rate was too high. So, they first hired an on-site employee at a lower rate, but he failed to deliver a working installation and the project got perilously behind schedule. When I re- approached them about two months later they were no longer hung up on my rate or request to work remote. It's worth noting that I took a gamble here and put in about 6 or 8 hours interview and follow-up process, after being told that remote was not an option, and then being given the initial "no". During the project, I did stop by their Silicon Valley campus for a few hours of meetings every month or two, which was probably 1% or less of my total billable hours.

In my current engagement, my entire team is remote, so it was a non-issue. The gig was secured for me by a recruiter who had previously contacted me about an on-site position, and I told her I was only considering remote (and followed up periodically).

Both of these positions had multiple technical screens which were very rigorous. Both resulted from initial contacts where I was given at least one "no". You can have a private office at any company if you negotiate for remote and set yourself up with the office you like (e.g. home, co-working, etc.)

<comment><USER17> Working alone at home would be a worse option for me than working in an unfavorable office environment. More like a non-starter than worse. I get that there are people who love the idea of being isolated. But I think there are more who want to be around people instead of alone. And there should be a reasonable option for them, not open plan.

<comment><USER18> Remote does not mean isolated. I spend most nights and weekends out with friends and groups. When I worked in an office I would frequently be too tired from interacting with people to plan things.

</comment></comment></comment><comment><USER19> I juuuust got off a catch-up call with an old college buddy who works at one of the big wireless companies. He described what I read about here on HN and in some blog posts: The company completely changed its "culture" in a desperate attempt to "attract millennials" (and be on trend). Moved to an open floor plan where nobody has an assigned desk. You literally cannot leave anything overnight or you get some sort of a citation. His words: "I spend my day with a headset covering one ear and my finger in the other ear, as I'm on calls most of the day." He also noted how they computerized the cafeteria so you don't have/get to interact with food workers anymore. "All my sandwiches have too much mayo now and I can't do anything about it."

<comment><USER12> It's called 'hot-desking'. In practice everyone still sits in the same place every day, and sublimizes their territorial marking. Sitting in 'someone else's' spot is seriously frowned upon. This trend happened when the 'open plan' needed a next level of hell.

<comment><USER9> > _This trend happened when the 'open plan' needed a next level of hell._

I seem to remember Dilbert explaining this as a way to ensure employees felt more like company-owned sacks of potatoes than actual humans. Hot-desking really does seem like one of the most dehumanizing office designs I can think of.

I know the supposed benefits of open offices, but I'm not even sure what hot- desking _claims_ to achieve? Except in call centers I guess, where it's explicitly "to speed up firing people".

<comment><USER20> >not even sure what hot-desking claims to achieve

It's mostly for environments in which the company's short on space and a lot of employees don't routinely come into the office. Hot desking eliminates permanently provisioning office space that may be only used for one day in five or ten.

If that's not the problem being solved, I'm not sure what is. Now no one knows where anyone is sitting and teams are at least theoretically all scattered around.

<comment><USER21> I'm pretty sure this is the correct explanation. We have a site that recently moved to this setup, and I know for a fact that there are roughly 20% fewer seats than employees. That's what they came up with as acceptable after crunching the numbers on absentee rate.

</comment></comment></comment></comment></comment><comment><USER22> Pixar does not have an open floor plan. It's 2-3 folks to an office, and the animators are well known for decorating their offices in fairly quirky ways during the "off-season" when they have finished their portion of the work for a movie ([https://www.google.com/search?q=pixar+animator+offices&sourc...](https://www.google.com/search?q=pixar+animator+offices&source=lnms&tbm=isch&sa=X&ved=0ahUKEwj3oZaqqMPaAhURBHwKHbG0AVkQ_AUICigB&biw=1309&bih=709))

</comment><comment><USER23> It's not acceptable. I've moved from a dev background to having a go at sre/devops/something-or-other; work aside, the culture is excrutiating, with people shouting across the office all day. Best case, someone talking to themself hour after hour, as if anyone wants to hear that. The idea that open floor plans are productive is farce. I effectively have two jobs, the first being just trying to get any work done.

<comment><USER24> It's also extremely unhealthy. I've never been so sick in my entire life as since I started this job a year ago. Literally herded like cattle into an open air room with hundreds of other people from all around the world coughing and sneezing in your face all day. I'll never _ever_ accept another position with this kind of setup.

<comment><USER25> Hah this hits close to home, literally just getting off being sick the last couple days cus someone in the tiny aisle between a sea of desks coughed a few times directly at my face last week as I passed to and from the kitchen.

My current spot is particularly bad because they have us jammed up 5' away from 4 conference rooms with thin glass walls so we get to hear loud conference calls every day all day long.

Edit: to too two? I can English

</comment></comment></comment><comment><USER26> Fog Creek famously has a non-open office space [1]

[1] [https://medium.com/make-better-software/beyond-open- offices-...](https://medium.com/make-better-software/beyond-open-offices-the- new-fog-creek-headquarters-bc2f70d7c7dc)

<comment><USER27> I don't know if Trello still works this way after the spinoff from Fog Creek and subsequent Atlassian acquisition, but I visited Trello's NYC office and they had a similar setup to Fog Creek's. Trello also has a significant number of remote employees.

<comment><USER28> Trello shared an office with Fog Creek until last December or so, so no surprise that they're similar. I suspect Trello retained the offices layout since Fog Creek was the one that moved out.

</comment></comment></comment><comment><USER29> Headphones are not good enough. It's much too easy to damage your hearing.

Sun Microsystems, Inc., had offices. More junior engineers would share offices, with two or three engineers per office, while more senior engineers would have private offices. Seniority also dictated office location (think of having windows vs. not). This worked _very_ well. It's not that expensive either (it's certainly not why Sun died).

<comment><USER30> I don't like open office. But Bose QuietComfort work pretty well with music/noise on very low volume.

(eg. [https://asoftmurmur.com/](https://asoftmurmur.com/))

<comment><USER31> I use Bose QuietComfort 20's and even though they are awesome, they still not good enough. Active noise cancellation is great for airplane noise (predictable, repetitive), but not for voices.

<comment><USER29> And even for airplanes, it's not that good. All noise canceling headphones I've looked at or owned have a sampling frequency of 21KHz, which is a bit low, and results in high-frequency (if low amplitude) noise that I _can_ hear, and it's annoying or even painful.

I don't quite understand why there are no 44KHz noise-canceling headphones on the market...

</comment></comment></comment></comment><comment><USER32> Virtually everyone has an individual office where I work. Our CEO has the motto "give them a door, a window and the fastest computer money can buy".

<comment><USER33> Which company is it? (If you didn't want to give away where you work, you could have named the company without saying you work there. That was the original question, after all.)

<comment><USER32> Apologies. Here is a link: [https://www.cmgl.ca/](https://www.cmgl.ca/)

</comment></comment></comment><comment><USER34> Well, a famous example is Microsoft. Though the recently built and renovated buildings are moving toward open plan offices, about 80% of the buildings in the Redmond campus are full of offices. Which office you get is purely based on tenure. I remember it took 11 years of tenure to get a window office in my old building. Some new hires were doubled up due to space constraints. But I was in the 70% of office holders who had a single office from the beginning. It was fun to be able to decorate my office. You could really see people's personalities in their offices. Offices would also double as quick meeting rooms for up to 5 people. No overhead for booking conference rooms. All in all, it was a great perk of the job. If only they had free food...

Even if you have offices, people would still barge in, cutting into your uninterrupted time. Funny enough, in the open-plan at Google, where I am currently, I get far fewer walk-up interruptions. It's always good to ping people on chat so they can respond async.

</comment><comment><USER35> I feel your pain. I found this video from Vox very interesting, to see the rationale behind the original open office space, and contrast it with what modern organizations has made it into.

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

</comment><comment><USER36> Stackoverflow/Stackexchange

[https://stackoverflow.blog/2015/01/16/why-we-still- believe-i...](https://stackoverflow.blog/2015/01/16/why-we-still-believe-in- private-offices/)

</comment><comment><USER37> Bluewind is a small consulting company based in Italy (embedded systems). We switched from "almost all devs in a room" to 2/3 devs per room maximum while building our own offices recently. And common spaces for meetings, conferences and telephone calls. Encouraging to work from home when possible also. Interesting: working this way and adopting Agile principles makes enhances collaboration a lot, much more that in the previous open space where having everyone in the same room makes it almost impossible for people to talk each other when needed.

</comment><comment> at-fates-hands It's funny, about six or seven years ago, most of the companies I worked for had gone to an open floor plan. Within a few years, all of them had gone back to cubes for a number of reasons.

I just started at a large corporation three years ago and they spent millions going to an elaborate open office plan which was similar to what others have referred to as "neighborhoods". At first it was called "hoteling" where we just had a ton of desks with monitors and a dock so you didn't have a set place or cube to work.

After about six months, teams had taken over areas without telling anybody, they pushed other teams out to other areas. Then they shifted a ton more people to our building so now space was even more limited. They started moving desks into common areas meant for collaboration where people met and ate lunch in order to handle in the influx of new people. People started "squatting" on their desks, putting personal pics and their mouse and other stuff to claim their desks so nobody would/could sit there. This clearly was not what the architect/designer had in mind. I quickly got to the point where I was so frustrated, I just tapped out and now I work from home almost 100% of the time.

It's funny how they had this great idea and it was totally ruined by standard human behavior.

<comment><USER38> More like it's funny how designers have no clue about basic human needs.

Our brain is wired for habits. We form them to ease our cognitive burden, it's a built in mechanism. You don't have to think about reversing out your driveway because of habits, brushing your teeth, checking your email, etc.

People don't want to hunt for a desk every morning because it is fundamentally incompatible with how our brain works, not because they're being difficult. So they adopt a desk. And then someone takes 'their' desk, which is a burden, a bit of thinking they shouldn't be doing. So they naturally mark out 'their' desk.

So in reality, it's a stupid idea because of the way the human mind works. Might as well rage at the tides.

</comment></comment><comment><USER39> Best office I ever worked in (in both productivity AND developer happiness) was subdivided into 4m x 4m rooms each with two or three developers, wood panels between adjacent rooms, glass corridor walls with privacy frosting, and floor-to-ceiling glass exterior walls with Melbourne city and parkland views. Each space was decorated and equipped as the occupants pleased. Company was acquired in 2004 and that office sadly no longer exists.

</comment><comment><USER40> The schools in our area are in the final phases of remodeling, getting rid of the open floor plan layout that was in vogue when many of the schools were built, and was such a disaster. Nice to see taxpayer money hard at work.

It's funny that a business as reactionary as the education system seems to have learned this lesson but tech companies haven't.

<comment><USER41> German universiteties in Munich, Dresden and probably elsewhere have separate rooms for the staff. Usually 2-4 persons per room. It's really nice and productive.

Later I found similar setting during interview at Viavi Solutions. All other bigger enterprises had open space offices. Some with cubicles, some with glas walls and some with tables only.

<comment><USER42> Sadly many universities in Europe are shockingly moving to open plan spaces.

</comment></comment></comment><comment><USER43> They're all going this way. I've had to started adding 'well, I can' t do the work here' in front of every 'when can you have this done' response.

<comment><USER44> It has gotten to the point where I'm seriously considering just working from home every day, even though that's strictly not allowed.

Open-plan offices are absolutely maddening, I get pulled out of my thoughts constantly, and there's no effective way to shut it out. Earplugs aren't enough, and with headphones I would have to play music so loudly it would be annoying my colleagues, just in order to cut out the constant noise. We have so-called "focus rooms", but 1) there are far too few of them, and 2) they're supposed to only be used for short phone meetings and such.

I raise this with my manager every time we have a "pit talk", as they're now called. But there is seemingly nothing he can do.

<comment> brian-armstrong You might try earplugs and earmuffs at the same time. It's a pretty effective level of sound isolation.

<comment><USER45> Some people, like me, can only wear headphones or earplugs for a short period of time - like 2 hours - before they develop ear infections.

Furthermore, administrative controls (headphones) for what is actually a safety and health problem (excess noise) are the solution of last resort from a health and safety perspective. A good health and safety person would advise structural mitigation, not forcing everyone to put on personal protective equipment (headphones.)

When open plan offices can regularly burst up to 95 dB (yes, I took in a meter and measured the last one I was in) and are often 65 dB when they are "quiet", noise is absolutely a health and safety issue. Constant noise, even if not immediately damaging to hearing, can cause increased stress and other physiological issues.

<comment><USER31> Well said, thank you.

</comment></comment></comment></comment></comment><comment><USER46> Several teams in Apple don't have an open floor plan. They pair two individuals in an office.

<comment><USER47> Except that the gigantic multibillion dollar new space ring was explicitly designed around big open office units, long tables with _bench seating_ , and the 'privacy pods' are exposed clear glass on all sides..

<comment><USER48> _long tables with bench seating_

So everyone at the table has to have identical ergonomics?

<comment><USER49> What an absolute nightmare.

<comment><USER50> You just need to hire engineers that fit the space (between 5'9" and 5'11" tall). What is the problem? Hiring is difficult anyway ...

</comment></comment></comment></comment></comment><comment><USER51> Yes I too would love to see this. Noise canceling headphone seem to cancel everything but voices and that is the opposite of what you need.

<comment><USER52> I use industrial ear muffs over my in-ear headphones. Not very comfortable but they work great.

Now I wish my work wouldn't suck so I could actually use all the focus I get this way :)

<comment><USER53> I've found that custom molded in-ear hearing protection combined with industrial ear muffs is the closest I can get to drowning out nearby conversations (including loud ones) without requiring a layer of music on top or bothering with headphones underneath the ear muffs.

<comment><USER44> I've been considering this as well, but it'll get really uncomfortable over the course of a day. And then you have the colleagues who think they can just interrupt you all the time, with minor questions. Or the ones who just hover around, waiting for you notice them.

</comment></comment></comment></comment><comment><USER54> When I worked at Extrahop the engineers had offices with two to an office. It was a great place to work

</comment><comment><USER55> I work in a very open office plan where meeting rooms have no walls and even directors sit amongst the staff. It's noisy and distracting, I can never concentrate

<comment><USER56> "even directors sit amongst the staff"

At least they are eating their own dogfood. I have had several occasions where I was belittled when I complained about noise and lack of daylight by our managers who have private offices with windows.

<comment><USER57> They have no idea (or have forgotten) what doing Dev work is like. Their jobs are basically distraction, so to them there's no problem.

<comment><USER58> Its a social hierarchy thing; its baked into the cake of the architecture of the office.

Something like: We don't care about the message it sends that "concentration workers" are prevented from working by the very architecture of the office yet we support "distraction workers". I guess "concentration workers" are a lower caste at that company and they find it amusing to enforce that value judgement.

It is exactly like making certain races sit in the back of the bus. No matter how many times you claim it doesn't matter or everyone does it and its really trendy, the people subjected to it none the less understand exactly what message it is sending and are insulted. The point of open offices is literally insulting knowledge workers and not caring that they know their noses are being rubbed in it. Sort of an adult version of revenge of the nerds pranks and bullying.

<comment><USER45> Bingo.

The first time I got moved from an office to an open plan it felt like exactly what it was: a severe demotion. I was being told that I didn't rate an office or even a cube and the ability to concentrate without being interrupted like a low level clerical worker.

</comment></comment></comment></comment></comment><comment><USER59> When I worked in academia (working for a high throughout computing research group at a large state university) we all had our own offices. I don't know if individual offices are all that common any more due to space issues at universities, but I think they're almost all shared offices or cubes at worst. I've never seen an open office plan at a University.

I work in healthcare now and share a "large" office with 3 other developers. It feels tight at times, but I still prefer it to the hot-seat style open office that was our other choice.

<comment><USER60> My only experience with an open floor plan was in academia :-) ... terrible thing, I suffered a lot and made other people suffer as well, since I'm a loud typist ... I have never understood how some people think open floor plans are a good idea for getting work done.

</comment></comment><comment><USER61> Epic (the EMR vendor) has all employees in an office of at most two people, with one per office being the goal.

<comment><USER62> And the goal is practically reached. Almost every office without a window has one person unless otherwise requested.

</comment></comment><comment><USER63> I worked for the MITRE Corporation [https://www.mitre.org](https://www.mitre.org) for many years, and can confirm they use offices. There are some open floor plan labs, but almost all employees have an office, usually shared with one other person.

</comment><comment><USER64> At Netapp in Sunnyvale everyone has 6ft by 8ft cubicles, with full sized walls (66" high). Some people have combined cubicles which are 6ft by 12ft.

</comment><comment><USER65> Never understood the rationale behind open floor offices. I currently work in a cubicle set up, and people set up war rooms anytime they want close collaboration. Open offices seem to take this exceptional case and make it the norm.

At the same time open floor offices cause a lot of trouble to people in non- exception situations.

<comment><USER66> Follow the money. It's cheaper to build, easy to shuffle, and people will put up with it. I know I do.

<comment><USER67> Cheaper in the short term. If your engineers productivity is constantly tanking because of noise and interruptions it will mean lots of wasted money.

But you can't factor that in a spreadsheet, right?

<comment><USER65> I wonder how many of these problems happen because of outdated management practices since the days of serfdom that treat people as two hands and with hours in a day whom they have to whip enough to pick as much cotton as they can.

So many companies are full of upper management who think as engineering output the way one would run a chair manufacturing firm. Too many people think everything there is in a chair has been made, and the only scope left now is a little innovation here and there. All they have to do is get people to saw, hammer and glue as quickly as they can.

</comment></comment></comment></comment><comment><USER68> Every semiconductor co I've ever worked for, across 30 years, provided cubicles or offices for their employees. This includes both Fortune 500 firms and scrappy 8-person remote offices.

</comment><comment><USER69> Any companies whose business model is security may want to avoid open spaces. Among those I worked with, like some chip makers (gemalto, safran, etc), space agencies (the CNES comes to mind) or banks (labanquepostale/banque populaire have a few old school offices, bank of luxembourg has lots open plan though).

I don't think founders think the geeks wellbeing is ever a criteria to choose a floor plan. Money, space and ability to check on your team mates are the first points.

<comment><USER70> I know from experience that a few banks have open office spaces with hot desks. (Clearly not for all employees, but part of their tech staff works like that)

<comment><USER69> Yes, I didn't say "all", I said "some" that I visited.

</comment></comment></comment><comment><USER71> Where I have found open floor to be fine is small companies of 5-15 people, as long as there are quite corners to retreat to. There are some collaboration advantages to open plan, and I feel that for some (small) size, these can outweigh the distraction and blender-brain effect.

I always wonder why people don't split the difference, chop up the big company office into 5-10 person mini open plan offices.

<comment><USER45> I've always thought that the idea of a "team room" with mini cubicles around a central whiteboard and gathering space would be a good compromise. People could do heads down in cubes, the team as a whole could close their door at crunch time, but people could meet, collaborate and brainstorm when they needed to.

</comment></comment><comment><USER72> Cisco Norway (where I work) doesn't have open floor plans. Cisco San Jose (the HQ) is a different story though.

Also, I doubt that Basecamp (formerly named 37signals) has open floor plans.

<comment><USER73> They do have open floor plans, but also five "team rooms": [https://basecamp.com/about/office](https://basecamp.com/about/office)

<comment><USER74> And they also treat that open plan "like a library." Vastly different than the frat house open plans of most companies.

</comment></comment></comment><comment><USER75> FastMail has 5 in a single office, because they chose to cluster there.

The standard room is 3 people in 6x6m space, which is actually way too much for just our desks, but we have collaboration tables in the middle of each room where we can put laptops or paperwork when discussing things - plus tons of whiteboard space.

</comment><comment><USER76> IBM Research. Each researcher has his own office.

</comment><comment><USER77> I've told people that I'll knock $20,000 off of my pay for an office with a door that closes. Everyone treats it like a joke.

<comment><USER78> Then when your productivity shoots through the roof, you can ask for a $20,000 raise. :P

</comment></comment><comment><USER79> i work from home when i need to concentrate and go to the office occasionally. it's prerty selfish really as the entire team can't do that but whatever. it works for me.

</comment><comment><USER80> why not just find remote work positions and set your own environment?

<comment><USER69> I mostly remote work and love it.

But it's not for everybody.

It involves:

\- being able to motivate yourself;

\- being disciplined;

\- being autonomous;

\- being capable to communicate efficiently asynchronously, with time and space constrains on limiting medium;

\- accepting less social time;

\- juggling private and pro time/space. Which includes your friends and family. My GF still hasn't get used to the fact that when I'm home working, she should consider I'm not home. It makes things harder.

Honestly, you should never, on hiring, accept remote work right away. First, assess the person on site on all those points for a few months, then make a short test of remote, then decide. And don't be afraid to say no.

I know more devs that are not fit for remote that devs that are, despite most of them stating the contrary. Particularly, a lot of my colleagues can quickly work on a non priority topic if left unchecked, just because they don't have the client as a priority, but the tech. You can loose a lot of time to this.

<comment><USER52> I completely agree with your points.

But I believe the real cause is not some personal defficiency but the shitty corporte/factory type of work where politics is a huge part of day to day job, where nobody really wants others to do meaningful, deep work, nobody wants to commit and give clear answers and offer personal responsibility.

That's why devs need to communicate(read interrupt) so much in person with each others; add in "agile" which in 99% of the cases means nobody really knows or is imaginative enough to know how things should progress, what the requirements are, what resources should be available before the project starts.

<comment><USER69> I wish most work were interesting, meaningful and full feeling. That we could be proud of it. That it was well done. Or even useful.

But the reality is it's not.

We have a lot of shitty things to do, and bosses are part of the machine to make you do those things. Remote bosses have less grip on you.

And I'm lucky enough to like my job. I feel like I have 10x more interesting things to do in my day to day activity that the average Joe. But a lot - a lot of a lot - of people don't.

</comment></comment></comment></comment><comment> a-dub In the '90s I worked for an audio/video compression company. We started out in a ramshackle open plan office. Tables thrown against walls, duct tape covering cords, computers stacked on bakers racks. Then some of our products really started moving, most video cards came with our MPEG player, the internet business was taking off and we had some money.

Everybody was excited as we could finally afford cubes.

</comment><comment><USER81> Red Hat's westford office has proper cubicles.

<comment><USER20> Proper modern cubicles, which are sort of a hybrid between more traditional cubicles (i.e. ones with about 5 ft. high walls with about a 3 ft. opening) and an open office plan. So short walls on mostly 3 sides. It definitely gives you better isolation than a full open office plan but, for better or worse, it's not the clear delineation of Dilbert-style cubicles. (I guess it says something that cubicles like this are now something that people miss.)

</comment></comment><comment> e-_pusher Microsoft is slowly switching to open floor plans, but for now a lot of folks have their own offices, or are doubling up at most.

<comment><USER82> SVC is being redone in open floor plan. Those in Redmond being converted often have PMs and Engineers doubling up in the same office - two total separate use cases. Some roles mitigate this with remote work.

<comment><USER3> The Studio buildings at MS were open plan when we moved in. Pods of six people sat in a kind giant cubical corraled by high walls, with these "six-packs" strung down the length of the building's wing. Managers and the privileged few received offices.

When space got tight, they removed most of the interior partitioning and furniture in the six-packs and crammed more people in. The most I ever saw was ten people stuffed into a six-pack in the building's interior (no windows, ugh), and let's just say that the ventilation was not up to the task of servicing ten bodies and many computers and game consoles. Towards the end of a crunch-time it got pretty ripe.

Facilities never budgets enough power. I think the planners assume "Excel" workers with a desktop computer and a phone, and ("yeah, yeah, okay") grudgingly double that number for engineers, while the actual engineers have a black market going in sufficient power strips to run all the hardware they need. Facilities ran additional power several times while I was working there, and this was just a _software_ group . . .

<comment><USER83> Each new major generation of NVIDIA GPU was accompanied by an upgrade to the power transformer to the building that the software teams sat in, because it turned out during bringup that the building was already exceeding the capacity of the transformer.

</comment></comment></comment></comment><comment><USER84> My opinion: open floor plan is acceptable up to a certain room size (100/150m2), provided that the people inside do the same job (mixing devs and salesman is a sin), that the room is not too crammed (6-10m2 per person being the sweet spot) and that there're other meeting/recreational areas.

</comment><comment><USER85> I work for Masergy. We're a cube farm. I love it.

Give me a conservative cube farm over a hipster open office any day.

</comment><comment><USER86> Not a "tech company" in the traditional sense, but everyone had an office (shared with one, maybe two, other people) when I was at a university lab. It was great because those really facilitated conversations, both work-related and otherwise.

I spent two years in a "tech company" after that, which had a cubicle setup, and I totally hated it.

I'm back in academia now with my own office, which is pretty sweet. "Non- office" setups are probably a dealbreaker for me at this point.

</comment><comment><USER87> Here at Kensho we try to accommodate everyone's preferences. We've got single offices, 2-3 person offices, and open floor areas for whose who prefer that.

<comment><USER88> If you weren't located at Ramat HaHayal that could almost become relevant.

<comment><USER87> We're in Cambridge MA, NYC and DC. Not sure where you got Israel from!

<comment><USER88> I'm sorry. I've got you confused with Kenshoo (two Os).

</comment></comment></comment></comment><comment><USER89> Our office is technically open plan. We have a about 3/4 of a floor (7500sqft). The 1/4 is still empty but my team are based in the section with the "fake" wall that separates the two. It is only us in this section so it kind of acts as it's own office. We still get distracted but it's much better than being in the thick of it.

</comment><comment><USER90> I'm guessing it is a combination of cost and constant team growth. Liquidity is a scarce resource for startups and investing in a larger office than necessary for the time being requires too much capital.

At our startup, Delibr, we try to combine these conditions with personal preferences. We are 6 people and 3 of us have our own rooms.

</comment><comment><USER91> SAS at the Cary, NC headquarters does not use open floor plans. I don't know about other office locations though. Pretty much everyone gets their own office with a door. Only time I've seen people without their own space was interns in their own cubicle or contractors in a shared office.

</comment><comment><USER92> Not a 'tech company' per se, but at SEI / CERT research we had our own offices.

</comment><comment><USER93> Have there been any studies on what kind of office floor plans are actually optimal for work?

<comment><USER94> > Have there been any studies on what kind of office floor plans are actually > optimal for work?

It's hard - every study of individuals shows they are significantly less productive in an open office environment.

But what second order effects are there?

You might be less productive individually but it might encourage team work and make the team as a whole more effective.

<comment><USER95> So where does all that supposed extra productivity come from? How does something get done, without any individual having done it?

<comment><USER58> Distraction workers like managers measure productivity in issues handled and amount of talking. By definition they don't do things, things don't get done. This is maximized in an open office.

Knowledge workers like devs (mostly) measure productivity by things getting done. Usually things getting done involves one individual passing unit tests and committing the corresponding working code, not turning every minor issue into a massive teambuilding exercise of endless talking and no doing. This kind of productivity is minimized in an open office.

Its a classic talk about it vs do something about it argument. Both extremes are pretty bad, unfortunately at this moment in the industry we're at one extreme swing of the pendulum.

</comment></comment></comment></comment><comment><USER96> This is partly driven by costs. Where rents per square foot are less, more companies have opted to have offices.

Just like how in Mountain View some Googlers live in the parking lot. It's not cause they think parking lots are hip, space is expensive.

<comment><USER45> But the cost "savings", even in high rent areas like San Francisco, are eaten up by a significant loss of productivity.

In a high rent market like SF, a programmer's salary plus benefits and employer taxes (loaded labor) is about $200K. Open plans have an anywhere from 25% to 50% productivity hit from increased distractions and sick time (sorry, I can't look up the studies right now.) So while you might save $30K/year/dev going from offices to open plan in an expensive market, you will lose $50K/year/dev in productivity. Since those come from different budget buckets, and management never really sees the productivity hit, management thinks they've saved money and convinced people that open plan is "hip", "open" and "collaborative", when in reality most people are unproductive, stressed, unhappy and now despise their noisy, smelly and messy coworkers.

</comment></comment><comment><USER97> Just find some plywood and build yourself a nice cubicle :)

<comment><USER98> Cubicles are far worse than open plan IMHO

<comment><USER45> Nope, IMSHO. I've worked in everything from a solo office to benching in an open plan.

Open plan anything makes me nostalgic for the smallest cubicle I ever had (4ft x 5ft). Give me walls, even if they are short.

</comment></comment></comment><comment><USER99> It doesn't help you, but I've never worked in non-open workspaces with desks shoulder to shoulder and head to head in rows.

I legitimately don't know how it is.

</comment><comment><USER100> Look for older (relative to tech) companies.

My current employer was founded in the 80s and still uses cubicles.

</comment><comment><USER101> Microsoft, before they started adopting open plans. I had my own office and I liked it a lot.

</comment><comment><USER102> This does not answer your question, but I concur, I need my office to be private.

</comment><comment><USER103> I'm currently working in a small open plan with 6 other people, but the company is moving in June and I'll be in the big open space with 40 people. At least it should only be developpers, so we won't have sales people shouting on the phone.

<comment><USER45> My condolences.

</comment></comment><comment><USER104> National Instruments

</comment><comment><USER105> Is this thread to identify all companies that are still having sane offices in order to get "new wave" managers there to destroy them from inside as well? ;-)

</comment><comment><USER106> At PARC everyone has their own office.

</comment><comment><USER107> Microsoft

</comment><comment><USER108> One thing that also matters, that people tend to neglect, is ceiling height. In general when you need to do focused concentrated work, it's best to work in a room with a low ceiling, the lower the better. Ideally it's a ceiling you could almost touch.

If you need to do more creative thinking, it is better to have a high ceiling, the higher the better (think cathedrals), though there must be a ceiling at some point.

<comment><USER33> Citation needed.

<comment><USER109> Here is an example article[0] and a research study from Oxford[1] which reinforce the claim.

[0] [https://www.fastcodesign.com/3043041/why-our-brains-love- hig...](https://www.fastcodesign.com/3043041/why-our-brains-love-high- ceilings)

[1] [http://www.jstor.org/stable/10.1086/519146](http://www.jstor.org/stable/10.1086/519146)</comment></comment></comment>


Future of Web Apps (speeches & presentations) - <AUTHOR> http://www.futureofwebapps.com <comment><AUTHOR> I found Tara Hunt's thoughts on fostering online communities quite interesting.

</comment><comment><USER2> dupe

<comment><AUTHOR> I thought it had probably made it up here before... but i had no good way to search, so i thought i'd offer it just in case.

If there was a good discussion last time though, could you link to the original?</comment></comment>


Ask HN: Is there a search engine that allows user blacklisting of domains? - <AUTHOR> There are certain websites with a propensity for spewing garbage that matches nearly everything I search for about a particular topic. I try my best to keep a mental blacklist of these sites, but, well, you can imagine how that goes... <comment><USER2> Seems like this would be easy enough to do by just excluding those sites using the search engine's own syntax (it's usually something like "-site.com" or the like).

You could easily create your own OpenSearch search engine. Very little coding is required to do this, and it's supported by most major browsers.

[https://developer.mozilla.org/en- US/docs/Web/OpenSearch](https://developer.mozilla.org/en- US/docs/Web/OpenSearch)

<comment><USER2> Wow, providing a pointer to a resource that lets you write your own code to do something gets you modded down nowadays?

Alrighty then!

</comment></comment><comment><USER3> You can set it up so that Google can do this. It's a bit involved, but a few tutorials exist if you search for them.</comment>


Why is BIND 10 written in C++ and Python? - <AUTHOR> https://www.isc.org/wordpress/programming-languages-for-bind-10/ <comment><USER2> There's a comment in the post:

"As of right now, it ends up that about 75% of our code is C++ and 17% is Python (link) since it turns out that a lot of BIND 10 is performance- critical."

Which could easily be taken the wrong way. I believe the right way to think about it is "How much _more_ C++ code would there be, if there wasn't that 17% in Python?".

<comment><USER3> Hum, I don't think interpreting this comment as _Python is not adequate for performance critical applications_ is misinterpretation. The author makes it very clear in some other part of the text:

> [Python] has all of the features that we were looking for… except > performance.

Now your interpretation is also valid since they could have written everything in C++ but they didn't.

<comment><USER4> There is a python DNS server running on pypy that seems to get a pretty big speedup over CPython.

Here is the benchmark result: [http://speed.pypy.org/timeline/#/?exe=3,6,1,5&base=2+472...](http://speed.pypy.org/timeline/#/?exe=3,6,1,5&base=2+472&ben=twisted_names&env=1&revs=200&equid=off)

0.002 for pypy VS 0.015 for CPython, which is 6.66 times faster.

So, for the last couple of years they have been wrong - since PyPy has shown pretty good performance in a DNS benchmark, so Python can have pretty good performance ;)

<comment><USER5> As much as I respect and appreciate Pypy, BIND is one of the core foundational pieces of the internet. It needs to be bulletproof and robust. I don't think Pypy itself qualifies as a mainstream enough language for them to build BIND on. This isn't a slight on Pypy, because the core problem is simply that it hasn't been around for long enough and subjected to enough stress to earn entry into the highest of the high tiers of reliable software. That's not a bad thing per se, and it can be fixed, but in the meantime, ISC has to take the situation as it is now, not how it might be in five years.

<comment><USER6> > I don't think Pypy itself qualifies as a mainstream enough language for them > to build BIND on.

Minor pedantry: PyPy is not a language. It's an alternative compiler/runtime for Python.

<comment><USER5> I was echoing the terms used in the post. I thought it was clearer than going into a long comment about how Python is mature, at least in its CPython implementation, but the PyPy implementation is not, and when the blog post said "language" they really meant "implementation" because language is not implementation, yada yada yada.

</comment></comment></comment></comment></comment></comment><comment><USER7> C/C++ and python is a nice combination, and from what I hear, even a best practice when dealing with python optimization. I strongly recollect hearing python developers promoting the idea of first analyze performance, and then rewrite the biggest resource hogs to C code and thus get the best from both worlds. I assume that c++ will have the same usefulness here.

It would be very interesting to see the code paths being run in python vs C. I suspect that the 17% python code is actually is around 80% of all possible code paths, but that the 75% C code is just like 5-15% of possible code paths. A possible way to check that could be by looking at the test suites and see which one is bigger, python tree or the c++ tree.

</comment><comment><USER8> A good overview of BIND 10's architecture: <http://jpmens.net/2012/12/21/completely-different-bind-10/>

It seems that all apart from the performance critical parts are written in Python 3.1

<comment><USER9> Wow! Someone at the ISC has finally learned what Unix means. I've not used Bind for years after being burned by it's security issues back in the 90's. The 'one big monolithic' program was a terrible idea. I had used DJB dns for years, even with its shortcomings in areas, the modular design caused a bug or security issue in one area not to kill the entire system. Hopefully with bind 10 we'll be able to use user separation (or at least enough selinux) to keep each program in its own security 'domain'.

<comment><USER10> BIND 10 is not the Unix way. In BIND 10, the use of separate processes is just an implementation detail. The Unix way is about presenting small programs to the user that can be composed. To the user, BIND 10 is actually more monolithic than BIND 9 because it needlessly includes a DHCP server. The Unix way is also about human-editable text files - SQLite zone files and icky JSON config files are the antithesis of that.

I'm not saying the separate-process design of BIND 10 is bad (to the contrary it's good for security), but using multiple processes internally is only Unix-y in a superficial way.

</comment></comment></comment><comment><USER11> I think it's interesting that they did consider C and then decided it was too much of a risk. There's a constant theme of 'why use C++? C is faster and doesn't suck as much!' especially due to Linus' statements on the language, but often C is a technical risk as there's so much more that can go wrong. I'm not saying C++ is a better language than C, but it's definitely different and given the language is structured to be less of a headache I'm surprised it's often shot down over C anyway.

<comment><USER12> It's a tangent, but: has Linus ever given a presentation that involved actually discussing code? Perhaps code projected on a screen, even part of a slideshow?

It's odd that he's such an accomplished engineer but every presentation I've seen him give involves saying outrageous things while starry-eyed geeks stare at him adoringly. If it weren't for the fact that he's arguing from a position of (very great) authority, he would persuade very few people of anything.

<comment><USER13> Ah, but he has earned this position of authority by actually delivering. He did not get that position of authority randomly, nor by an act of nepotism nor by making promises during an election.

First, by delivering working code that ended by running the majority of phones and smart devices out there. Also, by revolutionizing source code control. No, he didn't invent (almost) any of the concepts behind git, and by now the majority of the code was not written by Linus. However, he was able to strike a balance between features, usability, speed and working model that DID revolutionize version control. Monotone pioneered a lot, but was too slow and cumbersome; so was Bazaar without pioneering much. BitKeeper had a lot of things going for it, but freedom and price working against it. is more or less on par with git, but it's git that brought the revolution.

Second, by being able to successfully manage more than one huge project with hundreds of contributors, all of whom he can fire at, but which he didn't actually hire (nor can he, if he needs more work).

</comment></comment></comment><comment><USER14> For core services like BIND I don't see any good reason to write them in more than one language (actually anything other than C/C++) and introduce cumbersome dependencies because of that. I wouldn't complain if it was some another DIY name server toy created for whatever reason (how much time it would take..., I can do it!, etc.), but it's software that will become widely deployed in upcoming years (almost) without doubt.

How much more work these 17% done in Python would take to be (re)written in C++? Would it make the code that much worse in terms of quality and managability? Having coherent, one-language codebase, is a good feature on its own too, often improving above mentioned factors.

<comment><USER15> You can look at the source yourself.

I don't understand either, randomly opening parts of both the Python and C++ and it's certainly not complicated and they write the Python in a C style anyway.

I'm not a C++ coder and I only play with Python now and then, but can't say the code impressed me much. It's actually pretty hard to skim the code because it's massively over-commented and there are far too many tiny 2-line private functions that are called by exactly one other 2-line private function that is called by exactly one other 2-line function. Or Holographic code as John D. Cook called it[1].

And the copyright notice in every source file is extremely irritating.

Far too high noise to code ratio for my tastes, so I got bored before I could really 'see' how the Python had helped.

but I can't judge that well as I'm not sure if that's all just a bi-product of using C++ and being an open source project that comes out of committee.

[1] [http://www.johndcook.com/blog/2012/01/09/holographic- source-...](http://www.johndcook.com/blog/2012/01/09/holographic-source-code/)

<comment><USER16> In general, abstracting code out into functions can be useful, even when the new functions is only called once.

That is because functions are a well understood abstraction. And having code separated into functions makes it easier for the reader to deduce the coupling points: two blocks of code after another can have all kinds of weird dependencies, e.g. the first blog might set some local variables that the second one relies on. But functions just have arguments and return-values.

<comment><USER15> Obviously.

I've found in my experience working with other people's code and maintaining large code bases you find that overly nesting functions causes a lot of problems when you're trying to read or debug code.

You often also see problems where the essentially dependant functions start to separate in the code as people accidentally add new functions between them.

The article I linked is good, John describes it well. It's a nightmare to work with when you get triple or quadruple nesting of tiny functions, like in the code of this program. It's totally unnecessary.

<comment><USER16> I guess it also depends a bit on the language you are working in. Some languages have an easier time dealing with functions. In, say Haskell, having quadruple nesting of tiny functions isn't too much of a problem---and if you are pedantic, is the only way to create a function with four arguments.

</comment></comment></comment></comment></comment><comment><USER17> Go seems like it would have been perfect here, but of course, the language wasn't even a glimmer in Robert Griesemer, Rob Pike, and Ken Thompson's collective eye yet.

<comment><USER18> Obviously I can't speak for these guys, but if I were designing it the fact that Go uses a garbage collector is a pretty strong minus. I like GC'd languages for a lot of tasks, but if I care about performance to the extent that they need to with BIND, I'm not going near it.

<comment><USER19> Interestingly, they actually wanted a garbage collector:

"The language had to address most of the problems with C. Ideally this meant something with good string handling, garbage collection, exceptions, and that was object oriented."

<comment><USER18> Yeah, I saw that, and my WTF sensor lit up. DNS isn't trivial, but it seems like a sufficiently well-explored problem that memory lifecycles should be pretty well-understood.

</comment></comment></comment></comment><comment><USER20> Quoting from the article, with my replies:

> _String manipulation in C is a tedious chore._

Use a dynamic strings library, like Postfix for instance, and everything else.

> _C lacks good memory management._

So strange that you went for C++ for most of your code that is not immune of problems from this point of view. I could understand that point if you were opting for a language with GC support. With C you can easily get better (that is, _safer_ ) than C++ native MM just building a reference counting system on top of your C "objects". This is trivial and it is what Redis, Tcl, C-Python, and many others are doing.

With Redis memory leaks or memory management never was a big issue.

> _Error handling is optional and cumbersome._

Exceptions mostly suck, and in system software the only sane way to deal with errors is C-alike IMHO, that is, check the return value / error returned by every function and act accordingly.

> _Encapsulation and other object-oriented features must be emulated._

This is not an objective point since many thing that this features are actually a problem.

Weak points IMHO, and C++ and Python with the minority of Python looks like a design error.

<comment><USER21> So I used to agree with you, but I've done extensive performance critical C development at Facebook (memcached, a new thing we are about to talk about) and I have also done extensive performance critical c++11 development (our layer 7 load balancer for http) and I'd have to say that c++11 is the far superior option if you really, truly understand what the compiler is doing to your code (a huge caveat).

Unique_ptrs are a total game changer, and the ability to use closures and lambdas when you want to set a callback function instead of a function pointer with a context pointer you have to cast and decode is absolutely huge for readability. _maybe_ we aren't getting every last bit of performance out of it that we could with C, but it works at our pretty ridiculous scale, so I think C might have been a premature optimization for us.

<comment><USER22> First you are saying c++11 is the far superior option (with that one caveat) and in the last sentence you imply that C would still be faster. Can you clarify? I'll add my opinion too: I think all the readability you can get out of c++, will be wasted in layers upon layers of object oriented design and C compiles much faster, so there is that.

<comment><USER21> C++11 is the superior option because it is easier to write correct code with it, plain and simple. And we aren't talking about orders of magnitude difference in throughput or latency, we're talking about a slight increase in CPU idle.

And layers upon layers of object oriented crap is also a problem in C (I've seen it). At the end of the day I've just been burned more by the complexities of building large things in C (particularly when people do reference counting in C) than I have been by the complexity of c++ in general.

</comment></comment></comment></comment><comment><USER23> I'm finding that Cython[1] can be a very convenient way to speed up the critical parts of your Python. Anyone who considers porting parts of their app to C++ should give it a look.

[1] <http://www.cython.org>

</comment><comment><USER24> Mirror: [http://www.isc.org.nyud.net/wordpress/programming- languages-...](http://www.isc.org.nyud.net/wordpress/programming-languages- for-bind-10/)

</comment><comment><USER25> Did they consider C with a pool allocator library like talloc? It's a good fit for servers (cf. Samba using talloc, and Apache which uses another pool allocator).

</comment><comment><USER26> Nice to see more projects moving into more expressive and safer languages.

<comment><USER27> I'm not sure that I'd call dynamic languages like Python safer, it depends on context. Compared to C/C++ you lose static typechecking but gain a safer memory model.

<comment><USER26> Anything is better than C.

<comment><USER16> You haven't used PHP much? Or MUMPS?

<comment><USER26> PHP is not a compiled language for systems programming.

As for MUMPS I know it is something used only in US it seems.

<comment><USER16> Oh, I wasn't aware that you only talked about those. MUMPS is also not for systems programming, as far as I know.

To nitpick a bit, compiled or not is more a property of the implementation than of the language itself. Of course, some languages are more commonly compiled than others. But, don't Facebook have a PHP compiler?

<comment><USER26> > But, don't Facebook have a PHP compiler?

Yes, but I don't see PHP as a possible systems programming language, even with a compiled implementation.

Uhm, dreams of device drivers written in PHP...

</comment></comment></comment></comment></comment></comment></comment><comment><USER28> > "C lacks good memory management"

C lets you manage memory without possibly inefficient or even broken magical black box automated processes or garbage collectors. Maybe what the author meant to say was "C lacks easy memory management."

<comment><USER29> Funny you mention "black box automated process" because, what do you think malloc is?

There are two ways of allocating memory directly from the kernel (IIRC), brk and mmap.

There's some management malloc does, and if it's good or not depends on you application.

For example, size, number and behaviour of your allocations. Depending on your situation you may want to do your own memory management.

<comment><USER30> When I worked on embedded systems, we didn't use malloc() at all, just some heap functions. Even after that, there have been times where I worked on projects where there was a single malloc() and that was turned into a memory heap.

However, a call to malloc() is pretty straightforward, you expect it to return a pointer to the allotted memory, or not. Using a GC or the boots libraries is not quite as straightforward, and the black box is a lot bigger.

</comment></comment></comment><comment><USER31> Obj-C anyone? Seems to meet all their requirements - OO, exception-handling, memory management via either ref counting or GC, and it's a C-superset so C-based optimizations would be easy. Maybe the run-time is to large and/or complicated? Although how it could be more complicated than a C++ runtime I don't know. Would Apple being the primary driving force behind it's development be a problem?

</comment><comment><USER32> Sad. They didn't do their homework. They basically had the exact same requirements of the commercial video game industry which uses C/C++ and Lua to solve this problem. Lua had already long asserted its dominance by 2006 so it wasn't a secret. And they should have done a lot better than only 17% of the code in Python.

</comment><comment><USER33> based on the given criteria, wondering why Java wasn't considered.

<comment><USER34> Probably because of memory usage and garbage collection and the fact that java needs to be installed on most systems whereas C++ needs no dependencies and python comes preinstalled on the usual linux server (probably not python3 but i assume it will be some years before bind10 sees adoption for such critical infrastructure). Also he mentions specialized data structures and memory management.

Atleast i wouldn't sleep well if i know that the heart of the internet was running Java :P

<comment><USER35> _Probably because of memory usage and garbage collection and the fact that java needs to be installed on most systems whereas C++ needs no dependencies_

Well, GCC (as in the compiler collection) has had a ahead-of-time compiler for ages:

<http://gcc.gnu.org/java/>

There is also work in the LLVM camp on AOT Java compilation:

<http://vmkit.llvm.org/>

 _Atleast i wouldn't sleep well if i know that the heart of the internet was running Java :P_

Well lucky you, only many other vital body parts are running on the JVM via Java, JRuby, and increasingly Scala ;).

<comment><USER36> Those implementations have quite weak garbage collection implementations (boehm conservative, but I'm not sure), which would just kill the performance. Hotspot JVM has a very sofisticated Incremental Generational garbage collector, which does have a _very_ good performance. I'm pretty sure they had their reasons for not using Java (I actually do have mine too), but, garbage collection is not one of those.

<comment><USER35> Indeed. I was arguing against the 'you need the JVM as a dependency'. But then Go is all the hype these days, and people also use Go for network applications, which also has a weak GC ;).

<comment><USER36> Go does generate a _LOT_ less garbage then Java, you can control the layout of your structures. That why its gc has less impact on performance then the JVM´s one.

</comment></comment></comment></comment></comment></comment><comment><USER37> Here's what I take from this: "C++ is by no means an easy language to work with, so the idea is that we will avoid its complexity when possible."

<comment><USER38> Avoiding its complexity does not mean avoiding it. E.g. you could avoid template metaprogramming due to its complexity whilst keeping to simpler areas of the language.

C++ is a large, multi-paradigm language. It gives you choices and one is free to abuse those choices. But having more options gives you more power to express.

I think with modern C++ style, boost and C++11 its "difficult-to-work-with" reputation is massively overstated. It is possible to write succinct code with good design and get massive performance benefits.

</comment></comment><comment><USER39> I hope that OpenBSD team will fork it (BIND 9).

<comment><USER40> I think the plan is to drop it entirely and replace it with nsd.

</comment></comment><comment><USER41> This doesn't look good for Python:

"Whenever possible, we use Python"

"When necessary, we use C++"

"As of right now, it ends up that about 75% of our code is C++ and 17% is Python (link) since it turns out that a lot of BIND 10 is performance- critical."

<comment><USER12> I can see what you're saying but it's worth contemplating what percentage of the total codebase that Python code would represent if it were replaced by C++ code.

<comment><USER38> I often convert python code to C++ and you'd be surprised how often the difference in loc is not that much. Certainly no hassle to do so. Not that I'm suggesting that one always should.

Several boost libraries are inspired by python and C++11 features all help to write C++ code that is surprisingly similar to python, with a bit of extra type sepcification. If you think otherwise I'd suggest you're probably thinking of the C++ of the 90s - a more C with classes, and not modern C++.

I often find it useful to develop and prototype in python and convert to C++. Most often I'm doing this because my python simulations can take days and the C++ versions hours. Often I find it is not just the performance critical areas, but it is easy enough just to wholesale convert the lot.

<comment><USER35> _I often convert python code to C++ and you'd be surprised how often the difference in loc is not that much._

I agree, especially with C++11 and (besides Boost) Qt. It's often the header/code separation that makes things a bit tedious, having to keep function and method signatures in-sync. Of course, if you are template-land that is not that much of a problem.

</comment></comment></comment></comment><comment><USER42> Why isn't it written in Node.js?

<comment><USER43> After careful consideration, as the article mentions, ISC decided a combination of C++ and Python as being more appropriate to the goals of the project. That being safety, stability, established familiarity, speed and of course a level of guaranteed future-proof platform availability.

Read: "This is one of the cornerstones of the internet that we didn't want to piss away on novelty".

That sounded rude, and I'm sorry for that, but I don't know how else to make that point cogent.

<comment><USER44> I think it was a joke.</comment></comment></comment>


Pownce vs Digg: Who Will Kevin Rose Back? - <AUTHOR> http://www.techcrunch.com/2007/09/24/pownce-vs-digg-who-will-kevin-rose-back/ <comment><USER2> I felt like Kevin's role into Pownce was a little superficial. Understanding that he has no programming skills, and Leah developed the concept herself, it is almost like Kevin was asked to step in as a poster child for Pownce so that Leah could get some serious users.

Stepping away from all of that, I believe that Kevin is becoming more and more consumed by his Digg baby, and doesn't have the time that he used to have to back all these projects that he "diggs". I think in the next few months, the community will see where Kevin's heart is and we will soon understand if Kevin still has his eye's set on Pownce.

<comment><USER3> the digg-pownce-rev3 incest:

leah culver and daniel burka are going out

daniel burka designs for digg and rev3

kevin rose admitted he advises and "brainstorms"

<comment><USER4> Like OMG, didn't you know Leah Culver is dating Brad Fitzpatrick?? ;]

<comment><USER3> well either wag or uncov failed me :(

</comment></comment></comment></comment><comment><USER5> Kevin Rose has no programming skills? Is this a documented fact? How did he build digg then?

<comment><USER3> i see you have not heard of the fabled digg origin story:

kevin rose is a college drop out, he was a CS major. he does tech stuff and then landed on a tv channel that focuses on web and tech stuff.

he contacted slashdot asking them to update their site based on this idea of letting users vote up or down a story. slashdot told him to go away.

kevin rose hired a programmer online for $600 to get his idea started anyways. after the site's made he pimps it on tv and all his nerd friends.

16 year old "hax0r" kids went to the site in droves. most adblock the ads. here we are today.</comment></comment>


Mitigating DoS Attacks with Nginx - <AUTHOR> https://www.nginx.com/blog/mitigating-ddos-attacks-with-nginx-and-nginx-plus/ <comment><USER3> I love nginx. But most of these are mitigation for DoS only targeting the web server, not DDoS. They're explaining how to throttle a single IP. The whole point of DDoS is to distribute the attack to bypass mechanisms that throttle single IP's (plus to amplify).

Also the DDoS attacks that we've been hit with actually target our uplinks by saturating them with traffic, not our services. We have a 1 Gbps port and the last DDoS we were hit with was over 20 Gbps, which is a relatively small one. The mitigation we used was to have our hosting facility get their upstream provider to route the traffic through a layer 7 DDoS mitigation filter provided by an external company. It worked wonderfully.

These are cool features, but when your link is saturated it doesn't matter what a daemon listening on a port does.

<comment><USER4> And once IPV6 gets up to steam, welcome to a world of people with millions of "addresses" to attack from. One advantage of IPV4 is that it was accidentally pretty granular.

That'll be a while, of course, but already we see attackers with access to a tremendous number of unique IP addresses in the IPV4 space.. they'll have many orders of magnitude more soon.

<comment><USER5> _> welcome to a world of people with millions of "addresses"_

... in the same /64 range for the most part, so as easy to block/filter/limit as one IPv4 address.

You risk inconveniencing people who are assigned just a few addresses because you potentially end up blocking many of them due to the actions of a few on the same subnet, but you can't be held responsible for hosts/ISPs doing IPv6 wrong.

<comment><USER6> _You risk inconveniencing people who are assigned just a few addresses because you potentially end up blocking many of them due to the actions of a few on the same subnet, but you can 't be held responsible for hosts/ISPs doing IPv6 wrong._

Not to mention that some ISPs do carrier-grade NAT specifically due to the limitations of IPv4, so blocking a single IP(v4) might affect multiple people as well.

</comment></comment></comment></comment><comment><USER7> Here is a sweet trick for dropping traffic with NGINX. When I mean drop, I mean, don't send a response, literally terminate the connection.

        location = / {
            if ($http_user_agent ~* foo|bar) {
                # return non-standard (NGINX only) 444 code
                # closes the connection without sending a response header
                return 444;
            }
        }

<comment><USER8> If I'm not mistaken, the above implies accepting a TCP connection (3-way handshake) and a request from the attacker; then you look up the contents of the user-agent header and decide to stop replying based on its contents.

This will get you nothing in a typical DDoS scenario, but thanks for sharing as it may come handy for other situations.

<comment><USER9> Filtering like that also has a rather big performance impact on the nginx side and make things worse under moderate, but not DDoS-y, traffic conditions.

</comment></comment></comment><comment><USER10> You can't solve a traditional DDOS attack at the destination. No matter what you do with the incoming flood, the fact is, your bandwidth is full of the attack requests, leaving no room for legitimate traffic. Do what you like to the attack requests, but the pipe is still full.

To mitigate a DDOS, you need to go upstream to your network providers and filter out the traffic before it reaches you.

<comment><USER6> True, but not all DDoS involve bandwidth saturation, since if the site has a decent pipe, those are harder to achieve. Resource depletion based on forcing the server to perform heavy tasks is common.

</comment></comment><comment><USER7> Nginx is great, and I absolutely love it. However, if you're under a true DDoS attack, the box is going to be completely bogged down at the kernel level way before traffic is even close to being accepted and processed by NGINX. So this post is not very useful against a decent magnitude attack.

</comment><comment><USER11> For all but the most basic attack, you really want a script putting these IP's into iptables. Using the application itself to block them still requires the connection setup/teardown resources to be used, as well as the application itself.

<comment><USER12> I can see how doing it lower level would be more efficient. Are there any scripts anyone could recommend as a starting point?

<comment><USER13> fail2ban can watch the nginx logs for throttling and/or blocking messages and add iptables rules for you.

I haven't read this all the way through, but on a cursory glance it looks reasonable:

[https://easyengine.io/tutorials/nginx/fail2ban/](https://easyengine.io/tutorials/nginx/fail2ban/)

<comment><USER14> Urgh logwatching actively pains me these days. So much waste string parsing what was originally binary data anyway.

I'm starting to think that we need some agreement where instead of logs, we just get apps to emit a stream of protocol buffers and a format string for the messages and data.

Which does make me wonder if you couldn't LD_PRELOAD something which replaced fprintf and the like...

<comment><USER15> Streams of plain text are what UNIX was built on. If you want binary APIs, look outside the *nix family.

<comment><USER16> Or modernize the applications. Throw out the ad-hoc formats and parsers, replace them with machine-readable equivalents.

For example, systemd finally provides a logging system that allows structured logging with key/value fields.

</comment></comment></comment></comment></comment></comment><comment><USER17> If someone wants to take you down they'll just bombard you with traffic, and this won't help you there. Having been the victim of several DDoS attacks over the years, almost all of them haven't been on the application layer.

<comment><USER18> Cloudflare, for example, is good at preventing non-application-layer DDOS attacks but for application-layer they can't help much.

This blog post is a good starting point for the kinds of strategies you need to fill that gap in protection.

<comment><USER19> We tried it, setup was easy, but our response time for dynamic content increased by 150 millis so it didn't work for us. It's worth noting that their model is different from CDN - they proxy all of your traffic through their own servers.

<comment><USER20> That's not atypical for a CDS these days; fastly and cloudfront can work the same way, e.g. [https://aws.amazon.com/cloudfront/dynamic- content/](https://aws.amazon.com/cloudfront/dynamic-content/). How else do you expect them to cache and serve your dynamic content?

<comment><USER21> I don't recomend it, but you could use different domains for static vs dynamic.

<comment><USER22> Some organisation do just that. But having your entire site behind CDN does have additional benefits besides mitigating DDoS attacks. Such as allowing you to handle other kinds of service outages more effectively (eg busy pages). They can offer you analytics, allow you to separate different traffic under the same domain name (sometimes handy for SEO), etc. Some CDN providers also do some cool stuff like enable IPv6 on your site even if your origin servers are only running IPv4 - but that's more a niche time saving feature than some "must have" deal breaker.

<comment><USER19> I like analytics if the price is less than 50ms per request. We use GA and statcounter for analytics anyways. Charts that show how much static traffic you saved are nice, but with bandwidth close to free, it's not a big deal. CDN analytics need to be better than GA at which point I will not only trade off latency but convert to premium all the way.

<comment><USER22> > _I like analytics if the price is less than 50ms per request. We use GA and > statcounter for analytics anyways._

GA would cost you more than 50ms too. More so than a CDN controlled analytics. But obviously that cost with CDN is an upfront latency rather than the more hidden cost with background loading of GA. So arguably GA's cost is less "bad" than the CDN's cost.

Personally speaking, I prefer the CDN approach as it produces web pages with a lower browser footprint which I think does improve the user experience (though I'm not implying that GA give a bad user experience!).

GA does give a greater breadth of information than CDN analytics though. Often that's the real deal breaker since analytics is usually driven by project managers / clients rather than by the developers.

> _Charts that show how much static traffic you saved are nice, but with > bandwidth close to free, it 's not a big deal._

Oh it's definitely a big deal if you serve high traffic websites ;) I've spent hours working against those kind of reports on projects that were seeing 100k concurrent users. I will say that these graphs aren't so much about judging what _bandwidth_ can be saved but more about judging what _requests can be offloaded_. The idea being the fewer calls to your origin servers you need to make, the more resources you have available in your farm for generating the dynamic content (dynamic content you cannot cache!). This also has the potential to save you money in server costs (depending on how they're licenced) as well as improving site performance at peak times.

> _CDN analytics need to be better than GA at which point I will not only > trade off latency but convert to premium all the way._

Indeed. GA will likely always be better from an account management perspective. But as a devops engineer, CDN analytics fulfils my needs. The great thing is that we have a multitude of options we have available :)

<comment><USER19> Unfortunately, CDN analytics is no alternative to GA so it's either/or kind of choice for us. Hence, full proxy type of CDN means that latency is additive.

<comment><USER22> I wasn't aware the point of our discourse was for me to sell your business additional CDN services ;)

In all seriousness though, it might help to look beyond the very specific set up of your present company when asking about why other people opt for other CDN services. But for what it's worth, I've not experiences the same degree of latency issues with either Cloudflare nor Akamai that you've described. And I _have_ done extensive load tests.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER23> This is really helpful and practical, when an app start getting more popular and people start writing scrapers and things like that sometimes they can mistakenly send an insane amount of requests, so this surely help on this cases since it make more since to solve that on the level of the server not the app itself.

About DDoS I don't think there's any cheap solution for that...

</comment><comment><USER24> I really wish Nginx didn't think it was so important to their business model to hold hostage the health check.

That's a dealbreaker for me at their prices.

<comment><USER25> Take a look at Tengine, from Taobao. It's based on nginx.

<comment><USER26> It is, just like OpenResty [0], but it lags severely behind recently - <USER2> sure why.

Edit: Linked to Tengine in [1].

[0]: [http://openresty.org/](http://openresty.org/)

[1]: [http://tengine.taobao.org/](http://tengine.taobao.org/)

</comment></comment></comment><comment><USER27> All the characteristics of DDoS attacks listed seem trivial to defeat... e.g.: Constantly spoof IP addresses, etc..</comment>


Ask HN: Where do you upload your files? - <AUTHOR>

I've been using min.us to share images. Really cool drag & drop system with no registration. Is there something similar for other files too?<p>I don't mind if these files are deleted in a day/week/month. I basically want something where I can upload bunch of files quickly and give a link to a friend. <comment><USER2> I stopped "uploading" files since I started using Dropbox.</comment>