Q: What is the elmcity project?

A: It’s a web service that:

  • Collects online calendar events for geographic or topical communities
  • Merges information from many sources: Eventful, Upcoming, Eventbrite, and iCalendar feeds published by popular calendar programs
  • Creates network effects using iCalendar (ICS) feeds, in the same way that blogging and microblogging systems create network effects using RSS, Atom, and Twitter feeds.
  • Does not store events in a centralized database, but rather operates as a hub that merges streams of events and republishes the merged result in a variety of formats.
  • Is managed by one or more curators in a community, on behalf of everyone in the community.
  • Runs on, and demonstrates the capabilities of, Microsoft’s Azure platform.

Q: How do I become a calendar curator for my community?


A: Follow these three steps:

  1. Designate a Delicious account for this purpose. If you already have one, you can use that. If not, create one.

    The account that manages the Fredericksburg, VA collector, for example, is aroundfred.

  2. Log in to the account, click Save a bookmark, and enter your version of the information shown here:

    So, for example, if your account was duxburycals and your location Duxbury, MA, you would say:

    1. URL: http://delicious.com/duxburycals
    2. TITLE: metadata
    3. TAGS: elmcity where=duxbury,ma

      There are two tags here: “elmcity” and “where=duxbury,ma” — the second one is written with no spaces, and looks like more than one tag, but is really only a single one that works as a name/value pair.

  3. Send me an email to let me know you want to start up an instance of the collector for your location. I’ll probably already know about it, because I scan for bookmarks tagged with elmcity, but I’ll be glad to hear from you and to answer any questions you may have.

With just this minimal setup, the service will find and merge events for your location from Eventful and Upcoming. But you’ll also want to include iCalendar feeds for schools, businesses, sports clubs, cultural venues.


Q: Where do I find iCalendar feeds?

A: This is a major challenge, and also an exciting opportunity. Although there seems to be a lot of calendar information floating around on the web, most of it isn’t usefully available. Web pages and PDF files are much more common than iCalendar feeds. But those formats cannot be read, processed, and syndicated in the ways that iCalendar feeds can be.

The central goal of this project is to light up iCalendar feeds that could easily exist on the web, and should, but don’t.

Here are some strategies:

  1. Create some feeds yourself.
    Maybe you coach a youth soccer team, or run a local restaurant that features musical performances, or participate in a birdwatching club whose hikes are open to the public. You can, and should, and maybe already do publish a web page about these events. But you probably don’t publish an iCalendar feed.

    Here’s the strategy: Maintain the calendar information in a program like Outlook, Google Calendar, or Apple iCal. That way, you can publish your calendar to the web in HTML format for people to read, and simultaneously publish in ICS format for syndication. Here’s how to do that for Outlook 2007, Google Calendar, and Apple iCal.

  2. Turn existing web pages into feeds.
    Curators are having good success with a service called FuseCal, which can translate many (but not all) calendar-like web pages into iCalendar feeds. For example, the curator for Huntington, WV found this web page which publishes the schedule for the Appalachian Film Festival. FuseCal was able to read the page, figure out the implicit structure — dates, times, event titles — and produce an iCalendar feed that’s included in the set of feeds for Huntington.

    Update: The FuseCal service, sadly, shut down in July 2009.

  3. Light up existing feeds.
    In a number of cases, people are publishing web calendars without even realizing that they are also publishing iCalendar feeds. This happens most often with Google Calendar. Consider WV Get To Know Your Neighbor. The site uses Google Calendar to publish an events page. Unbeknownst to the site owner, there is an ICS link that corresponds to that calendar. The link is:

    http://www.google.com/calendar/ical/get2knowyourneighbor@gmail.com/public/basic.ics

    Given the email address associated with any Google Calendar, you can produce an iCalendar link of this form. The Huntington WV curator did so, and as a result the Get To Know Your Neighbor calendar is now included in the set of Huntington feeds. If you don’t know and can’t easily find the email address associated with the calendar, just ask the site owner.

    Another source of existing feeds is Drupal, an open source content management system. In Keene, NH, for example, the Hannah Grimes coop runs its website on Drupal, and publishes a calendar. Unknown to the site operator, there was a corresponding iCalendar feed: http://www.hannahgrimes.com/ical.

  4. Invite individuals, groups, and organizations to publish feeds.
    As a calendar curator for your community, you can explain how to do this, and why it matters. Sometimes a small intervention can produce a large effect. The Keene, NH school district, for example, did not realize that calendar syndication was possible. When I met with the school board, I learned that it’s in the process of selecting a new content management system that will, among other things, manage calendar information for all the schools. I pointed out that the ability to export iCalendar feeds should be a requirement, and the board agreed. It’ll take six months or a year to deploy the new system, but when that happens, a rich source of iCalendar feeds will come online.

    In general, you’ll want to look for the systems in your community that are currently managing calendar information, and investigate whether they are capable of exporting iCalendar feeds — either natively, or by means of an add-on. A Virginia school district, for example, is migrating to Microsoft SharePoint, and will be managing its calendars there. That system doesn’t export iCalendar feeds out of the box. But the Community Kit for SharePoint offers a module that adds the capability.


