- Charlie Meach: https://en.wikipedia.org/wiki/Charles_L._Meach.
- Afterhours trading (these hours are for NYSE):
- Premarket: 7-930 (0400-0630 PT) (2.5hrs)
- Standard: 930-4 (0630-1300 PT) (6.5hrs)
- Postmarket: 4-8 (1300-1700 PT) (4hrs)
- Afterhours (both post and pre) are more volatile. You will see more fluctuation between price @order and price @execution.
- Smoked 10 lbs beef ribs and 10lbs pork ribs for parents and aunts/uncles.
- Added glaze column to the log
- AMZN dropped 1.4% bc Nike separated.
- ASGI (rather than WSGI) is Asynchronous Server Gateway Interface.
Thursday, November 14, 2019
Wednesday, November 13, 2019
- AAPL, MSFT, GOOG, AMZN all have market caps around $1trillion.
- Supercontest banner. You can try to emulate the background-size/position/repeat with divs and imgs, but it's annoying. Usually easier to just merge the images/gifs with a separate tool (I used Kapwing today). This tech is still terrible for how advanced frontend dev has become.
- Committed new lines. Submitted picks.
- There are some interesting balk rules.
- You can't throw to an unoccupied base.
- You can't fake the throw to 1st, you have to actually throw it (just like toward home).
- You can't touch the rubber without the ball.
- If you drop the ball, it's a balk.
- The commit angle for your step is an even 45deg between home/first.
- Parents in town. Walked up to Manhattan Beach.
- DIS doing well.
- Over 10 million signups since launch yesterday.
- My 10k was up $500 by 11am. Things looking much brighter after the launch bugs yesterday.
- Up 7% at close. Continued another 1% in the first hour of afterhours.
Tuesday, November 12, 2019
- Ariel Halwani had the rock, nick diaz, stipe, francis ngannou, rose, woodley, and maia on the podcast. Wow.
- Something was wrong with nick diaz.
- Bought 69 shares of DIS in anticipation of Disney+ launch this week. Placed 136.75, executed 138.08. I'll exit fairly soon, once initial surges quell.
- Would have been positioned about $1.50 (10% less) had my damn transfer cleared a few hours earlier. It took a week in total.
- They had tech issues due to higher-than-anticipated traffic. This has both good and bad indication; good for desire/popularity, bad for ux/reputation. Overall, probably bad, or at least it will delay the rise. I'll hold.
- Went 1-1 in ff and 2.5/5 in sbsc. Exactly 50/50 week.
- Waiver moves: 3 espn 3 yahoo.
- Fresh order.
- Started The Usual Suspects but turned it off after 10 minutes. Was slow and old.
- Not really impressed with the farnam street publication either.
- Tradebot.
- Read an interesting article about how the same strategy will perform better on international stocks than US stocks, because our markets are more competitive with the biggest players.
- Each market has a unique way to win. They're not the same. This is because each market has big player(s) who focus specifically on it, and will inevitably sway with their larger weight.
- A black swan event is just an extremely rare occurrence.
- Going to just do long positions for now, due to both time and the impending decline. I'll transition to daytrading using more complex models at a later time.
- 43 companies on NYSE with a market cap >200B. 1189 with >10B.
- Wrote my current final draft. Finds all symbols >=1B market cap, with stock price <=$100, then calculates their slope over the past year via simple linear regression. It then reports the top 20, ranked.
- List this time: https://gitlab.com/bmahlstedt-group/tradebot/blob/master/2019_11_12_stocks_by_perf.txt.
- I can run this every quarter (or whatever frequency I want) and hold for a year (or whatever period) then sell.
- Closed https://gitlab.com/bmahlstedt-group/tradebot/issues/4.
- Made config, infra, and tradebot repos public. Only the services need be private.
- Ravens - Pats - Niners for power rankings: https://www.cbssports.com/nfl/powerrankings/.
- Supercontest.
- Removed the submit button. Clicking a team now selects/deselects that pick and sends it immediately to the server. https://gitlab.com/bmahlstedt-group/supercontest/issues/137.
- Holzhauer won tonight, so in the finals of the tournament of champions it's going to be him vs the woman who beat him in the regular season vs whoever wins tomorrow. Chance for redemption!
- Set up verizon wifi calling on my phone. Had to put an address in for emergency services.
Monday, November 11, 2019
- New season of rick and morty started last night.
- Popeyes chicken sandwich!
- Art's bday yesterday.
- The blue planet and planet earth shows are awesome.
- Supercontest.
- I haven't really designed the site for accessibility as much as I could have. Wonder if there are any colorblind folks who are having issue with the tables.
- Added late picks for jeremy.
- Played with the idea for user pick similarity, but ultimately didn't implement: https://gitlab.com/bmahlstedt-group/supercontest/issues/136.
- Finished mindhunter season 2.
- Unsub = unknown subject.
- Niners Seahawks MNF.
- Tradebot.
- Ran yahoo-ticker-downloader (python module) to get a csv of ALL symbols. Ran for about an hour before cancelling, it was nowhere near done. It literally just brute forces the yahoo finance rest api for every permutation of characters.
- There are 11 stock sectors: Energy, Basic Materials, Industrials, Consumer Discretionary, Consumer Staples, Healthcare, Financial, Information Technology, Communications, Utilities, Real Estate.
- Created an account with nasdaq, looked through a bit of their data.
- Rendered the rib/belly fat down for turkey injections.
- Cleaned the house, including window washing and vacuuming.
Sunday, November 10, 2019
- Supercontest.
- Made the frontend ranking only consider completed games, not in-progress or unstarted. The sorting still considers completed and in-progress, but not unstarted. Remember, the backend db scores points for all matchups, even unstarted ones, so that the client can do with the information at will.
- Derek is in LA, went up to Santa Monica.
- Bezos looking to own NFL team: https://www.cbssports.com/g00/nfl/news/amazon-founder-jeff-bezos-interested-in-owning-nfl-team-has-strong-support-among-current-owners.
- After ribs (for family visit) and turkey (for friendsgiving), I'm going to make bacon.
- Just cure a pork belly with your sodium nitrate (same as when I made pastrami beef ribs), then smoke and slice.
- I like Gitlab's transparency about competition: https://about.gitlab.com/blog/2019/11/01/devops-tool-landscape.
- Kubernetes means pilot in Greek. It was originally called Borg when it started at Google, simply a tool to manage many many distributed servers.
- A cluster has nodes (machines, physical or virtual). A node has pods (containers).
Saturday, November 9, 2019
- Merged identical google contacts. Added Savanna/Charlie/Grayson bdays to google calendar.
- Interesting, an article debunking fasted cardio: https://medium.com/@straighthealth/does-fasted-cardio-work-48fce94c2d75.
- Saw Doctor Sleep last night. Was great.
- Spaced repetition has been proven, time and time again, to be the best way to retain information and improve memory. I need to start re-reading my blog again.
- Self-hosting.
- The DO droplet is sitting comfortable at 75% mem and 70% disk.
- It's 1 shitty (v)cpu, 1GB mem, and 25GB ssd. $5/mo.
- Under any duress, this cloud server falls over and I have to restart my containers.
- For next year, as the app scales, I'll self-host. I can set up a permanent rig for <$500 with 10x the performance. It's $5/mo, or $60/yr, so if it lasts the better part of a decade I've broken even financially for a much better machine.
- Will require me to use the registrar (godaddy) for DNS, rather than DO.
- I can bring my bmahlstedt.com containers back up with the extra performance room.
- Will have to implement another monitoring solution. Basic metrics (cpu/mem/disk) and email notification. Sensu, another; there are a million.
- I can also get much better internet at my next house. No cable, no phone - just fast internet.
- Created the ticket: https://gitlab.com/bmahlstedt-group/supercontest/issues/135.
- Jcriss jits in long beach. UFC in moscow.
- Instagram gonna start hiding likes. Good. Hide followers and everything else too. Influencers need not be given a notorious platform to contribute nothing.
- Ironic that Adam Mosseri drops this news the same week as the Logan Paul and KSI 2 fight, two humans who have become famous for said trivial superficiality.
- I really should open a restaurant:

