Tag Archives: dashboard

Death to MYddlebury

This post was originally an email to “the people who cared most about this issue”, which I immediately realized was the most conceited possible address for a message on this subject: the personalizable features for the new website. By its very nature, this concerns everyone who works, studies, and teaches at Middlebury, all of whom care on at least a small, perhaps unconscious level about whether they can create their personal web space or maintain a profile on our new website.

At least, it’s been my hope since the beginning of this project that people cared a little about this.

Still, sometimes it takes a conference room of 30+ people to convince me that I’m wrong about something. This afternoon we met to discuss a possible solution for implementing a personal portal experience on our new website. There was plenty of criticism for the proposed software and I didn’t take it very well. During the meeting and then later in the afternoon I advocated a compromised position: we should implement the parts of this software that dealt with creating personal web spaces and profiles and ignore the rest. After a few hours of reflection, and a few beers, and a brandy, and a glass of port, I’ve come to a different conclusion: we should scrap the whole idea, look back at the features people either requested or were prematurely promised and develop a method to get that stuff working on our new site.

Here’s what the application we looked at this afternoon offered:

  • A directed announcements page
  • A static list of constituent-oriented links
  • A RSS feed reader
  • Personal web space for all users
  • User profiles fed form a central database like Banner
  • Alumni gateway features like a career network

Here’s what we’ve actually been tasked with delivering:

  • Professional profile pages for Faculty and Staff
  • A page of personal bookmark links
  • Maybe some sort of iGoogle thing. That’d be really cool!

That’s it.

Let’s deal with each of these point-by-point.

Professional profile pages

We already offer several systems for building out your personal web space. Many users have web-accessible directories on our old UNIX server where they can upload HTML documents. I got one of these accounts when I was job shadowing one of the system administrators at the college in 8th grade and then used it again when I took an intro CS course at the college while in high school. The server’s been upgraded a couple of times since then and now runs some version of linux, but it’s basically the same set up. If people want a bit more, they can create their personal web space on Segue, our custom developed LMS, or here in WordPress, or as a user page in one of our wikis, or as a profile posting on our current CMS, or in a couple other really specialized systems. We will very likely soon also offer Google Apps for Higher Education, which will allow people to build out their personal site using Google Sites.

But the idea with these professional pages was that people would want to present information about themselves in a highly structured format, integrated with our new website and content management system. Faculty might want to post their CV, academic history, and current courses on a page that as the same look-and-feel as the rest of their site, delegate permissions to allow the academic coordinator for their department to help them update the information, and provide some dynamic content from our campus directory or course catalog. Doing this requires more of a thought out, structured system than we’d be able to offer with basic HTML document web hosting or even Google Sites. The idea was, therefore, to create a basic web space for everyone within our new CMS and let them build out their site in this space.

This creates some rather obvious problems. If this is just basic web space, how to we integrate it efficiently with the course catalog or online directory? How do we automatically enable departmental colleagues, such as the academic coordinators, to assist in building out the content for these profiles, as they have done in the past? If we want to add a piece of functionality to every one of these professional profile sites, can we do it in an efficient manner? Can we aggregate this content easily, knowing that our central database system doesn’t tell us which people belong to which departments or workgroups? How do we reuse this content in other areas of our site?

If we were to just turn on really simple web site editing for all users, very few of these things would be possible.

