VMware Fusion 12 Player

It is pretty awesome that VMware Fusion Player is replacing VMware Fusion Standard and Player is free for personal use. This is weird to me since I never expect a company to stop asking for money for great software. Now, it seems, I can upgrade VMware Fusion 11 Standard to VMware Fusion 12 Player for free and not miss anything. So weird! I guess VMWare wants to focus on business users and don’t want to cater to end-users like me. That would make sense as I will no longer be paying them money for their software. Well, this is pretty cool at this point in time.

Upon a recent update to VMware Fusion 11.5.5, sound began crackling in Windows 10. For some reason

sound.virtualDev = "hdaudio"

was missing from my .vmx file so Windows 10 was using VMWare’s generic audio drivers. Added that line into the .vmx file and all is well as now Windows is using its High Definition Audio device drivers. Thanks to this AppleVis post for giving me the idea.

Follow up: I just noticed that this AppleVis post reported nearly the same issue I had and the same fix. Apparently this may be known to be an issue at VMWare.

Keep MacBook from Sleeping with Lid Down

The MacOS app Amphetamine is pretty slick. As promised, it keeps my MacBook Air awake even if the lid is closed and there is no external display attached. So now I can run it as a part-time file server (via SFTP and Secure ShellFish for iOS). At least, that’s the plan. Since it is running on a laptop, I really appreciate the audio alert it’ll give if I unplug the MBA while Amphetamine is keeping it awake. Now that MacOS 10.15.5 has battery aging management, now is the time to try this out.

My goal is to somehow simplify things by no longer needing an aging QNAP NAS and using a single platform. I love the idea of having a spare laptop but also actively using it and getting more value out of it.

I finally got around to messing with iStat Menu's Time menu and I’m sold. Having a calendar and events embedded in the clock is lovely.

Upgraded to 16" MBP ❤️

Since 2010, I have always had a 13” Mac laptop — now I’m on a 16” MacBook Pro and I love it. I upgraded from a 2018 MacBook Air.

I waited for the new 13” MBP. The new 13” MBP had the necessary Magic keyboard but didn’t satisfy in terms of evolution: its screen was not 14” as rumored; it has the same thermal system; the same speakers; and the same mic. However, the latest 13-inch MBP has slightly better single thread CPU performance than the base 16” MBP I got. Finally, it seemed as if the latest 10th gen Intel chips that might work for the 16” wouldn’t provide too much of a performance boost (no wonder there’s so much interest in ARM). And I might be waiting a while for that. Assuming the 16” ever gets a refresh before the surmised ARM revolution.

What did I want? I really wanted the wide color gamut of the MBP since I’m a prolific photo taker and editor. In addition, I really wanted a laptop that will last beyond three years (like my first ever 2010 13” MBP, RIP)— even if ARM becomes a thing. A laptop that has enough CPU cores for ARM emulation, if needed (though I suspect for a few years  apps will be delivered as dual Intel-ARM binaries).

I use x86 Windows 10 in VMWare and on my 2018 MacBook Air, it was nearly unusable. So the 100% base 16” MBP seemed like a good fit. 

So without a solid evolution of the 13”, the 16” began to look pretty nice. 

Now, my Windows 10 VM can take over two of six cores and four gigs of ram without any noticeable system impact. Also, it is now apparent 16 gigs of ram really is the sweet spot for my use cases. And it is awesome to use a 16” screen on my lap wherever I want. For basic things, like writing to my blog in MarsEdit, it never gets warm enough to notice. Oh, and yes, photos look so very good and editing on this 16" screen is a dream. I’m uh also taking a liking to the Touch Bar.

For the Touch Bar, I just wish I could enable the expanded control strip without losing app-specific controls. For example,  if I’m in an app with Touch Bar support, it should show the app’s controls with a shrunk control strip. However, if I’m viewing just the desktop, the Touch Bar should immediately show me the expanded control strip — I don’t want to press the <.

Why must Apple hide three finger drag on their touch pads under Accessibility? It’s my favorite touch feature of the touch pad.

Fruit Tree Irrigation: an Experiment

For several years I’ve watered my fruit trees using a Generation 2 Rachio controller and their irrigation method called “Flex Daily”. This method relies on many variables, a few of which I can only make good guesses at. For example, my soil’s Available Water Capacity from the U.S. Soil Survey.  Flex Daily on Rachio is really designed for watering lawns, and I don’t care about lawns. I water fruit trees with unevenly spaced emitters. So the other advanced zone variable that’s not easy to determine due to my needs is the Nozzle In/Hr setting.

