Outside-In: Application Interoperability Using an OSID-Based Framework

Adam Franco June 25th, 2008

This post describes an interoperability demonstration given at OpeniWorld Europe 2008 in Lyon, France.

Abstract

Segue and Concerto are two curricular applications built upon Harmoni, an Open Service Interface Definition-based (OSID) service-oriented application framework. This demonstration will show how website content created in Segue is stored as OSID Assets in Harmoni’s OSID Repository. Similarly, the demonstration will show how multimedia assets created in Concerto can be stored same repository. Interoperability will be demonstrated as each application is used to view and make real-time modifications to the OSID Assets created using the other application, while at the same time respecting the authorizations given to those assets. Additionally, an OSID Repository to OAI-PMH gateway will be shown providing the LibraryFind meta-search tool with access to the metadata for content created in Segue, Concerto, and a lightweight, read-only OSID Repository.

Software Demonstrated:

Segue 2.0 - Beta 20

Adam Franco June 9th, 2008

Another week, another Segue 2 beta. This week’s installation brings visitor registration, a few new themes from Alex, theme migration from Segue 1, and a bunch of little bug fixes.

Visitor registration brings with it a few interesting challenges. As in Segue 1, we want (and need) to be able to allow people outside of the Middlebury community to join in on public discussions hosted in Segue. As well, Middlebury users often need to give access to restricted parts of their sites to people off-campus with whom they are collaborating. Our visitor registration system therefore needs to be easy to use by registrants, keep out spammers, as well as enable searches for visitor accounts by community users.

To keep out spammers, the visitor registration form uses reCAPTCHA to try to verify that a human is sitting at the browser. There are other CAPTCHA systems out there, but I like the philosophy and approach of reCAPTCHA. Starting with words that OCR software had trouble reading seems like a good idea. After the registration form is filled out, Segue sends an email to the address entered with a unique registration code. Until the link in the email is clicked on (and hence the address verified) the account is locked.

To enable easy searching of visitor accounts, visitors are asked to enter their name. While there are a few restrictions on names, these are user-chooseble. To provide some measure of differentiation between verified institution accounts and visitor accounts visitor accounts have the user-chosen name followed by their email domain name in parenthesis, e.g.:

Adam Franco (gmail.com)

I weighed including the entire email address as that is the only verified information we have about the visitor accounts, but I’d rather not open that information up for harvesting by spammers. If abuse becomes an issue, the visitor registration system also supports both black-lists and white-lists of email domains.

Segue 2 - The home stretch begins.

Adam Franco May 19th, 2008

Segue 2 logoWe’ve recently announced our migration plans to the campus: We’ll be rolling out Segue 2 in mid-August for production use in the fall semester.

I’ve now been working on Segue 2 directly or indirectly for 5 years, since June 2003. It has been a long road and it is wonderful to finally be cresting the last rise. That said, as the feature-request tracker indicates, we still have a lot to do over the next 12 weeks.

Theming
This past week I rebuilt the theming system for the 4th (and last before production) time. The challenge with the theming system is that we wanted to enable end-users to choose from a few straight-forward options for things like ‘overall color scheme’, ‘font size’, corner-treatment — not all of which mapped cleanly to CSS properties. As well, to enable more powerful themes, we needed to let theme developers wrap each content type with HTML tags in order to get some effects that are just not possible with plain CSS when the dimensions of the element are not known. Our first three theming implementations involved different PHP classes for each theme with method for setting various options. Each implementation had its own strengths and weaknesses, but they were all hideously complex and required theme developers to know PHP in order to do more than change the CSS. The new theme implementation scraps all of that complexity and defines themes as a set of CSS files and HTML templates, with associated images. An extension to this simple base adds an option listing (defined in XML) that enables placeholders in the CSS and HTML templates to be replaced with values from end-user-choose-able options.

With the new theming system in place in development Alex has set to work building the first three (Rounded Corners, Shadow Box, and Tabs) of the themes that will be distributed with Segue while I’ve been finishing up the user-interfaces for choosing theme options and enabling more advanced users to customize the theme CSS and HTML in their web-browser. So far Alex and I are pretty happy with the new theming system and its simplicity should give it much longer legs than our previous attempts.

While it won’t make it to production, I eventually plan to have a theme-gallery that users can choose to publish their designs to for use by the rest of the community.

