Category Archives: Technical

General technical stuff


Here is how to configure MySQL so you can load data without getting the following error:

Loading local data is disabled; this must be enabled on both the client and server sides

In my example, I’m running MySQL 8 in a Docker Swarm and connecting using the command-line client.

On the server side, you need to set local-infile to ON.

Here is what the MySQL section of the compose file looks like. Note the setting has been added to the command: section.

  image: mysql:8.0.22
  command: --default-authentication-plugin=mysql_native_password --local-infile=ON
  hostname: mysql
    - "3306:3306"
    - mysql_data:/var/lib/mysql
    MYSQL_ROOT_PASSWORD_FILE: /run/secrets/mysql_password
    - mysql_password

On the client side, you have to set local-infile=1. This can be done directly in the call to the client

mysql --local-infile=1 

or you can set it in the configuration file

mysql --defaults-extra-file=./mysql.conf 

with the configuration file (ex: mysql.conf) set something like this:

host = <your hostname>
user = <your username>
password = <your password>

With these two settings, you should be good to go!

Fixing Ubuntu VFS: Can’t find ext4 filesystem error on reboot

TL;DR: When you mount drives in your /etc/fstab, don’t use the drive designations (/dev/sda, /dev/sdb, etc.) because they can change upon reboot. You should label the drives instead and use those labels in /etc/fstab.

List your drives:

fdisk --list | more

Give each drive you need to mount a label using tune2fs. For example:

tune2fs -L EXAMPLE_LABEL /dev/sdb

Change /etc/fstab to use the labels. From:

/dev/sdb  /my_disk ext4 defaults 0 0


LABEL=EXAMPLE_LABEL /my_disk ext4 defaults 0 0


OK, now to the blah, blah, blah part:

Today I learned that the drives can get detected in a different order on each reboot, so the designations (/dev/sdb, /dev/sdc, etc.) could change. I’m not sure how I’ve worked with Linux all these years and not clued into that, but here we are.

I have a desktop system running Pop!_OS 20.10, which is based on Ubuntu 20.10. My system has three internal drives and one external USB. Along with root (/), one internal drive is mounted as /data, and the other as /reference. Yes, they are both one big partition each.

A few weeks ago when I updated the system from 20.04 to 20.10 and rebooted, I was hosed. The system said it couldn’t find the ext4 file system. After a lot of googling, casting about, and fixing things that were a problem without being the problem, I noticed that the mounts for the internal drives were all screwed up. My /data drive was there, but it contained the contents of /reference. The /reference drive was gone. Fortunately I still had my root drive.

Looking at /etc/fstab and comparing it to the output from fdisk –list, it was all screwed up. Somehow the mount points were pointing to the wrong devices. I fixed them, rebooted, and I was on my way. Turns out I didn’t really fix it, I just got lucky on that reboot.

Today I had several workspaces going and performance started to get weird. I figured I’d just stop where I was and reboot.

…and got the same issue again. Couldn’t find the ext4 file system. The contents of /etc/fstab looked wrong compared to fdisk –list again. I wondered why fstab kept getting reverted or something, I fixed it, rebooted, and… got the error again!

Looking at the fdisk –list output again, I noticed that the disks has moved around. What was /dev/sdc on last boot was now /dev/sdd. The prior /dev/sdb was now /dev/sdc. That’s when I learned that this was apparently a thing, and I should be using the disk UUID or a label in /etc/fstab.

I figured labeling would be easier. I looked at the output from fdisk –list again and figured out which device was the data drive and which was reference. I then labeled them:

tune2fs -L DATA_DISK /dev/sdd
tune2fs -L REF_DISK /dev/sdc

I then changed /etc/fstab to use the labels:

LABEL=DATA_DISK /reference ext4 defaults 0 0
LABEL=REF_DISK /reference ext4 defaults 0 0

Rebooted, and I’m back!

Flashing an iDatalink Maestro RR using 64 Bit Windows 10

I recently purchased an iDatalink Maestro RR, and was surprised when I read the system requirements for the Weblink UpdaterWindows 7 now supported? Internet Explorer 7.0 or greater [Excluding 64 bit version]? 

Also, when I downloaded and ran the program, it told me it needed .NET framework 2.0.

I have a 64 Bit Windows 10 computer with .NET framework 4.x installed, but that’s not backward compatible with framework 2.0 apparently. Now what?

