Recent submissions

Comment · 6 years ago
Pretty sure the answer is no as a math problem where f is pure. If f returns the same answer each time, the square ending at N,N contains [1, N * N]. Then the rectangle ending at N,N+1 must contain (N * N, N * (N+1)] in the nonoverlapping strip. Ditto for N+1,N. But then for N+1,N+1 all other locations must contain low numbers and there's only a single corner cell left which can contain the rest of the missing numbers between (N(N+1), (N+1)(N+1)]. Unless I made a mistake I don't think any function would work here for N > 1. What were the examples you found?

OTOH as a programming problem you can just cheat and store state somewhere to count the row width. This satisfies your interface requirements (python):

    lastJ = None
    def f(i, j):
        global lastJ
        if i != 0:
            return i * (lastJ + 1) + j
        else:
            lastJ = j
            return j


    N = 3
    M = 5
    seen = set()
    for i in range(N):
        for j in range(M):
            q = f(i, j)
            seen.add(q)
    assert sorted(seen) == list(range(N * M))
Comment · 7 years ago
> My favorite was the magnetically levitated sphere in a bowl

I think you might be talking about CMU's Magnetic Levitation Haptic Interfaces: https://youtu.be/cMi75SrDbsk?t=12

I've used it before and it's pretty cool. It's strong enough such that when you hit a hard virtual surface it actually feels hard, and precise enough that when you drag across a brick-like surface it actually feels rough. Unfortunately I remember it having a tiny range of motion.

For your jointed arm "handle", I think they've managed to find a niche in surgical training simulations. I see a lot of similar products come up searching for 6DOF haptic devices (e.g. Phantom Premium 6DOF, Geomagic Touch, Force Dimension Omega 6)

Comment · 7 years ago
Is your "winning" strategy so different from other social data / sentiment analysis approaches? There is some novelty with how you weigh the sentiments (based on how much of an insider or expert they are) but I am sure existing trading strategies weren't just taking a dumb average of a twitter firehose either. Shouldn't it be easy for some large firm to replicate your approach and make the alpha disappear?
Comment · 7 years ago
The most damaging advice I ever got in my life was to talk to myself.

I have always thought in mostly visual/symbolic terms. This made me really good with math early in my life, but it started failing when I began proof writing. Then I got the advice to "explain the problem to yourself and the solution will come naturally" from a friend who is really gifted at mathematical proofs. (And also later received similar advice in programming in the form of "rubber duck debugging").

Surprisingly, it works remarkably well and probably increased my problem solving skills tenfolds, or at least my ability to communicate the answer. I started using it for everything.

But it comes with the side effect of gaining a voice in your head. And that voice is a fucking vicious asshole to me. In the recent years the thoughts even started subvocalizing and I have to forcefully remember to make it stop. It's super embarrassing when there are other people around you.

I am sure this problem is unique to me because I have never heard someone describe it (other than partially matching symptoms of schizophrenia or tourette). But I am certain in my case when the voices started and I am not sure the superpower problem solving skills are worth the trade.

Comment · 7 years ago
Comment · 7 years ago
I watched these lectures a few years ago and they were really good.

Since this is meant to be a graduate level research course, I wonder if any cutting edge topics have been added since? Were there any major advances or new ideas in fundamental data structures in the past few years?

Comment · 7 years ago
I wonder how they are going to handle security/abuse? Once the training is on end user devices, can't the user give fake results?

For example back when recaptcha was introduced, trolls tried to transcribe everything as the n-word (since you only had to get one of the two words correct).

These cases can obviously be noticed and fixed but it's harder now that the training data is opaque right?

Comment · 7 years ago
I write a lot of scientific code with python and in those cases you really want your equations and matrix columns aligned for readability. These matrices appear so often adding fmt:off destroys the readability/elegance gain from the clever formatting.

Here's an example snippet by Peter Norvig that is beautifully formatted:

  def neighbors4(point): 
    "The four neighboring squares."
    x, y = point
    return (          (x, y-1),
            (x-1, y),           (x+1, y), 
                      (x, y+1))

  def neighbors8(point): 
    "The eight neighboring squares."
    x, y = point 
    return ((x-1, y-1), (x, y-1), (x+1, y-1),
            (x-1, y),             (x+1, y),
            (x-1, y+1), (x, y+1), (x+1, y+1))
Comment · 7 years ago
Comment · 8 years ago
Using ln as our utility, at time N we get:

  E[ln(X_1*...*X_N)] = sum E[ln(X)]
So kelly happens to maximize this expected utility by construction since it was derived by maximizing expected log of one round of betting (E[ln(X)]).

But if we use square root as our utility instead:

  E[sqrt(X_1*...*X_N)] = prod E[sqrt(X)]
We would maximize this expected utility by maximizing E[sqrt(X)]. Going through the same calculus we can see that we don't arrive at kelly.

Where did I go wrong?

Comment · 8 years ago
I think the log is just the utility function. You could substitute it with any non-linear utility function and it would've gave you another answer that makes sense for that utility.

The main takeaway is that a linear expected utility doesn't make sense.

It would've told you to bet all your wealth every game, which does result in a higher linear expected value, where you win (1+1.1)^N with probability 1/2^N at time N, but 0 otherwise. But no real human would take the bet of extreme high payoff at extremely rare chances with ruin otherwise.

Also see St. Petersburg paradox for a similar "paradox" resolved with expected utility theory.

Comment · 8 years ago
Tangentially related, this reminds me of the spy recordings[1] between incarcerated German nuclear physicists and their reactions to the atomic bomb dropping.

At first they were incredulous and thought it must be a bluff. The bomb should be "impossible", with Germany failing at their own nuclear project a few years earlier. Then they slowly worked out how it could have been done, and realized that the americans must've had hundreds of thousands of people working on it. "Which is a hundred times more than we had" This was follow by a lot of regret over what they could've done better and the various implications of a world where such a bomb now exists.

I originally found that link from a tweet[2] by someone working at OpenAI. I am sure AI scientists are feeling similar anxiety about their research.

It's easier than ever for someone with a hundred times your computation resources to achieve things that are supposed to be "impossible", at least to the unsuspecting public who haven't grasp the rate of progress in AI.

And I am not even talking about some massmurdering AGI. It's the boring stuff like astroturfing chatbots whose sole purpose is to psychoanalyze individuals to manipulate voting behavior that scares me. This asymmetric power might already be available to those who are willing to throw a few hundred GPU years at the problem and I am not sure how the common man can defend against it.

[1] "Transcript of Surreptitiously Taped Conversations among German Nuclear Physicists at Farm Hall, August 1945" http://germanhistorydocs.ghi-dc.org/pdf/eng/English101.pdf

[2] https://twitter.com/karpathy/status/778286393441169408

Comment · 8 years ago
I wrote a similar comment before, viewing redux as a realization of the event sourcing pattern: https://news.ycombinator.com/item?id=17061827

You can go even further and use the exact same "events" or "actions" for event sourcing on the server side too. You just need to save the list of actions to the server. This lets you do realtime sync and multiplayer really easily!

Comment · 8 years ago

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton