Canadian software engineer living in Europe.

  • 1 Post
  • 98 Comments
Joined 3 years ago
cake
Cake day: June 7th, 2023

help-circle
  • Just get one of these and set everything up in a few browser tabs. Either that or use an OS with workspace support and put the different apps you want on separate workspaces.

    In our livingroom, our old laptop runs Arch Linux with GNOME. Jellyfin is on desktop 1, and Firefox is on desktop 2. Firefox runs Netflix, Spotify, and YouTube in separate tabs and switching between all of these is a keyboard shortcut on the above remote. Frankly, it’s simpler than most “smart” TVs I’ve had to work with.



  • Given that sort of description I’d bet that it is DNS actually. If you run a DNS lookup from your LAN for your domain, do you get the external IP or the internal one? You can try this with dig in Linux or nslookup in Windows (I think).

    If I’m right and you’re getting the external IP even when querying from your LAN, then what you need is either a separate DNS for your LAN or what they call a “split DNS” whe are a your domain server returns a different value depending on the originating IP.

    You can check for this by editing your hosts file. If you add your domain and local IP there and then try to ping that domain on that machine, it should work. If you’ve got a small network, you might even just copy the hosts lines between machines (this is what I do for example).


  • This wasn’t nearly as interesting as the headline made it sound.

    It’s a physical box you purchase to effectively break the law, so some of the architecture is going to be shady because it has to be.

    • it polls multiple domain servers to get around blocks (and probably updates that list regularly)
    • it obfuscates the endpoints it hits because they’re trying to secure a box they’re handing to someone else from tinkering that would allow people to access their (pirate) services without buying a box.
    • it obfuscates its user agent when connecting to a weather service to avoid being blocked.

    There’s nothing special or nefarious here. Indeed I’ve worked on projects that had to take the same considerations into account.

    The “someone else’s Hulu account” claim sounds like bullshit to me because it doesn’t make sense from a business perspective. They’d want to control the accounts in question and rotate the passwords regularly, again to avoid freeloaders. More likely they’ve paid for 25ish Hulu subscriptions in every region (hence the initial call for IP geolocation) and are then relaying credentials to a box based on this info.

    The only really sketchy thing in this whole video was the disabling of TLS checking, which was likely done to get around sketchy pirate websites with bad or nonexistent certs. It wasn’t clear though which part of the OS this applied to. If it’s only doing this for the pirate streaming, that’s sort of a bullet you have to take if you want the service. So long as the only data being sourced unencrypted/unverified is some audio and video, you’re fine (assuming you’ve already accounted for streaming such data in your jurisdiction, ie. you’ve got a VPN). If you’re pulling down software updates though, you’re gonna have a bad time.


  • Daniel Quinn@lemmy.catoComic Strips@lemmy.worldLeaving
    link
    fedilink
    English
    arrow-up
    49
    ·
    19 days ago

    The term for this “vampire load” the power being consumed across a given network that’s doing literally nothing.

    Those little LEDs are a tiny amount, but when they number in the millions, that shit adds up. People have calculated the cost in terms of tonnes of CO2.


  • At my first-ever tech job back in 2000, I was given a little Celeron desktop computer to do my work: mostly writing some ColdFusion and cutting up images in Photoshop. For the most part, the machine worked fine, except whenever I scrolled down on a webpage in Netscape, the box’s PC speaker would start screaming. I tried to ignore it, but I was in a small room with two other nerds and it was getting really annoying.

    One day, my frustrated colleague decided it was time to investigate. As part of the process, he noticed that there was very little air coming out of the power supply fan port. “Must be a busted fan and that’s causing an overheating alarm” he declared. We unplugged the box, popped it onto my desk, and opened it up. The internals were pristine. No dust, nothing. The computer was practically brand new after all.

    We were just about to crack open the power supply (not recommended, but we were getting desperate) when my colleague noticed that something was wedged inside the fan… it was the biggest (dead, thankfully) cockroach I have ever seen, at least 10cm long. For context, this was in Vancouver, Canada. Those just don’t exist there.

    My colleague jammed his screwdriver in there to grind up the cockroach carcass, then plugged the box back in. After a shittone of dessicated cockroach guts spewed out the back, my little computer was operating normally.

    As best we could guess, the monster crawled into the fan in Malaysia when as was assembled and somehow got pinned in there, died of starvation, and then stowed away to Canada.



  • The right time to look elsewhere was when Microsoft bought it.

    The next best time was when viable alternatives like GitLab and later, Codeberg appeared.

    The next best time was when it became clear that they were stealing your code to feed into their sparkly autocomplete and were going to sell it back to you.

    The next best time was when they dumped a bunch of vibecoded garbage into the codebase and killed the uptime.

    The next best time is now.

    You don’t even have to migrate all your stuff. Just start all your new projects on Codeberg, or GitLab, or something self-hosted. Once you get used to the new place, you can migrate your old stuff when you’re ready.









  • I’ve used FluxCD in the past and have looked into ArgoCD, but honestly, I’ve not seen any big benefit from either to be honest. I use k8s both at home and at work, and in both cases, we do “imperative” deploys: you run helm install ... either directly or via the CI and stuff is deployed.

    So for example at my last job, our GitLab CI just had a section triggered exclusively for merges into master that ran helm install ... for all three environments. We had three values.yaml files, one for each environment, and when we wanted to deploy a new version, the process was:

    1. Create a tag for our release version (ie. 1.2.3) and push it to the repo. This would trigger a build and push the resulting image into the container registry.
    2. Push an update to the repo with the new tag set in the appropriate Helm values file. If we wanted to deploy 1.2.3 to development but not yet to staging or production, then the tag: value in each of the environment files would look like this:
    • k8s/chart/environments/development.yaml: tag: 1.2.3
    • k8s/chart/environments/staging.yaml: tag: 1.2.2
    • k8s/chart/environments/production.yaml: tag: 1.2.2

    Once that change is pushed, the CI will automatically apply it with helm install ... and make sure that all three environments are what they’re supposed to be.

    As for dependent services, that should all be in your Helm chart so they’re stood up and torn down together. The specific case you mention about “Service A” being dependent on “Service B” but stood up before “Service B” is ready is a classic problem, but easily solved:

    The dependent service (“A” in this case) should have an entrypoint that checks for everything else before starting. Here’s what I’m using right now in a project:

    #!/bin/sh
    
    while ! nc -z "${POSTGRES_HOST}" 5432; do
      echo "Waiting for postgres..."
      sleep 0.1
    done
    echo "PostgreSQL started"
    
    touch /tmp/ready
    
    exec "$@"
    

    I’ve even got some code that checks that all the Django migrations have run first for the same situation. The Kubernetes philosophy is that any container should be able to die at any time and be eventually be brought back up and that every container needs to be prepared for this. Typically this means that your containers should operate on the basis of “if I can’t work, die, and hope the problem is solved by the time Kubernetes redeploys me”.





  • Daniel Quinn@lemmy.catoSelfhosted@lemmy.worldKitchenOwl Gone?
    link
    fedilink
    English
    arrow-up
    39
    arrow-down
    3
    ·
    5 months ago

    A platform that’s down 10% of the time and that now has a reputation of locking people out of their accounts without reason for weeks at a time cannot, under any definition of the word, be considered “stable”.

    I just… don’t get it. This whole community, we’re supposed to be building stuff for ourselves and each other, and for some reason people keep going to bat for a company that demonstrably holds every one of us in contempt.

    Just… stop using their shitty tools already.