Archive for October, 2008

Adding Inclusion of the Origin in BKGraphs

Friday, October 3rd, 2008

BKit.jpg

A developer and I were talking about the problem I was having with the second Y axis on the VantagePoint graphs, and he brought up another point: "On graphs", he said, "the origin is included and that tends to 'flatten out' the data so that it's not as rich in detail as it might be." Basically, if the range of the data on the y-axis was 1000 to 1100, the graph would include the y-axis origin and the graph would be smashed at the top. Not good.

I ran some tests, and I found that on my tests, the graph didn't include the origin. I asked him to send me data to verify, and he wrote back that the secondary Y axis data - minus the second Y axis, was fine. Here's a prime (but simple) example:

Squished Line Graph

Sure enough, on a line graph, the y-axis origin is included. I was testing the scatter graph. So I dig into the docs and it seems that VantagePoint defaults this inclusion of the origin differently for different graphs. What I then did was to add the ability on the graph and the applet using the graph to force the inclusion of the origin for each axis independently... or not. Up to the user. So we end up with:

Scaled Line Graph

which is exactly what he wanted. Nice. Now there's the choice and that's going to lead to better looking graphs for the users.

Had a Few Things to Look at in the BKGraphs

Thursday, October 2nd, 2008

BKit.jpg

A few days ago, I got an email from the manager of this web site saying that he was starting to use the dual-Y-axis line graphs in BKit for the first time, and he was having a problem. I knew I had them working, but I checked my test case applets anyway. Sure enough, they worked fine on several systems in browsers and in the Java appletviewer. I sent back an email saying I couldn't reproduce the problem.

He got back to me saying it was the version of VantagePoint that seemed to be the issue. If he used the older version I used in my tests (4.6.4) then it worked as well. But if he used the newest version (4.6.6) then he got the following exception:

  Exception caught on Viewer[hash=07207493]'s render thread.
  java.lang.RuntimeException: Not implemented.  Use TwoDimVectorDataSet or
        TwoDimTimeSeriesVectorDataSet
    at com.visualizeinc.vantagepoint.jdk12.jfc.CommonDataSet.getColumn
    at com.visualizeinc.vantagepoint.jdk12.jfc.TwoDimLineChartViewer.getIsOnSecondary
    at com.visualizeinc.vantagepoint.jdk12.jfc.TwoDimPointViewer.bp
    at com.visualizeinc.vantagepoint.jdk12.jfc.TwoDimGraphViewer.b
    at com.visualizeinc.vantagepoint.jdk12.jfc.TwoDimPointViewer.e
    at com.visualizeinc.vantagepoint.jdk12.jfc.TwoDimLineChartViewer.e
    at com.visualizeinc.vantagepoint.jdk12.jfc.VisualViewer.p
    at com.visualizeinc.vantagepoint.jdk12.jfc.VisualViewer.b
    at com.visualizeinc.vantagepoint.jdk12.jfc.VisualViewer.run
    at java.lang.Thread.run(Thread.java:613)

I sent off an email to the VantagePoint technical support guys and didn't hear from them for a day or so, so this morning I decided to see if I could fix it by changing my use of the TwoDimDataSet to the mentioned TwoDimVectorDataSet.

