We had a productive code sprint as part of the PDX11 Hackathon.


Roy Martin, Daniel Hedlund, Bart Massey, Selena Deckelmann, Leif Warner, William Van Hevelingen, Kirsten Comandich, Dunbar Aitkens, Mary Anne Thygesen, Reid Beels, Audrey Eschright and Igal Koshevoy.


  • Added mobile interface to improve user experience on devices with small screens. The new interface puts the most useful information at the top and makes better use of screen real estate, reflows text for graceful zooming, and hides infrequently-used features behind click-to-expand controls.
  • Improved iCalendar exports and feed to include the venue’s address and Calagator source URL.
  • Updated to Hpricot 0.8.4 library, which should eliminate or reduce segmentation faults, primarily encountered in tests.
  • Fixed missing “bundle exec” references in documentation and webadmin service.
  • Improved documentation to explain the search engine service ports used, which need to be firewalled.
  • Fixed “Cinderella event” handling, so events ending at midnight aren’t shown as part of the next day’s listing.
  • Added per-event venue details field, for describing the room used and other event-specific information.
  • Improved Plancast importer to add machine tags to the event, so that their RSVPs and links are immediately available.
  • Confirmed that all index and show actions can emit XML and JSON for those consuming our data.
  • Fixed test suite to eliminate non-deterministic behavior caused by state leaking between tests.
  • Fixed tests so they don’t access the network and fail.
  • Refactored views that display subnav menus by extracting common logic into helpers.
  • Removed custom geocoder keys in hopes of simplifying setup — only to have to revert these changes because the keys are still needed for displaying maps on anything other than “localhost”.
  • Updated “Code” link in header to point to github.
  • Removed unwanted files that were accidentally checked in.
  • Added a custom iCalendar “prodid” value. Unfortunately, the patch to populate this with Unicode 6.0 glyphs of a crocodile, a calendar, and a happy-snowman-wearing-a-fez were rejected. This decision may need to be reconsidered in the future.

Closed completed issues

  • Issue 434: Review and merge rical_remodel branch.
  • Issue 443: Recent changes feed should link to both the change log entry and actual entry.
  • Issue 357: Deleting sources should delete their associated events and children.
  • Issue 424: Refresh version shouldn’t throw an exception.
  • Issue 423: Calagator should be able to export events to Google Calendar.
  • Issue 306: Submit patches to acts_as_versioned.
  • Issue 316: Consider adding version number to iCalendar export.
  • Issue 196: Fix acts_as_solr, make it log to a file.
  • Issue 401: JSON should be supported by all controller actions.
  • Issue 436: Solr’s admin port should not be publicly accessible.
  • Issue 447: Import Plancast events.
  • Issue 191: Submit patche to acts-as_solr that make it work.
  • Issue 397: Timezone in settings should be used.
  • Issue 24: Include venue information in iCalendar exports.
  • Issue 339: User should be able to create a new event from an old one.

Added and updated issues

  • Updated Issue 387: Add JavaScript widgets and usage instructions.
  • Added Issue 450: Write guide with per-platform installation instructions.
  • Added Issue 451: Add per-item duplicate squasher.
  • Added Issue 452: Add fuzzy venue search.
  • Added Issue 453: Improve the import system.
  • Added Issue 454: Migrate to Ruby on Rails 3.

Thank you for your contributions and support!


We had a Calagator code sprint this weekend at Recent Changes Camp, an unconference about wikis and related topics. Wikis have strongly influenced our design decisions (all events and venues are freely editable by all users, and changes are tracked so you can see what’s been edited), so it’s very cool to hear Wikipedia editor Steven Walling describe how our support for the Universal Edit Button sold him on Calagator. Listen to him talk about this in a short video recorded during RCC09.

We made good progress at Saturday’s sprint. Perhaps the most exciting bit of news is that Igal’s “with_theming” branch has now been merged into the main code. This means that Calagator now has support for other groups using our software in their own communities, with custom text and styling.

Before this, people had to edit out the Portland-specific parts by hand. There are already users in Sweden and Vancouver, BC running their own Calagator instance, and this update makes the process much easier. We’re working on fleshing out the documentation, but take at look at the theming README to get started.

Other documentation on how to install, use, and contribute to Calagator is available on our Google Code wiki.

Happy Birthday Calagator!

January 19, 2009

First Birthday Cake

Today Calagator is one year old. From the mailing list report on our first code sprint:

Update for 1/19 (first meeting): Today several of us met during the Code Sprint gathering at CubeSpace to talk and work on the calendar. … The first draft of the application is available at http://calagator.org/

In just one meeting we had a working application with basic features. Since then we’ve fleshed it out substantially, but of course there’s so much more to do. Please join us for a first birthday code sprint and party afterward, on January 24th, to celebrate how far we’ve come from “wouldn’t it be nice to have a community calendar anyone could edit?”, and build toward future awesomeness.

As we’ve been working on Calagator, I’ve told people “we want you to be able to have a calendar with only the Ruby and beer events if that’s what you like” as our goal for tagging, search, and feeds. This weekend we accomplished that goal. Now, if you enter a search term into the box in the upper right corner of the page, you’ll be offered Atom and iCalendar feeds to subscribe to. It’s a proud moment.

