• Monday

    • If you’re feeling sleepy: simply look up. Triggers certain parts of the brain for wakefulness. Chin up, eyes toward the sun (even if indoors). Allow light in.
    • My DC30 rise garden pump died. Water level was too low. Replaced with DC40 (don’t plug into the control board, although it fits; use the separate power supply). They don’t sell the DC30 any more, it appears. Just use the DC40 models from now on. 400L/hr. The DC40 pumps have an autoshutoff feature too and can detect if they’re running dry.
    • Chess24’s Champions Chess Tour (Meltwater) started its final major today, the last event on this year’s tour.
    • Aquarium maintenance, refilled autofeeder, emptied reagent waste, etc.
    • Called BoA business to check on the rewards program, since the online interface doesn’t show anything useful (unlike chase/amex/others). Was another mess of operator transfers and nobody knowing anything. On hold for over an hour. Crazy that this isn’t just a single “here is your rewards status” page. After talking to multiple people, got 0 answers. That, plus the fact that they don’t have autopay (!!!) – do not business bank with BoA.
    • Moulin Rouge’s Come What May (2001) was originally written for Romeo and Juliet. That “you can tell everybody” hook is also recognizable from Aloe Blacc’s song The Man (2013), which sampled it from the original Elton John Your Song (1970).
    • Google Workspace obviously has gmail/meet/chat/calendar/drive/docs/sheets/slides/forms/keep. But here are some more you may not have known: sites (like squarespace, no-code websites), drawings (diagrams, charts), jamboard (freeform whiteboard).
    • iPhone really doesn’t want you to use another browser besides Safari. You have to go to the restriction settings and disallow it. Settings -> Screen Time -> Content and Privacy Restrictions -> Allowed Apps -> disable Safari.
    • More news coming out about FTX’ balance sheet. Not just that FTT made up a huge chunk of assets (and…cannot be used to pay out liabilities since it’s the same as FTX), but they did the exact same thing with SRM too (serum, basically the dex protocol underneath, created by FTX). FTX got billions of customer money. And they didn’t use it obtain assets (FTT and SRM are free to FTX, they created those tokens). Instead, they gave the money to Alameda, who lost it on bad trading strategies. So the money is gone, the assets on the FTX balance sheet because worthless once exposed, and the death spiral killed FTX. Not too dissimilar to TERRA/LUNA.
    • Deepdived equitybee.
    • Remember law firm hierarchies: associates -> partners. Managing Partner is the top, associates can be junior/senior, etc.
    • Lots of private work.
    • Ordered a few more liveaquaria: green bubbletip anemone, yellow/purple wrasse, maxima clam, cerith snails, sleeper blue dot goby. $55 for dead tiger watchman last time, $14 rewards, $35 15FISHY (15% off). Saved ~100 total, would have been ~250.
    • Supercontest. Ran an analysis for how close Vegas is at setting lines.
    • This dataset is from >1k games, from 5 seasons 2018-2022.
    • select avg(favored_team_score-underdog_team_score-line) from scores join lines on scores.line_id=lines.id where status='F' or status='FO';
      • This yields how far off they were (remember line is always positive in the db, favoring the favored team). After comparing to the score diff (favorite-underdog), -1 means they set the line 1 point too high.
    • -0.425. So they historically they set the line about a half point TOO much for the favored team. Hence the reason the underdog is a slightly better pick, statistically.
    • Taking abs of that difference above to simply get the total accuracy, the result is 9.95. This is how far off they are, in either direction, on the average setting of line. In the first calculation, being 3 points too low for one line and being 3 points too high for another means your avg is 0. But in reality, you were off by 3 for both.
    • Fun fact: worse miss was 45. Patriots/chargers, 2020-12-06. Line was pickem (0). The pats won 45-0.
    • The biggest upset in the other direction (-40) was Falcons/raiders 2020-11-29. Line was raiders by 3. Falcons won 43-6.
  • Thursday

    • Binance is not buying FTX now, having reviewed the financials. SBF had transferred >4b from FTX (just cex) to Alameda (trading, arb, market-making). Nearly 15b of Alameda’s book was FTT. FTX saw >6b in withdrawals in 72hrs. Shortfall of 8b. Clearly not just doing custody, since they’re in a liquidity crunch. A bank run can’t happen if you hold 1:1 assets for customer deposits. But here we are, doing a run on a bank that calls itself an exchange.
    • Sol impacted (disproportionately) too, close relationship with FTX.
    • Another liveaquaria shipment. Tiger Watchman Goby didn’t arrive alive (nor large). Submitted claim. Everything else good: 3x Pajama Cardinalfish, Three Stripe Damselfish, Six Line Wrasse, Fancy Banded Serpent Sea Star, Purple Short Spine Pincushion Urchin.
    • Finished Chernobyl. Liked it. The story is more scary than interesting, and it’s very interesting.
    • Remember (you do not have the cash, but you have other assets that can be converted into cash) = (illiquid, but solvent). 2 different things. Insolvent is worse.
    • Lots of private work. Mostly scheduling.
  • Wednesday

    • When you focus on the reward at the end of an effort, the pleasure experienced during that effort drops drastically. That’s how dopaminergic systems work. Retrain your mind to get pleasure from the effort itself.
    • Brian Armstrong on CZ/SBF: https://www.bloomberg.com/news/videos/2022-11-08/coinbase-ceo-on-binance-buying-ftx-video
    • Got Teams for all devices. Synced MS with google calendar.
    • Huge day for private work. Many meetings, all sides of the equation.
    • Got about 20 headhunter calls today.
    • Committed week 10 sbsc lines, confirmed DST shifts are working correctly, submitted my picks.
  • Tuesday

    • Registered to vote in NY (LA county prior).
    • Signaling Reminder: There are many problems on Earth. More than time allows an individual to solve. Every human can solve their own optimization problem. They alone understand their skills, passions, gifts, priorities, and schedules to choose which solutions to pursue. That can include voting as a small periphery responsibility. That can include voting as a primary personality trait. It can ignore voting overall. I’m not talking about what you vote for, I’m observing that it is ok to not vote. Use the time to study medicine if you want. Learn about physics. Adopt an animal. Research how to consume a healthier diet for your family. Build an iphone app that makes a commute easier for 10 strangers. We don’t elect our doctors. We don’t democratize engineering choices. And the malignancies are deterministically adversarial in those systems.
    • Tons of private work.
    • Coconut oil is good for new tattoos.
    • Binance going to acquire FTX?? (#1 vs #3)
    • Did a fireflies recording of a gmeet. It actually is a pretty cool tool Audio/video recording. AI transcription. Captures chat/notes (gmeet does not). Tries to pull out action items, prices, etc. Metrics on talktime by participant, sentiment (positive/negative/neutral). Would definitely use this if free, and will reconsider as scaling.
    • Supercontest.
    • Updated banner, redeployed.
    • Made some progress on the CICD work. https://gitlab.com/bmahlstedt/supercontest/-/issues/165.
    • Deleted the old SSH key variable from gitlab CICD settings. Added AWS access key / secret / default region.
    • Created a Lifecycle Policy rule in ECR to only keep a count of 10 max (most recent). Will expire FIFO after that.
    • Removed some venv and tox stuff. Just run in the built images (system env). Also removed the ctags reindexing stuff, no longer using vim.
    • DEV: Builds the image locally, runs the image locally, does not tag the image, does not push the image, runs on any branch, tests in the locally running image.
    • PROD: Builds the image in CI, runs the image in CI, tags the image with the git sha, pushes the image, runs on master only, tests in the running image.
    • Branch tests are just build-prod then test. No tag or push. Then master branch will build-prod, test, tag, push. Then trigger the deploy target, which is just start-prod (pulls the latest, most recent master-cicd-blessed-prod image).
    • You have to upload an explicit image tagged latest to pull latest, of course. This isn’t clientside (image registry, deploy infra, etc) logic that you get for free. Your push in CICD needs to accommodate what image tags you want to be available.
    • The client utility for docker will default to latest, however (when no tag is specified and you build an image).
    • Did some planning for later. Image size reduction, proper tagging, scanned img security vulnerabilities.
    • Will also use CloudFormation to provision/configure the EC2 instance, rather than the manual one I manage right now. This will make spinup easier (like moving from DO to AWS) or updating the machine, or redeploying, or disaster recovery, etc.
    • May try some of the developer tools too. I don’t have any gitlab features I’m married to. Using CodeCommit, CodeBuild, CodeDeploy, and CodePipeline would probably make it all easier to use in the AWS ecosystem. I’ll try the all-in approach for a bit.
    • Might even try RDS for managed postgres.
    • ELB for the nginx reverse-proxy and letsencrypt companion container infra I run right now.
    • Will also move the banner to CloudFront (AWS CDN) so that I don’t have to rebuild/deploy every wednesday.
  • Monday

    • Tons of private work.
    • Started HBO’s Chernobyl. Radioactivity is scary.
    • Supercontest. Fixed the email-all-picks apscheduler job in production. Tested with my email then fixed to production state.
    • Daylight savings shifts look good, but I’ll confirm this week as well.
    • kex_exchange_identification: read: Connection reset by peer
      • Had to reboot the EC2 instance (and did a sudo apt upgrade while at it).
    apt apt-utils cloud-init distro-info-data fwupd grub-efi-amd64-bin grub-efi-amd64-signed gzip libapt-pkg6.0 libfwupd2 libfwupdplugin5 libnss-systemd libpam-systemd libpython3-stdlib libsystemd0 libudev1 python3
    python3-distupgrade python3-distutils python3-gdbm python3-lib2to3 python3-minimal snapd sosreport sudo systemd systemd-sysv ubuntu-advantage-tools ubuntu-release-upgrader-core udev
    • Supercontest. Worked on the cicd a bit.
    • Created a private registry in ECR (in us-west-1 still).
    • Installed the aws cli (2.8.9) on my desktop (in wsl2 ubuntu).
    • Used the supercontest IAM user since it has admin access. Created an access key and aws configure for this profile. This dumps creds/defaults to ~/.aws
    • Then you can call ecr and other commands.
    • Example: aws ecr get-login-password takes your aws iam user’s secret key, converts to a temp auth token, and then you can pipe it to docker.
    • ECR gives you a docker registry address. Mine is 377205113385.dkr.ecr.us-west-1.amazonaws.com (regardless of IAM user pushing to it, that account ID is the same because it’s the AWS mahlstedt account.
    • Don’t tag in docker-compose file, just build a generic supercontest image, then test it, then tag before pushing (if successful).
    • A lot more commands and examples and stuff on https://gitlab.com/bmahlstedt/supercontest/-/issues/165. Basically docker login, build, test, tag, push.
    • Successful push: https://us-west-1.console.aws.amazon.com/ecr/repositories/private/377205113385/supercontest
    • Local says 1.8GB, ECR says 730MB.
    • The pull is easy, just specify the ECR repo in the docker-compose file. It will grab the prod image from aws and start a container locally. Fast. No wheel builds / reinstalls / etc.
    • You get some basic image scanning for free with ECR. Ran one on the current prod image. Lots:
    • Remember you COULD switch over to AWS for the git/cicd/etc stuff too. AWS has CodeCommit (source), CodeBuild, CodeDeploy, CodePipeline. Could replace gitlab/github. This is what the aws cli does for stuff like create-deployment.
    • Could also use cloudformation (like TerraForm, IaC) to define the stack, but it’s so simple (just single EC2 running docker compose running a few containers). Can add orchestration later.
  • Sunday

    • Watched the Andrej Karpathy fridman podcast.
      • Software 2.0: neural nets producing binaries (really just optimized weights from the data model) rather than humans manually writing code.
    • My Castello Tricerchi from Florence arrived (2020 and 2021 Rosso, 2017 Brunello).
    • My crabs+shrimp ate my clam! Full aquarium weekly, water change and feedings. Replaced reagents.
    • Three Kings tattoo, east village.
    • Wesley So took the lead for CGC.
    • Went to MetLife for Bills/Jets.
    • NYC Marathon.
  • Friday

    • Upgraded from WP 6.0.3 to 6.1 (and theme, then removed footer). I can’t indent anymore?? Looks like this has happened multiple times during upgrades before: https://www.google.com/search?q=wordpress+can%27t+indent+list+anymopre&rlz=1C1ASUM_enUS976US976&sxsrf=ALiCzsZNRFG845wkldAekZPzzG08rQgHsQ%3A1667586326322&ei=FlllY92WE6Sp5NoPruKQiAw&ved=0ahUKEwjd-fKUk5X7AhWkFFkFHS4xBMEQ4dUDCBE&uact=5&oq=wordpress+can%27t+indent+list+anymopre&gs_lp=Egxnd3Mtd2l6LXNlcnC4AQP4AQEyBRAAGKIEMgUQABiiBDIFEAAYogQyBRAAGKIEMgUQABiiBMICChAAGEcY1gQYsAOQBghI0AZQwgRYwgRwAXgByAEAkAEAmAFioAFiqgEBMeIDBCBNGAHiAwQgQRgA4gMEIEYYAIgGAQ&sclient=gws-wiz-serp
    • Stripe lays off 14%, twitter 50%, lyft 13%, opendoor 18%. Tons in web3 as well.
    • Supercontest. Added a screenshot of the weekly picks table and an email schedule at lockdown. https://gitlab.com/bmahlstedt/supercontest/-/issues/166.
    • Used selenium, and automated login (just like the test suite).
    • Needs auth. Created a generic sbsc user (of the app, not db or mail server).
    • Required some dynamic window sizing to grab the image properly. And byte handling for png attachment.
    • Supercontest. Updated the 2022-2023 season for daylight savings time this saturday night. https://gitlab.com/bmahlstedt/supercontest/-/issues/139.
    • Modified the alembic migration too so that this happens at the beginning of every season automatically, no longer needing this manual operation mid-season.