Archive for September, 2007

Managing Performance and Scalability

Tuesday, September 25th, 2007

Over the past four years, Spider Strategies has been involved in some major collaborative performance management efforts. Our first effort was simply to provide the ability to convert a database on a public server into some kind of text files and then pass those text files through a filter so that they could cause the public database to be merged with a database on a classified server in such a way that all the public changes were replicated on the classified server. If you think, for a minute, about solving the problem of converting a large database deletion into a text file that would replicate that deletion on the classified side, you start to see the problem. Now, think for a minute about having thousands of daily changes taking place simultaneously on both sides of the filter. Do you see a problem coming? So did we. But solving that problem was what founded Spider Strategies.

The next problem was performance assessment auditing. There are situations where one implementation team cannot be replaced by another until the replacing team meets certain standards that are documented by metric analysis. One of those situations involved over 600 organization units and over 45,000 data points. Imagine trying to open a webmail client with 600 folders and 45,000 emails embedded in those folders. You know, from past experience, that your browser would not open. Spider solved that problem, too.

Today, we are involved with providing a collaborative platform for allowing multiple users organized into teams, departments or any kind of organization unit to keep their meetings online, to track their Action Plans and personal actions online as well as uploading and tracking edits to their performance documents. You might think that the workload has finally reached the point where we need to split off “modules” of this functionality and implement some kind of offline communication. It hasn’t.

Spider planned for where we are today. Today, Spider Strategies offers a scalable web solution that allows organizations to link, align and collaborate in ways that no one imagined just a few years ago. Right now we are looking at putting in place a central server that can connect thousands of organizations for the purpose of mandatory reporting to one of the cabinet agencies. It will allow security, cross functional communication and metric analysis from anywhere in the world.

A performance management web application is just a toy if it isn’t scalable.

New Support for Smaller Browser Resolutions

Thursday, September 20th, 2007

A couple days ago I talked about how we made Corporate Management Suite 1.5 easier to use by moving the Organization and Date selectors to the upper left hand corner. It was a great start, but we didn’t stop there.

An annoyance with the software that we’ve known about for a while is that while everything looked good at normal browser resolutions, things got a little squished when viewed on older computers that run at 800×600. As you can see in the 1.4 screenshot above, the tabs fill up the whole top of the screen, and the date selector overlaps two of the tabs, making them unclickable.

Well no longer! To combat the small browser phenomenon we now check the browser’s width and adjust the tabs accordingly. If there is no room to display all of the tabs we now replace the unused tabs with a single “Change Tabs” button (green arrow). When clicked, a menu drops down, allowing you to to select from the tabs that aren’t displayed.

We know that this feature won’t be used by many of our users, but we think it will certainly be appreciated by those who do need it!

New Changes to Organization and Date Selectors

Tuesday, September 18th, 2007

We’re constantly refining the user interface of our Corporate Management Suite software based on feedback from our customers, but the changes in version 1.5 are particularly noteworthy. The first ones I’m going to focus on are the Organization and Calendar Period selectors.

Traditionally, the date selector has been in the upper right hand corner (red arrow). It displays the current period, and when you mouse over it, the calendar period selector slides up. The problem with it being placed in the upper right hand corner is that that’s the last place where people look and it’s easy to lose track of what the date is for the data you’re viewing. Another problem is that by just mousing around the screen you can inadvertently trigger the calendar period selector.

In CMS 1.5, we’ve moved the calendar period display to the upper left hand corner. Joining it is the organization display (purple arrow) that has always felt out of place in its old spot under the tabs. Both are now changed by clicking on “change” links rather than via mouse-overs.

We think that these changes will make the Corporate Management Suite even more intuitive and easy to use, and we think you will too. Stay tuned for more updates about the new functionality in 1.5.

Set Textarea Maxlength with JavaScript Intrinsic Events

Wednesday, September 12th, 2007

With the wonderful implementations of AJAX, many people (myself included) tend to look first within libraries like Dojo when trying to implement a client-side solution. While this is generally a good approach, one thing that some developers tend to forget is the intrinsic events like onkeypress, onmouseout, etc.

A good example is the textarea tag. It doesn’t have any limit on the number of characters like the input tag, so it’s a great candidate for a simple JavaScript function to duplicate the maxlength functionality. The initial instinct when coding something to handle this is to check the length of the field and return a false if it’s reached the limit. This does indeed limit the size, but there’s one problem; backspace and delete trigger onkeypress. As a result, if you’re at the limit and try to delete characters, it returns false and nothing happens! Instead, I find the best solution is to truncate the field if the size is reached. For example, to limit a textarea to 255 characters:

<textarea id="maxdemo" rows="20" cols="80"
 onkeypress="maxlength(this, 255);"></textarea>
<script type="text/javascript">
<!--
/**
 * Determines if a field is exceeding the maximum size
 * and truncates the string if it is over the limit.
 */
function maxlength(field, size) {
    if (field.value.length > size) {
        field.value = field.value.substring(0, size);
    }
}
// -->
</script>