Since Nix 2.4, I’ve always been fed up at how `nix search` has become so much slower than Nix 2.3’s search, and everyone kept telling me to use `search.nixos.org`! So I made a really fast nix search alternative called nix-search.
If you're ever using Nix like you would Bazel, you likely would not want your derivation to be built via another Makefile. Indeed, that defeats the whole point of using Nix to fix this in the first place. As it is, mkDerivation + fetchurl is mostly used to build existing non-Nix software.
Nix at the very least provides first-class(-ish) build support for modern languages like Rust, Go and Python, but I don't think anyone has written an actual Nix builder for C/C++. A combo of Bazel + Nix is fairly common, though.
IMO, it's hard to say if Nix would "solve this attack", since we've only seen it being truly used on more modern things where the build complexity of the actual piece of code is not much more than the same few commands.
As for pulling down a poisoned tarball, I think the discussion here is rather about upstream projects using Nix to guarantee reproducible builds rather than Nix trying to fend off attacks downstream in Nixpkgs. In modern Nix (with Flakes), this would look something like being able to clone and run `nix build .#` and end up with the same output every time.
Hi, Dissent actually makes no effort to try and hide itself from Discord! In fact, API calls via Dissent have their User-Agent header set to "Dissent (https://libdb.so/dissent)" to emphasize the fact that they're NOT performed by the official client.
https://news.ycombinator.com/item?id=28435490 goes into this, but Discord doesn't actually care if you use a third-party client. They only care if said client misuses the API, and that happens to include a lot of past clients. I've been developing a handful of Discord clients for several years now and have never had my account banned, but I have a backup account just in case this scenario happens.
Of course, people may still be banned for using Dissent, so use it at your own risk.
You're misusing the API by not following what headers are used by Discord itself, so this comes off as fairly irresponsible. 2021 was a long time ago, so I wouldn't take anything said there as accurate to current times.
I'm actually fully aware of this! Discord's ToS just says they can ban you for any reason, and it also touches on API abuse. A lot of past Discord clients (e.g. cordless) don't try to minimize API calls (especially some sensitive ones), and some of that counted towards API abuse.
Dissent tries to minimize API calls by requesting information over the Gateway Websocket and caching them instead. This is actually what the official client does!
It's just way easier to say that it violates the ToS instead of explaining the whole deal, though. You might still get banned, use it at your own risk.
Hi, developer here! I have worked on a Matrix client before (diamondburned/gotktrix)! I abandoned it because I couldn't be bothered to handle E2EE or rewrite it in a different Matrix library, but Fractal is also fairly stable now and it scratches the same itch, so I didn't see a point.
We also made a demo called "gptbackdoor" that exposes a set of system functions for ChatGPT to call arbitrarily. It's in the `demo/` folder. Here's an example conversation:
> What is in lazer/__init__.py
< The `lazer/__init__.py` file contains the initialization of the `Lazer` and `LazerConversation` classes.
The `Lazer` class is responsible for managing the functions and their schemas. It initializes with an empty list of functions and a mapping of function names to functions. It also has methods to dispatch function calls, retrieve the list of functions, and add new functions to the list.
The `LazerConversation` class represents a conversation with the `Lazer` instance. It initializes with an empty list of messages, a reference to the `Lazer` instance, and the chat completion arguments provided. It has a `talk` method that takes user input and uses the OpenAI Chat API to generate a response. The conversation messages and function calls are stored in the `self.messages` list.
> Write a README for this code and write that into the README.md file.
< I have written the README and saved it in the README.md file.
Theoretically, you can also expose a function that allows ChatGPT to talk to itself. However, we have tried this, and it ended up crashing due to infinite recursion.
Disclaimer: I (the OP) made this program.