• 4 Posts
  • 1.66K Comments
Joined 2 years ago
cake
Cake day: July 14th, 2023

help-circle















  • The original source was much more sensible.

    The comparison makes sense for evaluating whether you’re over-invested in something. Like, if Nvidia suddenly poofed out of existence, would it seriously be worth 16% of everything the whole country makes in a year to get it back?

    Owning a car that’s worth 16% of your yearly income sounds reasonable, no matter what your actual income is. A Pokemon card collection that’s 16% of your income is probably too risky, no matter what your actual income is.

    Also, GDP is a decent scale to use for charting investment in a productivity tool, because if GDP ramped up at the same time as investment then it looks less like a bubble, even if they both ramp up quickly.

    But that’s not what we see. We see a sudden and volatile shift, nothing like the normal pattern before the hype.



  • I think maybe the biggest conceptual mistake in computer science was calling them “tests”.

    That word has all sorts of incorrect connotations to it:

    • That they should be made after the implementation
    • That they’re only useful if you’re unsure of the implementation
    • That they should be looking for deviations from intention, instead of giving you a richer palette with which to paint your intention

    You get this notion of running off to apply a ruler and a level to some structure that’s already built, adding notes to a clipboard about what’s wrong with it.

    You should think of it as a pencil and paper — a place where you can be abstract, not worry about the nitty-gritty details (unless you want to), and focus on what would be right about an implementation that adheres to this design.

    Like “I don’t care how it does it, but if you unmount and remount this component it should show the previous state without waiting for an HTTP request”.

    Very different mindset from “Okay, I implemented this caching system, now I’m gonna write tests to see if there are any off-by-one errors when retrieving indexed data”.

    I think that, very often, writing tests after the impl is worse than not writing tests at all. Cuz unless you’re some sort of wizard, you probably didn’t write the impl with enough flexibility for your tests to be flexible too. So you end up with brittle tests that break for bad reasons and reproduce all of the same assumptions that the impl has.

    You spent extra time on the task, and the result is that when you have to come back and change the impl you’ll have to spend extra time changing the tests too. Instead of the tests helping you write the code faster in the first place, and helping you limit your tests to only what you actually care about keeping the same long-term.


  • No apps, no code, just intent and execution.

    So the only problems you’re left with are:

    • Making a precise description of what you want, at high and low levels of detail with consistent terminology
    • Verifying that the system is behaving as you expect, by exercising specific parts of it in isolation
    • The ability to make small incremental steps from one complete working state to the next complete working state, so you don’t get stuck by painting yourself into a corner

    Problems which… code is much better than English at handling.

    And always will be.

    Almost like there’s a reason code exists other than just “Idk let’s make it hard so normies can’t do it mwahaha”.