• googlefinance used to be a maintained python wrapper for realtime stock data, but no longer. Yahoo-finance used to be 15min delayed, so it was a lesser option, but now it appears that it offers live prices and is maintained. I’ll use yahoo-fin for my bot.
    • Joe silva was the longtime matchmaker for the ufc, but now the role is filled by Sean Shelby and Mick Maynard. They’re the #2 decisionmakers after Dana.
    • Went to an IT-chapter2 themed haunted house last night to promo the upcoming movie. Was awesome.
    • Also saw Ready or Not, which was surprisingly good. I had no idea it was half comedy.
    • Chipotles, by definition, are just smoked jalepenos. I’ll try some with the pork butt tomorrow. They only need to be on for an hour or so.
    • Went to Smorgasburg for BBQ day. Finally had Moos. Was very good.
    • Andrew luck retired, shocking everyone.
    • My amazon visa was declined the past couple times. They didn’t have online support, so I called. They card had expired, and they had not sent a replacement. The agent said that was weird – the automated system should have done so already. Got a new one on the way.
    • Went to Smorgasburg for the first time. The “row” in the arts district is pretty nice, but the neighboring smorgasburg sector is kinda dumpy. It’s a distribution center that has worn forklifts and homeless clutter. They fill it with food stands every sunday and it becomes a nice little food court.
    • Moos was there. Overall grade: B+. Satisfied, overall. A- for the actual grade in pitmaster quality, but marked down for the ludicrous prices.
      • A. Brisket was very good. Got point only. burnt ends were tasty, good seasoning level. Very tender. Franklins remains untouched, but this comes in shortly after. Light on smoke flavor (i prefer heavy), but light on seasoning (i prefer light) and fantastic on moisture. This is better than my homemade brisket.
      • B-. Spare ribs. Decent. Was wrapped too early, because the bark formation was minimal. Not seasoned much at all. My ribs are better.
      • C+. Beef ribs. Ok. This cut is hard to screw up because it’s so fatty, so the flavor can’t really be missed, but the tenderness was average. Doesn’t come close to my homemade honey/maple short ribs. I would have given this a B+, but the price was asinine. They charge $56/lb for the regular beef ribs, and $60/lb for the pastrami beef ribs. Absolutely-fuggin-ridiculous. You can get raw short rib, from the plate, prime grade, for $7/lb from a decent distributor.
      • Went through MD/HN.
      • Read a bit of Vue’s docs, for comparison to React.
        • vue init webpack <myproj> is like create-react-app
        • Still use components, and they update as the underlying data changes, but you do so with classic html/css/js rather than jsx (html in js). You CAN combine these all into a single .vue file with meta js/css/html.
        • You get a few useful html classes like v-for v-if v-bind v-on which allow you to conditionally/customizably display data and/or events.
      • Next.js is the framework for full node/react apps (as opposed to create-react-app for simple single-page apps).
      • Daytrading is … just transacting throughout the day on small fluctuations, rather than long-term.
      • Shorting, You do this when you think something is overvalued or you expect it to drop.
        • Selling shares that you do not own with the obligation to buy them back later.
        • Say I short company A. I go to a broker and “sell” 10 shares for $100 each. I then have $1000 and the requirement to “buy” the shares back at some later date.
        • This is like the opposite of a regular transaction, where you buy and hope it increases.
        • If the price drops, as I expected, to something like $80 then when I “buy” all 10, I will have effectively bought at 80 and sold at 100, making a profit of $20 per share.
        • If the price INCREASES, then you are losing money. If it goes to $150, you’ve lost $50 on each share.
        • There is an important difference with this method. Shorting stocks can theoretically lose you an infinite amount of money. With a regular stock purchase, say for $30, you can only lose that $30. If you short a $30 stock, like an early google share, and it rises to $1000, you’ve lost $970, and will continue to lose more as the price increases.
      • Good documentary about dana white and the fertitta brothers: https://www.youtube.com/watch?v=tWMG1PsR21U. TUF saved the early days of the UFC!
        • Lot of respect for these guys building a product that THEY supported. Decisions were not solely made for finance or for business, they were made for the furtherment of the sport. These 3 men believed MMA should be up there with NFL/NBA/MLB/NHL, so they sole intent of the UFC was the exposure of that to the fans.
        • WME bought the UFC for 4 billion recently. They also own zuffa, miss universe, and more. WME stands for WIlliam Morris Endeavor, but the company is simply known as Endeavor now.
        • Here are the rankings for sports agencies from 2018: https://www.forbes.com/sports-agencies/list.
      • Bobbing a bike is making it naked and removing the passenger assemblies so it ends at the seat (like a bobtail). I won’t remove the tail of the bmw so that I can still use the saddlebags.
      • Breakfast at Hangar with the softball crew.
      • Change it to ceddit in the url to see the mod-removed comments, etc.
      • The reason you have to import react in seemingly unnecessary places is usually due to jsx.
      • Dockerfiles can have multiple RUN instructions to build the image, but only one CMD or ENTRYPOINT. This is what is run to start the image.
      • Docker rework for bmahlstedt.com.
        • Standardized the docker compose file with separate services (and dockerfiles, where necessary) for dev and prod.
        • Got it proxied by the nginx container, with routing by domain), and certified by the letsencrypt container (super simple with current umbrella docker-compose infra).
        • The frontend in production is actually pretty easy. You just run npm build in an intermediate container then point nginx at the static files in a second container (the docker name for this is multistage build). The output of ./build/ goes into /usr/share/nginx/html.
          • Remember, the output of this build looks hardly like the source js you wrote. It bundles and minifies quite a bit for the optimized production build.
          • Another kinda weird thing – you still use jwilder/nginx-proxy to route the initial requests to the proper domain. This goes to a flask app with uwsgi on the supercontest app, but for bmahlstedt.com, it goes from the nginx reverse proxy container to another nginx container serving the npm build output. This is not superfluous, something needs to serve the static files. There’s another container running pm2/node for the backend, obviously – this just makes more sense because it’s nginx->pm2 instead of nginx->nginx.
        • Instead of starting the app with `node` I start it with `pm2` the node process manager. This allows you to start/stop/monitor and more.
        • The only increase in complexity is because of react-router, which you have to make dynamic. To do this, you simply overwrite the default nginx.conf to include root and index.
        • The other
        • Deployed to production. Closed ticket #9.
      • Cool CDN to get SVGs for common brands: https://github.com/simple-icons/simple-icons.
            • Last night at midnight was my 1 billion second birthday! Legitimately more excited than my regular birthdays. This happens once in a lifetime. Went and saw a rooftop bar showing of the big lebowski.
            • Digital ocean now supports managed mysql and redis databases. This is convenient (although I do all the management myself).
            • Finished the rusty lake / cube escape series. Absolutely loved them. Intriguing story, macabre, good difficulty balance.
            • Lactose intolerance can be beaten: https://elemental.medium.com/can-you-make-a-lactose-intolerance-disappear-de4f4948d8d. The human body is wonderfully adaptive. The more dairy you consume, the more tolerant you become.
            • You already knew about this, but remember that flamescope is the name for netflix’ graphical perf tool: https://medium.com/netflix-techblog/netflix-flamescope-a57ca19d47bb.
            • Making almond milk is the same process as oat milk (blend, strain), but you can optionally do any of the following beforehand: soak, roast, peel. You can skip any of those, you just won’t get as much flavor out.
            • Removed over 20 fairing pieces on the BMW. Looks so much better now:
            • Tallow and lard are basically the same, but tallow is from beef and lard is from pork. You simply render the fat (trimming away meat, blood, etc) low and slow and then cheesecloth filter it. While still liquid, you can pour into a pan and then cut into bars after it solidifies at room temp. Then you can use it for cooking, lotion, candles, etc.
            • There is a really cool set of escape room mobile games called the rusty lake series. This is the order to play: seasons, lake, arles, harvey’s box, case 23, mill, hotel, birthday, theatre, roots, cave, paradise, paradox. I’ve beaten 7 of the 13 so far, all without hints.
            • Remember LAMP = linux apache mysql php. It’s an oldschool stack.
            • Served papers to the ex for briley. Interesting process. Sent FL-100/110/120/140/142/150, filled out FL-115 as the server myself. Basically just disclosures of assets and then an agreement on how to divide.
              • Certified mail costs a few extra dollars and the courier ensures that the package is delivered to the recipient directly.
              • “Return Receipt” is when they mail you a slip immediately when the recipient acquires the package.
            • A gallon of whole milk blended together with 3-4 jars of peanut butter is ~20,000 calories.
            • You can create separate docker-compose files for dev vs prod, or you can create separate services within a single docker-compose file. I prefer the latter. Both require specific command line syntax anyway:
              • docker-compose -f docker-compose-prod.yml up
              • docker-compose up app-prod
            • NODE_ENV is an important environment variable. Express understands it automatically. It basically disables all caching and gives you more verbose logs.
            • You should create anonymous volumes for node_modules in docker containers running node apps, if you are also mounting your source dir, because otherwise it will overwrite.
            • Remember that the BUILD is all that knows about the dockerfile. You may have slight overlap between actions in the docker-compose and the actually dockerfile because of this. Examples:
              • Mounting the src directory vs COPY it over.
              • command: or CMD to start the app.
            • Docker recomposition.
              • Finished all dev containers for frontend/backend/database. Moving on to production next.
              • The full address to link containers like app <-> db should use the container NAME (your choice), not localhost or anything.
              • For some reason, mongoose’s NewUrlParser fails on mongodb://database:27017. Weird. Changed back to the (still default) old, deprecated one.
              • You can clean up renamed containers with docker-compose up –remove-orphans
              • The axios posts in the react frontend query the backend for blog posts and such. Previously, when everything was on one host, localhost was sufficient as an address here. I had to create a docker network and specify it for all containers that want to talk over it. https://medium.com/@xiaolishen/develop-in-docker-a-node-backend-and-a-react-front-end-talking-to-each-other-5c522156f634.
              • Bought and smoked a pork butt. Served with homemade corn tortillas.
              • Made new batch of cinnamon oat milk.
              • Transferred banana hibiscus kombucha to the fridge after second fermentation. Was tasty, but not as sweet as usual because it fermented for longer than usual due to vacation. Lots of bubbles.
              • Made new batch of pecan butter. This one was toasted (350F/5m), with touches of cinnamon, salt, and maple.
              • Paid outstanding bill from Dr. Levy.
              • Notes from the hawaiian imu:
                • You’re not smoking the meat, you’re heating up rocks and then using them as the single heat source while insulated.
                • Dig a pit. Wood on bottom. Rocks above that.
                • Burn mesquite wood for a couple hours until the rocks are hot. Almost all of the flavor from the smoke is lost to the atmosphere.
                • Banana stalks above the rocks.
                • Pig wrapped in chicken wire and place on banana stalks. We only salted (no rub), and it was right before (not enough time to brine).
                • Tea leaves above pig for flavor. Banana leaves above tea leaves for insulation.
                • Wet burlap above banana leaves for humidity.
                • Tarp above burlap for water insulation. Dirt above tarp for heat insulation.
                • Come back in 8-12 hours. No probes!
                • Every cut was pulled, not just the shoulders. Big pans of full-pig pulled pork.
                • All around, a pretty archaic process. Almost all could be replaced with a barrel, just a metal cylinder for smoking. The biggest crimes are definitely the wasted smoke, no brine/rub, and the lack of closed-loop temperature control.
                • It came out pretty tasty still. Hogs are delicious. Not fall off the bone tender – I expect it was probably at ~180F. The shoulderblades and hip bones were actually kinda hard to remove, which doesn’t happen at 200+.
                • No smoke ring, as expected because the pig wasn’t exposed to wood fire.
                • No bark. No convection. This is particularly tough because the hog is not a homogeneous cut, each region needs and saw different temps (uncontrolled).
              • c10k was a challenge proposed to web developers a few decades ago: create a web server that can handle 10,000 clients at once. http://www.kegel.com/c10k.html. nginx was written in response to this challenge!
              • Reworked the docker composition for bmahlstedt.com: https://github.com/brianmahlstedt/bmahlstedt.com/issues/9.
                • Mongod was not an enabled unit on my machine, so when the laptop died on vacation, systemd did not restart the service on return.
                • postgres default is 5432, mongo is 27017. Remember that you’ll get binding address-in-use errors if you have the db running on the host and you try to start the container. Kill it on the host with `sudo systemctl stop <>` or change the port.
                • Added the whole shebang. Dockerfiles for each container build, compose to bring all the services together, makefile to wrap the common service start commands.
              • “Saturday night palsy” is a medical condition where you can permanently damage nerves by sleeping on them wrongly after drinking.
              • Betsy wedding trip is the same weekend as the blake st socal trip. Planning miscoordination.
              • Finished eloquent javascript and added all notes to drive.
              • Watched the new lion king in the background. Was pretty good.
              • MIME = multipurpose internet mail extensions. This is a spec for many things, the most common being content-type headers. All popular languages offer a module that can infer the correct mime types based on most common file extensions.