About Brad

All-around tough guy.

Cutedge and PHP upgrade

I’m running Cutedge Systems’ brilliant WebMon, Letsencrypt, and OpenVPN Enabler to turn my Mac mini back into a macOS Server-like machine – thanks, Bernard Teo and Bee Khim! My Apple mini is still on Monterey, I’m not quite ready to upgrade it to Sonoma with OpenCore Legacy Patcher, and I want to eke some more life out of it as-is; however, Cutedgesystems’ latest Letsencrypt for Monterey, version 3.0.4, is bundled with PHP 8.0.12 and WordPress/apache no longer fully works with this PHP version. In attempt to get Letsencrypt’s bundled PHP up to the latest 8.3.3, here’s what I asked brew to do:

1. Open Terminal.app
2. Execute the following command:

/opt/homebrew-cutedge/bin/brew upgrade php

The upgrade ran for over an hour on the aging mini, but eventually it completed and updated the apache webserver to now use 8.3.3. Apache and WordPress seem to be running fine so far and a previous error message I was seeing “the server unexpectedly dropped the connection” is now gone. YES!

Extra notes… Prior to running the upgrade PHP 8.0.12 was installed in these locations:

/opt/homebrew-cutedge/Cellar/php/8.0.12
/opt/homebrew-cutedge/etc/php/8.0

After executing the above command the 8.0.12 directory was replaced with this one:

/opt/homebrew-cutedge/Cellar/php/8.3.3

And, curious, an 8.3 directory now sits beside the 8.0 directory:

/opt/homebrew-cutedge/etc/php/8.3

Adhesives

I’ve relied on a “Perfect Glue” chart for identifying which adhesives are compatible with differing surfaces and it served me well for years, but Perfect Glue products are no longer available and it seems I’m in need of a more generic chart. I happened across this chart recently and will test it out:

AirPort Express/Time Capsule Power Supply Replacement

The above-referenced AirPort Express is known for faulty power supplies. Mine gave up the ghost a couple years ago and the stay-at-home orders gave me some extra time to fix it up. I used a mess of instructions here and here.

Ultimately this repair failed again, but my soldering skills and hot air machine skills have improved since then, I may give it another go at the board level… And a good friend has a Time Capsule that also has a failed internal power supply. If we open his again, we should consider a repair with these instructions. I’ll update this post later if we get it to work.

Cycliq Fly6CE Review

In November, I Black-Friday gifted myself a Cycliq Fly6 Gen 3 tail light. The selection came after a recommendation from another Brad – thanks, Brad! This is my brief review.

The light arrived about a week after the order was placed. At purchase time, I also requested a rubberized outer body, additional bike mounts, and glass lenses. Speaking of the lenses, this morning while riding Pugsley and gleefully hopping off a path on to the U of M Transitway I heard the big lens pop out. At the time, I had no idea what the noise was, it sounded like a screw hitting the ground. I rode back to look for whatever had fallen, but I didn’t know I was looking for a glass lens, found nothing, and rode off to work. After arriving at work, I noticed the missing lens and recalled exactly where it fell out. I will go back in darkness tonight to try and find it, but my expectations are low that it will still be intact with the bus traffic this area sees.

Ok, back on topic… I am at a loss to think of a single bike product that performs perfect in all situations, seems we usually accept compromises of some sort and this is not to say this product is perfect or completely inferior. Here are some brief ramblings from the first 60+ days of usage.

Since installing and using this light, no motorists have cut it close while passing me during daily commutes, or at least not close enough where I wanted to review the saved footage. This could be because the light is impressively bright in day and night, so motorists may be keeping further away from me than they have in the past? The light stays illuminated for my entire 60-75 minute commute and I usually charge it at either end with a fast charger should my adventures go longer later.

