-
- Private work.
- DP problem, classic knapsack.
- Bubbles in br ceiling are from AC pipes. Off until next summer, but if leaking (likely), will need attention.
- Horseback riding, bedford. Pumpkins (Blaze), sleepy hollow.
- Swapped VPN card.
- Updated vscode macbook.
- Friendsgiving planning.
- YT’s anti-adblocker popup.
- Python’s itertools.pairwise is helpful, although it’s really easy to write the indexing/iterating yourself.
for item in pairwise([1,2,5,6,9]): print(item)
will print (1,2) (2, 5) (5, 6) etc.
- Supercontest. Confirmed scorefetching started at T-30min in prod.
-
- FRIDAY THE 13TH.
- Private work.
- Atlassian buys loom for 975M.
- Saw a taping of the It’s Always Sunny podcast at RCMH!
- Amazon fresh reduced their free-delivery-threshold from 150 back to 100 (they just raised it to 150).
- Ceiling paint in bedroom is bubbling and soft, as though water is leaking from the unit above me. Submitted request.
flask-socketio
for client/server bidi.
- Hydroponics.
- Remember my tap in nyc is ~7.1 pH. The gardens should be ~5.8.
- The v2 is ~10gal reservoir. The v1 is ~5. Each level adds another gallon. So totals are 13 and 8.
- You’re supposed to put 1-2mL of pH-down per gal. So 1.5×13 and 1.5×8 -> 20 and 12. A teaspoon is ~5mL. So final numbers, by recommedation, for a completely fresh fill after cleaning: 4tsp for v2 and 2.5tsp for v1.
- In practice, I’ve found this to still yield pHs ~6.3, so increase a bit. Add 6tsp (30mL) for v2 and 4tsp (20mL) for v1, if complete refill. If you’re only refilling half the water (weekly maintenance), halve that (or whatever other ratio).
- Planted new batch. Tomatoes, cucumbers, gochujang peppers, chard, thai basil, stevia, peppermint, lettuce, marjoram, thyme.
- Supercontest.
- To get PRE request behavior (like linkbuilding with
url_for
, you have to use url params, not query params.
- You could try to circumvent this by wrapping your
request.args
URL params logic inside a url_defaults
function, masquerading them as URL values/params. But there’s no request in this context! It’s just a url_for
call. So you can’t access them.
-
- 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.
-
- 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
-
- 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.
-
- 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.
-
- 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.