• Sunday

    • Saw wicked on broadway.
    • My ranked order of all the ones I’ve seen so far:
      1. Book of Mormon
      2. Moulin Rouge
      3. Harry Potter
      4. Rock of Ages
      5. Lion King
      6. Hadestown
      7. Wicked
      8. Aladdin
      9. Music Man
      10. Six
    • Remember intel is arm and apple is amd.
    • tail -f /dev/null as docker entrypoint/command to keep container running.
    • Properly ran pyenv on wsl2. Installed the python build deps for a clean pyenv python install. Did some cleaning with apt autoremove. Now running python 3.11 on wsl2, macbook, and in all containers running sbsc. For all in both pyenv and poetry env, not system env.
    • Installed the Better TOML and Mako vscode extensions for syntax highlighting on those configs.
    • Remember that docker down removes volumes as well. So you’ll have to restore the database if you down. Instead, it’s better (in most cases) to just use docker stop.
    • poetry export can be used to output a standard requirements.txt from the lockfile.
    • SBSC. Upgraded ALL package versions.
    • https://gitlab.com/bmahlstedt/supercontest/-/issues/180
    • https://gitlab.com/bmahlstedt/supercontest/-/issues/184
    • Python 3.8 -> 3.11.
    • Flask 1 -> 2.
    • SQLAlchemy 1 -> 2.
    • Upgraded literally every other package. All flask extensions, all utility libraries, everything. Removed bs4 and decorator. Everything is unpinned in pyproject.toml (locked by lock, of course).
    • Removed flask-script and moved over to flask’s (now native) CLI.
    • Got flask-monitoringdashboard working again.
    • Took advantage of the new py features: enum, walrus operator, switch statements, more.
    • Removed the dependence on joyzoursky/python-chromedriver, which stopping uploading a couple years ago (since py3.9). Built my own image, basing from selenium. I then layer pyenv, poetry, and my packages in.
    • This was quite the chore. Chrome is not seamless to install (tried to base from py3.11 first). Details on ticket.
    • So multiple layers of isolation are now working: host machine -> isolated docker env (with chrome/chromedriver/selenium) -> isolated python env (via pyenv) -> isolated project env (via poetry).
    • The client js reimplemented some logic for arePicksOpen() and unstartedStatus/finishedStatuses. These are now ONLY serverside-defined. Single source of truth.
    • Exposed week/season as an arg for the scrapers to test them outside the current week. Looks good for next season.
    • Selenium has a cool element.submit() which walks up the dom and clicks the form’s submit button. Better than finding the el by xpath/whatever and .click(), which has “Element is not clickable” errors sometimes (viewpoint, scroll, elements over it, etc).
    • flask-user is yanked. The maintainer is no longer developing on it, but I’m not sure why the yank. flask-security was forked in 2020 and is maintained by someone else now. flask-login doesn’t have everything I want. So I just kept flask-user for now.
    • Made some lint and style improvements, corresponding to newer versions of python/stdlib/pylint/black.
    • Fixed all logos in the stack description. Got off clearbit. Made the readmes linked, so you don’t have to keep 2 sources of truth.
    • Wrote some super helpful new gnumake targets to drop into various shells with various contexts (active flask app, env vars, etc). This organized things a bit better too; docker compose is now only used for targets that manage container state. Everything else just uses docker.
    • Note: upgrading the version of flask-migrate works on its own if you don’t already have a migrations/ folder. If you do, the site-packages update is not sufficient; your local env.py and alembic.ini and script.py.mako will be out of date. I updated them manually from github src.
    • Moved all constants into supercontants.core.constants. Much better now.
    • Cleaned the explicit template argpassing, jinja globals, and jinja exposing vars to js.
    • Changed DB statuses to new format.
    • Linted all js.
    • Made version management of the sbsc package (itself) single-source-of-truth, instead of duplicating for sentry-sdk and flask-monitoringdashboard. Now, just pypoetry.toml need bumping.
    • Cleaned some custom functions, just used configparser from stdlib.