Threads for MazeChaZer

  1. 14

    I wish people could say that something favors composition without invoking “the Unix philosophy”.

    1. 10

      It’s probably the best and most successful example of composition in the history of software, to be fair.

      1. 2

        I highly doubt that, throwing around data in ad-hoc plaintext formats that is written and parsed by brittle scripts is exactly what you not want to do. If you want to see good compositionality you should probably look in the world of functional programming.

        1. 3

          They’re not ad-hoc, they’re program specific. Why are you writing brittle scripts?

      2. 2

        I think the problem with composition is that people have used it for pretty much the opposite, because the term is a bit more vague.

        People sadly use the term like a buzz word and whenever they connect thing, even if it’s simple two features of a framework or system.

        When I read terms like composable is it’s often without any meaning and I’ve got to figure out what it means by the context.

        That’s why I personally try to avoid it and I wouldn’t be surprised if others do the same. I know it means that correct usage of that word isn’t helped by this, but too me that word is pretty much burnt unless it’s some “celebrity” or friend using it.

        1. 2

          I don’t know; maybe a garden hose is an okayish way to put it.

        1. 8

          I really dislike the cattle vs. pets analogy, because it reenforces a speciesist world view that sadly is very prevalent in almost all parts of the world.

          1. 17

            I like it because it refers to a perspective shared among those who see it. Even those who disagree, understand the meanings behind it.

            1. 10

              Ehhhhhh… I mostly agree in this instance, but this is unfortunately not a great line of argument to take in general. You can apply the argument to any kind of human discrimination in history, and it’s just as true. If you describe something as “X for white’s, not spic’s” people will generally understand the meanings behind it, but that doesn’t mean you couldn’t do better.

            2. 7

              You could have a pet cow.

              1. 6

                What would you rather use instead?

                1. 10

                  Plants vs. crops, maybe?

                  1. 7

                    roses and potatoes

                    1. 7

                      Calling my desktop a rose seems unfair to roses.

                    2. 4

                      I like that, maybe even garden vs farm?

                      1. 2

                        I really like this

                      2. 3

                        Reproducible and non-reproducible configurations. The key feature of cattle that we are trying to isolate is the ability to spawn new machines with a known-good configuration on a reliable basis; in other words, cattle are reproducible.

                        1. 2

                          I really like that term. It also doesn’t take size into account so much and it leaves the question how these goals are achieved wide open.

                          1. 1

                            I mean, the very point of this system is to make reproducibility easy…

                          2. 1

                            Clusters and individual machines?

                          3. 5

                            Other than it is a really bad analogy in general. In most situations it’s just “now your cluster is the pet”. It’s also bad because it somehow makes it sound that holding cattle is easier than a pet.

                            On top of that it’s in the same line as tons of other lines meant to shut people up before arguing, so you don’t have to know what you are talking about.

                            A similar one is that complaining about the term serverless is like complaining about horseless carts, when in reality it’s more like calling a cab “carless”.

                            I really think those statements and analogies do the industry a huge disfavor and that they should be abandoned altogether. Not because analogies are always bad (they are pretty much always imprecise though), but because they don’t even serve the purpose of analogies which is explaining things well. We have good analogies in IT, that mostly work, from cryptographic keys, to files, directories (or folders if you are into that). What they have in common is that they explain something better than any technical terms. Cattle and pets don’t. They at best make bold claims about how things work, but tend to easily break no matter what direction you go. Think about protecting your cattle or your pet. How does analogy even work in terms of security, which is a big part. For files again, it works. Putting the file into the trash bin, and even retrieving it, emptying it, all works pretty well. Also protecting your file works well with analogies.

                            I think the difference is that some of these “bad” analogies are being mostly used for marketing and like mentioned to bring points across when you lack good arguments.

                            1. 4

                              Backyard vegetable patch vs industrial farming.

                            1. 1

                              Is there some nice way to add “task running” functionality directly to shell.nix? For example, I have the following shell.nix for my blog:

                              λ bat shell.nix
                              # rm ./vendor -rf && nix-shell --run 'bundle install'
                              # nix-shell --run 'bundle exec jekyll serve --livereload'
                              with import <nixpkgs> {}; mkShell {
                                packages = [ ruby ];
                              }
                              

                              The “task running” functionality are the two comments above, which I just copy-paste in the shell.

                              Is there some short, non-horrible way to allow me to type nix shell --run serve and have that to what I want? Preferably with something like nix shell --run list-available-tasks.

                              1. 2

                                I believe you could do something like this in a flake file:

                                 apps."<system>".task-name = { type = "app"; program = lib.writeScript... ; };
                                

                                And then run it with “nix run task-name”. I can’t remember the actual definition, so may need some fixing.

                                Similar https://www.ertt.ca/nix/shell-scripts/

                                1. 2

                                  Indeed!

                                  Now the shell.nix has

                                  with import <nixpkgs> {}; mkShell {
                                    packages = [ 
                                      (writeShellScriptBin "serve" "bundle exec jekyll serve --livereload")
                                      (writeShellScriptBin "install" "rm ./vendor -rf && bundle install")
                                      ruby libffi pkg-config
                                    ];
                                  }
                                  

                                  and nix-shell --run serve does what I need, many thank!

                                2. 1

                                  Why not just put those tasks as separate scripts in a subdirectory?

                                  Like: https://github.blog/2015-06-30-scripts-to-rule-them-all/

                                  1. 2

                                    That can work, but I’d love too keep this scoped to a single file, to reduce fs clutter, and scoped to a single CLI entry point (nix shell) to reduce mental clutter (cc @grahamc, this actually sounds like a user pain potentially relevant to determinate systems).

                                  2. 1

                                    Sure thing, you can just put these little scripts into derivations and make them available in the shell environment:

                                    let pkgs = import <nixpkgs> {};
                                        installScript = pkgs.writeScriptBin "install" "rm ./vendor -rf && bundle install";
                                        serveScript = pkgs.writeScriptBin "serve" "bundle exec jekyll serve --livereload"
                                    in with pkgs; mkShell {
                                      packages = [ installScript serveScript ruby ];
                                    }
                                    

                                    With this, you can use nix-shell --run install and nix-shell --run serve.

                                    If you put a little more sophistication into it, I’m sure you can define the scripts in a way that you can also generate a list-available-tasks script. Something like:

                                    let pkgs = import <nixpkgs> {};
                                        makeScripts = scriptDefinitions:
                                            let scripts = map ({name, source}: pkgs.writeScriptBin name source) scriptDefinitions;
                                                listTasksScript =
                                                    pkgs.writeScriptBin "list-available-tasks"
                                                        (concatStringSep "" (map ({name}: "echo ${name}\n") scriptDefinitions));
                                            in scripts ++ [ listTasksScript ];
                                        scripts = makeScripts [
                                            {name = "install", source = "rm ./vendor -rf && bundle install"}
                                            {name = "serve", source = "bundle exec jekyll serve --livereload"}
                                        ];
                                    in with pkgs; mkShell {
                                      packages = scripts ++ [ ruby ];
                                    }
                                    

                                    I didn’t test any of this, so there is probably a little bit of debugging required to make it work, but I’m confident it can work like this.

                                  1. 4

                                    Data loss is such a tragic and anxiety generating process that you (yes YOU) should have backups set up. Local system backups (ie filevault/windows backup/cron rsync to an ext hdd) are useful, but they are only good for accidents or hardware failures.

                                    You should have a cloud backup set up as well. Personally, I use backblaze with local encryption. I have found that to meet all of the requirements for personal backup, you need both local and cloud backups.

                                    • fast recovery
                                    • fire/theft resistant (local encryption, and this also means key management. I keep a copy in my safety deposit box)
                                    • malware/cryptolocker resistant (meaning that your backups should be versioned, and the versioning should be out of band from your computer - cloud services or zfs snapshots on another machine are an example of this)
                                    • accident resistant (deleting your own files and not realizing for a few weeks)

                                    This is not a complete nor comprehensive post on how to backups correctly, and I’m leaving some stuff out for brevity; however, if you’ve never thought about it, a lazy weekend like today is a great time to crack something out in an hour or two :)

                                    1. 2

                                      Not that you’re wrong but I feel this diatribe is a little misplaced here. This post is explicitly for restoring the version of the file you just deleted. Maybe I’m being pessimistic here but I’m reading that as “with current changes”, so even with your nightly changes you might have just binned a day’s work.

                                      1. 1

                                        How has your experience been with backblaze? Are you able to retrieve any of your backed up data losslessly at will?

                                        I was looking into them a few months ago, but I was ultimately turned away from them by some users saying backblaze lost or deleted their data. It’s possible those were cases of user error (or even competitors leaving malicious reviews), but I still found it concerning.

                                        1. 2

                                          It’s been fine. I tested a restore a while back and it worked without issue. Testing backups is important.

                                          I would be hesitant to trust a site like TrustPilot, since it’s basically a BBB-style shakedown, where companies have to pay to address bad reviews. Not to mention that Backblaze is pretty clear about the 30 day limit, and yet many reviewers are boggled that their older files have been removed from backups. Also, there is that tendency that the majority of people who leave reviews tend to be ones who are frustrated.

                                          On that note, there are third party clients (including completely FOSS ones), that use any object storage for backups (including backblaze’s backend). If you’re concerned about trusting that backblaze is ACTUALLY encrypting your data locally, you should use one of those instead.

                                          But most crucially, restoring from cloud backup is a huge pain in the ass. It’s slow. It should be a backup backup, to help deal with malware, theft, fire, or other major disasters. I hope to never have to restore from cloud backup. But to reiterate: test your backups.

                                        2. 1

                                          general advice is generally bad. There are tradeoffs in cloud security - local threat models vs. global ones. Different failure modes. Also clouds can fail.

                                          In the end it’s all about probabilities, effort and damage.

                                          1. 2

                                            Cloud storage can fail, but with a very low probability. Local storage can fail, with a somewhat higher probability. The goal with backups is to minimise correlated failures. It doesn’t matter if either fails, it matters if both fail at the same time. On site backups are bad in this regard because a lightening spike through the power, fire, or theft can cause the backup and the primary to fail at the same time.

                                          2. 1

                                            Using Backblaze B2 with your own software like Restic/Borg/Duplicati is something I would definitely recommend.

                                            But Backblaze Personal Backup has the fatal flaw that they decrypt your data onw their servers if you want to restore instead of downloading the encrypted data and decrypting locally with their client, rendering the local encryption completely useless. And the software for Backblaze Personal Backup is proprietary as well, which does not give me confidence in the the security and privacy it is supposed to provide (that is, if I never restore).

                                            1. 2

                                              I tried opening the original Twitter link in a non-logged-in window and was able to read it with no difficulty.

                                              Twitter’s log-in modal is optional and you can simply dismiss it and keep reading.

                                              1. 3

                                                When I dismissed it, Twitter redirected me to their homepage. When I clicked the link again it did the same thing. Safari on a patched up Mac.

                                                1. 1

                                                  This happens if you look at too many tweets without logging in. I avoid it by using the Nitter extension that redirects me to a Nitter instance when a Twitter link is detected.

                                                  1. 1

                                                    Might be you’re being A/B tested. The default behavior as far as I’m aware is to allow you to dismiss the modal and remain where you are.

                                                    1. 1

                                                      I think they recently changed this, I too got a non-dimissable login popup a few days ago.

                                              1. 1

                                                Just burn this thing with fire.

                                                1. 3

                                                  It would be very interesting to compare this to Guix (Nix with scheme instead of a Haskell inspired esolang).

                                                  1. 2

                                                    nix is a json inspired esolang .. I don’t think it is very haskell-y

                                                    1. 1

                                                      Nix really isn’t an esolang, but a DSL.

                                                    1. 11

                                                      I posted my personal notes of this talk as a YouTube comment which summarizes the main points and includes a lot of timestamps in case you want to skip through the talk.

                                                      1. 2

                                                        Wow - Your time stamps helped me decide to watch this later. Thx for doing that.

                                                      1. 7

                                                        I know enough of ddevault to understand why he went with IRC instead of Matrix. But I think it is the wrong choice. There’s a reason why sr.ht uses git instead of CVS (or RCS). Similarly IRC should be replaced with Matrix.

                                                        1. 12

                                                          I’m not sure Matrix is obviously better than IRC, especially not on a protocol level; it might have more features than IRC right now, but I think half of the point of the project was to try and fix that disparity (?)

                                                          We already have lots of Matrix clients that work pretty well; why should people not be allowed to work on IRC clients, too, especially since we don’t have as much development going on there?

                                                          1. 9

                                                            I find that a very weird statement. If you’re talking about an org of a certain size you can say it makes sense they choose X over Y. But this is a very small org that provides a service to its paying customers, but most probably because they use IRC themselves. Nothing should be replaced if people are happy to use it.

                                                            1. 6

                                                              Matrix is still AFAIK, Not Great™ to operate because the server guzzles resources and lacks a lot of moderation features (which can be hard to implement due to the DAG).

                                                              1. 2

                                                                So on a resource front I think it definitely depends on the server implementation you use.

                                                                I’ve moved to using the conduit home server implementation which is using 500MB RES in some high volume channels.

                                                                I don’t have numbers on hand but dendrite and synapse both used gigs of RES mem iirc.

                                                                Now admittedly compare that to an ircd which is no doubt much lower.

                                                                As far as mod features yeah matrix can use more things in the spec, which probably will be hard to implement.

                                                                1. 2

                                                                  FWIW I’m running Synapse with a ton of open channels across multiple homeservers and I’m not running into any resource issues on a VPS with 2 GB of RAM (previously 1, but it was running a bit tight) and some swap. I expect Dendrite, the new Go homeserver, to cut resource usage down significantly once it stabilizes.

                                                                  1. 1

                                                                    Synapse has improved a lot.

                                                                  2. 4

                                                                    I don’t think this is a relevant critique. I do, personally, think that Matrix is the better protocol and I use it myself, but sr.ht uses IRC themselves and is just offering a service to its paying customers to use IRC. If you find that valuable, you can pay for it or use it along with your existing sr.ht account, and if you don’t, you don’t need to. 🤷 . If they used XMPP instead, they could even offer similar XMPP services.

                                                                    1. 3

                                                                      Do you mind clarifying what parallels you’re drawing between CVS vs Git and IRC vs Matrix?

                                                                      1. 7

                                                                        CVS and IRC are hosted on a central server, Git and Matrix are distributed/federated.

                                                                        1. 10

                                                                          That makes sense; I’m not sure that alone is an argument that Matrix is an unqualified better choice than IRC though. Matrix is a very heavy ecosystem that has relatively few implementations, actually setting up a homeserver is an arduous process, the homeservers tend to be pretty resource intensive which presents scalability issues, especially for a more “independent” service which is not backed by a cloud monopolist with compute resources coming out the wazoo. IRC is not federated, but the relative ease in which IRC servers are spun up and their undemanding operational requirement smake it far more effectively decentralised as an ecosystem than Matrix.

                                                                          Matrix also seems not to fit a lot of the ‘ethos’ that sourcehut espouses; in-house developed software that’s for-purpose and aiming to be pragmatic in both terms of use and design, often using technologies and workflows that free software developers already regularly use. IRC fits into this category much neater than Matrix does. It also feels to me personally that the advantages of federation are not as pronounced in real-time (synchronous) chat as source control.

                                                                          1. 1

                                                                            IRC is not federated

                                                                            what do you mean by this? IRC networks consist of many interconnected servers run by different people

                                                                            1. 3

                                                                              IRC is a closed federation. Matrix/XMPP are open federations (that can be limited by allow/denylists or firewalls)

                                                                              1. 1

                                                                                IRC servers can have allow/denylists and firewalls too. What makes it closed and the others open?

                                                                                1. 1

                                                                                  IRC servers must trust each other, so only trusted servers are allowed in the federation. Matrix, thanks to the state resolution protocol, can work without server administrators trusting each other. Much like email. Spam can still be a problem.

                                                                                  1. 1

                                                                                    So Matrix and SMTP servers are vulnerable to spam attacks if they allow untrusted servers, and IRC servers are vulnerable to more attacks like kills from malicious operators. So yes, IRC requires a higher level of cooperation between servers, but it’s a matter of degree.

                                                                                    1. 1

                                                                                      Federation between untrusted servers means spam cannot be solved on the server level. Matrix has some plans to solve spam with a reputation-based system.

                                                                                      1. 1

                                                                                        I don’t know what you mean by “on the server level.”

                                                                              2. 1

                                                                                IRC can be distributed through server-to-server connections, but IRC is not a federated protocol because these networks share a common view of users and channels for as long as they are connected, and there is no way to bridge communications with other networks at the level of the protocol itself.

                                                                                Compare and contrast with XMPP and Matrix, where it’s perfectly possible to communicate with other on federated servers that have absolutely no relation to your homeserver, and there is clear delineation of the ownership of identities and rooms.

                                                                                1. 2

                                                                                  I don’t see any substance to the idea that IRC servers can’t federate with eachother while XMPP/Matrix servers can. All federated protocols form networks which can become fragmented by mismatches between software and policies.

                                                                                  You also contrast “a common view of users and channels” with a “clear delineation of the ownership of identities and rooms.” This arises from a fundamental difference in what the protocols offer, namely that XMPP offers persistent identities while IRC does not, but that has no bearing on whether a protocol supports federation. For a non-federated contrast to IRC/XMPP/Matrix, see ICQ.

                                                                            2. 3

                                                                              A more obvious choice in that case might be XMPP. Or even SMTP (see delta chat)

                                                                              1. 1

                                                                                IRC is federated

                                                                            3. 3

                                                                              perhaps you could lay out why ddevault would disagree, considering that he is unable to respond here (due to a series of incidents that lobste.rs has decided to keep secret)

                                                                            1. 20

                                                                              The great thing about the Nix (and Guix) package manager is that fact that they unite these two worlds. You can install and configure software globally for your system, but in contrast to traditional “program managers” you can install different versions of the same package simultaneously. But you can also locally fetch development depedendencies, and while most “module managers” can only provide libraries written in their specific programming language, Nix can provide any library, compiler or build tool (or even graphical IDE, web server, database server, …) written in any language within your local development environment.

                                                                              [I also later posted this comment below the article]

                                                                              1. 7

                                                                                When they say “built on the same technologies as other popular chat apps,” what do they mean? The web page mentions “privacy” a lot but doesn’t say anything specific about it. Neither do the GitHub repos’ READMEs, unless I missed something.

                                                                                To me, “privacy” means my messages aren’t going to be stored on the admin’s server, given that a lot of the time I’d probably not have any particular trust in said admin or their competence at setting up e.g. a MongoDB server without public access open to the world.

                                                                                1. 11

                                                                                  Looks like its not really private at all. There’s no encryption. Its just self hosted.

                                                                                  So the privacy they’re talking about is the de facto gains of hosting it yourself or by a person you trust and not a big company like discord or guilded that sells your data

                                                                                  If a malicious actor was watching your traffic somehow, like over coffeehouse WiFi or w/e then your messages being sent aren’t any less secret or safe. That’s no better than discord is today though.

                                                                                  If you want encrypted rooms I guess you gotta stick with matrix but what appeals to me about revolt is my friends might actually try it because it feels like discord. Unlike matrix

                                                                                  1. 11

                                                                                    That’s no better than discord is today though.

                                                                                    If I run discord from the browser it’s a https site, so plaintext should not be accessible from the wire.

                                                                                    I can’t imagine the “native” app works any differently.

                                                                                    There’s degrees of privacy. A self-hoster will probably not sell traffic/usage data to advertisers, but there’s absolutely not guarantees they won’t snoop on private messages/images. This can happen in a big org like Discord but there’s a higher chance that such behavior is monitored and caught - if nothing else for the massive reputational risk of it being exposed.

                                                                                    1. 1

                                                                                      It’s also a practical thing. Matrix per default also doesn’t doesn’t e2e encrypt everything at all, depending on some circumstances, same goes for IRC. And that’s fine, it allows for very performant full text search and sync (which is also certainly eco friendlier). Telegram (the chat program) didn’t win because of its encryption, it won because of its features, usability and speed. And if I look at day to day usage of discord I’m certain you don’t need e2e here, you may tell people upfront that for e2e worthy content they should choose something else than a glorified gaming slack with video + audio and nice icons, but that’s it.

                                                                                      I’m currently adding some online sync to my own f-droid app, it also won’t have any e2e features. TLS it is, and if you’re distrusting me, you can host your own instance as easy as running some binary on your own VPS.

                                                                                      1. 6

                                                                                        Matrix per default also doesn’t e2e encrypt anything

                                                                                        That’s wrong, Matrix (more specifically Element, the reference client implementation, previously called Riot) has been encrypting private chats by default for over a year now.

                                                                                        1. 1

                                                                                          Ok then my work instance simply doesn’t use E2E in their rooms. But we’re using it longer than matrix has e2e and we’ve not adopted it for that.

                                                                                    2. 3

                                                                                      Looks like its not really private at all. There’s no encryption. Its just self hosted.

                                                                                      The roadmap at least does mention E2EE as a possibility in future, s. https://revolt.chat/roadmap#features-4, potentially scroll down to see:

                                                                                      (draft) 0.6.0: E2EE Chat

                                                                                      This is the drafted version for e2ee.

                                                                                      1. 2

                                                                                        I asked in the beta instance (devs are in there) and it looks like that e2ee roadmap item is for DMs and small group chats, not the discord-like ““servers”” within your instance

                                                                                    3. 6

                                                                                      To each their own but IMHO this can be okay depending on the circumstances.

                                                                                      Example: I hang out a lot in a Slack where there’s ≈2000 persons in #general. So it’s basically as private as Twitter. To me that’s fine – but I would perhaps not tell all the secrets of my heart in that Slack. But having a discussion about Go or Python or whatever is cool with me, I don’t consider those topics private.

                                                                                      Even if that chat room was end-to-end-encrypted I still would not consider it private. Anyone of those members could copy my messages or take screenshots and spread it to God-knows-where.

                                                                                      1. 1

                                                                                        Mostly WebSockets. Which is pretty much a given for any browser-based chat product. But I suppose with Rustaceans that might not be the case, since in theory you could create your own socket protocol and communicate over a Wasm client… :)

                                                                                      1. 3

                                                                                        Norway has e-licenses as well, as mentioned in the article. In Norway’s case, the e-license is explicitly not regarded as an ID. Its only use is when you’re stopped during a traffic control. The police has access to the central database themselves, and may thus double check that the e-license is valid before letting you drive further.

                                                                                        1. 2

                                                                                          What’s the purpose of such an e-license if it doesn’t prove anything?

                                                                                          1. 3

                                                                                            I guess the government identified the shortcomings listed out in the article and decided they couldn’t make it safe and reliable enough for general use.

                                                                                            The motivation behind the e-license was that there is legislation mandating you always having your driver’s license with you when driving. A lot of people find that cumbersome, so they made it digital. Some people doesn’t have wallets any more as they can pay with their phone/watch and the license was the only physical card left.

                                                                                            In my opinion, they could have changed the legislation instead, so that it isn’t mandatory to present a license in the first place. It isn’t even a fine/criminal offence for not having it present either. You have to pay a ~$60 administrative fee for the trouble of locating your info on their laptop/tablet. The fee doesn’t show on your criminal record.

                                                                                        1. 3

                                                                                          I’m surprised that this is on GitHub. Is there a reason that Gittea isn’t self hosting?

                                                                                          1. 2

                                                                                            They are working on making it possible to move the development to Gitea itself, seems like some features they need are still missing.

                                                                                            1. 1

                                                                                              I never understood this, when they forked from Gogs it was already a useful and reliable platform, they could have self-hosted from the beginning.

                                                                                              1. 1

                                                                                                The dual reasons the last time I talked with the devs were 1) not wanting to lose the ease of contributions from being on GitHub, and 2) concerns that Gitea’s code reviews lacked too many features (e.g., line comments). The former I’m very sympathetic to, but at this point, they really need to fix the latter.

                                                                                              1. 1

                                                                                                I think MySQL is still GPL, doesn’t that mean that FB has to publish their code changes/improvements?

                                                                                                1. 5

                                                                                                  No, because they don’t distribute the software, they only provide a web service to the public. You would need AGPL for this to take effect. And even then I’m not sure if they would have to do it, since users don’t interact with the MySQL servers directly.

                                                                                                  1. 1

                                                                                                    Aha! This distinction has never been clear to me, until now.

                                                                                                1. 2

                                                                                                  I would love to see a laptop that featues a minimal ergonomic keyboard, like the Gergoplex. With the Framework Laptop this seems to be much more in reach.

                                                                                                  1. 7

                                                                                                    Really? It seems like the Framework focusing on thin aesthetics at the expense of functionality precludes useful features like this (and makes repairability much more difficult than it needs to be!) The MNT Reform explicitly makes it a design goal to allow the keyboard to be swapped out with a more ergonomic design, and the chassis has room for something with decent switches.

                                                                                                    1. 1

                                                                                                      Thanks for the tip, yeah seems like it. I’m not that much into laptops at the moment, because I don’t intend to buy one soon.

                                                                                                  1. 4

                                                                                                    I’m gradually getting used to the proton tabs, and I like bits of it, like the fact that it will tell you which tabs are playing media etc. But I cannot fathom why they changed the borders of the tabs the way they did – indeed, it destroys the tabs visual metaphor itself, and the way the active tab is rendered looks like a button, which of course does nothing when you click on it because it’s already active.

                                                                                                    1. 2

                                                                                                      Before Proton there was an icon in every playing tab. That icon needed no additional vertical space and was very clear, so for me even this point is moot. And I wholeheartedly agree with your point about the border design.

                                                                                                    1. 1

                                                                                                      I have a hard time figuring out how to get matrix setup and working. Like what the backend and frontend are and how they work. Am I not understanding what it is?

                                                                                                      1. 10

                                                                                                        TL;DR: If you want to try it out, download the Element client and let it walk you through making an account.

                                                                                                        You’ll have to choose a Matrix homeserver (like an email provider). If you won’t use it that frequently, the free matrix.org homeserver is good but slow. For more serious use, consider a subscription to Element Matrix Services, where they host a homeserver for you. Or you can try to self-host synapse. I wouldn’t.

                                                                                                        Other homeservers are being developed right now (Conduit is pretty cool). But none are ready for production just yet. And unfortunately the choice of homeserver is still important because your account will be tied to it. In the future, the “multi-homed accounts” feature will make this initial choice less important (hopefully).


                                                                                                        There are two basic components to understand if you’re just getting into Matrix, and the two components are best understood as an analog to email, which is really the only popular federated protocol today.

                                                                                                        There’s the Matrix homeserver, which is like your email provider. It’s where the messages and account information are stored. It’s what actually takes care of sending and receiving your messages. It’s where you sign up. Multiple people can have an account on the same homeserver. Synapse is the most popular homeserver right now, it’s developed by the team that founded Matrix, and it’s considered to be slow (Python) and is slated to be replaced.

                                                                                                        Then there’s Matrix clients. Just like email, Matrix is standardized. You can use any email client to get/send your Gmail, and you can use any Matrix client to get/send Matrix messages. Element is the most popular Matrix client (again made by the team that created Matrix). It’s the most feature-complete by far. It’s written in Electron, so it’s bloated. But it works fairly well.

                                                                                                        1. 3

                                                                                                          I wouldn’t.

                                                                                                          Can you elaborate ? We use a synapse server at work and it works.

                                                                                                          1. 1

                                                                                                            I should have been clearer. I meant that I don’t advise trying to self-host the homeserver at all. Self-hosting anything is a ton of work if done properly. Timely security updates, migrations, frequent (and tested) backups, and reliability all come to mind as things I personally don’t want to have to worry about. Element Matrix Services seems like a good deal for just a few people.

                                                                                                            1. 3

                                                                                                              But these challanges aren’t at all Synapse-specific, are they? Updates. migrations and proper backups are something you have to do with any server that you self-host. And after running a homeserver for a few years, the only migration I ever had to do is from an older to a newer PostgreSQL version by simply dumping the whole database and reading it back in. All schema migrations are done automatically by Synapse and I never had any problems with that. Hosting a Matrix server with Synapse is so easy if you compare it e.g. to hosting your own email server. And Synapse really is battle-tested because it’s dogfooded at the huge matrix.org homeserver instance.

                                                                                                              1. 1

                                                                                                                No they’re definitely not specific to Synapse. That was pretty much my point.

                                                                                                                And I know Synapse has put a ton of work into being easy to deploy. But I still won’t ever recommend managing infrastructure to anyone. It’s awesome that Synapse makes it as easy as possible for people like us to self-host it, but $5/month is probably well worth the lack of headache for most people.

                                                                                                          2. 2

                                                                                                            As far as I can tell, none of the homeserver implementations are ready for self-hosting – unless you disable federation, and then what’s the point?

                                                                                                            1. 3

                                                                                                              I’m not sure where you’re getting that impression. I’m hosting two different Synapse instances myself. I just update them when new releases come out; it’s been relatively painless.

                                                                                                              1. 1

                                                                                                                Can you please give a reason why you don’t think Synapse is ready for self-hosting? I’ve been doing it for years with enabled federation and I never had any serious problems.

                                                                                                                1. 1

                                                                                                                  Sure. I’ve heard again and again that if you enable federation on Synapse and someone joins a large room, the server bogs down and starts chewing through resources. Has that changed?

                                                                                                                  Also note that I’d be running it on an old laptop or a raspberry pi, just like I would run any chat server – IRC, Jabber, etc.

                                                                                                            2. 1

                                                                                                              .. I mean, probably? What exactly are you struggling with?

                                                                                                              1. 2

                                                                                                                Uh oh, now I feel even dumber. The main website has information about something called Synapse and there is “element” which is a frontend I believe, but how do you install a matrix server and start using it?

                                                                                                                1. 13

                                                                                                                  My attempt at clarification:

                                                                                                                  • Matrix is a protocol for a federated database, currently primarily used for chat
                                                                                                                  • Synapse is the reference home server (dendrite, conduit, construct etc. are other alternatives)
                                                                                                                  • Element is the reference client (there are versions of element for the web (electron), android and ios)
                                                                                                                  • A user account is (currently) local to a home server
                                                                                                                  • A chat room is federated and not located on a specific home server. The state is shared across home servers of all users that have joined the room.
                                                                                                                  • There are P2P tests where the client and home server are bundled together on e.g. a mobile phone
                                                                                                                  • Spaces are a way to organize rooms. Spaces are just a special case of a room and can include other rooms and spaces.
                                                                                                                  1. 4

                                                                                                                    Thank you! That clarifies a lot. I was stuck thinking Matrix is the server. So, Matrix is a protocol for a federated database, that’s very interesting and cool.

                                                                                                                    1. 1

                                                                                                                      Is it legitimate for me, as a user rather than someone who’s interested in the infrastructure, to just think of Matrix being like a finer-grained version of IRC, where instead of (mainly) a few big networks there are more smaller networks and instead of joining e.g. #linux on freenode, I’d join e.g. #linux:somewhere …

                                                                                                                      Would I now discover ‘rooms’ by starting from a project’s website, for example, rather than just joining some set of federated servers and looking for rooms with appropriate names?

                                                                                                                      I just searched for ‘linux room matrix’ and the top hit was an Arch Linux room #archlinux:archlinux.org

                                                                                                                      (I don’t really want to join a general Linux room - just using it as an example)

                                                                                                                      1. 3

                                                                                                                        Well, generally NO. Most all matrix home servers are all joined together via the federated protocol. So if you join #archlinux:archlinux.org on homeserver A, and your BFF uses homeserver B, you will still see each other and communicate with each other in that room like if you were both on homeserver A.

                                                                                                                        One COULD create a non-federated home server, but that’s not the typical use case, and the reasons to do so would be odd. If you are doing for example a chat server for internal chat @ $WORK, using Matrix is probably a terrible idea. Zulip, Mattermost, etc are all better solutions for that use-case.

                                                                                                                        1. 2

                                                                                                                          Discovering rooms is currently a bit problematic, as room directories are per server. But a client can query room directories from any server (that allows public queries). Spaces will probably help a lot with room discovery, as they can form deep hierarchies.

                                                                                                                      2. 8

                                                                                                                        I did a video to try to explain it last year (which i should update, but it’s still usable, even if it calls Element by its old name of Riot): https://www.youtube.com/watch?v=dDddKmdLEdg

                                                                                                                        1. 3

                                                                                                                          I recommend starting off by just creating an account at app.element.io and using the default homeserver so you don’t have to host anything youself

                                                                                                                          1. 2

                                                                                                                            Synapse is a server implementation and Element is one of the clients.

                                                                                                                            Installing Synapse: https://matrix.org/docs/guides/installing-synapse

                                                                                                                            1. 1

                                                                                                                              Uh oh, now I feel even dumber.

                                                                                                                              Don’t. The Matrix project is pretty terrible at both naming and the new user experience.

                                                                                                                              1. 2

                                                                                                                                Not trying to hate on them or anything. @ptman ‘s comment above really helped.

                                                                                                                                1. 1

                                                                                                                                  Yeah, I wish them every success - but what I guess I’ll call the introductory surface of the system is fairly painful.

                                                                                                                        1. 4

                                                                                                                          Resisting the urge to rewrite my blog with Next.js

                                                                                                                          Trying to find a good way to use my computers without my hands (occupied by baby) e.g. scrolling, focusing, writing

                                                                                                                          (Maybe) creating a Hacker News comment graph (with comments linking to other comments counted as links) as a Roam Research(-esque) database

                                                                                                                          1. 6

                                                                                                                            Do it. It’s worth experimenting with stuff. I’ve rewritten my blog site 4 times and I’ve learned so much each time.

                                                                                                                            1. 3

                                                                                                                              A foot pedal actually sounds perfect for such a scenario, maybe combined with eye tracking!

                                                                                                                              1. 2

                                                                                                                                I rewrote my website in Next.js and it was worth it

                                                                                                                                1. 1

                                                                                                                                  Perhaps you are already aware of this, but did you look into baby slings? They can be very comforting for your child and they free your hands.

                                                                                                                                1. 2

                                                                                                                                  I hope that more alternatives (not coming from riot) libraries/clients with pop-up (see for example https://invent.kde.org/network/neochat and https://github.com/quotient-im/libQuotient). I kinda don’t trust Riot guys.

                                                                                                                                  1. 1

                                                                                                                                    Riot is called Element now and there are a few solid alternatives presented in the post :)

                                                                                                                                    1. 1

                                                                                                                                      I still don’t see one that works on Linux and Windows. :/

                                                                                                                                  1. 1

                                                                                                                                    Great to see how many awesome things were archieved this year \o/ Looking forward to all the things coming in 2021 :)