First paddle of the season

Thunderbolt in snow
Yesterday Doug and I met at Baycreek for my first paddle of the season. Compared to previous years before my surgeries, this is relatively late for the first paddle, but it’s been a pretty harsh winter. The creek was open and running very strong, and it was 46°F, so it was a perfect first paddle.

Doug and I were both in our West Side Boat Shop boats, him in a Marauder and I in my Thunderbolt, and we still had our race numbers from the Long Lake race last year, which by coincidence were consecutive. Our boats looked like they belonged together. I was dressed in my farmer john wetsuit with long johns underneath, and a NRS Hydroskin light neoprene shirt, OR wind shell, and PFD up top, paddling gloves, and wool cap – all of that worked just fine. Unfortunately on my feet all I had were regular socks under neoprene socks, and that was *not* fine. My feet were cold before I even got in the boat, and when I got out afterwards they were numb and very painful as they thawed out. I’ve got to figure out something better. Somebody suggested plastic bags under the socks, maybe I’ll try that next time.

The strong current on the creek provided some challenge to my boat handling skills. Lots of swirling eddy currents, especially around corners – at one point the current caught my bow and whipped me across the creek right into Doug, which could have been bad for both of us. After that I was careful to go through the big corners single file, and start sweeping on the outside before the current caught me instead of after.

Later that day, I heard Doug telling somebody that I had tired him out and several times he saw me stop paddling to wait for him. In fact, what had happened was I’d powered ahead through a corner or other tricky bit to go through in single file, and I needed that recovery.

It was a pretty good day for spotting wildlife. At one point a mink was running along the bank going the same direction as us. It went into a pile of something and I thought he’d gone to ground, but Doug said “I can see him looking out at us”, and sure enough a few seconds later he pops out again and runs some more along side us, before finding another pile of stuff to hide in. Later on, we saw a diving duck that had a lot of white on the body and a roundish white cheek patch. I originally thought it was a Bufflehead, but I think it was probably a Common Goldeneye. We also saw several Common Mergansers. The Canada Geese were out starting to stake out nest areas.

I didn’t have my GPS, but Doug said we did 2.5 miles up in 45 minutes, and then returned the same 2.5 miles in 20 minutes. My shoulder started twinging a little bit with about a mile to go, so I guess we turned back at about the right time. But I did some stretches afterwards and the pain went down to background levels, so that’s comforting.

Later that evening, we were discussing plans for the season. It looks like Round the Mountain on May 17th is a definite, as is the Long Lake race in September at the end of the season. I doubt I’ll bother with Armond Basset, it’s always a drag. Blackburn is a stretch goal – it’s longer than any race I’ve done, and it’s on the ocean. I’ve also got the “TC Surfski Immersion Weekend” on June 5th-8th, and Oscar Chalupsky is giving a clinic here in town on July 13th. Mostly I think I’d like to spend more time out in the wave on the lake rather than pounding out miles on the canal like I did last year.

Dammit, Seagate

Back in January, I wrote about how two drives had failed, one brand new Western Digital and one 10 or 11 month old Seagate. I mentioned how the Seagate replacement was a refurb, and I wasn’t thrilled about that.

Well, one of my Seagate drives just started throwing dozens of SMART errors, and freezing up the computer. I’ve filled out an RMA, but I’m 90% 100% sure the drive that failed was the damn refurb that they sent me two months ago. I’m tempted to rip them both out and buy some new Western Digitals or Hitachi drives.

Update: I pulled out the bad drive, and sure enough it has the Seagate label that says “Certified Repaired HDD” and my label that says “Installed 23 Jan 2014”. So way to go, Seagate, you repaired the drive well enough to last almost 46 whole days. Better luck next time.

Man, I hate Garmin right now.

I’ve been a huge Garmin fan, right from my first aviation GPS (a Garmin GPSMap 195), through other aviation GPSs, a nuvi in the car, a StreetMap app on my phone, right through to the Forerunner 301 that I liked so much I bought another one when it started acting strangely because they’d been discontinued and I knew I had to act fast before they disappeared. But when I went to Tarifa, I discovered that having an open USB port and salt water don’t go together well. When that Forerunner 301 died, I bought a Forerunner 310XT, which is the nearest equivalent.