During winter riding and really anytime the temperature drops to 32 F or below, the light must be turned on indoors (I believe Cycliq mentions this in their literature) or while the light is at this temperature. If you use the light outside for an hour at 31 degrees, briefly stop in a store while turning the light off and bringing it with, I find that it won’t turn on and stay on if it wasn’t given sufficient time to warm up. Due to this narrow band of temperature operation, I’ve found myself running errands on the way home from work and having to lightless the rest of the way, big bummer. In the future to stave off these operational disappointments, I may leave the light on in my pocket or resort to using Cycliq’s app to temporarily turn the lights off while leaving the rest of the unit on – I’m not a huge fan of the latter approach since my hands frequently go numb and messing with the light’s phone app is one more thing that adds complexity and takes time.

I haven’t spent a lot of time playing with the light’s video, but there is one gripe I want to air out. If you read the light’s manual, it says that you need to frequently re-format the memory card, presumably to write over stuck memory. I’m going to reach out to Cycliq’s tech support team and ask them what memory type they are using in the cards issued with the light. If they even know, I assume they will respond that the the microSD is TLC or QLC NAND memory and not the more reliable SLC NAND memory. If they respond that it uses TLC or QLC it will explain why they recommend having to frequently re-format the memory and this could have been avoided. I hope to report back on this in the future.

The rubber case is a must if you ride in conditions that are similar to Minnesota winters. The case isn’t perfect, but it admirably keeps 98% of the water and road grime off the light. It can be a bit fiddly to take off, but if you hold the light, from its small tag/cord, and upside down it is pretty easy to slide the cover on and off. If people want video of this technique, let me know in the comments and I’ll post it.

I wished I had purchased another one of the velcro mounts for easily moving the light between my Dummy and Pugsley, but I can still do this.

The lens are pretty easy to install and remove, see mishap above where this causes problems. Seems this could have been improved, but as-is it offers the option to easily wash lens, which you’ll need to do if you ride in messy conditions, which I do.

** 2-14-2024 Update **
My Fly6 GEN 3’s operation time has declined, now only operating for less than a minute before shutting off and despite the battery being charged to 89% or higher. Today I filed a support ticket with Cycliq, will update later how this turns out.

** 2-28-2024 Update **
Ashe at Cycliq helped me troubleshoot my light and the ultimate conclusion was that the on-board TLC memory gets corrupted and requires the user (me) to periodically reformat the device so that it can property charge up. Doing a reformat once again allowed me to charge the device to 100%, but this is giving me some bad vibes.

As an engineer, I’ve specified and constructed monitoring systems with onboard microSD memory; however, as I mentioned above, I now only do so with commercial-grade SLC or MLC NAND memory. TLC and QLC do not last long enough and this Cycliq device has TLC inside of it. I bet I cold make these problems go away by replacing the onboard TLC memory with SLC, but it won’t be cheap. Also, I worry that SLC may not be able to keep up with the higher write rate that accompanies 4k video.

** 7-15-2024 Update **
So, the light ran fine for another 4 months, but I noticed it’s taking longer and longer to charge it even though it remains mostly charged. It’s July in the northern hemisphere where I live, so most days the ample sunlight means I can ride without the light. Today I tried reformatting the TLC memory card using Ashe’s instructions and despite being on a USB-C fast charger all day now the light’s battery charge is stuck at 86%. More later…

** 10-3-2024 Update **
Cycliq’s support team said that I should expect to reformat the light’s memory every 3 months, but I’m finding it needs this reset closer to monthly or whenever the TLC-memory corrupts itself. Since it appears Cycliq has no planned firmware update to address this issue, I’m posting their reformat/reset instructions, here:

  1. Fully charge the device so charging LED goes green
  2. Format your SD card to FAT32 either via the mobile app or using an SD card reader on a computer
  3. Settings:

    Set device time – Sync to your computer (if connecting via mobile app this will be done automatically)

    Light mode – Enable Organic Mode only

    Sound volume – 3

    Beep interval – Off

    Incident Mode – Off

    Idle Mode – Off

    Video resolution – 1080p 30fps

    Video Segment length – 10 minutes

    Video logo and timestamp display – On
  4. Disconnect the device then power it on and leave it on a flat surface noting the time you turned on the device
  5. Once the device has powered down, connect your device to the computer and access the recorded files and get the time of the last recorded file. Please send us a screenshot of your file list

Nest Account and Data Archive

