I make things: electronics and software and music and stories and all sorts of other things.

  • 1 post
  • 111 comments
Joined 3 years ago
Cake day: June 14th, 2023
  • Maybe this is wrong, but my understanding is BTRFS is generally slower than EXT4, and that’s okay. It’s not going for speed

    Where it shines is not in its speed but in its versatility offering compression, rollback, subvol, etc

    For example, for applications, you do a lot of writes/reads to Documents or load resources like for games, so use EXT4 for /home or for a dedicated /games partition

    For your system, it could be broken via config tweaks or updates, so use BTRFS to have the rollback options

  • Here is the grammar:

    <json> ::=              <value> | <fn-def> <json>
    <value> ::=             <object> | <array> | <string> | <number> | <bool>
                            | <fn-def> | <fn-app>
                            | "null"
    <object> ::=            "{" [ <member> { "," <member> } ] "}"
    <member> ::=            <string> ":" <value>
    <string> ::=            "\"" { <char> } "\""
    <char> ::=              (ASCII other than "\"", "\\", 0-31, 127-159)
                            | (Unicode other than ASCII)
                            | ( "\\" (
                                "\"" | "\\" | "/" | "b" | "f" | "n" | "r" | "t"
                                | "u" <hex> <hex> <hex> <hex>
                            )
    <hex> ::=               /A-Fa-f0-9/
    <array> ::=             "[" [ <value> { "," <value> } ] "]"
    <number> ::=            <integer> [ <fraction> ] [ <exponent> ]
    <integer> ::=           "0" | /[1-9]+/ | "-" <integer>
    <fractional> ::=        "." /[0-9]+/
    <exponent> ::=          ("E" | "e") [ "-" | "+" ] /[0-9]+/
    <bool> ::=              "true" | "false"
    <fn-def> ::=            "(" <ident> { <ident> }
                                ("->" <value> | ":" <string> <string>) ")"
    <ident> ::=             <startc> { <identc> }
    <startc> ::=            /A-Za-z_/ or non-ASCII Unicode
    <identc> ::=            <startc> | /[0-9-]/
    <fn-app> ::=            "(" <ident> { <value> } ")"
    <var> ::=               "$" <ident>
    
  • It’s basically just JSON that can generate itself !

    You have inspired me.

    I will make JSON with meta-programming

    I will call it DyJSON, i.e. “Dynamic JSON” but pronounced “Die, Jason!”

    It is JSON with meta-programming and the ability to call C functions from libraries

    Example:

    # This is a line comment
    
    # Put your function definitions up here
    (concat str_a str_b: "concat" "my-lib.so") # Import a function through a C ABI
    (make-person first_name last_name email -> { # Define our own generative func
        "name": (concat (concat $first_name " ") $last_name),
        "email": $email
    })
    
    # And then the JSON part which uses them
    [
        (make-person "Jenny" "Craig" "jenn.craig.420@hotmail.com"),
        (make-person "Parson" "Brown" null)
    ]
    

    As you can see, it is also a LISP to some degree

    Is there a need for this? A purpose? No. But some things simply should exist

    Thank you for helping bring this language into existence

  • As others said, it means nullable, but to put it in more intuitive, less-jargony way - it’s a question mark bc you don’t know if the value is actually there or not. It could be a Singleton, but it isn’t until you check if there is a value. Whereas if you have, idk, int a no question mark, then you’re saying you actually have data.

    Essentially with C# 8, they “removed” null and reused the idea of null references in creating what is essentially an Option like in other languages. You either have some data of some type, or none (a null reference, in this case). By default, everything has to be there. Then when you need null, e.g. you may not have something initialized or an operation could fail, you explicitly grab for it. Thus it reduces null pointer bugs. If you don’t need nullability, you can ensure that you don’t accidentally write in an issue. It safety checks statements and parameters.

  • Ah I see. So the complaints aren’t really in the feature-set or design of the app, but rather the optimization.

    That makes sense to me now. I was coming from the perspective of “I really like how information is organized and how collaboration works” not from a “does this app function well.”

    I’ve never really had any performance issues, personally. Perhaps that’s bc I always used the Linux app back when I used teams and had a beefy PC. It had its own issues, but they were really with getting it to run in the first place. Once I could get it running, it always worked well for me.

    Also, I was using it a couple years ago, pre-copilot, so maybe that’s added to the crappiness