To Sleep, perchance to dream

Last year, I read the book Outlive by Peter Attia, MD in my Science Book Club, and although it is cliché, this book did indeed change my life. The TLDR is simply this: to live a healthy you need four pillars of living today to be ready for tomorrow: improved strength, good balance, cardiovascular improvements, and sleep! I have 10 lb / 4.5 kg weights I need to start pumping one of these days for strength. I need to do more yoga, like Saturdays at 11:00 in my apartment, but alas that’s during my Saturday Morning Review. But, for cardio, I climb all 15 flights every time I leave my apartment, typically at lease once a day, and have made a rule to never take the elevator up when I can find the staircase (though I do take it down).

As for sleep, I am epicly failing and it’s really getting to me. But, to fully lay this story out, let’s go back to March of 2024.

Eclipse Planning

I had been planning for the 2024 eclipse for years. I even wrote a presentation about it which I shared with my Toastmasters and Westminster Astronomy Society, Inc (WASI). In it, I talk about how back in 2023 I tried to get a hotel room on Lake Buchanan in Texas, and wasn’t able, but found this state park, right in the centerline of the Eclipse path, in the driest part of the county, just outside of Austin, TX. I worked out with my new job at CACI (which, BTW, is one of the best jobs I’ve ever had and a wonderful place to work and will always be my scheduling priority) that I could change my work location to Austin for the first two weeks of April 2024, and then booked a hotel in Cedar Park so that I would be close to work (actually two hotels were books and I only chose which one I would stay at in March), and got a TxTag so I could use the toll roads around Austin.

I spent March giving that presentation, scheduling a month of Green Pill Podcast episodes and posts (so I wouldn’t have to deal with them in Austin) and cleared my calendar for those two week, only allowing the most important commitments to bother me on my working-vacation. Since I was doing this myself, I used my own money to stay at the hotels, and wishing for adventure, I decided to take #NoSO2TeslaP三D down. (Fortunately, FSD (Supervised) V12 dropped just before I left.) And, I checked my Doctor Who watch log and prepared to watch the mostly missing The Mythmakers on the way there, The Dalek Masterplan while in Austin, and The Massacre of St Bartholomew’s Eve on the way back. My dad contacted me about borrowing his DJI Camera and I scheduled to pick it up two days before I left, the same day I tried to help a pregnant camper with the Green Cab group I’m a part of—which didn’t work out because I just couldn’t pick up the camera and get to the patient in time.

I put in my contacts and readied myself for the long drive.

Driving to Austin

I got up at 03:00 to watch my daily Doctor Who, and left at 04:00 on Friday, March 29. On the way, I attended many work meeting en route and nearly killing my hotspot fast-speed limit on the way. I first hit the Raphine, VA supercharger around 06:30, well before work began. Then, I drove to Atkins, VA, leaving around 10:30, and got my work computer set up for my work meetings. Around noon CDT—I’d crossed the time zone—there was some serious stop-and-go traffic on I40, in Kodak, TN, just outside of Knoxville, and I got rear-ended by an uninsured driver who didn’t leave me his name—I still have to get this fixed. I pulled into the Knoxville, TN supercharger about a half-hour later. I then attended the rest of my work meetings before arriving at Nashville/Charlotte, TN around 15:30, made it to Jackson, TN around 18:00. From there, I was lucky the Brinkley, AR was next to a hotel so I was able to sleep for 6 hours after charging my car to 100%.

I got back on the road around 04:00, arriving in Little Rock, AR around 05:00 with about 60%. I then hit Nash, AR before finally hitting Nash, TX, just outside Texarkana, around 07:15. I then drove a bit west of Dallas to the Royse City, TX supercharger at a Buc-ee’s, arriving around 09:45. I hit Abbott, TX around noon. Because I made such good time, and was looking to get to the hotel before check-in, I decided to instead head toward the Lake Buchanan park to scope it out for Eclipse photos, posting photos to instagram without revealing my location to keep it from being swarmed—and allow me to change my mind. Finally, I made it to the Cedar Park Supercharger, queued for a charge, and checked into my hotel around 17:30.

Working Vacation in Austin

