LMGTFY
January 20, 2015 8:19 AM   Subscribe

What happens when you type google.com into your browser and press enter? [I]nstead of the usual story, we're going to try to answer this question in as much detail as possible. No skipping out on anything.
posted by Cash4Lead (66 comments total) 34 users marked this as a favorite
 
Step 0.00000000∞: Decide to do it
posted by Potomac Avenue at 8:23 AM on January 20, 2015 [5 favorites]


What happens when you type google.com into your browser and press enter?

Let me google that for you
posted by Fizz at 8:26 AM on January 20, 2015 [2 favorites]


[zombo voice] THIS IS GOOGLE.COM [\zombo voice]
posted by srboisvert at 8:29 AM on January 20, 2015 [8 favorites]


Don't you have to first create the universe?
posted by bondcliff at 8:38 AM on January 20, 2015 [13 favorites]


"Let me google that for you" is now one of those nasty fade in, dim content, overlay, cannot back button out, begware screen dealios. Beware.

The github parsing is kinda interesting; I'm sure coder geeks wonder about the EE stuff, and EE people wonder about the code...and the rest of us will think "do not care; where's the kitty video?"
posted by CrowGoat at 8:38 AM on January 20, 2015 [2 favorites]


... and what about the birth of the turtles?
posted by Brockles at 8:39 AM on January 20, 2015




This is why tech support questions like: "Why can't I get to google?" are so frustrating, because any step along the line there could be broken, so you just kinda check one at a time (starting from the most common ones).
posted by empath at 8:46 AM on January 20, 2015 [5 favorites]


Not to mention all the stuff that's not on your computer that could be broken, like any router or switch along the line, firewalls, etc.
posted by empath at 8:47 AM on January 20, 2015


Whenever I see plain old text documents on github I feel old.
posted by boo_radley at 8:48 AM on January 20, 2015 [1 favorite]


tmi
posted by double bubble at 8:54 AM on January 20, 2015 [4 favorites]


Wow. And I thought we beanplated stuff.
posted by Naberius at 9:02 AM on January 20, 2015 [2 favorites]


This is why tech support questions like: "Why can't I get to google?" are so frustrating, because any step along the line there could be broken

I will first usually ask, "is your HID transport passing the key-down event to the KBDHID.sys driver?"

Phones are quiet today.
posted by sylvanshine at 9:02 AM on January 20, 2015 [25 favorites]


No skipping out on anything

Well, it is a work in progress. It looks a lot better now than when it was linked on Hacker News a few days ago.
posted by smackfu at 9:27 AM on January 20, 2015


And for all the detail, there's still more detail that could be added.

I fucking hate that page lol. Reminds too much of actual work.
posted by Annika Cicada at 9:30 AM on January 20, 2015




First: What is the interview question trying to get at? Is this an industry-specific thing?

Second, this reminded me of this routine that I saw last night.
posted by Navelgazer at 9:49 AM on January 20, 2015


Apparently, the idea is that it helps determine the candidate's core competencies. Like that a web developer will answer differently than a network engineer will answer differently than a Windows developer.

Seems kind of silly, since that should come out pretty easily in an actual interview.
posted by smackfu at 10:14 AM on January 20, 2015


That was weirdly specific then non-specific. A fairly in-depth explanation of ARP (how your computer finds other computers on its local network) followed by a lot of hand waving about literally every network hop between your gateway and google. They mention AS (autonomous system, which is roughly the same as "big network") but not IGP/BGP. It's like whoever wrote this got tired of the exercise 2/3 of the way through and sort of gave up. Which, I don't blame you, but why bother posting the damn thing if you're going to half-ass it?
posted by axiom at 10:21 AM on January 20, 2015 [3 favorites]


Whenever I see plain old text documents on github I feel old.

Buck up! It's actually reStructuredText, not plaintext!
posted by asterix at 10:22 AM on January 20, 2015 [1 favorite]


why bother posting the damn thing if you're going to half-ass it?
This is a collaborative process, so dig in and try to help out! There's tons of details missing, just waiting for you to add them!
posted by yoink at 10:23 AM on January 20, 2015 [5 favorites]


