Friday, November 12, 2010
The GrandView development team switched to using Visual Studio 2010 last spring as part of our effort to provide the best product we can using the latest tools. Now that we have been actively developing in VS 2010 for a few months, we thought it was time that we shared our experiences.

Javascript Intellisense
Javascript intellisense has always been difficult due to its dynamic nature. Visual Studio 2010 is powerful enough to pseudo execute javascript code to be able to provide useful intellisense. This is made even more useful through support for jQuery intellisense as well. These improvements has allowed us provide additional client-side functionality in GrandView while shortening development time.

Multi-Monitor Support
One of my favorite new features in Visual Studio 2010 has been the addition of multi-monitor support. Editor, designer and tool windows are no longer restricted to the main window. This allows the developer to take full advantage of monitor real-estate to minimize context switching and increase productivity.

Improved Debugging and Breakpoints
Visual Studio 2010 has included many improvements to its debugging. Grouping and filtering of breakpoints can now be accomplished through breakpoint labels. This allows management of breakpoints in logical groupings without having to manage each breakpoint individually.
Pinned data tips allow the developer to track a variable's values throughout execution and afterwards. This is especially useful when a developer needs to reference that value while writing code. This saves the developer from having to rerun the debugger if they forget the exact spelling or capitalization of the value while coding.

Peter Forney
GrandView Developer
Friday, October 15, 2010
In the previous part of this series, we discussed how GrandView has helped RoviSys handle multi-office environments by maintaining a lifeline of communication and business culture for our employees. In this part of the series, we'll discuss how we use GrandView collaboration and project management tools to handle the challenges of managing project teams from multiple offices.
Managing projects from a single office can be challenging enough but it is even harder with teams from multiple offices. Just adding a resource from another office to your project isn't necessarily the same as adding someone from your office. Without constant communication, team members feel isolated and sometimes fail to take ownership of their piece of the project. For a project manager who relies heavily on their team to execute the project plan, this can cause major problems. It ends up being more work for a project manager to manage a team split across multiple offices.
To help communicate project status and transmit drawings and documents, RoviSys uses the collaboration tools in GrandView. The Configuration Management features help keep the project documentation organized when working on project teams spread out over multiple offices. Project Managers also take advantage of Schedule and File Management features to distribute information to in-house, remote, or customer teams alike. Project Costs are updated in near real-time by employees on the project team using TimeSheet, Expense Tracking and Purchasing modules. The Order Entry and Invoicing features of GrandView give our project managers a complete financial view of the project in order to make good decisions to ensure the success of projects.
However, be aware that just putting a tool in place will not necessarily solve all your remote project team problems. Although GrandView may work well to aid communication, transferring of information, and managing projects across remote teams, we've also learned that it cannot replace good old-fashioned face-to-face communication. This is especially important at the beginning of the project so that the remote resources can feel like part of the team and take the necessary ownership in their part of the project.
During project execution, sometimes issues must be discussed in person in order to convey the importance and go over the necessary details that cannot be done over the phone, in email, or in a collaborative tool. It is also important at the end of the project to get the project team together to discuss the lessons learned for feedback into the process. Managing project teams across multiple offices requires a good mix of tools and a whole lot of communication to make it happen successfully.
In the next part in this series, we'll discuss how we use GrandView features to handle the international multi-office challenges.
Chris Engelmann
GrandView Business Solutions Manager
Tuesday, August 31, 2010
Dealing with limited bandwidth or high latency scenarios can be challenging for web developers and frustrating for users. Over the years we've been able to utilize many different techniques and technologies to minimize the effects of a poor internet connection.

Image Source: urbanlegend
SQL Server Replication
Minimizing the time spent accessing database records can significantly reduce the duration of each page load or request. A great way to achieve this, especially in multiple office scenarios that are separated by great distances (like we have), is to use SQL Server Replication - read more about it here!
File Compression
We all know that downloading files can be a time-consuming operation. A great way to optimize this process is to compress the files on the server before sending them over the wire to the client. GrandView uses this technique when you download your project files - read more about it here!
AJAX
Sometimes you need to refresh the contents of an entire web page, while others you just want to update a tiny piece of it. In the latter scenario, a full postback will get the job done, but it's both wasteful and unnecessary. AJAX (Asynchronous JavaScript and XML) allows developers to tackle this all too common problem. GrandView uses AJAX in many different areas - read more about it!
HTTP Compression (Static and Dynamic)
Very often the content your browser retrieves from a web server can be sent more efficiently. For example, scripts, stylesheets, and some image types (among other things) can be compressed once on the web server, sent to the client, and then decompressed before use - this feature (Static Compression) is enabled by default in IIS 7 when you create a new virtual directory! Other content, like ASP or ASPX pages, will more than likely change with each request, but can still benefit from compression. You can enable this feature (Dynamic Compression) in IIS 7 at the cost of some CPU time per page request, but it's well worth it since bandwidth is usually more expensive than CPU cycles. Read about HTTP Compression here! Also, check out the results of some load tests done with different levels of compression enabled.
Content Expiration
Another great way to be more efficient with your web traffic is to tell the browser when content will expire. Even if you have the most up-to-date image or script downloaded, the browser will still make a request to the web server for an even newer version. Enabling content expiration for certain files (or even entire folders) in IIS 7 tells the browser when to try and look for a newer version; if the content hasn't expired yet, the browser will just use what it has and won't waste bandwith by making a useless request. Read about content expiration here!
Mark Carpenter
GrandView Business Solutions Developer
Friday, June 11, 2010
We have been hard at work on an update for Invoicing within GrandView. As part of this effort, we needed to find an effective and versatile grid control capable of meeting all of our specific needs. We choose the grid control made by DHTMLX.