The big plus for the 310XT are that it had a completely sealed case, and the big minus is that it follows the trend to more “watch-like” form factor so it doesn’t work as well mounted on the front of the kayak. The lack of a USB port means that to sync it to your computer you need to put a little wireless device in one of the USB ports on your computer. It also uses a more modern heart rate strap that uses the semi-standard ANT+ instead of the completely proprietary protocol they used in the strap for the 301. And thus my hate starts.

So far, I’ve discovered the following things that make me hate this horrible thing.

It takes forever to start showing my heart rate. With the 301, I could take the strap, lick the contacts, put it on, and then turn on the GPS, and it will sync and start showing your resting heart rate within a few minutes. With the 310XT, you can repeat those steps, and you can wait literally half an hour, and it won’t show your heart rate. Start exercising, though, and almost exactly 5 minutes later it will start showing your heart rate.

Syncing with my computer is a pain in the ass. I don’t know if this is because I’m using a Mac, every single time I want to sync with my computer, I have to:

  1. Restart Garmin ANT Agent
  2. Choose “Pair New Device” on Garmin ANT Agent
  3. Turn pairing back on on the 310XT because it will have turned itself off
  4. Wait several minutes for the wireless things to sync up

If I do any of these steps wrong, it will get into a state where Garmin ANT Agent is still searching for a new device and the 310XT is in “Data Transferring” mode, in which case you have to shut down both the device and the program and try again. Also, sometimes you’ll need to accept the pairing request on the device. Also, I can’t sync with both Garmin Connect (their web based tracking system) and Garmin Training Assistant (the desktop tracking system). Compare and contrast with the 301, where all I had to do was plug in the USB cable and then I could sync with both the web app and the desktop app in about 30 seconds flat.

Their tech support SUUUUUUCKS. Ok, so a while ago Garmin Connect said I should download a new program to replace Garmin ANT Agent called Garmin Express. So I did – but because I’m not an idiot, I didn’t remove Garmin ANT Agent. And good thing, because you go through Garmin Express and it pairs with your device (which is every bit as painful as with Garmin ANT Agent), starts downloading your data, and says “While we’re downloading, connect to Garmin Connect” and wants your userid and password. But then it gives an error:
Screen Shot 2014-03-04 at 11.20.00 Note that it says it’s “temporary”, but it’s been happening for a week. That’s not “temporary” in my book.

I wrote to Garmin’s tech support about this “temporary” problem, and the response I got back tells me how to pair my device (note that the message happens after you’ve paired), and tells me to click on an icon and choose something from an menu, but neither the icon nor the menu exist on this software. Which makes me wonder if the person answering my question read the part where I said I was on a Macintosh or the part where I gave the full text of the response I got, or the part where I said I got that *after* it paired and started downloading. So Garmin’s tech support isn’t exactly a reason to keep using Garmin.

So at this point, I’m looking to find either a device or an add on for my iPhone that does the following:

  1. Displays heart rate, speed, time, distance
  2. Has some training assistance like being able to set up interval workouts, but Garmin’s virtual training partner thing was kind of cool too.
  3. Mounts on the front of my kayak or the footstrap area of my surf ski
  4. Doesn’t die in salt water
  5. Syncs with some sort of training tracker, mapper, etc.
  6. Has a heart rate strap that doesn’t wait until you’re 5 minutes into your workout to start showing your heart rate.

Defeating the popup blocker

I’m doing a WordPress site for a local business that involves a lot of custom PHP programming, which is interesting because I’ve never done PHP before. But heck, a language is a language and you can learn anything by googling these day.

So one of the things this site does is collect a bunch of information, and then submit it to a third party who then returns a URL for the specific payment page for that specific reservation, and you’re supposed to redirect the end user to that page to pay. I had that going where there was a WordPress shortcode that generated the form, and another WordPress shortcode on the destination page that did all that stuff, and then used a cheezy Javascript window.location=$url; thing to redirect it. That worked.

But the client had a look at it and didn’t like the fact that the end user ended up on a different site, and wanted it to pop up the payment page on a different tab or page. So I changed the Javascript to do window.open($url, "_blank");, but I found out that this causes every browser in the world to see that as a popup and block it. Asking end users to disable their popup blockers is probably a no-no.