Instead, we should do what we have already begun to do for Monterey: use a specialized template in our new site for professional profiles that includes fields for all of the information we want to know about the person and might choose to use when segmenting or aggregating the information. We should then have these profiles pages created within the departmental or office sites relative to these people. We can then use the power of our new CMS, Drupal, and its Views module to create pages that allow the user to quickly and efficiently find the people they want to know about. An example of this already in action can be found on the development version of the MIIS site (here’s a link that will only work on-campus and will break soon: http://miis2.middlebury.edu/academics/faculty).

We have never been successful demanding that anyone use a particular system and will, naturally, still offer all of the options for creating your personal web space that I mentioned above, but for creating the types of profile pages that we know need to be present on the official departmental pages, we’ll offer this option with encouragement and development support for integrating the “official” profile with the database systems that already contain much of the information we’ll be presenting.

A page of personal bookmark links

This is the most important feature of our new website for our internal audience. During meetings last winter, faculty, staff, and students were both promised that this would be available and told us that this feature was required. Accordingly, we need to find a way to make this work. The resulting system cannot feasibly be one where the user can simply click a button on any page of our site to add it to their personal bookmark list; such functionality requires an integrated portal product that we are not able to run due to pressure from faculty to run systems such as WordPress and MediaWiki for their specialized uses rather than a single portal application like SharePoint, Luminis, or the custom systems developed at Amherst and Gettysburg. However, that does not mean that we cannot offer customizable gateway pages with the following features:

  • A default list of links
  • A prominent form, encouraging users to log in and edit their list
  • Drag-and-drop reordering of links on the page
  • A quick webform where the user can paste a URL and enter a simple title for the link page
  • Integration with our single-sign-on system, so if the user is already signed in to one of our web applications they will be presented with their custom link list immediately upon selecting one of the constituent gateway options from the global site footer

Some type of iGoogle thing

We know that our advanced, cutting edge users want to personalize their web space with drag-and-drop widgets, design their own homepage experience and have deep, interactive ties with our core systems. We have also heard, from several of the design vendors who visited us during our RFP stage as well as intelligent folks on campus, that rebuilding a local version of a really cool application like iGoogle is a fool’s errand. As soon as we’re done with our version of it, Google will come out with a really cool new feature that ours doesn’t have and people will just keep using Google’s version of the application.

Much as I want to believe differently, I have it on good authority that Google has both more and better developers than Middlebury College. We’ll likely never be able to offer a better version of iGoogle than they have already created, so we might as well use the instance they’re giving us. We’ve heard that the iGoogle that comes with Google Apps for Higher Education is considered “deprecated” by Google. Still, I remember a phone conversation that Chris and I had with a Google representative in 2006 who assured us that Google would soon be charging institutions like ours over $10k a year to use the Google Maps API without advertising and that this change was only “months” away. By my count, it’s been at least 40 months away at this point. Of course, we can never tell when a 3rd party vendor will unilaterally kill support for an offering that they’ve told us they’re killing support for, but we’re talking about something that we already know will be used primarily by our power users.

They can deal with it if Google decides to move on.


To summarize: I think I was incorrect about the necessity of implementing a local profile portal to serve the features our requirements gathering effort found last winter. When this post was still an internal email, I was going to request that I be given the opportunity to publicly apologize for  my behavior this afternoon in attempting to push this through rather than listen to the honest feedback coming from our staff and students present at the meeting. This blog post should serve as that apology. I think I get it now and rather than implementing services that I think would be really cool, will advocate for things that accomplish the actual goals you set for us in this project.

I recently emailed my boss saying that my time working on our website after hours like this was at an end, but I find I can’t really operate that way. If I didn’t spend the time to type out this post, this would just be gnawing at me all night and that’d be a worse punishment that taking the hour or so required to get my thoughts down in writing. While I’ve said that I think I’m now more correct in my thinking about how this should all work, I have to acknowledge that I was incorrect previously which could very well mean that I’m still laboring under misconceptions. Please use the comments field here to let me and the rest of the development staff for Middlebury’s new website know if I’m still off my rocker on this issue.

Report on MyUOC Conference

I attended a conference yesterday on the MyUOC university home page project (http://macedonia.uoc.es/wordpressmu/edtech/my-uoc/), developed at Universitat Oberta de Catalunya. Essentially, it’s a personalizable home page based on the design of iGoogle that allows users to access widgets developed locally by the UOC staff, import widgets that they already use from iGoogle, or write their own (if they know how in HTML). The presentation was very impressive and our discussion with the UOC staff afterwards was fruitful.

We were previously considering implementing the personal home page portion of our webredo project using ASP.NET Web Parts (http://msdn.microsoft.com/en-us/library/e0s9t4ck.aspx), which store personalized data about page controls in a custom SQL Server database. At the time, we believed this to be the best available solution to implement a custom home page, but our introduction to MyUOC has changed at least my opinion on this.

Here are the advantages of MyUOC over ASP.NET Web Parts

  • Interface work for adding/removing/customizing widgets already done. Programming a usable interface would have been the most challenging aspect of this project.
  • Interface works in all browsers, except widget drag-and-drop in IE 6, though there’s a menu to move widgets for browsers where drag-and-drop doesn’t work. ASP.NET web parts don’t support drag-and-drop for non-IE browsers.
  • MyUOC allows users to import widgets from iGoogle that they’re already using. This is great for user buy in and defuses the argument of “I’d love to use Midd’s home page, but I really need the googly eyes that follow my cursor around the screen”. Additionally, all MyUOC widget use the iGoogle widget API, so we can integrate widgets from any other application that uses this API.
  • Allows users to create their own widgets – if they know how. Not sure how useful this will be at Midd, and we’ll need to do some work to ensure application security, but good to know it’s there.
  • Full control over the complete technology stack. MyUOC is (or will be shortly) open source, meaning that we can customize portions of it to best suit Middlebury’s environment. ASP.NET web parts offer a lot of customization, and you can re-write interface libraries for them, but some of the code is in a pre-packaged DLL.
And here are the disadvantages
  • The communication stack for handling authentication on the service is lengthy and complex and will require us to implement portions of the OKI connectors that we had not previously. There is a performance concern when passing messages through so many layers, though the UOC staff claim that the site has approximately 6000 concurrent users (their student body size is 47000), which is far more than we’d expect for Middlebury.
  • ASP.NET allows for user “impersonation”, letting the web server process pretend to be the currently logged in user. This is extremely handy for connecting to Exchange without requiring the user to re-enter credentials. This feature will not be available in MyUOC and we will have to hope that our efforts to integrate our single sign on service (CAS) with Exchange are fruitful and allow this to happen. Email is the killer app on a personal home page.
  • MyUOC is implemented in Ruby on Rails, a language that none of our development team has experience using. On the one hand, it might be challenging to work with a language that we haven’t used before, but on the other this gives us an opportunity to learn new skills working on an important project. RoR is a highly used emerging language / framework and knowledge of it may very well be useful in the future.
  • No ability to design a public version of your home page. This is something that you can do out-of-the-box with ASP.NET web parts. The ability to create a public version of the page is great for people who want to show off a portal to content they’ve created, like posts from their blogs, videos or audio they’ve stored in MiddMedia, links to sites they’ve created or maintain, lists of events they’re hosting or attending, etc. We would need to add functionality to do this.
  • No ability to have a page for a department or group. Like public pages, this is a useful feature for groups that want to show off dynamic content from many different sources, especially those that might not have or need a full CMS presence, such as student organizations. We would need to add functionality to do this.

Provided that we can get this working with Exchange, I’m confident that using this software will be a huge boost to our project plan for implementing personal home pages. I think the interface in particular will be one that people are excited about using and look forward to customizing and seeing every day.

To detail the complex communications stack I discussed, here’s a diagram: 

Web Service for Middlebury Weather

I’ve finished coding a Web Service for retrieving weather information for Middlebury, VT. The service is available at http://web.middlebury.edu/systems/weather/Weather.asmx. Currently, the service supports six functions:

  • getConditions() – returns a text description of the weather
  • getDate() – returns the date/time of the last update
  • getHigh() – returns an integer value of the high temperature in degrees F
  • getIcon() – returns the relative name of an icon representing the conditions
  • getLow() – returns an integer value of the low temperature in degrees F
  • getNOAAUrl() – returns the full URL to the NOAA’s weather site for Middlebury

Because the NOAA requests that you not retrieve information more than once an hour, the information is cached locally until a new request comes in more than an hour after the cache file was last modified. You can use the getDate() function to find out when the cache file was last refreshed. Right now, the service only serves up information about Middlebury’s weather, but I could see expanding this to allow other locations to be requested based a parameter to the service constructor. This might be helpful in getting weather conditions for other campuses. The getIcon() function will return a value like “01.gif”, which is an image file in http://web.middlebury.edu/systems/weather/Images, but you could have your own set of weather icons for your service and just mapt he appropriate condition to 01.gif.

This is based on code written by Brett Wilhelm for the MiddCMS framework. I’ve modified the code so that the different pieces of information are chucked out into functions, but the underlying functionality is the same.

Update from Database Applications and Systems

Submitted by Chris Norris

Here are some of the projects and tasks that DAS staff members have been working on during the past month…

Mike Schuster
– Modifications to a Banner custom process for the Registrar’s office that creates student class codes to meet new business rules.
– Modifications to the “LS Stats- new” Hyperion report to display applications for students applying to language schools at Mills College.
– Assisting with applying the Banner financial aid SSB upgrade in the DEV2 database.
– Investigating issues with Banner custom database triggers that create “away” and “returning” general student records for students going on leave.

Rob Pekor
– Modifications to the Phone-a-thon data interface for College Advancement.
– Gathering requirements for the data feed for the Harris online community project.
– Refinement of the Banner/ListManager (Broadcast Email tool) integration model with Travis.
– Loading MIIS gift history for Monterey and College Advancement.

Travis Stafford
– Refinement of the Banner/ListManager (Broadcast Email tool) integration model with Rob.
– Transitioning the Alumni office and CSO towards use of the self-service WordPress cformsII plug-in for all “new” non-eCommerce forms.
– Clean-up of code and adding functionality to Project Tracker.

Liz Whitaker-Freitas
– Ongoing work related to the Hyperion System 9 Upgrade/Migration (one line item, but this is a BIG project).

Ian McBride
– Completed development on a News Dashboard for College Communications (http://web.middlebury.edu/systems/newsboard). This will soon replace the main Public Affairs News home page and aggregate news content from several sources.
– Supporting CMS content providers and other web-related requests.
– Participating in the Web Makeover team meetings.

Chris Norris
– Migrated GO.middlebury.edu to a more stable prod environment, implemented GO.miis.edu for Monterey.
– Refinement of service-level monitoring, including addition of escalation groups.
– Project Phoenix BIA reviews, planning, specification for remote DR web presence.
– Pre-migration configuration, testing, troubleshooting of eCommerce web forms.
– Supporting ListManager newsletters, conducting ListManager workshops (only a couple more to go!).
– Contacting various folks about outstanding FileMakerPro requests, pre-migration web forms questions.
– Working on updated SWOT analysis of the DAS workgroup.

News Dashboard Beta


I’ve published the latest version of the news dashboard application to the production server. I consider this to be in “beta” now, though the development work on it is very nearly done. The tasks that remain are to swap out a few images and get the background of the list item to change as you mouse over an item in the featured stories sections of the CMS News web part. I also imagine that College Communications will populate the site with some more content now that it’s on a production server and the data is being saved and backed up.

I was slightly apprehensive about this migration since all of my testing involved a personalization database running on a SQL Server instance on the local machine and I hadn’t yet tested the remote database connection aspect of the site. However, this worked perfectly without even needing to restart the SQL Server service or IIS – that’s pretty rare as anyone who’s worked with either of those systems will have to concede.

I started working a bit on the personal dashboard application a bit last week. I’ve got the rough framework done and am now working to refine some of the specialized content. Exchange Web Services requires that you set up a Context object that includes the username and password of the currently logged in user. We don’t keep the password in system memory for obvious reasons, so I’m trying to work around this using several means I won’t get into deeply here. At the same time, I’ve succeeded in creating a widget that shows the current availability of a list of users you give it based on their Exchange calendars. Right now it just shows 0 if they’re available or 1 if they’re busy, but I’m working on making the user interface a little more friendly.

Once I get a couple of these widgets done, I’ll port the site from my desktop to our development server and allow user testing. Stay tuned!

(also, add a comment here if there is a particular type of dashboard widget you’d like to use)

More News RSS and a Dashboard Update

I’m continuing work on the News Dashboard and now have three different Web Parts functional, though I’m not done with the design work. In the upper left is the CMS News Web Part, which gets an RSS feed of CMS news stories that now include images in the RSS (though you’ll note the first story doesn’t have an image – still working on the handling for that case). Eventually, this Web Part will let you roll over each of the stories and it will display the summary at the top with the image from the story.

Off to the right is a more generic RSS aggregator for non-CMS news (though I’m using a CMS news feed in this test case). This and the CMS News Web Part will be styled so that they appear like the alternating grey rows on the CMS’s front page. Speaking of that Front Page, you might have noticed that it now has an active RSS link in most browsers. I added a feed of Front Page News today.

Below is the Video Web Part. This is designed specifically for use with Middlebury’s streaming media server: MiddTube. You just enter the name of the video that you’ve saved to your (or another) account and the Web Part will become a player for that video. The neat thing about these Web Parts is that they’re fully user-configurable and moveable around the screen.

I just have two more Web Parts to create: Blogs and Events. Once those are done I’ll start adding the styling so that this looks more production ready, but I’m guessing that this will be ready for testing near the end of this week or early into the next.

RSS Feeds for Events at Middlebury

I was spurred by a comment by Middlebury student George Altshuler on Tim Spears’ blog to make a change to our online Events Calendar. George commented that a student-created listed of Middlebury events provided through Google Calendars via RSS really should have been created by Middlebury College staff. Specifically, George believes,

“Middlebury needs an events calendar on its website that allows you to create a profile and allows you to select types of events you’re interested. Other schools have this, and for the amount of money the school has (and we pay) there is absolutely no good excuse for not having it.”

Our current Events Calendar was coded by Middlebury student Tyler Kremberg during the time he worked for LIS as a web programmer, about three years ago. It reads information directly from our administrative scheduling database, Resource 25 (which in turn gets much of its scheduling information from Banner), and displays it on the web with a bit more decoration than the default R25 calendar. At the time this was developed, RSS was only beginning to gain widespread popularity on websites – less than 10% of surveyed web users knew what it was.

Since that time, we in Web Services have badly wanted to recode the Events Calendar to include some of the features George is asking us to provide. However, when I speak of “Web Services” in terms of coding staff, I’m really talking about myself and Travis Stafford, who has been working with us for the last year and a half. Prior to three years ago, LIS didn’t have a full time web programmer outside of Banner and Segue, for two years before that LIS had only a Webmaster and a graduate student intern, and before that just the Webmaster. Much of the work in Web Services over the last five years has been creating a central Content Management Server and migrating all of the web sites and web applications into that framework. So while I’ve wanted to redevelop the Events Calendar for the last two years, I’ve been working on creating an online Directory that will work for both Middlebury and MIIS (and others too…), an online Donor Roll that reads directly from Banner, an automated Dining menu that allows you to provide feedback, a new site for the Museum of Art, an interactive Campus Map, and many other applications. And that’s my excuse for why we don’t have an interactive Events Calendar.

But that doesn’t mean that we can’t make improvements on what we do have. Today I’ve added RSS feeds for all of the Event Types listing on the Events Calendar. Just click on one of the types in the left navigation bar and you’ll be able to subscribe to a feed of those events. This took me about a half hour to do, so it’s probably something I should have done a while ago. Developing feeds for the front page of the calendar and the student organizations is going to be a bit more complex, but it’s something I’m aiming to do, probably some time this week. Not exactly a fully database-driven, user-personalizable solution, but it should give users some more flexibility in getting event information.

Let me conclude by saying that I welcome and invite comments here on ways that we can improve our website and our web applications. Middlebury has chartered a group to look at developing strategies for online services and, while I’m not included in that group, I will attempt to pass along any recommendations given to me. I take special note of anything our students suggest, since I so rarely hear from them on this topic.

If you’re curious about what Web Services is up to in terms of improvements to our website and web applications, I encourage you to subscribe to this blog. Also, check out the link to “my priorities” on the right. I keep that updated with the projects I’m working on. As to when we’ll see something like a user-personalizable events calendar, you might notice a line item there labelled “Personal Dashboard Application”….

Consolidating the News in a Dashboard

I’ve started work on a project that will bring multiple news sources together in a single location on our site. This will be used to show news stories, blogs posts, videos, and links to news-related web sites independent of the system or platform the content lives on. The prototype I’ve set up after a couple hours of work can be viewed here: http://devweb.middlebury.edu/systems/newsboard/Default.aspx

It’s important to note that this only contains one news source, no styling, and no configuration options. However, it is a live and dynamic feed of the news items from our site. To do this, I’m using what are called “Web Parts” in ASP.NET. These special controls allow us to store personalization and configuration information in a central database that is retrieved on each page view. The idea is that College Communications will be able to log into this page and rearrange, retitle, and relink any of the RSS feed driven controls (once we have more than one, of course).

I’ll be using the same technology to drive a project that I’m working on later this year, the Personal Dashboard, which will have controls that read information out of your email, calendar, helpdesk tickets, and other sources of information relevent to staff. This dashboard will be totally controllable by each user so you can have the controls and information on your screen (your “portal” if you will) that are most important to you.

I realize this really doesn’t look impressive now, but I’ll be adding a lot more to this over the next few days and will update here with new posts as it goes.