Andornot Consulting
Friday, August 13, 2010 11:09 AM

Burnaby's Charting Change Atlas wins ArchivesNext award

by Kathy Bryce

ArchivesNext is an American weblog with a monthly audience of 10,000 covering topics related to archives and technology. The award to the City of Burnaby Archives for "Best re-purposing of descriptive data" was shared with the Smithsonian Institute.

"One of the goals of the Charting Change project was to bring together Burnaby's heritage resources in a useful, accessible and interesting format that allowed our community to interact with and experience their history in a new way," said Arilea Sill, archivist for the city, in a press release. "The nomination and award announcement is a mark of success and recognition for the city as a whole for the creative approach it has taken in sponsoring such programs."

The Charting Change atlas developed by Andornot and the City of Burnaby allows users to see how historical events, ranging from First Nations settlement to the founding of Fort Langley in 1825, through to the Depression and post-war housing boom have shaped the community of Burnaby. Behind the scenes, the information shown on each map point is pulled from the existing Inmagic databases currently searchable from the Heritage Burnaby website.   Heritage landmarks, historic buildings, and neighbourhoods are plotted and linked to the records for photographs, artifacts, textual records and bylaws.

For more information on this project, see the press release from the City of Burnaby, the announcement on the ArchivesNext website or our earlier blog posts describing the project.  The atlas is available on the Heritage Burnaby website.

Our congratulations to the City of Burnaby team - it was a pleasure to work on this project with them. If you have ideas for enhancing access to your collections, be sure to contact us to discuss possibilities.

Wednesday, July 14, 2010 10:00 PM

Know thy users, or at least their searching behaviours

by Jonathan Jacobsen

You've built this great online database of resources and you're as proud of it as a mama bear and her cubs. You just know everyone must be using it to find all sorts of great materials. But… how can you be sure? How do you know if in fact just 'cause you built it, they will come. Well, it is possible to learn quite a bit about who, how, when and how often users are accessing your site. There are two main sources of useful information: web server logs and the Inmagic WebPublisher Query logs.

Web Server Logs

Web servers typically log all activity, including serving up pages from your online database.

Software packages such as AWStats and SmarterStats analyze these log files and allow you to generate reports summarizing site activity. These two packages are installed on a server (could be the same web server as your online database, or a separate one) and are accessed through your web browser. They typically require IT involvement to install and locate the web server log files.

An alternative to log analysis software you install is Google Analytics. To use this service, you register with Google and place a small bit of code in your pages, wait for Google to gather some data, and visit your Google Analytics account to learn about your site. This approach works well for publicly-accessible sites.

At Andornot we use SmarterStats to provide statistics to all our hosted clients, and also Google Analytics on other sites such as our Genie demo.

So, once you have your logs under analysis, what can you learn from them?

Who

You can learn how many total and unique visitors your site gets, per day, week, month, etc. If your audience is known (e.g. your site is not public, but is only available to users within your organization, a known quantity) then you have a measure of what percentage of potential users are accessing your site. If your IT department can give you a list of computer IP addresses (which is what’s stored and reported on in these logs) and the corresponding names of staff who use those computers, you’ll really know who in your organization is accessing the site.

When

You can see when users are most likely to access your site and then schedule work around those times. For example, you could post new materials before the peak periods so there’s something fresh for users, and avoid updates or maintenance during those times.

How Much and How Often

You can learn whether users tend to come once and never again, or are repeat browsers. Do they come daily, weekly or monthly? Do they linger? Do they access many pages in your site, or just a few? Which ones are the most popular? What path do they follow through the site? Depending on how your site is organized, you may be able to get answers to all of these questions, then think about pushing most-accessed content to the home page, or just one link away.

Inmagic WebPublisher Pro Query Logs

You can configure Inmagic WebPublisher PRO to log all searches. To do so, add WebLogQueries=1 to the [WebPublisher] section of the DBTWPub.INI file (or INMCSRV.INI file for DB/Text for SQL). Once configured, each online search is logged in a CSV-formatted file named query.LOG, located in the WebPublisher QSETS folder. If your site receives a lot of activity, this file can grow quickly, so we recommend either only enabling this for a specific duration (e.g. one month) or periodically archiving the file and allowing a new one to start (e.g. on the first of each month). The archiving can be done using a Scheduled Task so you only need to set the process up once.

Important Note: You should only enable query logging in version 12 or later of WebPublisher Pro. Do not enable query logging in version 11.

Once you have a log file of searches, you can use the QueryLog database included with the Andornot Starter Kit to analyze it. The log file can be imported into the textbase using the Import command. You can then search for all records where the search produced no results to see, most critically, what users are searching for and not finding. Maybe your database doesn’t have the type of resources they are looking for, or maybe they’re searching with different words than you used to describe the resource. Either way, this is valuable information! You can also learn what they are searching for and finding, and as with the information from the web server logs, who, when and how often they are searching.

One Andornot client, the Alberta Energy Resources Conservation Board loads and analyses their WebPublisher query log every week to see what people are searching for, then edits records in their databases to include any new search terms favoured by users. They were even able to identify an unexpected usage of one of their databases. It turned out that their responsiveness in quickly adding entries for search terms that had returned zero results meant that their database was more up to date than other internal sources.

Combined, web server log analysis and query log analysis can give you a pretty good picture of who is using your great online database, when, how often, and what they're finding, or not. You might supplement this with the occasional online survey, asking users for their opinion of your resources.

Need help installing and using any of this software, designing a survey, or making sense of the information gathered? We're always happy to help clients learn more about their users.

Friday, June 25, 2010 5:41 PM

Inmagic usage at MDA – maximizing the ROI of your software

by Kathy Bryce

It's enlightening to visit with clients and find out how they are using Inmagic software, especially when they are not typical applications.  We are always suggesting maximizing your return on investment by using the software for anything and everything, so here is a great example of a client doing just that.

Last week I was in Toronto and met with Dave Hook at MDA, a long time client and user of Inmagic software.   Dave has some very cool applications with over 30 different DB/TextWorks databases populating much of their intranet content.  He showed me a few of these such as their home page which displays the latest news, plus their system for listing the latest training courses and how users can register for these online.  Following registration, the user’s supervisor is notified by email, the number of remaining available spaces updates until the class is full and then an attendee list can be printed out by the instructor.  Behind the scenes multiple DB/TextWorks databases are in play.  The web interface including all data entry for many of the databases is handled exclusively by ODBC calls into the databases using standard SQL queries written into each HTML page.  This results in pages that don't look like they were generated from a database but fit seamlessly into their intranet interface.

Dave also uses DB/TextWorks for quick prototyping of database ideas for various projects.  As it is so easy to add fields and functionality, he is able to build these prototypes and have users critique and suggest modifications in a very short time frame.  If applicable, the prototype can then be finalized as an Inmagic application, or used by their IT group as a basis for building a system in SQL or other software.  This prototyping process is very much in sync with our philosophy of launching fast, and refining later. 

So, just like Dave at MDA, don’t be restricted to just traditional uses for the software! Let us know if you have ideas for new databases that you would like us to help you with?

Thursday, May 27, 2010 9:33 AM

Provincial Resource Centre for the Visually Impaired Launches New Website

by Jonathan Jacobsen

PRCVI website screenshot The Provincial Resource Centre for the Visually Impaired (PRCVI) has upgraded their website with a new graphic design and more content served up by Inmagic WebPublisher PRO.

PRCVI is a British Columbia Ministry of Education program that assists school districts and students with visual impairment or blindness by providing educational resources in alternate formats, such as braille, tactile graphics, digital text and large print.

Both the previous and new websites feature a wealth of resources for teachers, students and parents, including questions and answers about PRCVI services, news of upcoming events and conferences, information about scholarships, and links to other web resources.

The previous website was maintained by hand, as staff time permitted. With many TextWorks databases already in use at PRCVI for tracking their library collection, borrowers and teachers, it was a natural extension to catalogue all the web resources in a new database, then publish that information on the website with WebPublisher PRO.

Almost all the content in the new website is served up dynamically from this database. Users may browse resources by category and target audience to drill down to items of interest, or perform a keyword search.

"Making resources more accessible will save staff time in answering emails from users who couldn’t find the information previously", says Susan Hannigan. "It's also easy for several of our staff to publish new information to the site just by entering items into a textbase record. They're already familiar with TextWorks, so the learning curve wasn’t very steep."

Using TextWorks and WebPublisher PRO as the basis for their new website allowed PRCVI to make more use of its investment in Inmagic software, with staff already trained to use it.

Contact Andornot to discuss other ways you could be using your copy of Inmagic WebPublisher PRO.

Wednesday, May 12, 2010 10:10 AM

Adding Google Analytics without touching your site

by Ted Jardine

I had a problem: Kathy and Denise wanted Google Analytics configured for our demo Genie site that can be found at http://genie.andornot.com. However, Genie doesn't provide an easy way to centrally add the couple lines of Google Analytics code to every page served up by the application. For that matter, neither does any WebPublisher PRO site right out-of-the-box (easy-peasy though if we're using ASK and our WebPubResults control).

You might also have the same problem: you recognize that having multiple means of tracking and analyzing your site's traffic is no longer optional. However, while you've got server log file analysis handled (we use SmarterStats for all our hosted clients) your site doesn't have a single central place (such as site-wide central templates) to easily integrate a javascript-based page tagging solution such as Google Analytics.

So what do we do? Instead of updating 10s if not 100s or 1000s of files manually one-by-one (crossing my fingers that I could find them all) and hoping my code wouldn't need to change anytime soon, I came up with a modified version of the Web Analytics Tracking Module available on Microsoft's IIS.net site. Now, with a little elbow grease for initial server setup (seriously, not very much elbow grease at all), turning on site tracking for any site on our servers is simply a matter of placing a DLL in our application's bin directory, and adding a couple lines to our site's Web.config. Sweet.

Why not just use the original IIS.net Web Analytics Module?

Before jumping in and explaining how to set everything up, I should explain that I needed create my own custom build of the module because the module on IIS.net only works under IIS 7's integrated pipeline, not under IIS 7's classic pipeline (which Genie needs to run under) or IIS 6. The required changes ended up being relatively minor:

  1. Modified the ReadModuleConfiguration method in WebAnalyticsHttpModule.cs to the following:
  2. /// <summary>
    
    /// Reads the module specific configuration properties
    
    /// </summary>
    
    /// <param name="context"></param>
    
    /// <returns>Boolean indicating the success/failure</returns>
    
    private bool ReadModuleConfiguration(HttpContext context)
    
    {
    
         try
    
         {
    
             ConfigurationSection section = null;
    
             if (HttpRuntime.UsingIntegratedPipeline)
    
                section = WebConfigurationManager.GetSection(context, "system.webServer/webAnalytics", typeof(WebAnalyticsSection));
    
             else
    
                section = WebConfigurationManager.GetSection(context, "system.web/webAnalytics", typeof(WebAnalyticsSection));
    
              if (section != null)
    
                 _webAnalyticsModuleConfig = (WebAnalyticsSection)section;
    
         }
    
         catch (Exception)
    
         {
    
             return false;
    
         }
    
           return _webAnalyticsModuleConfig != null;
    
        }
    
    }
  3. Add the classic pipeline <system.web>/<webAnalytics> schema to WebAnalytics_schema.xml:
  4. <sectionSchema name="system.web/webAnalytics">
    
        <attribute name="trackingEnabled" type="bool" defautlValue="false"></attribute>
    
        <attribute name="trackingScript" type="string"  defautlValue="This is a default text"></attribute>
    
        <attribute name="insertionPoint" type="enum" defaultValue="body">
    
            <enum name="head" value="0" />
    
            <enum name="body" value="1" />
    
        </attribute>
    
    </sectionSchema>
    
  5. To make sure there's no versioning conflicts, I updated the Assembly's version to v1.1 in AssemblyInfo.cs (note the v1.1 references in the instructions below as opposed to v1.0):
  6. [assembly: AssemblyVersion("1.1.0.0")]
    
    [assembly: AssemblyFileVersion("1.1.0.0")]

 

Configure your server (one time only)

  1. Register the WebAnalyticsModule.dll in the GAC (for shiny stuff in the IIS 7 Manager GUI).

    gacutil -if WebAnalyticsModule.dll
  2. Copy the WebAnalytics_schema.xml to "%windir%\system32\inetsrv\config\schema" folder.
  3. Add the following section definition to the "%windir%\system32\inetsrv\config\applicationhost.config" file in the sectionGroup for "system.webServer"
  4. <section name="webAnalytics" overrideModeDefault="Allow" />
  5. Add the module to the IIS Manager configuration by adding to two collections in the "%windir%\system32\inetsrv\config\administration.config" file:
    • Add the following to the moduleProviders collection:
    • <add name="WebAnalytics" type="WebAnalyticsModule.WebAnalyticsProvider, WebAnalyticsModule, Version=1.1.0.0, Culture=neutral, PublicKeyToken=c6b7132bcfe43312" /> 
      
    • Add the following to the modules collection:
    • <add name="WebAnalytics" />


web-analytics-tracking-in-iis
Web Analytics Tracking now directly available in IIS 7 Manager (at least for sites running under Integrated Pipeline).

 

Configure your site/s

For each site you wish to have Google Analytics enabled on (or any other script/text/html you wish to have run on every page in the site), enable it according to the following instructions (slightly different for different flavours of IIS/pipeline).

IIS 7 Integrated Pipeline

  1. Place the same WebAnalyticsModule.dll in your application's bin directory or reference the GAC version via the Web.config's <system.web>/<compilation>/<assemblies> element.
  2. Add the module to the <modules> element in your Web.config. This can be done through the IIS Manager, but it's easier to simply add it directly in the Web.config:
  3. <modules>
    
      ...
    
      <add name="WebAnalytics" type="WebAnalyticsModule.WebAnalyticsHttpModule, WebAnalyticsModule, Version=1.1.0.0, Culture=neutral, PublicKeyToken=c6b7132bcfe43312" />
    
    </modules>
  4. Specify the script/text you wish to have inserted and the location to insert it at. Again, this can be added directly in the Web.config. However, because the actual script/text needs to be encoded in order to keep your config file from going boink, it's a lot easier to just use the GUI.

  5. web-analytics-tracking-in-iis-configuration
    Easy configuration within the IIS 7 Manager GUI, including properly encoding the script for the Web.config (safe for XML).

    Enabling the above adds a <webAnalytics> element to the <system.webServer> section, looking something like (note the encoding):
    <webAnalytics trackingEnabled="true" trackingScript="&lt;script type=&quot;text/javascript&quot;>&#xD;&#xA;  var _gaq = _gaq || [];&#xD;&#xA;  _gaq.push(['_setAccount', 'UA-494411-1']);&#xD;&#xA;  _gaq.push(['_setDomainName', '.andornot.com']);&#xD;&#xA;  _gaq.push(['_trackPageview']);&#xD;&#xA;  (function() {&#xD;&#xA;    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;&#xD;&#xA;    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';&#xD;&#xA;    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);&#xD;&#xA;  })();&#xD;&#xA;&lt;/script>" insertionPoint="head" />

 

IIS 7 Classic Pipeline

Exactly the same as the IIS 7 integrated pipeline instructions above, with the following changes:

  1. Add the module reference to the classic pipeline specific <system.web>/<httpModules> section instead of the <system.webServer>/<modules> section.
  2. Make it easy for yourself, and add the script-specific settings (as in step 3 above) via the GUI in order to make sure it's all encoded properly, but then move/copy the resulting <webAnalytics> element from <system.webServer> (IIS 7 integrated pipeline specific) to <system.web>.
  3. Add the following to the <configuration>/<configSections> element in your Web.config (there should be a better way to add another sub-section to the already defined <system.web> declaration in the <configSections> element, so let me know in the comments if you know what it is):
  4. <sectionGroup name="system.web" type="System.Web.Configuration.SystemWebSectionGroup, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> 
    
        <section name="webAnalytics" type="WebAnalyticsModule.WebAnalyticsSection, WebAnalyticsModule" /> 
    
    </sectionGroup> 
    

Caveat: as your app is running under classic pipeline, not all text/html resources are running through ASP.NET, and therefore, if you have for i.e. .html and/or .asp pages you want the script automatically added to, you will need to map those extensions to also route through the ASP.NET runtime. Pretty standard classic pipeline stuff: without doing so, only pages with the .aspx extension will have the script added.

 

IIS 6 (Classic Pipeline)

I haven't tested it, but I see no reason why it won't work with the same set up as IIS 7 Classic Pipeline, with the same caveats.

Notes:

  1. As you might have guessed, you can automatically insert *anything* using this module, as long as you don't mind it inserting just before the closing </head> tag or the closing </body> tag. Copyright statements, survey scripts, "Ted wuz here" alerts for every page...if you think of it, you can do it!
  2. Again, the fancy GUI stuff doesn't help you in classic pipeline scenarios (other than an XML-encoding aid as described above).
  3. Typically you want to register scripts as close to the end of your page as possible (various technical performance and usability reasons). However, Google Analytics' latest scripts have a "push" functionality making this a moot point: so register the latest scripts right before the closing </head> tag. See the "Asynchronous Tracking Usage Guide" for more information.

Different web analytics packages have different strengths and weaknesses, and it's only with multiple different perspectives on your site traffic that you even begin to get a clear picture of what is really happening with your site. Using this web analytics module makes it even easier to add and maintain a page tagging solution on your site.

 

Download

I'd like to just directly link to my compiled DLL and schema file of the module, but unfortunately, it's not at all clear what licensing model is associated with the original module (although it's clear from his article explaining the module, that Microsoft's Ruslan Yakushev intends for us to use it). Therefore, I'll be requesting clarification on this issue, but in the meantime, just download the source code from the original article and make the quick modifications as described above. If you have problems doing so, or you want help deploying it for your site, drop us a line.