• 2 Posts
  • 179 Comments
Joined 11 months ago
cake
Cake day: July 31st, 2023

help-circle




  • To offer a differing opinion, why is null helpful at all?

    If you have data that may be empty, it’s better to explicitly represent that possibility with an Optional<T> generic type. This makes the API more clear, and if implicit null isn’t allowed by the language, prevents someone from passing null where a value is expected.

    Or if it’s uninitialized, the data can be stored as Partial<T>, where all the fields are Optional<U>. If the type system was nominal, it would ensure that the uninitialized or partially-initialized type can’t be accidentally used where T is expected since Partial<T> != T. When the object is finally ready, have a function to convert it from Partial<T> into T.



  • I looked at the more detailed specs, and here we have:

    3 x audio jacks

    2/4/5.1/7.1-channel

    • You can change the functionality of an audio jack using the audio software. To configure 7.1-channel audio, access the audio software for audio settings.

    If using 2-pole aux jacks, those 3 back panel female connectors only provide 6 independent channels. If the case has a front panel connector, you can push that to 8 channels.

    The only way you’re squeezing 7.1 analog out of that is if you use the front panel as LR, use two of the three back panel ones as surround, and share center with the sub between the last remaining connector. But, that’s assuming that two of those back connectors aren’t for mic or line in.

    Maybe you could squeeze digital output through those jacks, but then you’d need a compatible receiver. Either way, stupid design for such an expensive motherboard.

    who is going to put a ryzen apu in a topend mobo??

    The Ryzen 9 7950X has integrated graphics, but if someone is willing to dump that much on a processor, they’re probably buying a GPU with it.




  • pivot_root@lemmy.worldtoLinux@lemmy.mlSSH as a sudo replacement
    link
    fedilink
    arrow-up
    5
    arrow-down
    2
    ·
    7 days ago

    The problem is that they’re trying to frame it as a better replacement for sudo when it’s really not.

    In some respects, it’s safer by not using a setuid binary. In other respects, it massively increases the surface area by relying on the correctness of three separate daemons: systemd, dbus, and polkitd. If any one of those components are misconfigured, you risk an unauthorized user gaining root privileges.

    With sudo, the main concern is the sudo process being exploited through memory safety bugs since it runs at root automatically.

    Don’t get me wrong, sudo has a lot of stupid decisions and problems. There’s a ton of code in sudo for features that almost nobody uses, and there’s bound to be bugs in there somewhere. It needs to be replaced with something simpler, but run0 is not that.










  • Does sudo have a plethora of stupid features? Yeah.

    What it doesn’t have is a needlessly complicated and overengineered design that relies on interprocess communication and three different daemons from two separate packages. It generates a temporary systemd service to actually run the privileged command, for Davis’ sake. That is one hell of a surface area for something that’s the gateway between an unprivileged user and root.

    I’m not saying sudo deserves to be used permanently, but if someone is going to replace it with a new tool for security reasons, that tool should be less complicated and use fewer runtime dependencies than what it’s replacing. When you account for the entire architecture of run0, sudo is lightweight in comparison.