"Buy Me A Coffee"

  • 3 Posts
  • 42 Comments
Joined 2 years ago
cake
Cake day: June 13th, 2023

help-circle
  • More technically there’s two ways to move data between two separate services. You can either pull or push the data.

    Assume for both scenarios that the client is your phone and the server is some machine in the cloud.

    With pulls the client calls an API and the server returns a response. Generally the www works this way. You ask a server for a wab page and you effectively pull the source down to your browser.

    Pushes work the opposite, in that a server has data for the client and needs to push or otherwise give it to you. Pulls are relatively strait forward because every server has a well known name (the domain name and url). But your phone’s IP address changes constantly. So how does a server know how to contact your device? There’s generally two ways:

    1. Your device can poll (make repeated pulls to a server checking for new data)
    2. Or you can register some identifier and your IP address with some central server every time it changes. And then the server can essentially call a URL on your device directly. This is essentially what Google and Apple are doing as it doesn’t waste CPU resources and your battery.

    You could in theory implement either of these yourself but because of the way the OSes work on both Android and iOS there’s no guarantee that you can keep a process running in the background forever. As the OS can kill your process if the OS needs more free ram, etc … The built in notification APIs are exempt from this because they are part of the OS.


  • If you’re worried about your IoT devices on your LAN the problem isn’t necessarily that they can access WAN but rather that there’s a security vulnerability and that they can be accessed by the WAN. Once a device is compromised and attacker can then use it as a “beachhead” to access other devices on your network.

    So for example, with my setup every IoT device is on a separate VLAN (the guest network acts similarly) which can’t get access to WAN, can’t be accessed from the WAN and can’t initiate any network calls to any other VLAN. Now my primary VLAN can talk to my IoT VLAN, and IoT can talk back, it just can’t start the communication.

    This does pose a problem for TVs though that need to talk to Jellyfin as hinted at in the original post. So what you could do is create a specific firewall rule that allows the TVs to at least initiate communication to Jellyfin but not any other device on your primary VLAN. This will probably require a more sophisticated router though than most of the consumer ones out there. Just be mindful that if n IoT device is compromised they can then try to attack the jellyfin server to jump to your other VLAN and then the rest of your network.


  • Just wanted to add… After reading your initial post I did some more digging on adding tracking headers, etc… especially by T-Mobile.

    While it’s definitely a thing, it only applies to HTTP traffic. Even HTTPS blocks their ability to add those headers. So any traffic that’s using any other protocol (DNS, email, ssh, or just gaming, etc…) would be safe from your ISP from at least trying to add these tracking headers.


  • Yes but while the service is targeted for home use there still is remote work which generally requires a VPN back to the company network. They wouldn’t be able to block this. Now sure they might be more inclined to block Mullvad but they’d impact too many businesses by blocking wireguard as a whole.

    And assuming they did block Mullvad but not wireguard… Just rent a VPS and install a wireguard server and client there to bridge back to Mullvad.


  • I know this doesn’t help much but I use T-Mobile cell towers with an always on VPN with no issue. But I don’t see why they’d block Mullvad. (I’d be more concerned that they’d block them than wireguard in general). But there’s completely legitimate reasons to use both so I don’t see them really bothering to block either.


  • If it was a certificate issue I’d expect youd just get an error from your browser saying the cert is invalid or expired.

    If I had to guess though you’re running into a nat reflection issue: https://nordvpn.com/cybersecurity/glossary/nat-loopback/

    Read up on that. But you may need to provide different DNS entries if you’re inside or outside your LAN or add a NAT hairpin rule to your router. But this is only applicable if you’re exposing the same service to the WWW.

    Some other things to try though:

    • Have you tried just pinging the address? Is the DNS resolution returning the address you expect?
    • Whats in your nginx logs? Do you see anything when you try and connect?
    • Within your nginx container can you ping your service directly? Is something blocking nginx from accessing the site?


  • Yes, but Google at least innovated and tried to increase customer value with Android. They also make better phones (from some people’s perspective) than Apple. I’ve seen nothing from Epic that tells me that their product is better than Steam. Sure they have free games, but that business model isn’t sustainable and for the non free games, why would I buy from them vs Valve? Sure, if I was a developer I might get a better deal with Epic, especially if I can sign an exclusivity agreement), but I’m not a game developer I’m a gamer just looking to play my games on my PC as easily as possible.


  • I can’t speak for anyone else but I can at least share why I didn’t care for it.

    Steam already exists and there isn’t a lot I feel is missing from the Steam store. Not to mention there isn’t anything that Epic does better than Valve for their storefronts. Epic doesn’t provide any new value that Valve doesn’t. In fact I’d argue that Epic causes negative value for several reasons:

    1. They essentially fragmented the PC market as now I can’t access all of my games in a single location. The same reason for example that I hate that Netflix, Hulu, Disney+, HBO Max, etc … exist. It just makes the overall experience less convenient and more expensive.

    2. Several features that Steam already has working are either broken or missing in the Epic Store. Especially around the shopping cart, etc … I haven’t gone to look recently to verify if any of these have been fixed and probably won’t until the other points are addressed, if they even can be resolved.

    3. There’s no level of trust with Epic compared to Steam. I have a massive Steam collection and Valve has shown time and time again that I can trust that my data is relatively safe with them. When was the last time you saw Valve in the media because of a data breach? When was the last time your Steam account got hacked. Epic is just new here so they haven’t had a chance to earn that trust.

    4. Their motives for wanting to create a new store wasn’t to improve the customer experience. Instead it was to improve their bottom line. The court cases against Google and Apple prove this. If they at least tried to have a PR campaign to show how Epic is innovating compared to Steam especially for making the customer experience better, the Epic Store might have sit better with me.

    5. Timed exclusives. Similar to point 1, but they were just trying to use their massive cash reserves from Fortnight to buy their way into the market rather than earn the trust of customers. This again resulted in fragmentation of the PC market.

    Anyway, just my two cents.



  • Can you share the Home Assistant automation / setup that you have for Uptime Kuma notifications? As I’m in the same boat as you. I just got a webhook setup but I’m getting flooded with notifications, especially after services update.

    My hope is I just want to be notified when a particular service is down for say 5 minutes but all I care about is knowing the node name. I don’t necessarily care to get notified if the service comes back up.







  • So the builder pattern is supposed to solve the problem of: if you have a large number of optional fields that may or may not need to be set to construct your object. Then once the dev has called all of the setters that they require, they call build to fully realize that object.

    Some rules that all builders should follow:

    • All setters SHOULD represent optional parameters. (Or ones that have a default value). If a parameter is required for all instances, include it in the constructor of the Builder itself.
    • All setters SHOULD return a copy of the Builder. This way you can chain calls off of each other.
    • Setters SHOULD do nothing more than store the provided value in a field local to the builder itself and then return itself (or a copy of itself).
    • You MUST expose a .build() method that will return the fully realized object. This method should essentially call the constructor for your target object using all of the parameters, regardless if a setter was called or not. Obviously any value where the setter wasn’t called will be null or some default value.


  • I’m also running Ubuntu as my main machine at home. (I have a Mac and do Android development for my day job).

    But at home, I do a lot of website and backend dev.

    1. Code in VSCode
    2. Build using docker buildx
    3. Test using a local container on my machine
    4. Upload the tested code to a feature brach on git (self hosted server)
    5. Download that same feature branch on a RaspberryPi for QA testing.
    6. Merge that same code to develop 6a. That kicks off a CI build that deploys a set of docker images to DockerHub.
    7. Merge that to main/master.
    8. That kicks off another CI build.
    9. SSH into my prod machine and run docker compose up -d