Fortunately, I was able to cancel all my Saturday Morning Review meetings on transit days, committed to on the second Sunday morning there (the first Sunday was Easter and I just spent the day doing touristy things) and on my trip back to The Hourlings, attended my Reston Writers over Zoom (including one on the highway coming back from the Eclipse), attended my EVA/DC board meeting, my WASI meeting, a regularly scheduled Toastmasters meeting, and the Division E Toastmasters Evaluation Contest! I really didn’t want to participate in that while I was on vacation but I kind of fell into it by winning in March, so my Saturday morning before the Eclipse was toast. And that is, for me, a paired down commitment. I wanted to spend as much time as I could in Austin and focus on that, and not worry about what I would deal with when I got back, just in time to run the Science Book Club meeting in person. And I had to wash my car, twice.

I’m not going to talk about my actual eclipse experience here, just that I was not able to view the bats under the Congress Bridge in Austin and the Toastmasters contest and Testing the DJI Camera with a solar filter—which I hadn’t had a chance to test until that point—as well as getting enough charge for my ride, meant I really wasn’t able to do any tourism the weekend before the eclipse, and I was exhausted. But, I did get a call from our Toastmasters Area New Club Director about starting a club at CACI. Unfortunately, my reading glasses broke, the lens fell out, and I had to replace them, looking in H.E.B. and Walmart. I spent about a half-an-hour on the phone while I selected a pair I really liked for about $30.

I spend my last days in Austin meeting some of my awesome Austin colleagues, and attending drinks with the head of the office that Friday night, causing me to go to bed late.

Returning to Virginia

I got up at 03:00 on Saturday, 13 April, watched my daily Doctor Who, finished my Orange Juice, and hit the road around 04:30. I was too tired to take pictures at my first charging stop in Corsicana, TX, driving through the back roads of Texas. But I did get photos in Sulphur Springs, TX, in Hope, AR, in Little Rock, AR (again), in Memphis/Germantown, TN, in Dickson, TN, in Nashville/Charlotte, TN (again), and stopped at the Crossville Buc-ee’s. Unfortunately, the last stop was at a buc-ee’s and because I have mean old Tesla Insurance, it was 22:00, and I couldn’t drive anymore and had to sleep in my vehicle. My air mattress didn’t properly inflate for the first hour but, around 01:00 I hit the head in Buc-ee’s and got it properly inflated, getting a net of about 5 sleep before hitting the road again at 04:00.

I crossed the timezone and made it to Bristol, VA, at a lovely Royal Farms, right on the Tennessee border, around 07:30, just as the sun was rising. The sun looked amazing as I drove up I81 but when I got to Washington County, VA, I got my first speeding ticket in over a decade, all while going the same speed as the traffic around me. I guess the county is short on cash. Anyway, that delayed me arriving at the Sheetz station in Salem, VA, where I was subsequently late setting up the Hourlings Zoom, burning through the last of my hotspot bandwidth before they throttled me because the Sheetz wifi didn’t work. I got pulled over one more time outside of Salem because I accidently breezed passed a cop on FSD but I apologized as I didn’t get to the car and override in time, and he forgave me. Best cop ever! I’m glad he was safe. I then made it to the Mt. Jackson, VA supercharger around 14:45, which I had previously visited on my trip down Shenandoah National Park last Autumn—I was almost home! I didn’t have time to take a much needed shower, but I did have time to get to the car wash before attending my 17:00 meeting at the Panera. I finally had my shower when I got home, and I slept—fitfully.

A Killer Workweek

The main problem with not getting enough sleep is my productivity drops off. Combine that with 2 days of driving and looking at my calendar and seeing events not just 2 days the following week, not just 3 days. Not even 4 days, but 5 days, one every day of the week leading up to Earth Day and that weekend before Earth Day being chocablock with events too, about 3 per day! Combine that with 43 hours of work and you can see why I’m very frazzled.

My first day at work I did my best to move to my new cube (we moved cubes the day I got back) and was so tired, when I tried to recycle my soda and sandwich bag, I had the soda and my glasses in one hand and the sandwich back in the other, intending to recycle the soda and the bag but forgetting the glasses were in my hand too. When I tossed the soda bottle and everything else in my hand, I was confused to see the bag in my other hand. I stared at the trash, wondering what else was in that hand if not the sandwich bag. When I got home, I realized it was my reading glasses. I had to rush home to run Reston Writers’ Review, and I started cursing abominably because I was late and I needed my glasses to read the pieces and write my notes. I met one of my writers in the lobby and he tried to calm me down, but I had to trudge all the way up to my apartment, fetch my old, cellophane taped glasses to run the meeting. I then had to drive back to work, dig through trash, unsuccessfully, and then buy a cheap replacement in Walmart, driving home past the high insurance 22:00 point! That was just day one!?

