DIMMiN Notes
My working notes related to the development of dimmin.com.
2026-05-12-Tuesday
- Fixed the user
watchtimecalculation (invalid joins were being used when considering active sessions). Pushed these changes to Production - Found out that it takes roughly 3 minutes to allow the connection to reset to get the wall of joins back. The wall of joins takes about 60 seconds to render.
- Fixed the
fix_user_sessionscript so that it always re-calculates sessions. - Fixed watchtime AGAIN (sessions weren't processed correctly on first try on live server)
- Temporarily disabled the server reboot function until I can test the wall of joins better
2026-05-10-Sunday
- Fixed the UTC / PST timezone conversion bug by using a Django Context Processor to inject the timezone explicitly defined in the settings file throughout the project (connecting the backend and UI in timezone)
- Pushed code to Production, ran into a few bugs
- When pulling code to an active Docker Container the container restarts with the new code. Best to just stop the container to allow graceful shutdown to occur in the future.
- Applied Database Migrations to production database so that now it has the
graceful_shutdownfeature - Rotated the django secret key and switched to using Environment Variables for a few additional parameters (like timezone)
- Found out that we can check a database for corruption using the linux sqlite3's PRAGMA integrity check
- Found out that if I don't leave the server disconnected from the Socket for enough time, I don't get the collection of starting joins.
2026-05-09-Saturday
- Updated the official start time to
1778119163(catalixia's go-live message, id567c45c8-a7e0-48f0-8626-ac6578f99289) to define the start of the subathon - Watchtimes are now reflected in seconds and include both recorded sessions and incomplete sessions
- Updated the
TwitchUserAttendanceDjango Model so that we can easily identify graceful shutdowns - Updated
sessioncreation logic so that graceful shutdowns don't automatically end a user's watchtime streak (i.e if I shut down the server and restore power and the user is still there, just consider the session to have started from the last valid join before the server went down) - Wrote a series of Unit Tests to validate the new graceful shutdown handling for watchtime
2026-05-08-Friday
- Learned how to safely make a copy of a SQLlite database
- Refactored the Catalixiahbot watchtime query to account for active sessions
- Created a new Development sheet to test out ideas on instead of using the live Production sheet
- Updated the Django Management Command for the upload to gsheets function so that it uses the subathon_start Environment Variables as the default instead of
None
2026-05-07-Thursday
- Made sure that Catalixiahbot was operational for the subathon kick-off (it is up and running)
- Identified potential start messages (either
fcb39332-6d00-457c-b900-3532f97329f1or567c45c8-a7e0-48f0-8626-ac6578f99289) which we can switch to if we want to change the start time of the subathon. - Added an additional table display to the subathon sheet using XLOOKUP to show total watchtime and chat points broken apart by day for two weeks (requested by Catalixia)
2026-05-06-Wednesday
- FINALLY Fixed the kernel level issue in my Homelab that prevented me from easily starting and stopping Docker containers thanks to this resource
- Set up a CRON Job that restarts Catalixiahbot every week so it can continue to collect data
- Figured out how to establish a long-term SSH key so I can transfer backup databases within my Homelab (between
AMandMsNASty) - Set up another CRON Job that transfers the database to a folder in the NAS which handles versioning and database snapshots for me.
- Found out that
catalixiais starting her subathon on May 6, 2026 at 3 pm PST - Added a new feature to the Catalixiahbot that tracks the total number of chats daily
- Added a new feature to the Catalixiahbot that tracks the total number of watchtime hours for a given day (however this is based on TwitchUserSessions and when they start, so they could be much higher than is reasonable)
2026-05-05-Tuesday
- Decided to break apart the CupUp - An Analysis of Optimal Coffee blog post into a multi-part series to split up the writing component
- Updated processing of
variety,processing_system, andaltitude_meters_lo/altitude_meters_hi - Set the maximum altitude to 2,600M during processing
- Began working on validations for this final processing step
2026-05-02-Saturday
- Finished processing the
farm_size_square_metersfeature - Began updating the
2_clean_features.pyscript to finish numeric conversion of different fields
2026-04-30-Thursday
- Constructed a test in the Python pytest validator that identified 38
lots in thecompetitionpage where the link in the competition page does not actually match the lot URL (usually the Slug is changed in the competition page but redirects to the appropriate lot) - Integrated warnings (instead of test failures) into the validator to check for outlier auction scores
- Identified a disconnect between listed lot size and the auction pricing results. For instance for Brazil Pulped Naturals 2000 the highest lot size is 220 30kg boxes (14,550.51 lbs), but the total price (just over $29k) and price per lb ($1.02 / lb) suggest a total size of 29,102 lbs.