Just a guy doing stuff.

  • 0 Posts
  • 44 Comments
Joined 1 year ago
cake
Cake day: June 14th, 2023

help-circle


  • Yep, as someone who just recently setup a hyperconverged mini proxmox cluster running ceph for a kubernetes cluster atop it, storage is hard to do right. Wasn’t until after I migrated my minor services to the new cluster that I realized that ceph’s rbd csi can’t be used by multiple pods at once, so having replicas of something like Nextcloud means I’ll have to use object storage instead of block storage. I mean. I can do that, I just don’t want to lol. It also heavily complicates installing apps into Nextcloud.


  • Yep, I feel this one. I’m of the opinion that automation should stay out of the way. As a result, my automations are all very carefully crafted to be wife-approved - Anything I can automate is done without interrupting the usual way you’d interact with the thing. My lights are all z-wave light switches, so that anyone who needs a light can just click it on. Any light-based automations are disabled while someone is in the room the lights are in (except ones like “when a movie starts on the Roku, turn off the home theater room light”).


  • Honestly for me the draw is in minimizing the mental/emotional overhead of forgetfulness. My wife and I both have ADHD, and I have autism. That leads to a potent combination of spacing out and forgetting even very important things.

    So both in service of that and as a fun hobby (My special interest is computing), I have automation using presence detection, various timers, Z-wave outlets/light switches (I refuse to use IoT, I prefer local access/control every time), GPS position and various stuff like that, in order to avoid things like leaving our home theater projector powered on unwatched (reducing bulb lifetime), leaving the oven on, leaving the espresso machine on (boiler heating water over and over again unnecessarily, wasting thousands of watt-hours of electricity), turning reptile enclosure lights on/off on a schedule with sunrise/sunset, that sort of thing.

    I have this ultimate vision in my head of my bedtime routine going from “Walk through the whole house for a few minutes and lock doors/turn things off” to “Triple-click my bedroom light switch ‘off’ and it turns off the rest of the house lights/TVs/projectors, reduces AC temperature a couple degrees, locks the doors, arms the security system for ‘home’, locks the car…”. You get the idea.




  • Hexarei@programming.devtoSelfhosted@lemmy.worldWhy docker
    link
    fedilink
    English
    arrow-up
    19
    ·
    6 months ago

    Others have addressed the root and trust questions, so I thought I’d mention the “mess” question:

    Even the messiest bowl of ravioli is easier to untangle than a bowl of spaghetti.

    The mounts/networks/rules and such aren’t “mess”, they are isolation. They’re commoditization. They’re abstraction - Ways to tell whatever is running in the container what it wants to hear, so that you can treat the container as a “black box” that solves the problem you want solved.

    Think of Docker containers less like pets and more like cattle, and it very quickly justifies a lot of that stuff because it makes the container disposable, even if the data it’s handling isn’t.



  • You’re correct in that it is a compatibility layer - And I’m not disagreeing with that. Also to be clear: Not just arguing to argue or trying to start a fight, mind you. I just find this to be an interesting topic of discussion. If you don’t find it to be a fun thought experiment, feel free to shoo me away and I’ll apologize and leave it alone.

    That said, we appear to only be arguing semantics - Specifically around “native” having multiple contextual definitions:

    • I am using ‘native’ to mean “the instructions are executed directly by the CPU, rather than through interpretation or emulation” … which WINE definitely enables for Windows executables running on Linux. It’s the reason why Proton/DXVK enables gaming with largely equal (and sometimes faster) performance: There is no interception of execution, there is simply provision of API endpoints. Much like creating a symlink in a directory where something expects it to be: tricking it into thinking the thing(s) it needs are where it expects them to be.

    • However, you are using ‘native’ to mean “within the environment intended by the developer”, and if that’s the agreed definition then you’re correct.

    That’s where this becomes an interesting thought experiment to me. It hits me as a very subjective definition for “native”, since “within the intended environment” could mean a lot of things.

    • Is that just ‘within a system that provides an implementation of the Win32 API’? If so, WINE passes that test.
    • If I provide an older/fixed/patched version of a DLL (by just placing it in the same directory) to fix an issue caused by a breaking change to a program that is running on Windows, is that no longer native?
    • Or is it just ultimately that the machine must run the NT kernel, since that’s where the developer intended for it to run?

    Does that make sense? I hear a statement like that and I find myself wondering Which layer along the chain makes it “native”? - I find myself curious at what point the definition changes, in a “Ship of Theseus” kind of way.

    It seems to me that if we agree that the above means “running in WINE is not native”, then we must also agree that “anything written running for .NET (or any other framework, really) is not native”, since .NET apps are written for the .NET framework (Which is not only officially available for Windows, mind you) and often don’t include anything truly Windows-specific. Ultimately, both are providing natively-executed instructions that just translate API calls to the appropriate system calls under the hood.

    I hope that does a better job of characterizing what I meant.




  • I beg you forgive my pedantic interjection, but … I posit that the original commenter is incorrect. it is absolutely native execution.

    The CPU is fetching and executing the instructions directly from memory, without any (additional) interpretation of code or emulation of missing instructions - Which is, by definition, native execution.

    What the compatibility layer “does” is provide a mapping of Windows system calls into the appropriate Linux system calls. Or, in other words, makes it so that calls to functions like CreateWindowEx() in the Win32 API have a (still native) execution path.

    The native execution requires you to install WINE, yes, but if we’re disqualifying it because “it requires you to install a package”, then we also consequently:

    • Add things like “print stuff”, “display graphical applications”, and “play audio” to the list of “things Linux can’t do”
    • Disqualifies Windows from “natively executing” any .NET applications (a Microsoft-built first-party framework), since .NET applications require you to install .NET.