- Going to rerender the bacon and rib fat for injections on the upcoming turkeys. There's probably 16 ounces.
- Early UFC days were insane. No gloves, no weight classes, a guy wearing a gi, blows to the back of the head, hair pulling, terrible strategy, towel throwing, terrible commentary, stomping. Incredible.
Friday, November 8, 2019
- Renaissance Technologies is the most successful quant fund.
- https://www.renfund.com.
- They're ~300 employees, and are based in NY.
- Their medallion fund has the best record in investing history. It's based off Baum's models and has gotten 66% gross annualized return (39% after fees) for 30 years (88-18).
- They are a collection of scientists, not wall street buffs. They have PhDs in math/cs, not economics/finance.
- Disney jumped 5% from the earnings report, and will still have the disney+ launch next week.
- Chiro.
- Finished mindhunter season 1, starting 2.
- Real: ed kemper (the coed killer), montie rissell (the guy who wanted Big Red), benjamin barnwright (the fiance), jerry brudos (shoes), richard speck (ripe c*nts), david berkowitz (son of sam), dennis rader (btk killer, adt serviceman).
- Not real: dwight taylor (the grandma/dog killer), roger wade (principal, tickler).
- Made 5lbs maple peanut pecan butter. Tried without roasting. Definitely better roasted (and blends faster). Gonna try macademia, hazelnut, and pistachio next (individually). They're all about $1/oz, which means a batch is ~$30. Peanuts are the cheapest, then tier 2 is pecans/cashews/etc. These nuts are tier 3, most expensive.
- Hazelnuts = Filberts. Nutella is made from these.
- Ordered 2lbs of each. $100.
- Smoked 20lbs ribs. That's 43 sessions on this smoker, and it's been almost exactly a year. Almost once per week!
- Made new batch of 12 shake jars.
Thursday, November 7, 2019
- Unsubscribed from all bloomberg publications (I had maybe ~4 in daily digest). I find them redundant, half the good content is hidden behind a paywall, it's verbosely delivered in paragraphs instead of bullets, and it focuses more on politics / international affairs than tech / business / software / finance.
- Supercontest. Made the leaderboard sort the EXACT same as the all-picks, except summed over all weeks and only for completed games. Before, it didn't do the same "1 cover over 2 pushes" etc.
- Trimmed and brined 2 racks of pork spares (10lbs) and 2 racks of beef short (10lbs) for the smoker tomorrow.
- Today's music: snow patrol.
- Bud light launching their seltzer next year:
- Doctor Sleep comes out tonight, Stephen King's sequel to The Shining. It follows the son, Danny Torrance, who escaped the Overlook.
- Between IT, Castle Rock, and now this - I love how much mainstream attention King is getting. Been a fan for many years.
- datetime.fromtimestamp() should always be passed a timezone. Integers are naive, and must be made timezone-aware, otherwise it will have to assume. Some assume UTC, some assume the system-locale tz, you can never be sure. Be explicit instead.
- The UFC fight this saturday is in Russia. Zabit and Greg Hardy on the card.
- Logan Paul vs KSI 2 is also this saturday. Ugh.
- Resolved the 24 payment situation; it had reported confirmation but then rejected it weeks later. Paid for the past 2 months, ensured it was still on autopay with the card swapover. Dude at the front was nice, Joe.
- I'm liking the recent food changes:
- Oats and water raw instead of oat milk in morning shake.
- +Banana +Seeds for the morning for a more complete breakfast.
- Veggies raw in smoothie, rather than juiced. No waste.
- No more lab powders: whey, glutamine, etc. All natural: cinnamon, maca, etc.
- Remember it's much easier in python3: super().__init__()
- Tradebot.
- Finished the entire framework. Now I just need to run tests to optimize. This step is crucial. Selection is easy, but overfitting is also easy.
- Another +1 for the backtrader package. Full-featured, and very well documented.
- You can add analyzers, including final sharpe ratio reports.
- Example output from my quick sma strategy on msft for ytd:

