BigBlueButtonA quick review of BigBlueButton, and how I customized it for our corporate purposes.


I’ve been looking for a good web conference and desktop sharing application for a while now. We used to use DimDim, until it got bought out by Salesforce and shutdown.

I briefly used Mikogo, and really liked its scheduling features. However, the performance was poor and it was limited to 10 attendees. Also, it didn’t provide audio or video functionality. This wasn’t a deal breaker, however it sucks to have to use multiple tools for related purposes.

I finally stumbled upon BigBlueButton. This is an open source project originally designed for Academia; it is very feature rich and was relatively easy to set up (for an open source project). One of its most attractive features to me is the fact that it sits in my LAN, instead of a provided service. Since we’ll be using this to communicate between departments and branch offices, the latency is MUCH lower across our VPN’s rather than to an outside service. This gives much better performance than anything we’ve tried yet.

Some of the things it does, and we’ll be using it for:

  • Multiple meeting rooms for separate groups of users
  • Document sharing and whiteboard
  • Audio & video conferencing
  • Public and private chat
  • Desktop sharing (full screen or region)

I set up my environment from the VMware image, but I’ll be trying to convert that vmdk to a VHD for Hyper-V soon so it can run in my Hyper-V cluster.

I only ran into a couple problems (audio application freeswitch didn’t install correctly) but the documentation wiki was very helpful in getting those problems resolved. Overall the support resources are excellent.


My first real issue with BigBlueButton (and the ultimate reason for this blog post) was that the default installation is very “demo” oriented. This is what the default screen appears like:


The obvious problem with this screen is that it seems “temporary”, unfinished and unsuited for our organization. It is targeted at someone like myself, who is interested in the latest features and the API examples.

However, I needed a default interface that made it simple for my users to join a meeting room, with a clean looking page and helpful information. Here’s what I’ve ended up with:

Customized company portal for virtual boardrooms

Other than the obvious cosmetic changes, the primary changes I’ve made showing a list of meeting rooms available, and displaying those currently in a meeting. The code for these two features comes from two of the demo.jsp pages provided with BigBlueButton.
On your site you can find them by navigating to http://yoursite/bigbluebutton/demo/demo2.jsp.

These jsp files are located at var/lib/tomcat6/webapps/bigbluebutton/demo

These are the demo page purposes:

  • Demo2.jsp – Join a selected course from a list
  • Demo3.jsp – Join a course from a list with a password
  • Demo4.jsp – Activity monitor

The index page that needs to be modified is located here: /var/www/bigbluebutton-default/index.html

To redesign my index.html page I took the form from demo2.jsp, and inserted it into the “Join” div; I then copied the demo4.jsp page, stripped out the header and extra content, and then made an iframe on my index.html to point to this new .jsp page.

I then added a bit of text as a description for my users, in an collapsible div for a clean look, and modified the design of the page to fit our company design.

