HN user

dragon96

94 karma
Posts1
Comments48
View on HN

Sending an AI response communicates more than just the response itself:

1. "I'm not entirely sure, but this is what it says to save you some time."

2. "You didn't ask the question precisely because you are not an SME, but I reworded it using the jargon that would allow the AI to answer better and here is the response."

3. "This response is AI, but in general my other ones are not"

4. "I trust the AI's response in this scenario."

One of the values of doing your own research is it forces you to speak the "language" of what you're trying to do.

It's like the struggle that we've all had when learning our first programming language. If we weren't forced to wrestle with compilation errors, our brains wouldn't have adapted to the mindset that the computer will do whatever you tell it to do and only that.

There's a place for LLMs in learning, and I feel like it satisfies the same niche as pre-synthesized Medium tutorials. It's no replacement for reading documentation or finding answers for yourself though.

I keep comments committed in a separate branch.

The lack of syncing doesn't bother me, because the purpose of taking notes always falls into one of these categories:

1. I read the code to get an idea of how something works. The code is there to make examples/variable names concrete, but I don't need to know the exact implementation.

If the notes need to sit in the code, usually that's because the answer spans multiple methods (eg "what does an e2e request look like?"). A set of comments on outdated code is always good enough for me.

Otherwise, a lot of times the answer can be summarized in one line (eg "where is the state tracked?" -> in FooBarClass). These can go into personal notes.

2. I need to know the implementation and it is complex and hard to follow.

If I need to know the implementation, either it is because I'm actively working on it, or I need to make [complex idea] more concrete in my head.

If it's the former, usually I'll have memorized it by the time I read through it.

If it's the latter, by the end of it I'll have gotten the main idea and it's fine to forget the implantation details.

What’s deeply frustrating is that for more than a decade Sal Khan similarly said that the videos on his “Khan Academy” would revolutionize education, and they utterly failed to do so.

How does one determine whether an edtech startup like KA has succeeded or failed? As someone who has found KA useful at times, I don't understand where the author is coming from

As a fellow overthinker who also struggles to articulate my goals, I find it easier to think about incremental improvements than overarching goals.

For example, I want to become a better systems programmer, but I'm not really sure what to do with that desire. Goals are hard. But when I see C++ code, I know that I tremble at the sight of syntax I'm not familiar with, and that uncertainty is much easier to act on. I still won't "know" C++ in its entirety after an afternoon Googling session, but I definitely made some progress

Not exactly "engineering", but I might add an adjacent category of puzzle games that hurt your brain:

- Baba Is You

- Stephen's Sausage Roll

- Jelly no puzzle + Yugo puzzle (sequel)

- Braid

- Snakebird

He refuses to engage earnestly with the “doomer” arguments. The same type of motivated reasoning could also be attributed to himself and Meta’s financial goals - it’s not a persuasive framing.

Exactly my thoughts too.

I don't agree with the Eliezer doomsday scenario either, but it's hard to be convinced by a scientist who refuses to engage in discussion about the flagged risks and instead panders to the public's fear of fear-mongering and power-seizing.

It could be obvious, but no need to be condescending about it.

There are many statements that fit into the category of "obvious once stated, but not obvious if you didn't consider the distinction to begin with".

I read the beginning sections of each chapter until I understand conceptually what the chapter implements by the end. (I needed more assistance for the initial chapters not knowing what the output of scanning or parsing would be, or where to start, but by the later chapters, it becomes pretty clear what the output of implementing say, classes, is).

Then I would try to implement it on my own without reading, having Chapter 3, the language specs, open in a different tab for reference. I chose Java because (1) I wasn't very familiar with it, and (2) I wanted the option to use their code snippets.

My goal is to pass all of the edge test cases the book mentions. So finally I would read the chapter and take some notes on the different design choices and test cases I missed. The reading is quite fast once you've already implemented because you know what to look for.

Regardless of which text you choose, I recommend writing proofs (full sentences and all) for the solutions that were harder to come by, or you feel difficulty expressing clearly. And if you can, get some feedback on the proofs. (Happy to take a look at a few if you DM me)

The process of writing will hopefully help you:

  - build awareness of when your arguments are not airtight or when you make false assumptions
  - modularize your thinking 
  - become more fluent with logical "vocabulary"
As for books, my personal favorites were Problem Solving Strategies (Engel) and Art and Craft of Problem Solving (Zeitz). They're both really approachable, have plenty of examples, and will give you a different perspective on what math can be about.

For anyone interested in a more technical summary of the some of the main ideas:

