1. 24

    Ancient UI? I’m actually incredibly impressed by the Fastmail web UI. It’s one of the fastest large web applications I can think of.

    1. 8

      I’m a bit miffed by that too. It feels way more polished and accessible than Gmails UI. Particularly if I want to modify any settings. I dread using Gmail’s settings UI

      1. 2

        I never meant to say that the UI is hard to use - just that it doesn’t look in line with the modern design principles employed by most websites/mobile apps. I agree that the configuration is much simpler than Gmail’s. As I said above - I think that the user experience (UX) is good, but they can throw a fresh coat of paint on the UI and flatten it a bit (what ProtonMail 4 recently did).

        1. 4

          I can only speak from my own perspective, but I sincerely hope they don’t do anything that you suggested (“fresh coat of paint” and “flatten it a bit”). In my opinion, “modern design” != “best design”. I love the way the Fastmail web UI looks and hope they don’t change it just for the sake of change. It looks and works great as it is.

          (That said, I think the rest of your article was great!)

      2. 4

        It does feel dated in the age of mostly flat UIs, at least to me. I guess that’s subjective, but I certainly liked the UI of the Gmail, HEY and ProtonMail 4 more. The UX is good, though, I just think that Fastmail could use a fresh coat of paint.

        1. 4

          I’ve been a happy FastMail customer for years, but I never use the webmail UI, except when editing server side settings. IMAP lets me use my mail program of choice and work offline.

          1. 4

            Fastmail’s web UI is the #1 reason I’m currently using Fastmail. I love it. The app on the other hand… often the app is loading, I click on the “calendar” button, then the “archive” button pops up under my finger, causing an unknown email to be archived :-/

          1. 3

            I have always thought “I should get into NixOS”, but people seem to have gripes with the Nix configuration language and I am really comfortable running Alpine on the small boxes I have.

            Do you think the tools that are made available are worth the learning curve? ilo Alpine li pona

            1. 20

              I used NixOS for a while on my laptop. It’s certainly worth trying, and not very difficult to install.

              Setting up services, tinkering with the main config, is easy enough.

              But if you want to go deeper than that, you’ll spend hours searching other people’s configuration because the documentation is poor.

              1. 5

                Ugh, yes, this is my single #1 complaint with the infrastructure by far. The poor documentation. I need to start taking notes and contributing back to the wiki.

                1. 2

                  Seems like Guix might be an option. At least they didn’t create a brand new configuration language..

                  1. 15

                    At least they didn’t create a brand new configuration language..

                    Note that although Guix didn’t create new syntax (they use lisp), you’d still need to learn the “language” defined by the Guix libraries. In the end, most of your time is spent figuring out Nix/Guix libraries, and very little time is spent on programming-language things like branching and arithmetic

                    1. 5

                      The biggest annoyances I’ve run into with Nix-as-a-language are the lack of static types and the fact that it doesn’t really have good support for managing state. The latter doesn’t usually present a problem, but occasionally if you want to generate a config file in a certain way it can be annoying.

                      But I think it helps that I already knew Haskell, so all the stuff like laziness and the syntax are super familiar.

                      1. 1

                        There really isn’t much of a “language” to learn. Guix configurations use scheme records for about 90 of any configuration a user will do and the rest is in g-expressions which is something like a new syntax that takes the place of embedded shell scripts in nix.

                  2. 8

                    On one hand, Nix is terrible. On the other hand, isn’t everything else worse? Guix is the only decent comparison, and personally I think Nix’s technical decisions are better. (So do they, given that they borrow the Nix store’s design wholesale!)

                    1. 2

                      How can they be better, if they are the same?

                    2. 6

                      NixOS is amazingly good for writing appliances. It also can be made to barf out docker images, which is nice.

                      1. 6

                        Coming from Void Linux, NixOS on a desktop machine… ilo NixOS li pona ala, la pali mute. It’s a lot of work for a functioning desktop, I think. But on the server NixOS is killer and fun, and makes configuration suuuuper simple. I only need my /etc/nixos and /src folders to migrate my server anywhere (though I’d have to bring along /data to keep my state).

                        1. 1

                          This is basically what I do. When I got my new laptop I considered Nix, but decided to stick with Arch because it was easier. I use NixOS for my Digitalocean nodes and am very glad I did.

                        2. 1

                          tl;dr: No, I went back to Void on the desktop and Alpine/Ubuntu on servers in almost all contexts

                          Purely anecdotal: I was all-in on Nix, both at home and at work, and drank copious amounts of the kool-aid.

                          As of today, it still runs on a few machines I’m too lazy to reformat, but it’s gone from all my interactive machines, and from all functions (be it NixOS on EC2, or Nix shells for developer workstations) at work.

                          My takeaway was basically: Nix(OS) makes 90% of things absolutely trivial, the next 8% significantly more difficult, and the remaining 2% anywhere from nightmarish to downright impossible. That latter 10% made it “cost” significantly more than, say, investing in other version locking tooling for developer workstations at work. At home, that remaining 10% just meant that I didn’t do some things (like play many Steam games) that I would otherwise have enjoyed doing, because I didn’t have the energy to dive in.

                        1. 1

                          This is very cool! Related is a sudoku solver proven in Coq https://github.com/coq-community/sudoku

                          1. 1

                            So… if I download malware and run it, I get what I deserve?

                            1. 2

                              You don’t run it yourself. Simply downloading it is enough for it to be executed automatically.

                            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. 2

                                                  I appreciate the reference to Lojban!

                                                  1. 2

                                                    .i mi jbopre .i lo jbopre cu pilno la lojban uicai

                                                  1. 1

                                                    This looks really nice. I’ve never settled on a tmux config I’m entirely happy with for moving panes, so I’m going to try this on for a couple of days. Thanks for making and posting it.

                                                    Reading the source a bit, it appears that you’d need to edit alter config.go to customize key bindings. Is this correct? If so, in that regard it might remind me more of dwm than i3 :)

                                                    1. 1

                                                      Reading the source a bit, it appears that you’d need to edit alter config.go to customize key bindings. Is this correct? If so, in that regard it might remind me more of dwm than i3 :)

                                                      Ha, true. I plan on implementing proper configuration today or tomorrow. I just opened an issue to track this.

                                                    1. 2

                                                      Fabulous. Would use this in a heartbeat if there was a “tmux layer” -I see you opened an issue to complete that. The only thing that keeps me off i3 is tmux -but the, uhm, non-sane defaults of tmux are unpleasant.

                                                      1. 3

                                                        non-sane defaults

                                                        Do give more details on why you think the defaults aren’t sane

                                                        1. 3

                                                          Scrolling. Use of arrow keys. Copy/pasting. Default keybinds use keys on the edge of the keyboard too often. Little, personal preference things such as those. They’re not horrendous – I avoided the word insane for a reason. Any time I have to add something to my “dotfiles” repository I’m annoyed.

                                                          1. 2

                                                            Scrolling. Use of arrow keys. Copy/pasting. Default keybinds use keys on the edge of the keyboard too often

                                                            You’re describing the “what”, but not the “why”. Scrolling is the what, but why is scrolling non-sane? Using arrow keys is the what, but why is using arrow keys non-sane? Copy/pasting is the what, but why is copy/pasting non-sane?

                                                            Default keybinds use keys on the edge of the keyboard too often

                                                            Same thing, default keybings using keys on the edge of the keyboard is the what, but why is using keys near the edge of the keyboard a non-sane thing?

                                                            I was really hoping for a deeper response…

                                                        2. 2

                                                          Fabulous

                                                          Thank you!

                                                          What would you consider the essential keybindings of tmux? I’m keeping track of my implementation progress here https://github.com/aaronjanse/3mux/issues/1

                                                          1. 1

                                                            For me… anything to do with session/pane/window management on the usual Tmux “cheat sheets” found online. I rock all the defaults found here other than things within the “copy mode”

                                                          2. 1

                                                            Wait, what? How does tmux keep you off i3?

                                                            1. 1

                                                              I have a few competing concerns w/r/t my desktop environments/tiling window managers. I won’t get into all. Being able to glance at multiple terminal things is helpful – something i3 and Tmux both enable while being keyboard driven.

                                                          1. 1

                                                            Awesome work, @to1ne! I like the idea of using make to build the files.

                                                            For some past work on literate NixOS dotfiles, check out https://github.com/rasendubi/dotfiles

                                                            I must admit that literate dotfiles (and org-mode in general) make me tempted to switch to Emacs. I’ll put trying Emacs on my long list of things-to-do.