why bother posting the damn thing if you're going to half-ass it?

Is there any level of detail at which someone wouldn't say exactly the same thing? Like could we get so detailed that it would take every molecule in the universe to store the 'what happens when you google' data and then that last immensely detail-oriented person would be like, "Yeah, there we go..."
posted by Huck500 at 10:27 AM on January 20, 2015 [3 favorites]


Yeah, they could add a lot of details about what the server on the other end does too, the various security hoops, what happens when a single site is served by multiple physical machines, caching layers, CDNs, etc.
posted by idiopath at 10:29 AM on January 20, 2015 [1 favorite]


This is a collaborative process, so dig in and try to help out! There's tons of details missing, just waiting for you to add them!

Right, see, that um is like ACTUAL WORK FOR ME.

I wanted to go into a long detailed ass explanation of BGP then thought. My god, I do that all damn day long and I can't stand it anymore. Where's the collaborative "How do I rescue Indie Pop bands from obscurity" question detailed? (hint: I might actually be working on that project right now in my free time)
posted by Annika Cicada at 10:29 AM on January 20, 2015 [2 favorites]


I've been asked this question in technical interviews. People tend to focus on the part of the process that they know best / are most interested in, which makes it good chance to ask people about the nitty gritty details of, for instance, how characters get from your keyboard to a program. Or what http requests actually look like. Or how tcp works. Or how html gets rendered.

Anyways, this is a long way of saying that I'm not going to ask that question of interviewees now.
posted by Phredward at 10:29 AM on January 20, 2015 [1 favorite]


Yes, but it's useful to identify who that person is. So we can ignore them most of the time.
posted by benito.strauss at 10:29 AM on January 20, 2015


Actually, taking a second look - yeah, they cover the common case where one machine handles multiple domains, but not the opposite (what Google will actually do) where multiple machines handle one domain.
posted by idiopath at 10:32 AM on January 20, 2015


Right, see, that um is like ACTUAL WORK FOR ME.

Sure. No one is saying you have to do it. But that's the nature of any of these wiki-type projects, isn't it. It's ACTUAL WORK for everyone who chooses to volunteer the time. My point was that it's silly to complain that the project is incomplete. It announces its incompleteness right in the preamble: it's an invitation to volunteers to contribute towards making it complete.
posted by yoink at 10:33 AM on January 20, 2015 [1 favorite]


I've been asked this question in technical interviews.

Yeah, me too. (In fact I just got it last month.) I don't mind it; it's better than "how would you find a repeated element in an array?" or "how would you determine if two strings are anagrams of each other?"

But basically tech interviewing sucks.
posted by asterix at 10:35 AM on January 20, 2015 [2 favorites]


I guess I am feeling chafed by the cheerful "It's collaborative!" attitude :-)

It's not you, it's me, I promise. You all are lovely.
posted by Annika Cicada at 10:36 AM on January 20, 2015 [1 favorite]


but not the opposite (what Google will actually do) where multiple machines handle one domain

(insert long detailed explanation of how load balancers work)
posted by Annika Cicada at 10:38 AM on January 20, 2015


asterix: "Buck up! It's actually reStructuredText, not plaintext!"

Bless their dumb wheel-reinventing hearts.
posted by boo_radley at 10:41 AM on January 20, 2015 [1 favorite]


But basically tech interviewing sucks.

Yeah, I am really not looking forward to the next time I need to try to get a job. I almost feel like I have to study up on CS 101 just for interview questions, despite working as a programmer for over a decade.
posted by smackfu at 10:41 AM on January 20, 2015 [1 favorite]


Annika Cicada: "but not the opposite (what Google will actually do) where multiple machines handle one domain

(insert long detailed explanation of how load balancers work)
"

(entire explanation is shrieking accompanied by breaking glass and sirens)
posted by boo_radley at 10:41 AM on January 20, 2015 [5 favorites]


Heh. I've been asked this before! It didn't occur to me to cover how the keyboard works.

And yeah, tech interviews suck. We both have recent cites on that!
posted by Pronoiac at 10:43 AM on January 20, 2015 [1 favorite]


