1.  

    I made a package for xmake’s repo (libmpdclient) and will be actively improving and updating it.

    I also switched over the build system for cppfetch from meson to xmake, and have been steadily working on it’s xmake.lua file as well.

    I am quite loving xmake, and working with it has been a joy. The dev is also quite responsive so I managed to get a lot of stuff figured out with their help. I even managed to help uncover a bug in xmake with it’s meson stuff. So things have been fairly productive!

    1. 2

      This actually made quite a compelling case in my opinion.

      I wasn’t sure if I would before, but now I am definitely going to try out xmake.

      1. 1

        Working on a new program called alrm.

        It’s goal is to be a cross-platform CLI alarm (on Windows and Linux), and a GUI (probably a kotlin wrapper around the program) for Android.

        1. 2

          This looks really neat! Definitely going to try this.

          Though why does it require an email/imap server?

          1. 1

            I think it requires imap to fetch email sent from phone using sms gateway

          1. 1

            Gonna be working a bit more on bcalc, a pure-bash calculator that I wrote a lexer and parser for meaning you can do things like ./bcalc '(1+2)^2' instead of ./bcalc '(' 1 + 2 ')' ^ 2.

            Going to be playing Mirror’s Edge for a while tomorrow, I have to watch my parent’s house while they’re out all day. It gives me a chance to play it, plus it’ll give me a reason to play music off of their awesome sound system, so I’m not complaining.

            I’ve also renovated my site quite a bit, made use of flexboxes and all that so things are actually proportioned right. And I’m still in the process of updating it, it’s just taking a little longer than I like because flexboxes are weird and don’t make sense like half the time.

            1. 1

              A lot of the if/else chains can be replaced with a case. Neat, though.

              1. 1

                I’m actually not sure, because I use regex in a few of them (which are only supported in [[ ]]), not in case statements.

                Some of the ones I could, are only single if/else statements in which there would be pretty much no point in converting to case statements.

            1. 6

              I just started using F#, around a month ago IIRC.

              What drew me to F# was purely the syntax.

              The first time I encountered it I was enchanted, mesmerized, because the code looked so beautiful.

              It was actually thanks to a post shared here on Lobsters, I should find it so I can link it for reference.

              1. 2

                I’m @Phate6660@fosstodon.org.

                I’m in agreement with mattrose, I think Fosstodon a great community as well.

                You’ll get quick and friendly interaction there, at least based on experience.

                And there’s tons of interesting stuff to see there.

                1. 1

                  I typically use newsboat (TUI) or elfeed (Emacs).

                  1. 1

                    I can’t help but agree with the article. I’ve noticed the things mentioned, plus sources are included for the claims. I’ll have to check out the fork mentioned.

                    1. 6

                      I’m quite happy with the neo-dark lobsters userstyle.

                      Install the Stylus addon to use it, Stylish is bad.

                      Screenshot: https://i.imgur.com/Iyu9sDM.png

                      1. 2

                        This Stylus addon is awesome. Thanks for the hint. I’m pretty sure that I’m going to use it quite a lot (just made lobste.rs dark for me).

                        1. 2

                          Stylus is pretty awesome, I’m using it to hide unneeded elements on web sites I visit often. Don’t like this bar on the top? Hide it. uBlock hides the ads, but leaves the empty space that is left unused? Hide it. Lobsters doesn’t have a dark mode? It’s just a few CSS rules and dark mode it is. HN doesn’t have dark mode? Add a bunch of other CSS rules. Don’t like this font? Change it by using 2 lines of CSS.

                          1. 5

                            FYI, ublock origin has element pickers as well to hide custom elements. Either temporarily (“zap”) or by creating rules.

                        1. 9

                          If I respond to this right now, it’s going to come across as trolling or ranting.

                          So for now, I’m just going to say I completely disagree with this, and will update this comment once I’ve had time to calm down and collect my thoughts.

                          1. 5

                            If I respond to this right now, it’s going to come across as trolling or ranting.

                            So for now, I’m just going to say I completely disagree with this, and will update this comment once I’ve had time to calm down and collect my thoughts.

                            This is a great comment template for internet discussions. Thanks!

                            :-)

                          1. 4

                            Installing LFS (for like the 8th time) because I can’t stop fixating on everything that the Gentoo devs are doing that piss me off. And I’m tired of spiraling out to mental instablility.

                            Besides that; probably drinking, a lot.

                            1. 1

                              What do they do that disagrees with you?

                            1. 4

                              Neat!

                              Looking at the way browsers are handled, would you consider using xdg-open instead?

                              1. 5

                                Done:

                                if [ "$action" = "view" ]; then
                                    echo "${url_array[$article]}"
                                elif [ "$action" = "read" ]; then
                                    if [ -n "$BROWSER" ]; then
                                        "$BROWSER" "${url_array[$article]}"
                                    elif type -P 'xdg-open'; then
                                        xdg-open "${url_array[$article]}"
                                    else
                                        read -p "Please enter your browser's binary (e.g. firefox -- if it's in your \$PATH), or the full location of the binary (e.g. /opt/firefox/firefox): " browser
                                        if [[ "$browser" == *"firefox"* ]] || [[ "$browser" == *"palemoon"* ]]; then
                                            eval "$browser --new-tab ${url_array[$article]}"
                                        else
                                            eval "$browser ${url_array[$article]}"
                                        fi	
                                    fi
                                fi
                                
                                1. 2

                                  And/or the $BROWSER environment variable. Basically something like this:

                                  elif [ "$action" = "read" ]; then
                                  	if [ -n "$BROWSER" ]; then
                                  		$BROWSER "$url"
                                  	elif type -P 'xdg-open'; then
                                  		xdg-open "$url"
                                  	else
                                  		read -p "Please enter your browser's binary  " browser
                                  		[.. trim ..]
                                  	fi
                                  fi
                                  
                                  1. 1

                                    I wonder if there’s a standard way to specify the opener binary; something like, export OPEN="$(which xdg-open)" (since not all platforms use xdg-open).

                                    1. 1

                                      Not as far as I know; if you use an xdg-open alternative then having some sort of wrapper is probably the best solution.

                                  2. 1

                                    Sorry for the late reply, I didn’t notice the time when I posted this and had to do go to sleep pretty much directly after posting.

                                    I can, I just haven’t yet because I don’t use any XDG stuff. (I’m on Gentoo and don’t want to installs all the deps for it.)

                                  1. 2

                                    Nice! FYI, bash also seems to be an unmentioned dependency, but I understand if you like its conveniences!

                                    1. 2

                                      Good point, I’ll list bash as well.

                                    1. 3

                                      Man I wish I could use Mako, but unfortunately it requires systemd or elogind. Just no. I’d rather just use dunst via XWayland.

                                      1. 4

                                        Yes, depending on the sd-bus library sucks. However that’s the only half-decent D-Bus library out there. The plan is to get basu up and running on non-systemd distributions.

                                        1. 1

                                          mako doesn’t require systemd or elogind. It does however require dbus (as does dunst if I’m not mistaken).

                                          Edit: sd-bus is required so you do need libelogind at a minimum. You do not need to be using elogind however.

                                          1. 3

                                            I don’t want anything from elogind nor systemd on my computer. So I guess for now, whenever I’m in a wayland session I’ll stick to using dunst.

                                            1. 13

                                              It uses systemd’s dbus library, that is all. But, if that is the line you want to draw, by all means.

                                              1. 5

                                                It is the line I want to draw, I personally have a no-tolerance policy for systemd, and that extends to elogind.

                                                Why couldn’t it just use dbus without systemd or elogind?

                                                dunst uses dbus but doesn’t haven’t a hard dependency on systemd/elogind,

                                                1. 12

                                                  It does, indeed, just use dbus. It happens to use the dbus library from systemd’s repository for it. If you forked systemd, deleted everything but the sd-bus bits, it would work.

                                                  1. 8

                                                    That’s exactly my point, that shouldn’t be necessary. dunst can use d-bus on it’s own without elogind/systemd.

                                                    Having a hard dependency on an init system, or a portion of it, is beyond stupid for something like a notification daemon.

                                                    1. 11

                                                      Okay.

                                                      1. 3

                                                        Having a hard dependency on an init system, or a portion of it, is beyond stupid for something like a notification daemon.

                                                        I disagree, it’s part of the operating system for many distributions, a specifc component they want to rely on. There are certainly people who want to use the Linux kernel, but are not interested in systemd, but that is not everyone.

                                                        And setting that aside, it’s not a hard dependency, as others have already said. It’s a dependency on an interface, at best.

                                                        1. 2

                                                          It is a hard dependency as it is literally required at this point in time.

                                                          You can not compile it without having elogind or systemd.

                                                          But also I think you’re missing the point.

                                                          There are plenty of other notification daemons, that do no require any certain init system or a portion of one. That can do the same, or even more than, Mako can. The only difference is that in regards to Mako there’s not really any major competing software for it.

                                                          By requiring elogind/systemd, there’s basically a boundry set in place for people who want to rid themselves of using the garbage known as systemd. And that’s totally fine, it’s their software. But they could probably gain a lot more users by not using a dbus interface tied to any one init system.

                                                    2. 4

                                                      Might be pretty easy to change if you make a PR or request for it. There’s other dbus interfaces out there.

                                                      1. 1

                                                        I would make a PR, but I am garbage at both reading and writing C.

                                                        I can try requesting, but I really doubt they would even consider it.

                                                  2. 1

                                                    Wait, why not? Any good writeups I could read about the downfalls of systemd?

                                                    1. 1

                                                      I don’t really have any resources but my own list of things that drive me insane about systemd.

                                                  3. 2

                                                    Every time I’ve tried to compile it, it fails due to missing systemd/elogind. I can try compiling it again.

                                                    Is there some sort of like build-time configuration that I’m missing? I have not found any way to compile it without systemd/elogind.

                                                    1. 4
                                                      Building
                                                      
                                                      Install dependencies:
                                                      
                                                          meson (build-time dependency)
                                                          wayland
                                                          pango
                                                          cairo
                                                          systemd or elogind (for the sd-bus library)
                                                          gdk-pixbuf (optional, for icons support)
                                                          dbus (runtime dependency, user-session support is required)
                                                          scdoc (optional, for man pages)
                                                          jq (optional, runtime dependency)
                                                      

                                                      This is directly from the README.

                                                1. 4

                                                  This is a list of various Rust applications that I either use or keep close watch on.

                                                  I’ve used most, if not all, programs in the list.

                                                  Can anyone think of anything to be added that I may have missed?

                                                  1. 9

                                                    I’m partial to https://github.com/antifuchs/chars (being the author) - I use it every few weeks.

                                                    1. 2

                                                      Very nice, I can see myself using this as well. I’ll add it right now along with spieglt’s software that was shared above.

                                                    2. 8

                                                      https://meli.delivery/ terminal email client

                                                      1. 2

                                                        Jeez, I actually know of that and follow it’s development. How could I forget to put this on the list!?

                                                        Thanks for reminding me, adding it now.

                                                        1. 1

                                                          Sorry for the late reply, I was working. Added them!

                                                          Though I did add a warning about topgrade, as it runs specific system commands that may or may not be installed on your system. I don’t use it, so I’m not sure if they added error handling for that. But I felt the need to put the warning in regardless.

                                                        2. 4

                                                          I saw you had a Gameboy emulator on there, I wrote an NES one if you’re curious: https://github.com/spieglt/nestur. And a password-based file encryption utility: https://github.com/spieglt/cloaker.

                                                          1. 3

                                                            That NES emulator looks great, I’ll be sure to add that! As for cloaker; I’ll still add it, but I’m going to add a disclaimer about it using Qt.

                                                            This is nothing against you, I just personally have an irrational hatred for Qt.

                                                            1. 2

                                                              Thanks! And totally get it re: Qt. I hate that wrapping Rust as a static lib in a C++ program was the easiest way I found to have a cross-platform, lightweight, standalone binary.

                                                          2. 3

                                                            I think people could use this in different ways, but I didn’t see a list of Rust users on the Rust website after a very quick inspection. Your list might be a helpful contribution to the website as some people like to learn by digging into a real project.

                                                            1. 2

                                                              There’s a very hidden one that was moved over from the last website, but such lists were removed from the current rendition of the page. The reason here is simply: such lists need to up-to-date and maintained (including going through and removing items). The old website had this a ton (such as the famous FAQ and the meetup list). This is a surprisingly high drag on maintainers.

                                                              People liked it on an emotional level, but for new users, it was very bad, as meetups went in and out of existence and the FAQ famously stated that Rust is not yet adopted in Firefox when we moved over to the next one. Those are just 2 examples. Our strategy now is that if you feel the urge to add an FAQ, it should probably land in one of the books or some actually maintained documentation.

                                                          1. 5

                                                            rage: Rust implementation of age https://github.com/str4d/rage

                                                            trust-dns: DNS client, server, and resolver https://github.com/bluejekyll/trust-dns

                                                            rsign2: sign and verify files https://github.com/jedisct1/rsign2

                                                            Redox - operating system in Rust https://www.redox-os.org

                                                            Redox isn’t an app of course but it’s worthy of mention. Such an impressive and cool project.

                                                            1. 1

                                                              Sorry for the long wait, was at work. They’ve been added, and I also added ion shell as well.

                                                            1. 5
                                                              • Getting over being sick
                                                              • Waiting on Covid test results (as it’s mandatory to return to work – I don’t think I have Covid, just a cold)
                                                              • Working on a lot of programming I’ve been backed up on (no time since I work)
                                                              • Working on my anxiety
                                                              • Attempting to not impulse spend on every good artist I find on Bandcamp
                                                              • Trying not to travel the downward mental spiral of software licensing (I almost flat out quit software development because of it, my solution was to write my own license)
                                                              • Anything else I may have forgot /shrug
                                                              1. 4

                                                                I was going to share this in a new thread, but since it’s related I’ll share it here.

                                                                (Not trying to take over your thread, just trying to keep the home page clean.)

                                                                I found a really nice locate alternative written in Rust, and it’s really good (at least in my opinion).

                                                                https://github.com/mosmeh/indexa

                                                                1. 3

                                                                  Is it as fast as this one though?

                                                                  1. 3

                                                                    In terms of searching for the file based on the query, yes. It feels almost instataneous.

                                                                    However, it’s used for interactive selection. That way you can wrap commands around it like:

                                                                    emacs "$(ix)", vim "$(ix)", or mpv "$(ix)"

                                                                    Selecting the file you want in indexa will output the full path to stdout.

                                                                    1. 2

                                                                      I just tried out both. plocate is much more a near drop-in replacement for mlocate. plocate ingests (usually pre-built) mlocate databases while ix does its own file tree walking. This makes plocate build time 100s of times faster than ix as well as sharing the usually in cron DB builds.

                                                                      In terms of query time, plocate runs in low single-digit milliseconds. ix seems to have no non-interactive mode. The only way to make it non-interactive would appear to be a pseudo-terminal (the setup & control of which which might well dominate run time).

                                                                      1. 1

                                                                        Actually, indexa creates it’s own database, than tree-walks from that.

                                                                        And I did say that indexa was used for interactive selection.

                                                                        I said that in terms of searching, yes, it’s just as fast.

                                                                        1. 2

                                                                          You can reimplement indexa with plocate and fzf. It would probably be faster and less diskspace used for the file database.

                                                                          1. 1

                                                                            I meant that “just as fast” is hard to know. indexa is only interactive. So, one is stuck with “how fast my screen changes”. plocate was taking 5 millisec. A 10x slower indexa at 50 ms might well “look” the same, roughly “movie frame instant”. I’m not saying indexa does take 50 ms on my test file hierarchy. I just don’t know. It’s hard to measure. :-) That was my point of my 2nd paragraph. Sorry it was unclear. Could be under 1 ms or maybe up to 100ms. A more careful comparison is warranted before claiming “just as fast” conclusions, though.

                                                                            1. 2

                                                                              For example, if type time ix -q MissingFile and hit the ENTER key twice in as rapid succession as I am physically able then the lowest time I can see is about 75 ms. Meanwhile, if I strace -tttfs16 -o/dev/shm/ix.st ix -q MissingFile and do grep -C2 'execve\|read.0,' /dev/shm/ix.st then I see times around 75-85 ms until calls just before the read(0,..). That is some 15..17x slower than plocate on the same test data.

                                                                              These are admittedly lame benchmarks & include all screen/terminal set up time in both cases and strace/ptrace mode overheads in the more precise benchmark. Whoever wrote indexa already added -q. If they just add a -n non-interactive option to just print any answers then performance would be much easier to compare.

                                                                              Looking at the strace shows a lot of millisecs in memory allocation system calls, though. So, I am not optimistic that this Rust thing is much faster than 10x slower than plocate, carefully assessed. Also, for my test data, indexa|ix uses 286 MiB while plocate uses only 4 MiB. So, I would have to agree with @Foxboron that plocate + fzf would likely be more efficient in multiple metrics.

                                                                  1. 1

                                                                    I’ve always wanted to try NixOS, but I don’t want to taint my computer with systemd.

                                                                    I’ll try it whenever somebody forks it and removes the systemd dependency or they release a systemd-free version.

                                                                    /shrug

                                                                    1. 5

                                                                      I don’t think that will happen, as NixOS uses several good features from systemd. You can also just try Nix, for handling packages and dependencies for your projects.

                                                                      1. 8

                                                                        There was a talk at NixCon about abstracting out services in NixOS:

                                                                        https://cfp.nixcon.org/nixcon2020/talk/TW79FU/

                                                                        Allowing us to reuse the service configuration for launchd on macOS or various alternatives like supervisord.

                                                                        1. 1

                                                                          I might try the Nix sometime. But for now it looks like I can safely cross NixOS off the list of distros to try.

                                                                          1. 17

                                                                            If blind hatred of systemd here is what is holding you back, maybe try broadening your horizons a bit.

                                                                            NixOS uses it to good effect.

                                                                            1. 5

                                                                              Did you really just assume that my hatred of systemd is blind?

                                                                              That I, in no way, have a rational disgust for this software?

                                                                              systemd is a horrible piece of software for many reasons:

                                                                              1. The undeniable feature creep. While some people actually enjoy the features brought in from it (boot manager, network manager, login manager, home manager, etc), I find them to be nothing but bloat. An init system should be just that. An init system. Not <insert an exaggerated amount of functions here>.

                                                                              2. It is slow. Slow to shutdown, slow to boot up, etc. Here are actual timed reboots from my machine using 3 init systems. systemd (2m3s), OpenRC (11s), Runit (7s). 2m3s vs 7s, which would you choose?

                                                                              3. Due to the feature creep, there is a larger attack service for bugs and security vulnerabilities. And there are security issues with systemd.

                                                                              4. This is the one that bothers me the most. It’s almost as if the dev(s) are completely oblivious or at least ignorant to the feature creep and security issues.

                                                                              5. A lot of the time, we don’t even get the choice to not use systemd. There a lot of packages (and the list grows every day) of packages with a hard dependency of systemd, So unless you modify that program yourself, you literally won’t be able to use it unless you succumb to using systemd.

                                                                              6. There are privacy issues with it. For example the hardcoding of Google’s DNS. “It’s a fallback”, that’s no excuse. At some point someone will be using that and their privacy will be ruined.

                                                                              Now, some of these you could call nitpicks (like the reboot times). However I find issues 1, 4, 5, and 6 just unacceptable. Those are what absolutely keep me from using it.


                                                                              This is my abridged list of issues, but I can make an even larger wall of text if you want me to.


                                                                              And I really don’t appreciate your tone. You sound very stuck up and pretentious telling me to “broaden my horizons”.

                                                                              On top of the fact that you just assumed that I had no reason to hate systemd. Honestly.

                                                                              All you had to do was ask, “hey, may I know what about systemd you hate? why is it bad?”.

                                                                              But no, you decide to insult me with your stupid response.

                                                                              1. 10

                                                                                You don’t have to use it forever, or even agree with its implementation! You don’t have to trash your daily driver!

                                                                                But my dude, not even giving it a shot because of your issues with systemd (quite aside from whether or not those are valid, which I mostly think they are…I rather despise it for other reasons) is cutting off the nose to spite the face–especially since you also don’t want to try Guix.

                                                                                I meant broadening your horizons in the literal sense: there is some really interesting stuff happening in those ecosystems, and even a brief foray into them may be really useful and neat–or it might not. But, like, if you refuse to even try because of NixOS’s use of systemd, you’re letting those developers harm you twice.

                                                                                1. 4

                                                                                  I apologize for my rudeness. At the time I had literally just woken up, haven’t had any coffee or cigarettes, and the first thing I saw was someone telling me that I have a blind hatred and that I need to broaden my horizons.

                                                                                  Surely you can admit that from my perspective, that would be at least a little irritating.

                                                                                  I can agree with what you’re saying, but personally I can’t do it. Using an OS which uses systemd would be justifying it. And I can’t allow that. That would be hypocritical and unjust.

                                                                                  “Be the change you want to see”: By refusing to use anything with systemd, I as an individual am giving less power to it and it’s devs.

                                                                                  1. 2

                                                                                    No sweat–I probably could’ve found a gentler phrasing than “broaden your horizons”. My apologies!

                                                                        2. 3

                                                                          You can use Nix and nix packages without systemd… nix is a package management system, and does not itself run any services.

                                                                          1. 1

                                                                            I was mainly interested in the OS, not the package manager.

                                                                            But at some point I plan on trying Nix. If I like it enough, I might run NixOS in a VM.

                                                                          2. 3

                                                                            What about Guix?

                                                                            1. 2

                                                                              No thank you. Guix is a rant for another time, but trust me when I say I hold a disain for it.

                                                                              1. 7

                                                                                I’d like to hear that rant some time, out of curiosity.

                                                                                1. 2

                                                                                  I second this, even just a rought draft would do.

                                                                                  1. 1

                                                                                    Seconded. This person seems to have interesting opinions.

                                                                                    1. 1

                                                                                      Maybe sometime.

                                                                                      When I rant, it messes my whole day up. I’m still seething about the “blind hatred of systemd” thing.

                                                                                2. 1

                                                                                  You can use systemD free version PKGSRC

                                                                                  1. 9

                                                                                    pkgsrc completely lacks the desired-state, functional language, and system management components of nix. It’s an apples and oranges comparison.

                                                                                    1. 1

                                                                                      Can you demonstrate how I can install multiple different versions of the same package without breaking the system install via pkgsrc?

                                                                                      As well as defining everything in a declarative way? I already use the “systemd free version” known as macos nix package manager. And I can do the same on any linux.

                                                                                      Also will need a way to do things like nix overlays which let me add custom patches to package builds.

                                                                                      Drive by comments like this without explaining how PKGSRC replaces or can be an alternative aren’t very useful. And as a note, I’ve set a super high bar for PKGSRC here but thats due to I get all of the above (and more) for free from the nix package manager. Nixos adds some more neat bits but ultimately its all on top of nix.