Purchasing a Tesla in West Virginia

There are a number of states where you can’t purchase a Tesla directly.  West Virginia is one of them. Your only option is to order online and pick it up in a neighboring state.

So this is a guide to doing that based on my own experience.

Why I Purchased a Tesla

Let’s get this out of the way first:  I don’t think I’m saving the world. I am aware that the initial environmental cost for the construction of an electric vehicle (EV) is actually higher than for an internal combustion engine (ICE) car. I am also aware that currently the vast majority of electricity in my state is produced from fossil fuels (mostly coal). 

One study I read said I’d have to drive around 70,000 miles before I made a net-positive environmental impact. If you want to look at it another way, this is your opportunity to drive a coal-powered car in West Virginia!

So why do it?  Here are my reasons:

Maintenance: The only maintenance items are tires, brakes, and wipers. No oil changes, no 50,000 service, no mufflers, no belt changes, etc.

Financial: The move to EVs is coming. I read an article about a year ago predicting that 2018/2019 ICE cars may be the last to have a good trade-in value. Of course, that was before the big chip shortage. Related to that, with the chip shortage and spiking used car values, this seemed a good time to trade-in my 2018 car and make the jump.

Convenience: With home charging, I liked the idea of leaving every day “with a full tank of gas” and never having to stop at a gas station. Or paying attention to gas prices.

Updates: A Tesla is like an iPhone that you drive around in. And like an iPhone, it gets frequent software updates with new features.

Resale Value: Teslas hold their value really well. In fact, with the ordering backlog, I’ve read that some used ones are selling for more than new ones because they’re available immediately (and because people are insane).

Curiosity: I just really want the experience of owning an EV to see what all the fuss is about.

Owner Satisfaction: Everyone I know who has a Tesla loves it and wouldn’t go back to driving anything else.

Typically I get a car and drive it into the dirt. I traded my last car in at 120K miles, and only because my wife wanted me to drive a car with the latest safety features (she likes me or something). During a discussion about this, a friend of mine wondered if it made more sense to get an EV and drive that into the dirt rather than your current ICE vehicle. That’s the theory I went with here.

Choosing a Car

In my case I chose the Model 3. Most of the time it will be just me driving the car to work, so I didn’t need anything big, and I didn’t have a need for the extra space to justify the additional expense of a Model Y.

However, I did want to shell out the extra money for AWD and longer range because of the weather here (and range anxiety). I opted against the performance package since frankly I’m not that interested and the range actually decreases, which seems counter-productive.

The next step was color. White was the first obvious choice because it’s the least expensive and looks nice. However I feel like most Teslas I see are white, a lot of cars in general are white, and my current car is white. Also, I didn’t like the look of the default 18” wheels when paired with a white body.  The 19” wheel upgrade looks good with white, but now you’re up to the same price as choosing another color, and you actually lose range with the 19” wheels.

I don’t like Tesla’s red and blue. That’s just a me thing.

So it was down to upgrading to black or grey with the default 18” wheels. My wife, my daughter, and I all independently choose the grey, so I felt pretty good about that.


You definitely want to check with your insurance company on how your rates will change after purchasing the Tesla. Mine wouldn’t change much, but I’ve heard stories of people having to switch companies because their current company wanted to massively increase their rate for having a Tesla.

Placing the Order

Just like any car, you pay for your Tesla through a combination of an optional vehicle trade-in, optional financing, and cash. Your total cost will be the car itself (based on your selected trim and options), a $1,200 destination fee, and a $4 tire fee.

You will have to put down a non-refundable deposit when you order, but this comes out of your final cost when you settle up before delivery. 

I decided not to purchase Full Self Driving since it was in beta and can be purchased for the same price later anyway. That ended up being a smart move since they offered a month-by-month option shortly after I ordered.


