Tuesday, April 30, 2019


Let me start by saying that there never was any real danger, and it all ended well. But for about 40 minute yesterday, there were some periods of doubt.

Yesterday's forecast called for 15 mph wind. With a little bit of thermals added to that, we were hoping for a nice mellow 20 mph, perfectly timed with low tide in the afternoon. The readings from the sensors around Buzzards Bay picked up shortly past lunch. Since southerlies don't always make it to Kalmus, we packed the big slalom gear and a long board, and off we went.

As we were rigging, the meter readings went up to 18, then to 20. Nina decided to do freestyle, and I started out on the 112 l slalom board with a 7.8 m sail. But the wind had already turned from "easy" SSW to "bumpy" WSW, and kept picking up. After fighting three colds in the last month, I did not feel 100%, and decided to switch to the easier longboard. That was plenty off fun. The daggerboard did not come out once, I had plenty of power to plane on the fin. Nina was hacking away on her freestyle, throwing Flaka tries as if it we mid-summer and the water was warm.

With the tide coming in, the wind picking up to the mid-20s, and the chop getting higher, I decided to seek flatter waters a mile upwind at the Kennedy Slicks. Getting there was easy, and I had a blast planing in the back footstraps on the ME2, with 10 feet of board high up in the air in front of me. But to play it safe, I stayed there just 20 minutes, and then decided to sail back. That's when it started to be really interesting, as the GPS tracks show:
See where the blue squiggly line starts? I had messed up a jibe on the outside, and the wind pulled the sail out of my hands when I was trying to waterstart. My first reaction was "great, now the sail is on the downwind side and I can just uphaul it" .. and then I realized that the boom had landed on the board, and the sail was mostly lying on top of the board, with just a little bit of the clew in the water. I realized that this could mean trouble, since the wind can push the board downwind really quickly that way. So I tried to swim toward the board, which was only perhaps 15 meters away, as fast as I could.

I am a decent swimmer and quite comfortable in the water. However, I was wearing a 5 mm wetsuit with a hooded neoprene vest on top; a seat harness; 5 mm boots; and open-palm mittens. With all this gear, the "fast" swimming was rather slow. After getting a bit fat over the last couple of months, breathing deeply in the tight suit plus vest plus harness was anything but easy - after a short swim, I was totally out of breath, but had made no visible progress towards the board. That's when things got a bit scary.  I had to think about the SUP paddler that they had pulled out of the ocean dead just a couple of days before. He probably died of a heart attack, and I started to wonder if my shortness of breath had any medical relevance. I had to concentrate on just getting some oxygen into my body for a few minutes, before trying a few more strokes towards the board. But it quickly became clear that the wind was carrying my gear away faster than I could swim. I was separated from my gear, in water that was about 10 C (50 F) cold, about a kilometer from shore. The chop out there was about 3-4 feet high, so the chances that anyone would see my head bobbing out there were just about zero. Swimming in all the gear was very slow, and did not seem to result in any progress towards the shore.   Swimming on my back seemed the best option, but after a couple of strokes, I'd end up with water in my face from a wave or wind-blown foam. So I ended up mostly treading water, without any clue if I was getting closer to shore. Nina had been the only other person out on the water earlier, but she had stopped by then. At times, I saw her standing on the shore looking out, perhaps searching for me, and I tried to wave both arms over my head - but it was clear that she did not see me.

After about half an hour in the water, I noticed several people standing on shore, looking out. Soon after that, I saw Nina sail again. Someone had spotted my board drifting towards land, so Nina went out to see if I was perhaps close to it. When she did not see me, she went back in, and someone on shore dialed 911. Nina went to grab the big slalom board, and then went to search for me. Around that time, I noticed the first blinking lights arriving at the parking lot - police, fire fighters, and an ambulance. The fire fighters also came with an inflatable boat that they soon launched.

Nina was the first one to reach me, and towed me towards shore, with me clinging to the back footstraps. The GPS tracks show that by then, I had drifted about 550 meters towards shore. Nina pulled me another 240 meters, and then I was able to reach the ground in about 4 feet of water. A minute later, the fire fighter's boat arrived, and they offered me a ride to shore, which I gladly accepted. Nina would have made it back to the launch on her own, but that was a dead downwind run, which was near-impossible with the gear she was on. Instead, she started to do a few "downwind tacks" on more moderate angles, falling at every turn. That made the fire fighters in the boat a bit nervous, so they picked her up, too. One of the fire fighters jumped out of the boat and walked her gear back.

