I’m back, baby

I paddled for the first time since my shoulder got bad, back in October. I didn’t go far, but that wasn’t the point. It was a chance to see how fit I am (terribly unfit), how fat I am (again, terrible – I couldn’t do up my PFD), how bad my shoulder is (not as bad as I thought based on experiments on the erg), how badly my technique has fallen apart (not bad at all), how bad my balance in the boat is (pretty bad – I nearly dumped several times and the boat was wobbling back and forth like a crazy thing).

I was also checking out the fit of my old rack on my new car. I originally bought this rack for my 2001 Corolla, and with the replacement of a couple of “Q-clips”, it has been on the Corolla, the Prius and now the CR-Z. It’s a little beat-up looking and the bars are ridiculously close together, but it’s on strongly enough that I can grab them and rock the car back and forth. I tied down my surf ski on top, and it actually held on pretty good, but then again I was only going a short distance on slow roads. I wouldn’t want to go anywhere other than Baycreek until I get my V-bars.

The last thing I wanted to check out was my new “million dollar” idea. I bought a coffee maker at the garage sale last month, and I cut out the “bubble pump”, a tiny one-way check valve that allows the hot water to flow up out of the reservoir into the grounds. I attempted to fit it in the venturi of the ski, figuring that would allow water to drain out at speed like it’s supposed to, but not to flow back in when you’re stopped, which is a pain in the ass at the start of a race. Unfortunately, I didn’t glue it in right, and water was flowing in around it. Even worse, it came out towards the end, and when I was getting out of the boat, I managed to lose it overboard.

Oh, that’s another thing I had problems with. When I finished, I approached the dock, and realized I was on the bad shoulder side. So I spun around (which unfortunately involved back-paddling on my bad side). But when I approached the dock, I still thought it felt a bit high. So I went to the other dock, the one the rental boats go in and out of. It’s much lower. I did my usual “sprawl onto the dock as the ski leans over on its side” ungraceful exit, but at least I ended up on the dock and not in the mucky water.

Overall, I probably paddled a little more than a mile and a half. I purposely didn’t bring my GPS because I didn’t want any incentive to go further or faster than I should. I had to rest a lot, but mostly because of how out of shape I am, not how sore my shoulder is. It feels easier in the boat than on the erg – last time I tried the erg, I was barely able to do 1000 metres (0.6 miles) in 200 metre increments. I’m going to try taping over some of the holes in the fan on the erg to see if reducing the resistance makes it more life-like at the slow speeds I’m paddling these days. But I tried to keep a good technique going while I was paddling, and I think that part at least hasn’t deteriorated too badly.

Man it feels good to be back.

Yeah, I think I’ll pass

As an hourly rate contract programmer, I feel it necessary to always keep my eye on the local tech job postings, and apply for anything that looks interesting. Because there is no job security in my position, my goal is always to be ready to take something else either before or as soon as possible after my existing job ends. That means not just looking to see if there is anything better than what I’ve got now, but also making sure my resume is still attracting attention and making sure my interview skills are honed and practiced.

I’d never take an interview just for the sake of an interview, though. I always intend that if the job is sufficiently good, I’ll take it. (But “sufficiently good” will vary depending on how much I like my current job and how secure I feel in it.) It just wouldn’t be fair to the other people to waste their time just for the sake of practice. But because you can’t get a full sense of how good a job is just from a description on Monster or LinkedIn, though, you may not know if the job is one you’d take until you’ve been there and talked to the other developers and managers about the project. That’s especially true if you’re going through a head hunter because they try to hide details from you so you don’t bypass them and apply directly. (I’ll bypass the rant about the time that the head hunter hid the minor little detail that the job was only open to US citizens until after I’d accepted the job and handed in my resignation on my current job.)

I saw this ad on LinkedIn. It was pretty vague, so I asked about it. The person gave me a few more details so I sent her a resume. The only problem is that their main line of business is SEO (Search Engine Optimization) and SMM (Social Media Management). That’s a bit of a red flag – there are two ways of doing SEO and SMM, the ethical way, and the “spam every blog and forum and Facebook and Twitter with links to your site” evil way. So I knew I’d be spending any interaction with them examining them minutely for any sign of which side of the fence they sit.

I got an invitation to an interview. Ok, I hadn’t noticed before that they are in Buffalo, not in Rochester. That’s not a deal breaker, but I’m not happy about it. They also sent a “Employment Application”, and it’s a typical one you see from certain companies that look like they wrote it for every position in the company from janitor to CEO. I find it slightly insulting to be asked if I have any “Special skills” with checkboxes including Word and Internet Explorer as special skills. As far as I, or just about any other software developer in the world, is concerned, the only special skill you need with IE is how to use it to download a real browser. Again, not a red flag, but annoying.