Here is a formula I use to convert from my drip emitters GPH to In/Hr:

(96.25 * Q * 0.0167) / A = PR

Where Q is Gallons Per Hour (GPH) and A is, in the case of trees, drip line or canopy area. 0.0167 changes GPH to the needed Gallons Per Minute (or divide by 60).

Rachio’s Flex Daily method worked fine for the past few years, though it seemed to water too much in a day and too infrequently causing regular water stress in certain trees. I figure that’s because Flex Daily relies heavily on the AWC and root depth. It then waters to what it expects is the root depth.

Recently, in preparing for this irrigation season, I learned about a daily tree watering model from the University of California’s Center for Landscape and Urban Horticulture. I had always wondered what model local orchards use, and I bet it is this one because I have often seen the almond orchards watered daily. But with Rachio’s Flex Daily, it was every 3-5 days. According to the Center for Landscape and Urban Horticulture, deep watering of trees can actually be disadvantageous as water can leach nutrients to a depth where roots would never reach them. They also write that when using drip emitters, depth of watering isn’t as important for trees as the volume of water they actually need. I assume from this that the bulk of tree roots that take up water are shallow.

With Rachio’s Flex Daily, I had the root depth set to 8 inches for my trees. According to tree (crop) evapotranspiration (ETc) needs, it’d attempt to water to that root depth. But my settings would have to be perfect for that to work right — especially the Available Water Capacity. I’d also have to be reasonably certain about my tree root depths, which I am not! I doubt my settings are good enough for the watering depth to be accurate, especially as soil is not homogenous. Was this Flex Daily method watering well beyond the tree roots? Without digging some deep holes I’d never know. So the Center for Landscape and Urban Horticulture’s daily watering method for drip immediately appealed to me. All I need to know, for this method, is the tree’s drip (canopy) area and the tree’s Plant Factor (or its daily water usage):

 Gallons = ETo × PF × (R× R × 3.14) × 0.623

Where ETo is the reference evapotranspiration (figured from grass), PF is the Plant Factor or Crop Evapotranspiration coefficient, and R is the radius of the tree’s canopy. 0.623 is the conversion to gallons. ETo * PF results in the inches of the plant’s water use.

To get the water needs of my trees, I use the Irrigation Training and Research Center’s California Crop and Soil Evapotranspiration (PDF) guide. For my Reference ETo Zone, I use the Typical Year table to find my tree type, and then find the inches/month for my trees. I can use the above formula to calculate the amount of gallons needed per tree and then calculate, based on the total GPH of emitters under the trees, how long I need to water them. Of course, it is key to divide the monthly ET by that month’s number of days in order to get the average day’s water use.

The following image is extracted from the California Crop and Soil Evapotranspiration book. I’m interested in the monthly values for the bottom four rows. If you divide a tree monthly average by the grass reference ETo, you can get the Plant Factor or evapotranspiration coefficient. Divide the value for a tree on a given month by the days in that month to get the tree’s average water use in inches per day.

Zone 12 Crop Evapotranspiration Example

If all my trees were the same age and the same maturity, trees of the same kind (e.g., stone fruit or citrus) would have the same GPH per tree. They are not. So to get the same Nozzle In/Hr at each tree, I have to balance the emitters in each irrigation zone. For example, in my Stone Fruit zone, my mature and stingy apricot has emitters that total 12 GPH while at my much younger, prolific but severely bark beetle damaged Lapins cherry tree, has 2 GPH’s worth of emitters. But because the apricot’s drip line area is about 78.5 square feet and my cherry’s drip line area is 12.56 square feet, their inches/hour balances out to 0.246 in/hr for the apricot and 0.256 in/hr for the cherry. Close enough! So in this case, I can run the zone for nearly 18 minutes in April and both trees will (hypothetically) get the amount of water they need on a daily basis. This, of course, assumes the soil is suitably well draining and water can soak down some depth into the root zone. For the most part, this is the case for my trees.

So by balancing a watering zone’s trees to have similar inches/hour, I can figure the amount of time needed to water the zone:

Gallons per Day / Gallons per Hour * 60 minutes per hour = minutes per day 

(phew; the dimensional analysis would make more sense if written symbolically)

