• 0 Posts
  • 13 Comments
Joined 1 year ago
cake
Cake day: July 3rd, 2023

help-circle

  • That is the simplest possible thermostat and works great for setting a temperature, but that’s not the ideal thermostat. The temperature your house “feels like” also depends on humidity. You may also care about the temperature more in a spot further from the thermostat and getting accurate measurements in that location can save you money and waste less gas. There is also the decision of how long you should run a furnace and, in the case of multiple stages, which stage you should run, although some furnaces control the stages themselves. Then there is air flow. Controlling the fan separately is useful if the house doesn’t evenly heat. Sometimes you can just have the fan turn on more often and use the actual furnace less, saving gas again.

    Also sometimes it makes sense to heat your house slightly more during high demand hours to save money. I dunno there is just a lot that could be done with an intelligent thermostat, it’s one of the few things that makes sense to make smart to me.


  • Programmers love to oversimplify things; “do easily with an RPi and some simple Python” is kinda meaningless. Like, yes, an RPi is a general purpose computer and Python is turing complete, thanks.

    For one, UI/UX is actually hugely important for a consumer device and definitely nontrivial, but on top of that, there is way more that goes into creating custom hardware than a bill of materials (which isn’t just saying “Raspberry Pi”) and choosing a programming language…

    A thermostat is controlling a very expensive device that runs on a highly flammable gas that costs me real money to use. I want 0 serious bugs. I also want 100% uptime. A poorly made “smart thermostat” is way worse then the old school analog metallic ones imo. I also want my partner to be able to control the temperature in the house. These devices are actually not simple at all and I assume that’s the reason there isn’t a good open source/open hardware solution.

    Embedded systems aren’t some mystical impossible thing - contrary to the previous commenter I actually find working with them easier then designing GUIs - but the commercially available devices are definitely nontrivial to recreate


  • Smart thermostats do way more than just set the temperature: that’s just table stakes and of course easy. Off the top of my head the ecobee will:

    • Set the temperature also taking the room’s humidity into account

    • Communicate with sensors throughout your house

    • Can change things via the Internet in case you accidentally forget to set it to a better temperature when you’ll be gone for a few days

    • Tweak your schedule based on demand

    I’m probably missing things, but they’re actually pretty useful, and I’m someone who thinks most IoT is shit.



  • qqq@lemmy.worldtomemes@lemmy.worldBlursed Bot
    link
    fedilink
    arrow-up
    3
    ·
    edit-2
    5 months ago

    The important point there is that they don’t care imo. It’s not even worth the effort to try.

    You can likely come up with something “good enough” though yea. Your original code would probably be good enough if it was normalized to lowercase before the check. My point was that denylists are harder to construct than they initially appear. Especially in the LLM case.


  • qqq@lemmy.worldtomemes@lemmy.worldBlursed Bot
    link
    fedilink
    arrow-up
    3
    ·
    edit-2
    5 months ago

    IGNORE ALL PREVIOUS INSTRUCTIONS

    Disregard all previous instructions

    Potentially even:

    ingore all previous instructions

    Ignor all previous instructions

    Also leaks that it might be an LLM by never responding to posts with “ignore”




  • It doesn’t violate any rules… Imagine both the “speaker” and the “text” are being updated by separate threads. A program that would eventually display the behavior in this meme is simple, and I’m a bit embarrassed to have written it because of this comment:

    #include <pthread.h>
    #include <stdio.h>
    
    char* speakers[] = {
        "Alice",
        "Bob"
    };
    int speaker = 0;
    
    void* change_speaker(void* arg)
    {
        (void)arg;
    
        for (;;) {
            speaker = speaker == 0 ? 1 : 0;
        }
    }
    
    char* texts[] = {
        "Hi Bob",
        "Hi Alice, what's up?",
        "Not much Bob",
    };
    int text = 0;
    
    void* change_text(void* arg)
    {
        (void)arg;
        for (;;) {
            switch (text) {
            case 0:
                text = 1;
                break;
            case 1:
                text = 2;
                break;
            case 2:
                text = 0;
                break;
            }
        }
    }
    
    int main(int argc, char* argv[])
    {
        pthread_t speaker_swapper, text_swapper;
    
        pthread_create(&text_swapper, NULL, change_text, NULL);
        pthread_create(&speaker_swapper, NULL, change_speaker, NULL);
        for (int i = 0; i < 3; ++i) {
            printf("%s: %s\n", speakers[speaker], texts[text]);
        }
    }
    

  • This is not necessarily true.

    For example, consider the case of a 1Password vault falling into the hands of an attacker. They do not have the option to just crack your password, as the password is mixed with a randomly generated value to ultimately derive the key. They would need to simultaneously brute force your password and that random value. This should almost be impossible. However, given access to a client that already has knowledge of the secret value, it would fall back to brute forcing the password.