• 0 Posts
  • 12 Comments
Joined 2 years ago
cake
Cake day: March 4th, 2024

help-circle

  • Yes. The relevant points are that Catfriend’s repo was fully reset, no git history, multiple times this year, supposedly because of sensitive data that was mistakenly checked in. If that’s the case, it might explain why shortly before Catfriend deleted his repo, he created an issue saying something along the lines of ‘stop messing with my desktop’, which could be read as a plea to hackers. The repo went dark, and someone else published it, with Catfriend’s private signing key, which triggered automatic updates for some users, without them knowing the maintainer changed. They also claim to have Catfriend’s github credentials. After staying quiet for a month, Catfriend recently posted on the syncthing forum saying that everything is dandy with the new maintainer, without addressing major concerns. Meanwhile, the new maintainer has made large changes to the codebase without public comments. The last two updates from the new maintainer have been reviewed independently, and reproducible builds are enabled to ensure the apk matches the sources. However, that is assuming that Catfriend’s repo was safe to begin with. In the case of ongoing blackmail, malicious code could have been added during one of the repository resets, or in a large refactor commit.

    The sad part is that Catfriend picked up this repo after Syncthing deprecated it, just for his friends and family. I don’t think he is a professional developer, and he very obviously was overwhelmed by the project. Syncthing is a very juicy target for malicious state actors, and trust is crucial. I feel awful to say that I no longer trust Catfriend or his replacement, but the circumstances don’t inspire confidence.











  • As other comments have pointed out, and you already mentioned this as a possibility, this is how I would write it:

    (defun eat-more ()
      "Open a new terminal."
      (interactive)
      (eat nil t))
    

    However, given your goal of understanding commands and the buffer list better, I’ll try to explain a little better.

    The first parameter, the shell, when left nil, will use your default eat-shell, so the funcall in your current implementation is redundant. The eat-shell can be customized separately if necessary.

    The <3> or <5> or whatever suffix in the eat buffer name is actually not generated by eat itself, eat is using generate-new-buffer, which is an Emacs built-in function that relies on the C function generate-new-buffer-name.

    So what you are attempting to do is not just re-implement a feature eat already has, but a core function within Emacs itself. If you don’t rely on built-in functionality, I would argue that you are not familiarizing yourself with elisp development, you are really creating your own language.

    However, re-implementing what eat does can maybe be a good exercise, so to use the built-in function to help us, I would probably write it like something like this:

    (defun eat-more ()
      "Open a new terminal."
      (interactive)
      (require 'eat)
      (eat
       nil
       (let ((name (generate-new-buffer-name eat-buffer-name)))
         (when (string-match "<\\([[:digit:]]+\\)>" name)
           (string-to-number (match-string 1 name))))))
    

    One thing I’d like to draw attention to is the use of the variable eat-buffer-name, which is defined by eat and is customizable, so even though most people are using the default name "*eat*", this could be different for some users. However, using this variable means we need to ‘require’ the eat package first. In the simpler answer, we were relying on the fact that the (eat ...) command is autoloaded, and can be called without requiring the package first. But that isn’t true for the eat-buffer-name variable.