Adding Polish to My Web App

April 2nd, 2009

WebDevel.jpg

I have to admit that the process of adding polish to an AJAX web app is a lot like a regular app. Getting users to hammer on it - including yourself, and working to see what you can do to make it better, cleaner, smoother. The goal should be to have it work exactly like the user thinks it should act. Face it, it's a web page with a few widgets on it - it shouldn't require a manual to operate. If it does, then there are big problems.

So today I did a lot of little things - a few to the back-end, and a bunch to the front-end.

Probably one of the biggest things was the addition of the 'resolution' of the display. Face it, there may not bee the need to show all the data points, but maybe so. What I added was a very simple way of compressing the data (averaging points) so that the data looks 'smoother', but retains a lot of the shape of the original curve. It's going to make it more useful as it's footprint on the client will be smaller, and therefore faster to deal with on older machines.

It looks nice.

GitX 0.6.2 is Out

April 2nd, 2009

GitX.jpg

A wonderful little git repository visualization tool for Mac OS X - GitX, released an update this morning to 0.6.2. There were bug fixes to the history view as well several new features - including the ability to create a new repo. While I'll still probably remain a command-line type of guy, it's really nice to see this guy take shape and get more full-featured.

It's a wonderful source control system written for developers by developers. It's a joy to use.

Wild Internet Explorer 6 CSS Bug – Fixed!

April 1st, 2009

WebDevel.jpg

For the last day or so I've been battling a nasty bug in Internet Explorer 6 (IE 6) when refreshing my Google Visualization widget with a simple Javascript timer. The problem was that for each refresh, the enclosing HTML table would expand horizontally. No joke. For each update/refresh of the widget, it seemed to "push" the div wider, and after a few minutes, it was twice the size of the initial graph.

Makes no bloody sense. But then again, it's IE 6 and I've read enough to know that I should expect a few of these, and to try and roll with the punches and see if I can't get something working.

The original HTML for the AnnotatedTimeLine wigdet was:

  <tr>
    <td>
      <div id="chart_div" style="align: center; width: 600px;
                                 height: 450px;"></div>
    </td>
  </tr>

and when I finally found this article, I realized that it was as easy as adding the overflow: hidden; attribute to the CSS for the div. The result being:

  <tr>
    <td>
      <div id="chart_div" style="align: center; width: 600px;
                                 height: 450px; overflow: hidden;"></div>
    </td>
  </tr>

With this, my updates of the Google AnnotatedTimeLine don't expand on IE 6, and it doesn't mess up the rendering on Firefox 3, either. Nice thing to know.

Camino 1.6.7 is Out

April 1st, 2009

Camino.jpg

This morning I noticed that Camino 1.6.7 was out so I upgraded. The release notes say that in addition to the latest version of the Gecko rendering engine, there are several fixes and upgrades to the Flash block animations. Interesting, but again, Camino is third-tier web browser for me - Safari, Firefox and then Camino. Still... it's nice to see what it's doing and have the option to check things out with that rendering system. So I keep upgrading.

Finally Got OmniGraphSketcher Beta 2

April 1st, 2009

OmniGraphSketcher.jpg

This morning I was finally able to get a good download of OmniGraphSketcher Beta 2 and have a little look. The two demo videos are exceptionally impressive, and being a sucker for data visualization tools, I just had to get it. The license is only $30, and for that, it's a deal. The visual way they allow the user to interact with the data and the graph is exactly the kind of tool I like. While DataGraph is nice and precise, this is more, well, of a sketcher. It seems to be focused on getting the data down on the graph - no matter what the form, and then embellishing it. Nice.

Not sure which one I'll use more, but it'll be interesting to see how they evolve in the coming months, years.

Miro 2.0.4 is Out

April 1st, 2009

miro.jpg

Miro is an odd fish, in my book. I'm not sure exactly what the source of the videos are, but I like the idea, and the tool is really quite nicely put together. This morning I noticed that they have a new release - 2.0.4, and it supposedly fixes a few issues. Again, since I haven't been using it a lot, I can't speak to the real problems solved, but I like to keep it current in the event that they have the kind of content that I'd like to see.

Specifically, episodes of House.