Problem Statement

  The Erdos conjecture that all primitive sets S satisfy f(S) <= f(PRIMES), where f(S) = sum_{s} (1/(s log s)) and PRIMES is the set of all primes.
Definitions
  Define A_q to be a primitive set such that all elements a are divisible by prime q, but no primes less than q.
   * Example: A_3 contains multiples of 3, but no even numbers.

  Define A*_q to be the set of all integers divisible by only primes >= q.
   * Example: A_q is a subset of A*_q.
   * Example: A_q is also a subset of q \* A*_q (i.e. multiply each element by q).

  Define g(a) = 1/a * Product_{p<LargestPrimeDivisor(a)}[(1 - 1/p)]. 
   * Example: if a=7, then the Product term (excluding the 1/a) is the "density" of A*_7. This is because (1-1/2) of integers aren't divisible by 2, (1-1/3) aren't divisible by 3, and (1-1/5) aren't divisible by 5.
   * Example: if a=7, then g(7) is the density of all multiples of 7 that aren't divisible by 2,3,5.
Results
  In [1], Author proves that for all A_q, with A_q \neq {q}: f(A_q) < k*\sum_{a\in A_q} g(a) <= k*g(q), for a constant k. 
   * The first half of the inequality comes from a cited result: 1/(a log(2a)) < k*g(a).
   * The second half of the inequality comes from clever construction of the sets S_a = (a \* A*_{LargestPrimeDivisor(a)}), for all a in A_q. These sets are constructed to satisfy g(a) = |S_a|/|NaturalNumbers|. So because (1) S_a and S_b are disjoint for a\neq b (2) S_a is a subset of A*_q, this implies that sum(g(a)) = sum(|S_a|) <= sum(|A*_q|) = g(q).

  In [2], Author shows that k\*g(q) <= 1/(q log q). Note that the right-hand side of the inequality is equal to f({q}). 
   * This uses a pretty clever partitioning of the primitive set A into A_2 U A_3 U A_5 U ... U A_q U .... Combining with part 1, this implies f(A_q) < f({q}) for all primes q, so f(A) < f(PRIMES).
[1] https://arxiv.org/pdf/1806.02250.pdf [2] https://arxiv.org/pdf/2202.02384.pdf

Interesting, could you give some examples of concepts from relational algebra that have helped inform your understanding of schema design?

Asking as a practioner interested in learning the conceptual underpinnings :)

For me, I think I could tell myself to be more productive for 1 week and succeed at it, but I'd feel a lot more stressed or cynical about work as a result. I feel I'ma lazy person because I know I'm not doing what I could when I try my best, but I also feel wellbeing and health is more important in the long run.

One piece of advice I hear a lot is "review your games", but how do you actually do that without a stronger player? I'd sometimes use an engine and it'll point out moves I hadn't considered before, but without understanding the plan or positional ideas behind them, I often find this pretty opaque.

Interesting idea. I love the recognition of current hiring asymmetries. Some of the practices by companies simply shouldn't be tolerated, like the recruiter ghosting, opaqueness on salary ranges, exploding offers, misleading listings or qualifications, lack of feedback, etc., and I wonder if some of these can be solved by a company like TB that facilitates the hiring market and pipelining the process.

So hiring through TripleByte would be conducted in some fixed-length time intervals (e.g. 1 month). Companies specify skills they're hiring for, interested engineers interview for the skills that TripleByte can screen for and supply a minimum salary (invisible to companies), and companies hiring that month bid starting at the min salary for the engineer with all other hiring companies.

If the market determines the hiring timeline, recruiters can't put you on hold if they're interested-but-not-sure, and can't use exploding offer tactics. It also pushes companies to be more honest about salary ranges and required skills. TripleByte would be responsible for providing feedback rather than the companies.

My biggest complaint is that the jargon is just out of control.

I don't see how this is true unless you are memorizing the wiki like a dictionary. I can only think of 9 words that I use commonly in games (sente, gote, seki, ko, atari, hane, aji, tenuki, komi). Sure, I think the English Go community could try (and probably has tried) to reinvent translations for each of these, but they probably wouldn't catch on. "Seki" is easier to say than "mutual life", "sente" is more precise and easier to say than "initiative", "ko" is just ko.

I just don't feel like learning new words is any more difficult than keeping track of algebraic notation in chess, and I think it's just part of the commentating culture of both games.

Which ruleset should I use?

As a beginner, you shouldn't worry about which one you use. They're almost the same except on some edge cases.