Give it a REST

As you might know, I’m currently looking for a job. And one thing you see in job ads is a requirement for experience with “REST APIs” or “RESTful services”. And as far as I can tell, it’s nothing more than a naming convention for your basic CRUD (Create, Read, Update, Delete) web services. If you write four URL handlers for the URLs “/item/create”, “/item/{item id}/read”, “/item/{item id}/update” and “/item/{item id}/delete” then you’re a filthy normie and unemployable, but if instead you make one URL handler for “/item/{item id}” and check the request type and do the read, update and delete based on the request type being “GET”, “PUT”, or “DELETE” respectively, (creation being done with a POST to the URL “/items”) then you’re a “RESTful” guru and will be showered in money.

Can we just agree that being a naming convention, it takes approximately 5 minutes to train somebody how to do this? And if my former employer would give me back my login for an hour or so I could go back and change all my AJAX calls to fit this naming convention and join the ranks of the REST API experienced.

Onondaga Cup 2017

There was a canoe/kayak race yesterday – 23 July 2017. It wasn’t highly publicized, it isn’t a NYMCRA points race, it was very short, I had raced both previous weekends, and very few people I knew were going. But on the other hand, it was close and it is a rehearsal for next year’s USCA Championships. Oh, and the other drawback is that I put a big gouge in my V10 Sport so I’d have to use my V12 – fortunately, the race was on a river. So I decided to go.

When we arrived, the venue was huge – vendor areas, parking marshals, signs everywhere. I’ve rarely seen a race organized like this – but basically, our race was tacked onto the end of a big rowing regatta the previous day, and most of this stuff was there for the regatta. I kind of feel bad for the people who were manning these beer gardens and food booths with more people serving than were competing in the race. Mike and I registered, and there were a couple of touring class boats and Scott S was registered. There was a guy with a Stellar SR in the parking lot – I think I remember him from the Seneca Monster race last year where he finished behind me even though I was having a terrible day. Hey, I was thinking, maybe I’ll actually win. Then Brian Mac showed up with Royal’s V12 on his boat rack. Oh well, there goes first place.

By race time, the field still hadn’t filled in – just 5 of us in Unlimited Kayak, and 2 in rec kayak and 2-3 in touring kayak. I didn’t count how many canoes, but it wasn’t many. There appeared to be almost as many SUPs as anything else. Mike said something about how it would probably be Royal, then me, then him. I secretly agreed but thought he probably shouldn’t have said that out loud in front of the other competitors.

The race organizer was used to doing rowing regattas, so Brian Mac was helping him with logistics. They had moved the start/finish line out into the lake “so the spectators could see that something was going on”. I seriously doubt anybody except the competitors noticed. They also went down to 2 start waves – everybody except unlimited kayak, and then us.

The tiny little waves on the lake were screwing with my balance. I guess I didn’t warm up enough to get really comfortable with the V12 – I really need at least 2 kilometers before I feel less twitchy in it. You can see my body twitching on the video, even though I had one foot in the water until seconds before the start to increase my balance.

At the start, I was still having problems putting down power. By the time we hit the entrance to the channel, I was in last place. A few seconds later, I started to pass Mike as he was passing Scott, so things were almost as expected, but that guy in the SR had taken a very short line to the channel and put on such a sprint that he was briefly level with Royal. He was still pretty far ahead. It actually took me until the 1-kilometer mark until I came up level with him. I was going to say “nice start” or something, but I just didn’t have the breath. But once I got ahead of him, I was pretty much alone for the rest of the race.

Just an aside – the course is kind of “Y-shaped”, except there is an island smack dab in the middle of the place the legs of the “Y” join. So you paddle up one arm (the channel) to the island, go 1/3rd of the way around the island, up the next arm to a turn buoy, come back to the island, go the second 1/3rd of the way around the island and up another arm to a turn buoy, back to the island and last 1/3rd of the way around the island, and back up the first arm to the start/finish. There are three bridges across the first channel and the USCA champs will start at the second bridge, and do the “Y” twice.