Update: here’s the actual code behind the index.html file:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
<html xmlns="">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>BigBlueButton -- Open Source Web Conferencing</title>
<link rel="stylesheet" href="css/style.css" type="text/css" />
<script type="text/javascript">
        function autoFocus() {
<script language="javascript">
             function toggleDiv(divid) {
                 if (document.getElementById(divid).style.display == 'none') {
                     document.getElementById(divid).style.display = 'block';
                 } else {
                     document.getElementById(divid).style.display = 'none';
<body onload="autoFocus();" class="nobackground">
        <div id="login"> 
        	<h1 class="logo"> 
            	<a href="">Login Page</a> 
            <h1 class="loginheading">Virtual Boardrooms</h2> 
             <div id="login-form">
                    <p><a class="speciallink" href="javascript:;" onmousedown="toggleDiv('description');">Click twice to expand introduction</a></p>
                    <div id="description">
                        <p>Using BigBlueButton, we have set up a central site to provide web conferencing access.  This is primarily used for:</p>
                            <p> - Document & whiteboard sharing<br />
                             - Presenting what is on the screen to attendees<br />
                             - One-to-many audio conference (ie: a single presenter with limited audience interaction)</p>
                        <p>This tool is not as effective for video and audio conferencing together, as they typically aren't synchronized together. A future version of BigBlueButton is addressing this problem, so in the future this may be the only tool we need.</p>
                        <p>To facilitate video conferencing, we recommend you use the video conferencing information on the wiki <a href="http://wiki/resources/virtual_boardrooms">here</a>.</p>
					<div id="join">
					    <h2>Join a Meeting Room</h2>
                            <FORM NAME="form1" METHOD="GET" action="/bigbluebutton/demo/demo2.jsp">
                                <p>Enter your name:</p>
                                <input type="text" id="username"  name="username" size="29" /><br /><br />
						        <p>Select a meeting room:</p>
						        <select name="meetingID">
				                    <option value="BrownBag">Brown Bag Sessions</option>
				                    <option value="BusDev">Business Development</option>
				                    <option value="Geomatics">Engineering</option>
				                    <option value="Geomatics">Geomatics</option>
				                    <option value="General">General</option>
						        <input type="submit" value="Join"/> 
                                <input TYPE="hidden" NAME="action" VALUE="create">
				        <br /><br />
						<p>For <b>multi-party video conferencing</b>, you can use this <a href="http://vbr/mpvideo.html">virtual boardroom</a>.
					    <p>If you have a regularly scheduled meeting and would like a specific virtual boardroom added, please email <a href="mailto:"> Jeff Miles</a></p>
					    <br />
					    <p>For a tutorial on using certain features of this tool, <a href="">click here</a></p>
		           <div id="currentactivity">
                        <h2>Current Activity</h2>
                        <iframe src="http://vbr/bigbluebutton/demo/activity.jsp" width="490" height="400" frameborder="0" scrolling="no" />		
        <div id="footer">
                        <div id="footCenter">
                        <p>Copyright © 2010 <a href="">BigBlueButton Inc.</a></p></div>
                </div><!--end footer-->

I haven’t modified the actual BBB client, as this requires recompiling the swf files. It’s pretty brand neutral as it is, so I don’t think I’ll be doing anything there.


Overall the performance of BigBlueButton has been great. Document and screen sharing is crisp and smooth, and the video looks great. This is something we’re going to begin using immediately, especially since it is leagues ahead of other tools in features and performance.

My only complaint, and it is a deal breaker for certain uses, is that the audio and video don’t sync up. The audio is typically 2-3 seconds behind the video, which makes it unusable for video conferencing. For now we will be using the opentok basic embed to facilitate video conferencing.

I have heard from the mailing list that version .80 will have a different method of providing audio, one that doesn’t have the lag the current version does. Once this is released we will be trying that out and hopefully dumping opentok and use BigBlueButton exclusively.

Reset AutoCAD in a Windows profile to default

Occasionally I’ll come across an obscure AutoCAD problem that is only occurring for one particular user. I would have narrowed down the issue to conclude:

  • It doesn’t occur on a different computer with the same drawing
  • It doesn’t occur on the same computer with a different user and the same drawing
  • It does occur with the same user and a different drawing
  • It also continues to occur after changing profiles within AutoCAD

First some definitions just for clarification (perhaps there is better terminology out there, but I can’t think of it):

AutoCAD Profile: Profiles within AutoCAD that are accessible through the OPTIONS command

AutoCAD Windows Profile: Set of files, folders and registry entries for a single Windows user that contain all AutoCAD settings for that particular user


Based on the conclusions and definitions above, it is much easier to reset the AutoCAD Windows Profile back to defaults rather than try to find a solution, unless you know the command/variable that is causing your problem.

It should go without saying, this will remove any customizations you have made, including additional CUI files, PC3 files and tool palettes.
To do so:

  1. Navigate to: “%appdata%\Autodesk”
  2. For the Autodesk product with which you are having a problem, append the word “OLD” to that folder
  3. Navigate to “%localappdata%\Autodesk”
  4. For the Autodesk product with which you are having a problem, append the word “OLD” to that folder
  5. Open Regedit
  6. Navigate to HKCU\Software\Autodesk\AutoCAD\
  7. If you have more than one AutoCAD product, you’ll see a variety of R1x.x numbers. These correspond to different AutoCAD releases, with the major number incrementing when a new DWG format is released. For a specific list, see here:
  8. Expand the version you’re concerned with, and you will see a key for each product within that release. For example:
  9. Right click on that key, and choose Export. Save this as a backup in case something goes wrong.
  10. Now delete that key that you just exported.


Now when you start AutoCAD as that user, it will rebuild the AutoCAD Windows Profile from default.


SSRS – Multi Value parameter in Linked Report

I had been trying to get a multi valued parameter into a linked report for the longest time, and when running the report all I would get was an error, “The %variable% is missing a value”.

I just couldn’t figure it out, but it was just me being dumb. The answer is really quite simple:


I was trying to enter my values like this:

value1, value2, value 3


But what you need to do is enter them separately on a different line:


Then SSRS will make a comma delimited list of them for you.

PDF Link creates new IE window that disappears

I’ve got a few users using separate sites that are showing the same problem with PDF links. Upon clicking the link, a new IE window opens and then immediately disappears.

So far this only seems to affect IE7 and IE8.

One workaround we’ve found is to hold CTRL while clicking the link, but this isn’t ideal.

I stumbled upon the solution to this issue today though. Try this:


Open Internet Explorer, and go to Tools > Internet Options > Security > Custom Level



Scroll down until you find the Downloads section, and change “Automatically prompt for file downloads” to enable:


Now your link should prompt you to save the file.


Mindtouch Core – Wiki & Intranet

At my company I’ve been using Mindtouch since it was called Dekiwiki. Its use is primarily as a company intranet, with resources, documentation and a gathering place for certain tools.mindtouchlogo

This post is the first about our implementation, and my intention is to demonstrate what is capable with Mindtouch Core in a practical manner. This type of information is notoriously hard to find from Mindtouch, as they are a company very much set on buzzwords and corporate speak.


As a wiki, intranet or document port, I really do recommend Mindtouch. It is incredibly easy to set up, very easy and friendly to use, and has vast potential for customization.

If you want to get started, I’d recommend you download the VMware image from here:

I believe you will need to register for a license of Core, which is free.


So diving in, here is the front page of our wiki (excluding some identifiable information):

Click for full size

This is using a customized version of the Beechbeta skin, with modifications such as:

  • Changed to a dynamic width skin instead of fixed
  • background tiling to match corporate colours
  • Additional links underneath the logo placement (logo hidden in this image, its top left usually)
  • Certain CSS sizing of elements.

We have enabled single sign on, so as long as the user is authenticated with Active Directory, the wiki will use those credentials to sign in.

On our front page, I am using a template to display weather for our regional offices, with a simple table beside that for current news which is updated manually.

The success board is an iframe, which displays a custom gridview from a minor database.

On the left you can see a suggestion box, which is an html form that is linked to php code that automates email submission.


Our page structure is shown on the left, where most of the content is specific to a Department, an Office (geographical) or company wide (Resources).

Here are some of the practical uses we’re using Mindtouch Core for:

  • Community forum/discussion area
    Click for full size


  • Embedded media
  • Documentation reference
  • FAQ pages and instructions
  • Links page (many staff bookmark this page)
  • Accessibility to various internal tools and sites, such as Vacation Planner, Suggestion Box, etc.
  • Program distribution through files page


We are also trying to promote the personalize page feature of Mindtouch. Every user has their own personal page, which can be made into a biography, notes, or photo dump.

Recently Mindtouch has added an “Activity Dashboard” which is useful. I’ve added a slideshow of any photos added to a user’s personal page onto this Dashboard:

As well, we’ve added a tab with Info about the user, pulled from our Active Directory. I would have really liked to get this on the Activity Dashboard tab, but that is beyond my coding skills.


So that in a nutshell is how we’re using Mindtouch. In the future I’ll post more on the specific tools we’re using and how they’re created.

If you’d like information on how any of these features or customizations are done, leave me a comment!