HNHacker News
TopNewBestAskShowJobs

nbm

1,053 karma · joined December 6, 2010

Make Facebook more reliable by day, learning game development by night.

South African temporarily in the Bay Area 2011-2015, Seattle 2016-.

Formerly tech lead and first employees at startups Yola (2007-2010) and KnowledgeTree (2004-2006).

Contacting/following me:

fb.me/nbm @nxsy on twitter Email: HN username at nxsy dot org

submissionscomments
nbm··on A behind-the-scenes look at Facebook release engineering
Push karma primarily affects how likely the release engineering team will accept any breaking of the standard rules of getting your code into the push. It generally doesn't drop if you are responsive and responsible for any problems your change causes. The only way to restore points is to show respect and consideration for the hard work the release engineering team does.

(I'm not 100% sure, but I think most of the booze and cupcakes come from people who were appreciative of the release engineering team for bringing potential issues to their attention or for being accommodating in terms of hours and in terms of delay to get things fixed.)

Being irresponsible (not supporting your changes) will factor into your performance review, but working exclusively on low-risk features will most likely hurt it way more.

nbm··on A behind-the-scenes look at Facebook release engineering
Ignoring technical ways to work around the thundering herd problem, the slow rollout (employees first for several days, then a subset of servers, then a larger subset) also mitigates the problem.
nbm··on A behind-the-scenes look at Facebook release engineering
This deployment of what's called "www" ("dub-dub-dub") is somewhat monolithic in the sense that it is large, but it is not really an "all-or-nothing" deployment. It is tested internally (for at least 2-3 days) by employees (engineers and non-engineers), and then on a subset of servers, a larger subset, and so on. Performance, error rates, interaction rates, and so forth are compared between the incumbent and new-hotness versions for a reasonably reliable indication of issues throughout the rollout. More on the www push at https://www.facebook.com/video/video.php?v=10100259101684977

Teams that run "services" (such as the one that powers the "typeahead" search bar at the top of Facebook) deploy their services separately, at whatever pace makes sense for them. These are almost never in tight lock-step with anything else, for the usual reasons.

nbm··on I hereby resign
Wow, I've never heard of anyone in South Africa with a non-government job being asked to have their fingerprints taken. Admittedly, my background is mostly tech startups, but even friends who worked at big-ish companies (Didata, CS Holdings, &c.) have never mentioned it.

Credit history is a mostly used as a poor indication that you won't be tempted to sell company or user private information. It might also be an indicator of poor judgement or other bad traits, I guess. I think only one company ever asked this of me, and they were certainly the most backward of those I interviewed at.

Basically, companies are trying to avoid hiring bad people. Whether it's because they've bought into the "it is impossible to fire anyone" story or not, it is costly in terms of time and wasted effort and disruption. And, generalising from an admittedly small sample size, I'd say they're not as good or as introspective about how they hire as the few (admittedly really good) US companies I'm familiar with.

nbm··on Ask HN: Link in the fb jobs referral mail leads to unauthorized page
Send an email to your friend if they are a Facebook employee, or to me (email in HN profile) with your name (or possibly another unique identifier). One of us will forward it to a recruiter to try get it sorted out.
nbm··on "White hat" Facebook hacker gets 8 months in jail
I don't know the specific amount of data (as a percentage or bytes) accessed, but I think there are two main reasons you might want to know:

If you're wondering whether it affected the privacy of data created by people who use Facebook, the referenced article has a statement that it was not, but it appears this was added after the article was published, so you may have missed it.

If you're wondering whether it might be a small amount that a security researcher might collect to verify their report, from what I understand it was more than that.

nbm··on "White hat" Facebook hacker gets 8 months in jail
In general, the time to fix an identified security hole is dwarfed by the time to investigate a breech.

You have to identify the actions taken by the attacker and correlate events between systems to understand the extent of stolen, destroyed, or modified information, and to ensure that no additional backdoors are left behind.

If there is an indication of malicious intent, you also have to interact with law enforcement, discover the identity of the attacker, provide enough information to get a warrant, and so forth.

In the whitehat report case, it is as simple as fixing the security hole (and identifying how it got there and how to prevent similar cases) and thanking and rewarding the reporter. However, that wasn't the case here - there was no disclosure, no reason to believe that the attacker was benign, and so an investigation needed to be done.

(I work at Facebook, but not in one of the teams involved in this investigation.)

nbm··on Reddit takes a new direction
Facebook does not ban breastfeeding photos in general - https://www.facebook.com/help/?faq=340974655932193#Does-Face...?
nbm··on Why Facebook is never safe
Facebook doesn't sell any data to advertisers. It allows advertisers to display an advert to a group of users based on broad demographic and interest information, without divulging information about the user. In some ways, this is similar to deciding to show a particular advert in "Time" rather than "People" in the more physical world.

I realise some people (possibly including you) say "your data is being sold to advertisers" when they know how it works, but it is surprising how many people say the same thing and don't.

(I work at Facebook.)

nbm··on We are sorry
I realise you might be using Facebook as an example in a theoretical sense (i.e., that Apple believes protecting your location is more important than protecting your contact database), but in case you weren't, Facebook's "find friends" feature does give you an explanation of what is going to happen, asks you to confirm.

Here's the explanation:

"If you enable this feature, all contacts from your device (name, email address, phone number) will be sent to Facebook and be subject to Facebook's Privacy Policy, and your friends' profile photos and other info from Facebook will be added to your iPhone address book. Please make sure your friends are comfortable with any use you make of their information."

nbm··on Pinterest quietly modifying users links to generate affiliate revenue
In Facebook's case, this is to protect the user from potentially giving away information about themselves in their Referer header and from potentially malicious links that we didn't have enough information on at display (or email) time, but which we now have enough information to know it is malicious.

This is explained in more detail at https://www.facebook.com/notes/facebook-security/link-shim-p...

nbm··on Stack Overflow running short on space
Write throughtput/latency on RAID10 remains consistent with previous numbers (latency perhaps milliseconds faster), but read latency and overall-throughput (as opposed to individual requests) will suffer on the mirror with the bad disk.

Recovery will drop read/write performance, depending on how fast you do it, but nowhere near as bad as RAID-5/6.

nbm··on Stack Overflow running short on space
RAID-5 and RAID-6 suffer tremendously in their degraded state - instead of being able to read individual blocks from a single disk, you need to read all the disks (or all by 1 in RAID-6) for any blocks stored on the down drive.
nbm··on More damaging evidence on open plan offices
I've had two bad experiences with open plan offices, two good, and one excellent.

The first bad experience was shortlived - I was temporarily in a large room with half-height desk dividers with people doing sales and support calls. I asked to move.

In the other bad experience, it wasn't sales, but a bunch of reasonably unruly, not young, but childish developers (edit: could have been a culture/value mismatch, the company was a "corporate" supporting a long-lived product, my team coming from start-up environments or preferring them working on a new product). I managed to get my team moved to another location in the building, and a room for three of us to sit in (facing outward). (I stole the window seat.)

The first good experience with open plan was where our group was together, with a small gap between our group and the next, with some head-height dividers.

The second good experience was, I admit, not really open plan. In a long space, we had pods of 8-12 people with full-height glass walls, with frosting up to just above sitting-head-height. This was an interesting environment - we mixed support staff (non-phone support), operations staff, developers, designers, and so forth equally between the pods. (This was at Yola. Before we moved to new offices, we were in rooms in a house holding 5-7 people in each room.)

The best experience has been at Facebook, where I am here. Especially at our new campus in Menlo Park. Basically, open plan broken up with small "lounges" and curtain-closable rooms, with gaps between groups working on different things. Plenty of meeting room space, with tons of 2-4 person unreservable rooms, and whiteboards everywhere.

There are exceptions. Like in the old office, there are a few people who need serious quiet/lack of distractions to work, and they work in their own rooms. Some teams go into "war rooms" when they're near release to facilitate even higher-bandwidth discussions.

This applies to the bulk of the company, including, for example, the CEO, CTO, VP of Engineering, and VP of Product.

Anecdotally, open plan doesn't work at all well when you mix certain job types (sales and engineering, for example), doesn't work as well when you mix people working on different products or without break-out rooms or gaps between groups. It seems like it can be done well, and it probably needs motivated employees (employees already unhappy are likely to respond more aggressively to distraction). Some people just don't work well in the environment, and catering to them is a good idea. Having meeting rooms or collaboration areas located close by, but not distracting to those working, makes people tend to use them to avoid annoying those nearby (have this happen every few days when conversations go over a few minutes, or have more than a few people).

nbm··on /bin/false is not security
Keys probably don't have to become unmanageable at scale - you can try use SSH certificate authentication.

Sign your keys with a CA, and encode the "principals" that the user has (so, be able to log into some machines as themself, some machines as some other user), and a validity period. Revocation wasn't there yet when last I looked at it (mid-last-year), but might be there now.

One benefit is that individual connections don't need to be brokered by an external authentication/authorisation service. However, it is a relatively new feature and there may be rough edges (such as making sure all your clients have a recent enough version of the tools to work with certificates - Lion was the first MacOS X version to have it, for example).

nbm··on Facebook hit git performance issue on large repository
Keep in mind that the talk in question is talking about the web site (and some other stuff) going into production, and as is mentioned in the talk, it is done more than once a week, and the whole shebang can be pushed in some number of minutes (I forget the amount mentioned).

Back-end services have their own release schedules and times, and obviously are made to be highly backward compatible so that they don't need to be done in lock-step with the front-end.

I think you're right about the "diamond dependency" model, but I think the merge-up and merge-down in Vista had more to do with having multiple independent branches in flight at the same time.

nbm··on Facebook hit git performance issue on large repository
Ah, I see. Yes, that might make some of those operations better. Other operations that are common in our workflow might still need to look through the whole super-repo - for example getting a list of all changes (staged or unstaged) in the repo and generating a code review based on that.

(I almost habitually run "git status" whenever I've task switched away from code for even a few seconds to make sure I know exactly what I've done, which would have to look over the whole super-repo as well.)

Thankfully we're a while away from the times based on the synthetic test - it's not something I notice at all, but I probably write less code than most engineers here.

nbm··on Facebook hit git performance issue on large repository
Just a minor clarification - some of the repositories use Subversion (as mentioned in the "Push" tech talk), and some are pure git.
nbm··on Facebook hit git performance issue on large repository
It doesn't live in a single repository. The commenter I was replying to mentioned "Facebook and all its peripheral development" and a number of lines of code. I wanted to give him a little insight into what sort of things all the peripheral development might include, since it isn't obvious.
nbm··on Facebook hit git performance issue on large repository
The example is synthetic, so don't worry too much about the implications.

It is useful to keep in mind that Facebook isn't just the front-end (and isn't just code, also images, configuration, and so forth).

