Notes
2025
-
Hashmap
04:09PM
One of the issues that we need to resolve before the end of the gamejam will be the lazy / macro / map. The hashmap that we are using right now from std collections will not be the best for multithreading. Thus we need to find a replacement for it, hmm.
04:11PM
The next couple builds have to focus on the part of the data structure and I also need to map out some of the caching.
-
Issues
07:45PM
First issue ticket that we will have to make is for upgrading the supabase core image that gets provided or built off of in kilobase. I believe the current supabase image is 15.1 and we need to upgrade to 15.6.
Issue ticket 2 will be for finishing the discord.sh tags and making sure that migration happens amoung the tags without any problems.
Issue ticket 3 is for the migration of server table, tags and their relationship inside of the postgres. This is important before we start the front end development. The option for front end can be nextjs or astro. The other option could be to use tamamgui for the front-end. This would make thigns a bit more interesting, yet the otherside of this would be, hmm wait, actually nevermind. We can not use tamagui and have to stick with either astro or nextjs, I will hold off on this until after the gamejam.
2024
-
7:30am -
Payment
Payment
It is the end of the month, I need to double check all the auto payments for the end of the month and wanted to make sure that everything was working. I been trying to find ways to use AI to help manage the cashflow but honestly it seems to be a bit overkill because it does not do much to help. If anything it might be a waste of resources and time because autopayment and the timing around the credit (30 days) is already enough to handle most transactions. Instead of waiting until the end of the month, just a simple script to double check payments and pay within 14 days or post the date out to 27 days seems to handle the issue.
-
8:50am -
Rust
Rust
More rust through out the day! I went through a bit of a stump and was thinking of rotating out the Diesel and switching to SQLx and SeaORM but honestly that might not be worth the time investment. I decided to rename the
routes
module tosys
because it felt like it would make more sense later down the line. Having the route / routes within the internal package is not worth it, as it can be kept to the application layer. -
10:30am -
Entity
Entity
Before doing the
Auth
module, I think it would make sense to build out theentity
module. This will be extended in the future for multiplayer, users, economy and much more! The first one that I will add is thegeneric_response.rs
under response, just to make sure that it works within the package.Next concept within the Entity will be the
header_response.rs
which will handle the basic headers and include a generic cookie for now.After pushing through the
header_response
, the next file within the response would be theshield_response.rs
This will extend the header response with a
x-kbve-shield
, moving away from using thespellbook
approach and rather using theimpl
. -
4:35pm -
Regex
Regex
Taking a break from the entity creation and building out the sanitization! Starting with the regex, which I will place under the
sanitization_regex.rs
and then added extraction functions for each of them.I ended up renaming the module to
regex_extractor.rs
and now I am going to expand around it for the time being. One interesting test case was that I could migrate the ULID check into a regex, which should help with speed of verifying if its valid. Before we were using a function like this:pub fn validate_input_ulid(ulid_str: &str) -> Result<&str, &'static str> {// ULID is usually 26 chars.if ulid_str.len() != 26 {return Err("ulid_invalid");}// Crockford's base32 setlet base32_chars = "0123456789ABCDEFGHJKMNPQRSTVWXYZ";// Validate each characterfor c in ulid_str.chars() {if !base32_chars.contains(c) {return Err("Invalid character in ULID");}}// ULID is validOk(ulid_str)}The sanitization module is now just two core files, the
regex_extractor.rs
which will isolate the regex and provide helper extraction functions. Then there is thevalidator.rs
, which holds the new ValidationBuilder.The way we would use this is:
let mut validator = ValidatorBuilder::<&str>::new().password(); // Add password validation rulelet input = "YourPassword123!"; // The input password to validatelet result = validator.validate(&input); // Pass the input to the validate methodmatch result {Ok(_) => println!("Password is valid."),Err(err) => println!("Validation failed: {}", err),}^ That is the example for the password validation.