-
- Private work.
- Still a great tweet: https://twitter.com/mxcl/status/608682016205344768 (top tech companies are, and should be, shifting evaluation methods for better candidate filtering).
- Finished the awful cayenne segment today (>2wks).
- Qatar Masters finishes. Magnus, Anish, others tied for 9th. Hikaru, Arjun, Gukesh among those tied for 3rd. Abdu and another uzbek 1st/2nd! Swiss is always so weird. You’re only playing a super GM maybe once in the 9 rounds. I’ve only heard of 3/9 players that the winner faced (Arjun, Sindarov, Adhiban).
- Generators (with recursion) for flattening nested lists (arbitrarily deep). Or appends/extends with iterators.
- Supercontest.
- Pulled some logic out of the templates (hard to manage) into the app (easy to manage). Will merge once I migrate to tsx, but this is a helpful change for the timebeing.
- Remember the
do
directive in jinja2. Like set
to define a variable, do
will run some code (like updating dict val, whatever). Need to add the ext to the jinja env tho.
- Cleaned up all the conditionals in jinja2 for season/week/league. Now it infers from
g.params
, updating the dict with whatever dropdown you’re iterating over. Eg: season dropdown will retain week and league (from current view), and provide a link for all seasons.
- Also, the navbar dropdowns had hardcoded route name checks for conditionality. Now it just inspects to see if you’re on a view that has season, week, or league – and presents a dropdown for each present param.
- Moved the subtitle-building functionality for each contest view from the general header to the 4 specific view templates (they’re diff by season/week/league).
-
- Private work.
- Goodell’s contract is 200M/3yr, bringing career earnings to >700 for salary alone.
- Blocked Flowdan on spotify. So bad.
- You can spoof a phone number to originate from a caller ID you don’t own (like SMTP without TLS, spoofing sender). Happened today with home number / parents.
- Supercontest.
- Separated views into diff blueprints, each custom in many ways (an important one = URL path params).
- The app preprocessor does generics: name/id maps, where in the season it is, etc.
- The blueprint preprocessors do week/season/league resolution, as appropriate.
- There are some hardcoded URLs (domains AND endpoints/values) in the
email
lib. You’d normally use flask.request
and url_for
to construct these dynamically, so they’re not hardcoded. But there’s no request within those apscheduler jobs for emailing.
- The utils module should never import other sbsc modules. Only stdlib and other utils. Removed the
models.Pick
import from types
. The email module runs queries to check notification settings and stuff. Moved it out of utilities into the main package.
-
- Private work.
- Andreesen’s “tech is good” manifesto: https://a16z.com/the-techno-optimist-manifesto
- Finished ALL spotify scrapes, full discographies of all artists. 2,183 liked songs. Now onto new releases / discover.
- Bos’n = boatswain (deck boss).
- Switched trays (2->3).
- Slack has “huddles” (video calls).
- https://hub.selbyjennings.com/hubfs/Selby%20Jennings%202023/Fintech%20Technology%20Salary%20Guide%20-%20USA.pdf
- Browsing from chatgpt: https://help.openai.com/en/articles/6825453-chatgpt-release-notes
- Watched Host.
- Supercontest. Backed up. Updated banner. Tested automatic line commit locally (earlier), then verified it ran nominally in prod. Submitted picks.
-
- Private work.
- Billion’s Axelrod = Cohen.
- Created google passkey for desktop.
- Updated vscode exts and geforce driver.
- Spacers in the closet handle so it’s not loose.
- 32 pieces of mail, only 1 not spam. And that was for auto ins cards, which I have digital copies of. Post is such a waste!
- Glassdoor blocks a lot of their stuff.
- Iphone stopwatch can do the wim hof rounds, just have to get used to the lap/reset while you’re a bit out of it. But it doesn’t save, so nevermind.
- The wim hof app is pretty buggy though. Can’t edit account details, account is coerced to apple id (but there are two of them?), just overall a little shaky. But I’m logged in and functional, and history is being saved.
- Message queues: At Most Once vs At Least Once vs Exactly Once.
- Fabi wins US Chess Championship. Magnus crawling back to the lead in Qatar, within reach now (1/2 behind 1st, 3 rounds left of 9).
- Disabled adblockplus and privacybadger on youtube.com, leaving only ublockorigin. They patched a couple weeks ago (within a couple hours of the YT change).
-
- Private work.
- Apple store temporarily removed metamask. It’s back now.
- Right Aid filed chapter 11.
- Supercontest.
- ESPN score API returned an empty string for the status during multiple (21) fetches within SNF. No damage, no fix: https://bmahlstedt-org.sentry.io/issues/4550103735
- Resolved all other sentry issues (old), if they happen again I want to be alerted.
- Excellent question for a candidate to ask an interviewer: Give the most recent example as it relates to YOUR job for the problem you just assessed me on.
- Google passkeys. One for face on phone, one for fingerprint on macbook.
- Friendsgiving. Created gsheet for signups (and tinyurl and bitly). Created paperless post for invites.
- Back to NY.
-
- 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.