Just talking about open source stuff, Facebook also generates code like Cassandra, Hive (data warehousing application), Phabricator (a code review and lifecycle tool), HipHop for PHP (the translator/compiler, the interpreter, and the virtual machine), FlashCache (a kernel driver), Thrift, Scribe, and so forth.

We also have had to build applications to support our operations, so think about what sort of effort goes into building scalable monitoring, configuration management, automatic remediation, logging infrastructure, and so forth.

I don't know the actual lines of code across it all, and wouldn't mention it if I did, but people often underestimate the scale here.

nbm··on Facebook hit git performance issue on large repository
I'm not sure this would work - if an operation needs you to stat() a file for every file in the repo (for example), whether it is 10k files in 1 repo or 1k files each in 10 repos will probably just as bad?
nbm··on Facebook hit git performance issue on large repository
I wouldn't say that a large repository implies that the code is highly-coupled. There are advantages for keeping certain code together in a single repo. Being able to easily discover users of functions of a library, being able to "transactionally" commit an update to a library (or set of libraries) and the code that uses it, being able to do code review over changes of code in various places, being able to discover if someone else has solved this problem before, and so forth. If you only have your project and its libraries checked out, you don't serendipitously discover things in other projects.

As mentioned in this talk on how Facebook worked on visualizing interdependence between modules to drive down coupling at https://www.facebook.com/note.php?note_id=10150187460703920 , there are at least 10k modules with clear dependency information in a front-end repo, and the situation probably is a lot better now that they have that information-dense representation to work from (I don't work on the PHP/www side of things, I spend most of my time in back-end and operations repos).