The rest of the week wasn’t much better. Tuesday, I drove to Columbia for the April Tesla Tuesdays. Wednesday I met with my therapist, missing about half of a work meeting because I couldn’t get sound to work in the car, then drove to the EVA/DC monthly meeting. On Thursday I had Toastmasters, where I was the General Evaluator. And on Friday, I drove down to Regency Furniture Stadium for a secret Tesla event! Meanwhile, at work, my branch had gone out of sync with the main branch, and I had to soft reset it to get it back in sync, but when I did, I forgot to copy all my old commit messages, which had all my notes from my work up until that point. Again, I need sleep because my productivity sinks when I’m tired.

Insane Weekend

Next, I look at my weekend schedule for the first time because, when could I have looked at it sooner. I had a Tesla event in at the Starr Brewery at The Perch (to see a CyberTruck but I saw one in Texarkana so I was good), another in Clarksville Common, and a cosplay event in Ellicott City. I decided to attend all three but I screwed up royally because I forgot to pay for and get a ticket to the Cosplay event, and didn’t check the web page for where the munchie squad would be so I ended up crashing, uninvited, and almost got kicked out of the group which I had been one of the founding members. And thus, I wasn’t able to obtain any photos of that event. And that was just Saturday.

One Sunday, I had a writing seminar with The Hourlings, and then an event in Herndon to promote vegan and sustainable living. I attended the last two hours of the Herndon event, since I was double-booked, then went home for the movie discussion with the Maryland Science Book Club. I was going to meet my friend Lisa that evening but, since she was organizing a very important event taking place today, which I sadly can’t make because of work, we agreed that we were both too busy to make that happen. But, I hope to see her Saturday!

Overscheduling and Undersleeping

Needless to say I was even more exhausted after all that and was happy to cancel the Monday night Reston Writers meeting, quite sleepless, even forgetting my daily weigh-in! I went from a week where every day I had an event to a week where I only had one evening event. Bliss? No, because I have fallen behind with my work and my boss has noticed and put me on warning in our quarterly touchpoints. This is very not good. So, I’m going to shut up now, and get back to work because nothing, but nothing, right now, in my life is more important to me than my job!

My therapist sent my an article which exemplifies my conundrum: How to Stop Overscheduling Yourself.

Take care gentle reader and remember, tomorrow is another day, and another chance to get a good night’s sleep!

Community Room at The Avant

A Half-Century of a TimeHorse

In one month, I will be celebrating my half-century of existence. What’s more, I will, for the first time in a quarter century, single. After much hemming and hawing over my continued love for the woman who was my wife, with the frustration over so many things I can’t discuss, the coup de gras being things like Nowhere to run? and Sheltered in Place with a Domestic Abuser? and incessant unnecessary forced to sanitize when we really should just Relax—you actually don’t need to sanitize your food!

The thing is, these days I need to physically leave my premises 3 days a week because I’m required in the office. I’m typically the only one wearing a mask there because I do believe in being cautious—especially since the recent SARS-CoV-2 outbreak. It’s not like I’m endangering myself when I go to a writing group or an electric car event. I use due caution every time I’m out, typically 5 days a week. I’ve even tested negative, and triple vaccinated!

You’d think that’d be enough, but nope. Every time I return to the house, I have to do the four S‘s. I’m effectively forced to Surrender all of my items—iPhone, Apple Watch, wallet, even my glasses and wait for them to be Sanitized! Then I need to Strip to my underwear because my clothes “must be contaminated”. Finally, I’m supposed to Shower, but and only when I come home, never in the morning or before I go out.

I put up with a lot for all these years, from a profound lack of physical intimacy to constant threats of divorce whenever she was cross with me. I put up with it for all these years because I truly believed she was the best woman I could ever hope to be with. The truth is, she may still be the best, but with all I have to deal with, I would quite frankly rather be alone—though I’m not dead yet, so we’ll see what the future holds.

Now, you may be wondering why it’s taking me so long to move to my new apartment, especially since I’ve been paying rent since 30 January. Well, for the last 11 years, I have been enjoying extremely inexpensive charging at my house on the Dominion Schedule EV with my Clipper Creek CS-100. But, when I got #CO2Fre, my first Tesla #P三D, it came with free, unlimited SuperCharging. The plan was, I could take advantage of the free fuel, move to an apartment, and just charge up the vehicle on my way to work at the Sterling Supercharger.