Back on shore, I was walked to a waiting ambulance, where they checked my vital signs and listened to my lungs to see if I had gotten water in, which can cause "secondary drowning" a day or two later. My pulse was up to 140, which probably was mostly from shivering - the boat ride and walk on the beach had been a lot colder than the swimming! No big surprise for anyone who's ever done an ABK camp, and tried to keep his wetsuit on during the lunch break. The wind was still gusting above 30 mph, creating plenty of wind chill.

By then, the parking lot had filled up with police cars, fire fighter vans, and the ambulance. On the water, two more boats had arrived. The size of the effort was quite amazing! I am very grateful for all the efforts - big thanks to everyone involved!

There's a writeup about this with lots of pictures at http://capecodfd.com/PAGES%20Special%202/Hyannis-Kalmus-Boat-Rescue-042919.htm
The pictures I find most striking are these two (click on the pictures for a larger version):

This is Nina going back out to search for me. I'm pretty sure I am somewhere in this picture, but it's impossible to see a swimmer's hear in this chop.

In this picture, you can see my head next to Nina - but the photographer has zoomed in quite a bit.

I just had to add this picture of two of the three fire fighters in the boat. Big, big thanks again!

In hindsight, I was never in much danger. Even though I made very slow progress swimming to shore, I would have reached shallow water within the next 30 minutes or so, since both wind and waves were pushing me towards shore. And while all the neoprene I had on made swimming hard, it kept me warm enough. Not that I did not really appreciate the hot shower when we got home!

Even though I sort of knew that I was not in real danger, and that I'd most likely be rescued before I drifted into shallow water, the incident was somewhat troubling.  I have been windsurfing for almost 40 years now, and needed rescuing twice in this time. I have sailed at least 1500 sessions, and this was the second time that I got separated from my gear. In addition, there were a few sessions where I got lucky when I lost a fin or crashed hard a few miles from shore, but was able to walk or sail back. Overall, I have been reasonably lucky - just in the past few months, I've read about several rather serious injuries that other windsurfers had when getting hit by boats, or just falling badly. Even something as simple as bad cramps while being separate from your gear a kilometer from shore would at the very least increase the panic factor. So in the future, planning for the worst-case scenario will definitely get more attention, especially during the colder months.

One of the things I might end up doing is carry smoke flares, like those required when racing in Australia. Another alternative is to always carry one of the phones I got for use with GPSLogit - even without activation, they can be used for emergency calls. However, I am not sure if I would have been able to place a phone call while swimming in 3-4 feet chop.

Another alternative for increased security is to use the Motion GPS, which has a built-in emergency function. The function is limited in that it requires another user with the same GPS to be within radio distance (about a mile or so). On the upside, it provides the coordinates, which can help with search efforts - and it is probably the best currently available GPS unit. I have thought about getting one, anyway, but could not really justify the expense. But for some peace of mind in problem situations, the price of about 260 Euros seems rather reasonable.

Sunday, April 7, 2019

Hour Analysis for GPSTC

When playing around with GPS prototypes, I developed my own analysis software to get around limitations and bugs of commonly used programs like GPS Action Replay (GPSAR; version 5.28) and GPSResults (version 6.170). Eventually, I shared my software ("GPS Speedreader") with a few similar-minded folks, so the question came up if Speedreader is accurate enough for posting to the GPS Team Challenge (GPSTC).

That lead to a validation study where I compared the results from more than 50 GPS files, most of them random downloads from ka72.com. This lead to a few interesting observations which might be of interest to anyone who posts sessions to GPSTC. Especially for the "1 hour" category, I discovered a few surprising things.

One of the tracks that stood out was the one you can download from https://www.ka72.com/Track/t/381385

Here's what the speed track looks like if you open it in GPSResults:
The first surprise was that the number GPSResults gave for one hour was lower than the 9.082 knots that ka72.com reported - only 8.466 knots! I checked in GPSAR, and it also reported 8.47 knots. Then I remembered that GPSResults used a minimum speed filter of 5 knots by default. When I disabled it by setting it to 0 knots, GPSResults reported a 1-hour speed of 9.015 knots - much closer to ka72.com. So the first big surprise was:
GPS Action Replay uses a 5 knot minimum speed filter for 1 hour!
I have always used GPSAR for analyzing my files, and never realized that. Even worse, unlike GPSResults, GPSAR does not let you disable the minimum speed setting.