Just after I passed the SR guy I was approaching the third bridge in the channel. Royal had warned me before the race that there was a big mat of weeds on the right side under the bridge, so to keep left. I could see he was quite far left, and I did the same. Afterward, I found out that this had confused Mike because he knew we had to head right as soon as we went under the bridge. The turns around the island weren’t sharp enough that I could look back and see where everybody was. I could still see Royal up ahead working his way through the kayaks, canoes, and SUPs of the first wave. He seemed to have moved all the way to the right bank even though there was no reason to – we had about a kilometer per hour of current behind us, and staying in the middle was the fastest way. I was basically was on a straight line to the turn buoy, except for having to move right because of two on-coming canoes who had already rounded the buoy. Royal rounded the buoy almost exactly a minute ahead of me. Don’t know why I took note of that because I knew that there was no way I was catching him.

Just as I’m getting to the buoy, I’m also passing the slowest rec kayaker of the first wave. He was heading directly to the buoy, as I was swinging out to round it at speed. But I remembered what Mike had said on the start line: “Make sure you don’t get t-boned”. He was referring to the fact that the other paddlers were taking a different line to the channel outlet than us at the time, but I suddenly realized this rec kayaker was going to run right up to the buoy and then try to pivot around it. So I make sure I rounded the buoy about a boat length away from it.

After the turn, I could see Mike was in third position, with the SR guy not far behind him, and Scott behind them. I started working my way up through the first wave paddlers. Even though the breeze was not behind us, I could definitely feel like I was going upstream. Speeds were dropped off, even when I started searching out the banks to get out of the current. A couple of places there were distinct current shadows that were completely filled with water lilies, so they were out.

One of the signs that this was organized like a much bigger event was that there were marshals at every decision point (every time you got to a “Y” junction at the island, and at the turn buoys) pointing out which way to go. Not that I needed them, but it was a good sign. Especially if we’re going to be doing this course twice next year – it’s easy to make mistakes when you’re 18 kilometers into a 20-kilometer course.

Approaching the second turn buoy, I passed a C-2 that looked beamier than some of the racing C-2s I’m used to seeing that was putting out a really nice wake. I tried to tuck into it and grab a drink, then blasted ahead. I could see the boats coming back from the buoy, and I could see that ahead of me were Royal, a guy in a pristine West Side Boat Shop EFT, and a C-1 paddled by a person I recognized but whose name I don’t know. After the turn, I could see that Mike was still comfortably in third, and Scott had passed the SR paddler and had a good long gap on him.

It didn’t take me long after the buoy to pass the C-1, and I set my sights on the EFT as a possibility. I lost sight of him in the turns but once I got into the channel I could see him dangling ahead of me like a carrot. I put on as much speed as I had left, and I think I was closing the gap, but there just wasn’t enough time. I think he finished about 30-40 seconds ahead of me.

Looking back, Mike finished in third not far behind me, and Scott seemed like he must have slacked off because the SR had nearly caught him. So pretty much like Mike had predicted at the beginning.

Thanks, Final Cut Pro

So my new computer has a 2TB “hybrid” drive instead of the 512GB SSD I had in my laptop, so I thought I’d see if doing my video editing on the main drive instead of an external drive would be faster. The last video I did, from last weekend’s Electric City race, worked fine, although I didn’t really see any speed improvements. So yesterday when I went to start a new project the first thing I did was move the Electric City event/project from the Final Cut Pro (FCP) library on the main drive to the one on the external drive, and then start importing clips and editing on the new project. I did some editing and left it in the “transcoding and analysis” state overnight – editing is a lot smoother if you let it just finish those “background” tasks overnight, I’ve found.

But I wake up this morning to dire warnings about how I’ve run out of room on my main drive! So I did a “du” in the Movies folder, and discover that when I told Final Cut Pro to move the project, it did but it left a copy of the full project, including all the transcoded “optimized” files, in ~/Movies/FCP_Library.fcpbundle/__Trash/Electric\ City\ 2017-9B3Flz/. There doesn’t appear to be a menu item to empty that pseudo-trash, so I just did an rm -rf on it and now I’m down to 70% used.

After I did that, I discovered that Final Cut Pro will automatically empty __Trash when it exits, but it seems to me that cleaning up your old projects is a natural thing to do when starting a new one, so that’s just bad UX. Especially since when you tell it to move the project it returns a success immediately, but then it’s in the background tasks queue. So it was actually still going on when I was importing my clips last night, and so if I’d said to move the project then exited FCP it wouldn’t have had any trash to empty because it wouldn’t have finished moving.

