This can’t be right

Is there anybody out here who knows anything about Subversion? I’m very new to it, and I think I might be used to better revision management systems like ClearCase and Git. Here’s the situation: My boss asked me to fix this project so that it could be built with Maven instead of Ant. One of the important things I had to do to was to move src/com to src/main/java/com, and move test/com to src/test/java/com, which I did using the “svn mv” command. I foolishly assumed that since I used Subversion commands to move the directories, that Subversion would then know that things had been moved. And when I merged my branch into the trunk, it appeared to work. But now somebody else just finished work on a branch that he branched off before my work. So we go to merge his stuff into trunk, and basically Subversion appears to think “ok, he made changes to src/com/foo/bar/baz.java, but that directory doesn’t exist any more, so it’s irrelevant, so discard it” instead of what I expected, which was “ok, he made changes to src/com/foo/bar/baz.java, but src/com has been moved, so I need to merge that into src/main/java/com/foo/bar/baz.java”.

Is there a way to make Subversion do the revision management, or am I going to be manually merging this guy’s changes for the next two days?

Google Chrome: not ready for prime time

Here’s what I discovered after a day of using the current beta of Google Chrome for Mac:

  • It frequently lost the text cursor in text input fields, especially on GMail.
  • It seemed much slower and more likely to corrupt the display compared to Safari in Google Wave.
  • It had a bad habit of undocking a tab on the slightest provocation.
  • The fact that the tabs take up space in the window frame means that you’d frequently undock a tab when you were trying to move the whole window.
  • It doesn’t have a “Reload all tabs” option. Supposedly there is an extension to that, but in order to use extensions I’d have to upgrade to the latest development build. That’s more work than I’m willing to do when it has all these other problems.
  • It doesn’t recognize or tell you about RSS feeds. In Safari or Firefox, any page that has an RSS feed displays an icon, and if you click it, the OS opens the feed in the currently configured RSS reader. The functionality is so ingrained in browsers that many pages don’t seem to have any other indication that they have RSS feeds. Once again, I’m told that Chrome has a plug in for that. Once again, too much trouble.

About the only thing I liked about Chrome more than Safari is that when I restarted it, it would re-open the three pages with 15 or so tabs between them that I had open beforehand. Safari can be trained to open the one page with 10 tabs that is my main window, but then I have to manually fiddle with the other pages. Oh, and Chrome opens new links in a tab instead of a window – that’s nice that I don’t have to hold down command when I click.

The main reason I was tempted to use Chrome is that using a busy wave in Google Wave causes browsers to eat memory like crazy. In Safari, to recover that memory I have to close the whole browser. In Chrome, you can recover it by closing the tab. Nice, but I was closing the tab and re-opening it every few minutes because the “space to next unread blip” functionality would stop working. I have to restart Safari about once a week if I avoid Wave, and about once a day if I use Wave.

I find it deeply ironic that the two biggest problems I had with Chrome were with Google apps. Maybe I’ll come back to Chrome when it’s ready. But not now.

New Years Resolutions

Start this off with a look back at last years, because for once I did a pretty fair job.

Here are my resolutions from last year:

break 20 minutes in the Baycreek time trial
I actually broke 19 minutes, so chalk that one up as a win.
finish the Long Lake Long Boat Regatta long race (9 miles)
I didn’t just finish, I came in 5 seconds behind Mike Finear, after dragging him in my wake for several miles. Another win.
figure out if I want to continue flying or not.
Gave up flying, didn’t really miss it. Found myself obsessing over every mistake I ever made in the air and about how blasé I was about the danger at the time. Trying to tell myself that’s because I was on my game back then so I could handle it, and now I’m out of practice I wouldn’t handle it so easily if it happened now. Can’t tell if that means I should never go back, or if I need to really practice a lot if I go back.
develop an ajax web site, using either GWT or jquery or ruby on rails or something
I started an iPhone app, but hit a snag and put it aside. Realized that the GWT web site would be a better help with my job search, and made some half decent progress on this before I actually got a job.
diet
That went pretty well. Between February and June I lost 40 pounds and then hit a plateau. Unfortunately it’s the same plateau I hit every time I go on a diet. Spend most of the fall still within spitting distance of being on the diet (it’s hard to be strict when you’re home all day) but not losing any weight. However, I think I was building some muscle mass in my arms and core, so maybe it wasn’t all that bad. Managed to gain 10 pounds of it back between Thanksgiving and now. Still a win, I think.
exercise
Yeah, pretty much. I started out the year being barely able to paddle 2 miles, and now a 10 mile workout holds no terror for me. Still trying to figure out how to keep that fitness over the off season. (Yeah, I know, “Off season? What’s that?” – getting out to paddle once in a blue moon is no substitute for paddling three or four times a week)
get a better job
Well, it took until a week before Christmas, but I got a decent contract job. Hopefully it will lead to more decent jobs.
once more subject myself to the psychological torture of trying to get more treatment for my pain
I didn’t actually do anything about this one. But between not having to sit at a desk, not having to drive much, losing weight and exercising more, my knees weren’t that bad. Of course after a week of driving 3 hours a day to my new job, my knees are now the worst they’ve been since back when I used to drive to Ottawa twice a month. Hopefully that will recover now that I’m working more from home.
1600×1200
How about 1920×1080 on the left, and 1920×1200 on the right. Now *that* is resolution, baby!