Q: Why should people care about publishing iCalendar feeds?

A: For two major reasons:

  1. Personal information management
    When you publish an iCalendar feed, people can subscribe to it from their personal calendar programs: Outlook, Google Calendar, Apple iCal, others. They can see public events (the soccer game, the musical performance) as overlays on their personal events (the dentist appointment, the birthday party).
  2. Social information management
    When you publish an iCalendar feed, it can syndicate to one or more services like the elmcity collector. A comprehensive view of what’s going on in a town or neighborhood can therefore emerge without any central management or control. Individuals, groups, and organizations can write down their event information once, and have it propagate through the syndication network without loss of fidelity or control.


Q: OK, I’ve found or created some iCalendar feeds. How do I get the collector to collect and process them?

A: You bookmark them in Delicious. Here are a couple of examples for Providence, RI, which uses the Delicious account mashablecity:

The RI Council for Humanities feed was created using FuseCal. It was bookmarked like so:

The URL is the address of the iCalendar feed.

The title will be cited as the source of all events flowing from this feed.

There are four tags:

  1. feed: This tag identifies the bookmarked URL as a feed.
  2. ics: We specify ICS to distinguish this feed from other formats (e.g. XML) that might exist.
  3. trusted: This tag indicates that the curator trusts the feed as a reliable source of legitimate events. Since all three of these tags are required, removing the trusted tag effectively revokes trust, and will prevent a feed’s events from being included in the merged outputs.
  4. url=http://www.rihumanities.org/calendar: This tag provides a “home page” for events from this feed. It’s the link that people will follow to find out more about any event from this source. In some cases, events in an iCalendar feed provide direct links to information about specific events. If these exist, they’ll be used. But often they don’t exist, so this “home page” link provides a default.


Q: How can I customize the collector for my location?

A: Using Delicious tags, again. There are two kinds of bookmarks used to manage an instance of the collector:

  1. The metadata bookmark. That’s the one that refers to the URL formed like so:

    http://delicious.com/ACCOUNTNAME/metadata

    There’s only one metadata URL per location.

  2. Feed bookmarks. These are the ones that refer to iCalendar feeds. There can be any number of these per location.

In the minimal setup shown above, the metadata URL only used one tag:

where=fredericksburg,va

But there’s a set of defaults that you can override by adding additional tags. They are:

tz=Eastern
title=event+calendar
contact=nobody_yet
img=http://elmcity.blob.core.windows.net/admin/keene-night-360.jpg
css=http://elmcity.blob.core.windows.net/admin/elmcity.css
template=http://elmcity.blob.core.windows.net/admin/events.tmpl
lat={computed from where}
lon={computed from where}
radius=10

tz: If you’re in Utah, you’d add the tag tz=Mountain.

title: If you’re in Providence, RI, you might change this to title=events+in+and+around+providence. The title appears in the default HTML rendering of the merged calendar.

contact: The Providence curator is Matt Gillooly, so he used the tag contact=matt@mattgilloly.com.

img: This is the header image for the default HTML rendering. Matt Gillooly changed his from the default by specifying img=http://mashablecity.org/elmcity/providence-waterfire-header.jpg.

header_image: Default is yes, include a header image. But if you’re sourcing the HTML rendering into a page that already has one, you’ll want to omit it like so: header_image=no.

css: This is the CSS stylesheet for the default HTML rendering. Change to suit your taste.

template: This is the template for the default HTML rendering. You can point to an alternate template that radically alters the default rendering.

lat, lon: The latitude and longitude for your location are automatically derived from the location specified in where=LOCATION. But you can override the computed defaults here.

radius: When the collector scans Eventful and Upcoming for your location, it defaults to a 5-mile radius. You can change that here.

facebook: The default is no, because Facebook’s public search API can yield surprising results, but if those results work for you, you can include like so: facebook=yes.


Q: What tz= values are available?

A:

