Plutus, Haskell, Nix, Purescript, Swift/Kotlin. laser-focused on FP: formality, purity, and totality; repulsed by pragmatic, unsafe, “move fast and break things” approaches


AC24 1DE5 AE92 3B37 E584 02BA AAF9 795E 393B 4DA0

  • 2 Posts
  • 8 Comments
Joined 1 year ago
cake
Cake day: June 17th, 2023

help-circle

  • Perhaps. I tend to listen to Snowden when it comes to tech. But I haven’t used it yet because all of the implementations I could use involved a bitcoin wallet. I’m a fan of crypto but that felt weird.

    Someone else reassured me that NOSTR is a very open platform and that requirement wasn’t true.

    From my research, I have found it to be far more decentralized than Lemmy’s (and the pub/sub) federated model, which would also, obviously have the same drawbacks that we see in other truly decentralized tech like crypto, torrents, and tor where you are on your own in the world, forced to literally keep the ocean of shit from infecting you! 😉

    So, I think of those things as necessary evils. For example, if I used NOSTR, I could have an address that follows me no matter what. That cryptographic hash is my NOSTR identity for better or worse. That’s pretty powerful and far more secure than a two step verification process in the long run.

    I don’t know enough about it yet. But I’d say it is a raw technology that I wouldn’t allow the criminals and trolls of the world define for me.




  • for a user that isn’t trying to maintain a dev environment, it’s a bloody lot of hassle

    I agree but I prefer it to things like ansible for sure. I’m also happy to never have to run 400 apt install commands in a specific order lest I have to start again from scratch on a new system.

    Another place I swear by it is in the declaration of drives. I used to have to use a bash script on boot that would update fstab every time I booted (I mount an NFS volume in my LAN as if it were native to my machine) then unmount it on shutdown. With nix, I haven’t had to invent solutions for that weird quirk (and any other quirks) since day one because I simply declared it like so:

    {
      config,
      lib,
      pkgs,
      inputs,
      ...
    }: {
      fileSystems."/boot" = {
        device = "/dev/disk/by-uuid/bort";
        fsType = "vfat";
      };
    
      fileSystems."/" = {
        device = "/dev/disk/by-uuid/lisa";
        fsType = "ext4";
      };
    
      swapDevices = [
        {device = "/dev/disk/by-uuid/homer";}
      ];
    
      fileSystems."/home/mrskinner/video" = {
        device = "192.168.8.130:/volume/video";
        options = ["x-systemd.automount" "noauto"];
        fsType = "nfs";
      };
    
      fileSystems."/home/mrskinner/Programming" = {
        device = "192.168.8.130:/volume/Programming";
        options = ["x-systemd.automount" "noauto"];
        fsType = "nfs";
      };
    
      fileSystems."/home/mrskinner/music" = {
        device = "192.168.8.130:/volume/music";
        options = ["x-systemd.automount" "noauto"];
        fsType = "nfs";
      };
    }
    

    IMO, where they really shine is in the context of declarative dev environments where the dependencies can be locked in place FOREVER if needed. I even use Nix to build OCI/Docker containers with their definitions declared right inside of my dev flake for situations where I have to work with people who hate the Nix way.