Skip Navigation

InitialsDiceBearhttps://github.com/dicebear/dicebearhttps://creativecommons.org/publicdomain/zero/1.0/„Initials” (https://github.com/dicebear/dicebear) by „DiceBear”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)FI
Posts
1
Comments
473
Joined
2 yr. ago

  • You mean like forcing people to use email to submit pull requests to your self-hosted git repos?

    I think he meant "you" as in there person running the project, not a contributor.

    But... it's still stupid because GitHub doesn't force a workflow on you. Unless he means "have an issue tracker" and "use CI" are a workflow. You don't even need to use merge requests if you don't want (but I have no idea why anyone would give up something that works so well).

    The majority of the post comes across as someone who just doesn’t like the forge sites and aside from the trust aspect, then spent a bunch of effort trying to create associations and limitations between things that don’t exist.

    Definitely.

  • It's not hard and fast but:

    • API is the actual interface for the functions, not the implementation. It's possible for one API to be implemented by more than one library.
    • Library is a bunch of code provided together. It might have more specific meaning depending on the language.
    • A package is something you can install. It's pretty much synonymous to library since most packages contain one library.
    • A framework is just a library that dictates a lot about how your app works.

    Apart from API they don't really have strict definitions so they'll be used interchangeably and differently depending on the language.

  • Yeah others have pointer out the error, but I want to really recommend using VSCode with the Python extension and static types. It will make finding these errors super easy because it adds a red underline exactly where the problem is.

    Static types means:

     
        
    def splitter(expression: str) -> tuple[str, str, str]:
    ...
    def calculate(x: str, y: str, z: str) -> str:
    
      
  • Not sure about freelance, but for a salary in my experience, answer some recruiter spam on LinkedIn. I always thought they'd be crap since they are spammy... But after using some I've totally changed my mind. At least in my industry (silicon verification):

    • Companies use them.
    • You get a foot in the door & can bypass all the HR crap.
    • They know all of the relevant companies. I learnt about my current company from the recruiter.
    • They give you some hints about the interview process.
    • They do all of the chasing up for you.

    Also, they get a big payoff if you get a job, so their interests are more or less aligned with yours. The only slight difference is that they just want you to get any job, so they might push you to a job you don't really want. But it's minor.

    Basically you get a lot of benefits for using them and you aren't paying the cost - the company is. They won't pay that cost to you if you don't use a recruiter and save them cash, so there's no real reason not to use a recruiter.

    It may be very different for less niche sectors; I don't know.

  • So glad they made the sane move and fixed std::env::home_dir(). The previous situation of having it deprecated due to fairly insignificant reasons, while recommending an abandoned crate instead was just silly.

  • Well COBOL hasn't completely gone away... I don't think anyone expects C to become completely extinct; just very legacy.

    D missed its chance. Zig is clearly going to be the successor to C, for people who don't want to use Rust.

  • Yes, but be warned, formal software verification is proper hardcore. Complicated computer science theories, scant documentations - much of which assumes you have a PhD in the field, and in my experience it's quite a leaky abstraction. You'll end up needing to know a lot about the actual implementation of Lean to figure out why some things work and others don't, in a way that you don't need to in "normal" languages.

    It's quite satisfying when it works though. Like a puzzle.

    I highly recommend this fun "game": https://adam.math.hhu.de/#/g/leanprover-community/nng4

  • You can transform any recursive algorithm into iterative pretty easily though; just create a manual stack.

    The rule definitely makes sense in the context of C code running in space. Unbounded recursion always risks stack overflow, and they probably don't have any tooling to prove stack depth bounds (you totally can do that, but presumably these standards were written in the 1500s).

  • Yeah the main reason is performance. In some languages if you use a value "linearly" (i.e. there's only ever one copy) then functional style updates can get transformed to mutable in-place updates under the hood, but usually it's seen as a performance optimisation, whereas you often want a performance guarantee.

    Koka is kind of an exception, but even there they say:

    Note. FBIP is still active research. In particular we'd like to add ways to add annotations to ensure reuse is taking place.

    From that point of view it's quite similar to tail recursion. It's often viewed as an optional optimisation but often you want it to be guaranteed so some languages have a keyword like become to do that.

    Also it's sometimes easier to write code that uses mutation. It doesn't always make code icky and hard to debug. I'd say it's more of a very mild code smell. A code musk, if you like.

  • I've tried to learn Vim in the past but IMO it is not worth it at all. In a world without multiple cursors... sure, maybe. With multiple cursors? No way. I can can edit just as fast as I've seen any Vim user do it, and without having to remember a gazillion mnemonics and deal with the silly modal thing.

    Multiple cursor editing even has some significant advantages over Vim style, e.g. it's interactive, so you can do your edit gradually and go back if you make a mistake. Rather than having to write a complex command and only finding out it if works at the end. (If you've used regex find & replace you'll understand that problem.)

    I'll probably get downvoted for this since Vim is kind of a cult, and Vim users get a sense of superiority from it. Kind of like audiophiles - they don't appreciate it if you tell them their £10k valve amp doesn't actually sound any better than your £1k digital amp.

    For editing on remote computers I use VSCode remote or Micro for quick tasks.

  • Small nit:

    CHERI is even weirder. CHERI pointers store 128-bit capabilities in addition to the 64-bit address we’re used to

    The 128-bit capability (actually 129 since there's a tag bit) includes the address. It's 64-bit address + 64-bit metadata + 1-bit tag = 129-bit capability.

  • Before virtual memory was a thing, almost all memory was accessible.

    Virtual memory has nothing to do with whether 0 is a valid address. You can have a CPU where it is valid, or one where it isn't and you'll get an access fault if you try to access it. You can also have virtual memory where page 0 is mappable, or not.

    I think the author knew that, based on the later points so it's probably just bad wording. Interesting point about wasm too!

  • Yeah I just took a look at it. First thing I did was click on the "source" tab on a repo. That actually makes the source tab disappear? Clearly not designed by anyone who has any experience designing sane UI.

    I think Gitlab and Forgejo are better options, and not run by a creep. Forgejo is similarly fast and actually has a sane UI. The tabs don't disappear!

  • Right but it isn't "the basics of how a computer works" that drives people to learn programming is it?

    Nobody says "aha, now that I know what Giles and folders are I will become a programmer".

    People become programmers for other reasons:

    • They want to make something (e.g. a game).
    • They are naturally interested in computers.
    • Money.