But I'll have to give it a little more time and see if they show up in the client. For now, it's an update and then back to work.

Holy Smoke! Building Web Sites is Fun Again!

March 31st, 2009

WebDevel.jpg

I've been fine-tuning my webapp this morning, and I have to say that it's a ton more fun to use servlets on the back-end and HTML and Javascript on the front, typical AJAX, than the other schemes I've used. Probably the second best is the Tapestry framework, and there's no reason you can't use AJAX on Tapestry, but the HTML in Tapestry is still going to have to be generated by the server, so it's not as lightweight as the system I'm using, but it's still not bad.

No, I have to say that this is a wonderful little way to put pages together. Certainly, a lot of the credit goes to Google's Visualization API. Without the widgets and the data standard, it would have been possible, but not nearly as powerful and therefore - fun.

Yeah, I think I'm going to have to do a lot more of this and see where it goes. Fun.

Interesting Gotchas with Google Visualization AnnotatedTimeLine

March 31st, 2009

GoogleVisualization.jpg

I have been messing with the Google Visualization's AnnotatedTimeLine widget on my webapp, and while it's wonderful in so many ways, there are a few 'gotchas' that I've run into - and I'm not alone on one of these.

Specifying Column Index in Hiding/Showing Columns

The AnnotatedTimeLine has some really nice methods that allow you to show/hide the lines on the graph (columns in the DataTable):

    chart.hideDataColumns(2);
    chart.showDataColumns(2);

the problem is that the columnIndex that you'd think you needed to pass in would probably be wrong. They are looking for the dataset index and for that, you have to remember that the date data in column 0 of the table is really not considered in this calculation.

So, if you have the name of the column and want to make it disappear, you need to have a function like:

    function toggleView(name, state) {
      var i;
      var colCnt = graphData.getNumberOfColumns();
      for (i = 1; i < colCnt; i++) {
        if (graphData.getColumnLabel(i) == name) {
          // the dataset number is one less than the column number
          if (state) {
            chart.showDataColumns(i-1);
          } else {
            chart.hideDataColumns(i-1);
          }
        }
      }
    }

If you remember to have the right offset, it all works fine.

Showing a Hidden Line Bug

I found a reference to this on the Google Visualization mailing list. It turns out that if you try to show a hidden line, it doesn't work. But if you cycle it twice then it works. Meaning this doesn't work:

    // hide the line on the graph
    chart.hideDataColumns(2);
    // show the line we just hid
    chart.showDataColumns(2);

but this does:

    // hide the line on the graph
    chart.hideDataColumns(2);
    // show the line we just hid
    chart.showDataColumns(2);
    chart.hideDataColumns(2);
    chart.showDataColumns(2);

It's the "second cycle" on the 'show' side of things that makes the difference. This is an acknowledged bug by Google, and the good news is that as soon as they fix it, we're going to get the fix. Nice.

UPDATE: With the 3/30/2009 Release Candidate from Google, this is fixed! Yup, just use the version "1.1" in the google.load() javascript call and you'll set it. It's set to go to production on 4/6, and at that point, version "1" will again get it. Excellent update!

So... just keep these in mind if you're using this widget.

NeoOffice 3.0 is Out

March 31st, 2009

NeoOffice.jpg

I don't use it often, but when I need it, NeoOffice is a really handy app to have. Specifically, it seems that some Microsoft Office formats (Word, Excel) don't import nicely into Pages or Numbers, and even Bean can't read them properly. In those cases, I've had great luck using NeoOffice to read and work on the files.

It's like the last chance for a Microsoft Office document. Well worth the download - if you need it, it's a lifesaver.

Awesome Day – Loads Accomplished

March 30th, 2009

cubeLifeView.gif

Today I leave feeling like I've really gotten the webapp into a good place. It's not all done, that's for sure, and I want to fix a lot of things, but it's working. It's got all the features it was supposed to have in it's first cut, and it's ready to show to the users.

It's nice to have a really great day. Get a lot done. Feel like you're a contributing part of the team. It's nice. While today isn't the first time this has happened, it's always nice to have it happen as often as possible.

The app is really close. I can see how it'll finally look.