afghanistan
alaskan
arab
arabian
arabic
argentina
atlantic
aus+central
aus+eastern
azerbaijan
azores
canada+central
cape+verde
caucasus
cen.+australia
central+america
central+asia
central+brazilian
central+europe
central+european
central+pacific
central
central+(mexico)
china
dateline
e.+africa
e.+australia
e.+europe
e.+south+america
eastern
egypt
ekaterinburg
fiji
fle
georgian
gmt
greenland
greenwich
gtb
hawaiian
india
iran
israel
jordan
korea
mauritius
mid-atlantic
middle+east
montevideo
morocco
mountain
mountain+(mexico)
myanmar
n.+central+asia
namibia
nepal
new+zealand
newfoundland
north+asia+east
north+asia
pacific+sa
pacific
pacific+(mexico)
pakistan
romance
russian
sa+eastern
sa+pacific
sa+western
samoa
se+asia
singapore
south+africa
sri+lanka
taipei
tasmania
tokyo
tonga
us+eastern
us+mountain
venezuela
vladivostok
w.+australia
w.+central+africa
w.+europe
west+asia
west+pacific


Q: How do I categorize feeds and events?

A: On a per-feed basis, if all of the events from a feed can be categorized, you can name that category in the Delicious metadata, using category=CATEGORY. All events from the feed will inherit it in the same way that they all inherit the default clickthrough link specified with url=URL.

On a per-event basis, if events in the iCalendar feed use the CATEGORIES property, it’ll come through automatically.

On a per-event basis, the Description field can also use these patterns anywhere in the text:

url=http://www.harlowspub.com

category=music,bluegrass


Q: How do I view categorized events?

A: All the formats accept a ?view= parameter. So for example:

http://elmcity.cloudapp.net/services/elmcity/html?view=government

http://elmcity.cloudapp.net/services/elmcity/rss?view=music


Q: Why Delicious?

A: It’s just a convenient way to manage metadata about locations in a way that’s transparent to all involved.


Q: Where do curators hang out?


A: We are currently using the FriendFeed room friendfeed.com/rooms/elmcity. The room subscribes to the following sources:

Feel free to join this FriendFeed room. But there’s no need to do so. You can monitor activity there, or subscribe to its RSS feed, without having to register and join.

16 Responses to “elmcity project faq”


  1. [...] software or develop software. I barely do scripting. however Jon Udell is big on prototyping and showing full examples of how a Social Bookmarking service like del.icio.us could be adapted to the purpose of aggregating [...]


  2. [...] in another, more comprehensive aggregating calendar. (A great example of this is Jon Udell’s Elm City project; in an academic context, see Jim Groom’s Aggregating Google [...]


  3. Clever stuff Jon Udell, not really taken in the full extend of what you have created yet but I’m interested to see if we can use it in the UK.


  4. [...] a combined calendar of Free Webinars. The really nice thing about the way Jon Udell has set up his elmcity project (the system we are using) is that it acts a lot like social curation on RSS sources as provided by [...]


  5. [...] example aggregation, I have used the free “the elmcity calendar curation project” (See elmcity project FAQ for more details. Jon Udell’s support has been fantastic, even though he knows that I am just [...]


  6. [...] Another example of the reading list/shared curation pattern is exemplified by Jon Udell’s elmcity project, which allows for separately maintained calendar feeds to be managed and aggregated using the Delicious social bookmarking tool (e.g. Collaborative curation as a service, elmcity project FAQ. [...]


  7. [...] some clever technology by Jon Udell at the Elmcity Project, the calendar is assembled by drawing on external sources. At the moment, any Berkeley event that [...]

  8. Chris Smith Says:

    John, can you point me to a set of best practices for category tagging for ICS feeds?

    The City government in Portland, Oregon is working on an open data project and I’d like to encourage them to make ICS feeds a part of the effort, but am trying to sort out how citizens could filter and parse the hundreds of meetings and events that would show up in the City’s feed.


  9. [...] discussed issues ranging from Open Cities and Journalism to Jon Udell’s Elmcity project. The last session of the conference focused on the winners of the CityCamp Challenge, [...]


  10. [...] in creative ways. The second session, by Jon Udell on the seemingly innocuous (to me) topic of event aggregation, who elmcity project opened my eyes to the enormous social bonding potential of properly tagged RSS [...]


  11. [...] elmcity project FAQ [...]


  12. [...] championing of the iCalendar standard –  a date and place as demonstrated by the  the elmcity project supporting calendar curation and aggregation. Shared context enables the making of new connection, [...]

Leave a Reply