And then I got to the “Consent and Disclosure Form”. The form asked for permission to produce this “investigative consumer report” for processing my application. It said “the report may include, but is not limited to, searches of … financial or credit agencies; criminal history information… and motor vehicle records”. It authorizes them to do this report “now, or at any time while I am employed by the Company”.

I wrote the HR person back and said I’m not interested in signing away those sort of rights to a company before I’ve even talked to them. She insisted that they wouldn’t actually do the search until after they’d made a conditional offer and accepted it, and said that they wouldn’t actually look for credit information or motor vehicle records. To which I replied that if they don’t want those rights, don’t make people sign papers giving them to them, and reiterated that I wasn’t coming to interview with them.

Well, that was a huge waste of time

I noticed my picture gallery was showing a couple of albums twice, and when you clicked either of them, you got an error page. After trying about a million different things from various FAQs and from a guy who was being very helpful in the forums, I finally discovered something strange: the table g2_itemattributesmap had many duplicate entries. I deleted one of the dups (and manually reentered one, because there was no primary key or other way to uniquely identify one of the rows), one of the duplicate albums stopped showing twice, and when you clicked on it it worked correctly. So I did the same with another row, and suddenly the main page of the gallery stopped working. Oops. But in for a penny, in for a pound, so I continued on with the other duplicates and when I finished everything was working great.

I’m a little concerned about how this might have happened before. One thing I’ve noticed using Gallery is that the developers mainly seem to work in MySQL, and PostgreSQL (which I use) appears to be an after thought. And if there is one thing I know about MySQL, it’s that it implements a smaller subset of SQL than PostgreSQL, and it does some incredibly bizarre things that violate the SQL standard, especially when it comes to nulls. So I’m not surprised that MySQL-focussed developers don’t add unique contraints to a database table where the presence of duplicates causes things to break badly. I wouldn’t be surprised if MySQL doesn’t even support unique contraints correctly.

iPhone location data

Much has been made today about the fact that iPhones evidently collect some location data and store it in your backup files. I’ve only had my iPhone for a few weeks so it might be interesting to see what it’s collected so far.

Overview
All the location data for my phone
This is all the data on my phone. Although I’ve driven to Ithaca and back with the GPS on, and driven around Rochester with the GPS on, the data seems far too regular and grid like to correspond to anywhere I’ve actually been. There is a cluster of points in and around the town of Auburn NY, even though I haven’t been nearer than about 10 miles from there. There is a small smattering of points along the route between Rochester and Ithaca, but not what you’d call a smoking gun showing where I’ve been.

Rochester
Zoomed in on Rochester
Here I’ve zoomed in on Rochester, and I defy you to find some correlation between the position or size of those dots and where I’ve been since buying the phone, especially where I live.

The regularity of the grid makes me think that either the iPhone data or the analysis program is doing some sort of grouping of the data into regular intervals. Either way, I’m not sweating this.

Assembling the KayakPro Speedstroke Gym

I got the Speedstroke on Tuesday and I started to assemble it. I didn’t finish it on Tuesday, and because I had to spend Wednesday night in Ithaca, I had to wait to tonight to finish.

I started assembling it with the guide that came in the box with it.

First impressions: The erg goes together really easily. It’s very well designed for easy assembly. The quality of construction was absolutely amazing. Everything is built to extremely tight tolerances and it all just fits together without having to bend anything apart or crimp it back together. Ikea could learn a lot about precision from these guys. So could the manufacturers of all my kayaks. I love the fact that almost all the screws and bolts are already screwed and bolted into where they are going to go – no more hunting around in various bags and trying to match up part numbers, just unbolt it, bring over the part that’s going to be bolted to it, and bolt it together again.

That was great until I got to the bit where you start threading the ropes and bungies, at which point the manual *sucks*. Fortunately Kayakpro had sent me a link to a different assembly manual, and this one went into way more detail regarding the ropes. With nice clear close-ups of the individual pulleys everything was just as clear and easy as the original assembly. Within a few minutes I had everything assembled and ready to paddle. And another link they gave me described setting up the built in computer and how to calibrate it.

I got on and paddled for about 150 to 200 metres, which was where I felt the barest twinge of pain so I stopped.

There was only one small niggle. I could not for the life of me found any description of how to set up the strap that controls the foot brace position. Fortunately I’ve paddled a few of this model of erg so I could figure it out pretty well. Oh, and one other thing – they tell you not to extend the paddle any wider than the “maximum” width, but they don’t clarify whether that means with the paint marks showing or not showing.