That was the year that was. This is my list for this year:

  • Break 17:30 in the Baycreek Time Trial. I’d like to break 17, but I think 17:30 is more attainable.
  • Join NYMCRA and start competing for points. I’d like to do at least 5 of the points races this year, but they haven’t put out the 2010 calendar yet so I don’t know which ones those will be. Last year I did Tupper Lake, Armond Bassett, and Long Lake, and I could easily extend that to 5 by doing Round The Mountain or Bear Mountain and the long course at the Rochester Open Water Challenge. I probably won’t get a lot of points, because unlike the other guys I don’t get any handicap points because I’m not over 50 and my Thunderbolt is Unlimited Class. If I’m reading the points system right, at Long Lake I would have gotten 85 points because although I was only 5 seconds behind Mike F, he got handicap time for being in an EFT, a Touring Class boat and time for being over 50, so his adjusted time is 3:34 ahead of me. Competing for points might add a new twist to races, but mostly I see it as a reason to go to more races.
  • Start building up my training volume. This year my GPS recorded 670 miles of kayaking, and that’s not including the early part of the season before I bought it, and the few times I forgot to charge the damn thing. I’d like to increase both the number of paddles and the length of them. If I can manage a few 20 mile plus days, I’d be slowly working towards doing the “90 Miler”, maybe in 2011 as a 50th birthday thing.
  • Get the diet back on track and try to break through this plateau I was stuck at this fall.
  • Finish revamping my navaid.com site into GWT so it doesn’t look like something designed in 1992, which it probably was.
  • Figure out the GRIB thing that Laurie wants me to do.
  • Hold onto this job, or find another one quickly when it ends.
  • And that’s about it for the public ones.

Hopefully I’ll do as well this year as I did last.

A tale of two government documents

Spoiler alert: I’ve got a new job. Woo hoo! I start on Monday.

When I got my citizenship, they took away my high security Permanent Resident Card (“green card”) and gave me this fancy paper “Certificate of Naturalization”. At the ceremony, they told us that we should apply for passports immediately because the “Certificate of Naturalization” isn’t good for travel, but you had to send in the “Certificate of Naturalization” with the passport application as proof of citizenship and identity. Well, I had to travel to Ottawa for a kayak race the very next day, and so I kept it. And it worked for a couple of trips to Canada. I was expecting to get a new job any day now, so I kept the document so I’d have proof of citizenship when the time came.

Well, it wasn’t “any day now”, but I eventually got a job, and I had to fill out the I-9, which is your proof of eligibility for employment in the US. And that’s when I discovered that the list of documents that you’re allowed to use for proof of citizenship and/or identity doesn’t include the “Certificate of Naturalization”. I even downloaded the M-274, which is the guide for employers for filling out the I-9, hoping to find they just omitted it for brevity on the I-9 itself. No dice. And searching the Citizenship and Immigration Services web site shows that in 2007 they purposely disqualified this document because it wasn’t secure enough. For some strange reason, older citizenship documents, that unlike mine don’t even include photos and look like they were banged out on a crappy typewriter, are still valid. The document also said that you can use your Social Security card as proof of eligibility, but mine dates back from when I was here on a TN-1 temporary non-resident visa, and so it’s stamped on the front “Not Valid For Work Without INS Authorization”, so I figured it was not valid, and so I thought I was screwed.

After worrying about it all night, I had a meeting with the HR person at the company that placed me, and she basically said that the Social Security card would be valid, because the condition on it was no longer in force. So we filled out the I-9 and she thinks everything will be fine. But just in case, I sent off my passport application the very same day so I’ll have that if any questions are raised.

But here’s the thing that I think is really stupid: the Certificate of Naturalization isn’t a valid document for proving your citizenship to work even in conjunction with other documents, but it is valid for proving your citizenship and identity to get a passport, and a passport is a valid document for proving your citizenship and identity to work. Hopefully the reason is that the passport people do some sort of verification or validation that the people who process I-9s do not or cannot. Otherwise it’s just stupid. Coupled with the fact that a fairly fancy document like the Certificate of Naturalization has been disqualified because it’s not secure enough, while primitive documents like the Social Security card and older citizenship cards are still accepted, smacks of “Security Theatre”.

Compare and contrast backup strategies

On the one hand, you have Jeff Atwood’s Coding Horror, a blog about programming read by thousands if not hundreds of thousands of people. And by the same guy, blog.stackoverflow.com. His backup strategy was to make copies of both blogs but leave them on his hosting site, and trust that when the ISP said they had it backed up, they really had it backed up. Of course, the ISP had some sort of hardware failure, and when they went to restore their backups, they found that they didn’t work. He’s now trying to reconstruct his articles (but of course not the comments, and some very few of the images that went along with them) from Google’s cache, the Wayback Machine, and the web caches of his readers.

On the other hand, you have this blog, which is about nothing in particular and read by probably 15 people tops. My backup strategy is this:

  1. Daily database dumps, copied to another file system on a different physical volume on the same box. That’s there mostly to quickly respond if I accidentally delete the database or an upgrade goes bad or something. If my blog got more traffic and more comments, I’d do those dumps more frequently.
  2. Another backup and a tar file just before I do an upgrade.
  3. Daily rsyncs back to my Linux server at home. I keep a week’s worth of those.
  4. Daily copies of that local copy to removable hard drives. I keep a month’s worth of those.
  5. Every week or so, I move one of those removable hard drives to a physically remote location.

And I did this when my blog was hosted on a VPS that the ISP claimed had some sort of backups and now when my blog is hosted on a 1u box that I bought on eBay and stuck in a local colo facility. As far as I’m concerned, you’re not backed up until the backup in your pocket.

Oh yeah, did I mention that some of those Coding Horror blog entries that went missing were about backups and how important they are?

I’m sorry, but the idiocy of this just leaves me shaking my head in wonder about why anybody ever believed anything he ever said about computers. On the other hand, it also makes me glad that I don’t have a huge audience hanging on my every word, because someday I might get something wrong (hey, I know, not likely, right?), and schadenfreude’s a bitch.