But then, while coming back from a Star Wars cosplay event, where I was cosplaying Grand Moff Tarkin, running late for a barbeque with my brother, I found myself on the most evil road in all of Fairfax County. Braddock Road is mostly a straight road, but it makes this one incongruous bend which is the bane of all my existence. I had just paid off #CO2Fre 24 days earlier, when, on 25 July 2021, the same year I watched my mother die and attended my dear Aunt’s funeral, the greatest car I’ll ever own, and my ticket out of here was totaled. I was taken to the hospital and, because of the airbag deployment, I was even left in a cast—which you can see on my TikTok. To top it all off, my uncle died on 31 December 2021 to cap off an utterly tragic year.

GEICO and Tesla refused to fix it. I lost my ride, my free fuel, and my free celular entertainment system, the later a $99 per year value. Supercharging I can’t even begin to estimate, because I wasn’t using it during the Pandemic, and I knew I would need it when I moved to an apartment.

As it was, I did find an apartment with EV Charging. However, if you don’t move your car within 4 hours, you will be charged an arm and a leg, meaning you’d have to get home, and set an alarm to remind you to go back down and move your car. What’s more, while charging under Schedule EV costs me about 7.5¢ per kWh, the apartment costs 15¢ per kWh, double the price. And, if I wanted to use the Supercharger, it would cost 30¢ per kWh, four times what I’m used to paying. And that cost is constantly increasing!

People seriously lambasted me on social networks when I lost #CO2Fre. Of course, it’s just a car, but my whole plan went up in ashes with that loss, and here I am, 123 days with an empty apartment, stuck with the quadruple S‘s, because I just want keep saving on fuel. That’s why I was so sad when I lost my ride, because I knew life would be more expensive and I would end up staying longer than I needed. I wish folks could have understood—I had to take whole 2 month hiatus from social networks to avoid the vitriol.

However, here we are, today. I now have #NoSO2TeslaP三D, I pay for Supercharging and Premium Connectivity, but I got rid of GEICO, who grossly undervalued my precious ride, and now am insured by Tesla, constantly trying to improve my Safety Score to lower my insurance rate, as well as finally qualify to beta test my $14,000 investment in the Full Self-Driving Beta. And my wife is working with my to get the divorce finalized as soon as possible as a final birthday present to me.

And you know what? Imma have a party! A party to celebrate a half-century of existence, a party to celebrate my divorce and freeness, a part to play board games and sing karaoke and cosplay at your leisure, to grill with my brother and have pizza aplenty with plenty of vegetarian and other dietary options as requested. And unlike Jeffrey’s Jammin Birthday Bash 2 years ago, this party will be in person, on the third floor and community space of my new apartment in Reston Town Center. I’m hoping maybe even the Metro will open by then, but then, I’ll be lucky to just have you show up.

Get your free tickets here! Please remember to RSVP so I can let the concierge know you’re coming.

The Twelve Doctors and the TimeHorse

Doctor Who: 57 Years Young

The Twelve Doctors and the TimeHorse
A version of the 50th Anniversary background with the TimeHorse Logo. Hence, some currently beloved Doctors are missing.

Today is Doctor Who Day, the anniversary of the first ever episode of Doctor Who. And seeing as it’s also the day that my Reston Writers’ Review meets, I decided I should try my hand a fan fiction once again.

Yes, I did say once again. In fact, my first ever written work was from when I was 14 or so years old, and a huge fan of the program. Colin Baker was the Doctor back then and his companion was Perpugilliam ‘Peri’ Brown. I wrote it to take place during the mysterious disappearance of the Roanoke Colony in Virginia (Modern North Carolina) and involved the Terrible Zodin, a character never appearing on camera, created by Terrance Dicks. Indeed, the character is only mentioned in two off-handed comments in The Five Doctors and Attack of the Cybermen.

For 2020, I wanted to use the Sixth Doctor again only this time with his second companion, Melanie ‘Mel’ Bush, a software engineer—and in my story, a cyber-security expert. I teamed her up with Yasmin ‘Yaz’ Khan and the Thirteenth Doctor. And for fun, I had them fight Missy, with cameos from all the other Masters. Of course, I did need one final cameo to make the multi-Doctor story complete. I added the Doctor’s Granddaughter, Susan Campbell and her husband David as well.

But, let me be honest. The story was total rubbish. I rushed to write the whole thing on my phone on Sunday night just to get it uploaded in time, and like my feeble attempt at a Halloween story with only 101 words, it sunk like a lead balloon. I guess I’m just not on my writing A-game these days. I just need to find the time… does anyone have a TARDIS!

