Interests: programming, video games, anime, music composition

I used to be on kbin as e0qdk@kbin.social before it broke down.

  • 1 Post
  • 35 Comments
Joined 1 year ago
cake
Cake day: November 27th, 2023

help-circle

  • Visual novels, and interactive fiction come to mind as things that are video game adjacent but aren’t necessarily games. Most of the first category I’ve encountered are either porn, horror, or… both – though they can be about anything the author wants to write about, of course, and the relative accessibility of the medium means people have pushed it in a lot of directions even though it’s kind of niche.

    Interactive fiction includes things like text adventures and choose-your-own-adventure books. Most of the computer-based ones I’ve encountered involve traversing a node-graph of locations, manipulating items, and solving puzzles – though the gaminess varies a lot depending on the specific title. They’re even more niche nowadays, but people still make and play/read them.


  • It’s really about lowering cognitive load when making edits. It’s not necessarily that someone can’t figure out how to do something more sophisticated, but that they’re more likely to get things right if the code is just kind of straightforwardly dumb.

    The last two are definitely situational – changing things like that might lower cognitive load for one kind of work but raise it significantly for another – but I can see where they’re coming from with those suggestions.






  • Try adding some prints to stderr through my earlier test program then and see if you can find where it stops giving you output. Does output work before curl_easy_init? After it? Somewhere later on?

    Note that I did update the program to add the line with CURLOPT_ERRORBUFFER – that’s not strictly needed, but might provide more debug info if something goes wrong later in the program. (Forgot to add the setup line initially despite writing the rest of it… 🤦‍♂️️)

    You could also try adding curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); to get it to explain more details about what it’s doing internally if you can get it to print output at all.



  • As a sanity check, does this work?

    #include <curl/curl.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    size_t save_to_disk(char* ptr, size_t size, size_t nmemb, void* user_data)
    {
        /* according to curl's docs size is always 1 */
        
        FILE* fp = (FILE*)user_data;
        fprintf(stderr, "got %lu bytes\n", nmemb);
        return fwrite(ptr, size, nmemb, fp);
    }
    
    int main(int argc, char* argv[])
    {
        char errbuf[CURL_ERROR_SIZE];
        FILE* fp = NULL;
        CURLcode res;
        
        CURL* curl = curl_easy_init();
        
        if(!curl)
        {
            fprintf(stderr, "Failed to initialize curl\n");
            return EXIT_FAILURE;
        }
        
        fp = fopen("output.data", "wb");
        if(!fp)
        {
            fprintf(stderr, "Failed to open file for writing!");
            return EXIT_FAILURE;
        }
        
        curl_easy_setopt(curl, CURLOPT_URL, "https://www.wikipedia.org/");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, save_to_disk);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
        curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf);
        
        errbuf[0] = 0;  /* set error buffer to empty string */
        res = curl_easy_perform(curl);
        
        if(fp)
        {
            fclose(fp);
            fp = NULL;
        }
        
        if(res != CURLE_OK)
        {
            fprintf(stderr, "error code   : %d\n", res);
            fprintf(stderr, "error buffer : %s\n", errbuf);
            fprintf(stderr, "easy_strerror: %s\n", curl_easy_strerror(res));
            
            return EXIT_FAILURE;
        }
        else
        {
            fprintf(stderr, "\nDone\n");
            return EXIT_SUCCESS;
        }
    }
    

    That should write a file called output.data with the HTML from https://www.wikipedia.org/ and print out the number of bytes each time the write callback receives data for processing.

    On my machine, it prints the following when it works successfully (byte counts may vary for you):

    got 13716 bytes
    got 16320 bytes
    got 2732 bytes
    got 16320 bytes
    got 16320 bytes
    got 128 bytes
    got 16320 bytes
    got 16320 bytes
    got 1822 bytes
    
    Done
    

    If I change the URL to nonsense instead to make it fail, it prints text like this on my system:

    error code   : 6
    error buffer : Could not resolve host: nonsense
    easy_strerror: Couldn't resolve host name
    

    Edit: corrected missing line in source (i.e. added line with CURLOPT_ERRORBUFFER which is needed to get extra info in the error buffer on failure, of course)

    Edit 2: tweaks to wording to try to be more clear







  • I used to see bots posting comments that were copied verbatim from Hacker News – which was really obvious because of the “[1]” style footnoting they do on HN that rarely made sense on reddit where you could just use markdown to add descriptive links inline.

    I reported a whole bunch of those, but no one ever seemed to do anything about them, and I eventually gave up. Been over a year since I’ve interacted significantly with reddit though, and I’m similarly in the “who knows what they’re doing now” camp. Wouldn’t surprise me if there are bots reposting comments scraped from lemmy to karma farm on reddit now too.





  • Best way to fix that is to join in and post something!

    Otome isn’t my personal interest (my sexuality goes the other way), so I don’t have much to say myself, but I’ve seen Elevator7009 trying to build a community first on kbin.social (before that site died) and then on kbin.run (before it died) and now there and I’d like to see her efforts succeed.

    If you’re not interested, feel free to ignore it, but if you’d like a place on Lemmy for discussion, there are at least a few people there who’ve been trying their damnedest to get something going.