Electric City Regatta 2017

Well, there’s a first time for everything, I guess. Normally I don’t do two races in two weekends, but I found out this race wasn’t too far away, and it’s a NYMCRA points race so it should be well attended. I’ve never done Electric City, but ever since I committed to doing it, I’ve had Eddie Grant’s “Electric Avenue” running through my head.

To save money, I decided to drive up in the morning. It’s a 3-hour drive, and the race starts at 10, so in order to get there in time to register and prepare, I ended up meeting Jim at a Tim Hortons at 5:45 in the morning. Because my wife is extremely understanding, she came with me to take my car home – the Tim Hortons only has about 5 parking spaces and I’m sure if they’d seen my car taking up one of the spaces all day long they would have towed it.

Somewhere along the way, we found ourselves following a van with a racing canoe on the roof rack. Old habits kicked in, and Jim tucked into his wake and followed him no matter how fast he went. About 15-20 miles from our exit, we caught up with Matt Skeels truck – very easy to spot because of the four Epic boats on the roof, including a black V10 GT with a tiny DK rudder. Jim let the canoe guy go and followed Matt instead. Which is great, because neither of us knew exactly where the parking lot was, but Matt did as he’d done it last year.

The actual venue was the Lock 9 Park on the Mohawk River. It’s part of the Erie Canal system, and there is dam crossing the river and a lock. It’s a big grassy area, lots of room to park and set up registration awnings and stuff. There’s also an unpaved boat ramp. Obviously, with the dam, there’s only one direction the race could go, upstream (and back). There was a small current but a fairly stiff breeze that was going to be in our faces on the way up. Garmin Connect says it’s a 5 km/hr wind from the north, but it felt more like 20 km/hr and straight down the river. The river bent to the left away from the start and out of sight.

We got registered and got our boats prepared, and sized up the competition a bit. Dave Wiltey was there, and I don’t think I’ve seen him since the 2010 Long Lake Long Boat Regatta and he’d beaten me pretty easily there.

Then I went to warm up. In between the put-in ramp and the lock, here was a row of low concrete blocks, each with a mooring bollard sticking out of the water. As I warmed up, I followed a C-2 that crossed in between the bollards without incident. But then as I circled around I attempted to cross it myself and discovered that there was another one of these bollards that was completely underwater. I saw the bollard and put on the brakes, and once I thought I was clear of hitting the bollard, I relaxed but hit the concrete platform that was supporting the bollard extremely hard. It made a horrendous noise and I could see white paint on the concrete corner. I was convinced I’d damaged my boat, possibly bad enough that it would fill with water and sink.

But there was no time to do anything about it, so I decided I had to put it out of my mind and just concentrate on the race.

The race started in three waves – C-1s first, C-2s second, then kayaks and C-4s. I went up to the start line and lined up on the left side of the river so I could be out of the current and out of the wind going around the first bend. Eric and Roger were both there. Jim, Matt, and Royal were a bit further out. I didn’t notice where Dave W lined up.

Immediately after the start siren went off, Eric leaped ahead of me. Roger had tried to grab his wake but left enough of a gap for me to slip in. Not long after, a C-4 came up with Dave W on their stern wake. Eric kept pace with them, but due to the way he was positioned, I’m not sure if he was getting any benefit from the wake, but I know I wasn’t – back where I was the wake was more like completely parallel to my boat. And then the C-4 started to pull ahead, so I quickly moved over to Dave’s wake – his wake wasn’t as good a ride as being straight on the C-4’s wake, but it was better than Eric’s because it was moving faster. Eric also saw which way things were going and dropped back onto my wake. Roger tried to get on Eric’s wake, but I don’t think he was successful.

On the way up, the C-4 was taking lines that were different from what I would have if I hadn’t been drafting them. Some examples of that were:

  • Threading the needle between C-2s and C-1s from the first and second waves.
  • Spending way too much time in the middle of the river experiencing the wind and current while crossing, instead of going smartly to the opposite bank.
  • Going through shallows – when this happened, their stern waves would shorten up and I’d have to come up half way beside Dave’s boat so I didn’t end up off of their wake when it got deep again.