EDIT 2020-12-10: Forgot to post this on Doctor Who day. It was originally scheduled for posting on Monday, 23 November, 2020. Sorry for the delay.

TeslaCam, Tesla Can’t

I haven’t been able to use the TeslaCam since 27 July 2019. That’s because, around TeslaOS 2019.28.1, Tesla broke most USB Sticks used for Dashcam functionality, because, it claimed, they were too slow.

Not having a DashCam and having such a mysterious and incomprehensible error—my USB stick was fast enough—I was afraid to buy a new USB stick to see if I could get it working again. For months I dithered on the issue, totally unsure what Tesla wanted, and wanting so badly not to waste money on a device that would fail with Tesla.

Compound that with, in December, 2019, thanks to an AutoPilot, #CO2Fre failed to stop when a vehicle with California plates cut me off by jumping into the exit lane ahead of me at the last minute, causing $4,000 worth of damage I can’t remotely afford to pay. The scratches, therefore, remain to this day. And as no solace, I don’t even have the Dashcam video to go over the details even if I wanted to make an Insurance claim. So, I have scratches but still no Dashcam.

Then TeslaOS 2020.12.5 came out, which added support for watching Dashcam videos within #CO2Fre. Since I had the time off thanks to Covidapolis, I decided to try again with the Dashcam, and found this neat video:

Thanks to that video I decided to buy a 2TB SanDisk Extreme Portable SSD drive, a SamSung SXDC UHS-I EVO Select Card, and a Raspberry Pi Zero W.

I didn’t have access to my car because of the hypochondriac until the day of my #CO2Fre demo. I plugged in the SanDisk drive with its USB-C to USB-A adaptor and… nothing. I had the drive plugged in, but no camera was showing, and I couldn’t show off any of the Dashcam features during my entire presentation, including Dashcam footage of the speed test on the main screen after I parked, despite having the drive plugged in. The demo still went well, but I’m annoyed how hard I tried to get this working and still failed.

No Camera Icon
Sometimes the Camera with an X appears, but usually there’s no camera icon whatsoever, as can be seen here. © 2020, Jeffrey C. Jacobs

Afterwards, I tried to play around some more. Doing so requires me to go through decontamination because, for some reason, the hypochondriac thinks #CO2Fre has SARS-CoV-2. Meaning, I have to keep changing my clothes every time I go to the car because sitting in my car contaminates my clothes.

The drive was exFAT, so I reformatted it as FAT32. The drive did flash on the screen after some cord giggling, but it said it wasn’t formatted properly despite having the TeslaCam folder and being named TeslaCam. Since I’ve read that Tesla supports exFAT, I formatted it back as that, and it sits now, unable to connect.

2TB SanDisk
I have a 2TB SanDisk Solid-State Drive USB 3.1 compatible 10GB/s Drive plugging into #CO2Fre with a USB-C connector and a USB-C to USB-A adaptor hooked into #CO2Fre, yet #CO2Fre can’t see it! © 2020, Jeffrey C. Jacobs

I also tried my MicroSD chip with an adaptor. Originally, the chip was supposed to be part of the Raspberry Pi, but I wanted to test to see if it could be used as the TeslaCam directly. No dice. I’d hook up the Raspberry Pi and try with that, but I have to finish updating my Résumé and fix my broken Zone File updater for Reston Writers first. I just have too much going on to worry about going any further with this nightmare of Tesla‘s.

The way I see it, the drive works in a PC, the drive works in a Mac, it just doesn’t work in #CO2Fre. When you’ve tried everything else, the simple answer it so blame Tesla. So, I made a Mobile Service Request and they should be here Friday morning.

Why must Tesla make this so hard!?!?

In any case, unless I find another set of clothes to wear, even without my Dashcam, I shall very much miss cruising on a cloud.

When Zoom Online fails, phone it in

Today, at Reston Writers Review, we had a major Zoom snafu. One of our writers was having a dickens of a time trying to communicate through the Zoom interface when we were reviewing her piece. We had a similar problem on Sunday with The Hourlings but were able to solve that with the person being reviewed just shutting off her video and only using the microphone.

Today, even that didn’t work. One member had to leave the meeting, the connection was so bad and even when the woman being reviewed turned off her video, her voice was still astoundingly choppy.

The only thing for it was to use the backdoor option provided by Zoom: the telephone interface. I hastily logged into the Zoom account provided to me, copied the full meeting info from the Zoom side—including the dial in numbers for connecting to Zoom on the telephone—and, finally, our author was back in the meeting.