After some searching, I was able to flash the module on my computer. Here is how:

  1. You need to enable the .NET framework 2.0+ 3.5. It’s an option on Windows 10, you just need to enable it.
    1. In the search box type “Windows feature” to bring up the Windows Feature control.

      Turn Windows features on or off

      Turn Windows features on or off

    2. Check the .NET framework 3.5 (includes .NET 2.0 and 3.0).

      Windows Feature Control Panel

      Windows Feature Control Panel


    3. Windows will download the additional files it needs and request to reboot your computer.
  2. You also need a 32 bit version of Internet Explorer. Fortunately, that is also included on Windows 10.
    1. Open Internet Explorer.
    2. Go to Internet Options (upper right gear icon on the browser).

      Internet Options Menu

      Internet Options Menu

    3. Go to the Advanced tab and check “Enable Enhanced Protected Mode.”

      Enhanced Protection

      Enhanced Protection Mode

    4. On the Security tab, verify that Enable Protected Mode is checked. It should be. If not, check it.

      Enable Protected Mode

      Enable Protected Mode

  3. In the search box, type “user account control”.
  4. Select “Change User Account Control Settings”.
  5. Verify that the slider is not set to “Never notify.”

    User Account Control

    User Account Control

  6. You will need to reboot again.
  7. Install the Weblink Updater.
  8. Login to iDatalink.
  9. Plug your Maestro RR into a USB port.
  10. Try flashing your module. If you get a prompts at the bottom of the browser asking for permission to run the “adsService.service”, select yes.

If your computer doesn’t recognize the Maestro, try unplugging it from the computer, logging out of iDatalink, refreshing the iDatalink page, logging back in, and plugging the model back in.

It took me a couple of tries to get the module to flash completely. The first time the progress bar made it all the way to the end and then froze. The second time it worked, and the status of the module showed the correct firmware installed. I installed it in my car and it works great!

Good luck!

Removing Objects in a Photo with Gimp

This ended up being a couple of extra steps beyond just Googling, so I wanted to put it out there for the next person.

I found these instructions on using the Gimp plugin Synthesizer to remove objects to be pretty useful, though it looks like some of the menu options have moved around in Gimp 2.8.

Getting the Synthesizer plugin installed correctly on Ubuntu took a couple of tries. Here are great instructions for adding a PPA to your config so you can just use a couple of apt-get commands to install Gimp and many useful plugins, including Synthesizer. It came down to this:

sudo add-apt-repository ppa:otto-kesselgulasch/gimp
sudo apt-get update
sudo apt-get install gimp
sudo apt-get install gimp-plugin-registry

Good luck!

Installing a Qi Wireless Charging and NFC Antenna on an LG G3

Here are step-by-step instructions for installing a QI Wireless charging + NFC antenna sticker on your LG G3, replacing your existing NFC-only antenna. As a bonus, I was able to get the existing NFC antenna off in one piece without damaging it (I think), so in theory I could put it back on if I needed to go back. I don’t know why I would do that, but it’s good to have options.

These instructions should generally work for other similar phones and compatible Qi stickers.


I purchased the LG G3 Qi Wireless Charging + NFC Antenna Sticker for Verizon VS985, T-mobile D851, Sprint LS990 (really it works for any version of the G3) and a PowerBot Qi Enabled Wireless Charger Inductive Charging Pad Station from Amazon. The total came to under $21.

Charging PadQi StickerNote that there are two stickers here. The one on the right goes on first. The top two connectors are for the NFC antenna. The bottom two are for charging.


I used a hairdryer, a pencil, and a small screwdriver.


Step 1 – Turn off your phone and remove the back.

BeforeNote the location of the sticker.  Again, you are replacing the first two connectors (far right in this orientation), and you will be adding two more to the left of them for charging. It’s important that these line up correctly when you install the new sticker.

Step 2 – Mark the location of the connectors

MarkingUsing a pencil, mark the location of the metal connectors on the exiting sticker, both vertical and horizontal so you can line up the new sticker correctly when you install it.

Step 3 – Remove the existing sticker

Set the hairdryer to high heat but low fan. Use the hairdryer to warm the area of the sticker where the connectors are located. This will loosen up the glue on the back of the sticker and allow you to pry it away from the back of the case with the small screwdriver.

RemovingUse the hairdryer to heat sections of the sticker as you pull it away from the case. Remove the side where the connectors are, then begin to work up the other side until you finally remove the small strip on the opposite side of the hole in the case. Basically you are working in a “U” shape starting with the connector side, and working to the bottom and then up the other side.

When you are done, the existing antenna should have come off cleanly.


Step 4 – Install the new sticker

