1. 6

    This is my first real blog post and it probably has some errors. This was also made before the release of the Native Journal Protocol spec which has more authoritative information and a few things I missed. (I’m posting as a comment as I’m not entirely sure if this fits in the text field, this is also my first post on lobste.rs IIRC)

    1. 4

      Great post! Journald is one of those great advantages that come with some of the costs of systemd. The fact that no libraries are needed to write to it and you just need to print to stdout feels so natural to me.

      Are you planning on doing a follow-up post with how to get things out of journald? You had some great journalctl commands in there and there’s so much more that it can do than just mimicking a syslog-grep.

      1. 2

        Thanks! I don’t have any plans for that but it sounds like a great idea. I really need to learn a lot more about journalctl. I actually wrote this to help me understand what I need to do for my WIP journald “rewrite it in rust” side project. Unfortunately it’s been sidetracked because of work.

    1. 6

      it looks like the output isn’t actually unified diff to be used as a patch? Seems like a missed opportunity

      1. 3

        Patches operate on text; this tool shows semantic difference, which is not the same thing as lexical difference.

        1. 8

          The output of this tool is still text, though. You could produce a patch that only contained the lines with a semantic difference, which would be a huge win.

        2. 2

          Wouldn’t you need a format that you require? Is one file formatted with black and one is formatted with flake8 and which do you want? Shouldn’t this be the first step or last step where you format the final file and the initial file with a formatter? Then you run this to see if there are differences and it will print them both in a “good” format? Or maybe after and print both the snippets piped through a formatter into a “good” format?

          Think of working with two people’s code who doesn’t match your preferred style. Or someone submitting patches that don’t match your style. You don’t want a patch to push the formatting in either direction in the first case and definitely not in the post direction in the second case.

        1. 7

          There are some excellent upgrades I’m embarrassed to say I only learned about recently. Perils of working in a Microsoft environment so long, I suppose.

          • rg ripgrep instead of grep, way faster and respects .gitignore
          • fd instead of find. No need to type find -iname "*foo*" all the time, just fd foo
          • et Eternal Terminal instead of ssh, to keep my session live through reconnects

          And I’ve been experimenting with some newfangled toys tools as well

          • zsh + powerlevel10k for an extremely fast prompt with doodads
          • zsh + fzf for fuzzy history searching
          • fish for incredible ergonomics: autocomplete, advanced syntax highlighting, multiline command editing
          • fish + tide instead of powerlevel10k
          • fish + fzf, same reason as zsh
          • bat instead of cat for pretty colors and line #s
          • poetry for managing Python builds in a declarative way that I’m used to from Nix
          • spacemacs as a drop-in replacement for vim. the syntax highlighting is way better

          Most of these upgrades boil down to either ‘go fast’ or ‘more intelligent use of color’.

          1. 1

            Have you tried treesitter with neovim 0.5? I’d like to hear from someone who thinks vim’s syntax highlighting is bad and something else is good. I’m on the edge of trying to switch for a week, but haven’t had the time…

            1. 1

              I haven’t yet, but NeoVim is definitely on my radar. I’m excited to try out Neorg as well.

            2. 1

              et Eternal Terminal instead of ssh, to keep my session live through reconnects

              Wait, are you Jason Gauci? I heard of this through him. He has an excellent podcast besides making that.

            1. 2

              I wonder how feasible would be to bypass the pseudoterminal choke-point entirely, and just integrate terminal and shell directly?

              1. 3

                It’s trivial in terms of MVP (just a repl where e is string split + Command::run), moderately annoying in terms of UX feature parity (using fish gives you autosuggestions, customizable prompt, and other things you’d have to implement yourself otherwise), and rather challenging in terms of ecosystem adoption (people use vim, readline, ncurses).

                But yeah, terminal/shell split generally makes no sense today, I hope they add some kind of “built in” shell in the future, and generally fulfill my new shell program :-)

                1. 1

                  I would rather have a well defined set of escape sequences that the terminal can interpret for non-traditional formatting. For example, what if there were an escape sequence for an expandable bulleted list? Many programs could take advantage of something like that; why should the shell be special?

                  1. 1

                    Yes, there’s no reason to not define an IPC mechanism for that. Though I’d use output mimetypes rather than escape sequences.

                2. 1

                  Isn’t that kinda tmux?

                  1. 1

                    It also uses a pty.

                  2. 1

                    ioctl.

                    1. 1

                      eshell is maybe reasonably close, if you consider emacs as your terminal

                    1. 10

                      Maybe someone could „train AI“ on Microsoft’s binaries and replicate their software… I am sure, that they would not be OK with that and would attack you with their lawyers. Today, it is more difficult, because lot of their software runs as a service in so called cloud (SaaS), but still there are significant portions of client-side code that could be replicated this way.

                      1. 7

                        I’ve thought about this with the idea of a clean room implementation robot. Code in -> spec out; throw the spec over the wall; spec in > code out.

                        1. 6

                          My biggest dream associated with this is drivers and hardware support. My kingdom for every driver’s clean room spec!

                      1. 7

                        A big question is ‘how much of the machine is mechanical, and how much of it is just the programmer’s tool?’

                        Does a drawing not become copyrightable because I used a tool called a pencil?

                        Does a drawing not become copyrightable if I hand you a mechanical duplication of it?

                        What if that mechanical duplication machine is AI powered?

                        Does a drawing not become copyrightable because I used a lossy compression tool?

                        What if that lossy compression tool is AI powered?

                        I think it wouldn’t stand up in court, just like that previous situation with the person offering music that “wasn’t” the Beatles, but sounded exactly like the Beatles to a human.

                        1. 4

                          Assuming it’s not creating derivative work, does this mean you can’t modify the generated algorithm? Does it need to be specially annotated in your codebase, by “Generated by GitHub Copilot”? Can you fix bugs or other issues in what’s generated or does that make it into a “derivative work” since it’s not only machine generated code?

                          I have trouble seeing Github Copilot as anything other than an antipattern. It generates code of questionable origin, copyright, and quality without thought or testing of that code. This makes it a legacy code and technical debt generator.

                          1. 3

                            The article says that it’s in the public domain, but who knows if that would keep SCO from suing you…

                            The legality of something is different than the safety of something.

                            1. 3

                              Actually, this is a really interesting point which I haven’t seen brought up enough. You might be able to lay out a very nice, elaborate argument for why using Copilot-generated code isn’t copyright infringement. But until that gets tested in court, you don’t know, and you really don’t want to be the person/company responsible for testing that legal theory.

                          1. 3

                            It really is mind-blowing to me how we still don’t have generic interoperability between programming components.

                            This seems to be a little bit of usability layered on top of the feature set of the project they site as inspiration, but in Python. How come we can’t automatically get an API on every programming language that can then be reused by other languages. What about the current state of the world pushes us to do this? (I do know that we can all have side projects that are just fun and the world is not about productivity, so this is a hyperbolic question.)

                            I know that interchangeable parts was an amazing invention that pushed engineering forward, but you’d think we would have that in our list of ‘things I should apply to new systems’.

                            1. 4

                              So I can just take a photo of someone’s vaccine QR-cert and use that to jump over the paywall? No, I won’t do that because that would be lying, and I’m a good person who does not lie.

                              1. 5

                                You could, but identity makes “limit one per customer” easy to enforce.

                                1. 3

                                  that just means the real person who owns the ID may get locked out if their thing is “stolen” and used before they use it.

                                  1. 1

                                    Also some people were sharing pictures of theirs after vaccination - and we have an instant problem.

                                2. 2

                                  This seems a bunch like SSNs. A unique but easily copied fact.

                                1. 9

                                  The best interview I had was at the place I work right now. Absolutely no leetcoding. It was entirely verbal. 4 rounds:

                                  • Intro call, discussing the role, compensation, etc.
                                  • Chat with the lead engineer about my previous work (somewhat technical)
                                  • Chat with my potential teammate—this was technical, but mostly just open ended questions. I interviewed for an SRE role, so “what would you do in this scenario” or “how would you approach this problem”, type of questions. I didn’t prep at all for this. Felt like a friendly chat, really.
                                  • Final round—culture fit. My interests, what I think of the product, etc.

                                  That said, we also do take-home challenges for software engineering roles and I think that’s perfectly fine, as opposed to whiteboarding. A small task, something that can be solved in about 2–3 hours and not more; a call a few days after to discuss your solution.

                                  I’ve seen some companies have a “work day” interview, where you work with the team you’re interviewing for, for a day—starting from the standup call, doing your assigned task, and a review at the end of the day. This is a great way to assess the candidate’s fit with the rest of the team—that’s what ultimately matters at the end, anyway.

                                  1. 6

                                    That said, we also do take-home challenges for software engineering roles and I think that’s perfectly fine, as opposed to whiteboarding.

                                    I hate take home assignments with a passion. They’re so much worse than whiteboarding.

                                    Either they’re so small they don’t show any more than a whiteboard session would, or they’re massively disrespectful of my time. And because the interviewer isn’t in the room with the candidate, it’s easy to do the latter: the time investment is one sided.

                                    Many good candidates with jobs, families, and other commitments don’t have a day to be screened by every company they want to talk to.

                                    1. 5

                                      Basically, I wish companies offered both options. I get really nervous during interviews and would rather just spend a few hours beforehand working on the assignment, so I can come to the interview confident and ready to talk about my solutions. As long as the scope is reasonable I don’t mind it too much. For other candidates who might not have time, there should definitely be a self-contained option.

                                      1. 3

                                        I have gone through home assignments twice in my career. Both have asked for me to bill my time and paid it with a fair rate. I think that is the only correct way to do home assignments. Others should be rejected on the spot.

                                        I spoke to a company the beginning of this year and they were doing an open source product. Their assignment was basically “pick one of these GitHub issues and send us a PR.” The issues were somewhat trivial - fixes in config file parsing [1], that mostly aimed at showing you could find your way around the code. It looked like half a day’s work. I rejected the company for other reasons and ended up not doing the work on that assignment, but I liked the setup nonetheless.

                                        Many good candidates with jobs, families, and other commitments don’t have a day to be screened by every company they want to talk to.

                                        Those were not screens - I have gone through the screening steps beforehand. I agree that having day long screens is terrible. Unfortunately the alternative isn’t much better. I’ve went through “two hour” coding/algorithms screening tasks and, if you add the prep for that, you can easily land at half a day’s work. Yes, I hate HackerRank “exercises”.


                                        [1] I know many people are reluctant to do “free” and “real” feature work for a company that they have not started actually working for, but in this case it was obviously not something that was a core product feature, and, as I already mentioned, was paid in full. If you are asked to do free work, run away and never look back.

                                        1. 1

                                          I think that is the only correct way to do home assignments.

                                          If they’re asking you to complete real company-related tasks I agree. However, what if they’re asking you to do the type of meaningless problems you might find in an interview? Suppose we’re past the screening stage. Normally candidates aren’t paid for their time in a regular onsite interview, beyond travel accommodations, so I don’t see why it should be any different for a project done at home.

                                          1. 4

                                            Normally candidates aren’t paid for their time in a regular onsite interview,

                                            Normally an onsite interview costs the company engineer hours. A take home interview costs the company nothing. When interviewing costs nothing, the tendency is to throw shit at the wall and see what sticks. This isn’t theoretical – I’ve seen people say “we don’t have the bandwidth for interviewing, let’s do take-home assignments before we bring them in.”

                                            The money isn’t enough to make a difference in my life – but its a signal that my time’s not being wasted.

                                            They’re still an interview format I find to be an unpleasant time sink compared to whiteboarding, but that’s a personal preference. If a company is paying, it at least indicates they’re trying to be thoughtful.

                                            1. 1

                                              A take home interview costs the company nothing.

                                              That is not true at all in my experience. The company doesn’t have someone sitting in the room with you, so the time cost is invisible to you as a candidate, but someone has to evaluate your code after you submit it. I did a bunch of that at my last job and doing a thorough code review including coming up with followup questions typically took more of my time than an in-person interview slot would have. And we always had at least two reviewers for each submission.

                                              1. 1

                                                and doing a thorough code review

                                                Replace ‘thorough’ with ‘superficial’ for all but the few applications you like the most, and you’ve got the approach I’ve generally seen taken (or advocated) with take-home interviews.

                                                There are certainly places where this isn’t the case. Paying for the interview is a way to convince me that you’re one of those places.

                                                1. 2

                                                  We do blind reviews. No resume. Just whether it’s product or platform, as those tests are different. I always read every word written and often take the time to figure out how much work would take to get it working. I approach it much like a random github project or PR. Is this something I can build off of? Can I drop it in and use it? Or is it mostly there and I can quickly fix a bug? On the other side of the spectrum, do I have to do most of the problem to get it working? Do I have trouble understanding how to even get started running or even reading the code?

                                      2. 1

                                        I see you’re working on some open source projects. Out of curiosity, what proportion of interviewers ask you to walk them through your contributions?

                                        1. 1

                                          It came up at most of the smaller companies.

                                          However, the open source code I write is also not usually directly relevant to the work that I would be doing (intentionally, for a number of reasons, including being in a small niche, avoiding non-compete issues and burnout).

                                          The better interviews I’ve done have been a mix of whiteboarding system architecture, and pairing on debugging and writing a project.

                                          But the thing that really makes interviews fun is having a competing offer in hand. Highly recommend it as a stress reduction strategy.

                                      3. 1

                                        Chat with my potential teammate—this was technical, but mostly just open ended questions.

                                        This approach works well for me both as an interviewer and as an interviewee when coupled with a code walkthrough. E.g. Walk us through a recent project. What does it do? How’d you start it? What was the hardest part to write? What did you learn? What would you do differently? What were the most frustrating limitations of the tools you used? Many of these questions lead to follow-up questions and then settle into an illuminating, non-adversarial conversation. Open source or otherwise unrestricted code is preferable, but a take home assignment suffices as a substitute.

                                        1. 1

                                          A small task, something that can be solved in about 2–3 hours and not more; a call a few days after to discuss your solution.

                                          This was part of our interview process as well. After a brief phone interview we would have the candidate login to a remote system (this was all on clean VMs). You would do this alone. Then we’d call back and have the candidate walk through the code that they wrote, explaining the design choices made and their solution. This was for a web based software development shop so we had front end / back end specific tasks.

                                        1. 1

                                          Forking is always a speed penalty with bash. I need to use this more in loops instead of forking a bunch in my inner loop.

                                          1. 15

                                            Didn’t amazon do this with The Decree:

                                            1. All teams will henceforth expose their data and functionality through service interfaces.
                                            2. Teams must communicate with each other through these interfaces.
                                            3. There will be no other form of interprocess communication allowed: no direct linking, no direct reads of another team’s data store, no shared-memory model, no back-doors whatsoever. The only communication allowed is via service interface calls over the network.
                                            4. It doesn’t matter what technology they use. HTTP, Corba, Pubsub, custom protocols — doesn’t matter.
                                            5. All service interfaces, without exception, must be designed from the ground up to be externalizable. That is to say, the team must plan and design to be able to expose the interface to developers in the outside world. No exceptions.
                                            6. Anyone who doesn’t do this will be fired.
                                            7. Thank you; have a nice day!
                                            1. 6

                                              Rereading this now, it’s not clear to me why a read of a data store is not a service interface. How do you draw the line?

                                              1. 3

                                                It’s a lot easier to version your API than it is to be stuck with a schema that’s now incorrect due to changing business logic.

                                                1. 4

                                                  Only if the business logic uses the schema of the data store directly. But I’ve seen use cases where the business logic separates the internal schema from an external “materialized view” schema.

                                                  And the quote above says, “it doesn’t matter what technology you use.” If you can use HTTP, well reading from an S3 bucket is HTTP. So this is one of those slippery cases where somebody can provide a “versioned API” that is utter crap and still not solve any of the problems that the decree seems to have been trying to solve.

                                                  I guess what I’m saying is: Never under-estimate the ability of humans to follow the letter of the law while violating its spirit. The key here is some way to be deliberate about externally visible changes. Everything else is window dressing.

                                                2. 1

                                                  The same way reading a field isn’t a method call.

                                                  1. 2

                                                    a) I think you mean “reading a field isn’t part of the interface”? Many languages support public fields, which are considered part of the interface.

                                                    b) Creating a getter method and calling the public interface done is exactly the scenario I was thinking about when I wrote my comment. What does insisting on methods accomplish?

                                                    c) Reading a value in an S3 bucket requires an HTTP call. Is it more like reading a field or a method call?

                                                    1. 2

                                                      Maybe it is assumed that AWS/Amazon employees at the time were capable of understanding the nuances when provided with the vision. It is not too much of a stretch to rely on a mostly homogenous engineering culture when making such a plan.

                                                3. 4

                                                  How so?

                                                  They just decreed a certain architectural style, nothing about actually supporting this (and other styles!) by providing first class support.

                                                  1. 4

                                                    Thank you; have a nice day!

                                                    OR ELSE

                                                  1. 2

                                                    I love cloud-init!

                                                    I use it in the stock+rpi kernel images I make for debian stable/testing/sid: https://github.com/ClashTheBunny/Debian64Pi/blob/master/build.sh#L166

                                                    Just fork it and update that line with your own gist or private repo like mine: https://gist.github.com/ClashTheBunny/5c81708b05fb4f68aecba7367b3bf033

                                                    1. 7

                                                      @cadey, it took a ton of reading to figure out how to put cloud-init on the fat32 boot directory so that any host system can configure it, but the magic was this invocation of nocloud: ds=nocloud;s=/boot/

                                                      No ISO, no http server. Just text files on a fat32 partition.

                                                      1. 1

                                                        I will have to take a look at that the next time I do stuff with a raspi! Thanks.

                                                    1. 1

                                                      Haproxy is affected by this. It will completely starve itself by starting 100s of worker threads and then get stuck in scheduling hell… But only after the concurrency goes above the number of allowed cores (plus how ever much buffer you have for connection wait and kernel buffers/network card buffers), so it’s a complete landmine. It degrades, then falls completely over. Slow lorising it’s clients all over the place.

                                                      1. 3

                                                        It’s a good idea but I think 13 words is still pretty crazy. It’s not only a lot to remember, you also need to type a lot. Also, as OP described, even in the best case scenario where people use a password manager, they still have to remember at least two to three passwords.

                                                        On a side note: I wasn’t able to open the link for the entropy calculation method.

                                                        1. 2

                                                          It’s definitely a tradeoff; you can of course use the same trick for shorter passwords.

                                                          I changed the link to point at dropbox instead of overleaf; hopefully that works better.

                                                          1. 2

                                                            How often do you type your password? Once a day? Once an hour? I think that that helps definite what ‘too long’ is.

                                                            If you have a 13 word password that you only type once a month when you restart your computer, and a 6 word password to unlock the second lock on your gpg key every 4 hours, it’s different than a 10 character password you have to retype every 10 minutes.

                                                            1. 1

                                                              I see were you want to go but the catch is that the passwords you type the least would then also the hardest to remember. Not a good combination.

                                                              1. 1

                                                                That’s where the tradeoff between memorability and shortness comes in.

                                                                Passwords I type very frequently are generated with about 5 bits per character by excluding pairs on a qwerty keyboard that are hard to type together, passwords that I type less frequently are much longer diceware type which are easier to memorize with infrequent use. Passwords I don’t type at all are just 100 bits or so of base64

                                                          1. 1

                                                            Can someone who has migrated from vim to nvim recommend a guide for doing so, or if it’s really just as simple as changing to init.vim? I’m also wondering if folks keep compatibility layers in dotfiles repos, or anything like that.

                                                            1. 5

                                                              We added a skeleton init.vim so you can just use your normal vimrc when we started using nvim: https://github.com/braintreeps/vim_dotfiles/blob/416912bb64a034241a40906693c0298dc5d8ea49/config/nvim/init.vim

                                                              Then you can just start vim or nvim depending on if you want to shave yaks or to be classically productive.

                                                              1. 2

                                                                If I recall correctly (I used nvim a while ago, I think the latest was 0.2), you can start by just changing your .vimrc to init.vim, and then go from there.

                                                              1. 4

                                                                sorry if the question is naïve,

                                                                but does Neovim or any other lsp-enabled modern vi-inspired editor provide Emacs key binding ?

                                                                reason I am asking is because I am not a ‘elisp’ user and do not extend or configure emacs that much – but emacs key bindings is the only thing I know.

                                                                For my ‘quick shell tasks’ I use joe (that has the jmacs command that enables emacs keybinding) – so I was thinking that may vi-inspired editors can do the same.

                                                                1. 8

                                                                  Learning vi keybindings pays off in multiples. There are so many applications (especially in terminal) that default to vi binds that you will often be pleasantly surprised how things “just work” if you try them.

                                                                  1. 2

                                                                    i’m not convinced that this is a good argument as to the benefit of vi binds. there are advantages to vi binds. that other things use them by default doesn’t seem up there at all.

                                                                    you can get *some* emacs-style bindings in vim, i know because i’ve tried. but emacs or an emacs clone works better for that, and vim works better for vimmish modal editing.

                                                                    1. 8

                                                                      Having a ‘standard’ keybinding across multiple applications out of the box is quite useful.

                                                                      1. 2

                                                                        sure. but saying it pays off in multiples to learn a confusing keybinding system purely for that reason seems like a cyclic argument.

                                                                        the original commenter wants to make neovim work like emacs. i agree that they are better off learning the vi binds if they want to use a vi-family editor. i think that there are much better justifications for doing that then “other tui applications are likely to support them”.

                                                                        1. 1

                                                                          I live in the terminal and I’m struggling to think of many examples of other apps that use vi bindings. Meanwhile I also use neovim nearly all the time and I, like most regular vim users, change the (historic but awkward) default bindings. And I use Emacs-style shortcuts in the line editor.

                                                                          1. 3

                                                                            like most regular vim users

                                                                            Wait really? Aye you saying most vim users don’t use hjkl to navigate? Or are you referring to something else?

                                                                            1. 5

                                                                              To be honest, I suspect there’s a surprising amount of Vim users that use arrow keys. I’m one, and it’s not like I’m hunt-and-peck, only use arrow keys. I use them in addition to motions, because I could never develop the muscle memory for hjkl. It just doesn’t feel right to me, and the last thing I want to do is get used to it and start spraying hjkl into every non-vi editor I see.

                                                                              1. 3

                                                                                I did develop the muscle memory at one point, and regretted it. I think hjkl is the most obsolete part of vim, they’re some good keys being taken up with commands that don’t need to be used that often, if you’re using vim effectively.

                                                                                1. 2

                                                                                  As someone using a 60% keyboard without cursor keys I have found rebinding the default cursor mappings to hjkl to work rather well since these keys are much more convenient to reach than where cursor keys usually are. So maybe one doesn’t need hjkl in vim but the mapping is surprisingly useful outside of it.

                                                                                  (I also accidentally discovered these vim bindings in Evince by forgetting to use modifier keys and just spamming j/k into the PDF reader)

                                                                                  1. 1

                                                                                    You should be able to rebind them to your preference, though I don’t know if external scripts would break.

                                                                                    I always disliked moving my hand to the cursors, and now that I’ve been on a Kinesis Advantage since forever - whose cursors are crazy awkward - I would hate to have to use them.

                                                                                    Also someone said he /she uses hjkl on Dvorak!

                                                                                    Definitely YMMV based on the keyboard and its layout as well. FWIW I do kinda suck at using anything without a Vi mode anyway, beyond just the navigation.

                                                                                    1. 2

                                                                                      I do you use hjkl on Dvorak. Not as much in Neovim, because I don’t need these motions, but in firefox (Vimium C), in evince, in tmux (remapped). It works just fine. Of course they are not next to each other (except awkwardly placed jk), but I don’t think about it and it works fine anyway.

                                                                                2. 1

                                                                                  I don’t know whether most regular vim users use hjkl in particular (I don’t. It could be interesting to survey vim users on questions like this!), but I was talking more generally. I think it’s very common to either remap Esc or bind something else to leave Insert mode, since reaching for Esc is widely thought to be awkward. I’ve also seen many example vimrcs that map ; (or something else) to : to avoid having to shift for it. I think it’s common to remap the leader too.

                                                                                  1. 2

                                                                                    Yeah I remap Esc to caps lock.

                                                                                    But I do use hjkl to navigate (in lieu of arrow keys anyway, when I’m not using other types of motions). That’s the part that I was surprised by. Not in a bad way or anything. Just one of those things where I thought basically every Vim user used hjkl. But I guess it’s just anecdotal.

                                                                                    1. 1

                                                                                      I also use hjkl to navigate, and I would remap Esc if I didn’t remap my keyboard to making pressing Esc easier.

                                                                                3. 2

                                                                                  quite a few programs have vi binds - cmus, ranger, either mutt or newsboat, but i don’t think both. i’m not a vim user anymore so i couldn’t comment on how modern regular vim users work, but i do see little benefit to not changing any of the keybindings.

                                                                                  theres often the “what if im on a server without my dots?” argument, i guess.

                                                                        2. 6

                                                                          Kinda sorta not really. Neovim (and Vim) are built from the ground up in the vi-style modal paradigm, and they aren’t a fully configurable environment like Emacs where you could swap out the whole concept of modes for something else (aka, Emacs-style modes/bindings). The closest you can get is rebinding keymaps in insert mode to be closer to Emacs, like Tim Pope’s readline plugin does.

                                                                          1. 1

                                                                            Thank you. I will look into this.

                                                                            I prefer to code without touching a mouse. As my shoulder and neck hurt (I switch hands for the mouse, periodically as I am used to operate it ambidextrously, but it still hurts after a month – when I do 7-8K lines per month, or lots of debugging).

                                                                            Which is why I prefer Emacs. Big problems with Emacs however for me are as follows:

                                                                            a) JS type validation using FB Flow across all of my mono repo subprojects - does not work

                                                                            b) Gradle based projects (Android apps and my Java backends) – do not work

                                                                            c) Java refactoring capabilities are not in the same league to Android Studio / IntelliJ

                                                                            So I thought VI-based ecosystem might be more developed in those areas. At the moment I just use Emacs key bindings in VS Code (for JS/Flow) and intelliJ (Java/Android) – but i seem to be grabbing mouse there too often.

                                                                            When I work my Ansible side of things (Yaml configs) – I use emacs almost exclusively and in a Terminal window (even though I can run a GUI session, I prefer just a terminal or a login console).

                                                                            1. 1

                                                                              What a great name for that plugin! https://en.wikipedia.org/wiki/Repetitive_strain_injury

                                                                              1. 1

                                                                                I love vim-rsi! @lollipopman also made a similar thing for bash, in case you share terminals with people (pairing, debugging, etc). and can’t stand emacs mode and they can’t stand vim mode: https://github.com/lollipopman/bash-rsi

                                                                              2. 2

                                                                                Not that I know of, but Emacs has LSP plug-ins so if LSP is what you’re after and you’re comfortable using Emacs I see no reason to switch.

                                                                              1. 11

                                                                                The obvious question is why freenode was never registered as a charity. Remember: never donate to organizations not regulated as charities in their place of incorporation.

                                                                                1. 19

                                                                                  libera, the new organisation, is registered under a swedish non-profit. For what it’s worth, neither libera nor freenode ever taken cash donations etc from normal users.

                                                                                  1. 6

                                                                                    Freenode was Limited by Guarantee, which is English law jargon for a non-profit. A legal form guarantees nothing.

                                                                                    1. 7

                                                                                      No it isn’t. Companies limited by guarantee are a common corporate choice for charities but being registered as a charity is a different thing.

                                                                                      1. 1

                                                                                        Late answering, but not for profit isn’t the same thing as a charity.

                                                                                    2. 1

                                                                                      libera nor freenode ever taken cash donations etc from normal users.

                                                                                      This doesn’t sound like a sustainable model. Look at discord!?

                                                                                      How has this “charity only” crap prevailed when it’s been $ that funds infrastructure and development?

                                                                                      At least Patrick at Slackware takes my money (finally!!) but it’ll never be a Red Hat.

                                                                                      1. 13

                                                                                        This doesn’t sound like a sustainable model.

                                                                                        “never taken cash donations” does not mean “never taken donations”

                                                                                        Freenode has outlasted countless VC-backed chat startups, and Libera will outlast even more.

                                                                                        1. 7

                                                                                          it sustained freenode for 20 years and was never the limiting factor. When you have dozens of large communities like fedora, gentoo, python, etc that you host, there are plenty of responsible and generous donors when it comes to getting the few, small servers that irc requires.

                                                                                      2. 7

                                                                                        What would this have prevented? You can own and sell a charity just as well as you can sell any corporation.

                                                                                        1. 4

                                                                                          Not in England you can’t.

                                                                                        2. 7

                                                                                          Agreed. Let’s all take note, this is why we have nonprofits: so we can codify the sorts of arrangements people build to operate Communal Things Involving Money. Person Foo may start a fight and chase off Person Bar, and Person Baz may start neutral but then get pissed off and leave such a toxic environment… But a nonprofit provides a framework to make sure things can actually keep operating in a sane fashion. Otherwise you end up with Foo needing a lawyer to get the domain name, Bar needing to be hunted down and asked for the server passwords, and Baz accidentally being left as primary contact on the donation-linked bank account for three years. I speak from personal experience here.

                                                                                          1. 6

                                                                                            It was, for a long-ish time, registered as a charity as the Peer-Directed Projects Center (PDPC). IIRC they dissolved that as the legal overhead was significant.

                                                                                            1. 2

                                                                                              There’s no UK de registered charity with that name https://register-of-charities.charitycommission.gov.uk/charity-search/-/results/page/86/delta/20/keywords/Peer+directed+projects+center/sorted-by/charity-name/asc

                                                                                              There was a non profit registered in the US with that name.

                                                                                            2. 4

                                                                                              As of at least the last five years, Freenode never accepted monetary donations; only donations of servers.

                                                                                              1. 2

                                                                                                It was, but the charitable organization didn’t actually bring in enough money to maintain its own existence, so it folded several years ago.

                                                                                                1. 1

                                                                                                  Right but that means the charity was really a money collector not the operator or holder of assets.

                                                                                              1. 8

                                                                                                When I first learned about ZFS snapshots, it really bugged me that I can’t atomically snapshot a set of filesystems and have to do it one at a time (unless they are all children of a single parent). I recently learned that this is purely a limitation of the userspace tools. The underlying ioctl takes an nvlist of snapshots and will atomically create them all at once. I have no idea why this wasn’t exposed in the tooling. The advice on FreeBSD is to have everything in /usr/local as a single ZFS dataset for exactly this reason: you want to atomically snapshot it before and after upgrades.

                                                                                                1. 1

                                                                                                  Would a recursive snapshot followed by a delete of the unwanted snapshots do the same?

                                                                                                1. 1

                                                                                                  This made me think that these were practice exercises for how to type python on a keyboard. Now that I get what it is, it’s actually really cool! I’ll be typing some typing this weekend!