(insert long detailed explanation of how load balancers work)

Google.com has to be the worst option possible for this question. I guess you can describe the client side pretty well, but the server side is just "here be dragons" stuff.
posted by smackfu at 10:52 AM on January 20, 2015 [2 favorites]


I've been asked this question in technical interviews.

I was asked this question by my girlfriend just the other day. Well, what she asked me was "Why can't we just take our modem from home with us in the car so we can have internet while we drive." But after an hour, I had covered most of this.
posted by empath at 11:06 AM on January 20, 2015 [1 favorite]


This is a collaborative process, so dig in and try to help out! There's tons of details missing, just waiting for you to add them!
posted by yoink at 1:23 PM
No, yeah, I got that part. My point was really -- if you got through ARP and then just decided "Fuck it, other people can do the rest" then you probably should've realized posting this half-a-thing was a waste of everyone's time, since you clearly couldn't be arsed your own self.
posted by axiom at 11:20 AM on January 20, 2015


I mean, it's pretty cool, but there are a lot of errors like:

This is now almost universally over a Universal Serial Bus (USB) or Bluetooth connection, but historically has been over PS/2 or ADB connections.

It's pretty difficult to call a setup not shipped in the majority of machines (i.e. not in laptops or tablets almost ever, and not the path /used/ by most servers most of the time) as "now almost universal". It'd be fine if he just said "in the case of a USB keyboard..." and called it done, but that's not what did happen.
posted by atbash at 11:32 AM on January 20, 2015


It's on github, for god's sake. The idea that multiple people will collaborate on a project, and that people have access to it before it's in shape to be released is encoded in the name of the web site.

Calling it "a waste of everyone's time" is wrong. Someone *specifically* posts something on github when they want to find others who might want to work on it. Your not wanting to work on it says nothing about others who do.

(replying to axiom)
posted by benito.strauss at 11:34 AM on January 20, 2015 [4 favorites]


It's pretty difficult to call a setup not shipped in the majority of machines (i.e. not in laptops or tablets almost ever, and not the path /used/ by most servers most of the time) as "now almost universal". It'd be fine if he just said "in the case of a USB keyboard..." and called it done, but that's not what did happen.

Unless this happened in the last five minutes, the doc does qualify this. Aren't most laptop keyboards USB internally, anyways? I know the ones in Macbooks are (ever since Apple finally ditched ADB a bunch of years ago). It even mentions touchscreens.

And if you're browsing the Web on a server, you're probably doing it wrong.
posted by neckro23 at 11:40 AM on January 20, 2015


Aren't most laptop keyboards USB internally, anyways?

No. Most of them go directly to GPIOs on the EC, which is shockingly very very similar to the i8042 design, except it's an H8 (or some other similar tiny microcontroller) that's also servicing e.g. ACPI and power buttons and that sort of thing. This is, for example, why you can still hold the "enter the BIOS" keys down on a Windows 8 logoed laptop that has "Fast Boot" enabled and has not enumerated USB during booting.
posted by atbash at 11:44 AM on January 20, 2015 [2 favorites]


(that is, similar to i8042 in terms of its architectural role.)
posted by atbash at 11:46 AM on January 20, 2015


And if you're browsing the Web on a server, you're probably doing it wrong.

What do you have against wget? Or curl for that matter?
posted by asterix at 11:47 AM on January 20, 2015


i want smarter people than I to argue about whether or not this doc is a waste of time. i'll check back tomorrow.
posted by mrgrimm at 11:49 AM on January 20, 2015




the server side is just "here be dragons" stuff

That bit is pretty well covered I thought?
posted by yoHighness at 12:26 PM on January 20, 2015 [1 favorite]


It's on github, for god's sake. The idea that multiple people will collaborate on a project

I think the weirdness is that it's presented like a blog post as something to read, not as a work-in-progress.
posted by smackfu at 12:36 PM on January 20, 2015


benito.strauss: "Calling it "a waste of everyone's time" is wrong. Someone *specifically* posts something on github when they want to find others who might want to work on it."

its like when my neighbors miss their dumpster, leave it for the raccoons and their trash blows on my yard and I pick it up