Don’t just accept the trade-in offer from Tesla.  It’s a joke. You seriously want to shop around. Try Carvana or CarMax. Look into other local dealerships who are buying used cars. I ended up finding a local dealership that purchased my car for $2,500 more than Tesla offered, matching the offer from CarMax. That saved me a trip to the DC area.


This wasn’t as bad as the trade in. I actually got a competitive rate on the financing through Tesla and went with it.

Between selling my car and cash, I covered about 60% of the cost of the car and financed the remaining 40%.

The Ordering Process

When I was purchasing my Tesla, I had a chat session open with a sales rep. She offered to stay on the chat if I had any questions during the ordering process, which was nice. My advice: If you want to do this, do the actual order in a separate window. I lost the chat session on the second or third screen in the ordering process.

However, literally as soon as I hit submit on the page with my contact info, I got a call from my personal sales contact with Tesla. I wasn’t even done with the whole ordering process! He was also super helpful and offered to answer any questions I had. He also gave me a number where I could text him with questions.

He told me my car would take about 9 weeks.  On the website it said 11-17 weeks.  Turns out he was dead-on.

Post-Order Actions

There are a number of items you should take care of while you wait for your car. Fortunately you have plenty of time to do it.

Change Delivery Location

By default, Tesla sends all WV deliveries to the dealership in MD. You can move it by calling the dealership you want to move it to and giving your order number. In my case my personal sales contact was able to move it to the Wexford, PA dealership.  That’s a 90 minute drive for me vs a 3 hour drive. Someone from Tesla Operations told me that only PA residents can pick up their cars in PA for tax reasons or somesuch.  Totally wrong.  You can pick up in PA. The Wexford dealership does it all the time. 

Prepare Home Charging

You really want to be able to charge at home. It’s best if you’re able to park in your garage.

In my case, the Telsa purchase kicked off a month-long process of purging and reorganizing so we could finally — after being in this house for ten years — park both cars in the garage. It’s tight, but it works.

For home charging, I went with having a 220v 14-50 outlet (like for an electric stove) installed in the garage, close to where I’ll be parking the car. I then purchased the 14-50 adapter for the charging cable that comes with the car. That’s $45 vs $500 for a fancy Tesla wall charger. The Tesla charger has a slightly better charging rate, but if it’s charging overnight anyway, who cares if it charges an hour faster while I’m asleep?

Purchase Other Items

There are some other items you may want to consider purchasing for your car. You don’t have to order them before you get the car, but you might want to have them from day 1.

All-Weather Floor Mats

You can purchase these directly from Tesla. I ended up purchasing a third party set. They look good and seem to fit pretty well. 

Center Console Organizers

I ended up getting the ones from Tesla, but there are a number of good third party options.

Sun Screens

These are supposed to be very helpful in the summer. You can purchase these directly from Tesla. I ended up purchasing a third party set.

Read the Owner’s Manual

This is not a normal car. It’s worth it to read through the manual a couple of times.  I keep finding new stuff every time I look through it.


This is the worst part, the waiting. 

Inigo Montoya The Princess Bride GIF - Inigo Montoya The Princess Bride I Hate Waiting GIFs

There’s really nothing to see here. When it’s time to actually do something, Tesla will email and/or text you. If you want to torture yourself, you can login periodically and watch your estimated delivery dates bounce around.

That’s what I did. I even made a chart.

Delivery date range changes over time

You’ll note that the chart does in fact converge on my actual delivery date as the days progress, except for one point where it was just the end of the quarter. Also, that the very first date range ended up being really accurate!

OK, I lied, there is one thing you can watch for:  The VIN. When the car has left the factory and is about two weeks from delivery, the VIN will appear on your account and your delivery date range should stabilize. Some time over the next few days you will need to set up insurance using that VIN, and upload the insurance information to your account. You can’t take delivery of the car without that.

Taking Delivery

Eventually, you will get an email letting you know that it’s time to schedule your delivery appointment! Just follow the link and schedule a date and time. I’ve heard you only have so many days to pick up your Tesla, but in my case I scheduled for the second day that was available since that’s the first day we could both be off work to go up and get it.

