I take my shitposts very seriously.

  • 5 Posts
  • 894 Comments
Joined 2 years ago
cake
Cake day: June 24th, 2023

help-circle

  • It definitely depends on your home instance. You’re on LBZ, and Ada is a helicopter parent who blocks, bans, and purges anything and anyone that may be upsetting to her children. So yes, you’re probably not exposed to the full picture on Lemmy.

    Visit the comment threads on Phoronix and you’ll see WOKE and FASCIST and COMMUNIST and TANKIE and any number of insults thrown around like manure in a monkey cage. Or try to argue in favour of systemd in a high visibility thread and inevitably someone will say that it’s bloat, that it’s corporate trash, and recite “enshittiication” like it’s some Pavlovian reflex.


  • rtxn@lemmy.worldMtolinuxmemes@lemmy.worldIn response to the other thread
    link
    fedilink
    arrow-up
    7
    arrow-down
    3
    ·
    edit-2
    8 hours ago

    It’s closer to present-day Lemmy. Certainly in terms of the concentration of crazy. A bunch of opinionated jackasses with delusions that their particular niche views are morally correct and should be the norm, and any deviation from that self-declared correct opinion gets shouted down. The wrong distribution, the wrong display server, the wrong init system, your app is not suckless enough, you’re the wrong kind of Libre, you’re wrong about something that a new user doesn’t even know exists… and that extends to maintainers and all the way up to the LKML too. If I saw the state of the discourse back in 2022, I would’ve thought twice about even trying to approach Linux.












  • I finally got my ISP to enable bridge mode on my modem.

    I also learned that I didn’t lose port forwarding and related services because I had been moved behind CGNAT or transitioned to IPv6 – they simply no longer offer port forwarding to residential customers. Ruminate on the implications of that statement so I’m not the only one with blood pressure in the high hundreds.


  • Even in the open source community, the libre-ness of a product is just one of many factors. The fitness for a purpose, the initial difficulty of the setup, the continuous difficulty of operation and maintenance, the pace of development (if applicable), the professional or community support structure, the projected longevity of the product or service, and the general insanity of the people involved are all important factors that can, and often do outweigh the importance of open software.



  • I think I see where your confusion comes from. Either that or you are writing programs with willful and reckless disregard to the importance of standards.

    A process (or program) has multiple outputs. The return code is a one byte value that is set by the process when it ends, and often checked by the parent process (interactive shell, script, program) to make decisions regarding the flow of control. This value is severely restricted in its usefulness, to “provide data”. The type (unsigned byte) limits the range and precision, and you can’t write to it asynchronously or before you’re ready to gracefully end the process. The name is deceptive: this is not the same kind of “return” as the return instruction in programming languages. It simply describes the way a process ended, nothing more. It should never contain meaningful data, and always adhere to the POSIX conventions.

    Why? Because everybody does. More than that, everybody writes programs that expect a return code of zero to mean success, and a return code other than zero to mean failure. It was decided before I was even born. It’s an implicit agreement that we adhere to (except Powershell because they’re special). Deviation from this will only lead to compatibility issues and confusion.

    If you want to convey meaningful data, you should use an output stream. The POSIX standard states that programs should communicate using strings, and that the standard input and output streams should be used for this unless other methods are needed. If your program produces meaningful data and you want to convey it to the parent process or another program, you have to write it to stdout, and the other program has to accept it via stdin. This exchange is facilitated by the shell through the pipe and redirection operators. It frees up the return code to meaningfully indicate the exit state of the program without mixing it up with the data produced by it, and once again, it’s what everybody does, and what everybody expects.


  • To be pedantic: there is no such thing as a boolean value. It’s all just bytes and larger numbers behind an abstraction that allows a higher-level programming language to implement Boolean algebra by interpreting numbers a certain way. One such abstraction is the POSIX convention of treating a return code of zero as success and everything else as a failure. This consequently defines how Boolean algebra is implemented in POSIX-compliant shells:

    • The if statement tests the return code of the command specified in the header, then executes the then branch if the return code is zero, the else branch otherwise.
    • The while loop similarly tests the command in the head and executes the body if its return code is zero.
    • The boolean && and || operators treat zero return values as true and nonzero return values as false. Go try it out.
    • Even the true and false commands are just programs that immediately return 0 and 1 respectively.

    If you start treating nonzero return codes like a success value with meaning, the only thing you’ll achieve is that your scripts won’t be compatible with the shell. stdout exists. Use it.



  • I’ve never used Linkwarden, but the /data folder is often used by Docker containers to store the application’s data, so it’s likely an internal path. You’ll have to create a volume that exposes the internal /data path to the host filesystem, then whatever is written into that directory will be made available to both the container and the host system. Any file or directory in the container can be exposed this way.

    I usually put my data volumes in /srv (where my large RAID array is mounted) and config volumes in /config, into a subdirectory named after the service, and with the minimal necessary privileges to run the container and the service. You could, for example, create volumes like this:

    /srv/linkwarden/postgres_data:/var/lib/postgresql/data
    /srv/linkwarden/linkwarden_data:/data/data
    /srv/linkwarden/meili_data:/meili_data
    

    The volume path (left side of the colon) can be anything. The right side is where the services expect their files to appear inside the container.