Our house has rocked a Nest Learning Thermostat 1.0 since January 12, 2013 and it has worked wonderfully. I never switched the thermostat from its Nest account to a Google account. Nest’s Google account users have had Google Takeout as an option to download historical thermostat data, but what about Nest account users?

Fortunately, Nest account users can also download historical thermostat data, outside of Takeout, at this link:

http://nest.com/privacy/mynestdata

After authenticating with your Nest account credentials at the above link, you’ll have the option of creating an archive of data from your Nest Learning Thermostat. I kicked mine off at 7:25 pm CST, I’ll try to update this when after the archive is available for downloading and viewing (I expect it will be a few hours). Based on the initial feedback from Google/Nest, the archive will remain available for 7 days from the time it is created.

Worth noting, I seem to have completed these steps back in 2021, an archive I still have which pulled data from late 2019, 2020, and through November 7, 2021 – I’m curious if this next archive goes as far back as 11/7/2021. I know the suspense is killing you too.

Mexico and Public Bikeshares

Just got back from CDMX this week, had a blast with my bro-migo, Tony! We visited several neighborhoods, including Condesa, Roma, and Midtown, using Vezba’s public bikeshare. Vezba wasn’t our first option, but it was the one that worked. More detail below.

Mexico City has three public bikeshares. Despite what current blogs are telling you, Ecobici is not an option for those of you rocking a U.S. credit card and Ecobici’s app – when you attempt to set up an account it errors out – boo hiss!

There was also a public bikeshare sponsored by HSBC, which consisted of black bikes that were parked in docks. We didn’t see this public bikeshare until we arrived there, so I don’t know how to join it. Sorry, I wished I had taken a picture of their dock and instructions when I went by.

The only public bikeshare we exercised was Dezba. Their app has issues on iOS with different issues on Android, but overall it works for U.S. citizens holding a U.S. credit card. I was using their iOS app and when quitting a ride through the app it would seem to hang. To end your Dezba ride, just lock the back wheel (with the bike’s built in lock) and it will automatically end your ride. Force-quit Dezba’s iPhone app and re-open and you will find that this works to end your ride.

Notes, the bike share area isn’t very large. If you’re considering riding southeast to Cablebús Linea 2 or north to Cablebús Linea 1 you’ll have to stop and park your Vezba, otherwise you’ll pay a fee to park outside the zone. Another option if you insist on biking all the way, bring your own lock just pay the overage fees, the overage fees are much less than ending a ride outside the zone.

Ok, that’s all for now. I’ll try to post more comments and picks later.

Airport Pedestrian Adventures

For whatever odd reason, I like to unwind from a trip and, if accessible, walk to an airport terminal. I’ve now done this in Las Vegas, Minneapolis-St Paul, and San Diego.

Today I tried building to the list by walking/biking from JFK to La Guardia. From Terminal 8, I didn’t find a good way to walk straight out into Jamaica. For $8.25, I caught the AirTrain outside Terminal 8 and rode it to the Jamaica stop, which is where you must pay to exit. From there I began walking north, figuring I’d grab a Citi bike from their area north of JFK. After over an hour of walking I found a Citi bike and rode 25 minutes to a Dunkin’ Donuts for a late breakfast. From there I walked into La Guardia by walking up 82nd St to Marine Terminal Rd only to find a sign preventing pedestrian access to Terminals B and C. I decided to hop on the free shuttle bus to reach my destination, Terminal B. I understand if I had entered LGA from 94th, I could’ve walked all the way in, next time! JFK on the other hand is a bit disappointing, surely there’s a way to do it sans AirTrain?

Chamberlain and ratgdo

When our garage was rebuilt in 2017 a Chamberlain 8550WL belt-driven garage door opener was installed. We love how quiet it is, that it has a battery backup, and that it could be paired to a homebridge and operated with HomeKit, at least until September 2023 when Chamberlain closed access to third party plugins.