There are different views of the 5-knot minimum filter in speedsurfing. When the older analysis programs were originally written almost 2 decades ago, the GPS Team Challenge did not yet exist. Speedsurfing was about top speed, 5x10 second averages, and 500 meters speed. Results for longer distances, longer times, and total distances were perhaps calculated, but mostly ignored. Furthermore, the GPS units available back then were quite prone to report speeds of 1-2 knots even when stationary. In this context, a 5-knot minimum speed filter makes sense.

But things have changed since then. Some clever Australians developed the GPS Team Challenge to get some team competition going. Having only the established disciplines 2 second, 5x10 seconds, and 500 meter disciplines would have given teams with spots like Sandy Point an unfair advantage, so they added disciplines that are better suited for other spots to even things out: alpha 500; the nautical mile (speed over 1852 meters); one hour average speed; and total distance. To win the monthly or yearly ranking, teams must post good results from all disciplines, since the overall score is computed from the ranking in each category. With 6 quite different categories and a requirement for posts from 2 sailors before it counts, it really takes a team to do well!

Besides the increased emphasis on total distance and long-distance speed on the GPSTC, another change happened over time: GPS units became more accurate. Modern GPS units like the Motion GPS rarely report speeds above 0.1 knots when stationary. Taken together, this makes a 5-knot minimum speed filter a very questionable thing indeed. A good one-hour results is above 20 knots, so it requires sailing about 40 kilometers. At most sailing areas, this requires about 20-40 jibes - sometimes even more. Sure, some of the best speedsailors in great conditions can plane through 40 jibes in a row and sail without crashing for an hour, but most of the time, one-hour runs will include jibes where we loose most speed, or periods of slogging in lulls. Why on earth should those times not count to the 1-hour average? In the example above, the slogging time was not very long, but still, including speeds below 5 knots increased the 1-hour average by more than 0.5 knots.

My conclusion from this is that I will not use GPSAR again for posting to GPSTC if there is even the slightest chance that my distance numbers matter for the monthly rankings.

But the story does not end here. In the track above, my Speedreader gave an even higher number. It selected a slightly different region, which upon close inspection made more sense. So the suspicion arose that there might be undiscovered bugs in the old code for 1-hour speed calculations. When I looked at more files, I found several examples that supported this conclusion, and even provided hints about why the older algorithms sometimes fail.

For an example, let's look at Boz' track from May 15, 2017 (downloadable at https://www.ka72.com/Track/t/305912). Here's the region GPSResults picked for the best hour:
Boz had his GPS set to a minimum speed of 5 knots, so a lot of points where the speed was lower are missing from the track. The reported 1-hour speed is 8.372 knots, corresponding to a travel distance of 15.5 km. But GPS Speedreader gave a higher speed:
By selecting an hour about 10 minutes further back, Speedreader found a region with a travel distance of 17.3 km - about one nautical mile longer! Accordingly, the 1-hour speed is about one knot higher.

Theoretically, this could be some kind of bug in Speedreader, so let's look at this region in GPSAR. First, here is what GPSAR selected as the fastest 1 hour:
 This is the roughly the same region that GPSResults picked. But is that really the region where we travel the most distance in one hour? Let's look at the track points table in GPSAR for the first valid point in the region Speedreader picked:
And for the last point:

The difference in accumulated distance is about 17.7 km, traveled in less than one hour. So this region should have been picked for the best hour in GPSAR, too!

So why did GPSResults and GPSAR (and, most likely, ka72.com) pick the wrong regions? Simple answer - because the 1-hour algorithms were never designed for tracks with a large number of missing points. The typical search algorithm will start at every valid point, find the point one hour after it, and calculate the speed for this region. But look at the graph from Speedreader: the best hour starts in the middle of the missing points! So the programs never even consider that an hour could start there. They can handle missing regions at the end of a one-hour run, but not at the start!

So why does Speedreader find this region? Mostly by luck! Speedreader was designed originally for comparing two GPS files. But if files sometimes miss some points, that can make the comparison complicated, so Speedreader simply fills in missing areas with points of speed 0. That allows it to consider every "missing point" in large missing regions as a possible start, and therefore succeeds in finding the best hour in this example.

There are other ways to also find the best hour, without having to add the interpolated point. Perhaps the easiest is to also look for hours going backwards - from every valid end point, calculate the average 1 hour speed towards the front of the file. This would find the best one hour in this example.

But at least until other GPS analysis software has incorporated such a fix, the best thing to do it to set the minimum logging speed to zero. All the examples of incorrect 1-hour results I have found were from files with a non-zero logging speed. Note that a minimum speed above zero can also affect the nautical mile or alpha results: if those happen to have a point with a speed below the threshold, the run may not be counted due to the missing point.