- Wow. Look how many indicators come built-in: https://www.backtrader.com/docu/indautoref/.
- RSI = relative strength index.
- Keep in mind that every single ticker would optimize around a different strategy with different parameters. You can lump markets together with decent accuracy, but things will even then change along a chronological axis. There's no perfect approach for all situations for all time.
Wednesday, November 6, 2019
- Did some searching for spicy food challenges. Almost all are way north. None in south bay really.
- Supercontest.
- Updated the text in the payment section of the rules.
- Made the saturday email reminder 5pm, not 8pm.
- New banner. Standard wednesday deployment.
- Renamed all the files in the banner archive to include the buyer.
- New rule - you can pay incrementing $5 to take down the previous banner and put yours instead?
- Eg: Person 1 buys standard $5 banner. Person 2 hates it and pays $10 for their own banner. Person 1 gets their $5 returned. Person 3 hates them all and pays $15 for a third banner. Person 2 gets their $10 returned.
- Committed lines, submitted picks.
- Made the rankings grouped properly: https://gitlab.com/bmahlstedt-group/supercontest/issues/134.
- Abstracted the ranking cell color to a common layer, and added it back to all-picks (now that ranks are tie-grouped accurately).
- Final FF moves, got everybody except the defenses in both leagues (7/9 successful waivers).
- Upgraded the citi account in mint.
- Seaborn is a wrapper around matplotlib for visualization in python: https://seaborn.pydata.org/.
- So many people took advantage of the robinhood glitch. This is bad. All the SEC and public attention...wouldn't be surprised if they get temporarily disabled for an audit, or shut down completely as malpractice, or even long-term bankrupted due to poor reputation.
- I'd have to rewrite all my logic around another broker's API. Woohoo.
- I'd also start having to pay commission again. Woohoo.
- The glitch itself:
- With gold, robinhood gives you some margin based on the cash in your account.
- If you buy shares, and then sell them as options, robinhood would double count both in your total value, so it would allocate you more margin. That's the bug.
- You could repeat this until you had infinite money. People were posting screenshots of >1M positions, starting with 1k.
- Went to Clippers/Bucks with Harner.
- Ta-eem grill on Melrose. Mediterranean kosher. Delicious.
Tuesday, November 5, 2019
- Tradebot.
- Read a bit more about backtrader, both for general strategies and specific backtrader syntax.
- Robin-stocks has a ton of useful information. http://www.robin-stocks.com/en/latest/functions.html#getting-stock-information. Basically everything that's available about your account, holdings, and the entire public market.
- Added the full capability to transact remotely. Can login, view all account data, buy, sell, market, limit, etc. Closed the ticket. https://gitlab.com/bmahlstedt-group/tradebot/issues/2.
- Wrote the backtester components.
- Starting money.
- Quantity to buy.
- How and when to buy.
- How and when to sell.
- Commission.
- Online ingestion of yahoo finance data, current and historical.
- Reporting of portfolio performance: gross profit and % change.
- The buy/sell triggers right now are very simple, using basic analytics on the past couple days' closing price. I'm off to the indicators section next, using SMA and then more complicated models.
- A single AA battery has 2000-3000 mAh, about the same as a phone battery.
- Lost both FF games and got 1.5 in sbsc.
- The columns in the user table for email prefs were non-nullable but had no defaults, so registration was broken.
- Got a sentry error. https://sentry.io/organizations/bmahlstedt-org/issues/1315113051/?project=1773879&referrer=alert_email.
- Fixed with a sqlalchemy (clientside) default of True for all. Didn't want a server default to migrate/upgrade the tables for something so simple.
- FF moves. 4 for ESPN, 5 for Yahoo. Lotta bye weeks.
- Under armour dropped 18%, under investigation for fluffing sales numbers.
- Muse again today. Lots to go through. Solid.
- Gonna try vegan protein powder again, from peas and brown rice instead of whey isolates.
- Bought Orgain. $12/lb, similar to my standard Optimum Nutrition bin.
- More carbs (all fiber). Slightly higher fat (couple grams). Slighly lower protein (couple grams).
- Bought sesame and chia seeds.
- Apple donated 2.5B (FB and Google made similar smaller donations) to make bay area housing less insane.
- Edge is the new Microsoft browser (RIP Explorer), and it launches Jan 15. It's built off of Chromium, Google open-source Chrome. Weird.
- Transferred 10k from BOA to Robinhood for the tradebot to experiment with.
- Other options besides GTC: https://www.investopedia.com/terms/t/timeinforce.asp.
Monday, November 4, 2019
- McDonald's fired its CEO because of a relationship with an employee. Yay accountability! I've seen the exact opposite in my career.
- TikTok is owned by a Chinese company, and is undergoing a security audit because of that implication.
- New season of silicon valley started last week.
- Lewy Bodies are deposits of the alpha-synuclein protein on the brain, causing erratic dementia.
- Jeopardy tournament of champions is back, including Holzhauer.
- Quick refresher on numpy. Matrix and linear algebra functionality.
- Quick refresher on pandas. Series is 1d. Dataframe can have more dimensions. Can group, sort, reshape, statistics, all the standards you'd expect.
- Sharpe Ratio is the metric for portfolio success, adjusted for risk.
- (return - risk_free_rate) / standard deviation of excess return
- Return in excess of risk, averaged per unit of risk.
- The higher the Sharpe Ratio, the better.
- Lol stefon diggs on family feud: https://www.youtube.com/watch?v=jFJaJTXvWl0.
- Tradebot:
- Found a fantastic library for backtesting my algotrading strategies: https://www.backtrader.com/docu/quickstart/quickstart/.
- Added a col for average to the dataframe returned by get_data. Used the OHLC mean (just the avg of open, high, low, close). You can also use adjclose, or ignore open. Both are common.
- Rewrote my info fetcher to define urls with py3 fstrings.
- Linear regression with scikit-learn.
- Added the ability to plot the history with matplotlib. sudo apt install python3-tk
- Closed first ticket, as data fetching is basically complete: https://gitlab.com/bmahlstedt-group/tradebot/issues/1.
- Created new ticket for the backtesting, now that I've formulated a handful of strategies: https://gitlab.com/bmahlstedt-group/tradebot/issues/4.
- Business school applications are reducing in quantity. Good. STEM needs more.
- Ordinals, like datetime.toordinal, are integers that indicate the number of days since a specific epoch. They represent dates like YYYY-MM-DD in sortable fashion, or for regression, or for whatever else. They can be relative to the proleptic julian calendar, or proleptic gregorian, or others.
- Unix timestamps are the number of seconds that have elapsed since 1970-01-01 (midnight, the beginning of that day). Every ~31.5 million seconds is a year, so we're at about 1.5 billion.
- Listened to muse most of today.
- A cat ran on the field during the MNF game and delayed it for a couple minutes!
- P/E is great for comparing companies apples-apples, because it's normalized by share price. market value per share / earnings per share (eps). It can go negative, although this will usually just be reported as NA (losses, usually). Higher P/E is obviously more favorable for the outlook of the company.
Sunday, November 3, 2019
- UFC 244, good all around. Prelims had some great finishes. Crazy to have the BMF title fight end with doctor stoppage - he might catch some flak for that. I like masvidal, he's growing on me.
- Canelo fight, was losing but then got the knockout in the 11th.
- Love a good visual comparison between NYC and SF: https://medium.com/conquering-corporate-america/the-difference-between-living-in-new-york-and-san-francisco-3e8ae58832a5.
- Supercontest.
- DST ended. The app handled it well.
- Fixed the sort on pick percentage to properly count failures.
- The logo background-image was conflicting with the css background linear-gradient, so I have the color on the td and the team helmet on a div within the td.
- I really enjoyed the comparisons of amazon (sales %) vs kayak (pay per query), as well as orbitz (sell natively) vs kayak (redirect to sell), when doing my pharmaceutical modeling. Here's a similar comparison between Ben & Jerry's (slow) vs Amazon (fast): https://www.joelonsoftware.com/2000/05/12/strategy-letter-i-ben-and-jerrys-vs-amazon/.
- Watson had some incredible saves in his game against the jaguars this morning.
- The NFL schedule was nicely spread out this week: 1 thurs, 1 sun early, 6 sun morning, 4 sun afternoon, 1, sun night, 1 mon.
Saturday, November 2, 2019
- Ufc data: https://gist.github.com/martj42/695f9a976b7beaa11617840467ac0352.

