-
- Private work.
- Some logarithms.
- Charged the remote control blinds. Just take microusb from desktop, extension cord from drawer, and plug in (red -> blinking green -> green).
- Remember
{:,}
for comma separators on numbers in the thousands spots.
- The equinox increase of 7/mo is in relation to ~260 or whatever I pay. A little under 3% increase.
- S3.
- Charges for versioning (if you have it enabled for a bucket) at the same rate as regular storage. If you have 6 versions of the file, it’s 6x the storage (not diffs).
- Lambdas for pre/post data fetching. Many capabilities.
- Remember permissions on the bucket are given by the ARN, but permissions on objects within the bucket require the
/*
suffix.
- Looked at some policy examples for fine-tuned access control.
- You can add localhost to Referer in a bucket policy to allow access in dev quickly/temp. This effectively exposes to the public though – any service can refer from localhost.
- Lol equinox is increasing their rates by $7/mo.
- Set up the ring cam. Remote control, voice, everything.
- Supercontest.
- Finished the larger change to rewrite all the routing
- https://gitlab.com/bmahlstedt/supercontest/-/issues/218
- Includes the shifting of the statistics views, the cleanup of the template logic (as far as URL params), and the filtering of stats by season.
- Changed the logic so
season=0
meant ALL (just like league=0
means all). This required some special handling of the season
param – ONLY the stats views allow 0 (others just require valid seasons).
- Moved all static assets to s3. Team logos, branding icons, banners, etc.
- https://gitlab.com/bmahlstedt/supercontest/-/issues/193
- Couldn’t find an easy solution for a “pointer” – a generic s3 alias (just a key-value pair) which I can point at anther object path in the bucket. I would update the
banner
pointer to the specific img in the archive. Oh well, just copying each week’s head as banner.jpg
, like I used to do locally.
- Much easier to manage these assets now. I can change the banner and the docs and everything else without rebuild/redeploy. They’re just s3 refs.
- There is a
flask-s3
python package: https://flask-s3.readthedocs.io/en/latest/. I’ve decided not to use it. The interface of pure URLs is simple/proper/stable enough for me. I don’t need extra functionality.
- Could add WAF to cloudfront. Slows it down a TINY bit but adds some basic protection. Don’t need for now.
- The docs were broken. Local and remote builds. Needed to add
setuptools
back to pyproject.toml
– it’s necessary for sphinx.
- Remember to delete
docs/modules
, these are autogenerated and if you’ve moved modules around, you’ll have some stale imports.
- Also remember open in live server for index html files from vscode (useful for autodocs).
-
- Private work.
- Danse Macabre, Greenwood Cemetery.
- Mealprep: smoothies, oatmilk, hibiscus.
- Finished Homeland. So good.
- AWS is starting to charge for IPs. A single static ipv4 is ~$4/mo I think?
- Supercontest.
- Changed the
View
navbar dropdown to be btn-secondary
, standing out from the other season/week/league filters.
- Moved the
alltimelb
view to the standard Leaderboard dropdown option for season. Didn’t add the param season=All
, since they’re so diff. Cols by week vs cols by season, different values shown in each cell, etc. Best to keep separate. It’s not like stats where it just affects a filter in the query.
- Still some (now) invalid email addresses of players. Not gonna do anything. That’s their account profiler, I don’t want to modify it. Just have the mailer fail as necessary.
- Sometimes espn returns unknown statuses: https://bmahlstedt-org.sentry.io/issues/4550103735/?notification_uuid=c2a7fec2-1faf-4ddf-bc71-5576421eb16e&project=1773879&referrer=regression_activity-email
-
- 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.