So I started by making that change and recompiling. I then ran through all the graph types I had to make sure they all worked. The first problem I ran into was with the Heat graph. It was all red. I had to track it down to a few lines in the creation of the Heat graph:

    case HEAT:
      g = new TwoDimGridViewer(getData(), true);
      if (g == null) {
        error = true;
        throw new BKDebugException("BKBaseGraph.switchGraphType(int) - a VantagePoint
            TwoDimGridViewer could not be created on this dataset. This is a serious
            problem as nothing can be changed.");
      } else {
        // make sure that the graph knows to color pts & labels
        g.setOption(VisualViewer.oiColorStatus, true);
        g.setOption(VisualViewer.oiColorStatusLabel, true);
      }
      break;

It turned out to be lines 9-11 which had been put there to make sure that the default color of labels and points was red. This works fine with the other graph types, but for the Heat graph, it makes all the squares that color. The solution is to not call those methods and I decided to add in the color smoothing in it's place:

    case HEAT:
      g = new TwoDimGridViewer(getData(), true);
      if (g == null) {
        error = true;
        throw new BKDebugException("BKBaseGraph.switchGraphType(int) - a VantagePoint
            TwoDimGridViewer could not be created on this dataset. This is a serious
            problem as nothing can be changed.");
      } else {
        // smooth the colors from one square to the next
        g.setOption(TwoDimGridViewer.gtSmoothColorGradient, true);
      }
      break;

At this point, I have a nice Heat map again:

BKFixedHeatGraphApplet - Fixed

But when I tried to change from using the TwoDimDataSet to the TwoDimVectorDataSet I got a different exception:

  Exception caught on Viewer[hash=03840954]'s render thread.
  java.lang.NullPointerException
    at com.visualizeinc.vantagepoint.jdk12.jfc.TwoDimLineChartViewer.getIsOnSecondary
    at com.visualizeinc.vantagepoint.jdk12.jfc.TwoDimPointViewer.bp
    at com.visualizeinc.vantagepoint.jdk12.jfc.TwoDimGraphViewer.b
    at com.visualizeinc.vantagepoint.jdk12.jfc.TwoDimPointViewer.e
    at com.visualizeinc.vantagepoint.jdk12.jfc.TwoDimLineChartViewer.e
    at com.visualizeinc.vantagepoint.jdk12.jfc.VisualViewer.p
    at com.visualizeinc.vantagepoint.jdk12.jfc.VisualViewer.b
    at com.visualizeinc.vantagepoint.jdk12.jfc.VisualViewer.run
    at java.lang.Thread.run(Thread.java:613)

which is saying that it's trying to call CommonDataSet.getColumn but it's getting a NullPointerException. I'm guessing that this is something to do with the way the TwoDimVectorDataSet is used. Interestingly, all the graphs I've checked work fine with the TwoDimVectorDataSet instead of the TwoDimDataSet. So I'm thinking I'm using it properly, it's just something in their code.

I've gone directly to their web site and put in a support request saying all the data I have on this and asking them to please help me. New version... new code... something that will give me back the double-Y axes on a graph like was (is) available in 4.6.4.

Skitch v1.0b7 Released – One of My Favorite Apps

Thursday, October 2nd, 2008

Skitch.jpg

This morning I read that the great guys as plasq have released Skitch 1.0b7 which has several new features and a few bug fixes as well. The primary change is the addition of the 'Put on all Spaces' option in the preferences. This makes it possible to have Skitch on every Space, and that's handy for moving things between Spaces.

OK, so it's not like they upgraded the storage, or added in something new and wild - but it's already the best app I've ever seen for what it does - get pictures easily, edit them simply, save them to the web in a place that's easy to link to, and you're done. All of this takes next to no time, and any improvements are just icing on the cake.

It's an open beta... look into it. It's wild.

Updated to Git 1.6.0.2 on My Intel Macs

Wednesday, October 1st, 2008

gitLogo_vert.gif

I checked, and the Git for OS X group has built git 1.6.0.2 for the installer. Since I've decided to use them for git, it made sense to update. Additionally, 1.6.0.2 is the version that I've built from source for my OS X 10.3.9 box so it makes good sense to move.

I'm still waiting for some time to get gitweb going on my home server, but it's been a heck of a few weeks, and there just hasn't been time. Soon... very soon. And then there's the project I need to start using it... Holy Cow!

I gotta say... I'm really looking forward to using this. I just wish I weren't so bloody busy this month. Soon enough.

Apple Lifts the NDA on the iPhone Developers

Wednesday, October 1st, 2008

Apple-logo.jpg

Amazing, but they did it. Apple lifted the NDA on all iPhone developers. Great. I guess the pressure worked. Good enough. I've already heard that the Pragmatic Programmers are back 'on' with their iPhone development book. Nicely done. I'm not in the market - yet, but when I am, it'll be nice to know these guys have a book that I can get as PDF and view on my MacBook Pro.

Well... that's been an unusually awkward period for Apple. I'm glad it's over. The Good Guys are better than that.

Well… That Didn’t Take Long…

Wednesday, October 1st, 2008

SwissJupiter.jpg

I've been forced to be the Manager of this project's core development. I didn't want it, I told my Boss it was a bad idea - that I wasn't the right guy, that I'd be undercut by the Management Team anytime I tried to get someone to do something they didn't already want to do... all that. I even tried it for a few months, it was a mess, but I didn't really piss anyone off, and I went back to say I wanted out, it wasn't working, etc. Still, I was being forced to do this.

"We'll back you up." they said.

"You are to assign tasks and not keep them all to yourself - that creates a bottleneck, and overloads you. You need to assign some of these tasks to speed up the process."

And always: "We'll back you up - we're all on the same Team and we need to get moving."

Yeah, right.

Well... I can honestly say that it's taken about a week from the last of those talks to today when I found out that not every manager is on the same page. Specifically, there was a task that needed to be done and I had/have absolutely no pertinent experience on the issue. Sure, I can learn, but that's not the same, and it's not in keeping with what they have expressly stated they want me to go - delegate to better skilled people.

So I sent out an email with a lot of questions on this issue to try to come up to speed myself - as no one was standing up saying "Pick me! Pick me!", and I got a very knowledgeable response from a guy in London and I wrote back saying it was nice to see he knew so much, that I'd assign the ask to him.

The project manager read this and noted that if there was coding work, I'd do that, I agreed, updated the project plans to indicate all these changes - his assignment, new tasks for the identification others for the coding of the new custom fields, and thought - hey, this is going to work out pretty well.

Then the other shoe dropped.

Another manager sent me a nicely worded, but nasty intended email about checking with a person's manager before assigning work to them. There it was... cut right out from under me.

Should I have checked? Did anyone check with my manager before assigning me things? Nope. Wasn't I told recently - on several occasions, to do just that? Seems like it.

So I waled into my manager's office and said "OK, just do you know - that's the last time I'll do it. Period." I explained the situation and reminded him that I predicted this months and months ago. He said he'd look into it. I said nothing, and left.

If you're going to say I should do something, then you bloody well better back me up and make it known so that when I do, I do not have this guy slap me down. I hate this Keystone Cops style of management. I will do my work, but I won't be a part of that. Not anymore.

UPDATE: I was later told what happened... turns out his manager was upset and yet his manager and the Project leaders supposedly backed me. They didn't find out what happened, but they said the best thing might be to send all my 'assignment requests' to the Project Manager and let them physically make the assignments so there's no question of the authority. This is a mess. But I'm fine with passing on recommendations. Dumb, but workable.