Up Next
With theming out of the way the following are some of the next areas I’ll be working on in addition to fixing bugs and working out smaller kinks:

  • Templates - starting points for sites
  • Enabling embedded videos from trusted sites (i.e. YouTube, Vimeo, etc)
  • Visitor Registration
  • Copy/Move tools for Classic Mode
  • Display of RSS feeds

Still a lot to do, but with each addition Segue 2 gets much closer to being able to take over as the primary course website system.

Work updates coming to AdamFranco.com

Adam Franco May 19th, 2008

I’ve been feeling the urge to record a few thoughts and ruminations related to Segue and our other development work in Curricular Technologies at Middlebury College. I already post official project news, write a lot of documentation, and keep a Twitter work-log of day to day details, but something seemed to be missing. Rather than set up yet another blog, I figured that I would just add some work-related things here. I don’t plan on making this a work-only blog, but my personal-life postings are few and far-between enough that a little more content shouldn’t hurt.

If you are only interested in my work-related posts, check my work category or subscibe to its feed. Enjoy!

Sarah’s Jewelry Case

Adam Franco April 4th, 2008

For my wife Sarah’s birthday I built her a hanging jewelry case. This was my first fine-woodworking project built out of solid wood and it was quite a learning experience. The case is made of Red Birch with dots of Wenge (black), Satinwood (yellow), Chakte Coc (red), Sucaperē (brown), and Purple Heart (purple). It is finished with three coats of Watco Danish Oil after sanding to 600-grit. The outer dimensions are 23 inches tall, 19 inches wide, and 4 inches deep.

I had originally hoped to construct the case over 2 months of weekends, but this time-line turned out to be a little optimistic and though I didn’t count the hours, it didn’t get completed until 4 months after I started. Work on the project went much faster after I got my own table saw at the end of February and could pop downstairs whenever I had a free moment. Until that point I did most of the work in my friend John Filan’s shop in Weybridge (VT). John is a wood-artisan, master cabinet-maker, and was an amazing resource throughout this project: from showing me the ropes at Lathrop’s lumber mill, to machine setup, to notes on grain direction. Without his expert help (and workshop, and tools) this project would not have been nearly as successful. While I have so much more to learn, at least I now know where to begin and how to safely and successfully use all of the major machine-tools.

I read (after the fact of course) that it is usually best to start with simple projects before cabinetry to avoid dealing with the close tolerances of all of the joinery and inset pieces. I’d have to agree. Though I consider this project to be a success I did spend many periods just staring at all of my pieces, dry-fitting them, and trying to convince myself that if I trim off 1/64 of an inch off one side that they would all fit together properly.

As I mentioned, the case started as about 20 board-feet of rough lumber stacked on the upper rack of Lathrop’s mill. Once in John’s shop it was flattened on the jointer, planed to thickness and made square, straight and ready for use. I had sketched out most of the design prior to starting, but many things changed over the course of construction. For instance, I hadn’t planned for wood movement so the back panel had to become floating and interior header and footer pieces added to replace the strength I was planning on getting from the panel. Similarly, my initial plans to hang trays on the insides of the doors fell away as I contemplated the additional complexity of cramming them into an already-tight location.

The ring-pillow I made from a piece of foam cut into a wedge-shape with rows then sliced into its surface. I wrapped it in dark red velvet and put stitches in the base of the slices, the ends, and elsewhere to keep it all tightly together.

Happy belated birthday, Sarah!

Getting Rid of the Translucent Menu Bar in Leopard

Adam Franco February 20th, 2008

With the latest OS X Leopard update (10.5.2) Apple finally added an option to turn off menu bar translucency. I much prefer an opaque menu bar as I find it much more legible. There is only one problem with this fix: Apple, in their infinite wisdom, decided to hide this option on computers that “don’t support transparency” due to having lower-end graphics hardware. After upgrading to 10.5.2 my MacBookPro laptop has the option to turn of menu bar transparency, but my newer and more powerful MacPro Desktop does not. After much searching and forum-reading I found that most of the people with this problem (menu bar is translucent, but the option to make it opaque is missing) had MacPro desktops with multiple monitors and video cards.