Somewhere along the way, we lost Eric off our wake. At one point we picked up a C-2, but they didn’t last long. The C-4 didn’t seem to be trying to scrape us off because we weren’t interfering with them, although at one point the C-4 stern paddler turned and said something to Dave about our nice ride.

A medium sized power boat had come through in the other direction. Its wake hit us while we were snaking our way through several canoes, and everybody slowed down except me. Even Dave had to brace. Being in a surfski seemed like a distinct advantage, even though the occasional wave would splash into my cockpit and I’d have to open the drain a touch.

Nearing the turn, I could see Jim and Matt together. Jim appeared to be riding Matt’s wake – I found out afterward that Jim and Matt decided to just trade off leads as a training exercise. Not far behind them was Royal. He’s getting good very quickly.

At the turn, Dave slowed down and tried to take it very tight. The C-4 and I both took a wider route and kept paddling hard. I was just about on the C-4s wake, but when Dave came along to challenge me, I backed off and let him take it. I’m still not sure why I did that.

On the way down, the wind, now coming from behind, was kicking up small waves. This seemed to be giving Dave problems – he’d often end up at an angle to the direction of travel and then have to sprint back to the C-4s wake. I think his overstern rudder was letting him down in the small waves. I was thinking it was a distinct possibility that he was going to lose the C-4’s wake and I wanted to be ready to go around him if that happened.

But then a very large power boat came through in the other direction. I’d seen what a smaller boat wake had done to both the C-4 and Dave, so I was looking forward to this. This boat made a pretty large wake, and the C-4 turned into it. Dave turned directly into the wake rather than following them, and actually ended up having to brace. I sprinted ahead and grabbed the C-4’s wake. Awesome, now I had the good ride and Dave would have to settle for second best. Except, unfortunately, it didn’t last. Less than 40 seconds after I got on to their wake, they saw a crowd of boats all clustered around somebody who’d been knocked into the water by the power boat wake. I could see that the canoe was already being slid over somebody else’s canoe (a so-called “canoe over canoe rescue” that gets the upside down canoe out of the water and the water out of the canoe) and that one of the C-2s that was in the gaggle was already leaving, so obviously things were under control and I wasn’t needed. I decided to strike off on my own. I glanced back and it appeared that Dave was joining the gaggle, so I thought I was really on my own, but reviewing the backwards-facing camera footage I can see that Dave had second thoughts almost immediately and came right back to my wake.

I had no idea Dave was there, and I just was working my way up through the widely separated C-2s. I’d get up to one, take a drink and recover a bit, then blast past them and try to chase the next. Just about the time I got to the bridge where the 3-mile race course turned around, there were two C-2s close together but neither one was riding wakes. I couldn’t tell if one was faster than the other. I caught up to rear one’s stern wake and I was hanging out trying to recover for my next blast up to the next one. I was tiring, and these were getting harder to do. Suddenly I see Dave coming past and onto the wake of the leading C-2. Oh, that’s a surprise and not a nice one. I find myself back in the now familiar place, riding Dave’s stern wake. But the second C-2 either wants the first C-1s stern wake for themselves or they’re not very good at paddling in a straight line because several times they come in close enough to Dave that he has to stop paddling on that side. Each time that happens, Dave slows and I attempt to come through, but I don’t have the energy.

But now it’s less than a kilometer to the finish and I can see it straight ahead. Rather than paddle in this variable speed battle for the C-2’s wake, I decided to see if I can get any benefit from the now very strong tail wind and wind driven waves and strike out directly downwind. At first, it appeared to be working, as I ended up even with the C-2 while Dave was still on their stern wake, but then he put the hammer down and came around them and passed me. He ended up finishing 4 seconds ahead of me. Eric was a minute and eight seconds behind me, and Roger was a minute and four seconds behind him.

And after the race, obviously, the first thing to do was to get a good look at the damage to my boat from the pre-race bang. And it was bad. Not catastrophic leaking boat bad, but bad enough that cloth is exposed which means no paddling it until I can get it fixed. I hope it doesn’t cost $500 like the last time.

The second thing to do was to look to see if the lunch was worth the $5 they were asking for it. It was. Really good value, and really good food. A very well organized race, and a very well organized lunch afterward.

Armond Bassett 2017