OSCON attendees might like to try this OSCON search.

With this update, we’re most of the way to our 1.0 milestone. The remaining items are recurring events, and creating a Calagator user guide to share with our user communities, both of which we’ll be tackling at future code sprints. And of course there are always bugs. You can help us as always by using Calagator, entering your events, and letting us know of any problems via Get Satisfaction and our issue tracker.

First up: we have a new design! You can see it in its full green glory at the usual place, calagator.org.

Our two meetups last week accomplished a lot. Some little things, some bigger (like the design). We’re continuing to struggle with our iCalendar & hCalendar tools, mofo and vPim. Mofo had a bug that was preventing postal codes from being read accurately. We now have a one-line patch that fixes this. A note to other open source developers: make it easy for people to find out about known bugs and send you patches when we encounter one! It’s very frustrating to lose half a day of work to something like this. We want to keep the ‘many eyes’ principle working.

All event pages now have a “Add to Google Calendar” link in the right sidebar, in addition to the previous iCal download link. This way you can send individual events to your personal calendar. There’s still also several ways to consume the entire events feed from the main events page.

We did more work on our duplicate event and venue management pages. You can get a sneak peek: events page & venues page. Help us out by spending a few minutes gardening duplicate entries.

You can see the full list of squashed bugs and other work on our wiki: http://code.google.com/p/calagator/wiki/StatusReports
Keep reporting any bugs you find to the issue tracker: http://code.google.com/p/calagator/issues/list

Update: One thing I left off—we started re-importing sources that have been flagged to request that. You can tell us to do this for your group’s calendar by checking the “re-import” box when you submit the url at http://calagator.org/sources/new.

We’re going to meet twice this week. Wednesday we’ll do another mini-sprint at Backspace (downtown on NW 5th), starting at noon. Come have lunch and work on bugs. Then on Saturday, we’ll meet at CubeSpace for our regularly scheduled code sprint at 10AM. We need to get the duplicate-entry management tools polished and ready for public use, and start importing and updating events on a recurring basis so users spend less time manually importing everything.

As a reminder, our meetings are open to everyone. Programmers (at any level of Ruby experience) and web designers are especially needed, but anyone can test the site, write documentation, and work on figuring out what’s left to do so we’re importing all calendar events for groups in the Portland tech community.

Despite lovely spring weather on Saturday, a small group gathered for our regular code sprint. We did get a little outside time by having lunch on the patio at Produce Row.

Changes you might notice:

  • The events pages now have a link to get an hCalendar version of the event. You can copy and paste this into your own blog or webpage, to display the full event details as well as sharing the microformat love.
  • We’re continuing to work on management of duplicate venues and events behind the scenes. You might see more of these merge as we test the new functionality.
  • We did some pre-emptive sanitization of displayed data. No one has tried to do anything crazy or malicious with the event or venue fields yet (except us, for testing purposes), but this is a good problem to take care of now, before it’s a serious issue.
  • You might have seen a bug where not putting an end time on an event raised an error. We don’t want to make end times mandatory, so that’s fixed now too.

If you spot a bug while you’re using the site, please report it. We test things as well as we can, but there’s always something that slips through.

Next Code Sprint: 4/12

April 10, 2008

We have our next code sprint this Saturday, 4/12. We’ll start at CubeSpace at 10AM, in our regular spot. Possible projects for this week include: fixing bugs, UI improvements, making the duplicate-squashing tool we’ve been quietly testing ready for public use, and importing more events.

We’ve also been meeting Wednesday lunchtime/afternoon at Backspace, and this seems likely to continue. Even if only a few bugs get finished before we have to get back to our regular work, it’s a fun chance to hang out and chat and hear the latest Calagator news.

Since we canceled our regular Saturday code sprint last week to attend Startupalooza, Calagator volunteers gathered for two mini-sprints Wednesday and Thursday to address bugs and some small enhancements.

A few highlights:

  • We created a bookmarklet to make it as easy as possible to import single events from pages containing hCalendar markup. To try it, go to our import page, drag the Add to Calagator link into your browser toolbar, then go to an event page on Upcoming, and click the bookmarklet link. It’ll take you back to the import page with the event url added to the form.
  • The import form also has a ‘re-import’ checkbox now. This is for you to let us know whether the page you’re importing should be checked again later for additional events and updates. The feature isn’t fully implemented yet, but we’d like to start collecting that information on event sources now.
  • We also fixed various bugs in the import process, event time selection, and other areas. If you want to know what we’re working on, or report an issue, visit our bug tracker on Google Code.

Code Sprint Reminder

March 14, 2008

We’ll be meeting again this Saturday (that’s tomorrow, the 15th) to continue work on Calagator. Igal and Reid have been working on duplicate entry squashing code, so hopefully we’ll make some progress on that issue. There’s also a need for people to help seed the database, importing events from Upcoming and other services. We’ll be in our regular spot at CubeSpace, starting at 10AM.

Also, our planned meeting on the 29th overlaps with Startupalooza, so we’ll take that week off and return on April 12th.