• Supercontest.
      • Datetime, picks, leaderboard:
        • Updated all the datetimes in the database to pacific. Updated the database timezone to pacific.
        • Updated the url defaults. Season is current or max. Week is current or 17.
        • Added g.current_season next to the existing g.season (which is the requested season) and g.is_current_season. Same for weeks.
        • Switched everything to be perfectly clear: all datetimes in the database are utc, all westgate lines are written after conversion from pacific time, and all sqlalchemy reads convert to local.
        • Debug toolbar is helping a lot. Noticed that on RESULTS_DAYS, it was bloated by about 500ms due to excessive queries.score_exists/get_score calls. Consolidated all of them. You could even go further by conditioning commit_scores not just on RESULTS_DAYS, but on time as well to tighten the range in which the extra calls are made. Call fetch_scores protected by results_days, then only call commit if any of the statuses aren’t P/F/FO.
          • Reduced total db queries for the endpoint by >30 and profile reduced by ~400ms.
        • Completed redefined the pick view and how it’s sorted, including the core/results backend to calculate as such. Now returns number of picks, current total points, current possible points, etc. Looks very good now.
        • LB and graph only show completed games in the total now. I added a col for in-progress games so you call still check “what if it all ended right now” status.
        • Percentages are now based on the picks that you have submitted, not the total (5 per week).
        • Combined a lot of the route logic, keeping the endpoints as thin as possible. Most of them outsource to functions in the core.results module now.
        • Added tooltips all over leaderboard for submitted picks, help, more.
        • Universal color for a lot of things.
        • Renamed the matchups tab to your picks. Renamed the picks tab to all picks.
        • Graph and leaderboard are now bulletproof for completed games.
        • Added req compilation back as a requirement of the test step, and ensured that compreqs were installed into the testenv.
      • My make test-python recipe is heavy-handed; it will compile all reqs and recreate the testenv. On subsequent runs, just use tox.
      • Got the bandit tests running again. Pytest is still obsolete.
      • App behaved well over TNF.
      • Closed https://github.com/brianmahlstedt/supercontest/issues/84.
      • Closed https://github.com/brianmahlstedt/supercontest/issues/94.
      • Dashboard.
        • Added a conditional (on my account) navtab for the flask monitor.
    • Bools have to be filtered |tojson to pass through jinja from flask to js. They’ll be properly typeof() = boolean in js.
    • Forcing NBA owners to change their titles to governors due to historical implications is the same false equivalence as telling a German that they can’t use ovens. It’s offensive. It’s irrelevant. Race is being used as glue to compare situations which have absolutely no relation.  It’s not just a “doesn’t affect you” situation – it’s discriminatory, and should not be ok to concede. Finding these parallels with your lens of virtuous sensitivity is not progressive; it’s an overshot of true equality, which slows resolution (if it doesn’t destabilize entirely).
    • Nested dicts are fine to pass through jinja’s |tojson filter for use in js.
    • Fed mouse. First time she’s ever been snappy when I opened the terrarium. Used a broomstick to move her to the feeding tank.
    • My digital ocean droplet is in Santa Clara.