HN user

thisisnotatest

284 karma

Google Engineer on Search

Posts1
Comments80
View on HN

The problem is that it's hard to be an informed dollar-voter in this environment of deliberate obfuscation. Spending hours wading through reviews, product descriptions, and so on, just to buy one thing, effectively increases your cost, and there's no guarantee you'll make the right choice in the end anyway. I'd be willing to pay more in many cases for a better result, but there's no way to tell if something that costs a bit more is actually better,

This is how I feel about online shopping. I used to naively dream that a retail aggregator like Amazon would crack the problem. By having large numbers of customers leave reviews (or even return unsatisfactory products), I imagined that the good products would rise to the top. To my surprise, Amazon hasn't seemed particularly interested in advancing this area. Search results are dominated by freshly minted sellers with randomly generated names. I often receive products with a piece of paper inside that begs me to let them know if I have any problems so that they can basically bribe me to keep quiet and not put a negative review on Amazon.

The obfuscation arms race, as you so aptly put it.

To quote the book by Google software engineers, “Software engineering is programming integrated over time”.

Programming is writing code at one snapshot in time.

Software engineering is mapping that code backwards and forwards through time, making sure it works with what comes before and what comes after, in both technical and business aspects.

Check out "Uber is a bezzle" by Cory Doctorow. His allegation is this scheme:

1. Early VC funds are used to subsidize Uber rides at a loss to Uber.

2. The deep discounts made Uber attractive to drivers and customers.

3. Uber's soaring popularity attracts more investment in Uber stock.

4. Uber's early investors cash out. Society is harmed as later investors lose their money, Uber drivers who invested in vehicles can no longer get work, public transit ridership is hollowed out, etc.

I feel your pain. Two workarounds when Google gets it wrong are to put the term in quotation marks, or to enable Verbatim mode in the toolbelt. (I know various people have come up with ways to add "Google Verbatim" as a search engine option in their browser, or use a browser extension to make Verbatim enabled by default.)

Disclaimer: I work on Google search.

This is correct. In this query, the '*' is being disregarded. Then, I assume, more people on the internet discuss 48 and 6 in the context of long division than in the context of multiplication.

I see what you're saying -- money isn't useful until it's spent. But I think the argument is that a wealthy person doesn't put that extra 98% of their money under a mattress, they invest it. Now they have passive income on top of their previous income, and their effective tax rate from sales tax is even lower. Until eventually they have so much well that they don't have to work at all, and neither do their descendants, and you have an aristocracy.

"If they can only work five hours a day"

I appreciate the sentiment, but five hours?! That's your example of an acceptable low level of performance for someone working from home with a child with no possibility of childcare?

I'm splitting card of my toddler with my spouse, and on my BEST days, I get 3 hours of actual work done. 1.5 is more typical, and that's only because the toddler takes 2 hour naps.

I'm surprised that you're surprised. Even ignoring Blizzard game players who don't follow the news, and ignoring (presumably Chinese) players that actually support the Chinese government over the Hong Kong protest movement, some percent of players are going to react by saying, "I don't agree with what Blizzard did, but I still like playing Overwatch/Hearthstone/Warcraft."

There are key differences between building more highways and building more dense housing.

I suspect induced demand is more of an effect with highways than housing. People can change their driving habits from day to day more easily than they can change their living habits.

Expand a highway, and more people in the area start taking more car trips on it.

Add housing, and more people don't instantly come into existence to occupy it. (Maybe, over a few years, people stop cramming themselves into crowded roommate arrangements as much, and over decades they have more kids.)

But if I granted that induced demand applied to both...

Driving is a means to an end. People stuck in traffic are suffering.

Having a home is an end in itself. People need shelter, and living near your community/job/family is a huge quality of life improvement.

Plus, when you expand a highway, strictly more mileage is created. It's not like the additional car trips in this city are taking the place of car trips in another state. It's a net loss for society and the environment.

Whereas, when you add housing, even if it induces more people to move into that city, they're moving out of some other city, easing the demand in the housing market there.

Yes, I'm eager to risk my life on self-driving car failures; it would be a tremendous step up from risking my life on human drivers (including myself!) as I do on a daily basis.