nbm··on Facebook hit git performance issue on large repository
Keep in mind that your average repository doesn't only contain code that is compiled and executed (or interpreted), there is also documentation, static assets such as images (that may be processed), configuration, computed files (that may make sense to pre-compute once rather than compute on a hundred people's environments every build), and so forth.

Also, it doesn't only include the current file set - they include files that have been deleted, been split into modular files, been merged, been wholesale rewritten, put into a new hierarchy (some VCS systems handle this better than others).

(I work at Facebook, but not on the team looking into this stuff. I'm a happy user of their systems though. Keep in mind that the 1.3 million file repo is a synthetic test, not reality.)

nbm··on Facebook hit git performance issue on large repository
For that and other info, check out the "Push" Tech Talk given last year by the Facebook release engineering team's leader, Chuck Rossi: https://www.facebook.com/video/video.php?v=10100259101684977
nbm··on Poll: Do you have a Facebook account?
TechCrunch has no idea who you are when you visit it logged into Facebook. The comments box is served by Facebook, and doesn't provide any information to the hosting site.

(I work at Facebook.)

nbm··on Poll: Do you have a Facebook account?
I wasn't much of a Facebook user before joining the company, and using the site more frequently definitely made it obvious that a) I had been missing out on some useful news and b) I was wasting a lot of time on "friends" I didn't really care much about (not only reading time, but being angry that those people were behaving in a way that would lead me to leave in real life). Once the new subscription and friends list stuff was in internal testing, I spent 30ish minutes cleaning things up (including just unfriending people), and now my news feed sucks a lot less. Well, it did before I subscribed to tech journalists. Another cleanup awaits...
nbm··on Poll: Do you have a Facebook account?
I realise this may have been a while ago, but do you remember a particular provision or theme amongst provisions that caused you to do that? When was it?

(I work at Facebook, but I'm mostly just asking for my own interest.)

nbm··on Old Techies Never Die; They Just Can’t Get Hired as an Industry Moves On
https://www.facebook.com/careers/department.php?dept=enginee...

(A Facebook job advert for Kernel Engineers.)

See also: https://github.com/facebook/flashcache/ - a write back persistent block cache for Linux, written by some of the Kernel Engineers at Facebook.

(I work there.)

nbm··on Google is FUBAR
You can read more about how ads work in non-legalese at:

    https://www.facebook.com/about/ads/
In non-legalese, how Facebook uses information it receives on users:

    https://www.facebook.com/about/privacy/your-info#howweuse
The actual data use policy:

    https://www.facebook.com/full_data_use_policy
The path to these last two - click "Privacy" at the bottom of a Facebook page.
nbm··on Reddit: 2012 State of the Servers
In terms of status updates (ie, stories which may mention check-ins or photos or similar, but not Facebook Messages), before Facebook's Timeline launch, there were multiple stores of data depending on age. With Timeline, all the different versions of data over all ages were put back together into a single (logical) store. More about that process at:

    https://www.facebook.com/notes/facebook-engineering/building-timeline-scaling-up-to-hold-your-life-story/10150468255628920
← PreviousPage 8 of 10Next →