Wulfsta's recent activity

  1. Comment on Do you have an internal narrative or monologue, and if so what do you mean by that? in ~talk

    Wulfsta
    (edited )
    Link
    It depends on if it's useful for what I'm doing; I can generally control how I'm thinking about something and will choose different tools depending on the action. For instance, when typing...

    It depends on if it's useful for what I'm doing; I can generally control how I'm thinking about something and will choose different tools depending on the action. For instance, when typing comments like this I will narrate the comment as typing, because it makes it read more like speech than it otherwise would. I also will narrate it back when reading it once, and then read it again without narrating it in my head. When programming I usually don't narrate what I'm typing, I just think about the structure of the code - if I need to force myself to slow down and find a bug I will start narrating. One caveat to all this is that I seem to constantly have music playing in my head - I have no idea how that intersects with this discussion. More interestingly, I am usually unable to visualize individual objects (I can visualize an image of something I've seen before, like a very inaccurate photograph), but I can sort of feel them as if I am touching them instead. Calling it touch is a bit wrong - it's really closer to proprioception, but with an object rather than my body. I have been able to think about some higher dimensional objects like this in the past, but it requires a lot of hard concentration.

    Edit: Occasionally when I need to remember to do something and I'm busy I'll repeat it in my head a few times, then it will just sort of jump to the surface later when I'm done higher priority things.

    Edit 2: To actually contribute to the discussion a bit, I'm thoroughly convinced that anything that can vaguely be considered a language heavily changes how thought works. Mathematics, programming, and music all come to mind as possible examples.

    5 votes
  2. Comment on Where to get music in a downloadable format (other than itunes) ? in ~music

    Wulfsta
    Link Parent
    I've recently had reason to start tending to my offline music library again, and Bandcamp has been my go to for purchasing albums. So far I've only had to purchase one Kae Tempest album that I...

    I've recently had reason to start tending to my offline music library again, and Bandcamp has been my go to for purchasing albums. So far I've only had to purchase one Kae Tempest album that I couldn't get on there.

    3 votes
  3. Comment on Where to get music in a downloadable format (other than itunes) ? in ~music

    Wulfsta
    Link Parent
    Second this, Bandcamp is amazing.

    Second this, Bandcamp is amazing.

    3 votes
  4. Comment on How do you manage data backups? in ~tech

    Wulfsta
    Link Parent
    I run it on the NixOS unstable branch (which is rolling) which packages it in a way that (I think) is complaint with the license. Edit: If you start using ZFS make sure you use something like fio...

    I run it on the NixOS unstable branch (which is rolling) which packages it in a way that (I think) is complaint with the license.

    Edit: If you start using ZFS make sure you use something like fio to test your sector size and set it correctly on the ZFS pool.

    1 vote
  5. Comment on How do you manage data backups? in ~tech

    Wulfsta
    Link Parent
    Honestly it's mostly for the checkpointing functionality. On top of that, ZFS/btrfs are more well suited to flash storage than ext4 (to my knowledge) - but there's also F2FS if you want a...

    Honestly it's mostly for the checkpointing functionality. On top of that, ZFS/btrfs are more well suited to flash storage than ext4 (to my knowledge) - but there's also F2FS if you want a filesystem similar to ext4 for flash. One last major benefit is that you don't need to know the size of different partitions in advance if you want to do things like only run checkpointing on your home directory.

    Edit: Oops, forgot to answer the why don't distos use ZFS/btrfs: ZFS is licensed in a way that makes it so it cannot be distributed with the Linux kernel, and btrfs has a history of lacking stability. I actually have experienced btrfs instability myself - I much prefer ZFS.

    1 vote
  6. Comment on How do you manage data backups? in ~tech

    Wulfsta
    Link Parent
    I removed the hardware write switch and flashed a new BIOS from here. After that, I installed Arch Linux. A bit more information in this topic.

    I removed the hardware write switch and flashed a new BIOS from here. After that, I installed Arch Linux. A bit more information in this topic.

    1 vote
  7. Comment on How do you manage data backups? in ~tech

    Wulfsta
    Link
    I don't really heavily concern myself with backups, because there's not a lot of data I care about saving, and have been successful in the past recovering data from dying machines/drives. I use...

    I don't really heavily concern myself with backups, because there's not a lot of data I care about saving, and have been successful in the past recovering data from dying machines/drives. I use ZFS almost everywhere, and have two drives on my main machine - one is a 1TB SSD and the other is a 10TB HDD. I keep a copy of important data on both, and very important data on drives on other machines. On my chromebook that has been converted to linux I keep two btrfs partitions on the same drive in a RAID1 configuration, so if it starts failing I'll be alerted early enough to pull data off it (this has happened before).

    1 vote
  8. Comment on What's something you wish people outside of your field knew/understood? in ~talk

    Wulfsta
    Link Parent
    You're correct, there's very little reason to know this unless you're writing a textbook on, studying, or researching mathematics. That said, most people think that what they saw in high school or...

    You're correct, there's very little reason to know this unless you're writing a textbook on, studying, or researching mathematics. That said, most people think that what they saw in high school or the beginning of college is what math is like. Most people just think that you start at the reals without considering how strange it is to be able to say that there's no way to write pi, but we can figure out what its value is. The real numbers are weird when you get down to it.

    5 votes
  9. Comment on What's something you wish people outside of your field knew/understood? in ~talk

    Wulfsta
    Link
    This is definitely a bit strange, but it would be nice if people other than mathematicians understood numbers. In particular, people take for granted just how hard it is to create the real numbers...

    This is definitely a bit strange, but it would be nice if people other than mathematicians understood numbers. In particular, people take for granted just how hard it is to create the real numbers and begin formally talking about things like square roots or pi. Unfortunately, something that sounds as simple as constructing the integers is far more difficult than someone unfamiliar with math would expect. If anyone reading has some mathematical background and doesn't already know what I'm talking about, I would recommend Landau's Foundations of Analysis.

    10 votes
  10. Comment on What’s something you have an unusually strong fondness for? in ~talk

    Wulfsta
    Link
    For me, coffee. Most people seem to want it for the caffeine, and mask the horrible thing they bought or made with loads of dairy and sugar. Personally, I have a hand grinder, chemex (as well as...

    For me, coffee. Most people seem to want it for the caffeine, and mask the horrible thing they bought or made with loads of dairy and sugar. Personally, I have a hand grinder, chemex (as well as various other brewers), and gooseneck kettle I use every day. I also tend to buy beans from local shops (or those I know and want to support) with a preference for natural and anoreobic processes. I have been getting into home espresso since I recently received an entry level machine as a gift. I have been thinking about building a custom espresso grinder once I can reasonably do so without pandemic related risks.

    10 votes
  11. Comment on NixOS Configuration for a VPS in ~comp

    Wulfsta
    (edited )
    Link Parent
    Usually I will su to root then to that user and do everything as that user. I find this to be the easiest way to ensure that ownership is correct. If I needed to deploy many of these I'd likely...

    Usually I will su to root then to that user and do everything as that user. I find this to be the easiest way to ensure that ownership is correct. If I needed to deploy many of these I'd likely script all of that instead - but I have no need to deploy many servers.

  12. NixOS Configuration for a VPS

    Since I took so long to reply to Tips to use NixOS on a server? by @simao, I decided to create a new topic to share my configs. Hopefully this is informative for anyone looking to do similar...

    Since I took so long to reply to Tips to use NixOS on a server? by @simao, I decided to create a new topic to share my configs. Hopefully this is informative for anyone looking to do similar things - I'll also gladly take critiques, since my setup is probably not perfect.

    First, I will share the output of 'lsblk' on my VPS:

    NAME      MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
    vda       253:0    0   180G  0 disk  
    ├─vda1    253:1    0   512M  0 part  /boot
    └─vda2    253:2    0 179.5G  0 part  
      └─crypt 254:0    0 179.5G  0 crypt 
    

    That is, I use an unencrypted /boot partition, vda1, with GRUB 2 to prompt for a passphrase during boot, to unlock the LUKS encrypted vda2. I prefer to use ZFS as my file system for the encrypted drive, and LUKS rather than ZFS encryption. This is an MBR drive, since that's what my VPS provider uses, though UEFI would look the same. The particular way I do this also requires access through the provider's tools, and not ssh or similar. The hardware-configuration.nix file reflects this:

    Click to view the hardware configuration file
    # Do not modify this file!  It was generated by ‘nixos-generate-config’
    # and may be overwritten by future invocations.  Please make changes
    # to /etc/nixos/configuration.nix instead.
    { config, lib, pkgs, modulesPath, ... }:
    
    {
      imports =
        [ (modulesPath + "/profiles/qemu-guest.nix")
        ];
    
      boot.initrd.availableKernelModules = [ "aes_x86_64" "ata_piix" "cryptd" "uhci_hcd" "virtio_pci" "sr_mod" "virtio_blk" ];
      boot.initrd.kernelModules = [ ];
      boot.kernelModules = [ ];
      boot.extraModulePackages = [ ];
    
      fileSystems."/" =
        { device = "rpool/root/nixos";
          fsType = "zfs";
        };
    
      fileSystems."/home" =
        { device = "rpool/home";
          fsType = "zfs";
        };
    
      fileSystems."/boot" =
        { device = "/dev/disk/by-uuid/294de4f1-72e2-4377-b565-b3d4eaaa37b6";
          fsType = "ext4";
        };
    
      swapDevices = [ ];
    
    }
    
    I disobey the warning at the top to add `"aes_x86_64"` and `"cryptd"` to the available kernel modules, to speed up encryption. The `configuration.nix` follows:
    Click to view the configuration file
    # Edit this configuration file to define what should be installed on
    # your system.  Help is available in the configuration.nix(5) man page
    # and in the NixOS manual (accessible by running ‘nixos-help’).
    
    { config, lib, pkgs, ... }:
    
    {
      imports =
        [ # Include the results of the hardware scan.
          ./hardware-configuration.nix
        ];
    
      # Hardware stuff
      # add the following to hardware-configuration.nix - speeds up encryption
      #boot.initrd.availableKernelModules ++ [ "aes_x86_64" "cryptd" ];
      boot.initrd.luks.devices.crypt = {
        # Change this if moving to another machine!
        device = "/dev/disk/by-uuid/86090289-1c1f-4935-abce-a1aeee1b6125";
      };
      boot.kernelParams = [ "zfs.zfs_arc_max=536870912" ]; # sets zfs arc cache max target in bytes
      boot.supportedFilesystems = [ "zfs" ];
      nix.maxJobs = lib.mkDefault 6; # number of cpu cores
    
      # Use the GRUB 2 boot loader.
      boot.loader.grub.enable = true;
      boot.loader.grub.version = 2;
      # boot.loader.grub.efiSupport = true;
      # boot.loader.grub.efiInstallAsRemovable = true;
      # boot.loader.efi.efiSysMountPoint = "/boot/efi";
      # Define on which hard drive you want to install Grub.
      boot.loader.grub.device = "/dev/vda"; # or "nodev" for efi only
      boot.loader.grub.enableCryptodisk = true;
      boot.loader.grub.zfsSupport = true;
    
      networking.hostName = "m"; # Define your hostname.
      # networking.wireless.enable = true;  # Enables wireless support via wpa_supplicant.
    
      # The global useDHCP flag is deprecated, therefore explicitly set to false here.
      # Per-interface useDHCP will be mandatory in the future, so this generated config
      # replicates the default behaviour.
      networking.useDHCP = false;
      networking.interfaces.ens3.useDHCP = true;
      networking.hostId = "aoeu"; # set this to the first eight characters of /etc/machine-id for zfs
      networking.nat = {
        enable = true;
        externalInterface = "ens3"; # this may not be the interface name
        internalInterfaces = [ "wg0" ];
      };
      networking.firewall = {
        enable = true;
        allowedTCPPorts = [ 53 25565 ]; # open 53 for DNS and 25565 for Minecraft
        allowedUDPPorts = [ 53 51820 ]; # open 53 for DNS and 51820 for Wireguard - change the Wireguard port
      };
      networking.wg-quick.interfaces = {
        wg0 = {
          address = [ "10.0.0.1/24" "fdc9:281f:04d7:9ee9::1/64" ];
          listenPort = 51820;
          privateKeyFile = "/root/wireguard-keys/privatekey"; # fill this file with the server's private key and make it so only root has read/write access
    
          postUp = ''
            ${pkgs.iptables}/bin/iptables -A FORWARD -i wg0 -j ACCEPT
            ${pkgs.iptables}/bin/iptables -t nat -A POSTROUTING -s 10.0.0.1/24 -o ens3 -j MASQUERADE
            ${pkgs.iptables}/bin/ip6tables -A FORWARD -i wg0 -j ACCEPT
            ${pkgs.iptables}/bin/ip6tables -t nat -A POSTROUTING -s fdc9:281f:04d7:9ee9::1/64 -o ens3 -j MASQUERADE
          '';
    
          preDown = ''
            ${pkgs.iptables}/bin/iptables -D FORWARD -i wg0 -j ACCEPT
            ${pkgs.iptables}/bin/iptables -t nat -D POSTROUTING -s 10.0.0.1/24 -o ens3 -j MASQUERADE
            ${pkgs.iptables}/bin/ip6tables -D FORWARD -i wg0 -j ACCEPT
            ${pkgs.iptables}/bin/ip6tables -t nat -D POSTROUTING -s fdc9:281f:04d7:9ee9::1/64 -o ens3 -j MASQUERADE
          '';
    
          peers = [
            { # peer0
              publicKey = "{client public key}"; # replace this with the client's public key
              presharedKeyFile = "/root/wireguard-keys/preshared_from_peer0_key"; # fill this file with the preshared key and make it so only root has read/write access
              allowedIPs = [ "10.0.0.2/32" "fdc9:281f:04d7:9ee9::2/128" ];
            }
          ];
        };
      };
    
      # Configure network proxy if necessary
      # networking.proxy.default = "http://user:password@proxy:port/";
      # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
    
      nixpkgs.config = {
        allowUnfree = true; # don't set this if you want to ensure only free software
      };
    
      # Select internationalisation properties.
      i18n.defaultLocale = "en_US.UTF-8";
      console = {
        font = "Lat2-Terminus16";
        keyMap = "us";
      };
    
      # Set your time zone.
      time.timeZone = "America/New_York"; # set this to the same timezone your server is located in
    
      # List packages installed in system profile. To search, run:
      # $ nix search wget
      environment = {
        systemPackages = with pkgs; let
          nvimcust = neovim.override { # lazy minimal neovim config
            viAlias = true;
            vimAlias = true;
            withPython = true;
            configure = {
              packages.myPlugins = with pkgs.vimPlugins; {
                start = [ deoplete-nvim ];
                opt = [];
              };
              customRC = ''
                if filereadable($HOME . "/.config/nvim/init.vim")
                  source ~/.config/nvim/init.vim
                endif
    
                set number
    
                set expandtab
    
                filetype plugin on
                syntax on
    
                let g:deoplete#enable_at_startup = 1
              '';
            };
          };
        in
        [
          jdk8
          nvimcust
          p7zip
          wget
          wireguard
        ];
      };
    
      # Some programs need SUID wrappers, can be configured further or are
      # started in user sessions.
      # programs.mtr.enable = true;
      # programs.gnupg.agent = {
      #   enable = true;
      #   enableSSHSupport = true;
      #   pinentryFlavor = "gnome3";
      # };
    
      # List services that you want to enable:
    
      # Enable the OpenSSH daemon.
      services = {
        dnsmasq = {
          enable = true;
          # this allows DNS requests from wg0 to be forwarded to the DNS server on this machine
          extraConfig = ''
            interface=wg0
          '';
        };
        fail2ban = {
          enable = true;
        };
        openssh = {
          enable = true;
          permitRootLogin = "no";
        };
        zfs = {
          autoScrub = {
            enable = true;
            interval = "monthly";
          };
        };
      };
    
      # Set sudo to request root password for all users
      # this should be changed for a multi-user server
      security.sudo.extraConfig = ''
        Defaults rootpw
      '';
    
      # Define a user account. Don't forget to set a password with ‘passwd’.
      users.users = {
        vpsadmin = { # admin account that has a password
          isNormalUser = true;
          home = "/home/vpsadmin";
          extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
          shell = pkgs.zsh;
        };
        mcserver = { # passwordless user to run a service - in this instance minecraft
          isNormalUser = true;
          home = "/home/mcserver";
          extraGroups = [];
          shell = pkgs.zsh;
        };
      };
    
      systemd = {
        services = {
          mcserverrun = { # this service runs a systemd sandboxed modded minecraft server as user mcserver
            enable = true;
            description = "Start and keep minecraft server running";
            wants = [ "network.target" ];
            after = [ "network.target" ];
            serviceConfig = {
              User = "mcserver";
              NoNewPrivileges = true;
              PrivateTmp = true;
              ProtectSystem = "strict";
              PrivateDevices = true;
              ReadWritePaths = "/home/mcserver/Eternal_current";
              WorkingDirectory = "/home/mcserver/Eternal_current";
              ExecStart = "${pkgs.jdk8}/bin/java -Xms11520M -Xmx11520M -server -XX:+AggressiveOpts -XX:ParallelGCThreads=3 -XX:+UseConcMarkSweepGC -XX:+UnlockExperimentalVMOptions -XX:+UseParNewGC -XX:+ExplicitGCInvokesConcurrent -XX:MaxGCPauseMillis=10 -XX:GCPauseIntervalMillis=50 -XX:+UseFastAccessorMethods -XX:+OptimizeStringConcat -XX:NewSize=84m -XX:+UseAdaptiveGCBoundary -XX:NewRatio=3 -jar forge-1.12.2-14.23.5.2847-universal.jar nogui";
              Restart = "always";
              RestartSec = 12;
            };
            wantedBy = [ "multi-user.target" ];
          };
          mcserverscheduledrestart = { # this service restarts the minecraft server on a schedule
            enable = true;
            description = "restart mcserverrun service";
            serviceConfig = {
              Type = "oneshot";
              ExecStart = "${pkgs.systemd}/bin/systemctl try-restart mcserverrun.service";
            };
          };
        };
        timers = {
          mcserverscheduledrestart = { # this timer triggers the service of the same name
            enable = true;
            description = "restart mcserverrun service daily";
            timerConfig = {
              OnCalendar = "*-*-* 6:00:00";
            };
            wantedBy = [ "timers.target" ];
          };
        };
      };
    
      # This value determines the NixOS release from which the default
      # settings for stateful data, like file locations and database versions
      # on your system were taken. It‘s perfectly fine and recommended to leave
      # this value at the release version of the first install of this system.
      # Before changing this value read the documentation for this option
      # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
      system.stateVersion = "20.09"; # Did you read the comment?
    
    }
    
    You'll notice that this server acts as a Wireguard endpoint and as a Minecraft server. I described the first part on the [NixOS wiki page for Wireguard](https://nixos.wiki/wiki/Wireguard) under the section that mentions dnsmasq. The second part is done using NixOS's systemd support, which can be a bit confusing at first but is easy enough once you know how it works.

    Edit: Also, the provider I use is ExtraVM, who has been excellent.

    6 votes
  13. Comment on Tips to use NixOS on a server? in ~comp

    Wulfsta
    (edited )
    Link
    I have a VPS that I run NixOS on, I'll share my configs in a few hours. Edit: still plan on doing this, just got busy and didn't have the chance to. Edit 2: See this topic.

    I have a VPS that I run NixOS on, I'll share my configs in a few hours.

    Edit: still plan on doing this, just got busy and didn't have the chance to.

    Edit 2: See this topic.

    5 votes
  14. Comment on [SOLVED] A background process using a significant amount of CPU power stops immediately when I open task manager. Is there a way to identify what's doing thing? in ~tech

    Wulfsta
    Link
    Worst case (if you're particularly worried), nuke it and reinstall Windows.

    Worst case (if you're particularly worried), nuke it and reinstall Windows.

    2 votes
  15. Comment on [SOLVED] Looking for the name of a specific board game, recommended on tildes in ~games.tabletop

    Wulfsta
    Link
    Was it this discussion?

    Was it this discussion?

    1 vote
  16. Comment on Does anyone here use a standing desk? in ~life

    Wulfsta
    (edited )
    Link
    Prior to the pandemic I used one at work due to a condition I have that requires me to either get up and ambulate frequently or just stay mobile. After months of using what is essentially bins...

    Prior to the pandemic I used one at work due to a condition I have that requires me to either get up and ambulate frequently or just stay mobile. After months of using what is essentially bins stacked on each other while working from home, I finally decided to order from Fully when they had a sale (I had been thinking about constructing a permanent standing desk myself, but also have been avoiding going out to get materials). Fully has been recommended to me in the past, so I decided to just go with a desk from them. I ended up getting a 72" with no cutout, no grommets, extended legs, long feet, and a monitor arm. So far I like it, and can recommend one, though I don't have any information about how it will age. I highly recommend a mat to stand on as well if you go this route and don't have carpeted floors - here is the one I have.

    8 votes
  17. Comment on Share a link to good singing in a language that you don't understand in ~music

  18. Comment on I'm having a little trouble with my 'gifted' son in ~humanities

    Wulfsta
    (edited )
    Link
    I was like this when I was a kid. My experience was that I was uninterested in a lot of classwork because it was easy and I didn't put any effort into learning material in school. I ended up...

    I was like this when I was a kid. My experience was that I was uninterested in a lot of classwork because it was easy and I didn't put any effort into learning material in school. I ended up interested in academic material for the first time when I took a programming class, and then found what I liked in college after a mathematician showed me some proofs (while eliding a few details since I was inexperienced in the field) and I began to understand what mathematical beauty is. I now hold a degree in mathematics.

    I got lucky when I found mathematics. It was only circumstance that led up to meeting someone truly passionate about the subject and having them show me why they felt that way. I can't tell you what will spark passion for a subject in your son, everyone is different and having a talent for something does not mean that he will choose to pursue it. I can say this - encourage him to explore his interests and if something satisfies him intellectually then support him in finding out more about it.

    And now, a warning - if you force him to study things on top of what he already must do for school, he will likely see it as more mind numbing work and it will serve to push him away from academia. I experienced this myself. I cannot imagine it's anything other than a balancing act to try encouraging him to find a subject he is passionate for and doing it in a way that does not result in discouragement.

    I hope someone can elaborate on this more eloquently than myself, I don't feel I've done a good job of conveying exactly what I intend.

    6 votes
  19. Comment on YouTube Vanced: A privacy-friendly YouTube app for Android with ads and telemetry stripped out in ~tech

    Wulfsta
    Link Parent
    It's not an irrelevant technical difference for anyone who has a data or bandwidth limit - reducing the amount of data requested is an entirely reasonable decision for the end user of the...

    It's not an irrelevant technical difference for anyone who has a data or bandwidth limit - reducing the amount of data requested is an entirely reasonable decision for the end user of the protocol. It is very literally how the web works. Inserting an advertisement into a video would be what many creators already do with sponsors.

    I believe there are state parks in the USA that offer spaces for advertising, and thus are partially funded by this revenue.

    14 votes
  20. Comment on YouTube Vanced: A privacy-friendly YouTube app for Android with ads and telemetry stripped out in ~tech

    Wulfsta
    Link Parent
    While Youtube is a platform where it's expected that most users will view ads to watch videos, one of the fundamental points to be made is that it's built on the web. The web is not a pushed based...

    While Youtube is a platform where it's expected that most users will view ads to watch videos, one of the fundamental points to be made is that it's built on the web. The web is not a pushed based media, and as such you are not "blocking" ads - you are refusing to request them.

    To add to this, advertisements are not traditionally a form of payment. Are you stealing if you do not look at a billboard near a park?

    19 votes