After you schedule, you’ll quickly get a second email to pay off the non-financed balance. The one thing with this is they use Plaid to handle the payment. It only works with certain banks, and you have to give Plaid the username and password for your account with the bank. Yikes.

So be prepared for that.

Exactly 24 hours before your delivery date, you’ll get another email letting you know your purchase agreements are ready for review. Here you want to verify that your full name and address are correct and that the VIN is correct.

You may want to print out the proof of payment to bring with you just in case.

Even though you took my advice above and read the Owner’s Manual, I did go ahead and create a quick guide to the basic functions for when you first get the car.

This would be a good time to download the Tesla app for your phone.

The Wexford dealership is in a strange location.  It’s behind a strip-mall/office building. You drive around to the left of the building to get to the dealership. It’s a narrow pass that’s easy to miss.

I brought all my paperwork with me, but I only ended up needing my license and proof of insurance (they said the one I uploaded was “blurry” for some reason). There was a sign on the door asking you to wear a mask in the building, so we did, but we were the only ones there wearing masks. 

We met our delivery rep, he made a copy of my license, and he led us to the car. It was inside and charged to 88%.  The car came set to charge to up to 90% by default.

Some people have put out delivery day checklists. However, it looks like the Wexford dealership has already adopted something similar. When we were shown the car, our delivery rep said the car had already passed their “pre-delivery check”. He left us alone with the car for a few minutes, and I checked a bunch of stuff out, but didn’t find any issues.

When he returned I signed the final paperwork to accept delivery along with paperwork for my temporary PA plate and for them to send me the package to self-register for WV (and pay the WV sales tax). We also set up my phone as a key.

After that, I was on my way. I’d recommend stopping before you go too far and do the following:

Connect your phone via bluetooth.  This is different from setting it up as a key and allows you to access music and send/receive text messages.

Set the car to auto-lock when you walk away.

Create a driver profile and adjust the seat, steering wheel, and mirrors.

Driving the car was disconcerting at first, but once I got used to it, it was a blast.  I found myself laughing out loud at the acceleration when I needed to pass a truck on I79 on the way home.

We made several stops to do some shopping while we were up there, but I still had 55% battery when I returned home. I plugged it in, and it was up to 65% after only a couple of hours and we took it out again. It easily charged back to 90% overnight.

Post-Delivery Actions


There are a number of configuration settings I recommend after you get home:

Set max charge: My car was set to 90%.  I’ve heard 70%-80% is even better for preserving the battery.  Take it up to 100% for road trips only.

WiFi: Connect your car to your home network.

There are a couple of additional items you should consider:

Homelink Adapter

This, I think, is the big whiff from Tesla. Homelink doesn’t come with the car.  It’s a $325 option that they mail to you, then you have to have them install it for you. At least the installation is included in the price. When you get it, don’t open the box. They won’t install it if the box has been opened.

(I had the bright idea of ordering it early and calling the dealership to have it installed immediately after getting the car. At the time they said that wouldn’t be a problem, but when I called back to arrange it after setting my delivery date, they said their service department was too busy and actually couldn’t do it — so sorry)

Tesla service is really backed up. When I went to schedule the installation, the closest date was a month from now! Our delivery rep said that mobile service was available since we live so far away, but that didn’t show up as an option when I scheduled. The Wexford dealship suggested sending a message along with the appointment, requesting mobile service. I did that, and got a message back the next business day letting me know the appointment had been switched to a home install. Only a week sooner, but at least I don’t have to make that drive!

Lift Pucks

Other Tesla owners (and mechanics) highly recommended getting a set of Lift Pucks to protect the battery when the car goes on a lift, for example to rotate the tires.

Final Thoughts

I’m really impressed with this car and I’m glad I made the switch. I was about halfway home when I thought “I’m so glad I did this. This car is amazing.” If you have any corrections or additions for this guide, please leave them in the comments. Thanks!


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.