• 1 Post
  • 24 Comments
Joined 4 years ago
cake
Cake day: June 28th, 2020

help-circle





  • Being federated isn’t the same as living in the same Fediverse. You can upvote a Lemmy post from Mastodon since they both use ActivityPub but you can’t do that with a Matrix account. There are a couple of different ActivityPub-like generalized protocols out there, but none of them are near the size of ActivityPub & Lemmy is ActivityPub so for all intents & purposes for this conversation the Fediverse here (& most places) is ActivityPub. Matrix is on an entirely different federated network & they aren’t related.



  • #!/usr/bin/env dash
    
    set -e
    
    cd $HOME/nixcfg
    
    # flake inputs to update
    for input in nixpkgs nixos-hardware home-manager hosts; do
    	nix --extra-experimental-features flakes --no-warn-dirty flake update $input
    done
    
    # rebuild NixOS
    nixos-rebuild --use-remote-sudo switch --keep-going --fallback --flake $HOME/nixcfg#$(hostname)
    
    # check for firmware upgrades
    fwupdmgr get-updates
    
    # print hard drive status info
    sudo smartctl -H /dev/nvme0n1
    sudo zpool status -v -x
    





  • Movim v0.28 released within the last 24 hours. It has a web UI (that is optimized for both large & small viewports), E2EE via OMEMO, OTR, or PGP (but users can choose native clients if they wish). With the NLNet funding they are extending to full video conferencing + compatibility with the Dino native GTK client. Subjectively, it looks pretty sharp for a web client. You can also use it to share ‘posts’ for announcements & public feed aggregation—something a group chat should never be used for (announcements & other long-term messages get lost in the black hole search can’t find & unreleated posts all around it with messy-to-follow threads since this sort of content isn’t supposed to be chat).

    It’s not quite as easy as services.movim.enable = true for NixOS but the NixOS module isn’t far off once an XMPP server has been selected with optimized defaults beyond standard setup—& the option I would personally recommend for self-hosting as declarative config is easier to work with in the long run, but there are non-Nix options. Being PHP, it’s fairly performant as well as not being built on some space-wasting, RAM-sucking ‘eventual consistency’ model that will cost you out the ass (which is Matrix, by design). The front-end, being mostly vanilla JS, is not using some heavy, bloaty framework. This will meet all your needs & not require expensive hardware host even on an old laptop at home or part of a multi-purpose server (does not need dedicated hardware).





  • Signal refuses to even try to accommodate for UnifiedPush or MQTT for those not using play services requiring an extra battery-draining socket to their servers. You are also still required to use one of the mobile duopoly OSs as a primary device to register (SIM still required). Good luck if you use a Linux phone, KaiOS, or just don’t want an ever-present tracking beacon on you. We all know the Electron-based desktop client is shit. I would flip this on its head & say it is the service’s probably if they choose to prioritize & mainly support the shitty mobile OS duopoly it’s their problem for providing a bad service & getting the criticism they deserve.




  • Correct me if I am wrong, but my understanding is that you use Coq to prove your theroem, then need to rewrite it in something else. I think there is some OCaml integration, but OCaml—while having create performance for a high level language & fairly predictable output—isn’t well-suited for very low-level kernel code. The difference in the ATS case (with the ML syntax similarity 🤘) is you can a) write it all in a single language & b) you can interweave proof, type, & value-level code thru the language instead of separating them; which means your functions need to make the proof-level asserts inside their bodies to satisfy the compiler if written with these requirements, or the type level asserting the linear type usage with value-level requirements to if allocating memory, must deallocate memory as well as compeletly prevent double free & use after free.

    For those in the back: Rust can’t do this with its affine types only preventing using a resource multiple times (at most once), where linear types say you must use once & can only use once.