Fortunately I discovered this post. He specifically talks about Chrome, but it also seems to work on Firefox, Mobile Safari, and even IE8. So I changed the form submit button into an ordinary button. Then I added a button click handler on it which quickly opens up a new window (if you delay it by single stepping with a Javascript debugger, it triggers the popup blocker) with some hopefully quick-loading bogus content, then making an AJAX call to get the URL, and in the “done” handler for the call, do a w.location = data.url; to redirect the new window to the correct url, and then does a “submit” on the form to take you to the correct new page on the original site. The Javascript code ended up looking like:

    
    /* When you submit the booking, make a popup window! */
    $('#info-form-fake-submit').on('click', function(eventObject) {
        var w = window.open(ajaxurl + "?action=pt_fake_page");
        $('body').addClass('loading');
        var $form = $('form.pt-form');
        $.ajax({
            url: ajaxurl,
            type: 'POST',
            datatype: 'json',
            data: $form.serialize() + '&action=pt_complete_reservation'
        }).done(function(data, textStatus, jqXHR) {
            if (data.status == 'good') {
                w.location = data.url;
                $form.submit();
            } else {
                alert(data.msg);
            }
        }).fail(function(jqXHR, textStatus, errorThrown) {
            alert(textStatus + ': ' + errorThrown);
        }).always(function() {
            $('body').removeClass('loading');
        });
    });

Drive replacements…

So after my last post, I discovered that one of the two new 3Tb Western Digital drives is throwing SMART errors, as is one of the older 2Tb Seagate drives. Well, the new one is brand new, just a few weeks old, and the older 2Tb one is just under a year old, so it’s still under warranty, so time to test the two RMA processes side by side.

I put in both RMAs on the same day. I had some problems with the Seagate web site, but I didn’t make careful note of the details and I forget exactly what the problem was. In both cases, I opted for the “advanced replacement” service where they send you the replacement drive first, and then you use that box to send back the defective one. I don’t recall either of them offering a more expedited version of the service.

The WDC drive took a few days to arrive. When the WDC one arrived, there was an option on their web site to click a single link and buy a UPS shipping label with the return address and RMA number and stuff all pre-printed. Very nice. When I went to the WDC support site dashboard, it already showed the new drive’s serial number as registered to me, and it had removed the defective one from my list of registered drives. The only problem: the dashboard showed the warranty period on the replacement one as expiring in 5 months. That’s a bit odd. I put in a ticket to ask about it and they said that when the defective one arrives back, they’ll update the warranty period back out to three years. We’ll see.

The Seagate one took over a week to arrive. The replacement has a big “REFURBISHED” label on it. I guess it’s unreasonable to expect a new drive to replace a year old drive, but one can live in hope, right? They sent me an email with instructions for returning it, including helpfully putting the return address and order number on page 4 of a 7 page email and suggesting I print it out and use that as a “mailing label”. That email also told me that I’d opted for “Ground Advanced Replacement” and if I’d opted for “Advanced Replacement” instead I would have gotten 2 day shipping on my replacement and a pre-paid shipping label for the return, all for $9.95. I don’t recall ever being offered this, or if I was, i wasn’t told how it differed from the free service. Still, the order confirmation is probably the wrong time to tell you what you should have ordered instead. Anyway, I guess I’ll be trudging off to the UPS store to get this shipped tomorrow.

Ok, now I’ve told you why Western Digital rules and Seagate drools, I’ll tell you about my replacment experiences.

When the first drive arrived, I shut down my computer, yanked the bad drive, put in the new drive, and rebooted. I got a message asking me if I wanted to start the RAID in degraded mode, and I did. Everything started up perfectly. I did the parted and mdadm magic to make the partitions on the new /dev/sdb and get it into the RAID, and after everything rebuilt it was right as rain. The number of odd DMA errors appearing in /var/log/kern.log went down to zero.

When the second drive arrived, I attempted the exact same thing. I shut down, yanked the bad one, put in the new one, and powered it up, and it refused to boot. Uh oh. Carefully checked the serial number on the drive to make sure it was the defective one. Checked in the BIOS to see if it seeing all the drives. But when I booted, I never saw the message asking me if I wanted to boot with the degraded RAID, it just hung. Put the defective drive on a spare SATA controller and booted, and it booted fine. Hmmmm. Used the appropriate mdadm commands to fail and remove the defective drive, and add the new one to the RAID. Tried grub-install, and it gave a non-fatal error about a device named “null”, but when I attempted to boot without the defective drive, got a grub error about being unable to find bios-i386-pc or something like that. Tried booting from all 4 disks, and got the same error. So I booted with the defective drive still installed, and waited 24+ hours for the RAID to finish rebuilding. Once it finished, I was able to do a grub-install and it didn’t give that strange error, and afterwards I was able to boot with the defective drive safely back in its shipping box. Phew.