Threads for bahlo

  1. 2

    git-commit-co-author prompts you to choose a co-author (using fzf) and then runs git commit with Co-authored-by: <coauthor> at the end (see GitHub docs):

          # Thanks https://github.com/hpcsc/dotfiles/blob/63f194aa553ef83f9edec76991f2265f7962b00e/link/common/zsh/.functions/fzf-functions/fcm
          function git-commit-co-author() {
            SELECTED_AUTHORS=$(git shortlog -sne | awk '{$1=""}1' | fzf -m)
            MESSAGE="\n\n"
            # convert newline-delimited string to array, zsh way: https://stackoverflow.com/a/2930519
            AUTHORS=("''${(f)SELECTED_AUTHORS}")
            for AUTHOR in $AUTHORS[@]; do
              MESSAGE="''${MESSAGE}Co-authored-by: ''${AUTHOR}\n"
            done
            if [[ "$1" == "-m" ]]; then
              git commit -m "$2$(echo -e ''${MESSAGE})"
            else 
              git commit $@ -t <(echo -e ''${MESSAGE})
            fi
          }
    

    I have aliased it to gcap and run it regularly when pair-programming. It’s not perfect, there are some unhandled edge cases but it works perfectly for me.

    1. 4

      The biggest challenge was storage. Hetzner charges around €50/month for a 1 TB volume (others have comparable pricing).

      They also offer dedicated servers with 8TB of storage and 64GB of RAM for around €45 a month. I know because I’ve been looking into a similar setup for hosting my plex library. I’m still trying to decide whether I want to rent a dedicated server, or bite the bullet and build a proper homelab.

      1. 4

        Why not use a Hetzner storagebox ( https://www.hetzner.com/storage/storage-box ) or even a storage share ( https://www.hetzner.com/storage/storage-share )? 5 TB for €11/month for example, and traffic between that and a hetzner cloud vm (or any of the real servers there) is free (and fast enough for stuff like this). I don’t think there is a real need to have block (nor blob) storage, mounting webdav, samba or sshfs works perfectly fine in my experience.

        1. 1

          I actually wasn’t aware of that (apparently I didn’t do enough research). In my particular case though, I want to use the machine to host a few VMs as well. €11/month for 5TB (€12 after VAT for me) is pretty good though. If storage boxes supported iSCSI, I’d definitely consider it, but for now I’m leaning toward the homelab option as I don’t strictly need anything public facing.

          1. 2

            Yeah, if they offered block storage via iSCSI, that’d be something else. We can always dream :-)

            Personally, I have a Hetzner AMD box (can’t remember which exactly) with 2 ssd drives (raided) that host my containers and VMs, and a storage box mounted via CIFS for anything largeish that doesn’t need to be accessed fast, as well as backup of my VM snapshots and other data. That worked out quite well so far, esp. for the price.

            1. 1

              That’s a nice solution, and I’ll look into it. A smaller amount RAIDed NVMe attached directly to the server for VMs, and a reasonably sized storage box mounted via CIFS would actually be better for my use case than 8TB of slow HDDs, which now looks like a poor compromise between the two needs.

              I’m curious now about the rest of your setup. What host OS / hypervisor / container-orchestrator are you using for containers/VMs?

              1. 1

                Yes, I thought the same when considering the spinning disk version of this server, and the storage box solution also has the advantage that I don’t have to worry about raiding the hard-disks to get some redundancy, effectively cutting storage space in half. I trust the Hetzner storage box will do a much better job at keeping my data relatively safe than I could. I was a bit concerned about access performance at first, but for what I do with it (which is arguably nothing very demanding), it has been no problem at all.

                It’s been a while since I set-up that box, it just chugs along without many problems, just doing regular updates on it. This is the second iteration of my setup, for the first one I used Proxmox, which worked quite well, but for this I didn’t even bother, and just installed k3s on Debian stable. That runs most of my services. I also have kvm to host a Mac OS X VM which I use to build Mac binaries, and another special purpose Linux VM if I remember right. It’s a bit more effort to setup than Proxmox, but overall more flexible and nowadays it’s just considerably easier to do containers in kubernetes than lxc.

                I’ve got my 2 ssds split into half each, and using a raid1 btrfs for system and boot (so if I loose one disk the system will still boot – plus there might be a tiny bit better read performance) and data I want to keep a bit more safe (in addition to backup), and the other half is just for ‘normal’ fast storage that is attached to some of the vms/containers, so effectively I’m getting ~ 750GB of fast storage space, 250 of which are raid-1’ed.

                Ah, and as I’ve written in another comment, I also use gocryptfs to encrypt part of the storagebox filesystem that is mounted via CIFS (so, basically gocryptfs inside a samba share). Which at first was just an experiement, because I thought the performance would surely be atrocious. But it turned out to not be too bad, every few months it hangs itself, but a force remount usually fixes that.

                Wireguard for accessing the box and the VMs.

          2. 1

            Someone on Twitter (was that you?) also suggested that, that looks great. I think I’ll switch to a storage box, rclone supports SFTP after all.

            1. 1

              Or you could just go with CIFS and don’t use rclone at all. That works quite well for my Hetzner root box. I haven’t used it with cloud VMs myself yet, but I don’t think it’d work any different. I’ve encrypted my storagebox using gocryptfs (which probably adds a bit of latency), but even without that I don’t see any advantage of using SFTP over CIFS from a Hetzner VM. Filesystem listings and random access should be quite a bit faster compared to the rclone solution, but that’s just me guessing, maybe rclone is exceptionally good with caching.

              But I’m probably just over-optimizing, esp. if it’s just for Plex. As long as you make sure to have the Plex metadata locally on your VM disk, the worst that will happen is that a movie starts a second or two later, probably.

              EDIT: or you could just filesystem-mount via sshfs or webdav if you don’t like CIFS? I haven’t tried that myself, so it might not work with storagebox, but I’d imagine any (more or less) ‘native’ way to mount a filesystem would always be better than rclone, if available?

          3. 3

            Homelabs are definitely cool! If you have a public IPv4 this is probably the cheapest option.

            The dedicated server makes sense when you have media that needs to be re-encoded as you‘ll have access to the hardware encoder.

            1. 1

              8TB storage and 64GB of RAM for around €45 a month

              Really? Is there a catch? That’s a pretty ridiculously low price even just for 8 TB block storage alone without any compute!

              1. 3
                1. Spinning rust

                2. Limited selection of data centers (Germany and Finland)

                3. You’re literally just renting two hard disks, with no bells and whistles so you don’t have any redundancy or reliability that cloud block storage (e.g. AWS EBS) would provide.

                By default it’s two 4TB mechanical disks configured as software RAID1, but you should be able to install your own OS and treat it as 8TB of RAID0 block storage if you want.

                https://www.hetzner.com/dedicated-rootserver/ex42/

                That works fine for a server storing torrented pirated media linux ISOs, but it’s not ideal for everything.

            1. 1

              I wonder what’s the cheapest and least worrisome home setup for Plex. Some sort of RPi or TinyMiniMicro build with an external HD? Plug it in, configure wifi, ssh, setup a network share, install plex with apt-get, done, and never worry about it ever again.

              (Mostly for streaming music I’ve purchased on bandcamp. Spotify with local files is annoying as hell.)

              1. 2

                I have an rpi 4 with 8 GB of ram with an external hard drive. It works as expected and I haven’t run into any issues (beside the seemingly weekly Plex auth hiccup, but that’s beyond my control). I can even do some remote streaming but then the uplink bandwidth from my home connection is the bottleneck. The rpi can even do some transcoding on the fly. It’s not as fast as a real CPU/GPU, but it’s still bearable with minimal delay.

                Edit/Addition

                I forgot to add that Plex is ok with music only if you are willing to pay/upgrade to Plex Pass, as it will give you access to their music player app (Plexamp). Playing music with the main app is rather primitive.

                If you want to just stream music, there are other server setup options that might be better (like airsonic). Plex is nice because it integrates video and audio streaming in a single platform, but music streaming (in the main app) is definitely second class and audiobook streaming is third class (although Prologue is an outstanding iOS player).

                1. 2

                  For the last use case you mention, I highly recommend Navidrome, another subsonic-compatible server that’s especially fast and low on resource utilization. The catch is that it’s missing some features of more mature projects like Airsonic, but development is very active and it’s getting there.

                  The subsonic-compatible approach really shines for mobile listening because the app ecosystem is very rich. For Android I can recommend Audinaut, it has good support for downloading and playing back offline and the interface is pretty slick. There are dozens of easy to host web clients for subsonic compatible servers too. The downside of this approach is that multi user sharing isn’t really seamless compared to something like Plex.

                  1. 1

                    Airsonic looks great, it‘s hard to beat Prism and Prologue on iOS though

                    1. 1
                      1. 1

                        I’m using Navidrome and I like it quite a bit. Especially on mobile, where it’s a lot more convenient than dumping music onto the phone.

                        That said, I’m not a big fan of the interface, but it’s a massive step up on frontend and backend over Subsonic and forks.

                        1. 1

                          I’ve used CherryMusic0 for browser based streaming for a few years, it’s great as well! Navidrome is pretty awesome, tho.

                    1. 4

                      Move all my servers to NixOS, tweak my Emacs from scratch setup, work on my personal assistant (written in Rust). Excited for all of it!

                      1. 2

                        Working on my personal assistant. Will start with simple useful things like:

                        • Scanner → FRP upload → OCR & Compress → Send link per email, all done locally
                        • Forward emails with „Remind me in 10 days“ and get reminded

                        I always wanted something like that and I love the flexibility of building it just for myself/my family. If you have more ideas let me know!

                        1. 2

                          h2c also stands for HTTP/2 Cleartext which confused me for a second.

                          1. 1

                            Need to replace the plug of the extension cord for our electric lawnmower.

                            Other than that Arnes Notes and Arnes Weekly take up most of my non-family time on weekends. Maybe I‘ll get to write some more Rust 🦀

                            1. 1
                              • Work on my newsletter Arnes Weekly
                              • Collect more notes for Arnes Notes
                              • Record a podcast Episode about the WWDC for Sprachnachrichten (German, will be out Tuesday)
                              • Play around with CircuitPython on a MagTag
                              • Spend time with my family
                              1. 2

                                An org-based iOS habit tracker. Adding multi day support for weekly habits. https://twitter.com/xenodium/status/1400775889860894720?s=21

                                1. 2

                                  Looks super interesting, going to give this a try!

                                  1. 3

                                    Oh yay. Would love to hear how it goes… It’s still fairly early days for it.

                                    I see arnes-notes is also org-based. High five!

                                1. 2

                                  Working on my knowledge base arnes-notes, so much fun! And reading books about team leading.

                                  1. 1
                                    • Preparing a Rust presentation for a lightning talk at work
                                    • Creating the fifth issue of my newsletter arnesweekly.email
                                    • Building Doors for the shelves in my office (this will be interesting)