Threads for rau

  1. 5

    Honestly, graphql is perfectly reasonable. What type of simplicity do you think it violates?

    Avro has a a json representation and is intended to define rpc interfaces. It’s also a type based idl.

    1. 1

      For my case, I think graphql solves to much — I think I want a straightforward request/response RPC, I don’t need graphql capabilities for fetching data according to a specific query.

      This is kinda what protobuf does, but, impl wise, protobuf usually codgens a huge amount of ugly code which is not pleasant to work with (in addition to not being JSON). Not sure what’s the status with similar implementation complexity for graphql — didn’t get a chance to use it yet.

      1. 2

        Protobuf has a 1:1 json encoding. You could write your schema in Protobuf and then use the JSON encoding with POST requests or something to avoid all the shenanigans?

      2. 1

        Honestly, graphql is perfectly reasonable.

        Doesn’t it still violate HTTP, badly? IIRC, it returns error responses with status code 200. I thought that it sent mutations in GET requests too, but from a quick look it looks like I misremembered that (shame on me!).

        Regardless, REST is best.

        1. 1

          No, it returns errors inline in the body. There’s nothing non-restful about graphql. Indeed, the introspection and explicit schema, together with the ability to use it over a get request make it more restful than most fake rest rpc endpoints.

      1. 18

        /me raises hand.

        I do need a “ascii gui” platform which I can use to build my personal workflow on top of over the years. But Emacs doesn’t feel good enough to invest significant time into:

        • architecturally, it’s pretty horrible with asynchrony – things routinely block GUI. I think this got better recently with the introduction of the new async API, but I don’t think it’s possible to proprely retro-fit non-blocking behavior throughout the stack
        • it’s pretty horrible with modularity – I want to pull other people’s code as self-contained, well-defined modules. VS Code extension marketplace is doing much better job at unleasing uncoordinated open-source creativity. I feel Emacs kits like spacemacs are popular because they solve “composition” problem unsolved in the core
        • it’s pretty horrible with modularity – elisp single global mutable namespace of things is good to build your tool by ourself, but is bad for building a common tool together
        • it’s pretty horrible with modulariy and asynchrony – poorly behaved third party code can easily block event loop (cf whith VS Code, where extensions run in a separate process, and host/plugin interface is async by construction)
        • elisp is a pretty horrible language – modularity, performance, lack of types, familiarity
        • extension APIs make complex things possible, but they don’t make simple things easy. To compare with VS Code again, it’s well-typed and defiend APIs are much easier to wrap your head around: https://github.com/microsoft/vscode/blob/main/src/vscode-dts/vscode.d.ts.
        • Emacs user features make complex things possible, but they don’t make simple things easy. 90% of configuration should be editing config file with auto-completion. Emacs customize is overly complicated and unusable, so you end up writing code for 100% of config, not 10%.

        Still, Emacs is probably closer to a good platform than anything else I know :-)

        1. 5

          it’s pretty horrible with modularity – I want to pull other people’s code as self-contained, well-defined modules. VS Code extension marketplace is doing much better job at unleasing uncoordinated open-source creativity.

          I think a big part of this, though, is that compared to Emacs, the extension framework in VS Code isn’t very powerful (i.e., it exposes much fewer internals), a fact that has led to bad performance for widely-used extensions which had to be solved by bringing them into core. If all you want to do is install extensions, the current Emacs package system works well enough. I do agree about the lack of namespaces; honestly, 90% of the things you mention would be fixed if Emacs were simply implemented in Common Lisp (including both modularity and asynchrony). The problem being that there is too much valuable code in Emacs Lisp.

          1. 4

            it’s pretty horrible with modularity – elisp single global mutable namespace of things is good to build your tool by ourself, but is bad for building a common tool together

            On the other hand, having all of Emacs itself be available is part of what makes it such a malleable substrate for one to build their own, customized editor out of Emacs. Having things locked down, isolated contexts, all that good “modern” stuff would certainly be nicer from a software engineering perspective, maybe make it easier to write reusable packages (although there are an awful lot of packages out there now), but would, I fear, kill what is so powerful about Emacs. The ability to introspect on just about every aspect of what the editor is doing, see the code, hook into it and change it is nearly unique and is so powerful on its own that (for good and ill) most else falls by the way-side.

            1. 3

              I kind of wish Emacs lisp had a module system that worked like CL modules. Everything the package exports, and which is intended for other user code to interact with, you access with my-package:my-variable. But you can still get at all the internals with my-package::my-variable.

              1. 2

                Honestly, Emacs would be strictly better were it just written in Common Lisp. Same, RMS doesn’t like it, so Emacs Lisp stayed its own separate dialect.

                But hey, at least it’s a Lisp!

            2. 2

              poorly behaved third party code can easily block event loop (cf whith VS Code, where extensions run in a separate process, and host/plugin interface is async by construction)

              This works rather well in practice. There have been a couple of bugs in vsc (fixed quite quickly) over the last few years where something caused the event loop to lock up because of the main thread getting blocked, and it’s actually surprising when it happens because it’s rare.

              1. 1

                I do need a “ascii gui” platform

                What would the ideal such platform look like?

                1. 4

                  It’s hard!

                  I don’t think I am capable of designing one, but I have some thoughts.

                  1. We need some model for character-grid based GUI. Sort-of how html + dom + event handlers allow programming the web, but simpler and with the focus on rectangular, keyboard driven interactions. While the primary focus should be character grid, this thing should support, eg, displaying images for the cases you need that.

                  2. With GUI model, we should implement the core of the application, the event loop. “nothing blocks GUI” should happen there, extension management and isolation should happen here, window/frame management should happen here.

                  3. Given the core, we should implement some builtin components which provide the core value, scaffold for extensions, and in general dictate the feel of the platform. I think this should be an editor, an shell, and a window/frame/buffer manager. And “shell” here is not the traditional shell+emulator of an ancient physical device, but rather a shell build holistically, from the first principles, like the thing that Arcan folks are doing.

                  4. In parallel, there should be a common vocabulary of “widgets” for user interaction. Things like command pallet, magit-style CLI-flavored GUI dialogs, completion popups, configuration flow.

                  5. These all should be implemented on top of some sane software component model, with physical separation between components. For scalable, community-driven, long-lived system I think stability should take preference over ability to monkey-patch internals, so we really want something like OS + processes + IPC here, rather than a bunch of libraries in the same address space. Good news is WebAssembly is I think building exactly that software components model which we need here. WebAssembly components are still a WIP though.

                  6. A non-insignificant part of the component model is the delivery mechanism. I think what Deno does might work! Otherwise, some centralized registry of packages also a tested solution.

                  7. Another important aspect of component model is stability culture. Here I think two-tier model makes sense – core modules are very pedantic about their interfaces, and essentially do vscode.d.ts thing – perpetually stable, thoroughly documented and reified-in-a-single file interface. Modules you pull from the Internet can have whatever guarantees their authors are willing to provide.

                  8. Hope this system doesn’t get obsoleted by the world of user-faced computing finally collapsing into “everything is HTML” black hole.

              1. 8

                So, in the DNS protocol there are no trailing dots so to speak.

                I think it’s more accurate to say that in the DNS protocol there is always a trailing dot.

                1. 41

                  How favorable are you about blockchain, crypto, and decentralization?

                  Why is the general concept of decentralisation lumped in with blockchains and “crypto”? Because I have very different feelings on each. 👀

                  1. 12

                    I kinda snarkily feel like the cryptocurrency buffs aren’t satisfied with stealing the word ‘crypto,’ but want to steal ‘decentralised’ too.

                    1. 6

                      Cryptography: Hell yeah! Cryptocurrency: No thanks.

                      1. 5

                        How favorable are you about blockchain

                        It’s a great data structure to use for logging or any other kind of append-only record structure. Some of the things that people build with this (e.g. cryptocurrencies) are a total disaster.

                        crypto

                        Everything should be encrypted in transit, at rest and (if run on someone else’s computer) in use.

                        decentralization

                        A great way of building reliable systems.

                        Because I have very different feelings on each.

                        Completely agreed.

                        1. 4

                          Ugh I skimmed right past that word. I, too, have very different opinions on these two. I’m disappointed that my distaste for blockchain and crypto will reflect poorly on decentralization which I am very supportive of.

                          1. 1

                            I’m glad I’m not alone here. they are not the same thing!

                          1. 3

                            And no, I’m not going to switch to Emacs just for Org mode :P

                            Switch to Emacs for Org mode and Magit! And Tramp, and Calc, and …

                            1. 3

                              The major JS engines also do the latin1 optimization, partially for space, but also performance.

                              1. 2

                                Python as of 3.3 does something similar: all strings in Python have fixed-width storage in memory, because the choice of how to encode a string in memory is done per-string-object, and can choose between latin-1, UCS-2, or UCS-4.

                                1. 7

                                  Before 3.3, Python would have to be compiled for either UCS-2, or UCS-4, leading to hilarious “it works on my machine”-bugs.

                                  And let’s not forget MySQL, which has a utf8 encoding that somehow only understands the basic multilingual plane, and utf8mb4, which is real utf-8.

                                  1. 7

                                    And let’s not forget MySQL, which has a utf8 encoding that somehow only understands the basic multilingual plane, and utf8mb4, which is real utf-8.

                                    The more I hear about MySQL the more scared I get. Why is anyone using it still?

                                    1. 5

                                      Because once upon a time it was easier than PostgreSQL to get started with, and faster in its default, hilariously bad configuration (you could configure it not to be hilariously bad, but then its performance was worse).

                                      And then folks just continued using it, because it was the thing they used.

                                      I still cringe when I see a project which supports MySQL, or worse only MySQL, but it is a mostly decent database today, if you know what you are doing and how to avoid its pitfalls.

                                      1. 1

                                        I still cringe when I see a project which supports MySQL, or worse only MySQL, but it is a mostly decent database today, if you know what you are doing and how to avoid its pitfalls.

                                        I’ve probably only heard of MySQL’s warts and footguns, and little of it’s merits. On the other hand, I’ve self-hosted wordpress for a great number of years so It Has Worked On My Machine(tm).

                                      2. 4

                                        Because you’re hearing about the warts, it’s just legacy and now deprecated stuff they didn’t change for all the people that don’t want a broken system. Otherwise it works perfectly fine.

                                        Edit: You could probably ask the same about windows, looking at WTF-8

                                        1. 2

                                          Legacy and/or confusion

                                          1. 1

                                            I’m no fan of MySQL, but Postgres also has some awful warts. Today I found a query that took 14s as planned by the planner or 0.2s if I turned off nested loop joins. There’s no proper way to hint that for that join, I have to turn off nested loops for the whole query.

                                          2. 3

                                            Another thing about pre-3.3 Python is that “narrow” (UCS-2) builds broke the abstraction of str being a sequence of code points; instead it was a sequence of code units, and exposed raw surrogates to the programmer (the same way Java, JavaScript, and other UTF-16-based languages still commonly do).

                                            1. 2

                                              basic multilingual

                                              It’s still 3 bytes, making for even more fun as it first looks like its working.

                                            2. 2

                                              Interesting. Why did they not choose UTF-8 instead of latin-1?

                                              1. 2

                                                The idea is to only use it for strings that can be represented by one-byte characters, so UTF-8 doesn’t gain you anything there. In fact, UTF-8 can only represent the first 128 characters with one byte, whereas latin-1 will obviously represent the full 256 characters in that one byte (although whether CPython in particular still uses latin1 for \u007F-\u00FF, I’m not sure - it’s a little more complicated internally due to compat with C extensions and such).

                                                1. 2

                                                  Like the other commenter said: efficiency. UTF-8 (really, ASCII at that point) in the one-byte range only uses 7 bits and so can only encode the first 128 code points as one byte, while latin-1 uses the full 8 bits and can encode 256 code points as one byte, giving you a bigger range (for Western European scripts) of code points that can be represented in one-byte encoding.

                                                  1. 1

                                                    Because it’s easier to make UTF-16 from latin-1 than UTF-8. Latin-1 maps 1:1 to the first 256 codepoints, so you just insert zero every other byte. UTF-8 requires bit-twiddling.

                                                    And these engines can’t just use UTF-8 for everything, because constant-time indexing into UTF-16 code units (and surrogates) has been accidentally exposed in public APIs.

                                              1. 5

                                                My main gripe with libadwaita is that it effectively hardcodes the theme. GNOME has officially discouraged theming (by distributions) for some years now, but that’s mainly because the existing theming system is both too powerful and too ad-hoc. In practice, as long as you don’t go crazy with it, GNOME theming works fine. The switch from libhandy to libadwaita changes that. There’s some talk about this being accompanied by a new theming API, but I have no idea if that will actually happen.

                                                1. 6

                                                  I’m surprised people care about themeing so much - once you stop being a teenager with no skills and lots of time, it stops being interesting (because you have more rewarding pursuits) and you don’t have the time for it anymore.

                                                  1. 10

                                                    People love theming things. They paint their IKEA furniture, buy colourful phone cases, set backgrounds.

                                                    If you make it possible, they’ll also theme software they use daily based on their own preferences. Just look at how many shell/terminal colorschemes exist.

                                                    1. 5

                                                      Saying that no one needs theming is effectively the same as saying that no one needs different clothes. Orange jumpsuits is the only clothes anyone will need—with ball and chain as a decoration. ;)

                                                      1. 1

                                                        Color scheme is one thing. Functionality is another. Oh, who thought scroll bars were a good idea? Oh, now they’re on the left? Oh, it’s proportional now. Oh wait! They’re on the right. Now they’re invisible unless you hover over the right edge. Now you have to hover over the left edge.

                                                        1. 1

                                                          Why is it okay if every app has its own scroll bar and button position, in different places, with different functionality?

                                                          And why is it not okay if the user themes the apps so that every app has all its buttons in the same places, and the same scroll bars?

                                                          1. 1

                                                            What I’m commenting on is scroll bars exist on the left in version X of the UI. The next version they’ve been moved to the right. The version after that they’re invisible.

                                                            Can a theme define where scroll bars appear? Or how they work? Can I get back the look and feel that I’m used to?

                                                      2. 6

                                                        I sort of get it. I really don’t care about theming on any platform except Linux, and in particular, except GTK applications.

                                                        My external monitor is… mid-range, I guess, it’s not a particularly expensive one. But my eyesight isn’t what it used to be, and in my reasonably well-lit office, I can’t read the text in inactive windows unless I lean over my desk and squint. It doesn’t help that it dims everything, not just toolbar or menu items (the way macOS and Windows do) but the actual window content, too.

                                                        The huge widgets are unpleasant but I think Linux users tolerated it better because we always had oversized widgets. Back in the day, GTK2 was sensibly bigger than Windows and Aqua. It’s even bigger now (you can fit two or three macOS buttons in a GTK3 button…). Frankly, it only bothers me on large screens. On small, high-res screens it’s tolerable.

                                                        (Edit: FWIW, I am a little personally invested in this topic. I have pretty good eyesight, as in, I can read without glasses and all – but only in one eye. My bad eye is practically useless now, so I try to take good care of my one good eye, because I’m one stupid accident away from blindness. Not having to either squint or hack CSS themes after each GTK release is basically half the reason why I got a Mac, which was particularly disappointing for me because Gnome used to have pretty good reputation for accessibility.)

                                                        1. 5

                                                          once you stop being a teenager with no skills and lots of time, it stops being interesting

                                                          I don’t much care for changing themes, myself, but I think you are being uncharitable here and confusing your own preferences with a universal rule.

                                                          I do take advantage of themes to have one consistent theme between Emacs, my terminal, my screen locker, my browser, StumpWM and X11 applications. I use one theme on my work machine and another on my personal one, so I always know at a glance which machine I use.

                                                          But I don’t fiddle with themes — as you note, there are more rewarding pursuits in the world for me. I don’t begrudge someone else who does, though. It’s a free world!

                                                          1. 3

                                                            It’s less about theming, and more about not being in a position where well-meaning designers can sabotage my user experience.

                                                            1. 2

                                                              I don’t care about theming as a user, I want the GUI provider to pick a good one. Theming is a backup mechanism for when the GUI provider has made bad choices. If I care about theming for your GUI, it means that your defaults are bad.

                                                              I do care about theming as a developer because I want to integrate my look and feel with multiple host platforms. Not looking and behaving like native Windows / macOS apps has been a problem for a lot of open-source toolkits and means that I can’t adopt them in places where users expect a native experience.

                                                              I do care about theming as a packager / integrator because I want to ensure that things all work well together. If some things use a menu bar at the top of the screen and others use one in-window, or if some things put scrollbars on the left and others on the right, that’s a bad user experience. Supporting theming makes it possible for me to provide a single theme for each toolkit that makes it behave in a specific way, so GTK, Qt, XUL, and so on apps all behave in a more-or-less consistent way.

                                                            2. 5

                                                              Also doesn’t help that adwaita is a touch centric anti real work padded mess.

                                                              There has been countless studies showing that having to scroll a window to see more information, be it spreadsheet (accounts etc), code (the worst being having to scroll up and down a page), document writing, leads to productivity issues.

                                                              But yet here we are, with libadwaita, effectively making lower screen resolutions (like 768p) completely unusable with 1/8 of your display taken up with huge padded titlebars and tabs. Absolutely awful. No one is going to take productivity on a linux desktop seriously with this oversized rubbish.

                                                              And to make it worse, most input devices have got more accurate not less over the years. (high dpi mice vs old style).

                                                              1. 6

                                                                I find it funny people seem to find Adwaita so touch-driven when Gnome doesn’t work well on touchscreens and the designers explicitly say touch isn’t a priority.

                                                                There has been countless studies showing that having to scroll a window to see more information, be it spreadsheet (accounts etc), code (the worst being having to scroll up and down a page), document writing, leads to productivity issues.

                                                                Source? Last I used Gnome 3 on a 1024x768 screen (on an old ThinkPad X61) a couple of years ago, I didn’t have any problems. People get into hysteria over whitespace, but even older desktops had whitespace for the sake of making things easier to scan visually and provide better click targets. (i.e. a lot of apps by devs that complain about whitespace look even denser than say, Windows 2000 was, for the worse.) With a trackpoint, that helped a lot.

                                                                1. 4

                                                                  The parent’s claim is a lot broader than serious HMI investigations can afford, and it’s also not something that has been investigated that much due to a combination of technical and historical reasons (tl;dr regardless of how efficient scrolling is, it was, for a long time, the only feasible way to present long information). That being said, just about every (narrower) result there is suggests that scrolling is associated with some cognitive impairment or loss of efficiency, or just isn’t preferred. For example:

                                                                  https://journals.sagepub.com/doi/abs/10.1177/0018720809352788 (specifically, about reading long texts)

                                                                  https://www.tandfonline.com/doi/abs/10.1080/00140138308963363 (specifically about navigating hierarchies, and it’s particularly interesting given that it’s literally 40 years old – the test installation used PDP-11s!)

                                                                  https://www.researchgate.net/profile/Michael-Bernard/publication/242537467_Paging_vs_Scrolling_Looking_for_the_Best_Way_to_Present_Search_Results/links/545a41410cf2c46f66424d85/Paging-vs-Scrolling-Looking-for-the-Best-Way-to-Present-Search-Results.pdf is possibly not as relevant but worth a read nonetheless.

                                                                  I don’t have my notes from back when I was working on a project where this was a relevant question, these are only the ones I could recall by title or author name. There were a bunch of other, less-cited papers that I’d read at the time (cca. 2015-ish).

                                                                  Methodology quality varies (as in, the closer you get to present day, the more “relaxed” things are, which I think says a thing or two about this, too…) but my understanding is that, in general, no scrolling is better than any amount of scrolling, and less scrolling is better than more.

                                                                  1. 2

                                                                    There is loads https://blog.codinghorror.com/does-more-than-one-monitor-improve-productivity/

                                                                    This one was measuring screensize, which is basically the inverse of screen estate (ie adding more inches == more space).

                                                                    People using the 24-inch screen completed the tasks 52% faster than people who used the 18-inch monitor People who used the two 20-inch monitors were 44% faster than those with the 18-inch ones.

                                                                    GTK theming wastes space. Fact.

                                                                    1. 2

                                                                      You cut off the last bullet point in the findings:

                                                                      Productivity dropped off again when people used a 26-inch screen.

                                                                      Which, besides being, frankly, a bit intellectually dishonest, also draws attention to an anti-pattern I see in online discussions: people arguing this way or that way when the real answer is some number

                                                                      I do think a lot of modern designs waste too much space, but if we suppose the reasoning that got here was as simple as:

                                                                      • Bigger buttons are easier to press…
                                                                      • Make buttons bigger!

                                                                      Then we should not really expect to get better results by dogmatically moving in the other direction; oversimplifying the results is not helpful.

                                                                      1. 1

                                                                        No the exact opposite, there is also issues with having to move eyes / head to track from edge to edge. Reduce the padding / still can see more.

                                                                  2. 3

                                                                    headerbars take less space than titlebar + menubar - they waste less space by using the empty area in titlebars

                                                                    1. 3

                                                                      I mean… maybe if every other widget was a little thinner, we wouldn’t need to reclaim space by reinventing titlebars and active/inactive state feedback along with them.

                                                                      Plus, FWIW, this obviously depends on the theme, but back when headerbars were introduced and I tried them, they were definitely bigger than a titlebar from an average theme + the menubar of a Qt application using QtCurve or the default Fusion style. Depending on widget fatness, they were maybe a few pixels thinner than a titlebar + a menubar + a toolbar. Headerbars made a world of difference on Gnome because the titlebar and the padding around menu items in the default theme were humongous but that’s not what everyone was coming from.

                                                                      1. 1

                                                                        I never said that headerbars aren’t good. I like CSD, and headerbars. I just hate the complete waste of space that GTK3/4 headerbars are.

                                                                  1. 6

                                                                    I have tried a bunch of different Smart Home products over the last few years …

                                                                    The author ended up with nearly two baskets full of functional but useless electronics, after just a few years. My “dumb” lightbulbs should live for at least 5 years before I have to replace them (hopefully longer than that). So, one thing I learned is that “smart home” is mostly good at producing electronic waste.

                                                                    1. 2

                                                                      I think that’s not a problem of Smart Home products per se, but rather of me switching from system to system.

                                                                      This is also one of the motivations to publish this article: so that others can avoid e waste by jumping straight to the system they like! :)

                                                                      1. 2

                                                                        Oh, I should probably also add that I didn’t throw the hardware away. I sold or gifted all old hardware, so it’s not (yet) waste.

                                                                        1. 1

                                                                          I think ‘smart’ home products are ultimately wasteful per se because they have shorter lifespans and/or use more resources than simpler components. Additionally, many of them reduce one’s security and/or privacy.

                                                                          While I do appreciate many of their features (it is cool to be able to turn one’s air conditioning on on the ride home from the æroport!), ultimately I believe that they are a mistake.

                                                                        2. 1

                                                                          I have to agree. All this waste reminds me of the waste associated with switching from wired headphones (which require no electronics, just electrics) to Bluetooth.

                                                                        1. 4

                                                                          The core message of the blog post - that you can get away with the worst kind of password if you’re using hardware MFA - is right on the money.

                                                                          But! Password re-use is what lets people log into all of your (non-MFA) accounts after finding one password in a hacked dump from 2013 that they’ve been chewing on for as long as it takes. Some online vendors probably still aren’t salting passwords correctly, making password recovery almost trivial with modern hardware / usual end user password lengths. It won’t show up in these password scan analyses, but can be far more devastating: I still think it’s good advice to not re-use passwords. Write them down in a book, use a password manager, whatever.

                                                                          & to reiterate that core message: using a 2FA hardware key is the single most effective thing you can do to secure your online accounts. Even if you can’t be bothered with 2FA on most of your accounts (which is fair enough) using it on your primary email account will make a huge, huge difference. Anyone with access to the email you used to create other accounts can use that email to reset every account you used it for, so it’s your most important online identity.

                                                                          The cheap Yubico keys are £25 or so. How much will a compromise of your Gmail (Outlook / whatever) cost you?

                                                                          1. 3

                                                                            On one hand, using a Yubikey (or other FIDO device) is extremely easy. Plug it in, touch it. The end. We really just need to expand server-side support.

                                                                            On the other hand, how do people keep their hardware key always on them? I find this essentially impossible.

                                                                            1. 3

                                                                              You can make it easier by having multiple Yubikeys, including one permanently attached to each device.

                                                                              1. 2

                                                                                Same as the house keys - on a keyring. If that’s not in my pocket, something’s wrong.

                                                                                1. 1

                                                                                  Do you carry your keyring around your house/apartment? Maybe my problem is that I’m unbearably lazy and hate having to get up and walk over to go get my Yubikey from across the room

                                                                                  1. 3

                                                                                    It’s in my pocket literally all the time I’m not in bed or in water. Same with the phone. I’d keep forgetting them otherwise.

                                                                                    1. 1

                                                                                      The first thing I do after putting on my trousers is put wallet, phone and keys in my pockets, watch on my wrist and wedding ring on my finger.

                                                                                      If I left my keys out of my pocket, I would be worried about locking myself out of the house accidentally.

                                                                                      1. 1

                                                                                        If you’re using a YubiKey to log into a web site, the odds are that it’s using WebAuthn these days. You don’t need a separate token with WebAuthn, you can use the TPM to protect your credentials and have the OS unlock them with biometrics. Most of the works stuff I use is like this: I tough a fingerprint reader on my machine to log in. I might not have my keys with me, but I definitely do have a computer with me when I want to log in. When I want to log in from another machine, my phone can be used to authorise a new device (either registering a new private key or temporarily) by sending a notification to my phone that requires the same process (touch the fingerprint reader and then approve) to log in.

                                                                                    2. 1

                                                                                      On the other hand, how do people keep their hardware key always on them? I find this essentially impossible.

                                                                                      Mine lives on my keyring, so I always have it on me.

                                                                                  1. 9

                                                                                    https://diataxis.fr/ seems to be a standalone version of this.

                                                                                    Regardless, pretty useful way of looking at docs, I think.

                                                                                    1. 1

                                                                                      Thanks for the link.

                                                                                    1. 1

                                                                                      I think calling it ‘the’ CLI email client, when mutt, notmuch, Gnus, nmh &c. exist is a bit much. I am sure it is very nice, but is is an email client.

                                                                                      1. 2

                                                                                        Himalaya is a CLI, not a TUI. You can use it directly from your terminal or from scripts. I say ‘the’ in a sense that it might be the only CLI email available there. I respect a lot all the tools you mentioned, they gave me a lot of inspiration.

                                                                                        1. 1

                                                                                          Ah, I see what you mean. It has been many, many years since I looked at it, but I think nmh counts as a CLI client, and in my opinion raw notmuch does too.

                                                                                          1. 1

                                                                                            I did not know about nmh, interesting! Notmuch is only for reading/searching emails, but not writing. Himalaya proposes sth a bit more global. I’m working on the ability to select your own backends, this way you could use Notmuch for the reading part. They are complementary in fact.

                                                                                      1. 10

                                                                                        For server-to-client comms, SSE really can’t be beaten. I’ve used them in past projects and really appreciated their simple and straightforward nature.

                                                                                        1. 1

                                                                                          Did you take any measures not to get bitten by the 6 SSE connections per browser per domain limit? Is there a simple trick that would allow me not to worry about this at all, because I don’t like the thought of not being able to properly support more than 6 tabs pointing at my application.

                                                                                          1. 7

                                                                                            Looking into it, that seems to be an HTTP/1 limit. Apparently on HTTP/2, it’s 100 by default. https://developer.mozilla.org/en-US/docs/Web/API/EventSource

                                                                                            1. 1

                                                                                              Nice! thanks for mentioning this, I hadn’t noticed it. Then I see no down sides to using SSE for the typical live update needs of a web application.

                                                                                            2. 3

                                                                                              Easiest thing is probably to just distribute the connections across random subdomains if you’re worried about it.

                                                                                              1. 1

                                                                                                Afraid not — we were not running in a browser context. Sorry that I can’t help you out🙁

                                                                                            1. 19

                                                                                              Out-of-tree and will never be mainlined

                                                                                              Slow performance of encryption

                                                                                              I think these are problems with linux, not about zfs.

                                                                                              Phoronix benchmarks

                                                                                              Are not rigorous, and I would not trust them, broadly speaking.

                                                                                              If you use ZFS’s volume management, you can’t have it manage your other drives using ext4, xfs, UFS, ntfs filesystems

                                                                                              That’s not true. You can run any FS you like on a zvol.

                                                                                              No disk checking tool (fsck)

                                                                                              Scrub?


                                                                                              I also find it rather strange to complain about bugs and them recommend btrfs, but maybe that’s just me…

                                                                                              1. 3

                                                                                                Out-of-tree and will never be mainlined

                                                                                                Slow performance of encryption

                                                                                                I think these are problems with linux, not about zfs.

                                                                                                I don’t know anything about ZFS encryption speed, but the license is gratuitously not GPL-compatible. Fortunately one may conjoin ZFS and Linux on one’s own machine, but it would be nice were it supportable out of the box. The steps to install with a ZFS root are more complex than is desirable.

                                                                                                1. 2

                                                                                                  People often parrot that it’s (gratuitously, really?) incompatible a lot, but it seems like Canonical, at least, don’t agree. As far as I can tell they’re shipping ZFS binaries in their distribution – and more power to them!

                                                                                                  I personally find it hard to imagine how one could conceive of a file system, constrained as it is to a loadable kernel module and developed originally for a wholly unrelated operating system, to be a derived work of Linux. Until someone takes Canonical to court we just don’t know if the two licences are actually incompatible for this particular case.

                                                                                              1. 4

                                                                                                Does this mean CDNs are illegal in Germany now?

                                                                                                1. 12

                                                                                                  No, it means that you must have a contract in place with your CDN that provides the guarantees according to the GDPR. Since Schrems, this means that the CDN must not be subject to the US legal jurisdiction (or any other jurisdiction that does not have adequate privacy protection). I believe most CDNs provide contracts that can comply with the GDPR (I know that the German Azure region jumps through a lot of legal and compliance hoops, for example) but you need to be very careful about using free ones: if you’re not paying with money then you may be paying with your user’s PII and the GDPR states that you need explicit, informed, revocable, consent for this.

                                                                                                  1. 10

                                                                                                    No. The ruling means that you need to get consent before using Google Fonts.

                                                                                                    1. 13

                                                                                                      And it will need to be as easy as not giving consent, and consent shouldn’t be a prerequisite for service.

                                                                                                      In other words: either no more icon fonts, or self host them. I hope for the former as someone who already disabled custom fonts (web fonts or not) in my browser.

                                                                                                      1. 4

                                                                                                        Icon fonts are really a terrible solution anyway. They usually download more icons then a page needs and are almost always inaccessible.

                                                                                                      2. 1

                                                                                                        you need to get consent before using Google Fonts.

                                                                                                        Only if not self hosting them right?

                                                                                                        1. 7

                                                                                                          Yes, self hosting fonts is alright.

                                                                                                          The issue is (broadly) the use of Google Fonts, which leaks the user’s IP address to Google without their consent.

                                                                                                          1. 1

                                                                                                            I guess in this context isn’t not really the IP address that is the issue, but that Google could use that to track peoples browsing habits because they have enough linked meta for an IP to no longer be considered anonymous.

                                                                                                            1. 1

                                                                                                              IPs are always considered PII.

                                                                                                              1. 1

                                                                                                                The answer is more nuanced than that.

                                                                                                                An IP address is considered PII only if it “identifies, relates to, describes, is reasonably capable of being associated with, or could reasonably be linked, directly or indirectly, with a particular consumer or household.”

                                                                                                                If you have enough correlating customer data it makes an IP address de facto PII.

                                                                                                                As far as I know, this is why it has been ruled that usage of Googles Font CDN is in breach of GDPR.

                                                                                                                1. 1

                                                                                                                  The argument in the decision (https://openjur.de/u/2384915.html, line 9) is broader: “Dabei reicht es aus, dass für die Beklagte die abstrakte Möglichkeit der Bestimmbarkeit der Personen hinter der IP-Adresse besteht. Darauf, ob die Beklagte oder Google die konkrete Möglichkeit hat, die IP-Adresse mit dem Kläger zu verknüpfen, kommt es nicht an.”

                                                                                                                  “It is sufficient that the defendant has the abstract possibility of identifying the persons behind the IP address. It does not matter whether the defendant or Google has the concrete possibility of linking the IP address to the plaintiff.”

                                                                                                                  1. 2

                                                                                                                    That is interesting. I may be misunderstanding/translating the legalese but the decision stating how the “plaintiff was also not obliged to encrypt his own IP address before accessing the defendant’s website” sounds like a misunderstanding of how IP’s are used given had they done so they would not have gotten a response.

                                                                                                                    However, I would like to assume the authors of this decision were well advised and what they mean by that statement is the defendant should have proxied the requests to third party resources in order to mask the plaintiff’s IP, something I fully agree with.

                                                                                                                    What ever the fall out of this ruling, I hope it results in a better internet for individual privacy.

                                                                                                                    1. 4

                                                                                                                      German lawyers discussing the decision have been suggesting that the “encrypted” part probably refers to the use of a VPN service, but that part is unclear to native speakers, including native lawyers. The context doesn’t allow for “defendant (i.e. the website) should have done something” like you suggest, as this is solely about “plaintiff should have done something” so the VPN interpretation is more likely.

                                                                                                                      Since court decisions don’t tend to offer random trivia, it’s likely that the defendant argued “If plaintiff is so concerned, shouldn’t they use a VPN?” which required the court to consider it at least in passing, hence that “No, they don’t have to work for their privacy” paragraph, to never mention it again.

                                                                                                                      The weird terminology doesn’t necessarily mean that the court doesn’t understand the mechanism: for all we know they got an extensive intro course during the hearing, but that still doesn’t mean that they’re aware of the ins and outs of writing tech-German.

                                                                                                                      Since the decision is first and foremost addressed to plaintiff and defendant (this isn’t a landmark ruling of a federal court), it’s good enough if the parties to the case can make sense of that particular part (and they know the context)

                                                                                                                      1. 1

                                                                                                                        Thank you, that absolutely makes sense.

                                                                                                                        It’s an interesting case, and I hope more comes out of it; people certainly should not have to work for their privacy. I have watched the internet devolve from many small gardens into a polluted wasteland of corporate greed and it is good to see some people are still taking the fight to their door.

                                                                                                        2. 1

                                                                                                          Good, we can have another annoying popup! First for cookies, then for fonts, then for that image gallery JS you’re streaming in from some npm cdn, and…..

                                                                                                          1. 3

                                                                                                            Just serve the files yourself.

                                                                                                          2. 0

                                                                                                            You already have consent: a user could configure his browser not to download those resources, e.g. via uMatrix.

                                                                                                            1. 18

                                                                                                              That’s not how consent works

                                                                                                              1. 2

                                                                                                                If someone tries to rape you, they already have consent: you could punch them in the face.

                                                                                                                1. 2

                                                                                                                  That is really not the same. All resource link in a page is, is a request for your browser to fetch and use it. You have the option to use a browser (e.g. links) which doesn’t fetch that resource. You have the option to configure your browser not to fetch that resource (e.g. with uMatrix).

                                                                                                                  You control your browsing experience, no t the site whose resource your software running on your hardware is rendering according to the configuration you specify. You are in complete control!

                                                                                                                  1. 4

                                                                                                                    Most users don’t have the technical knowledge to disable third-party requests. And I’m pretty sure it’s not even possible on Android and iOS, the only two usable mobile OSs.

                                                                                                            2. 3

                                                                                                              That’s going to be an interesting one, because you’d still be allowed to do the CDN with your own domain. But on a technical level, both that and a shared name CDN could end up doing exactly the same thing.

                                                                                                              1. 2

                                                                                                                Only CDNs hosted in the US, afaiu (and only if you don’t get permission).

                                                                                                              1. 23

                                                                                                                The fsf is more interested in ideological purity than helping users solve their problems and do so with free software

                                                                                                                1. 14

                                                                                                                  I think that’s kind of the point. If you want to benefit from the fruits of the FOSS community while also using the odd non-free app, firmware/drivers or even OS, then there is a wealth of information and tools available to you. Many Linux users are happy operating their computers this way and they certainly don’t need FSF’s help.

                                                                                                                  FSF’s main purpose is being the irritatingly uncompromising voice. I like this article because it shows that they’re not managing to do that either - due to historical exceptions that probably made sense at the time, they’re now trapped in a weird middle ground where they’re neither pragmatic nor ensuring the freedom they really wanted. Hopefully they can modernise without making concessions to pragmatism or they will cease to be relevant at all.

                                                                                                                  1. 10

                                                                                                                    You say ‘ideological purity’; another might say ‘morality.’ I assure that you have some inviolable moral precepts; so does the FSF.

                                                                                                                    1. 14

                                                                                                                      Another might say “black-and-white thinking,” which as I grow older, I find to be harder and harder to maintain. The world is a mess of shades of gray.

                                                                                                                      1. 17

                                                                                                                        My take is that the FSF’s positions congealed in the 1980s and they (well, RMS) has lacked the nimbleness of thought to keep up with the changing world.

                                                                                                                      2. 6

                                                                                                                        What is the moral argument for closed-source blobs being totally fine so long as you don’t have to upload them from software, though?

                                                                                                                        1. 1

                                                                                                                          It kind of makes sense for things that talk to a remote service: it means they can’t force you to take a firmware update you don’t want by saying “firmware versions older than X will not be supported”. But it’s still not really a good argument.

                                                                                                                      3. 2

                                                                                                                        The thing about ideological purity is that it’s quite attractive to social movements. Totalizing worldviews are simple, and they give their adherents a feeling of righteousness (deserved or not) that can be a great recruitment tool, and also a great motivator for getting things done.

                                                                                                                        1. 6

                                                                                                                          A truly totalizing worldview is the opposite of simple. Take for example the ideology of the market, which subsumes and totalizes all social relations under the measurement of how productive labor investments are in exchange as money. The web of justifications for this naturally self-expanding totality are as varied and complicated as modern history itself

                                                                                                                          1. 3

                                                                                                                            Can you explain more about what you mean here? I think you’re disagreeing with the parent comment, but I don’t understand how what you say is incompatible with it.

                                                                                                                            I.e. “the ideology of the market” is simple, at least as I understand it (“Trade lets people get what they want”). Its instantiation and justification is complicated. The same seems true in many cases (Communism: “The means of production should be owned by everyone”; Free Software: “Software must preserve these 3 particular freedoms”; Nationalism: “Our country is the best country”; Futuramism: “All Glory To The Hypnotoad”). The claim is that this core is usually simple, and easy to put a lot of emotion into. There are almost always a lot of contortions that go into dealing with objections, and into putting that core into practice. But people are drawn in by the central idea, and by how emotionally appealing it is, which puts a lot of pressure on the central figures to be extremely devoted to the simple core, at least in their outward behavior.

                                                                                                                        2. 1

                                                                                                                          On of my observances is that the FSFE on the other hand is very pragmatic and levelheaded - which makes them far more effective in my view.

                                                                                                                        1. 2

                                                                                                                          Only just skimmed your article, but looking forward to diving deeply. I have long thought that canonical S-expressions are what CSS, XML and JSON should have been. They are just so obviously right in ways those others simply aren’t.

                                                                                                                          1. 2

                                                                                                                            This is by @sjamaan, I learned a lot from it and I thought lobste.rs might enjoy it too. It contains copious references to how other language implementations represent values at runtime.

                                                                                                                            1. 1

                                                                                                                              As someone who would love to implement a language at the machine level someday, thanks for posting! Full of neat little details.

                                                                                                                            1. 2

                                                                                                                              How secure is the sort of Bluetooth encryption one finds with these chipsets? I would be concerned that someone with an SDR could sniff passwords all day long.

                                                                                                                              1. 1

                                                                                                                                This is a great read, worth sharing with one’s colleagues.

                                                                                                                                1. 6

                                                                                                                                  I strongly encourage you not to do this: TOFU is a profoundly bad idea despite its wonderful ergonomics.

                                                                                                                                  The issue is that it fails in the exact case when it most needs to succeed: when someone is truly targeted by a MITM.

                                                                                                                                  1. 3

                                                                                                                                    I agree with this. If you take the time to look into it there is a number of better options depending on your situation. There’s SSHFP DNS records, LDAP (especially with freeipa) or if you use something like ansible, you can push ssh_known_hosts files out to clients.

                                                                                                                                    It is far better to get into a situation where anytime you see the message about an unknown signature, it is so rare that you actually stop to think instead of answering yes as fast as possible.

                                                                                                                                    1. 2

                                                                                                                                      SSH is very much used as a TOFU system by most users. Have you actually seen anybody compare fingerprints? I haven’t. This option doesn’t change it from being TOFU, but it does change it from trusting anybody, which was a default for scripts running on ephemeral systems. And I think we can agree that TOFU is still better than trusting anything.

                                                                                                                                      1. 1

                                                                                                                                        Have you actually seen anybody compare fingerprints?

                                                                                                                                        I do, and I have even written about how to receive host keys out of band. I don’t mean this as an attack on you, but I consider TOFU to be professional malpractice. For hobby stuff, maybe it is okay, but honestly the Internet is a deeply hostile environment: a lack of paranoia will hurt you eventually.

                                                                                                                                      2. 1

                                                                                                                                        It’s true. But its still good compromise.

                                                                                                                                        I, as popular deployment tool maintainer, see people complete disable host checking, or ignoring checking for fingerprints.

                                                                                                                                        Accept-new give sensible default which multiplied by big numbers will give best result.

                                                                                                                                        1. 1

                                                                                                                                          To look at it from a contrarian angle though, given that all security measures imply a costs/benefits trade-off it may be that the amount of time collectively spent by the human race to say “yes” (with or without actually checking the fingerprint) to that prompt is not worth the risks, unless password authentication or agent forwarding are in use.

                                                                                                                                          My understanding is that for the MITM to work the attacker needs to know that you’re connecting to a given host for the very first time, and time the attack accordingly. If successful, the worst that can happen is that you’re sent to a honeypot which, in order to fool you, would need to be built with a level of knowledge of the actual system that seems… unrealistic in most scenarios. So yes, by all means think about the implications of StrictHostKeyChecking="accept-new", but consider the advantages in your specific circumstances.

                                                                                                                                          1. 1

                                                                                                                                            If successful, the worst that can happen is that you’re sent to a honeypot which, in order to fool you, would need to be built with a level of knowledge of the actual system that seems… unrealistic in most scenarios.

                                                                                                                                            If the user is using a password or ssh-agent, the MITM could conceivably accept his connexion, then use his password or agent to connect to the target system, local privilege escalate to get root, then rewrite /etc/ssh/ssh_host* so the target’s keys really are the false keys, and finally install a small hidden service to tunnel traffic from the interception point to the suborned host and insert falsified logs and run fake sshd processes to make it appear that connexions terminated at the real sshd. It would take a fraction of a second.

                                                                                                                                            Honestly, it sounds a lot easier than I first thought.

                                                                                                                                            1. 1

                                                                                                                                              Sure, that’s why I excluded (in bold) password auth or agent forwarding. :-)