Overall, it took about 10 minutes for us to fix all the difficulties listed above, but fortunately we only had five more folks who wanted to give their review, and we were still done by 21:00, our normal meeting end time.

All in all, it was a great and successful meeting despite the glitch. It’s more than likely Internet bandwidth is getting frayed due to an upswing in online meeting. But we adopted and adapted, and improved, just like the motto of the round table suggests.

Thank you for reading!

The danger of Upgrading WordPress

Late last night, just as I completed my post about Tesla trying to scam me, I decided to upgrade WordPress to version 5.4. Normally, this shouldn’t be an issue, but for me, since I run a multisite system, there are extra security issues and directory layout complications that must be taken into account.

The first step was, apparently, to backup my database. Since I’ve never backed up the mysql database before, I felt this seemed like a reasonable approach. I certainly didn’t want to pay JetPack to do it; I’m a genuine code jockey, I can do my own backups. After some digging around, I found mysqldump. Unfortunately, all the instructions on how to use it were incorrect.

After some further poking around, I finally came across the correct syntax. Essentially, the user name and host have to come before the --all-databases command. Also, the host can’t be localhost, it must be the IP for the local host. Unfortunately, I was not able to find a way to get it to prompt for my password which meant I had to type my password in the command line, leaving all there in the open for any history recall to see. Not very secure at all.

mysqldump -h 127.0.0.1 --user=<uid> --password=<pw> --all-databases > mysql.2020.03.31.bak

mysqldump command; note <uid> and <pw> are placeholders for the user name and password; you must replace this with your own values.

Alas, I was not able to find a way to get mysqldump to prompt for a password. I think if I have more time, I may write a python script which builds the command by first prompting for the password. At least that way, the password wouldn’t be stored in the command line history.

The mysqldump command is quite clever. It just stores the list of sql commands that would be required to recreate the databases you have stored. However, the file is rather big and being text, it compresses nicely with bzip2 -9, which is what I did.

Once I did this, I was ready for the main Upgrade. I held my breath and pulled the trigger…

Wordpress
This site is built with WordPress… and a very skilled programmer who has been writing HTML since 1993 and hacking UNIX for even longer.

The install progressed along nicely until it tried to write a file to the wordpress directory. 🤦🏻‍♂️ I logged into my server and sure enough, the permissions on the wordpress directory were 755, which meant the user could add and remove files, but the group and anyone else could not. You see, with my multisite, I try to have all wordpress files with user wp-user and group as www-data, to work with apache. And apache runs all web processes as www-data for both user and group. Thus, when WordPress asked to add a file to its codebase, apache could not write it because the www-data group didn’t have permission, only wp-user did.

find /usr/share/wordpress -type 'd' -print0 | xargs -0 sudo chmod 775

Change all the wordpress directors to allow www-data to add and remove files from them.

Realizing my mistake, I changed the permissions on all directories to be 775 (both wp-user and www-data could add and remove files). Unfortunately, it was too late. Instead, I had no choice but to blow away my current install and replace it with a fresh, new install of WordPress 5.4. At least, that’s what I did on a high level. The details, though, are a bit more complex.

Once I extracted all the wordpress files, I needed to get their ownership to match the settings for my wordpress install. I was able to do this quite easily with the chown command.

sudo chown -R wp-user:www-data wordpress/

Command to set the right file ownership for wordpress.

Next, I set the directories as above. Finally, the files themselves had to have the right permissions. Namely, they should be readable and writable by wp-user and the www-data group, but only readable to others, not writable. Namely, they needed to be set to permission 664.

find wordpress/ -type 'f' -print0 | xargs -0 sudo chmod 664

Change all the wordpress files to allow www-data to modify them.

Next, I had to copy over the active wordpress configuration file. This file is actually fairly spartan as all the active site configurations are actually stored in /etc/wordpress; my wp-config.php actually just scans this directory for configurations. The configurations, in turn, point to directories in /srv/www/wp-content with the site-specific files. I thuns needed to bring that file over to the new install.

cp /usr/share/wordpress/wp-config.php wordpress

Copy the configuration to the new wordpress install.

Next, I wanted to preserve the Languages I had installed. I just copied the entire directory over to the local install.

cp -r /usr/share/wordpress/wp-content/languages wordpress/wp-content/

Copy the Languages directory to the wordpress install.

I also have an upgrades directory that I wanted to preserve.

