WordPress plugins

Every now and then, the WordPress OpenID comment plugin I use goes mental and starts taking people’s comments and posting them to a non-existant post, and also stripping out all the text of their comments. I suspect it’s an interaction with SpamKarma2 and/or Akismet, but there is no way I’m going to do without spam protection, so I guess at times like this, my only option is to deactivate the OpenID plugin.

So sorry pir and jdev, but your comments were lost. Please feel free to submit them again.

Now I’m even more confused than before

As I wrote in Rants and Revelations » C Paul Program, C Paul Rant, I’m trying to “recreate” a C program that I wrote back in 2001. I’m using the same shapelib library for reading ESRI shape files, I’m using (what I think is) the same algorithm for doing point in polygon tests, and it’s using the same shape file, one that was published on the ESRI web site back when Nunavut first became a territory. And it seems to be up and running.

So I wrote a little perl script that goes through my database and picks out the 3400+ waypoints that are in Canada and which come from DAFIF, and run them through both the old and new program. Both the old and new programs are looking at the same shape file. So you’d expect the exact same results, right? Wrong. There are 309 points that the old program assigns provinces to that the new program says are outside of any provincial boundary. Some of those are ones that I’d already noticed were assigned to provinces even though they were way out at sea and probably shouldn’t be, but some were airports that are near the coast or on islands. That’s a problem.

My first suspicion was that the algorithm as published used floats, but I’d converted it to using doubles because face it, these days computers are so damn fast. But I switched back to floats and now there are 314 differences. Some of the original 309 are now back to what they were, but some points have jumped provinces, like COMPR which moved from Alberta to Saskatchewan (which Google Maps just barely agrees with, by the way) and KITAR which moved from British Columbia to Yukon Territory (which Google Maps says is a toss up). But most importantly, it didn’t “fix” any of the coastal or island airports that ended up with no province. I’m not convinced that’s a net positive. So I’ve gone back to using doubles.

Ok, one other difference is that the notes for the algorithm mentioned a way to compensate for shapes with holes in them by inserting (0.0,0.0) points between the rings. I don’t think I did that before. So I tried without. No dice – still 309 differences.

And then I remembered one other difference. I call SHPRewindObject on each shape as I read it. According to the docs, that’s supposed to fix any problems with shapes that go the wrong way round. But no, that didn’t change anything either.

So I’m left with a mystery about why there is a difference between the old program and the new one. Since I don’t have a GIS program that can read and manipulate shape files, I think my next step will have to be to turn these shape files into Google Maps API polygons so I can plot these wayward points and see if the problem is in the shapes or in the algorithm.

C Paul Program, C Paul Rant

I was playing around with the Google Maps API and loading some of my nav data into Google Maps when I noticed a few waypoints with the wrong province. Oh oh. For instance, CDT5 Buctouche Airport is marked as being in Quebec instead of New Brunswick.

The DAFIF data never provided province data, so a long time ago (March 2001 according to Google Groups) I located some shapefiles with provincial boundaries and wrote a C program to do “point in polygon” to figure out what province the points are in. Obviously there is a mistake either in my algorithm or the shapefiles. Which is too bad, because a while ago I discovered that I don’t have the source code for the program any more. Not sure where it went, but I can’t find it anywhere. Funny, that program has moved without recompiling from my home system to Gradwell hosting to Linode Virtual Private Server to my rack to back on my home system. But now it’s time to recreate it.

The first step to recreating it is to find the library I used to access shapefiles, and after a bit of searching I discovered its name and web site, and also that it’s in the default Debian distribution. Of course, being Debian, in spite of the fact that it’s a positively tiny little tar file when you install from source, they had to break it up into libshp1, libshp1-dev and shapefile packages. Was that really necessary?

The next step was to find the Point In Polygon algorithm, but fortunately the newsgroup thread that I found my asking about it in 2001 also had the pointer to the comp.graphics.algorithms FAQ for that.

Now the biggest hurdle is that I’ve got to get my mind back into C programming again. Ugh. It’s hard to think that I used to do this shit every day, and it was all second nature to me. Now I’ve got to stop and think that when the function signature says “double *” and it returns X, Y, Z, and “M” (whatever that is), that I really need to declare “double maxBounds[4]” and pass it as “maxBounds”, but when it says “int *” and it returns a single value, I need to declare it as “int nVertices” and pass it as “&nVertices”. Even when I was doing C++ I didn’t have to deal with crap like this because C++ programmers were *far* more likely to declare a class and use that as the return type instead of passing in a huge list of arguments to return values in. There was a time when I thought C was the greatest language. And I helped write a gigantic Geographic Information Systems product in it. Those were the days.

Yet another reason why Lotus Notes is not my favourite software program

I asked one of my bosses why I wasn’t invited to a certain meeting. He said he did, but it was declined. A few years ago I got tired of the constant stream of meeting invites, modifications, and cancellations, I set it to automatically accept any meeting invitation, so this was a bit of a surprise. So I went into the highly intiutive Actions->Tools->Preferences menu, only to be greeted by a popup saying

Availability Problem
Your availability time range is invalid, please correct.

and when I clicked on “Ok”, I got another popup

Cannot locate field

and when you click on “Ok” on that one, a third popup

Notes Error – Cannot locate field

Going into “Calendar & To Do”->Scheduling on that dialog subjects you to many more of these triple threat popups, like every time you attempt to edit one of your availability times. My availability was set to 4am to 5pm, which seemed a bit over-zealous to me. But I couldn’t edit them, and I couldn’t save the Preferences dialog, either.

I found this page on IBM’s support site for Notes, but none of the complicated options actually did anything except subject me to more of those triplet popups.

Then I found another unofficial page where somebody said to turn on Saturday and Sunday availability, edit their available times, save it, then come back in and turn off Saturday and Sunday availability. Sure enough, Sunday’s availability was set to go past midnight, and when I set that to “11:30 AM – 11:31 AM” and saved it, the problem went away. And then I was able to set my weekday availability to a more reasonable time as well.

Thanks very much Notes. Rot in hell.

Update: I just figured out why his meeting notice was declined: He had it scheduled to repeat every Tuesday and Thursday, and Notes is smart enough to see that there is a conflict (22 November is a company holiday) but dumb enough that it rejects all instances of the meeting instead of just one. And why did it allow him to create the meeting then? Sheesh, what a piece of shit.

Ok, I’m confused

I’m trying to find a way to put a nice formatted table in my Google Web Toolkit application, and I was looking at gwt-advanced-table – Google Code. The code comes with no documentation, just an example that took a lot of wrangling to get it to work. And is going to take even move wrangling to get it to work in my demo.

But the problem is that we want to avoid viral licenses in the code we use. And since this isn’t packaged up as a nifty jar, its code will mingle in with ours. Our company lawyers have cleared a few open source licenses, but obviously not the General Public Virus. One they haven’t cleared yet is the Mozilla Source License. So I look at the Google Code Page for this code, and there at the top right is the banner “License: Mozilla Public License 1.1”. But down at the bottom (and in comments in the code), it just says “License: Freeware”.

So which is it?