Automatically Refresh A SharePoint 2010 Calendar View

For some reason (at least to my knowledge) SharePoint 2010 does not provide a function to automatically refresh a SharePoint calendar view’s items at a given interval. The lack of this feature means a full page refresh is required any time a user wishes to check for any updates. While this might be suitable for infrequently updated calendars, for calendars that get frequently updated this is not desirable.

Fortunately, SharePoint does include a JavaScript library that provides methods for updating calendar views asynchronously. The particular library of interest is:


This repository contains a pointer to all of the calendar instances on the current page. If there is only one instance on the page, or you’re only interested in the first instance, there is a helper method firstInstance() to retrieve that calendar. Otherwise, you can find the collection of calendars as properties on the $o_0 property. You can turn this into a list using the following code:

var calendars = [];
var d = SP.UI.ApplicationPages.CalendarInstanceRepository.$o_0;

for (var k in d) {

Using The Calendar Repositories

Now that we have access to the calendar(s) we need to use them. One way of doing this is to create a hidden content editor web part that uses the following script to call refreshItems() every 10 seconds. First, create a new file RefreshCalendar.html and publish it somewhere on your SharePoint site.

<script type="text/javascript">
  setInterval(function() {
    try {
      var calendar = SP.UI.ApplicationPages.CalendarInstanceRepository.firstInstance(); // Get the first calendar instance on the page
      if (calendar) {
        calendar.refreshItems(); // async refresh of calendar items
    catch (e) {
      // ignore
  }, 10000); // Every 10 seconds

Next, add a content editor web part to the same page as the calendar view you wish to update automatically; setting the content link to the location of the RefreshCalendar.html page, and setting the Chrome Type to none to remove any headers, borders, e.t.c. (i.e. make the content editor web part invisible to the user).

Automatically Refresh a Sharepoint Calendar View Content Editor

Now, when a user goes to the calendar view, the items are automatically updated every 10 seconds. Because the call is asynchronous the user will not be impacted when an update occurs, even if they are adding, or editing, a calendar item.

Getting a Hierarchy of Outlook Folders With Their Entry ID

Simple console application to output a hierarchy of Outlook folders, with their Entry ID, using NetOffice.

using System;

namespace OutlookFolderIdGrabber
    public class Program
        public static void Main(string[] args)
            using (var application = new NetOffice.OutlookApi.Application())

        private static void DisplayFolder(NetOffice.OutlookApi.MAPIFolder folder, int level = 0)
            Console.WriteLine($"{new string(' ', level)}{folder.Name} : {folder.EntryID}");

            foreach (NetOffice.OutlookApi.MAPIFolder childFolder in folder.Folders)
                DisplayFolder(childFolder, level + 1);
<?xml version="1.0" encoding="utf-8"?>
  <package id="NetOffice.Core" version="" targetFramework="net461" />
  <package id="NetOffice.Outlook" version="" targetFramework="net461" />

Samsung Galaxy S8 Voice Issues

There appears to be a common issue affecting a number of Galaxy S8 users, whereby the person on the other end of a voice call cannot hear any sounds coming from the S8 owner. I was also affected by this issue, and nothing seemed to resolve it (although admittedly I was too hesitant to try a factory reset – given others already claimed this did not resolve it for them).

For me, the issue only occurred when I was connected to my home network. Playing around with relevant WiFi related features, I discovered the issue went away when I disabled Wi-Fi calling.

To disable Wi-Fi calling:

  1. Open the phone app.
  2. Go to settings (click the  icon at the top right).
  3. Scroll to the bottom of the Call Settings page.
  4. Disable “Wi-Fi calling”.
  5. Restart your phone.

Enable Windows Keyboard Shortcuts In Citrix

This is a bit of an old topic; I recently, after reinstalling Windows, had to reconfigure my local client to allow passing windows keyboard shortcuts through to my Citrix instance. In this case, I was using remote desktop as a Citrix application. I have noticed that Citrix Desktops don’t seem to have this same issue. Since it took a bit of digging to find out how to configure this, again, I thought I would put it here as a reminder and to help other should they run across the same issue.

Open regedit (press the windows key  and type “regedit” sans quotes) on the client device.

  • Navigate to the key: HKEY_CURRENT_USER\SOFTWARE\Citrix\ICA Client\Engine\Lockdown Profiles\All Regions\Lockdown\Virtual Channels\Keyboard
  • Modify the key: TransparentKeyPassthrough
  • Set the value to: Remote

Next time you start up your Citrix app you should now be able to use your usual Windows keyboard shortcuts such as Alt+Tab, Alt+Ctrl+Del, Ctrl+Tab.

TRIM Outlook Add-In Module Not Found

Another HP TRIM Outlook issue; this time when trying to check-in a mail item from Outlook, when the TRIM record type has an External Link associated with it – in this case a Generic AddIn (.NET). When the Outlook Add-In gets to the point that it is checking the file in to TRIM the error The specified module could not be found. (Exception from HRESULT: 0x8007007E) is thrown, but only if there is an AddIn associated with the record type of the record being created, otherwise it works fine.

As with most error messages, this one is not very helpful, simply indicating that a module could not be found. Fortunately this was working on my local workstation, however, the issue was present for test users on their thin client environment, so it was just a matter of finding out what was different between the two environments. After some investigating, I remembered that I had manually added the TRIM client installation directory to the PATH system variable to enable running a web site which uses the HP TRIM SDK. Removing the installation dir from the PATH variable did indeed result in the same error message, and funny enough adding the dir back resolved the issue, on both my local instance and on the thin client instance. I don’t know why the TRIM client install doesn’t just add the TRIM directory to the PATH variable by default. Oversight by HP? I’m sure it used to be… there are also plenty of SDK related forum posts suggesting to add it when starting your application (that doesn’t really help in this instance).

To add the TRIM installation directory to your PATH system variable go to your system settings; (start » type “Edit the system environment variables”) or (start » right-click Computer » Properties » Advanced system settings) » Environment Variables » under System variables locate and select Path » click Edit » append your TRIM install folder (default TRIM installation directory should be either; C:/Program Files/Hewlett Packard/HP TRIM or; C:/Program Files (x86)/Hewlett Packard/HP TRIM depending on your installation preference.

TRIM Microsoft Word Add-In HP TRIM SDK Not Found

If you’re using the Microsoft Word integration feature with HP TRIM and receive the error message “Could not load file or assembly ‘HP.HPTRIM.SDK’ or one of its dependencies. The system cannot find the file specified.” chances are you probably have a generic .NET Add-In registered in your TRIM dataset for the record type you’re trying to save your Word document as.

To solve the issue you can copy the HP.HPTRIM.SDK.dll from your Trim installation folder into your Microsoft Office executable folder (e.g. C:/Program Files (x86)/Microsoft Office/Office14 or C:/Program Files/Microsoft Office/Office14 *note your office version may vary e.g. Office11, Office15, etc).

There may be another way to resolve this issue, but so far it’s the easiest and only fix I have worked out.

TRIM Outlook Add-In COM Exception

Recently I was getting the error 0x80030002 STG_E_FILENOTFOUND while trying to run any TRIM 7.3 Outlook Add-In function. The Outlook Add-In had loaded fine and was bringing up all the available TRIM options, it was just when I tried to execute one of the options that it would throw the, oh so very “helpful”, error message as with most COM operations. It wasn’t until I found this thread over in the HP forums that I discovered that Cisco Unified Personal Communicator can interfere with the TRIM Add-In. According to another post, any ODMA integration can cause issues with HP TRIM’s Outlook Add-In, in their case, it was Novell GroupWise causing the issue.

Trim Outlook Com Exception
Unable to cast COM object of type ‘System._ComObject’ to interface type ‘Redemption.SafeMail’. This operation failed because the QueryInterface call on the COM component for the interface with IID ‘{0A95BE2D-1543-46BE-AD6D-18653034BF87}’ failed due to the following error: could not be found. (Exception from HRESULT: 0x80030002 (STG_E_FILENOTFOUND)).

Fortunately for me, Cisco Unified Personal Communicator was no longer required to be installed (and has been replaced by Jabbr – although I did not test if Jabbr causes issues with TRIM’s Add-In), so to resolve the issue I just had to uninstall Cisco Unified Personal Communicator; for good measure I also did a repair of HP TRIM Microsoft runtimes for VS 2008 and a repair of HP TRIM.

Day 7: Pineapple Carpaccio

Onto the first dessert recipe, Pineapple Carpaccio. Although carpaccio is typically a dish consisting of very thinly sliced raw meat or fish, this particular dish does not contain either; instead, it is merely thinly sliced pineapple with a delicious rum dressing.

The dressing contains seeds from a vanilla bean, 100 ml of white rum and 50 g of sugar. Heat the rum and sugar, and flambé. The rum takes to a flame very easily, getting a reasonably large flame quickly. As there was sugar in pan I found that if you let it sit there too long the sugar would start to burn and the flame would get even higher (see video). Once all of the alcohol has been burnt out, add the vanilla bean seeds, the zest and juice of a lime and mix.

Finally, pour the mix over the pineapple and enjoy!

Day 6: Oysters With Rice Vinegar

Oysters, yuck! I’m not a fan of Oysters at all — they taste like runny, salty, snot. Eck! But I have set out to complete ALL recipes in the book, so here goes.

This recipe is an easy one. Raw Sydney Rock Oysters, some sake, some rice vinegar, some wasabi, and a bunch of radishes. Flambé the saké (Perhaps I got some dodgy sake, but it did not take to a flame at all. Or perhaps there was something I was missing), mix together and spoon over the oysters. Bottoms up.

Yuck! The sake mix is relatively nice, but the oysters just don’t go down well at all.

Well, fortunately, they weren’t too expensive, so I’m not too worried if they don’t all get eaten.… Bonzai!