cp -r /usr/share/wordpress/wp-content/upgrades/ wordpress/wp-content/

Copy the Upgrades directory to the wordpress install.

Finally, I needed to move the links to my shared, dynamic contents that are for all the sites on my server. Specifically, the uploads, themes, and plugins folders all rest in /var/lib/wordpress/wp-content. (Technically, Uploads rests in blog.restonwriters.org site-specific Uploads directory, but that’s something I’ll fix later to conform with the same layout Themes and Plugins use.) Since these are already symbolic links, they can be moved to the new wordpress install directory to replace the defaults.

One caveat however, is the default install for wordpress comes with one plugin and three themes. In order to preserve those, I renamed the default plugins directory to plugins-default, and the default themes directory to themes-default. This was necessary before the symbolic links could be moved since those directories were in the way.

mv /usr/share/wordpress/wp-content/uploads wordpress/wp-content
mv /usr/share/wordpress/wp-content/plugins wordpress/wp-content
mv /usr/share/wordpress/wp-content/themes wordpress/wp-content

Move the symbolic links to the plugins, themes, and uploads directories.

Finally, the apache permissions file needed to be moved as it was also a link, pointing to /etc/wordpress/htaccess. I store the file there because it makes it easier to maintain in case I accidentally bow the .htaccess file away.

cp /usr/share/wordpress/.htaccess wordpress

Move the symbolic link to the .htaccess file.

Once all this is done, it’s a good idea to run the chown and chmod commands from above on the wordpress install directory once more to make sure the copied files and moved links are also properly attributed.

Finally, it was time to perform the brain transplant and move my staged wordpress install to the active /usr/share/ directory. I moved the current install to a temporary directory and then moved my staging install to the /usr/share/ directory to replace it.

mv /usr/share/wordpress /usr/share/wordpress-old
mv wordpress /usr/share/wordpress

Replace the installed wordpress with the new version.

Once all this was done, I was able to get to my web page, and wordpress prompted me to upgrade my database. Once this was done my sites were back online. In total, this site and its sister sites were down for a total of about forty-five minutes. It was a long day yesterday and I was exhausted but I did get it done and you can now see the results.

I hope you enjoyed my story about hacking UNIX. Please note, I am available for hire if you like what you see!

I Am Irate

Google ate me email

From about 2020-03-23T14:30:00Z (10:30 am, Monday) to about 2020-03-23T23:30:00Z (7:30 pm, Monday), Google was redirecting all my email and either bouncing it or deleting it.

I Am Irate
Too angry for words!

Let me repeat, google deleted or bounced my email for Nine Hours, as a part of the setup of my setup for a paid Google Apps account. The setup for these accounts are a bit weird. They require you to create a new google entity with your own company URL. Fortunately, I have multiple domains I own and maintain, including this one, TimeHorse.com.

I probably should have used my writing group domain, RestonWriters.org. After all, the whole reason I wanted to get a paid Google account is because Meetup was moving to Online-Only meetings, following the outbreak of SARS-COV-2, and I needed a tool that allowed for video conferencing.

Skype was a non-starter. For one thing, it’s great for person-to-person communications, but for group chats, it has this annoying habit of muting everyone except the current speaker and you have to wait until that speaker stops to get a word in edgewise. My understanding is WhatsApp has the same problem.

Meetup actually suggested using Google Hangouts or Zoom. I happen to like Zoom. I use it for my regular NPVIC Grassroots strategy meetings and for Toastmasters and it’s always worked great. Zoom does support up to a hundred participants, both free and Pro. The only problem is, each of those Zoom sessions are either limited to the free forty-minute block or are using an up-to-24-hour Zoom Pro Account. Since most of my Meetups are at least an hour, breaking meeting up into forty-minute chunks would be tedious. And, at $14.99 a month, the professional account is well out of my price range.

Just before the first week of Virtual meetings began, my writing colleagues and I, including Elizabeth Hayes, who runs The Hourlings, tested both free Zoom and Google Hangout. Despite being limited to ten people, we decided on Google Hangout and I mapped it to our official Virtual Meeting URL.

Ten people worked fine for Reston Writers and for the Saturday Morning Review. The Saturday Morning Review actually worked out quite well because Meetup, despite suggesting we move to a virtual platform, still won’t let you delete the venue from your event and mark it as virtual, which, when editing events can cause some confusion. But when the Library cancelled all our events, I just deleted them all from the Meetup Calendar, and recreated them with no Venue and just announced them as occurring in Cyberspace.

