Hacker Newsnew | past | comments | ask | show | jobs | submit | fsddfsdfssdf's commentslogin

If you want real numbers start selling hard drugs. You don't have to "serve the people". YouTube is a cesspool.


> As a professional YouTuber

Well, there's your problem.

You want the numbers that come from mass consumption, which means catering to the lowest common denominator thus producing shit with gold plating while then complain the gold plating is bloody expensive.

Some people just are knowledgeable and want to share with the rest of us mortals like say someone like Terrence Tao. Putting someone like him on "YouTube" is a goddamn travesty. We need an alternative and yes, you won't make money and no, it's not for you then.


> which means catering to the lowest common denominator

At some point that becomes saturated, and you're better off catering to a niche that is poorly served.


Conversations in its training data that explicitly mentioned "make no mistakes" don't strike me as particularly rich sources of high-quality reasoning signals. They strike me as conversations with Pointy-haired Bosses.


You jest but I indeed find rejection an integral part of the job. Not plainly saying "no, get away", but backing up, requesting big picture views and trying to see if the overall organization is in need of and capable of carrying said project long-term feels like the absolute minimum that needs doing before we even begin.

I suspect LLMs can do this just fine and probably better than us, but they do need to be trained specifically for it and I have a hard time coming up with good sources of training data for it.


Yes, I agree. I find the addition of the regression test the true long-term fix. The code is just an opaque incantation that may or may not preserve some property we find worth preserving and we have no way of knowing it keeps preserving it over time as other parts of the system change.

The test actually proves it and while it too can change it has more staying power because it's expressed at a higher level of abstraction ("random arcane weird C shit" in the case of code versus "does this property hold" in the case of a regression test).


I have not looked into this specific issue, but are we sure that a regression here could have been avoided via a localized test? Maybe issues seem to arise from A implementing a feature with tests. B seeing that A lacks some functionality and adding it (potentially with tests), C seeing this (extra) functionality in A, and using in unintended ways not covered by tests (or in an unintended environment) + multiply by many layers of this A-B-C story up and down the stack.


While I can see the shortcomings of C and generally don't recommend it for new projects I don't see this particular bug as a good example of something Rust's borrow checker or some other language's type system will catch. I don't think even static analyzers can catch this.

It's basically something like this:

original: DoTheThing()

new: DoTheThingSlightlyDifferentButKeepMyCredentialsAlive()

fix: DoTheThingSlightlyDifferentButDoInFactNOTKeepMyCredentialsAlive()

In my experience a substantial portion of gnarly bugs come down to a violation of a high-level system invariant and those do not strike me as something that can be automated. Even with something like Lean you can prove your program satisfies certain properties but you need to have thought about those properties in the first place. The proof doesn't discover the invariant for you.

If you'd had thought about the relevant security property you could have written a regression test for it which is not hard. IMO the really hard part isn't expressing the implementation safely, but it's the realization that this was a property the implementation needed to preserve.


This is in effect a state machine, and when you have a type system more complex than C's you can encode state transitions in the type system (either by having state transitions explicitly return a new return type or by using sum types). You still need to architect the system to encode the invariants in types. No language will fix all logic bugs for free. But you can leverage language features to reduce their number.


> You still need to architect the system to encode the invariants in types.

That's the problem though, right? If it's pointed out we all agree the "do not keep credentials alive" is a property that should hold and we can leverage whatever the environment offers to help preserve it. I fully agree modern languages have amazing support for this, but in C you can still run tests. Let's just say I don't think the language's inability to express logic of this kind held all those involved back from testing for it. I personally find "we just didn't think of it" much more likely.

That said, I am not a fan of C and recommend leveraging whatever fantastic modern tooling is available to you.


Like set an generic marker struct IsEncrypted<T> where T is yes or now and only allow its state to change when proven and then write the shutdown function to only take the yes variant?


Yes, that would be one way of doing it. You can model off of the Typed Builder pattern:

  struct Builder<const A: bool, const B: bool> {
    a: Option<u32>,
    b: Option<u32>,
  }
  struct Val {
    a: u32,
    b: u32,
  }
  impl<const B: bool> Builder<false, B> {
    fn set_a(self, a: u32) -> Builder<true, B> {
      Builder {
        a: Some(a),
        b: self.b,
      }
    }
  }
  impl<const A: bool> Builder<A, false> {
    fn set_b(self, b: u32) -> Builder<A, true> {
      Builder {
        a: self.a,
        b: Some(b),
      }
    }
  }
  impl Builder<true, true> {
    fn build(self) -> Val {
      Val {
        a: self.a.unwrap(),
        b: self.b.unwrap(),
      }
    }
  }
This won't work for everything, but it is a pattern that I find useful to ensure that things can't happen out of order.


I agree re Rust vs C - this is not (only) a language issue. What would (roughly) the invariant be here?

In another thread comment below i argue that maybe the system (OS) itself is so complex that it lacks clear contract / the contract evolves too quickly over time (as other parts of the code need to change the given piece of code to extend it to their use case) and that defies clear encoding?

Or we lack easy enough means to describe specs? I tried reading jepsen spec earlier today and despite it being an "integration test" of sorts, it is far from "simple".

Can an entire OS or a system of comparable complexity be decomposed into objects simple enough that their entire intended behavior (with all edge cases) can be explained in a paragraph of human text + half a screen of dense behavioral "spec" - if i do X and do Y, Z should come out / hold _no matter what happens in-between_. Or that's what asserts + fuzzing is effectively supposed to do? Is there a clear distinction between invalid input and failed invariant in typical C code? I guess error code vs seg fault?


Changing a few words is thus enough to clear this case. What's the point of this exercise exactly?

Both products are so incredibly derivative and boring that I find it very, very hard to care about this "case".


Well done, Claude!


There is some polish with Claude over the past few weeks, but we wrote the engine over 10 years ago actually. Each piece moves using a modified version of A* to simply find the shortest path to Prince Chazz (the piece controlled by the player).


You probably don’t need A*, do you actually want the AI to move optimally? That would infer the game ends sooner. You could probably just use greedy heuristics


Your passkey login doesn't even work. I think the nature of Claude usage here goes a bit beyond "some polish".

(For reference, signing back in with a passkey seems to be impossible even after successfully creating an account with one. Every time you sign in it attempts to save a new passkey right after asking for the old one)


Admittedly some of the auxiliary features were made with Claude's help, but I'd argue that's not what makes this interesting. The game (core loop, sprites, etc) were all made by hand.

The passkey feedback is good though, I see a few more people have had issues with it. I'll have a look at fixing it!


Isn't the audio Chess.com's audio? And performance is _really_ harsh on Firefox, this runs at like 10 fps for some reason.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: