Archive for the ‘Products’ Category

Announcing Geocortex Essentials 3.3

January 26th, 2011 by Ryan Cooney

Today we are proud to announce the release of Geocortex Essentials 3.3. The new features focus on our REST technology and fall into three broad categories:

Viewer Template Engine – VTE changes how administrators can deploy Essentials applications. Previously, there was a disconnect between viewer applications and Essentials sites. The site was configured in Manager and the viewer was configured… elsewhere. Now this is seamless; you can create and configure your viewers right in Manager. What does this offer you beyond convenience?

  • Distributed deployments – Each viewer configuration is automatically hosted in REST allowing for true distributed deployments.
  • Viewer Templates – Each viewer is based on a template that can be plugged into Essentials. This allows you to modify templates or add new ones as they become available. You can get started with our Silverlight Viewer template today.

REST Features – over a dozen new features have been added to our REST platform. There are lots of new and expanded REST endpoints and we’ve improved the management experience for creating them. Many of these new features correspond to features of the Geocortex Viewer for Silverlight that allow greater control over the presentation and formatting of your data.  We’ve added Feature Hyperlink, Field and Layer List configuration to name a few.

Quality – We tackled a huge number of defects in this release and added several usability and performance improvements.

This release is a big milestone for Geocortex Essentials, and we’re busy building on our foundation to deliver more functionality in 3.4.

REST-based Security is now available in Geocortex Essentials 3.1

October 28th, 2010 by Drew Millen

Today we released Geocortex Essentials 3.1!  This is a major new release of Geocortex Essentials for ArcGIS Server 10 and 9.3/9.3.1.

Of particular interest we have introduced an architecture which allows you to secure your REST-based applications.  So if you are working with the Flex or Silverlight APIs, or a viewer based on these APIs you can secure your application.

REST_Security_1 REST_Security_2

(above, screenshots of REST Manager Security administration)

Security leverages the .NET Membership & Role Providers, so your users and roles can be stored in Active Directory, SQL Server, or in a simple XML file which is shipped with Geocortex Essentials.  You can also use Windows authentication which has the added benefit of allowing single-sign-on when using Silverlight.

If you are working with ArcGIS Server Web APIs and you require the ability to secure one or more applications you will be delivering to your users, Geocortex Essentials 3.1 may be your answer.

In this release we have also put a lot of effort in to the architecture to enable organizations to deploy multiple instances Geocortex Essentials REST Elements on different servers to support scalability, or elasticity in a cloud-based deployment.

Visit the Geocortex Support Center’s downloads section to grab the installer and read the documentation related to this release.  Be sure to consult the release notes for full details of everything that has changed.

Markup Enhancements in Geocortex Essentials 2.2

January 28th, 2010 by Drew Millen

As a second post in a series describing my favorite features in Geocortex Essentials 2.2, I’ve decided to talk about the text markup enhancements.

The Text Markup Enhancements encapsulate 3 features in one… actually, the requirements were originally defined as 3 seperate features but the more we looked at it, the more it made sense to roll all of the requirements into a single feature which enhances the text markup tool.

The three features are:

  1. Callout Markup: This allows users to place text markup on the map within a callout box which has a pointer to the specific location that the user clicked.  It can make text markup much more informative, and readable.
    Callout Box
  2. Feature Label Markup: This allows users to add text markup to the map, where the text is defined by the attribute values from a feature which intersects the point clicked.  For example, a user could add a label markup element to a parcel indicating it’s land value.
    Select Feature Label
  3. XY Coordinate Markup: This allows users to add text markup to the map which indicates the XY coordinate at the point clicked.  XY coordinates can be displayed in map units, decimal degrees, or degrees/minutes/seconds (DMS).
    XY Coordinate Markup

Having all 3 markup tools rolled into a single text markup tool provides the additional benefit of being able to combine these features.  For example, the markup output below is a callout markup which contains a feature label, and an XY coordinate, all created from the same text markup tool from the same point on the map.

Text Markup Enhancements

Like all markup tools, once the markup has been added it can be printed in the map using the Print Templates feature, or exported with the Export Map Image feature.

I think these are great tools that will enable better collaboration between colleagues using Geocortex Essentials and I’m happy to see them in this release!

Geocortex Essentials 2.2 Released

January 15th, 2010 by Drew Millen

Following a beta period which extended through the holidays, yesterday we released Geocortex Essentials 2.2!

I’m particularly excited about this release – it knocks off a number of features we’ve had on our list for a while.  Over the next couple of weeks I’ll blog about some of my favorite features in this release.

As usual, the release notes for 2.2 are available on the downloads page on our Support Center.

Geocortex Essentials 2.1.2 Maintenance Release

December 16th, 2009 by Drew Millen

Today we cut the 2.1.2 release of Geocortex Essentials.  Like other maintenance releases, we didn’t introduce new features; however, we did include a number of defect resolutions.

Head over to our support center downloads page to see the release notes for 2.1.2 to determine if you would like to upgrade.  There you’ll also find the 2.1.2 version available for download.

Geocortex Essentials 2.1.1 Maintenance Release

November 17th, 2009 by Drew Millen

Today we’re announcing the release of Geocortex Essentials 2.1.1. This is our first official maintenance release. At the release of 2.0, the products team decided that we needed a way to deliver defect resolutions to customers quickly. Previously we would create patches, but patches have their own set of problems:

  • Installation of a patch involves manual steps
  • The version of the assemblies packaged with a patch are the same as the version of the release (the only way to determine if someone has a patch installed is by the timestamp and file size of the patched assemblies)
  • Creation of a patch requires overhead

So, maintenance releases will allow us to deliver defect resolutions in a product release. The idea is that we will be able to frequently release maintenance versions of our Geocortex Essentials software. You can distinguish a maintenance release from a major or minor release by looking at the software version number – we will increment the build number for maintenance releases, the minor version number for minor feature releases, and the major version number for major releases (look here for more on version numbers).

Supporting the idea of frequent maintenance releases is the development of our new installer which will support in-place upgrades as well as the traditional side-by-side installation so that applying the fixes in a maintenance release will be easy. Look for the new installer in early 2010.

To determine if a maintenance release contains resolutions to defects you are experiencing, consult the release notes. Geocortex Essentials 2.1.1 and the release notes are available on our support center.

Geocortex Essentials 2.1 Released

October 15th, 2009 by Drew Millen

About 3.5 months have passed since our 2.0 release of Geocortex Essentials. Since then, we’ve been busy. We released a “dot” release (2.0.1) in late July but I have to admit that it’s more exciting to announce a major or minor release containing new functionality.

For Geocortex Essentials Web ADF Elements we’ve put a lot of work into features that our customers have been asking for like support for coded domains and subtypes, and identify on WMS and raster layers. There are a number of other features and quite a few bug fixes as well!

For Geocortex Essentials REST Elements we’ve focused our attention on extensibility and developer support. Specifically, we’ve added the ability for a developer to easily augment our REST API by standing up their own custom REST endpoint. Developers can also create custom Site.xml extensions to add functionality to sites.

We’ve included a lot more into this release than what I’ve mentioned here – for those interested I encourage you to review the 2.1 release notes on our support center download page.

Software Versioning and Releases in Geocortex Essentials

September 11th, 2009 by Drew Millen

If you’re familiar with the software history of Latitude Geographics, you’ll know that we used be a Java shop. Now, we still use Java for our ArcIMS generation products, while we’ve adopted .NET for our ArcGIS Server Generation products.

In contrast to Java, Microsoft .NET has a very explicit versioning scheme. From MSDN:

“Each assembly has a version number as part of its identity. As such, two assemblies that differ by version number are considered by the runtime to be completely different assemblies. This version number is physically represented as a four-part string with the following format:
…”
http://msdn.microsoft.com/en-us/library/51ket42z(VS.71).aspx

When we build our .NET products, we want our assembly versions to reflect the released product version, and vice-versa.

Most of the software industry is in agreement on the use of the first two digits of a software version (major and minor). Incrementing the major version is typically reserved for releases containing major new features, rewrites, new technologies or paradigms. Incrementing the minor version signifies a release containing new features. There is some discrepancy in the industry; however, over the use of the build and revision numbers. Indeed, our staff has had differing views on how to use these numbers as well.

At the release of Geocortex Essentials 2.0, we’ve decided to change our perspective on this so it’s worth mention.

Pre-2.0
Prior to 2.0, a build number increment could include new feature development. That is to say that 1.3 and 1.3.1 both introduced new features; however, 1.3 was probably more significant than 1.3.1 with regards to the features it introduced. A “Hotfix” typically embodied a release containing bug fixes only (e.g., 1.4 Hotfix 1). It is worth mention that revision number is automatically generated, and typically reflects the number of physical builds created on our build server since the increment of a build, minor, or major version number (i.e., we “zero” the revision number when incrementing any other version number).

We also introduced “Service Packs” when we felt that the changes didn’t warrant a version upgrade (e.g., 1.5.2 SP1). This was not a decision based on a “rule”. I’ve always been dissatisfied with this somewhat ad-hoc approach to versioning, so following 2.0 we’ve decided to be a bit more procedural.

2.0 and Beyond
As with prior to 2.0 the major and minor version number will be reserved for major product architectural or conceptual changes, and the revision number will reflect the number of physical builds created on our build server. The main difference is the way in which we will treat the minor and build numbers. Going forward, we will increment the minor version any time that a release introduces new features. We will increment the build number to signify a release which contains bug fixes. A few examples will help clarify.

2.0.0.745 Major release, includes architectural changes and introduces the Geocortex Essentials REST Elements.
2.0.1.792 Build release (or “dot” release), contains bug fixes only.
2.1.0.XXX Minor release, will include new features.
2.1.1.XXX Dot release, contains bug fixes only.
2.2.0.XXX Minor release, new features.
3.0.0.XXX Major release will include architectural changes, and/or introduce new technologies or paradigms.

It is worth mentioning that a goal we have in the near future is to better support version upgrades of our Geocortex Essentials software. If we can distribute “dot releases” frequently without causing our customers the hassle of migrations during upgrades, we are better equipped to provide faster turn-around times between defect detection and resolution.

Tracking Geocortex Fleet Tracker

August 24th, 2009 by Brett McLean

Right now our team is heads down developing Geocortex Fleet Tracker. I’m personally quite excited about it, so I thought I would share that excitement with the rest of you GIS techies.

Geocortex Fleet Tracker is exactly what it sounds like; a browser-based application for use with Automatic Vehicle Location (AVL). It can be used to track vehicular assets (or, anything with a GPS, for that matter) within a fleet – or across multiple fleets – in real time.

The application integrates seamlessly with ArcGIS Server for display of your own base map data and with ArcSDE/SQL Server for storage of asset histories. Fleet Tracker has a fairly modular design which allows other applications to consume data and services from its REST API. This can include information on a given fleet, an individual asset, or an asset at a particular point in time.

Longer term, and based on interest from our clients and partners, our vision is to allow Fleet Tracker to integrate with Geocortex Essentials applications to combine the functionality of asset tracking with web-GIS. As well, we are considering offering Fleet Tracker as a hosted service for those who do not wish to license the software. Tell us what you think; we’d be happy to hear from you.

For now, here’s a screenshot of the preliminary Silverlight user interface. Of course you can’t tell from a static image, but panning and zooming is incredibly smooth via the ArcGIS Server Silverlight API. It’s a delight to use!

FleetTrackerScreenshot

This post only scratches the surface of why I’m excited about Fleet Tracker, so for those who want to track Fleet Tracker stay tuned to the Geocortex Blog as there will be more information in the future.

Product Development Tools – An Overview

August 17th, 2009 by Drew Millen

It’s been a while since our last “really geeky” blog post; I’d say we’re overdue. For all of our .NET-based products (Geocortex Essentials, Geocortex Optimizer and more recently Geocortex Fleet Tracker) we use a homogenized development environment which relies on a number of “tools” to enable quality and efficient development. For those interested, I’ll outline the tools we’re using and the purpose they serve along with a degree of satisfaction.

Integrated Development Environment: Visual Studio 2008
This is a no brainer. For anyone developing on the .NET Framework, there simply isn’t a better development environment. Some of our developers also like to use PowerCommands for Visual Studio 2008. Of particular use are the “Collapse Projects”, “Edit Project File”, “Open Containing Folder” and “Close All” commands. A few developers have also become quite accustomed to ReSharper. I haven’t started using ReSharper (yet), but from what I hear they’re a lot like using clipless bike pedals – once you’ve started using them you can never go back.

Also, if you’re using Visual Studio and haven’t heard of GhostDoc, check it out. It saves us a bunch of time when creating, formatting and verifying our code documentation.

Source Code Repository and Version Control: Subversion (SVN)
Our products team has had a lot of experience with a few source code control tools. So far, this is the best. We’ve also used CVS, and VSS. Subversion seems to be the superset of features from both products, while providing reliability and ease of use. Our repository is a few years in running, managing hundreds of thousands of lines of code without hiccups.

We use Visual SVN to integrate Subversion directly with Visual Studio, which provides a nice way to manage files in projects. On the file system, we use TortoiseSVN which is built in to the windows shell and reduces management of a repository or working copy significantly. TortoiseSVN is a must-have when using SVN unless you love using the command line.

Automated Build Environment: MSBuild
While we use Visual Studio (VS) to routinely build our products during development, we also run an automated build on a build server separate from Visual Studio. Once projects get to a certain size there’s usually a need to integrate an automated build external to your development environment to incorporate things like documentation, help, installers, automated tests, and packaging. MSBuild serves as a good language since it’s what VS uses internally for project files and it allows us to separate generic build steps (common to all products) from those specific to one product.

Continuous Integration: CruiseControl.NET
When you’re working on a product with more than a few developers, continuous integration becomes invaluable. When a developer commits (checks in to SVN) some code they have modified, CruiseControl.NET (CCNET) detects the change on our build server and automatically runs a build informing the developer of the outcome. We’ve also configured CCNET to run nightly builds, so we always have a drop of last night’s installer.

CCNET is originally a port from the Java-based product, Cruise Control. The web-based dashboard and desktop tool (CCTray) are great ways to get a sense of how all products are doing. For example, right now all builds are running successfully, Geocortex Essentials was last build due to a developer check-in at 9:43am, and the next build check is at 10:39am (in one minute).

Unit Testing: NUnit and NCover
We use NUnit to write our unit and integration tests for our .NET-based products. It does exactly what it’s supposed to do, and it’s easy to use. A low barrier for entry was one of the main requirements when assessing unit testing technologies, and NUnit definitely holds up in that regard. The latest version (2.5) has some nice new feature’s we’ve been able to take advantage of (specifically, parameterized test cases).

NCover is a tool which provides feedback on the amount of code which is covered (executed) by unit tests. Developers can manually run their unit tests with “coverage”, and a GUI tool displays the lines of code which were run by the tests and those that weren’t. Further, it will report the percentage of code which is covered by testing which is useful for enforcing a minimum baseline for testing our products.

We currently use the version of NCover which is packaged with TestDriven.NET for its integration within Visual Studio.

Code Quality: FxCop and StyleCop
When more than a few developers are working on the same products, it can save time and increase code quality if the shared code is conformant to formatting and “best practices” standards. FxCop and StyleCop are tools which enforce coding practices, and code formatting respectively.

By integrating both tools into our continuous integration process, we’re able to reject code which does not conform to standards thus enforcing a baseline level of quality in every line of code committed to our products. What might sound like overhead initial development pays off in code maintainability, readability and overall quality.

Installer Technology: WiX (Windows Installer XML)
WiX is a language used to generate installer packages (MSI files) for Windows. Unfortunately, any installer technology can only be as advanced as the output it generates… in the case of WiX, for example, the limitations of MSI technology are the primary impediment to logical and powerful language tools. That withstanding, WiX has been doing a pretty good job for us. It’s less maintainable then we would like, but perhaps it’s the least of a few evils in the installer world.

Feature and Defect Tracking: OnTime 2009
I’ve blogged about Axosoft’s OnTime in January 2008. I’m still enthusiastic about its performance. It’s a really well maintained product and has provided us with a ton of value.

If I had to start a product development department from scratch I wouldn’t neglect any of the aforementioned tools. The more processes we can automate, the more time we can spend writing code specific to the business requirements surrounding a feature. There are other minor tools we use less frequently, or unrelated to product development specifically that didn’t make this list, but I think I’ve captured the bulk of it.