Screen Shot 2013-02-25 at 9.16.20 AMI volunteer and provide technical support for a few non-profits, one of which is the Project Management Institute San Francisco Bay Area Chapter (http://www.pmi-sfbac.org) where I serve as the VP of Operations and CGO.

One of the moves I made in my first year with them was to migrate our event calendar to Eventbrite and Meetup. One of the gaps I found with Eventbrite is that it doesn’t have a way to provide a feed of events that can be used to update an external calendar, so I embarked on a little programming effort to create one.

Most calendar programs allow you to pull external events using the iCalendar (ics) format, and Eventbrite actually has a pretty decent API to allow you to pull the events, so I decided to write a simple PHP script to allow me generate an iCalendar feed.

Screen Shot 2013-02-25 at 8.47.53 AMThis started as a simple one-off for PMI-SFBAC, but has turned into an open source project at https://code.google.com/p/eventbrite-ics/

Looking at the code, you can see it’s pretty basic, just a few PHP classes, some unit tests, Netbeans project and data.

Once the code was working, I used the iCalendar validator at http://severinghaus.org/projects/icv/ to make sure the results are good, and (at least for PMI-SFBAC) they are.

Eventually this results in a URL that I used as a feed into the All-in-One Calendar from Time.ly which lets me show events on my site’s calendar along with any other iCalendar feeds I choose to add.

Screen Shot 2013-02-25 at 8.59.20 AMTo configure the All-in-One calendar, I just go to the Events in the WordPress admin panel, and add the feed.

After I add the feed I click the “Refresh” button to make sure the events show up on my calendar immediately. The events then get updated on a periodic basis (daily by default), and should keep you up to date.

Screen Shot 2013-02-25 at 9.06.58 AMAnother use I put this feed to is to add the Eventbrite calendar to my Google Calendar.  I have a calendar feed from Meetup, and several of my friends so that I can quickly see what is going on that day.

The same basic idea for Google Calendar: you go to your Google Calendar, click the drop down on “Other Calendars” and choose “Add by URL”.

This gives you a nice view of events so that when you are scheduling things you can see what’s coming up that you might be interested in.

For those of you poor souls still using Outlook, the same feed can be used there as well see: http://office.microsoft.com/en-us/outlook-help/view-and-subscribe-to-internet-calendars-HA010167325.aspx

 

 

Enhanced by Zemanta

I got an email from Microsoft today (Office Insider) that included an article about how to add a calendar to Outlook that would give you the March Madness schedule in Outlook as an example of publicly shared calendars.

Publicly shared calendars are nothing new, they’ve been around for years: Apple created the webcal URI to access iCalendar files using WebDAV (over HTTP) for iCal.

So I figured Microsoft probably wouldn’t have reinvented the wheel here and tried clicking the link in the article to see if it would fire up iCal.

webcals dialog box

Turns out that the URI in the link was very slightly different than a standard iCalendar, so instead of the normal “webcal://” it starts with “webcals://”, which interestingly enough tried to fire up Outlook (in my Windows virtual machine).

Luckily this URI isn’t yet associated with a particular app, so I was able to click on the “Choose an Application” button and pick the iCal application.

Once iCal is chosen, the dialog box shows both Microsoft Outlook and iCal:after choosing iCal

After choosing the iCal application, and clicking “OK”, iCal fires up with a dialog asking you to enter the URL of the calendar you wish to subscribe to, with the URI from the web page showing:

iCal URL entry

Now clicking “Subscribe” of course doesn’t work, since iCal has no idea what to do with “webcals” as a URL.

So to fix this, you have to modify the URI to be either “webcal://” or “http://”  (turns out “https://” works as well).

So even though the URI is not quite the standard webcal one, it is possible to open as a web calendar with iCal, and the same trick works for Google Calendar. Just copy the URI from the link in the page (webcals://calendars.office.microsoft.com/pubcalstorage/9rc05lhz2204226/2011_NCAA_March_Madness_Calendar_Calendar.ics) by right clicking and copying the link:

copy link location

Going to my Google calendar, I then click the little “Add” button at the bottom of the “Other Calendars” area, and choose “Add by URL”.

This brings up the dialog box that lets me add the calendar, and I paste in the URL I copied before, and just edit the first part to be “https”:Add Calendar by URL

Since it’s already a public calendar, I didn’t check that box, although I’m thinking that makes it a public calendar on Google, which might make it easy to find with Google.  At any rate, now the calendar shows up for me both on iCal and Google (obviously it would work in Outlook as well had I followed the original link).

Google calendar with March MadnessiCal with March Madness

One of the things I always struggle with as a project manager is how to communicate availability. If I’m using a corporate email system like Exchange, it is extremely easy to set up calendars to be shared, and everybody using that system has the ability to at least see your free/busy status which helps in setting up meetings.But when you’re dealing with a disparate group, who don’t have access to the same information, figuring out meetings can be difficult. I manage some of this complexity with tools like Plaxo and MobileMe, which allow you to keep calendars in synch across a variety of calendar systems, including Google, Yahoo and even the local calendar application.

This doesn’t solve the problem of how to check on availability however. What I’ve always found most effective inside the corporate firewall is to make my calendar public, and to ask my team members to share their calendars as well. This allows me not only to quickly schedule meetings, but gives me insight into what sorts of meetings my team is scheduling, and how they are managing their time.

So, on the outside of the firewall, I have started using Google Groups and Google Calendar to acheive some of the same effect. First I set up a Google Group to give me an alias for the team. It also gives us some basic collaboration tools, web access to messages, and a place share files. Then I set up a Google Calendar with the same name as the Group. There’s no requirement to do this, but it’s convenient to have a calendar where you can put group events, and keeping the name consistent makes life easier.

Once you have a group calendar created, it will show up in your calendars list along with any other calendars you have created. If you added the group email alias to the sharing list during creation, then everybody in your group will have been notified that they have access to the calendar. Alternatively you could simply email all of the individuals in the group.

Once you have the members in the group, you can share your calendar with them by using the “Share Calendar” by choosing it from the menu that pops up when you click on the little inverted triangle next to your calendar (in this case I’m sharing my personal calendar, you would do the same for the group calendar):

Share Calendar menu item

Once you choose this option, you will be taken to the “Share this Calendar” tab of the settings for that calendar:

sharethiscalendar.png

First thing that I do is to make sure the “Make this calendar public” check box is ticked, this allows your calendar to be seen by others. You can also set the “Share only my free/busy information (Hide details)” tick mark if you want to hide the specifics of your calendar.  Once that is done, everybody can see my calendar.

Even if you don’t make your calendar public, you can send an invitation to share your calendar, by typing in an email address. So to notify your group that they can access your calendar, you can either invite them individually, or type in the email address of the group.

They should then get a nice invite from Google Groups that tells them your calendar is available, and can add it to their “Other Calendars” list.

other calendars

The calendars in this list get added to your calendar with different colors, so at a glance you can see what events go with which calendar. You can toggle which calendar events display by clicking on the name of each calendar (when the background is white, the events are not show). Below is a shot of my calendar with the group and Laura’s calendar showing:

calendar display

As you can see, Laura chose to share only her free/busy time, so all I see is that she’s busy between 5 and 6:30

The last step is to ask for access to your team member’s calendars. To do this you click on the “Add” link at the bottom of the “Other Calendars”.

addafriend.png

This takes you to the screen where you enter the email address of the person that you’d like to ask for access to their calendar. If the address isn’t a GMail address, it will also prompt you to invite them.

enteremail.png invitefriend.png

Once they have accepted, you will have access to their calendar, and it will appear in your “Other Calendars” list (as Laura’s does in mine).

Because the group and calendar are not integrated, you will have to add any new members (or change or delete) in both places, but in essence this gives you access to what you need to help make meeting scheduling easier.

Enhanced by Zemanta