we're collaborating

who wants to invest time in somebody's half-assed dark meat bargain bucket attempt at answering an interview question. The work is self-invalidating; as soon as this document is complete, it ceases to be an interesting interview question (if it ever was one).

As a software engineer, there's no compelling reason do this. It's weirdo social churn attached to github. It's a thousand different sourceforge projects with a description of "this project will be like that project but slightly better and no commits from 1998.
posted by boo_radley at 12:46 PM on January 20, 2015 [2 favorites]


I'm sorry, it's just between the frikken' F5 and our (spendy application server) there's some goddamn gremlins and I got a headache
posted by boo_radley at 12:48 PM on January 20, 2015


> who wants to invest time in somebody's half-assed dark meat bargain bucket attempt at answering an interview question.

Well, there are 78 pull requests, 67 of them closed. Man, the IT staff is cranky today.
posted by benito.strauss at 1:00 PM on January 20, 2015 [1 favorite]


First: What is the interview question trying to get at? Is this an industry-specific thing?

This question is usually specific to Site Reliability Engineering positions, where knowing this stuff is sorta your job. SREs are responsible for uptime on a limited set of services delivered via HTTP, and any transitive dependencies. This question does two things:

1. Find where a candidate's "here be dragons" portion of the map lies.
2. Find where a candidate's strengths lie.

redditor /u/ge01f claims to have first used that question, and states:
For me, this question was 100% relevant, as I was interviewing people to do system administration for highly complex systems, where time to resolution is key. The more of these things any one person knew, the more useful they would be in performing troubleshooting individually, and the more they would be able to assist in a team environment. Prior to coming up with this question, I had been working on filling in the gaps myself to understand how things worked end-to-end, and interviewing people helped me with this when I would find people who knew more about areas than I did.
...
[A]t the time interviewing at Google was like being attacked by jackals. Any opening for not knowing something, or weakness in some area was honed in on by the interviewers, and exploited to turn the interviewee into an idiot who wasn't fit to work there. I really disliked this.
In an interview, I want to get the best out of people, and see what they are best at. They might have skills that are amazing in an area I never got into...
posted by pwnguin at 1:22 PM on January 20, 2015 [1 favorite]


I have used this question in interviews ("use as much detail as you'd like") to help determine a networking engineer candidate's deep web transaction network clue. I would be delighted if someone used this much detail.

I've never had anyone start with the enter key bottoming out. I may use that in the future. :)
posted by rmd1023 at 2:46 PM on January 20, 2015


they forgot - NSA_alert_Websearch_record
posted by pyramid termite at 3:58 PM on January 20, 2015


Any opening for not knowing something, or weakness in some area was honed in on by the interviewers

honed in on

I'd have failed him or her just for that.
posted by asterix at 4:18 PM on January 20, 2015


boo_radley: "as soon as this document is complete, it ceases to be an interesting interview question"

That's like saying "Once you whittle this pencil into this cool sculpture, it ceases to be a useful pencil". Okay, fine, so instead of being an interesting interview question, it's now an educational and interesting page on the web that breaks down a seemingly simple process into detailed constituent elements. I guess that would suck if you were an interviewer, but I'm assuming there are more non-interviewers in this world than interviewers, so it seems like a net positive to me.
posted by Bugbread at 4:47 PM on January 20, 2015 [8 favorites]