And, I can be as granular as I want at calculating the water need. For now, I’ve calculated water needs for each month using my trees’ average monthly water use. I have setup Fixed irrigation schedules for many different months using the Rachio Gen 2 controller for almost every month (if months seem similar in water use for a zone, I use one Fixed schedule). Each schedule has the month’s average ETo in the name, So when evapotranspiration regularly matches a set schedule, I’ll switch to that schedule (assuming the phenology makes sense; some trees have higher water use during certain parts of the season). I no longer need to use Flex Daily. Each zone has its own watering time based on its daily water needs. Rachio will still skip irrigating if enough rain happens, but none of the Flex features are in use now. I started this daily irrigation regime on April 22. It’s too early to say how the trees are responding, so I’ll have to report back on this big experiment.

Rachio Fixed schedules that I’ve created to suit ET and tree phenology.

.Rachio Fixed ET Schedules

I can never remember brackets or parentheses for Markdown links!

With [Watchsmith](https://apps.apple.com/us/app/watchsmith/id1483088503), I get a hamburger when my move/exercise/stand goals are met.

Apple delayed shipment of 2020 MacBook Air. Understandable. Buyer’s remorse came fast and furious so I canceled. I’ll keep mashing those butterfly keys for a while longer.

I’m experimenting with [Meteobridge Templates](https://meteobridge.com/wiki/index.php/Templates) and Siri Shortcuts so Siri can tell me about the weather just by pulling data off the local network data logger. Works pretty good!

I’d say nationwide telework went very well this last week. Only had a few hours of repeat VPN disconnections. Bandwidth was not constrained relative to my home internet. Good job, CIO staff!

“Hey Siri, play some music.” “Okay, let’s kick things off with Widespread Panic.” 😳

Working from home today - nationwide stress test of VPN.

Not going anywhere unless necessary so time to try Sous Vide London Broil. Just under two pounds of meat held at 132°F/55.6°C for 8 hours. Just salt and pepper for the beef. Will sear it to finish.

At the USDA, I’m not allowed to telework as I haven’t been personally affected by SARS-CoV-2. I’m capable of telework and I prefer it. Guess they’re waiting for mass infections at workplaces first. USDA significantly curtailed telework ~two years ago.

A Very Good Overcomplicated Journal Workflow

Our journal workflow is probably more complicated than it needs to be. There’s room to optimize this workflow. It grew out of our moving away from Day One when they went to the subscription model. At the time there were some terrible limitations and we wanted none of it. Instead, we went with a semi-automated method involving iOS Shortcuts, iOS Notes, 1Writer, Homebrew (for Pandoc and LaTeX toolchain), and my favorite Swiss army knife GraphicConverter. The final archival format of each journal entry is a beautiful, open standard and searchable PDF generated by Pandoc using LaTeX (MiKTeX distribution).

The Shortcuts step creates or seeds a range of dated Markdown files with dated headers. The filenames follow the very sortable format of “yyyy-MM-dd HH.mm.ss.md” or, for example, "2020-02-09 19.24.38.md". Of course, with Shortcuts limitations interacting with Files, I have to create the files in the Shortcuts folder and then move them to the 1Writer iCloud folder. Once those are seeded, we copy and paste from shared Notes to the Markdown files. I add a ✅  Checkmark emoji at the top of each Note that I’ve transferred so me and my partner know it’s been copied over. 1Writer is setup to save all journals to iCloud.

If we need to add a photo to a journal entry, we split screen with 1Writer and Photos and drag a photo over to 1Writer. 1Writer puts the image file, with the original filename, in the same folder as the Markdown files. If we need a collage, we create it in Google Photos app (though we don’t actually use it for sync!) because it does  a really good job at collages of photos with different dimensions. Google Photos saves the collage to Photos and we go from there.

Once a month’s worth of journal entries (Markdown files) are complete, I then have a workflow to convert the Markdown files to PDFs. This is where Finder, GraphicConverter, Pandoc and LaTeX come in.

Since 1Writer is using iCloud, it’s all downloaded to my MacBook without any effort. So first I copy the files to a non-iCloud syncing folder in my ~home folder. I then make sure the space in the .md file is turned into an _ before processing (won’t be escaped automatically with this command line “script”). Finder makes this child’s play by multi selecting files in Finder, right click, and click Rename n Items. This Rename feature is something I deeply miss whenever I’m on a Windows 10 machine.

Next, some photos won’t be properly rotated, so I use GraphicConverter to Auto-rotate photos by clicking the Rotation icon on a thumbnail in Browse mode.

Next, I finally run a command that I modified from somewhere on the internet. I was not talented enough to put this command together from scratch. This command is why I had to wait on installing Catalina until Homebrew was compatible with it. With the following command, you just need to have a working Pandoc and LaTeX environment with a subfolder named Archive:

cd ~/Journal-compile/
for f in *.md; do pandoc $f -o ./Archive/${f%.md}.pdf -t latex; done

To be neat, I then rename the output PDFs so that the _ are spaces. I’m not a monster. 

Then I load GraphicConverter, and in Browse mode, use the “Set Exif Date from Filename” tool on all the freshly minted PDFs. This sets the file date to the date of the journal entries. The format I use is YYYY-MM-DD. Then I copy the PDFs and source files (with images) to various Cloud and NAS folders. Of course, I keep the PDFs separate and that’s what we always reference back to. PDFExpert is currently our choice app for viewing journals since it has excellent file content search and SMB syncing.

Now, a lot of this is broken up so the workflow isn’t onerous. But I admit for most people, this is just ridiculous. But the benefit of this workflow is our memories are in a open format where it matters with no proprietary nonsense.

Since you likely read through all of this, here’s the Shortcut for generating blank journals. I bet it is also more complicated than it needs to be. But it works well.

The pull to “like” on Twitter is impressive. I’m doing my best to refrain but my finger has a mind of its own.

House Wiring is an Adventure

I finished installing some new switches today. Worst thing I found in the existing wiring that I could fix myself was paint coated copper under the wire nuts. Whoever did that must think wires work off of luck that the wire nuts cut into the copper or magic or induction. Pictured below are neutrals that were paint covered. And you wouldn’t be wrong to guess that the grounds were also covered in paint. I scraped them off and cut off the tips and then installed the new switch. Hopefully overall this is an improvement to the wiring! Also: I love my iPhone’s night mode for taking photos like the below. It’s not just for night!


Neutral copper covered in paint.

Upgraded from (down/up) 175/6 Mbps to 300/11 Mbps soon as I hit the “order” button. $1 less, too. No contract. Worth checking Xfinity internet-only plans periodically! Unreasonably excited at double up speeds.

Caseta & Dimming LEDs

I replaced a Caseta dimmer switch with the non-dimming version as I’m installing a ceiling fan w/light soon. I’m getting used to tucking and bending wires just so and shoving the switch in with screws ratcheting it snugly in place.

I’ve found dimmer switches are difficult since they can’t have anything but lights as a load and those lights (especially LED) better be perfect in their dimming logic and signal response. And as you should never use non-dimming LEDs with a dimmer, I’ve had to buy new bulbs to replace young non-dimmable LEDs or buggy dimmable LEDs from a few years ago. So far the current crop of FEIT dimmables sold at my local Ace Hardware are fine.

I’m so over using dimmer switches.

The [iRobot Braava m6 has a threshold problem](https://homesupport.irobot.com/app/answers/detail/a_id/21012/kw/Threshold) and it is a bit frustrating but workable. In my case it can easily go from laminate (higher) to linoleum but not the other way. It’d perhaps take just a quick rev of the wheels to hop back over up to laminate.

Nest Cam vs HomeKit Secure Video

There’s been some frustration with the current state of HomeKit Secure Video, but coming from a very pricey Nest Cam IQ Outdoor that basically is useless without another subscription (cancelled when they removed camera features), HomeKit Secure Video is a revelation. I’m using a Logitech Circle 2 with HomeKit Secure Video and its non-delayed, non-lagged, over the LAN, live video starts… every… single… time. Compare this behavior with always having to toggle the Nest Cam IQ Outdoor Cam off and on to get past the blue spinning wheel and get a several second delayed live video. So HomeKit Secure Video’s direct over the LAN live video coupled with video clips as a value add with an iCloud storage subscription, HomeKit Secure Video is great. But yes, be careful about those notifications and the sensitivity of people/animal/car detection. I’ve had people detected across the street, which frankly, is more impressive than annoying. And yes, you can only get one live stream at a time with the Circle 2. That’s workable.

Test from MarsEdit - does RichText convert to MarkDown? Does it boldWho needs Italians when they steal arctic circle candy? Is underlining for chumps that know nothing of hyperlinks? All these answers and more… to come.

Sometimes my Sonos goes out of sync with the HomePod. The HomePod appears to then go through a process to resynchronize — maybe 75% successful. They’re within earshot of each other so makes since a HomePod might do some fancy sync.