The DHTMLX grid control is an Ajax-enabled javascript grid control that allows us to provide an updated look and feel to grid data while still having full client side control of the grid. Some of the most notable features we have used on this new control include:
- Double-clicking on any row will automatically open the item for editing
- Row selection (used to add a child for parent items)
- Row based image buttons for reordering, editing and deletion
- Client-side data binding to eliminated page reloads
- Customizable skins through CSS
All these improvements in addition to the client side architecture allows us to provide richer and faster experience with grid data through GrandView!
Peter Forney
Grandview Business Solutions Developer
Monday, April 19, 2010
New GrandView Features for Release 7.1
GrandView 7.1 is out and it's packed with enhancements and updates. We've converted the last of our old ASP technology and improved project execution. The GrandView application also now supports an employee bio/resume module. This is coupled with a global categories system that can be applied to projects, proposals and employees to make staffing and resource management even easier. More details about two of our newest features follow.
New Global Categories
Sales people want more ways to categorize their proposals to improve accuracy and consistency of sales information. Project managers often need to categorize their projects for better execution as well as feedback information to sales. And managers are always looking for more ways to categorize employees' skills and experience to staff projects efficiently and effectively. The new global categories functionality allows administrators to define categories for Industries/Applications, Services, Manufacturers/Products, and other Keywords. These categories can then be associated with proposals, projects, and employees (through the new employee profile functionality). Project categories are automatically inherited when tied to proposals and employees can update their profile to include relevant experience in the various categories. New proposal, project, and employee data views and SideBar searches have also been added to allow users to filter information by category.
Proposal Categories

Category Assignments
New Employee Profile
The new employee profile functionality allows employees to document and categorize their experience and also allows managers and other users to search and view employee summary information. Some of the features of the new employee profile functionality are:
-
Search and view employee summary information
-
Updates bio information
-
Update resume information: employment history, education, work experience, professional experience, patents and publications, professional affiliations, certifications, and other relevant experience
-
Add/maintain resume files
-
View employee resume information including training and project history

Employee Bio
Be sure to explore these new features and others in the latest release of GrandView.
Jeff Eganhouse
GrandView Business Solutions Developer
Friday, April 09, 2010
GrandView has long been established as a web-based business application that is accessible from anywhere there is an internet connection. Initially, it was an extremely useful tool for working away from the office - whether it was on a customer site, on the road, or just to get extra work done from home. As RoviSys has grown, GrandView has also evolved to handle multi-office environments. In the last five years, RoviSys has opened a regional office in Apex, North Carolina and most recently we've opened an office in Singapore. One of the highest priorities in establishing these satellite offices was (and still is) maintaining a lifeline of communication and business culture for our employees. Of course, the simple solution is to use email for this communication. However, email is impersonal and is very disjointed when you are trying to centralize information for a growing business. Although email still has its place, GrandView helps handle multi-office challenges by offering numerous features such as project collaboration, file management, electronic approvals, and training to name a few.
The GrandView project collaboration features help project teams stay connected remotely with quick and easy access to project data as well as notification via email or a dashboard. Employees have remote access to company procedures, standards, and templates as well as project files with GrandView file management features. Electronic approvals for areas such as TimeSheet and Sales Proposals help expedite these otherwise time-consuming processes especially when dealing with remote offices. Finally, our RoviSys Continuing Education program (RCE) takes advantage of GrandView to deliver training content whether it is for new hires or veteran employees needing a refresher. We've also been able to take advantage of phone and web conferencing to capture presentations for remote on-demand access.
GrandView has played a significant role in handling the multi-office challenges for RoviSys especially when it comes to promoting employee communication and maintaining business culture. Features are continuously added that will allow RoviSys to adapt to whatever challenges that may lie ahead in a multi-office environment.
In the next part in this series, we'll discuss how we use GrandView project management and collaboration tools to handle the challenges of manging project teams from multiple offices.
Friday, March 19, 2010
TimeSheet Quick Entry Dashboard Module
Need an alternative way to charge your time, or just a constant reminder to keep your TimeSheet updated? You can now enter your time from your dashboard with the TimeSheet Quick Entry module. This module provides:
- Convenient date navigation and "type to filter" selection of your Project and Task
- Task information, like scheduled dates, hours remaining, and overdue/completed
- Links to email your project manager and view your full TimeSheet
- An at-a-glance summary of your daily, weekly, and monthly hours
- Links to daily, weekly, and monthly timesheet reports

