Home Page

The Developer's Cookbook site is built and maintained by Interactions Laboratory faculty, students, and research assistants at the University of Calgary.

It serves two purposes.

  • to store toolkits, software and applications created by ilab people
  • to document these systems and give examples of how they are used.

Ilab people should feel free to add / modify content as needed.

  • If you are creating things from scratch, try to follow the wiki style, e.g., by copying and modifying one of the other content pages.
  • If you are linking to an existing web site, move that web site to /home/grouplab/www/software so that it does not disappear over time.

For those non-ilab users, feel free to use this site and its software. However, realize that this site is offered as is. We will not normally provide support for problems you may have. Also, some of the software has license restrictions. It's certainly all copyrighted.

Unless otherwise noted, most programming systems are packaged and tested for use within C#. While they may likely work with other .NET languages, we leave that to you.

Annotated Table of Contents


  • SDG Toolkit: a framework for designing single display groupware applications by managing multiple mice, keyboards, multiple cursors, and mouse/cursor orientation. SDGT is implemented as an easy to use .NET package.
  • CB Media Items: The CommunityBar system displays media items within a sidebar. However, Community Bar is also a toolkit that lets you develop your own media items. This package includes a template and instructions for how to do this.
  • CEXI is the Centralized External Input Toolkit that allows large display input devices (e.g., Smart Board) to be accessed in high level languages (e.g., Java, Microsoft .NET). CEXI Toolkit removes the requirement to use low level input SDKs.
  • Collabrary is a library of COM objects for rapidly prototyping collaborative multimedia applications such as media spaces, synchronous real-time groupware, community information spaces, computer vision applications, scripted image and video manipulation. Note: The shared dictionary aspect of this system has been rewritten as .Networking , and some of its video and image capabilities have been rewritten as EasyImages.
  • DiamondTouch Toolkit a tool for rapidly prototyping applications over the DiamondTouch multi-touch table. Note that MERL recently released a newer version of the DiamondTouch SDK which contains a similar component except that it does not provide access to the raw signal data for each user. If you don't need this data, use their SDK instead as it is still maintained.
  • EPS Toolkit is a framework for designing information visualization systems that work in 'distorted' space. It is a mathematical toolkit. You set properties of a mathematical space (such as lenses, their shapes, their extents and so on). You then give it a point in that space, and get back where that point is located in the new 'distorted' space. All the drawing is up to you.
  • EasyImages makes it really easy to capture frames as bitmaps as they are produced by a web camera, invoke some basic image processing of these frames, transform a frame into a jpeg image, and access pixels within a frame if you want to do your own image manipulation
  • Haptic Tabletop Puck development tools is a set of files, instructions and software that facilitate the creation and development of haptic experiences for tabletop computers.
  • .Networking is a powerful toolkit for rapidly prototyping groupware applications with the Microsoft.NET platform. It provides the shared dictionary: a centrally coordinated distributed shared memory system for inter-application communication.
  • Phidgets-NET provides a set of Microsoft.NET Common Language Runtime wrappers for the Phidgets™ library. These wrappers make it easier to program phidgets in C# and other .NET languages than using the COM Interop assemblies that automatically generated by Visual Studio .NET. Note that this version of Phidgets.Net is begin replaced by the SharedPhidgets toolkit.
  • Shared Phidgets3 lets developers easily create new applications based on distributed physical user interface elements. These Phidget devices are USB components, e.g. servos, sliders, motion sensors, temperature sensors, buttons, LED, RFID reader and Text LC displays.
  • TableTop Framework (aka buffer framework) provides a foundation to build applications for tabletop displays. Focus is on enabling responsive interaction by a novel concept using buffer for interaction. It also provides an reusable architecture to integrate interaction metaphors into applications.
  • GSI Demo allows you to map existing single user applications to a multi user speech and gesture enabled tabletop by demonstration.
  • Windows Hooker allows you to capture mouse and keyboard events from a PC in any Visual Studio programming environment. This dll wraps the Windows Hook API to read all of the incoming keyboard and mouse events, where it makes these events accessible throug a simple API. This software is similar to those seen in keyboard/mouse loggers.


  • TimeLine is a visualization that captures a video stream, and then allows people to explore the history of that video stream.
  • CommunityBar is a groupware tool supporting informal awareness and casual interaction for small communities of intimate collaborators.
  • IE History integrates Back, History and Bookmarks into a single recency based list of pages visited across multiple sessions. Note: not tested with recent versions of IE.
  • Cambience is designed to allow people to network their webcams and monitor motion on the periphery through the use of ambient sound effects. Cambience allows you to create your own mappings in real time between video and sound through a visual programming environment.
  • WebTracker is a set of systems that let people create a visual history of custom notifications to track personally meaningful changes to web pages.
  • Souvenirs is under development; more to come soon.
  • Location Appliances exploits both home location and context (as articulated in ethnographic studies) to enhance the role of ambient displays in the home setting; these displays provide home occupants with both background awareness of an information source and foreground methods to gain further details if desired. Note: requires special hardware.
  • MEdia Space An on-going project to explore use of sensing technologies and intentional asymmetries in the design of a home-office media space. Use at own risk!


  • URL Tracer allows a person to track a single browsing session, where it produces a text file containing all of the URL navigations that were made in the session, including the date, time, URL, and Window (main or newly spawned).
  • Calendar Data provides a database of the Alphabet Family's calendar events, used to simulate calendar contents.
  • Transient Life is a system designed to enable the gathering of personal tidbits and information as well as provide mechanisms to share the collected information with others.
  • Artifact Buddy lets a file behave as a buddy on Instant Messenger
  • WikiFolders enables the creation, manipulation, and display of rich text folder annotations side-by-side with regular file objects in OS X file browser windows. Software Project is a sample wiki used in WikiFolders presentations.

Visual Studio

  • C# includes tricks to making C# work for you
  • MSI provides tutorials on how to make an MSI installer
  • Setup Toolbox Installer lets add components from installed DLL files to a new toolbox in Visual Studio 2002 and 2003. Not tested with VS2005.
  • Tablet Programming gives examples on how to program pens on the tablet
  • SQL and C# gives examples of how to use SQL from C#


Video and Media

  • Video Editing talks about how to use Adobe Premiere for creating a film
  • Stock Music is some music created by Rob Diaz-Marino. YOu can use it with attribution to him.

Credits: Nicolai Marquardt started this cookbook, Rob Diaz-Marino had the idea for starting this wiki - thanks! PmWiki version pmwiki-2.2.43