Threads for tux0r

    1. 2

      A pity that they require the bash (in a POSIX shell, they’ll fail - in other shells, even more).

      1. 10

        Not a huge loss, they are just wrappers around single commands. Not sure why I’d want to type search_text_in_files instead of using grep directly.

        1. 1

          I 100% agree, but got marked down for “unkind”-ness last time I left a similar comment on

          1. 1

            Author here,

            I’m very open to constructive criticism but you are totally correct.

            I usually wrap my most used commands inside of functions as it makes it easier.

            Plus I ssh into different linux machine on daily basis and tools such as fzf, ripgrep aren’t available for installation that easily.

      2. 5

        To me, the shell constructs don’t look very exotic and bash-specific. Is it the use of function?

        1. 3

          Yeah I actually think if you replace all function with f() { } then it’s POSIX … i.e. it’s trivial to make it POSIX.

          The most common “bash-isms” I see are local and [[ and {foo,bar}.c. And every shell implements local, so POSIX is an overly restrictive target.

          1. 1

            [[ and function are kshisms; surprisingly, ksh lacks local.

            1. 1

              Yeah I noticed that almost all “bash-isms” come from ksh, but many people don’t even know what ksh is, so I just call them by the “accepted” name

              But yeah if anyone cares, my impression is that a fair number of hacky language warts came from KSH -

              It was intended to be a Perl-like language, but I think they failed to clean up the “bones” enough to make that work.

              ksh has proven to be a good choice as a scripting language. It has the capabilities of perl and tcl, yet it is backward compatible with the Bourne shell. Applications of up to 25,000 lines have been written in ksh and are in production use.

              Bourne shell already had some problems (word splitting), but it has good “bones”. I don’t see that ksh added that much besides Perl-like weirdness, with sloppy semantics.

              There are also at least two different ksh implementations – the “real” AT&T one, pdksh open source clone, which I think OpenBSD ksh might be based on …

              I would go as far as to say bash is a variant of ksh, a least for most of its life. There are not that many features in bash without any precedent

      3. 4

        Most of them should still work in POSIX; notice they use [ for tests everywhere. The actual definition with function is a Bashism though, but the snippets should still work.

    2. 2

      news reader

      does not support NNTP

      Hm… I feel tricked. Maybe not announce it as a news reader? (Idea: “feed reader”.)

      1. 3

        Sorry about that, I’m not familiar with nntp so I didn’t know that “news reader” may imply that. (I was trying to use something more general than “RSS reader”)

        1. 1

          Maybe “news aggregator” would work too.

          1. 2

            Yeah, news aggregator sounds right for this. Thanks!

      1. 4

        many others are less ActivityPub compliant because they rely on implicitly mandatory additional idiosyncrasies (e.g. nodeinfo) or just don’t respond to proper AP requests e.g. as basic as accept their own follow request. I am currently struggling with this and the lack of interest by most developers of being federated with as I implement

        Other than mastodon, what about

        The problem of interop is also rooted in the standards not having compliance tests a la html/css/atom validator or ssltest.

        So neither visitor nor operator can check the compliance.

        edit: typo

      2. 3

        People seem to have a tendency to settle on one system / product. I imagine there are a lot of reasons, but I think the sorta cyberpunk-ish utopia of lots of custom or semi-custom systems talking to one another just isn’t what most people want. Like, if you’re going to be talking to a bunch of people on Mastodon, why not just use that instead of trying to make an alternative work?

        1. 2

          Short answer: freedom; why not let people to use whatever they think fit? If you already have a WordPress blog, you can enter the Fediverse by clicking a toggle.

          1. 2

            Sure, but if it’s extra work, then most people are just going to support the one or two popular options. I mean, maybe they should have called this “Mastodon on” since, presumably, any server that acts exactly like a Mastodon server will work.

            1. 1

              I see what you are saying, I feel is just similar to the linux distros situation, everyone wants their own.

        2. 1

          The nice thing about using a standard instead of a specific product is that the minority that does want to do something different than the people who settle on one system / product can.

          I have implemented my own ActivityPub server (which has an interface that is very unlike any other), and I have added rudimentary ActivityPub support to my own blog engine. People won’t have a tendency to use my implementations, for sure (I am the only user of both), but I still get interoperability - which is fun, for me.

          I made these servers for myself, not to be the most used or the one system / product that people choose, but because a) it’s fun, and b) I get to decide how they work, and can make them just the way I want them.

          I spent quite some time figuring out quirks of various ActivityPub-implementations to be able to talk to them, and sure, that was frustrating at times, but much better than having to use one system / product the majority chose, that doesn’t suit me.

          1. 2

            I definitely support that, but I do think that a company like Automattic (the Wordpress folks) just isn’t going to be more spec-compliant than the most common implementations. After all, Wordpress is a mass market product.

    3. 1

      Have you ever heard of Beamspring keyboards? Just wondering.

    4. 2

      Trying to understand Apple‘s new interactive widgets so I can write one.

    5. 10

      Honestly, Matrix is a solid replacement for XMPP, but using it is still more annoying than just running the IRC. Especially when using its safety features like encryption, things go wrong more often than not.

      At least it provides an open API, making it less risky to use unofficial clients, unlike Discord.

      1. 13

        Up until a month ago, I was really glad Matrix existed, not because I want to use it, but because it gives people fewer reasons to use brain-meltingly bad systems like Discord and Slack, and it did a great job interoperating with chat systems I actually did enjoy using, like Libera.

        Unfortunately the bridging to Libera broke recently, so everyone I enthusiastically invited to the Matrix-side versions of my channels promising they could use it to keep in touch with the communnity is now off disconnected from the actual chat.

        1. 2

          You can setup your own bot or ask others, projects like heisenbridge are used in some of the channels I frequent. That’s one more thing to operate, but it’s definitely doable to get back bridging between matrix and irc.

          1. 4

            Yeah, the problem is they’ve said that the outage is “temporary”; I’m not sure if I believe it, but I’d feel silly if I spent all this time setting up my own bridge and then the main one came back. =)

      2. 5

        It’s not a solid replacement tho as some of the post alluded to issues like mirror the entire history + all attachments of all users can be prohibitively costly to self-host. I lot of indie Matrix servers shutdown after a few months because the bills didn’t justify it. With, the ones that control the spec, being almost defacto (even the Mozilla server is hosted by & all metadata being mirrored to them, there are centralization concerns as well.

        XMPP still has a more decentralized vibe & the beginnings a decade ago meant it could run & still runs fast on hardware for that time (server & clients). There are some missing features, but it’s still a great platform that deserves more love.

        1. 1

          You don’t have to mirror the entire history of content. Just state events for the auth chain. There are APIs for removing attachments older than x.

      3. 4

        On a protocol vibes level, IRC and XMPP feel like C and C++ respectively. Both are classics that work pretty well, though they have pretty different approaches to adding features and their own historical burdens.

        Matrix feels like something out of the last frames of a galaxy brain meme. I suppose this could be a good thing at least some of the time, though the original post sounds like materializing the benefits has proved difficult. (Disclaimer: I have looked through the some of the specs but never used a Matrix client.)

    6. 4

      I’m not saying any of this is untrue, but I think a lot of it has to do with scale and certain setup, even if those certain setups might be a majority of Matrix usage.

      I’m part of a group of people who have switched to Matrix from IRC and we’re still 95% happy, many years after. It might count as a basic setup, the biggest room has 20 people, the rooms have all been created on one server, but people have joined from anywhere, including their own one-person-homeserver

      So for me it is still the perfect replacement for any of these: IRC, Slack, Discord, Signal, WhatsApp, XMPP, Twitter, Fediverse, Telegram

      Stuff I know of but have not tried in a meaningful capacity: Rocket Chat, Mattermost, Zulip

      The only times I joined huge public rooms it didn’t feel great, but it’s been a while since I’ve been active there. Guess I should try again to get a better feeling, but I’m not here to defend Matrix, I’m just saying despite all flaws I may or may not notice, it’s great for this.

      1. 1

        I’m part of a group of people who have switched to Matrix from IRC


        1. 5

          I’m not ~wink, but at one of my companies we switch to Matrix from IRC because of IRC being an atrocious experience for non-technical people and on mobile. It’s been running for years, non-federated without major issues.

          1. 3

            That’s why we switched from IRC to XMPP to Zulip. Zulip is overwhelmingly good for both tech and non-tech people, as long as you don’t need any federation.

            Federation would be very useful.

            1. 2

              Zulip is by far my favourite of these kinds of things. The hybrid forum design is a bit strange, but it’s just a really useful model.

              The main downsides for me are that its screen sharing, streaming, video call and voice comms experience is worse than discord (zulip just does it through jitsi, which is fine when it works but is more fragile) and the presentation style is less fun than discord’s.

              OTOH, voice call through discord isn’t great anyway. Real phone calls, teamspeak3 and mumble have noticeably better latency and quality.

          2. 3

            Web and mobile IRC clients exist, but I agree that they are (mostly) slightly harder to use than Matrix. But signing up is much easier IMO.

            1. 5

              It seems it’d be really useful to adopt Discord or Matrix-like UX for some IRC clients. IIRC IRC Cloud does this but I might be wrong. Server icons and whatnot could easily be added to ircv3 as a capability.

              I think right now there’s a complete lack of IRC developers.

              1. 8

                I know a bunch of the people who used to do IRCv3, and they gave up with how little progress was made. I think IRCv3 had its chance, and that chance is gone.

                1. 2

                  Yeah I heard v3 has been stagnant / hard to move… :/

                  Do we need a more natural approach? Like have an IRC server implement a capability, and with popularity, becomes adopted by others? Might be better. Could be a fun discussion elsewhere.

                  1. 2

                    IRCv3 is already based on capabilities like these to allow progressive enhancement. See the support tables: and

                2. 2

                  I know a bunch of the people who used to do IRCv3, and they gave up with how little progress was made.

                  Any idea why it was so hard?

                  1. 3

                    I’m an active contributor to IRCv3 and honestly I don’t know. My guess is that anyone who cares about frontend development moved on to platform with more modern frontends, and few people volunteer to work on the GUI clients.

        2. 5

          You’d have to ask the others for specifics, I’m one of the very few holdouts who still use IRC, in my case most days. I’d say the usual stuff: no history without a bouncer, no media sharing.

          It was a channel of people who’d known each other in RL for years, plus a few additions. From time to time someone vanished and at some point we gave up the channel. Matrix managed to reignite interest, my guess is because it has a decent mobile app and is not horrible on a computer. Or maybe the time was right and I’m just projecting, but unlike other (small) communities stuff like Facebook, WhatsApp would have never worked out with this crowd

          1. 2

            In theory, IRCv3 supports server-side chat histories:

            I agree about the media sharing (and the mobile apps) though. Android has a few decent IRC apps, iOS does as well, but they’re clunky in some aspects.

            1. 9

              Good luck finding a server and client pair that supports any of the new features. That’s the biggest problem with the IRCv3 ecosystem.

            2. 8

              My biggest problem with IRC on mobile is the horrendous battery life problems because you need to maintain a persistent connection that’s constantly sending you data you may or may not want. That needs deep, serious protocol-level changes to fix and those are simply never going to happen. That, or you need a server-side support component that probably doesn’t speak IRC to the mobile device.

              1. 3

                My experience with matrix on mobile has been horrendous battery life problems. But I guess they are app-issues not protocol-issues.

              2. 1

                What’s “horrendous” for you, and what is “data you […] may not want” that gets sent for IRC but not other IM systems?

                From looking at the system battery stats and Accubattery, Quassel on my Android 12 device has used 10%, but I have spent a lot of time in the app with screen on so I’d guess the background battery use part is <5%. Not great, not terrible. (Yes, Quassel uses its own protocol to talk to its bouncer aka “core”, but the “persistent connection” part still applies.)

    7. 2

      Since none of my projects are written in Python or Java and I haven’t touched C++ for years, I find the creation (and purpose) of these “top lists” a bit mysterious every time. How are the “top languages” determined and what do I get out of this information?

      (I sincerely hope that the majority of those who want to learn programming don’t base their decision solely on the question of what is the easiest way to find a job. That would be boring).

      1. 3

        In this case their methodology is described at

        1. 3

          Thank you. :-)

    8. 3

      There’s good reason for anger here (though I’m not sure yelling at people on GitHub is necessarily the best outlet).

      This should be a mandatory notice on every GitHub project.

      1. 3

        This is one of very few cases where I disagree with it. You don’t yell at people for mistakes or choices you don’t like. But this direction is bad for everyone apart from huge companies that will push more restrictions and forced ads on us. People who helped this happen did a shitty thing to all of us and our kids. They could’ve said no and I will blame anyone working on consumer device DRMs for making the world worse.

    9. 7
      • jellyfin for a small library of tv shows
      • miniflux for rss feeds
      • libreddit
      • soju (IRC bouncer)

      All of these run off of an Odroid N2+.

      1. 7

        miniflux would be ideal if only it supported sqlite. I don’t necessarily see the point of having a single static executable as a feature when you need a separately managed db process.

        1. 4

          My thoughts exactly. That’s the reason I use yarr.

          1. 2

            Thank you, yarr is exactly what I have been looking for!

      2. 3

        soju looks great! ~emersion has a bunch of other neat stuff and it turns out I was using some of it already, fun to explore the rest.

      3. 1

        What is libreddit?

        1. 2

          A private front-end for reddit; quite peculiar since I thought reddit imposed restrictions a few weeks ago over HTTP request against their API

          1. 11

            IIRC the API is still available for low-request app keys, which likely works fine for most individual users’ needs, but the change effectively killed high-usage app keys like third-party mobile clients. When Baconreader went dark because of it, I stopped using reddit on my phone. I’m now 62 days into Dutch on Duolingo. Thanks, reddit!

          2. 1

            Oh rock on, that makes sense now.

          3. 1

            Which basically led me here.

            … wait, does libreddit have apps yet?

          4. 1

            The libreddit instance is only accessible from LAN and I only use it occassionally. It uses the anonymous API and I never hit the rate limit.

    10. 5

      A 9front server for backups (via Venti) and a network-wide ad blocker (any proxy should do, Linuxers could just run AdGuard Home). On servers (not “at home”), the list is notably longer.

      1. 3

        Ah yeah, I forgot to mention Pi-Hole, I use it and never think about it, I guess that’s a sign of a good DNS server?

        1. 2

          I never tried Pi-Hole, but yes, a server which you don’t remember all the time is a painless server that just works.

    11. 2

      A lot would argue bash goes too far already. If you need actual logic around processes, use a language.

      The biggest issue is RPC between everything. Json solves it. The problem isnt the shell. It’s practicing Json usage.

      1. 2

        A lot would argue bash goes too far already.

        Which is one of the reasons why my login shell is the standard V10 UNIX shell rc. It does what it says: it runs commands. That’s it, mostly.

    12. 68

      I actually want simplicity.

      1. 10

        This is why it’s so important to word such things carefully. Going by the article’s title, you either don’t exist or are no one. In essence, the post discusses away the existence of certain people and mindsets. It is not only intellectually disingenuous and wrong, it’s also rude. It’s a complete non-starter for a fruitful discussion.

        1. 9

          Eh. I think reading beyond the title is underrated. The question is “what are you willing to sacrifice to achieve simplicity?”, which requires some explanation but does lead to the conclusion in the title if the answer is, in practice, essentially nothing.

          1. 4

            OK, sure. “What are you willing to sacrifice to achieve simplicity?” would still have been a better title.

          2. 3

            I did read the article and it doesn’t change the fact that the title is wrong and flamebait.

          3. 2

            Why are you assuming that the only way to achieve simplicity is to sacrifice something? That is not true at all. A smaller simpler (but better) design can be more feature rush than a more complicated one.

            1. 4

              I’m not, I’m simply stating what the article says.

              But I do think almost everyone would agree that simplicity is better if there’s no trade-off necessary to achieve it.

        2. 4

          Sadly, this type of wording in titles (also in videos) are the ones that get traction pretty much every where. It cannot allow for a middle ground in the point that (hopefully) the author is trying to move across.

        3. 3

          There is no statement about everyone that can possibly be anything but hyperbole, other than the most basic statements of fact like “no one can survive without oxygen.”

          No one should be offended by hyperbole.

          (ba dum tss)

      2. 7

        I work on safety-critical real-time stuff. We can only use simple software otherwise it becomes impossible to guarantee safety and timing. For many use cases a Linux kernel is too complex. A microprocessor is too complex.

      3. 7

        Author here. Obviously my post’s title was inflammatory hyperbole, but to try to defend my main point for a minute:

        How many things in your web development stack can you name — things that you actually like and consider to be a Good Thing — that you would be willing to sacrifice to achieve simplicity?

        I can’t think of many for myself.

        1. 2

          Performance; as long as the code isn’t doing things in a boneheaded way, it’s almost always fast enough.

          Visual effects; I’m cheating here – this isn’t something I actually like, so removing it is pure upside. But it’s complexity that many many applications insist on, and removing it would be welcome.

          Abstraction; code is often shorter and easier to explain when written with fewer, smaller abstractions. The abstractions may be elegant, but they aren’t worth it.

          Resilience; the ability to handle faults gracefully is often fragile, getting it right is time consuming. It typically doesn’t pay it’s way. Detect the error, crash loudly, and move on. Be resilient in a small number of carefully chosen chokepoints instead of spreading error handling everywhere. Aiming for five nines of reliability isn’t worth it.

          the list goes on.

        2. 2

          Obviously my reply is inflammatory hyperbole….

          Because we can’t be arsed to find another job, we let our manager convince us to add yet another baroque curlique to a product that should have been cast in concrete and declared “done” a decade ago….

          …the only ethical thing to do actually is remove obsolete features and any remaining bugs.

          But it’s still selling and unless we keep adding features we will be out competed by our competitors and creating a new product in a new category is too expensive and risky…

          So day by day with a sick feeling in our stomachs we add yet another wart.

          And our customers, being in a market for lemons, choose the glossiest and sparkliest lemon on the rack…..

          …and so life gets shittier for everyone.

        3. 1

          I already achieved simplicity. No frameworks and using basic text editors. I guess…

        4. 1

          Obviously my post’s title was inflammatory hyperbole

          Hyperbole, yes. Inflammatory, no.

          inflammatory: arousing or intended to arouse angry or violent feelings

        5. 1

          I would sacrifice the Lisp and ML families. I would sacrifice sed and jq. I would sacrifice Nix.

      4. 7

        So, what are you willing to give up for it?

        The point, as I take it, is that “simplicity”, like “performance” and other good things people often claim to want more of, is a tradeoff: if you want more “simplicity” or more “performance”, you often will have to give up at least some quantity of something else you care about to get it. And reframing in this way is not just splitting hairs, because it leads to more productive discussions. For example, instead of “why don’t developers care about performance” (unproductive) we can reframe to asking about tradeoffs between performance, which developers do care about, and other things that they also care about, and how to affect the choices being made.

      5. 9

        Simply said

      6. 4

        Most people don’t want simplicity, but the author just put “nobody” because it was simpler.

      7. 2

        Do you own a dishwasher?

        1. 4

          I do. And I installed it myself, which means I can claim with a straight face that dishwashers are pretty simple:

          • there’s a hookup for power. Electricity is used to heat water and run the controller which handles the user interface, sensors and timing commands. Finally, it runs a motor for a drain pump, possibly with a small grinder.

          • there’s a hookup for clean water input. Water is used to clean the dishes, and incidentally to spin the distributor arms.

          • there’s a hookup for grey water draining.

          The primary differences between consumer dishwashers are the material of the central tub, the arrangement of the racks, and the arrangement, quantity and quality of the sound insulation. Most of the sound insulation is external and replaceable.

          Once you understand it, it’s simple.

          1. 7

            The primary differences between consumer dishwashers are the material of the central tub, the arrangement of the racks, and the arrangement, quantity and quality of the sound insulation

            Apparently this is largely due unintended consequences to EU regulation on replacement parts for white goods. This meant that it’s not economically viable to produce dishwashers that are differentiated in any meaningful way unless you are certain to sell very large numbers. They all include almost all of the same components so that they can guarantee availability of replacements for the mandated period.

            Once you understand it, it’s simple.

            Having flooded the floor by not putting plumbers’ tape on when connecting up the water input, I can attest to the ‘once you understand it’ bit.

            1. 1

              Surely that’s an intended consequence. Policymakers would have to be quite naive not to expect that outcome.

              This is speculation, of course, please don’t take it too seriously. Your point stands, regardless.

              1. 6

                I don’t think reducing competition or innovation was an intended consequence. Policy makers being naïve and not considering second-order effects is fairly normal in my experience.

                1. 1

                  Sorry for the delay in responding.

                  I of course don’t know what’s in anyone’s mind except my own, and you could well be right. I do think that regulatory capture is a transformation that most industries have gone through, and it would require a surprising level of naivete to not anticipate it. I am not an EU resident and I don’t really know any EU politicians, so I’m not really qualified to speculate I guess.

          2. 3

            The API is simple, for you. The complexity is hidden behind the form of a commodity. Mining, manufacturing, transport, etc. It always seems like when programmers say they like when things are simple, they generally just mean “simple, for me”, and not simple, for thee. It seems like to me a proclamation for concerns to be handled by others.

            1. 1

              All simplicity is subjective. if you disagree, I’m going to have to point out that you are made of billions of cells, each composed of millions of molecules, each built from up to a million atoms, each made of leptons and baryons and held together by forces that require conditions approximating the first minute of the universe even to observe reliably… so nothing is simple and the word has no objective meaning.

              1. 1

                I know.

    13. 1

      Good thing WordTsar (developed by a writer!) still exists.

    14. 2

      Plan 9 uses /usr, just like it should.

    15. 1

      Wouldn’t it be easier to just use vterm?

    16. 1

      I wrote a library for that a while ago.

    17. 10

      a full rust email server? cool :D

      1. 9

        Some people seem to hate it so I avoided mentioning it, but yes, it is written in Rust.

        1. 9

          Because being written in Rust is not a feature.

          1. 16

            It is a feature for a project to be written in Go, rust, C++, etc. as opposed to python, as least for me. It means, in my experience, that it’ll work and upgrade more easily; it might even come as a single binary. Being in Go or rust also means it’ll probably be fast, concurrent, and not too prone to crashing.

            That’s subjective but it’s definitely been my experience.

          2. 4

            While it’s well known that I’m no fan of Rust evangelism, in this particular case from an ops standpoint knowing that it’s a Rust project–and hence likely to be a lot simpler operationally as a binary–is helpful.

            1. 5

              IMHO, the relevant problem with running your own mail server is not that there are several libraries on which it depends.

              1. 7

                Taking untrusted input data from the network isn’t something that gives you pause in C?

              2. 5

                Why does there have to be only one relevant problem?

            2. 4

              Even in that case, the feature is “simple deployment”, not “written in Rust”.

    18. 1

      the FreeBSD kernel, at that time, was ahead of the Linux kernel in term of features

      It still is.

      1. 16

        I don’t think that’s universally true. There are some great things in FreeBSD, such as out-of-the-box ZFS support that Just Works, pf, jails, Capsicum, Netmap (out-of-tree in Linux and with limited driver support) and so on. It also has a stable KBI within a major release, which makes long-term support for third-party kernel modules much easier, filesystem locking centralised in the VFS, which makes implementing a new FS easier.

        At the same time, Linux has things like io_uring, better support for power management and, these days, probably a better scheduler (the infrastructure in FreeBSD for plugging in different schedulers is better). Linux has UID namespaces, which make it possible for unprivileged users to build jail-analogues.

        Saying either is better depends a lot on your use case.

    19. 1

      As I mentioned earlier, configuring Neovim was fun but it was also tiring and time-consuming. As much as I loved tinkering my config everyday, I realized it was a distraction. I was spending more time configuring my editor than actually coding.

      That would be a distraction for any editor. I use both Neovim and Emacs daily, but I would be really pissed if I had to change or tweak their config files every day, that seems crazy to me. Maybe I do that once or twice a year and that’s a lot.

      I do understand the appeal of an IDE with a lot of blinking lights and cute graphics, and having Copilot pissing code for you can feel like you’re really productive (if you’re just counting lines… but that’s another topic). I still find VS Code annoying and slow overall even on a super fast hardware, YMMV. :)

      1. 4

        I do understand the appeal of an IDE with a lot of blinking lights and cute graphics, and having Copilot pissing code for you can feel like you’re really productive (if you’re just counting lines… but that’s another topic).

        This is a needlessly condescending way to phrase your opinion.

        1. 4

          It also shows a deep lack of understanding of the benefits of IDEs and Copilot.

          1. 3

            Like being able to use other people’s code without having to respect their license.

        2. 2

          This was not the intent here. Sorry if it came out this way.

      2. 2

        I do understand the appeal of an IDE with a lot of blinking lights and cute graphics,

        I like blinking lights and cute graphics. That’s why I use Emacs.

        1. 1

          I’m not sure that I’ll use it, but I love that it exists. XD