The problem it turns out, is that while one of my video cards (that drives my two primary monitors ) is a high-end ATI Radeon X1900XT that supports transparent menu bars, the second (that drives my two outer monitors used mostly for notes and email) is a cheaper NVIDIA GeForce 7300 GT. The presence of the lower-end card in the system was causing the “Translucent Menu Bar” option to be hidden, even though it was supported by my other card.

Steps to fix:

  1. Turn off computer
  2. Remove low-end video card
  3. Start computer
  4. Go to System Preferences –> Desktop & Screen Saver and un-check the “Translucent Menu Bar” option
  5. Turn off computer
  6. Replace low-end video card
  7. Start computer

It is a pain in the butt, but it works to get the damn translucency turned off.

River Levels Widget v1.2.1

Adam Franco February 10th, 2008

This version is a re-release of version 1.2 which had a corrupted archive missing some necessary files.

RiverLevels 1.0 Screen Shot

The RiverLevels widget provides an easy way to monitor the amount of water flowing in your favorite streams and rivers right from your Dashboard. The RiverLevels widget is of particular interest to whitewater kayakers and canoeists.

Once any United States Geological Survey (USGS) stream-gauge station is selected, it is automatically refreshed to always provide you with the latest graph of the water-level. As of version 1.2 you can choose between two graph styles: discharge in cubic feet per second (CFS) and water-height in feet.

This widget is Free software, licensed under the GNU General Public License (GPL) version 3 or later.

Requirements:

  • OS X - 10.4 “Tiger” or later

Change Log:

1.2.1 (2008-02-10)

  • New zip archive includes the ‘library’ directory missing in the 1.2 release.

1.2 (2008-02-06)

  • Fixed Leopard (10.5) compatability bug.
  • Added the ability to choose Gauge Height (ft) in addition to discharge (CFS).

1.1 (2007-01-08)

  • Fixed graphs extending off bottom of widget
  • Fixed invisibility of front refresh icon

River Levels Widget v1.2

Adam Franco February 7th, 2008

Update: A new version is available that fixes a corrupted archive in version 1.2.
RiverLevels 1.0 Screen Shot

The RiverLevels widget provides an easy way to monitor the amount of water flowing in your favorite streams and rivers right from your Dashboard. The RiverLevels widget is of particular interest to whitewater kayakers and canoeists.

Once any United States Geological Survey (USGS) stream-gauge station is selected, it is automatically refreshed to always provide you with the latest graph of the water-level. As of version 1.2 you can choose between two graph styles: discharge in cubic feet per second (CFS) and water-height in feet.

This widget is Free software, licensed under the GNU General Public License (GPL) version 3 or later.

Requirements:

  • OS X - 10.4 “Tiger” or later

Change Log:

1.2 (2008-02-06)

  • Fixed Leopard (10.5) compatability bug.
  • Added the ability to choose Gauge Height (ft) in addition to discharge (CFS).

1.1 (2007-01-08)

  • Fixed graphs extending off bottom of widget
  • Fixed invisibility of front refresh icon

Update: A new version is available that fixes a corrupted archive in version 1.2.

‘Birthdays’ calendar breaks sycing in OS X 10.5 (Leopard)

Adam Franco January 31st, 2008

After upgrading my laptop to Apple’s latest operating system, OS X 10.5 ‘Leopard’, I ran into a few issues here and there but for the most part I thought everything worked. After about a month using Leopard though, I noticed that my meetings were not syncing properly to my in-phone calendar. Several hours of frustration later my events are finally getting into my phone. The problem: the ‘Birthdays’ calendar generated from the Address Book application breaks the sync process. I’m glad that once I found the issue the fix was easy (disabling the Birthdays calendar), but holy dog-poo that was hard to find.

If you think you may have this error, open the Console application while running iSync. If you will see an error appear that contains the text

ISyncInvalidRecordException you referenced the following records (in a relationship) but did not actually push them

and then another message mentioning ‘birthdays’, disable the Birthdays calendar (iCal –> Preferences –> ‘Show Birthdays Calendar’) and try syncing again.

Middle Road Development

Adam Franco December 3rd, 2007

Just over the hill from me are two new development projects in Middlebury, the “Lodge at Otter Creek” retirement community and the other is an upscale residential neighborhood.

For those who are interested in the extent of the development, I’ve biked the new roads and recorded their positions via GPS:


View Larger Map

Middle Road KML

Next »