• 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.
  • Thursday

    • Python 3.11 is considerably faster. 25% avg, 10-60% based on context.
    • 4th 75bps hike in a row.
    • CGC did show up on chess24 today.
    • Tons of private work today.
  • Wednesday

    • Lots of private work.
    • SBSC. Updated banner. Committed lines. Submitted picks.
    • CGC starts today.
      • Hikaru, Duda, Wesley, Andreikin, Radjabov, Anish, Sarin, Sevian (replacing Levon).
      • Notable knockouts: MVL, Kramnik, Esipenko, Ding, Abdusattorov, Erigaisi, Svidler, Nepo, Fabi, Ivanchuk, Shak, Leinier, Navara, Hansen, Xiong, Fedoseev, Vidit, Liem.
      • Niemann won his qualifier but did not play in knockouts (they were at the beginning of october, so I presume he was removed due to the cheating scandals).
      • Magnus did not play (he represents chess24, which is chess.com’s rival). They don’t cover CGC on the usual chess24 list of events.
    • Gateway is a venture marketplace for asia. Secondaries, financing, raising, other liquidity solutions. Over 900 private companies.
    • Received new liveaquaria: blood shrimp, smith’s blenny, red fairy anthias.
    • Looked at some ITM/OTM options.
    • During a merger/acquisition, some shareholders may choose to roll their equity over to the new company, rather than being bought out. They may do this because they feel the equity will increase over the current price point, to do the acquirer a favor (means the acq costs less), etc. This usually only happens for priority shareholders, not the avg employee.
    • Mobius was not connecting to my G6. Power-cycled to fix. You can do this with just a couple clicks on the apex app.
    • Trivia at Amity hall in greenwich, then saw Chapelle + Chris Rock + Louis CK outside the comedy cellar.
  • Tuesday

    • A company CAN clawback equity in a termination event (or other conditions they specify in the shareholder agreement).
    • Jcriss and Petty real estate: https://www.omegabusinessinvestments.com/
    • EDGAR = Electronic Data Gathering, Analysis, and Retrieval system. You can search for all SEC filings.
    • Created a forge account.
    • Cool generator for company names: https://namelix.com/. Can enter keywords and other preferences.
    • Concept reminders.
      • Advance rate.
        • Same as LTV.
      • Clawback.
        • Returning assets to the employer on termination, usually. Mostly cash, but you can forfeit bonuses or stock equity as well. Usually requires termination with cause.
      • LRR.
        • Liquidity Reserve Requirement. Typically how much banks must keep in reserve for to cover liabilities. 10% of accounts, usually.
      • IRR.
        • Internal Rate of Return. Just a metric for how good of an investment something is. Takes into account NPV (Net Present Value), the sum of all cash inflows minus the sum of all cash outflows, basically profit.
      • Margin Loan.
        • Borrowing against your holdings. Same as what you see on brokerages. Asset-backed loan, but with securities.
      • CDS.
        • Credit Default Swap. A lender lends to a borrower. The lender assumes risk with this, of course, if the borrow doesn’t pay and defaults. So a third party enters, the “investor”. They assess the risk and create a CDS, priced at what they underwrote the risk for. The investor then sells the CDS to the lender. This offsets the risk the lender assumed by providing the loan. It’s a hedge. If the borrower defaults, the investor pays the lender. Kinda like insurance for a loan, for the lender.
      • Loss Severity.
        • Just the value of a loss.
        • Often used to compare the “loss severity” to the “covered amount” in insurance claims. The loss severity is the total damage, and the covered amount is how much the policy pays you. The difference is what you cover out of pocket.
        • In lending, the loss severity is the amount of principal+interest remaining unpaid when a borrower defaults. Related: UPB = Unpaid Principal Balance. Called LSR (loss severity rate) or LGD (loss given default). The complete is 1-LSR, which is called the recovery rate; the amount of the loan that the lender actually received before default.