-
- Private work.
- Rocket Lab: https://spacenews.com/electron-fails-during-capella-space-launch/
- Chrome will re-request a non-200 page every minute if it’s the active tab (at least that’s what I’m seeing locally).
- Supercontest.
- Finished all the pre-2023-season prep (and backfill since late).
- https://gitlab.com/bmahlstedt/supercontest/-/issues/202
- Just a quick reminder of db/model hierarchy: teams, coverage options, location options, prediction options, seasons/weeks, leagues, etc. These are all the (relatively) static tables. Then 2 complex tables. There’s the
games
table, with datetime, line, and status (no teams/scores/results). And there’s the contestants
table, two rows pointing to a single game, each identifying the team/prediction/location/score. opponent_score
is denormalized here, so that we can autocalculate coverage/margin locally – the only 2 generated cols in the app. The picks table just points at a user and a contestant.
- Some bugs in the picks flow.
- Scores, added User-Agent to
requests
for scores rather than full webdriver. Some APIs this year started 403ing without this header.
- Gunicorn perceiving upstream errors (requests within a worker, from the app to elsewhere) as downstream (client, requests to the app) – https://github.com/benoitc/gunicorn/issues/1507
- Be careful using python’s
next
iterator inside of webapp routes served by gunicorn. The StopIteration
exception raised when there’s no result is caught by gunicorn and perceived to be a client disconnect, so the route returns nothing, swallowing all useful info.
- Niners giants, trivia, ues, murphy’s law, old citadel friends.