Threads for seanlane

  1. 5

    Seems like a good list, I need to try most of these. I’d have to include syncthing and caddy as well, both have been flawless for me.

    I’m also pretty thankful for jellyfin as an alternative to Plex. I can’t say it’s been flawless like the other too, but overall it’s been great.

    1. 33

      I find it so interesting thinking about the way that programming languages can reflect natural language with dialects.

      I feel like you could also think about writing with a particular ‘accent’ when you are writing code that isn’t idiomatic to the language you are using. For example, if you came from Go to Ruby you might start writing a bunch of for loops, which is valid but not typically how Ruby is written. You are speaking Ruby, with a Go accent.

      1. 14

        The world has seen so much bad Fortran code that the name of the language is now a synonym for bad coding. Many of us have never seen real Fortran code, but we know what coders mean when they say, “You can write Fortran in any language.”

        How Not to Write Fortran in Any Language

        1. 8

          This has been my exact experience with Ruby. I started using it within Amazon, where they utilize live pipeline templates (LPTs) that are packages built out with layers and layers of monkey-patched Ruby, and these in turn spit out generated build artifacts, e.g. Cloudformation templates.

          Now my current role makes use of a Rails monolith and even after some time, the differences are still jarring and I’m still trying to rid myself of the muscle memory from my AWS experience, speaking that LPT dialect of Ruby, as you put it.

          1. 4

            Having maintained LPTs, Octane templates, etc., you’re exactly correct. Horrifying kludge, but we’re steadily replacing it with.. TypeScript, Java/Kotlin and Python. ;)

          2. 6

            programming languages can reflect natural language

            I think a lot about how Perl was designed by a linguist, and it shows.

            1. 4

              In a good way, or in a bad way?

              1. 8

                Yes.

                (In all seriousness, I suspect a bad way for actually implementing it; does an independent implementation of Perl 5 that’s compatible mostly exist? But it is fascinating less from a PLT and more a “you can phrase it like that?” angle you see in NLP…)

            2. 4

              A lot of programming languages have constructs that “infect” the code base. Once they’re in use, you have to keep using them. Some I can think of:

              • async in Rust
              • Rc vs owned in Rust
              • null vs Optional in Java
              • FP vs OOP style in Scala
              • Akka in Scala
              • naming schemes (tends to be a problem in older languages like Python or C++)
              1. 5

                I’m confused about the mention of Rc here? Rcs are owned. What I think is a infecting problem is that you can’t be generic over Arc vs Rc.

            1. 23

              I just bought domain and use it. It also allows me to setup TLS via Let’s Encrypt without need to adding root cert everywhere. IMHO perfect solution, and not that expensive or troublesome. I have also 100% guarantee, that there will be no conflicts.

              1. 3

                Only drawback some people may raise is the risk of domain name enumeration, where a would be attacker could enumerate all devices and services on your network just by looking at public DNS.

                That said, I don’t think that’s really a problem.

                1. 12

                  Only drawback some people may raise is the risk of domain name enumeration, where a would be attacker could enumerate all devices and services on your network just by looking at public DNS.

                  How? Just do local DNS resolution on the network using that domian. For example, you might have a public DNS entry for foobar.com, but you might have DNS for me.foobar.com, bazz.foobar.com, etc on your local network. So requests for those on your local network are serviced by your local network, and you have no mention of them in the public DNS. Am I missing something?

                  1. 3

                    That requires you to have a split-horizon DNS configuration. It’s pretty easy if you’re running your own DNS resolver but most ISP-provided consumer routers don’t support it and so you’ll also need to be running your own DHCP server. You might be able to put an SOA record in that points to a LAN IP but that will only work for devices running their own caching resolver.

                    1. 2

                      I have to have that anyway because my modem/router does not support connecting to the WAN IP from the LAN. I can specify the DNS server I want to use through the modem, which i have avoided up to now because i’ve had trouble with dnsmasq (and/or the wifi drivers for the EEEPC laptopserver it’s running from. Especially from the iphone, but sporadically from the rest of the network too. I’ve actively intended to fix that soon for about a year now.

                      1. 1

                        I use a combination of split-horizon and hidden-primary DNS. No need for private IP ranges to be public.

                      2. 2

                        The context here is let’s encrypt TLS. If you don’t resolve the name externally, how do you pass ACME validation? Plus there’s the certificate transparency log.

                        1. 1

                          You can do ACME validation via DNS as well, so you get the ease of using an externally valid SSL certs but can restrict internal domains with split-horizon DNS

                          https://letsencrypt.org/docs/challenge-types/

                          1. 2

                            But that just moves the enumeration from foo.bar to _acme-challenge.foo.bar, right? Or an I missing something?

                            1. 1

                              No, thinking about it more I think you’re correct, you’d be subject to DNS enumeration either from your DNS provider or the certificate transparency logs, at least for the existing of the domains themselves. The information about which IPs are pointing to which domain would remain within the internal network though.

                              The exception here could be to use a wildcard certificate which let’s encrypt just started supporting last year.

                  1. 1

                    Most active side project that needs some love is a Hugo theme for self hosting recipes.

                    Other than that, I’ve got a backlog of tasks for my home server setup:

                    • Recently received 4 HDDs to start using RAID10 for better availability
                    • Use the above to incorporate ZFS into the server setup
                    • Migrate from just docker-compose to using Ansible for running different services
                    • Document, maybe write a blog post about the whole thing.
                      1. 4

                        https://twitter.com/FredericJacobs/status/1367115794363088897

                        I think it’s safe to say we’re reaching the middle of the confusion.

                      1. 3

                        I have a very similar setup but using only Docker and Ansible. I’ve been thinking about giving Kubernetes a try but aside from a lobbing experience I don’t see too much value for a personal infrastructure.

                        1. 3

                          You’re one step ahead of me, I’ve started consolidating everything into docker containers but I’m looking into trying Ansible to keep things organized. If you were to start over, would you use Ansible again?

                          1. 2

                            Short answer - yeah. I moved everything to Ansible as I grew frustrated with the time I was spending on managing the server.

                            1. 2

                              I’m currently doing something similar - trying to use Ansible when setting up something new at home, and then try to stick to only using it for reconfiguring stuff. It’s hard initially but (I hope) it gets easier over time.

                              My first semi-complex Ansible setup was setting up a new firewall/router (running VyOS) which was a lot of fun (and greater than managing iptables…) but took me some time, mostly due to me not reading the vyos documentation enough. :-)

                              I’m also looking into replacing some things here and there with Ansible configuration. Anything that is repetitive can probably be replaced with Ansible - just as with a script, but you don’t have to write as much code given an existing Ansible module.