This could work

I probably shouldn’t give too many details, but I’ve been in talks with a certain freeware developer over developing a flight planning application for a web connected hand-held device. (Anybody who knows anything about me can probably guess the developer and the device.)

My part would be a server app that would respond to requests for data from the device and send new data or updates. Nothing too different than what I’ve been doing before, but one of the things we’ve been talking about is managing “areas”. His concept was that if the user entered an id that wasn’t on the device already, my server would send the device a whole “area”, and the device would keep track of what areas it had in memory already, when they were last updated, and would occasionally request updates of the areas it knew. He thought that each area could be a whole country. The first thing that struck me about that is that if the point you asked for was in the US, you could be asking for thousands of waypoints (70,584 in the current database). That could take a long, long time on an Edge network. Then we discussed maybe breaking it down by state or province in the US and Canada.

But the thing is, I used to be a GIS (Geographic Information Systems) programmer. I know there are better ways. At first I started looking around for the HHCode algorithm since I worked with Herman Varma and the Oracle guys implementing the original Oracle “Spatial Data Option”, until that scumbag Jim Rawlings screwed me out of three months pay. But I can’t find the source code anywhere.

So my next idea was a modified quad tree. Basically, when populating the database, I made a “rectangle” that incorporates the whole world and start adding points. When I hit a threshold, I subdivide that “rectangle” into 4 equal sub-rectangles, and move the points into whichever rectangle they belong to. This means that where points are sparse, the rectangles are large, and where they are dense, the rectangles are small. That way I’ve got some consistency in the size of the file to be sent to the device, and I’m not wasting people’s time sending the 19 waypoints in Wake Island, say, as an individual file.

I’ve been experimenting today with PostGIS, which is an extension to Postgresql which adds some very efficient geographic query tools. The program I wrote to take the data from my old MySQL database and put it into the PostGIS database while building these quad cells runs pretty fast. Surprisingly fast, even. PostGIS is pretty capable. Too bad the manual for it sucks rocks.

One thing that I keep forgetting is how much faster computers are now than when I was doing GIS for a living. I keep expecting things to take hours when they end up taking minutes, because the last time I did this sort of thing I was using a 40MHz SPARC and now I’m using a dual core 1.86GHz Intel Core2 Duo, and I’ve got more RAM at my disposal now than I had hard drive space back then.

Anyway, mostly I’m writing this because I’m really enjoying working with GIS-type stuff again. I wish I could do it full time again.

I have seen the future, and it sucks

Today the developers were invited to see what our new usability expert has come up with. Evidently he hired some local company to do the graphics, and somebody else to whip it up into a fancy all-signing all-dancing Flash demo. It’s all eye candy and very little substance, and it looks childish to me. But evidently all the suits and managers love it, so it’s going to go ahead. I can’t tell you what it looks like, except the back drop looks like it was copied from the default background/splash screen/packaging of a certain fruit-based cat-themed operating system that was recently released.

The fact that the interface looks like it was designed more to impress suits than to help the people who are going to use it day to day isn’t the part that sucks. The fact that it’s all going to be written in Flash semi-sucks. The fact that it’s apparently going to be designed without talking to the people who’ve been working on the program for 6 years semi-sucks. What really sucks is that the project leader is talking about either outsourcing the entire Flash part of the user interface, or hiring their Flash programmer away from them. It was left to my cow orker Rohan to speak up and say “the reason you hired good people in the first place is that with a little training we can do anything, including Flash”.

Q. When is a deadline not a deadline?

A. Evidently, when it’s given to you by your boss’s boss’s secretary.

Every month, we have to fill in this stupid charge code thing. It’s especially stupid for me, because I only ever have one charge number, so it’s just a matter of pulling out my timesheets for the month and adding up the numbers. But it’s always due on the last business day of the month. So we get a reminder email saying “Please have your [foo] hours in by noon on Friday” about a week before. Then we get another reminder at the beginning of the week. Then a few of us get another email a few days before it’s due. And then today, 21 hours before the deadline we were given, my boss forwards me an email from the secretary saying “I sent these guys three reminders already and they still haven’t put in their time”, and a note from the boss saying “PUT THEM IN ASAP!”. WTF? If the deadline is noon tomorrow, why can’t I put it in tomorrow morning? I wrote back to her saying “if noon Friday isn’t the real deadline, why were we told that was the deadline?”

The way I see it, I have a very good reason for waiting. I’m paid hourly. That means if there is nothing for me to do, (and or the weather is nice for flying or kayaking), then I have a duty to bugger off and stop costing them money for nothing. So I don’t put in my hours until the last minute, because I could end up putting in my hours on Thursday morning and then run out of task so need to take off Thursday afternoon.

So I guess it comes down to: do they want accurate numbers, or is this just an exercise in bureaucratic masturbation?

Oh, it gets better. Here’s an email from my boss

Curious why you can’t just complete a simple little task without making a big deal about it and copying in the rest of the team. In doing so you take up additional time on their parts as well as mine. Mike and Wanda review the input prior to noon to ensure it is correct. Noon is the actual cutoff time in the system. I find it absolutely ridiculous the amount of time it takes us chase all of you down each month. You have an entire month to put your time in – why wait until the very last minute to do so?

Developer dumbassedness

Every morning, there is an ISO of the new build of our software in the drop box. If any of your code is new in this build, you’re expected to “integration test” your code to make sure it at least doesn’t make anything worse. Most people do it on the Integration Test Plex but some of us have our own mini-plexes cobbled together out of obsolete equipment.

This morning, I installed the ISO on my mini-plex as per usual. Only problem: my entire content directory was missing, and none of the software would run because it had evidently been compiled with Java 1.6 and the mini-plex has Java 1.5 installed on it. It turns out that one of the developers who doesn’t work with us very closely put together a new installation procedure that requires a special DVD instead of our normal installation procedure that is supposed to reformat our content directory as XFS, and upgrade it to CentOS 5.1. When I complained that nobody told us that we needed to follow a special upgrade procedure, he said “why didn’t you wait until it passed integration testing?”. Because I was trying to integration test it, dumbass!