Starting with the small strip with the connectors, use your pencil markings to carefully line them up. Once you have that right, work your way down and stick the large part of the sticker to the case.

Installed1Double-check to make sure the top two connectors look like they are in the right place per your pencil markings. You want to make sure this is right before you go to the next step.

Step 5 – Install the covering sticker

I have to admit, this part was a pain. I rotated the case around a lot trying to make sure I understood exactly how this sticker should fit over the first one.

Installed2Again, I started with the strip that covers the portion with the connectors, then worked my way across, down, then back up the other side. I had a couple of false starts, but was able to pull back the sticker and start again until I finally got it.

Step 6 – Test!

Put your phone back together and turn it on. Connect the Qi pad to a micro-USB port. Place the phone on the Qi pad and see if it works. You need to get the pad centered on the location of the sticker. It’s slightly below the mid-point on the phone.Charging

Once everything appears to work, go ahead and erase your pencil markings.

I hope you found these instructions helpful.  Good luck!

iPhone Group Messaging on Android with ChompSMS

Group messaging with a couple of iPhone usersHere is another quick hint I wanted to get out there.

If you are a user of ChompSMS and you want to participate in iPhone Group Messages, there are a couple of options you need to enable.

From the main screen hit the menu overflow item in the top right corner (the three dots).  Select Settings and then SMS & MMS Settings.



MMS Settings


Under the MMS section, check the box next to Use MMS for Group Messages. Also make sure Your Mobile Number is set.

If you are in the middle of a group chat it will not fix past messages, but all future ones will appear as a separate list with all participants in it as shown above.

Connecting an LG G3 to OS X

I recently purchased an LG G3 phone. The phone is awesome, but I was having some trouble getting it to connect to my Mac running OS X 10.7.5 so I could copy files over to it. After wasting some time trying to download the OS X USB driver from LG, I ended up just going with Android File Transfer.

The process is simple (just download, install, and run), but in the event that it can’t find your phone, there are two things to check:

  1. Make sure your phone is connected as a Media device (MTP). This will be in the notifications on the phone.
  2. Use the USB cable that came with the phone.

I could not get the phone to connect until I tried with the original USB cable. Then it worked perfectly. I just wanted to get that hint out there. Good luck!

Update: I also contacted LG customer support about my issues with downloading their USB driver. They got back to me quickly, but not until after I had figured it out and made this post. They told me to use Android File Transfer. 🙂

Update 2: Make sure you do not have Samsung Kies installed on your computer. It will prevent Android File Transfer from operating correctly.

Oracle 11g Flashback Data Archive (FDA) query not returning results for some users

Once upon a time, we were seeing inconsistent results when using Flashback Data Archive (FDA) on an Oracle 11g R2 database.   We had created an FDA and enabled it for a few tables.  User A owned the tables. User B had SELECT and FLASHBACK privileges to the tables in schema A. We inserted a row into table A.X with FDA enabled.

When user A performed SELECT * FROM X AS OF TIMESTAMP SYSTIMESTAMP  they would see the row.

When user B performed  SELECT * FROM A.X AS OF TIMESTAMP SYSTIMESTAMP the query returned 0 rows.

If we remove the “as of” clause and had user B perform SELECT * FROM A.X they saw the rows.

Both users had the same timezone settings. While trying to diagnose the problem with user B, we created user C, also with SELECT and FLASHBACK privs on A.X. The query for user C returned rows.

Thinking something was wrong with user B, we re-created user B. When we first tested it, the query for user B worked! After a couple of minutes, the query stopped returning rows again. Also, running the query for user A (the table owner) also returned 0 rows after a while. The query for user C still returned rows.   WTF?

Here was the solution:

When we examined the SYS.SMON_SCN_TIME table, we found several records where the TIME_DP values were far in the future (the year 2030). At one point a system administrator set the system clock incorrectly, and corrected it several minutes later.

We disabled FDA on the tables, and dropped the FDA and it’s tablespace. We then deleted all records from the SYS.SMON_SCN_TIME table. We created the FDA again and re-enabled it for the tables.

The FDA behaved as expected.

A post about the fix that made this post possible

The first issue I ran into after re-installing WordPress  and attempting to create a post was that the edit field would not accept input.  It appeared to be disabled.

You know, that’s the thing I’m typing in now, so it’s kinda important.

After a bunch of digging, it turns out the solution is to modify the wp-config.php and add the following right above where it tells you to stop editing:

define('CONCATENATE_SCRIPTS', false);

Just wanted to pass that along.