I'm also a biker. In 2013, 4,735 pedestrians and 743 bicyclists were killed in crashes with motor vehicles. http://www.pedbikeinfo.org/data/factsheet_crash.cfm

In the future when self-driving or at least augmented driving is commonplace, I hope that number will be a lot lower.

From the article: UPDATE (2/7/2016, 4:33 p.m.): Google tells us that the website was flagged by another user as spam. After Google manually reviewed the site and found this was not the case, they put it back online.

const is type-incompatible like this:

Suppose you want to write a function that returns all the nodes in a tree that satisfy some property. In C++ you have to define two different versions (or use templates to make the compiler clone it for you):

  vector<Node*> GetGoodNodes(Node* root);
  vector<const Node*> GetGoodNodes(const Node* root);
If more than one type is involved in the operation, there can be a combinatorial explosion.

The keyboard shortcut that I found is Control-Shift-M to open a box around the profile, down-enter to select "Switch person", then Tab-(Tab-)enter to select the other account. Anyone know if there's a shorter shortcut?

Sam is right about "the wildly-out-of-control housing costs, which is probably the biggest weakness here right now". FYI, some Mountain View tech workers volunteer for an organization called MV Voters for Housing Diversity. See who we endorse for City Council at www.mvhousing.org, and vote tomorrow! http://www.sos.ca.gov/elections/find-polling-place.htm

In Palo Alto, there's a similar organization called Palo Alto Forward, which I know some Palantir employees are involved with. www.paloaltoforward.com

Maybe most people who were vocal about the change were mad, while the rest of us happily used it. I do remember how jarring the change felt, but it quickly become obvious what a new and useful experience it was.

Facilitating P2P debt may help make debt cheaper by crowdsourcing the "overhead" of evaluating creditors. I believe there's a site that does this but can't recall the name.

I'm not sure if it's what you're thinking of, but www.wefinance.co is a new startup in P2P debt, hoping to do exactly that.

I hear you. How to indicate to the user that we don't think there are any good matches for their query is something we debate and experiment with in search quality at Google.

FYI, the + prefix operator was deprecated a few years ago. There was always an equivalent way to express it, by putting "each" "word" "in" "quotes". I know that's more keypresses than the + sign, but when maintaining a system as gigantic and complex as the Google search engine, everything is tradeoffs, and that's one that we decided to make.

I'm an engineer at Google who worked on the query parser code in 2009 and 2010. I can assure you that at no point around then did punctuation like square brackets get used, inside or outside quotation marks. The results changing from results that suited your intent to results that didn't must have been caused by other changes to the ranking algorithm or the Web as a whole over those years that happened to be unlucky for you.

Punctuation is a huge challenge for us. We can't simply index all the punctuation on every web page on the internet -- think of the blowup of our index! Think how much slower our search pipeline would be! But we're working on it. Now we recognize some common punctuation uses cases like @ and #. Compare the search results for mattcutts vs. @mattcutts, or obama vs. #obama. We'll keep working on the other ones. The programming ones hinder us coders a lot too. :-)

For what it's worth, I think it's totally reasonable to ask a software engineer candidate to implement a binary sort, even if the candidate has to derive the particulars of the algorithm from first principles. If the candidate can't implement something as well-understood as a binary sort, how are they going to perform when given a totally novel problem that no one has ever solved before?

If anything, the problem with that as an interview question is that it is too obvious and common, and will not do a good job distinguishing between a strong candidate and someone who crammed for the interview and happened to practice that particular problem.

Aside: this test code would have been a bit easier to debug if it had used decimal bases. That is, replace

  int a[] = {10,20,30};
  int r = 1 * a[i++] + 2 * a[i++] + 3 * a[i++];
with
  int a[] = {1,2,3};
  int r = 1 * a[i++] + 10 * a[i++] + 100 * a[i++];
Then if your program outputs r = 111, it's obvious that it's doing
  a[0] + 10*a[0] + 100*a[0]
and if it outputs 321, it's obvious that it's doing
  a[0] + 10*a[1] + 100*a[2]
No disassembly required.