- Remember to run a bash command from ipython, just start the line with an exclamation mark.
- Tradebot.
- Added all reqs.
- Got live prices with yahoo_fin, at first. It's an extremely simple package, basically just fetching data from yahoo.
- It was only about 400 lines, and was a poorly written package (didn't even specify requirements), so I gutted and rewrote it myself. Condensed to about 100 lines. Delinted.
- Created a ticket to adjust risk based on ISM PMI later: https://gitlab.com/bmahlstedt-group/tradebot/issues/3.
- EPS = earnings per share.
- TTM= trailing 12 months.
- YOY = year over year.
- MRQ = most recent quarter.
- EBITDA = earnings before interest, tax, depreciation, and amortization.
- PEG = price/earnings-to-growth.
- Data fetch capability is complete.
- I now have a few decisions to make, as to the strategy/stance the bot uses to trade:
- Get the day's biggest losers, run regression/ML on the historical data (how far back?) for all 100 to see who is trending positive, and buy at that low. Get the day's biggest winners, and sell any you're holding at that high.
- Use analyst/earnings/stats. Decide which ones, do an instantaneous fetch, and trade based on those numbers.
Friday, November 1, 2019
- I've tried the following crutch sauces for the final hour or two, all under 250 or so to ensure any sugar content doesn't scorch:
- Honey, agave nectar, maple syrup, brown sugar (dry), bbq sauce, mustard, hot sauce.
- Honey is champ, by my own (known) preference, as well as others (blind).
- Mix it with a little more of the dry rub. Delicious.
- All of the avengers dudes (robert downey jr, ryan reynolds, paul rudd,etc) have a fantasy league for charity: https://fantasy.espn.com/football/league?leagueId=48153503.
- Sigur Ros most of today. Good background.
- Ordered some more large candles, I ran out of big coffee table / non-bedroom ones. About $1/oz is a decent average.
- Services have much better product margins than products. I love my industry.
- Disney+ launches this month. I'm very curious about that landscape, and how Netflix/HBO will perform in reaction.
- GitHub renewed its ICE contract and employees are not happy: https://www.latimes.com/business/technology/story/2019-10-31/github-ice-contract-defense. I'm not anti-microsoft, but this is good news for GitLab.
- Always like a good "useful command line tools" article, especially with screenshots: https://www.wezm.net/technical/2019/10/useful-command-line-tools.
- The supercontest app should withstand the end of daylight savings time without any issues. Everything is synced, the machines are configured to the correct timezones, and nothing is hardcoded - it's all referenced and localized in realtime. Lockdown should occur as usual, all the timestamp rerenderings should convert properly, etc.
- Sidenote - part of the reason it occurs at 2am instead of 1am (in general) is so that you avoid any day shift. If at 1am it jumped backed to midnight, there might be confusion.
- Also removed the "check in paid league" for the saturday pick reminder. It does it based on subscription now.
- Played around a little bit with 23andMe.
- Matt Stonie's halloween video yesterday was 122 pieces of candy in 30 minutes: https://www.youtube.com/watch?v=GiN8ZPMUVXY.
- This is 895g, or 2 pounds, of straight sugar.
- New batch of protein bars. Homemade peanut butter (much higher ratio of this than usual), protein powder, oats, oat milk, dates, agave nectar.
- Started mindhunter.
- Niners and Patriots 8-0, Saints and Packers 7-1, Vikings and Seahawks 6-2.
- These are the cardinal divisions:

- The NFC mostly makes sense, with the exception of the cowboys in the east.
- The AFC would mostly make sense if the colts and dolphins switched switch south/east.
- UFC245 press conference. Can't wait. 3 titles on the line. Holloway vs Volkanovski, Usman vs Covington, and Nunes vs Germaine de Randamie.
- The Rock had an announcement at the press conference. Given all the hype, I had thought it was gonna be "I'm gonna fight brock lesnar" or "I'm partnering with the UFC to have fighters on my ninja warrior show" or something meaty. It was just that his media company, Seven Bucks Productions, is gong to be making a movie about Mark Kerr (an older UFC fighter from the Mark Coleman era), and he'll be playing him.
- Elon said he's "Going offline" on Twitter.
- True:

- Worked a little bit on the tradebot.
Thursday, October 31, 2019
- Curry broke his hand last night. This is not gonna be a good year for us. Giannis missed two freethrows back to back also.
- Smoked ribs, both pork spare and beef short. Timing worked out well.
- Replenished foil, gloves, peppercorns, paprika.
- Starbucks rose 7% after all the nitro brew drinks.
- Some person with whatacan@yahoo.com created an account named Burro Ito and submitted picks for the first time this week. I assume it was one of the old players, not a completely random person. The more important note: the app handled it perfectly! They show up on the leaderboard with 0-0-0, the pick percentages are good without divide-by-zero errors, everything is smooth.
- Made the picks route not do any calculation or queries or commit scores or anything if picks were open. Just return.
- Consolidated the friendsgiving gsheet and sent it out. We're now in our 5th year, 5th signup sheet.
Wednesday, October 30, 2019
- SOC 2 is the standard for compliance criteria in data privacy. Third-party vendors and data organizations can be audited with this procedure to make sure they're not doing anything shady with the company's data. https://www.imperva.com/learn/data-security/soc-2-compliance/.
- The Cartman escape rooms is fairly new, and only ~60 teams had tried it so far. Of the 60, only 4 had escaped, and we had the fastest time of the 4!
- Damn, lockheed got a $35B order for 478 F35s.
- Fresh order. They're doing as close as 2hr delivery now.
- More terrible recorder covers. Dead.
- Supercontest.
- Made the min-width styles !important. You don't have to do the same for max-width, those are usually fluid.
- Added arrow back to lb. Made name cols wider. Widened all logo cols.
- Put a useful diverter so that the app doesn't send any emails in dev mode. This is at the very end of the chain (within supercontest.util.email.send_mail) so that you cover as much of the sequence as possible before shorting.
- Nothing is shown on the all-picks page until lockdown now.
- Completely rewrote results, passing the full data through now (covers/pushes/noncovers, for finished/inprogress/unstarted). Now the lb can show each user's record explicitly.
- The sort is updated now: in progress points, completed points, etc.
- Added faded color to the all-picks view as well (instead of header row).
- This was a pretty big update, but mostly backend. Some cool stuff for user.
- Deployed. https://gitlab.com/bmahlstedt-group/supercontest/issues/133.
- Committed lines, checked new emailer (with unsubscribe), submitted my picks.
- Remember, pure functions don't change any global state and aren't affected by any global state. They always have the same return/effect (for the same inputs).
- Lol:

- I always thought structures like NamedTuple or OrderedDict were weird collections designed for lazy programmers. If you need keys, use a dict. If you need order, use an iterable. If you need both, have one of each, not some frankenstein of both. I often keep my data in a dict and then have the sorted results as a separate definition. You're sacrificing performance by doing anything else.
- Sigur Ros for music today.
- Tried a new matcha drink today. 1000x better than the black coffee and matcha.
- Matcha, oat milk, agave, ice, blended.
- World series game 7. Great game. The nationals (a wild card!) won.
- Spotify should have a setting to filter out all the bs. Don't show me live albums, commentary albums, eps with 2 songs, acoustic albums, deluxe albums with weird filler tracks, etc. Just show me their 4 studio albums. Thanks.
- Zuckerberg has been taking a lot of heat for non fact-checking political content on fb (ads, posts, etc), which is admittedly something that very few other platforms do anyway. Twitter then came out and said it will ban all political advertising, starting on Nov 22. SHOTS.
Tuesday, October 29, 2019
- Virgin Galactic IPOed yesterday, high 12.09 low 10.50.
- Alphabet is trying to buy fitbit. Heartrate targeted ads, woohoo!
- Old Five for Fighting albums. Good memories.
- Cartman escape room!
- FF waivers. 1 for espn, 2 for yahoo.
- Considered putting the stock brake lever back on the ducati instead of the red shorty, which might be aggravating my elbow. Whyyyyyyy are hydraulic systems still used. Electronics, electronics, electronics.
- Paid rent. Maid manual citi payment since autopay doesn't activate for first billing cycle.
- Supercontest.
- Moved all the clientside pick verification to functions. Cleaned up the matchups.js quite a bit.
- Added helmets to the rollup.
- Created space between the rollup and the full picks column.
- Added right arrows for the header that shows pick counts and leaguewide percentages.
- Added percentage sign to all percentages.
- Added banner for gjm.
- Vitamix.
- Oat milk. Didn't strain it. It blends it well enough to drink, and then you can just throw out the bottom sediment when finished with the gallon. Healthier, easier, and allows you to fully mix things like dates/bananas.
- Veggie preworkout. Don't need the juicer anymore! And you get the full nutrition. No pulp mess. Higher yield. A little chunky, but I'll mess with ratios.
- Amazon fresh is now free with prime. Wow.
- Matcha arrived today. Good in the smoothies/shake. Didn't really like it straight in black coffee. Needs to be a latte or something creamy with milk.
- Put the search navbar and quick edit buttons back on my blog. Blogging about the blog. Meta.
- Bought 80 lbs of meat and rode home with it on the bike, which was crazy. 40lbs of pork spare ribs and 40lbs of beef short ribs. $210.
- World series game 6.
- Cartman escape room!
Monday, October 28, 2019
- Matcha is essentially the same green tea leaves, but instead of steeping them in hot water, they're stone-ground into a fine powder. I don't need the highest grade, since I use it for smoothies/shakes mostly.
- Ceremonial grade is for mixing with water and drinking as tea (up to $20/oz).
- Culinary grade is for stuff like smoothies, lattes, baking, etc (down to $1/oz).
- Nike CEO swap.
- 12 hours of sleep last night, uninterrupted. Yessir.
- HSBC is the bank. Hulu is owned by Disney.
- The underscore is usually the object for lodash (hehe, nice) in js.
- Joe Rogan is 52. Theo Von and Chris D'Elia are 39.
- Don't just use regular spinners, there are so many cool ones out there: https://www.react-spinners.com/.
- Awesome website, timeanddate.com.
- Supercontest.
- Just Raj, Wes, and Phil haven't paid yet.
- Greg Matthews has this week's banner.
- Changed percentages to show the first decimal place, even if it's zero. This is more consistent. The pick cells are the exception, because 0.5 scores are much rarer, so we coerce whole nums to ints.
- Strongly increased the contrast for picked/nonpicked games, making both brighter.
- Switched from rgba, where it was ~30% and ~6%.
- Now it's hex, at 50% and ~7%.
- Changed unsubmitted picks from table-info blue to orange, to make it extremely obvious that you have not submitted them.
- Removed table-active class coloring for team cells on the matchups tab. Wasn't worth much, especially conflicting with the deliberate cell coloring of the pick process, and the table-hover of bootstrap's css. Left the js to change the cursor to a hand (pointer) tho.
- Reworked the legend. Made it color-white-color again. Added the all-picks vs your-picks difference back.
- Added a template, view, form, route, and model for email preferences. Rather than tangling it in flask_user and hijacking the edit_user_profile template, I built it into a new template/backend using wtforms and flask-wtf directly (also to get more experience with these).
- Note that while wtforms has some built-in model support out of the box, there's a full-fledged pkg for it: https://wtforms-alchemy.readthedocs.io.
- Function to return all emails for users with a specific pref.
- Consolidated all email subject/body/messaging into util/email, so that the text was easy to compare and keep consistent.
- Email options are now available to the user:
- To be notified when picks open.
- To be notified when picks are about to close and they haven't picked yet.
- Colors.
- Hex.
- Hex is just like rgb, with a hex num corresponding to each color channel in red, green and blue. 0 is none, f is full, as you'd expect from hex. So 00f is fully blue. #ff0 is yellow (red and green).
- It's easy to remember from this: 000, with no color at all, is black. fff, the combination of all colors, is white.
- While you can get many colors with 3-digit hex, you can get MUCH more with 6 digit hex (which is the standard nowadays). Each of the standard 3-digit hex colors gets 16 more levels of resolution before moving on to the next one (obviously).
- 3 digit hex = 3 digits of 2^4 = 3 digits of 16 = rgb(R, G, B) where each value is a number from 0-15.
- 6 digit hex = rgb() where each digit is 0-255 (16*16, or 2^8).
- Alpha.
- The A in rgba stands for alpha. The alpha channel is what determines opacity.
- This exists for hex colors too, but only recently with CSS4. The first 6 digits are the color, and the last two digits are for alpha. Similar to rgba: 00 is fully transparent and ff is fully opaque.
- Bootstrap.
- Color ref:
- primary:
#007bff secondary: #6c757d success :#28a745 info: #17a2b8 - warning:
#ffc107 danger :#dc3545 light: #f8f9fa dark :#343a40 - The bg-<> colors are these, with full opacity. The table-<> are the same colors, but with reduced opacity (alpha ~33%).
- Raw beef/pork meat is pink because of myoglobin. When myoglobin is heated up (cooked), it turns brown. When you burn wood (and charcoal, which is already-burnt wood), it produces nitrogen dioxide. This reacts with the myoglobin as it penetrates the meat, creating a stable molecule that doesn't turn brown as it increases temperature. Curing salt (sodium nitrate) does the same thing.
- The pink doesn't change any flavor itself, it just indicates that meat has been cooked slowly enough to not rise in temp before the wood smoke has penetrated a bit, which means you're going to get smoke flavor inside the meat.
Sunday, October 27, 2019
- Supercontest.
- Email reminder worked well last night.
- Submitted about 5 sets of late picks.
- Tie coloring on all-picks was working but not on your-picks. It was comparing team name to coverer correctly, but then team name to PUSH instead of coverer to PUSH.
- Reduced the unpick opacity from 0.3 to 0.2.
- All the new coloring changes worked.
- Did a little research on the flask-user form customization for email preferences.
- Started implementing https://gitlab.com/bmahlstedt-group/supercontest/issues/130.
- Lawrence's bday last night on la tuna was great.
- Venice all day, smoking ribs with Harner's neighbor.
- 1-1 in ff. 1-4 in sbsc.
Saturday, October 26, 2019
- Git repo with the history (amendments) of the constitution: https://github.com/JesseKPhillips/USA-Constitution.
- Remember that Instagram is mostly python, and is one of the biggest scale python implementations across the globe.
- {{ form.hidden_tag() }} tells flask-wtf to use csrf.
- When flask-user templates iterate over the form variable that's made available to jinja, it's just a class passed through the route. The class is just a child of flask_wtf.FlaskForm, and it lists the fields and information about them. You can also define validations here. Example: https://github.com/lingthio/Flask-User/blob/master/flask_user/forms.py#L139.
- The robinhood sell orders completed and the funds settled, so I initiated the withdrawal to boa today.
- Supercontest.
- Updating some basic flask-user structure. Removed the bootstrap_is_hidden_field.
- Changed to proper colgroups for styling whole cols instead of each row, for the min-width in the legends and the matchup borders on all-picks.
- Played with linear and radial gradients for cell coloring. Ultimately went with diagonal stripes for all in-progress games.
- Games that were not picked still have their results show, just at 30% opacity.
- Removed the table stripes. We're doing so much with background color already. This added unwanted contrast.
- Because of bootstrap's table-responsive, min and max width won't work as desired if set on colgroups, even with !important. You have to set it on the cells directly themselves.
- There are many places where some of your intended behavior fights with styles that bootstrap is setting underneath the classes you use. Overall, still very worth it.
- Demian Maia choked out Askren.
Subscribe to:
Posts (Atom)




