• Thursday

    • Private work.
    • Update icue major version, 4 -> 5.
    • Getting esbonio language server issues again.
    • YT new popups about adblockers.
    • SPDR (ETFs) = Standard & Poor’s Depository Receipts, the first of this ETF family.
    • The tomato does not move like the other clowns. Much more agility.
    • EquityZen reached out (post-offering) to indicate that company wants to ROFR unless shares are converted from preferred to non-preferred.
      • The also auto-cancelled the reservation?? My gosh. Bad experience all around.
      • Reached out to their chathelp to get it re-instantiated.
      • Resolved.
    • Uninstalled the teams app; never worked on my desktop. Might reinstall later, but browser is prob fine.
    • GL General Ledger, FCM Futures Commission Merchant, CCAs Client Commission Arrangements.
    • Supercontest.
      • URL params are used for resources (higher). Query params are used for filters (lower).
      • Another diff: url params are usually required, query params are usually optional.
      • Another diff: url params are prepopulated with url_defaults and url_value_preprocessor on url_for calls, before any requests are made. So you have knowledge of the values, but not the query params (request.args). So better to use url params for efficient url construction.
      • Added picks back for grdich week 3 again, last backup reverted.
      • Confirmed the scorefetch scheduled job started grabbing live scores within 30min of TNF kickoff.
      • Didn’t get everything done that I wanted to but weighed some options and designed the delivery tomorrow.
  • Wednesday

    • Private work.
    • Some work on difference arrays (line sweeps) and bisect, for range problems with large inputs.
    • Nitrotype.
    • PBs, IBORs, SEMVs, more.
    • https://www.xwordinfo.com/Popular?year=2023
    • Talked to multiple old colleagues.
    • Updated windows and vscode.
    • Some sys design, primarily in obj storage splitouts.
    • Supercontest.
      • Async score fetch, better logic around fetched gametime windows (vs SCORE_DAYS), no more commit_scores on request (so a little faster too). This is huge for simplicity. Before, you’d have to determine if any codepath / logic / route required live scores or not, and fetch/commit if so. Now, it all happens in the background. The DB is kept up to date with separate logic. Then the routes just pull the data.
      • https://gitlab.com/bmahlstedt/supercontest/-/issues/146
      • Remember APScheduler defaults to in-memory jobstore. My app loads all jobs on start, doesn’t need history, isn’t complex for loss/reentrance/etc. So I don’t need persistence. I could just add a table in the pg db for the jobs, but not necessary.
      • And remember, flask-apscheduler is by default a BackgroundScheduler.
      • On the admin page, I used to have the ability to add/remove jobs. It was unreliable (likely bc I wasn’t using a persistent jobstore, and multiple workers). Can add that back at some point.
      • Upgrading stripe caused a checkout problem: https://gitlab.com/bmahlstedt/supercontest/-/issues/217
      • Incorporated the new product/prices APIs.
      • Installed stripe CLI in wsl2 (ubuntu). Played with it in dev.
      • Banner, lines, picks.
      • Confirmed that AFTER picks open, BEFORE lines are committed, season and week are defined and passed to the query to get_games to check datetimes before score fetch, and the query results = empty list (nothing matches that week yet). But no error. All good.
      • Changed line commit to be scheduled as well, rather than manual.
      • https://gitlab.com/bmahlstedt/supercontest/-/issues/219
  • Tuesday

    • Private work.
    • Work on connected subgraphs (“islands”) and the many problems it’s a good foundation for.
    • Hydroponics.
      • For deepcleaning each garden (did both today): 6cups vinegar, 30min pumps on. Unplug. Then scrub and push all water out. Then refill. Add ph balance (1-2 squirts per gallon).
      • pH balance. The bottles from Rise are: Phosphoric acid, Ammonium, Dihydrogen Orthophosphate, Citric acid.
      • Ideal pH for plant nutrient uptake in hydroponic gardens: 5.8.
      • NYC waters is mostly soft (little harder).
      • Can get this instead: https://a.co/d/3tT4lxI
      • The reservoir design on the Rise Garden is absolute trash. Add literally ONE more inch of height to the bottom section for a world of difference. Keep the reservoir the same. This would allow easier bending of the tubes, easier removal of the basin, everything. And on the v1 (thankfully solved on the v2), the drain tube falls off the nipple extremely easily, and the cutout is not large enough to place it back easily. And the pumps are much harder to remove in the tight space (on both). Overall – just terrible design decisions from the mechanical team at rise gardens.
    • Some research on time series DBs. Don’t need it for supercontest (score streaming) since the benefits start carrying weight at high-frequency time data. Influx, but AWS has Timestream as well. You can write a time solution with reg storage (eg services + cassandra + redis), but then you have to write a lot of application code just for the timed data. Influx/timestream pull all that logic down to the DB so you get it for free.
    • Some research on scheduling solutions. AWS has eventbridge for their scheduler. There needs to be a compute target, obviously. You can use EC2 or a lambda. The app currently uses apscheduler. This can handle as fast as O(second) frequency.
    • Cleanup on the sbsc tickets. (1) For scorefetching becoming time-based, rather than event-based (on request). (2) Scores tick in UI live. (3) Transition from apscheduler to eventbridge.
  • Monday

    • Private work.
    • UWS all weekend.
    • There are crossword stats sites like this one: https://xwstats.com/
    • Confirmed autofeeder. 3 RODI buckets. Biweekly targeted feedings. Updated inventory (saw BOTH tiger snapping shrimp for the first time in >6mo!). Refilled all reagents. Had to power cycle the heater, was disabled since the water level was too low.
    • Played a little bit with reduce functions. Remember, they handle the iteration through n-1 for you (skipping last). And bc they do a comparison between 2 elements every time, they need a curr and a prev; this initializes prev to be the first element and curr to be the second, BUT you can specify another initializer. Then it will treat the first el as curr and prev to whatever you set.
    • Mealprep: chuck, stew, rice, oat milk.
    • New exorcist.
    • Remember $15/mo in instacart credits via CSR.
    • Slipper Day 2023.
  • Saturday

    • Private work.
    • Six flags fright fest all day yesterday.
    • Offerspill wins Euro cup. Hans beats Sevian in US championships.
    • Used vscode for the first time on macbook in a long time. Updated its version as well as many extensions.
    • Supercontest. Got running on macbook, full dev env. And backup capability (prod access). Added week1/2 picks.
  • Thursday

    • Private work.
    • Thought a lot about how to short PE.
    • Sawada coffee on canal, shabby alley, amazing interior/restaurant/cafe/bar.
    • UNLOGGED setting on postgres tables to use as a cache. No WAL, gone on restart. Not as fast as redis (but simplifies overall stack).
    • Paid ortho.
    • RIA = Registered Investment Advisor.
    • CSO = Chief Securities Officer.
    • Asked BoA to waive the overdraft via live chat, quick success.
    • Coinbase funds landed in checking, moved to brokerage and placed in simples (SPYV/VTI/whatever).
    • Planned/prepped for six flags frightfest tomorrow.
    • Setup new autofeeder.
    • Supercontest. Updated gitlab ssh key on EC2 instance.
    • Rectangle broke when I updated my macbook to sonoma (14). This is known: https://www.reddit.com/r/MacOSBeta/comments/15ej96v/rectangle_app/
  • Wednesday

    • Private work.
    • Read through some Bedrock (from old colleague): https://caylent.com/blog/amazon-bedrock-everything-you-need-to-know
    • Tightened the comment settings on this blog (all spam).
    • Aquarium.
      • Tomato clown bonded to the old bubbletip (evicting the 2 old perculas). Sebae clown bonded to the new bubbletip. Old ocellaris still homeless.
      • Sally lightfoot was apex for quite some time. Now the engineering gobies are large enough and have started nipping at the crabs.
    • Deep RL.
      • OpenAI’s docs: https://spinningup.openai.com/
      • Install spinningup and libopenmpi-dev and mujoco-py.
      • OpenMPI = Message Passage Interface (for HPC): https://www.open-mpi.org/
      • MuJoCo = Multi Joint dynamics with Contact. It’s a physics engine. https://mujoco.readthedocs.io/. OpenAI maintains a python lib for it: https://github.com/openai/mujoco-py
      • Neural network libs: pytorch, tensorflow.
      • OpenCV = Computer Vision. Python bindings for this (wheel takes a bit of time to build fyi).
      • Can run multiple algorithms, policies, sims, plot outputs, more.
      • Some good educational overviews on there too: policies for what actions to take in which states, cost/reward functions, Bellman equations.
      • Algos: Vanilla Policy Gradient (VPG), Trust Region Policy Optimization (TRPO), Proximal Policy Optimization (PPO), Deep Deterministic Policy Gradient (DDPG), Twin Delayed DDPG (TD3), Soft Actor-Critic (SAC).
    • Switched trays, first tightening.
    • Colab is Google’s jupyter implementation: https://colab.research.google.com/. Python in the browser.
    • TensorFlow.
      • Ran 5-10 notebooks to play with some of the functionality.
      • Watched https://www.youtube.com/playlist?list=PLQY2H8rRoyvwWuPiWnuTDBHe7I0fMSsfO
      • Fitting data, pulling different models, training in other ways.
      • Comes with a bunch of existing datasets to train against (keras.datasets). Computer vision example: 100,000 images of cats and dogs, and a classification of each as cat or dog. Then the trained model can see new images and predict the classification.
      • Specify loss (like mean squared, how to measure inaccuracy) and optimizer (how to choose the next guess).
      • You can use convoluted filters for feature extraction. Basically just many different layers, which one best produces output.
      • This was probably my fav notebook from the examples: https://www.tensorflow.org/tutorials/keras/classification
    • Crypto.
      • Submitted withdrawal request for gOhm from tokemak was week. Today noon was cycle rollover, so was able to complete the withdrawal.
      • Swapped directly for gOHM -> USDC on uniswap (+ one extra transaction to approve gOHM). Could have “unstaked” on olympus to convert gOHM -> OHM, but that’s another unnecessary tx.
      • Then transferred USDC from metamask to coinbase, converted to USD, withdrew to bank, and transferred to TD for equities.
      • Overall, I expected to get crushed by olympus; I hadn’t checked it in about 1yr and crypto has fallen considerably. I thought this token would be ~10% of my basis. It was 94%!
      • The metamask dapp has some cool portfolio tools: https://portfolio.metamask.io/
      • The new (well, I haven’t used in a long time) coinbase advanced trade interfaces is much better than the old pro.coinbase: https://www.coinbase.com/advanced-trade
    • Supercontest.
      • Banner/lines/picks.
      • Westgate posted MNF football with the date a week off (the monday prior), so my app flagged the lines as old and didn’t commit them.
      • https://gitlab.com/bmahlstedt/supercontest/-/issues/215
    • Emergency alert system ran a test on all phones at 2:18pm ET.
    • Went to Jazba in EV, Junoon’s new spinoff.
    • Overdrafted BoA by accident.
    • Emptied hydroponics. Will do full clean tomorrow, and replant soon after.
    • Updated vscode.