Enter Paul Whelan and ratgdo. Paul reverse engineered the encryption that Chamberlain has on these openers and made a board that has been open-sourced by others – for a good interview with Paul, check out this video. I bought Paul’s board, coded it with the ratgdo homebridge web installer, wired it to our Chamberlain garage door opener with an external power supply, and it worked flawlessly until I swapped out our Apple TV 4K for the latest Apple TV 4K that does Thread and Matter. Here’s an example of what the wiring looks like when the ratgdo is connected to the Chamberlain opener and here’s an example of pulling 3.3 volts from the 8550WL to power the ratgdo – I haven’t tried the latter, but likely will this spring/summer when it is warmer in the garage.

A few gotchas… Google Chrome or Microsoft Edge are required to transmit the ratgdo’s firmware to its board. Changing the user agent does nothing to help Safari communicate to the ratgdo through the web installer.

macOS and OCR

Infrequently I come across old pdf files with pages that contain text as a single static image and lack searchable text. I’ve wanted an easy and free OCR solution and I’ve now found it, although I’ll keep looking for an open source option that is just as easy to use. For now, my Mac is rocking OwlOCR and it offers right-click contextual menu access to making searchable pdf’s without paying for it (for now), here’s how:

  1. Download OwlOCR through the App Store app on your Mac.
  2. Enable OwlOCR’s Finder Extensions using these instructions beginning with the section “Enabling Finder Extensions in MacOS”

When you have a .pdf in the Finder that you want to make searchable, right-click the .pdf’s icon, choose “Quick Actions->Create Searchable PDF” and wait until a status window indicates that it is done. Thanks OwlOCR team!

Basic Photos Backup

Once a year, we back up Tina’s Photos library to an external hard drive and deliver it to friends who keep it at their house, just in case ours burns down or something terrible. For whatever reason, it seems we can’t just drag her “Photos Library.photoslibrary” to an external hard drive or at least when we do, it seemingly spins forever without a good status updated. In steps rsync.

From Terminal.app, I pasted in the following command on her MacBook Pro while the backup drive is plugged in and this seems to do the trick with a live status update spewing in Terminal’s window.

sudo rsync --archive --stats --human-readable --progress /Users/christinaschwie/Pictures/Photos\ Library.photoslibrary /Volumes/Tina\ Photos/Photos\ Library.photoslibrary

I should’ve published this as a tip for others. And even if you’re not syncing a 250+ GB photo library like this scenario, hopefully it helps you with your large directory transfer needs.

** UPDATE 2-15-2024 **

Resource forks may have been damaged using the above command. Next time, try it with “–hfs-mode=appledouble”, such as:

sudo rsync --archive --stats --hfs-mode=appledouble --human-readable --progress /Users/christinaschwie/Pictures/Photos\ Library.photoslibrary /Volumes/Tina\ Photos/Photos\ Library.photoslibrary

Or install rsync with brew and then add –xattr to the command.

Or sudo rsync -xrlptgoXvHS --progress --delete --fileflags / /Volumes/BackupClone using tips here.

** UPDATE 11-11-2024 **

This is the command I ended up executing that works great:

rsync -Pha –delete –stats /Users/christinaschwie/Pictures/Photos\ Library.photoslibrary/ /Volumes/Tina\ Photos/Photos\ Library.photoslibrary/

Note: while testing these commands, one of them made a “Resources” folder and a “.photoslibrary” file within the main .photoslibrary I was syncing over that I learned about here – this happened when I omitted a trailing / after .photosplibrary. Fortunately, deleting the Resources folder (it was empty anyway) moving the nested .photoslibrary document up one directory (and deleting the main one) fixed this mess and left me with a single .photoslibrary document that opens in Photos.app and can up updated using the command above a second time. Future updates seemed to be fast, finishing in less than 5 minutes and this on a mid-2015 13-inch MacBook Pro. If I have enterprising friends or family who want to store backups safely off-site, this could be a useful command. So glad this is working!

A few additional notes. It appears check sums are verified after the transfer completes. If for some reason you want to verify check sums before the transfer, append a “c” to “-Pha” to make “-Phac”.

Kevin talks about making a cron job out of this, but these days it will likely have to be launchd.

If we start messing around more with iCloud Photos, this script may be helpful.