Here at RoviSys, giving our employees an alternative way to log time has helped to streamline our business process - the earlier your employees' TimeSheets are submitted, the quicker you can send invoices to your customers!
Mark Carpenter
GrandView Business Solutions Developer
Monday, February 08, 2010
Transmittals Made Easier
Project transmittals containing several items have previously required the manual addition of each document or software item individually. Now, all the items required for a transmittal can be added at once through a single dialog. This will save time and simplify the process of getting the transmittal to the customer.

Filtering & Selections
The Multi-Add dialog lists all the document and software revisions available for the project, minus any that have already been added to the transmittal. This list can be filtered according to item type, transmitted status, and by keyword. Selections made at any point within the dialog are remembered, even if the selection is no longer displayed due to the filters chosen. This allows you to search for an item, select it and then continue searching without having to scroll through a large list or open another window. The transmittal reason and comments due date are based off of the default values and are applied when the item is selected. Before saving, all the selections can be reviewed by clearing the filters and then choosing the selections only option.
The Multi-Add option simplifies and speeds up the already valuable functionality of electronic transmittals within GrandView.
Peter Forney
GrandView Business Solutions Developer
Friday, January 22, 2010
Keeping data consistent across multiple offices is absolutely vital to any business, but it is made much more difficult when your offices are on opposite sides of the world. Having a single, centralized database is obviously ideal from a maintenance standpoint, but is impractical if it takes tens of seconds to perform even the simplest tasks from across the pond; sometimes, you can only be as productive as network latency allows. Having a separate database for each regional office solves the latency issue, but brings on the nightmare of worrying about synchronizing the data you have scattered about.
Enter SQL Server Replication.
SQL Server Replication offers a way to solve both of these problems. Set up a master "Publication" database at your main site, and a "Subscription" database at each of your satellite offices, and SQL Server takes care of the rest. No matter where your users are, changes made at one office will automatically be replicated to the rest. Now, you have the benefit of fast, local access, as well as managed data synchronization. We use this technology at RoviSys to further streamline our business process and tackle some of our multi-office challenges.
Stay tuned for a follow-up post covering some of the technical challenges we encountered setting up SQL Server Replication.
Also coming soon is an upcoming series on some of the other Multi-Office Challenges we've faced, and how GrandView has helped us overcome them!
Mark Carpenter
GrandView Business Solutions Developer
Wednesday, December 30, 2009
Introduced in ASP.NET 2.0 (released Nov. 7, 2005), Master Pages provides an object-oriented approach to web page design. Master Pages is the next generation to templates. In the blog post, Master Pages, Part 1, the master page concept was introduced. This article talks about image reference paths.
Image Paths
The .master page image references are always resolved from the location of the page which inherits the .master page (the content page). As long as the .master page is at the same folder level as the content page, the reference to the image resolves correctly:
In this example, Index.aspx uses the .master page and images referenced by the .master page resolve correctly.
If the .master and content pages are at different folder levels, as shown...

... then the .master page contains a different path to the image than the content page and the image can't be resolved.
Solution one:
ASP.NET runtime provides a feature called “URL rebasing”. The runtime will try to “rebase” relative URLs it finds on server-side controls inside a master page. This means the following relative path will work, no matter where the master page and web form live. Putting a runat=Server" statement in the <img> attributes resolves the image location:
<img src="~/Images/GVLighthouse.gif" runat="server" />
Solution two:
ASP.NET contains a handy function in the Page object called ResolveClientURL, which will resolve URL's that are defined client-side. This is particularly useful if an object CAN"T be converted to a server-side object, such as the <Body> tag:
<Body background = '<%ResolveClientUrl("~/Images/GVLighthouse.gif") %>' style="margin-left: 10px" />
Or on the simple image tag:
<img src="<%=ResolveClientUrl("~/Images/GVLighthouse.gif") %>" style="margin-left: 10px" />
Quite often, images will also be referred to from within the included .css style sheet in the .master page. This is not a problem, though, since the image URL path is always with respect to the .css style sheet location:
body
{
background-image:url('images\mylogo.gif');
}
Image and other element references can be tricky when using .master pages, but the payoff is the flexibility of a more object-oriented approach by putting all the common parts of your pages in .master pages.
David Heater, P.E.
GrandView Business Solutions Developer