If you're going to start with the Enter key making contact, then you'd better be ready to walk that walk. The state change is going to trigger a hell of a lot of bus events, code flow decisions (you're not going to want to forget about what happens in the processor pipeline now, are you, and the subsequent state changes in its logic?), memory fetches and writes, IO transactions and the like - including but not limited to events traversing the network stack, packet assembly, NIC hardware activity - including the high speed analogue bits as stuff gets onto and off the wire, unless you're doing it via 802.11x, GSM, 3G or LTE in which case you've got a _lot_ of extra fun to cover. Have you seen the LTE specs? How's your RF engineering? You do know how an antenna works, right? And that's before you hit the operator's infrastructure - and you can by no means assume there's an equivalent hardware/software stack running in your router, or the cable/DSL gateway, or the DSLAM or cable head, or...

So, yeah. I love the idea. but a full description would end up having huge chunks of Wikipedia as a (fairly small) subset.

Bring it on.
posted by Devonian at 5:51 PM on January 20, 2015 [3 favorites]


But how far down the rabbit hole do you want to go?

Once the transaction is received and translated by a server, it is passed on to a storage array or server using [whatever] protocol to retrieve the results, via the host's storage adapter, which is received by the storage provider's primary controller - for that particular server - which then traverses the storage systems internal network via either Ethernet or SAS or Fibre Channel, which talks to the disk array, which constructs the data from it's redundant arrays of multiple disks, using some kind of RAID [most likely], and each of those disks are housed in a rack which is powered by 2 redundant power supplies, one by power company A, the other by power company B. But if that fails, we have UPS-1 and UPS-2. And then you could talk about disk latency and seek times and data redundancy. And air-con.... and .... it's a very broad question, which as an interview question, is probably meant to determine where an applicant's skills are focused.
posted by Diag at 7:23 PM on January 20, 2015


Even if this description reaches a complexity all neckbeards, network engineers, JavaScript hackers, hardware engineers, and physicists agree is a bit much I'll continue to get value out of this question in interviews.

The trick is an interview is a conversation with time constraints. Knowing an answer at whatever level of detail is great, being able to express that detail balanced against the rest of the conversation, demonstrate understanding by being able to expand on hand waved portions while still achieving the navigation to the end, that tells me tons about technical and analytical ability.

It's a rare question where the complete answer being published doesn't make the question less useful, but this is one.
posted by abulafa at 7:52 PM on January 20, 2015 [1 favorite]


redundant arrays of multiple disks... each of which has controllers and buses and rotational and seek latencies and floating read heads and power supplies and magnetic domains and electron transfers and quantum transitions and this, this is why we say it's turtles all the way down.

Because holding it ALL in our heads is too much. At this point, I've outsourced about 80% of my intellect to search engines.
posted by underflow at 8:53 PM on January 20, 2015 [1 favorite]


Along the same lines, the other day there was an interesting ELI5 (explain like I'm 5) thread on reddit: When someone buys a URL address, what are they buying, who are they buying it from, and what does the current owner pay/has paid to have the right to sell it?
posted by zardoz at 10:43 PM on January 20, 2015


No skipping out on anything.

The most glaring omission to me is that the browser willingly sends google cookies filled with tracking data and information about you that can be read by anybody along the line - all because you just want to see a webpage. Google responds by sending you more tracking data that your browser happily stores away in order to hand it to anybody else that asks for it. The request itself is over HTTP and is shared with anyone on your local network, your ISP, their ISP, and anybody in between. So, that is part of what happens too.
posted by vacapinta at 5:56 AM on January 21, 2015


This strikes me as an excuse to revisit the old Encyclopedia Britannica methods, where they went to Einstein for the entry on relativity... break the thing down as far as possible, then go to the domain expert for each fundamental unit for a mini-essay.

It would make an awesome book.
posted by Devonian at 8:16 AM on January 21, 2015


Relevant medium post with an accessible overview of how Paper magazine scaled their back end to deliver Kim Kardashian's back end.
posted by idiopath at 9:46 AM on January 21, 2015 [2 favorites]


That Medium article (by mefi's own Paul Ford) deserves to be in one of those Best American Essays books. It is wonderful, and very funny. I mean, how can you not love an article with a subhed of:


Bees Bees Bees Bees Bees Bees Bees Bees
Bees Bees Bees Bees Bees Bees Bees
Bees Bees Bees Bees Bees Bees
Bees Bees Bees Bees Bees
Bees Bees Bees Bees
Bees Bees Bees
Bees Bees
Bees

posted by ocherdraco at 2:26 PM on January 21, 2015


That made me think of the bit starting 32s into the ear worm "boots and cats"
posted by rmd1023 at 9:23 PM on January 21, 2015


« Older Where is the Internet’s memory, the history of our...   |   It's pronounced Gee-AW-guh not Gee-AH-guh Newer »


This thread has been archived and is closed to new comments