The Armond Bassett (AB) race normally has two moods:

  • Hot and airless and humid or
  • Torrential downpours and lightning touching down less than a quarter mile away

Based on early weather forecasts, I thought we were going to get the second option this year. But instead AB decided to throw another option at us – it was mild temps, still pretty humid, but with a strange swirling breeze that delivered head winds and tail winds at completely random times on the course.

It was a big crowd this year – lots more kayaks than in past years. Other than Royal, the guy who’d ridden my wake for the first half of Round the Mountain this year and then demolished me in the second half, the top contenders were all local guys – Jim, Todd, John H. I knew I wasn’t going to be seeing a top 4 finish with those guys here.

My main goal was to beat Roger and Eric. Both of them paddle Epic 18Xs, but in spite of the slower boats, I’ve had my hands full with these two in the past. In last fall’s Long Lake I’m managed to drop Roger but Eric had ridden me off his wake. Roger and I have traded off beating each other in various races in the last couple of years, so he was the benchmark.

Because AB is so flat, I elected to paddle my V12. I’m not 100% sure I’m faster in it on the flat – I’m definitely slower in it in any sort of waves, but I think I have a small edge in these conditions.

Also, because of the humidity, I elected to not wear my PFD, which necessitated a change to my drinking system. With the PFD, I keep the water bag on my back, with the drinking hose snaked through the straps of the PFD and dangling on my chest where it is easy to grab it and stuff it in my mouth without losing more than one stroke. In my V10 Sport there is a perfect spot for the drinking bag ahead of the footplate in the cockpit, but it’s a very tight squeeze in the V12 cockpit because of this stupid ledge that Epic put in for no discernable reason. If I’d been thinking clearer, I’d have remembered that previous times I’ve paddled the V12 without wearing my PFD I’ve put the bag under the bungees on the back deck. I should have done that this time.

So when it was time to warm up, I started up my two GoPros. Nothing seemed amiss except the one on the front of the boat seemed a bit askew. After a few minutes warm-up, I discovered my drinking hose must be kinked because I wasn’t getting any water out of it. I stopped at the GRC dock and adjusted both the hose and the GoPro. However, the GoPro then decided to beep and announce it was missing an SD card. I have never forgotten the SD card before, so I assumed it was a glitch and power cycled it. No luck. So with no time to put it away somewhere, I left it on the front of the boat.

One aside – the GoPro Hero 5 Session that I wear on my head sometimes shuts off in the middle of a paddling workout for reasons I don’t understand. Hitting the record button on top starts it up, and it’s usually so quick I can easily cover up the glitch in the edit.

As I was lining up for the start, trying to make sure I was close to Eric, I heard the characteristic beeps of a GoPro shutting down. Thinking it was the one on my head, I quickly hit the record button on it. In retrospect, it was probably the one on the front of my boat deciding it had been on standby long enough and shutting down. So GoPro #1 shut down and I reacted by shutting down GoPro #2. That’s like the classic Cockpit Resource Management lesson about the airliner that crashed in the British Midlands because the pilot shut down the wrong engine when one was losing power. So there won’t be any video for this race. My adoring fans will just have to wait until the next race.

So anyway, the start siren went off and we launched from the line. We had the current and wind behind us, making for a fast first segment. Immediately Jim went off like a bullet, followed by John H and Royal. Todd wasn’t immediately up there but he came through pretty quickly. Eric got a good jump on me as I struggled for a few seconds in all the boat wakes, and Roger was right beside me. I put in a big pull to get up to Eric’s wake. I didn’t turn to look because of my lack of stability, but I assume Roger was now on my stern wake.

I wasn’t on Eric’s wake for long when he suddenly stopped to deal with his drink hose that was sort of falling out of his boat. I’m not sure if that was a ploy to get me to pull or a legit problem, but the upshot was that now I was pulling and Eric was on my side wake. I did a very quick glance and I could see somebody in a white boat on Eric’s stern wake, but I couldn’t tell you if it was Roger or Aaron (more about Aaron later). He stayed on my side wake for a while, but I suddenly felt like he was slipping back. I put in a dig and tried to scrape him on a canal buoy. It worked and he wasn’t on my side wake anymore. I don’t know if he was on my stern wake or not.

