The Tableau makes a menacing return. Fortunately I can't make the same mistake as last time since the input and commands are supplied on stdin and I just have to process it and return my answers on stdout, so the tests can't try to run methods that don't exist.
The template that they've given me seems really annoying for trying to code the task in so earlier tonight I made brand new classes and deleted most of the code they provided me. I passed all the tests, but I'll have to ask tomorrow if they'll allow that or if I have to work within the template. Even if I have to start over with their template, I at least have a better understanding of how the problem works, so it should be much less of a hassle than it was tonight.
In 243 I learned about CPU interrupts. They seem kind of janky. I'll withhold judgement until I get to try them out in the 6502 emulator, which is what I assume this week's labs are about.
I also got in some time to work on my personal project Bibliogram. The things that the code does to avoid rate limits are rather extensive, but the gist is that the first time a user is ever loaded on that instance, we must make a request to an endpoint that is much more heavily rate limited than the other endpoints. This effectively means that once the instance is blocked due to the rate limit, only users that have been seen before can be refreshed. I'm trialling a mechanism to stop it, which I've dubbed "assistants". I haven't written docs yet because this is all very experimental, but the idea is that these expensive requests can be outsourced to other networks. Currently the config can set a list of hosts to try, and if a host is down, it's just ignored. If all hosts are down then the behaviour is a 503 like before.
Of course, since the instance sends outgoing requests to the assistants, this means the assistants must accept incoming requests on a static IP or hostname, which means this obviously isn't very suitable for home networks because of port fowarding jankery. I then remembered that we could possibly use WebSockets for bidirectional communication, with the assistant making the first connection incoming to the instance, but then I considered whether I actually wanted anybody to be able to run an assistant for any instance, and I decided no, because I can't actually check if they're feeding me false data or not. If you understood this paragraph, congratulations.
The recipe of the day is the same one that I made 2 weeks ago. I will make it tomorrow. I'll try adding more spice than last time and see how it turns out.
I didn't write this blog post on MessagEase, but I have reached 22 words per minute, an improvement from my previous 15 or so. Moving up in the world.