-
- 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.
-
- shift-esc for chrome task manager.
- 30+ articles from 20+ newsletters, MD/PW/FW/HN:
- Babel compiles es6 js down to older versions, for retro/crossbrowser support, as we know, but if there’s an entirely new feature that the old js didn’t support, it is called polyfilling.
- While es6 was a gigantic release in 2015, we’re now on es10.
- Cool article on import symbols affecting how mocking works: https://nedbatchelder.com//blog/201908/why_your_mock_doesnt_work.html. If you have a module product.py that does `from os import listdir` then you should mock product.listdir, not os.listdir.
- setTimeout() inside of a promise, can be pending, resolved, rejected. Can run different codepaths based on logic, bool, etc. Rejection will raise an exception (error out if uncaught). Promises can have a .then .catch .finally etc.
- OOP (classes) vs FP (functions). Functional programming is a more elementary structure. Pure, no shared state, easier to test, but can do less.
- PyPI stats: https://arxiv.org/pdf/1907.11073.pdf.
- Compound annual growth rate for active packages: 47% (total 178,592)
- Compound annual growth rate for new authors: 39% (total 76,997)
- Compound annual growth rate for new import statements: 61% (total 156,816,750)
- Average releases per package: 6.93
- Average inter-release timing: 65.38 days
- Average packages per author: 2.15
- Average package size: 16.5MB
- MIT license is 34% of all packages.
- 25% are stable/prod (not alpha, beta, inactive, etc)
- 58% crossplatform, 26% posix/unix, 9% mac, 8% microsoft
- A few react tools I can use: https://medium.com/better-programming/22-miraculous-tools-for-react-developers-in-2019-7d72054e2306.
- Webpack bundle analyzer. Shows deps and size.
- React-proto. Helps visualize component layout and more.
- Why did you render. Shows unnecessary renderings in your app.
- Nonsensical article complaining about uber: https://medium.com/radical-urbanist/i-dont-use-uber-neither-should-you-4e1009d0a238.
- I already do advanced to-do listing: https://medium.com/better-humans/this-alternative-todo-list-will-help-you-complete-100-tasks-every-day-aae1130faac8.
- React-pose is pretty awesome for animations on components: https://medium.com/@joomiguelcunha/amazing-react-animation-with-react-pose-3b67d9eb6e07. For simple stuff, css animations are fine, but for more complication view changes, js animations offer more control.
- “Brogrammer“
- GitHub Actions is the extension that allows you to do full CI/CD through your github workflow! https://github.blog/2019-08-08-github-actions-now-supports-ci-cd.
- UFC 241 in Anaheim. Didn’t end up going, but watched live.
- Sent out the splitwise bills. House for wes/jcriss, rum fire for everyone, and 1 safeway trip. Settled for Eddie’s airbnb.
-
- Home from Hawaii. Such a good trip.
- Uploaded my pics from both legs to their respective shared albums on google photos.
- Amazon fresh order. Cut and prepped all veggies. Made cacao oat milk.
- Bottled the banana hibiscus kombucha for second fermentation. Started the next batch (green tea).
- My raw cacao powder had a prop 65 warning for reproductive harm on it? https://www.p65warnings.ca.gov/fact-sheets/foods.
- App idea: single-click payment splitter. Similar to splitwise, but a few critical features. You push a button in the app on your phone, and it will check the most recent transaction on your credit card to populate the total. If that’s not available, or you paid cash, you can take a single picture of the bill to populate the total. The app then autodetects your friends’ phones in the nearby vicinity. It proposes those N people to split it with, then allows you to confirm (or add/remove people, changes portions, etc). Once the whole dinner/vacation/whatever is finished, you can settle up, integrate with venmo, etc. If all goes well, bill splitting becomes a single click of a button whenever you pay for the group.
- Fed mouse.
- Verified that my contact info was correct for both of my domains (required by ICANN).
-
- Fantastic guide to forms in react:
- Checked in to hawaii flight. Annoying to have to pay to check a bag ($30). There’s gonna be traffic on the way to a 9am flight, and LAX is under construction, so I’m gonna take the bike.
- To rename a variable during an es6 obj deconstruction, do `const { key: newName } = obj`
- Added password protection to form submission in the blog component of the app (rather than the whole route, so people can still read). It’s simple for now, just an env var defined at server start, and an <input type=”password”> field that it checks before creating/editing and a prompt before deleting any blog posts in the db and frontend.
- axios’ delete method passes data. post passes body.
- PM2 is a very popular process manager for node. It can be used to start an express app, like `pm2 app.js` instead of `node app.js` or nodemon app.js`.
- Created the ticket for and started working on the container deployment of the new apps that make up bmahlstedt.com: https://github.com/brianmahlstedt/bmahlstedt.com/issues/9. Will finish when I get back from Hawaii in a week!