Stay with me folks, I’m getting to the email…

As Sunday approached, I new ten participants wouldn’t be enough. Google Hangout would be fine for Bewie Bevy of Brainy Books and Saturday Morning Review, and likely The Science Book Club, as they all usually have fewer than ten participants for each meeting. The Hourlings, on the other hand, often had twelve, and sometimes as many as sixteen!

I new Zoom was $14.99 a month, but I read that Google App accounts could up the number of participants to twenty-five. Unfortunately my 2TB Google Drive account didn’t qualify. I had to get a Google Apps account.

And that’s where my troubles began.

At first, I could only sign up for the $12 per month account, even though I’d read it could be had for $6. Since the setup has a fortnight trial period, I didn’t worry about the financial discrepancy. I set up the account with my business email address for TimeHorse, LLC. I associated it with with that email, it connected to my Gandi Registrar, and my account was ready to go. I created a Google Hangout and assigned it to the Virtual Meeting URL, hoping it would allow twenty-five. The plan was to use it with the Hourlings to verify that fact.

It failed! We still could only get ten people into the meetup despite it being a paid account.

Unfortunately, since Monday I’ve been on Weather and Safety Leave from work because my Telework agreement was revoked, but that’s a story for another day as this post is long as it is! However, it did allow me to speak to Google and they suggested I try Google Meet. Meet was included with all Google App paid accounts, and it would allow for up to a hundred people and could be as long as I needed. Also, I could downgrade to the $6 per month account and I would still be able to use it. I thus downgraded.

We tried it with Reston Writers Review and it worked wonderfully. We had up to twelve connections simultaneously! But I’m getting ahead of myself.

At around 10:30 am, that Monday, after chatting with Google, I was examining my Google Apps account more closely. It was telling me I had one last step I needed to complete: integrate me email with Gmail.

Stop
Stop, do not pass Go. You’re done!

That’s when my troubles began. You see, what this innocuous, turn-key step says it does is it says it sets up GMail for your company. What it actually does is obliterate all the MX Records (email routing information) of your DNS (Internet routing information) Zone File (routing configuration file) on Gandi and replace it with MX Records that point to Google. The setup wizard doesn’t actually tell you this and I’m totally oblivious.

At current writing, I have 188 forwarded email addresses set up on Gandi with their MX Servers. One of those is my business email, the one Google took over and is my Google Apps login. That’s the email google set up as the official email address used in GMail. Once the GMail setup goes through and I send an email from the GMail interface to my personal email address on the timehorse.com domain.

It never arrives. All day long, I watch my email and, strangely, nothing arrives after 10:30 in the morning. I refresh and refresh, and it’s still nothing. Where have all my emails gone?

It’s not until I’m setting up for Reston Writers that I decide to contact Google about this. I’m crazy-busy setting up the Google Meet, opening up the pieces we’d be reviewing on my computer, and, simultaneously, chatting with Google, trying to figure out why I’m not receiving any email.

Eventually, Google Tech Support starts talking about MX Records and a chill runs down my spine. As you probably gathered by now, I am well versed in DNS records and Zone File manipulation. I even have a Python script which updates my DNS A Record when the IP Address for this server changes.

With trepidation, I logged into my Gandi account and saw the damage. Google had modified my Zone file and added a bunch of strange new MX Records pointing to Google. They had nuked all my Gandi Email forward since they’d redirected all email traffic to google. As google only had one account registered on the domain, timehorse.com, namely my business email address, every other email address I possessed was either being deleted or bounced by google!

Fortunately, Gandi’s Email Forwarding page provides a warning when the Zone file doesn’t point to their email server, listing the correct MX Record settings to use Gandi as the mail hosting server. I quickly commented out the Google MX Records and pasted in the Gandi MX Records around 7:30 pm, in the middle of my Reston Writers meeting.

Needless to say, I was miffed that I could not give my full attention to my writers during our weekly writing gettogether. But it’s good I finally did figure out the disastrous actions committed by Google after only nine hours, and not a day or more.

I may never know what was contained in those nine hours of lost emails. I suppose there is one blessing, though. I get too much email already and still have dozens of unread messages I’m desperately trying to catch up on. One Covidapolis, novel-length email after another from every business under the sun. STFU companies, you’re all doing the same thing and I don’t like reading the same message again, and again, and again! You have a plan, that’s all I need to know!

Maybe Google was doing me a favor?

In the end, I was able to solve the problem because I got skills and I’m available for hire!