HN user

jpeterson

1,637 karma
Posts4
Comments339
View on HN

It's all really just basic calculus, with a couple nifty tricks layered on top:

1) Create a bunch of variables and initialize them to random values. We're going to add and multiply these variables. The specific way that they're added and multiplied doesn't matter so much, though it turns out in practice that certain "architectures" of addition and multiplication patterns are better than others. But the key point is that it's just addition and multiplication.

2) Take some input, or a bunch of numbers that convey properties of some object, say a house (think square feet, number of bedrooms, number of bathrooms, etc) and add/multiply them into the set of variables we created in step 1. Once we plug and chug through all the additions and multiplications, we get a number. This is the output. At first this number will be random, because we initialized all our variables to random numbers. Measure how far the output is from the expected value corresponding to the given inputs (say, purchase price of the house). This is the error or "loss". In the case of purchase price, we can just subtract the predicted price from the expected price (and then square it, to make the calculus easier).

3) Now, since all we're doing is adding and multiplying, it's very straight-forward to set up a calculus problem that minimizes the error of the output with respect to our variables. The number of multiplication/addition steps doesn't even matter, since we have the chain rule. It turns out this is very powerful: it gives us a procedure to minimize the error of our system of variables (i.e. model), by iteratively "nudging" the variables according to how they affect the "error" of the output. The iterative nudging is what we call "learning". At the end of the procedure, rather than producing random outputs, the model will produce predictions of house prices that correlate with the distribution input square footage, bedrooms, bathrooms, etc. we saw in the training set.

In a sense, ML and AI are really just the next logical step of calculus once we have big data and computational capacity.

You're not testing for "basic math skills" here. What you're testing for is more like "immediately retrieves an irrelevant math fact after many years of having no need to think about it."

Look, if you think this sort of thing allows you to identify great candidates, good for you. But in my experience, not only is this kind of practice stupid on its face, but it leads to engineering orgs packed with people who are good at memorizing trivia but terrible at solving real problems.

"There’s a lot of collaboration and spontaneous connection that happens in hallways and kitchenettes."

I've seen this idea repeated many times, but in over 20 years in the tech industry, I've never once seen a meaningful collaboration spring up in a kitchenette or hallway. It's invariably "how was your weekend?" fare. Don't get me wrong, there's value in connecting that way, but it's never the sort of thing that directly leads to any of the productivity gain that the anti-remote crowd would like you to believe.

Exchanges and trading firms are not "Crypto". They're human institutions which happen to sit atop cryptocurrency instruments. What we're seeing play out in realtime is what happens when unregulated human institutions come to possess fantastical amounts of wealth -- in short, they go pathological.

Yes. Implicit in these "free speech" arguments is the idea that the government should be able to force private companies to publish user content that violates their policies. This is the sort of thing that the 1st Amendment is actually supposed to protect us from.

I've been doing this for a long time, and I've never seen any kind of correlation between how well someone solves silly algorithm puzzles in a 45 minute window and any kind of real-world performance. Also, there's no apparent a prior reason why this would be the case. It might be that the way performance rating is done at Google is constructed so as to be correlated with silly brain teaser performance.

Investment markets operate on relative gain, not absolute gain. E.g.: if you invest in a stock and it gains $5, this would be a great return for a $1 stock but a poor one for a $1000 stock, so the absolute gain doesn't mean anything on its own. A 5% return always means that you've gained 5% on your investment.

Is the p-value really not the probability of your results being due to chance?

No, it's the probability of a particular observation, given that we assume the result is due to chance. This sounds similar, but the difference is that it doesn't say anything about the probability of your result outside the context of the study's hypotheses.

Let's set aside for a moment that the exact means by which people keep up with friends is not necessarily "world changing", and also that this has been mostly enabled by the internet itself, not any particular app-du-jour that rides on top of the internet. Besides that, it's not obvious to me that people in the world are actually more materially "connected" by Facebook than they were before Facebook.

These apps "change the world" only if your "world" is the silicon valley echo chamber. The real world is only moderately impacted, and only for a limited time, even by an anomaly like Facebook.

Seriously, to all the silicon valley startups and investors: get over yourself. You are not changing the world.

*EDIT: There are a lot of interesting and cool things going on in silicon valley, perhaps more than in any other place in the world. To that, I agree. The whole "changing the world" thing is a bit much, though, and I believe anyone who claims this is either overestimating their startup or underestimating the world (or both).

In 15 years as a software engineer at companies large and small, I have never seen anyone code on a whiteboard (outside of interviews, anyway), nor have I.

First of all, the browser environment is the asynchronous part here, not JavaScript. JavaScript is a language that happens to be interpreted on top of that environment. You'd run into similar issues with any other language over an asynchronous execution model.

Second, you can actually execute browser and node code deterministically if you like, by providing alternative implementations of setTimeout, setInterval, setImmediate, etc. that serialize execution of the callbacks in the order of your choice.

We also have an abundance of green space and really low cost of living. Personally, I love Atlanta, and I wish people would stop putting it down all the time. Could be a really great city with a little more love.