The Poseidon Adventure

Today the team met for some light training on the lake. The winds were coming from the south, and so there was almost no waves on the lake except for a gentle regular swell coming from the north west. Unlike several members of the team, and Dan, that’s my favourite time to be out there, when there is nothing to challenge you. It’s been pretty nippy today with temps in the low to mid 60s, and of course the lake water is still very cold, so I made a last minute decision to wear my wet suit, and thank goodness I did.

After a bit, we ended up on the other side of the boat channel and jetty from the beach we’d launched at. We were in the middle of some race tactics work when I was making a circle around and concentrating on looking at the radius point of the turn instead of watching the other boats, while Bill, who was also making a circle around and not watching out for other boats, crashed into me. I attempted a brace but didn’t react quick enough and my boat went right over dumping me in the cold water. Most of my stuff stayed in the boat, except my half skirt which came out when I did – I managed to snag it with my foot just as it was drifting down out of reach. My PFD, which was a bit lose so I could breath, came up around my head which was unfortunate. Initially the cold was enough to make you gasp, but after a few seconds I was actually feeling fairly comfortable in the water.

But I have enough trouble getting into and out of my boat in optimum situations like Dan’s dock or the boat ramp. Even with two boats docked up against mine and guys helping me on both sides, I was unable to get back into my boat and fell out again when I tried. So I ended up clinging to the front of Mike’s boat as he paddled me into shore. The water felt extremely cold against the back of my neck and head. But when I got close enough to shore to stand up, I didn’t feel cold. I wasn’t entirely sure if that would continue, or if I would chill off quickly, so I wanted to get moving again. I tried to dump and pump out water, and get back into the boat, but I was rushing because I felt that I needed to get paddling again before the chill hit me. That was bad, because I ended up doing a bad launch and falling out again into the water. Then Mike and Paul D came to help me get in by holding onto my boat, but again I rushed and didn’t do it right, and fell in again. Mike and Paul had both said that they were going to wait for me to get in and paddle with me back to the beach were we’d launched to make sure I was ok, but at this point Dan came along and took over. He told Mike and Paul to go off and do some training exercise, and made me go sit down on the beach while he took care of dumping out my boat again and getting it ready. Initially I was worried that sitting down in the air would cause me to chill off, but there was almost no wind down low and I didn’t feel too bad. The short rest was actually a very good thing, because I managed to catch my breath and calm down a bit. Up until this time I hadn’t realized that I was acting a bit panicky. This time when I got back in I did it right and didn’t try to rush.

I paddled off, expecting Dan to come with me, but he didn’t for some reason. As I rounded the jetty to head back to the beach where we’d launched, I discovered that my rudder was all jammed up with sand from the beach, and between that and the residual water in the bottom of the boat, I was having some trouble staying upright and off the rocks at the end of the jetty. By this time I was out of view of any of the rest of the paddlers, and I was really annoyed that Dan hadn’t come with me as he’d promised. I felt like I could easily have dumped there and nobody would have seen me for a long time – maybe long enough to get hypothermic and drown. But I managed to get it to shore fairly close to where I wanted to be, and went back to the car to change. I went back to the boat and recovered all my equipment, and by this time I could hear Dan yelling at somebody on the other side of the jetty.

Everything worked out fine this time, and once again we had a great old time afterwards drinking beer and telling stories. That is really the best part about being part of the team.

I feel like when the water warms up a bit I really need a refresher course on kayak rescues. I’ve done canoe rescues in the past, but a kayak is a lot harder to get back into, especially when you’ve got a tight cockpit like mine.

Today’s Discovery

If you have a Core Data data model with one Entity, say “AircraftCategory” that has a “to-many” Relationship to another, say “AircraftClass”, you can access the AircraftClass objects for an AircraftCategory using an NSMutableSet. But if you Fetch an NSMutableArray of AircraftCategory, and are doing a “fast enumeration” through the AircraftCategory objects, and you happen to remove one of the AircraftClass items from the current AircraftCategory object using one of the generated accessors, the fast enumeration will see that as a modification of the NSMutableArray of AircraftCategory and throw an exception. This is in contrast to Java where you would only get an exception if you were to add or remove things from the actual Collection that you were iterating, and not from calling setter methods on the objects in the Collection.

So instead of removing the AircraftClass from the AircraftCategory, I discovered that what I have to do is remove it from Core Data directly, using
[managedObjectContext deleteObject:aircraftClass];

I haven’t tried it yet, but I wonder if this wouldn’t happen if I assigned the fetch results to an NSArray instead of an NSMutableArray?

Why I find Objective C a hard language to learn

Lots of methods get an NSIndexPath as the argument, and all the sample code that I’ve seen gets the current row out of the indexPath object using [indexPath row]. Sometimes they get the section number using [indexPath section]. Ok, that seems simple enough. Now look at the documentation for this class, which is what you see if you use the XCode research assistant to show you the documents:

NSIndexPath Class Reference.

I cannot for the life of me see any way to extract the information that you get the current row using “row” out of that document. It’s not there. No, instead you have to figure out that UIKit has added some methods to NSIndexPath, and find ‘row” and “section” in a different document called “NSIndexPath UIKit Additions”. Isn’t that intuitive?

Well, that sucked

I know you’re tired of all those “good workout” blog posts, so I thought I’d have a lousy one just to keep it interesting.

I was intending to go out into the bay for another 5 miler and hopefully still have some energy left for a few miles on the creek. But I wasn’t counting on two things – one is that the thunderstorm that blew through yesterday is being trailed by a very strong wind (the airport is reporting winds gusting from 15 to 26 mph) and the other is that my right shoulder started to hurt after about a mile.

The waves weren’t so bad while they were coming right at me, but the wind was cold. And after passing “One Mile Point”, the wind started to swing to the one side and so did the waves. Because of my shoulder, I was wondering if I should turn around, but also wondering how I could turn around since that would involve going broadside to the waves at least momentarily. The shifting winds sort of made the decision for me – I was going to be broadside whether I turned or not. So I turned.

On the way back, I got good surf, but unfortunately my sore shoulder was preventing me from enjoying it. And the soreness got worse as I went on.

Oh well, maybe tomorrow.