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

  • 8 Posts
  • 316 Comments
Joined 3 years ago
cake
Cake day: June 14th, 2023

help-circle


  • For me, I always keep coming back to Arch tbh

    Sometimes I get fed up with managing a whole system and once in a blue moon bricking my system on an update, but the alternatives are always worse, and with btrfs now, I don’t have to worry about the latter problem.

    Nix was the closest to pulling me away. A centralized config? Beautiful. Static package store without dependency conflicts? Beautiful. Immutable applications? The WORST idea we’ve ever had as a community. For instance, imo, VS Code extensions are fundamentally incompatible with Nix. I spent weeks trying to get it to work doing multiple different things to try and hope it would work. It can’t. VS Code just has to be mutable.

    Anyway so I’m back to arch and have been for over a year since I tried Nix (and before that Fedora which has its own issues). Before that I had been on Arch for 4 years.

    I think I’ll stay now. It’s really the best option out there. In my mind, Arch is Linux, i.e. it’s how an OS should be built for the Linux kernel and the FOSS ecosystem, and it won’t ever be beat













  • 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