At the bottom turn buoy, I could spare a very short glance back and see there was more than Roger and Eric behind me. I couldn’t see who else was there, but there was one other boat right there, and several close enough to be considered a legitimate threat. I rounded the buoy and went for the wall, which is optimally shadowed from the current and the wind. And I immediately grabbed my drink hose and shoved it in my mouth and sucked, only to find nothing coming out! Dammit, kinked again! This is going to be a problem, I thought.

Half a kilometer from the turnaround there’s a point where you have to leave the shelter of the canal wall and move out because it gets shallow and weedy. That’s when I realized that instead of Roger or Eric, the occasional paddle banging noise I’d heard behind me since the turn was Aaron B, a local young sprint paddler. He was now up beside me on my side wake. Since he was obviously more stable in his ICF sprint boat than I was in my V12, I asked him how far back the others were. He said they were 5 meters behind. Well, 5 meters is better than nothing, so I kept grinding. I knew they could close 5 meters in no time if I tried any tricks to get Aaron to lead or tried to give another pull on my drink hose, and I didn’t want that. Better to tow Aaron than end up towing Eric and Roger.

For the entire way upstream, I was using every trick I could to get out of the wind and the current. I’d paddled the course a few times and I knew which tree branches you could duck under and which you had to go around, and I knew about one island you could sneak behind and the other one that wasn’t an island anymore. I also made use of the wakes of canoes we were passing to get a bit of a launch. But here’s the weird thing – when I used one of these tricks, Aaron would leave my stern wake and go paddle in the middle of the river, still keeping up with me. I got the distinct impression he was toying with me. And because he’s young and fit, I assumed it was only a matter of time before he got bored of that and blasted off ahead.

I was actually kind of counting on him blasting off ahead. By the second turn buoy, my cockpit had an annoying amount of water in it, but I didn’t want to kick open the venturi drain because of the extra drag. I figured he’d blast off after the turn, I would be able to assess where I was ahead of Roger and Eric, and see if I had time to deal with the venturi drain and maybe even make another attempt at getting something out of my drink bag. But he never did, so I never did.

The second turn buoy is the best place for assessing where you are in the race. I was a little surprised to see Todd coming downstream before Jim. After Jim, John H was very close to him, but Royal looked like he’d be well and truly distanced.

I had a pretty substantial gap on Eric and Roger, who were still together. Not very far behind them was Dennis, a local triathlete who started paddling with us last year and who is making rapid progress to becoming a fast paddler. Further back was a clump of paddlers that contained Jim P, Steve B, Mike F and Mark, another local triathlete who is making the transition to paddling. It was kind of weird to see Jim leading because he put a heavy weight belt into the bottom of his boat to give himself more stability. His boat must have weighed 1.5 times as much as the Ultra layup boats of Mike and Steve. Steve B called something to his son Aaron – I think he was asking if Aaron was feeling ok, and Aaron said he was fine. So suspicion confirmed – he wasn’t having a bad day, he was toying with me.

Ok, I thought, he’s going to outsprint me. Big deal, that’s his specialty. He can probably hit 15 km/hr in a sprint, whereas I’d be lucky to hit 12 km/hr for more than a few seconds. But I kept grinding away because I knew if I didn’t, Eric was going to grind right back up to me. Aaron would be on my stern, then out a boat length or more off to my side, then he’d be back on my stern. I really had no idea where anybody else was – I couldn’t see the kayakers ahead of me through the forest of canoes, and I couldn’t hear or see anybody behind me except Aaron.

At all the landmarks where I knew how far to the finish, I expected Aaron to sprint past me. Under the 490 bridge, 600 meters to go, no Aaron. I tried to raise my speed as much as I could. Under the pedestrian bridge, 300 meters to go, still no Aaron. Ok, this is weird. He should be able to pass me in his sleep. But he didn’t. As I crossed the line, they called out our finish times, and I was a few seconds ahead. So he didn’t even pull up even. By the time I got to the dock, I could see Eric and Roger had finished not very far behind me. But the important thing was they were behind me. I think I heard somewhere that Roger actually passed Eric, but I’m not sure about that.

In terms of actual time and speed, this was actually my slowest AB since 2010. That’s a little worrisome, but I think the stronger than usual current and wind slowed me down a tad. Thanks to Royal and John H still being youngsters, I ended up finishing 3rd in my age group. I’ll take that.