My favorites | Sign in
Logo
          
Search
for
StatusReports  
Code Sprint Status Reports

February 21, 2009

We had a successful code sprint at Recent Changes Camp. We got lots of work done and spent time during the sprint and afterwards telling people about Calagator.

PARTICIPANTS

Lance Albertson, Reid Beels, Joe Cohen, Amy Farrell, Jesse Hallett, Igal Koshevoy, Leif Warner, and first-time participants Colin Curtin, Dhananjay Keskar, Bart Massey, Phil Tomson.

RESOLVED

The following changes have been merged into the main Calagator code base and deployed to production:

  •  Issue 380  "Merge with_theming branch" -- This makes it possible for people to run their own personalized instance of the Calagator platform.
  •  Issue 375  "upcoming.yahoo.com's imported events should not contain excessive linebreaks" -- We also refactored a dozen duplicated methods in our code that formatted things like descriptions.
  •  Issue 384  "Merge dependency changes" -- This eliminated many bundled libraries and moved them to gems, and upgraded RSpec. WARNING: This change broke the environment and it's impossible to run the app without making some extra, undocumented changes -- these must be addressed and the documentation fixed soon as part of  Issue 381 .

BEGAN

  •  Issue 381  "Fix documentation for setting up the application"
  • Issue 382 "Improve documentation of with_theming branch"
  • Issue 383 "Specs should be written for the with_my_events branch"
  • Issue 385 "Provide widget for displaying Calagator events on another site"

Thank you all for coming and helping out!

January 31, 2009

Audrey, Reid and I had an impromptu meeting tonight. We went through the patches submitted at and since the code sprint. Now that we've tried this process out, we'll likely post public invites to future ones.

CONTRIBUTORS

Thanks go to the following for submitting these patches: Jesse Hallett, Ben Kerney, Scott Becker, Igal Koshevoy, Reid Beels, Audrey Eschright, plus those that assisted with debugging, research and pair programming with the committers.

ISSUES RESOLVED

We accepted patches to close the following issues and deployed these to production:

  •  Issue 362 : Description should be parsed from current Upcoming (v4) hCalendar implementation
  •  Issue 326 : Tags should be squashable
  •  Issue 363 : Search-based iCalendar feed and file do not filter by query
  •  Issue 168 : Event start time should provide a default end time in the new event form
  •  Issue 371 : Calagator.org should run off the git repository, with appropriate deploys/rollbacks
  •  Issue 364 : 'Export to Google Calendar' option produces no events in Google Calendar
  •  Issue 368 : Link to venues dupe squasher in /about copy is incorrect
  •  Issue 346 : Site should have an Apple touch icon
  •  Issue 355 : Search results page should explain how the viewed results are sorted
  • Issue 367: Sorting search results by Location or Event Name should be case-insensitive

PROCESS IMPROVEMENTS

This session for building a new stable release went very well. In the past, we had many people committing finished and unfinished code into trunk, and then had to figure out how to identify streams of development, roll back individual commits or fix them, and there was much pain because each commit affected others after it, thus an error in one commit would cascade to others and often require immediate fixing. However, with the new model of using Git and having changes submitted as patches, it was very easy to understand what was being changed, and then either apply, tweak or defer the submitted solution. Also having multiple people participate in the discussion of accepting patches these made this process easier and more enjoyable.

Thank you for all the patches, we really appreciate it!

-igal

January 24, 2009

First anniversary code sprinters were: Audrey Eschright, Bob Langill, Igal Koshevoy, Jason Starlin, Jeremy O'Leary, Jesse Hallett, Joe Cohen, Lance Albertson, Morgan Senkal, Neil Shargel, Reid Beels, Scott Becker, Simon Chiang (visiting from Denver), Leif Warner.

We reviewed the new process for contributing to the source code. We discovered an issue with how patches are emailed. We reviewed some pending patches.

Reid spent hours helping out others, including figuring out how to convert Joe's advanced search branch from his computer and SVN to github and git. (Help from Lance.)

Igal, Lance, and Leif began work on porting theming support form OS Bridge to Calagator.

Scott and Reid fixed made tags squashable ( Issue326 ) and submitted a patch. Enhanced event edit UI

Jeremy began work on exporting calendar information from Drupal to hCal.

Audrey, Jesse, and Simon worked on: (a) parsing the description from the latest iteration of Upcoming (v4) hCalendar implementation ( Issue362 ), and (b) search-based iCal feed and file failing to filter by query ( Issue363 ), and submitted patches for both issues.

Jason, Morgan, and Neil explored Calagator and began to configure Morgan's machine.

December 20th, 2008

Huge thanks to our code sprinters that braved ice, snow, and howling winds of the Snowpocalypse: Steve Morris, Ben Hengst and Igal Koshevoy.

MY EVENTS, LISTS, OTBC

I had a long talk with Steve Morris of OTBC about his workflow and how we can make Calagator more useful to him. Many of the things that will help him may also be very useful for folks like Rick Turoczy and Amber Case that publish lists of selected events.

The "my_events" branch has a number of valuable features that we can use and expand upon:

A. MY PERSONAL EVENTS
  1. User should be able to declare if they're planning to go to the event. The status can state that "I'm going", which is not an "RSVP" because Calagator events have no owners.
  2. User should be able to see a list of events they've declared an "Are you going?" status for.
  3. User should be able to subscribe to a feed of events they're planning to go to.
  4. User should be able to provide tags and search keywords that they want to include and exclude events. E.g., highlight "Ruby" events, ignore "bacon' events.
B. MY EVENT LISTS
  1. User should be able to create their own named lists of events. E.g., Amber might create a list called "Amber's cool tech events".
  2. User should be able to view a named list's events and use it as HTML, ATOM, XML, JSON and ICS.
  3. User should be able to share a named list with others through a special URL. E.g., other users can then subscribe to iCalendar feed of Amber's events, or write an app to parse the JSON event data for the "Oregon Startups Calendar" list to display it on a website.
  4. User should be able to add and remove a event to a named list of events.

A possible UI for adding events to lists and marking whether you're going could appear in the "show an event" sidebar like this:

        Are you going?
        [X] Yes / Maybe / No
        Details...

        Add to list:
        [X] Oregon Startups
        [ ] OTBC
        Create list...

FINISHED WORK

  •  Issue 332 : Reimport checkbox should mark a source for reimporting
  •  Issue 40 : iCalendar downloads and subscriptions don't respect filtering
  •  Issue 335 : Index and search should use render formats using common code

The solutions to  Issue 40  and  Issue 335  significantly improve the ease of interoperability for other applications that want to retrieve Calagator data by providing common HTML, ATOM, XML, JSON and ICS data generation and filtering.

NON-SPRINT COLLABORATION

We briefly discussed how we could help make contributors productive outside of sprints. The idea of creating simple, clear, well-documented tasks in the issue tracker that people could work on was suggested. This has since been implemented with the "simple" tasks at:

http://code.google.com/p/calagator/issues/list?q=label:Simple

NEXT SPRINT

It's unclear when the next sprint will be given the weather and holidays.

December 4, 2008

Participants: Audrey Eschright, Igal Koshevoy, Joe Cohen, Leif Warner, Reid Beels, Bryan Stearns, new code sprinter Ben Hengst, Anselm Hook, and Amy Farrell.

We continued with our discussion of how to handle recurring events and resolving our issues with the VPIM iCalendar parser.

LIBICAL WITH RUBY

Igal gave an extended demo of his work with "libical_with_ruby", a fork of the C-based libical library with Ruby bindings and wrapper. This fork provides low-level one-to-one bindings of libical's C functions to Ruby methods, and a high-level object-oriented wrapper for providing easier, idiomatic Ruby access. Using these, it's easy to write Ruby code to parse a string of iCalendar data and access the components and properties within.

Unfortunately, although libical is well-written, it's hard to work with. It doesn't provide a way to access properties that aren't explicitly defined in the C code, which is a major problem because it prevents us from parsing popular non-standard calendars offered by Upcoming and others. It doesn't support VVENUE or VCARD adequately, which impedes our ability to create venues. It makes it difficult to get the GMT time for dates by demanding tricky backtracking. It will be a nightmare to compile bindings on Windows. Dealing with of these issues will require significant changes to libical's C code and these will likely not be accepted back by its maintainers, forcing us to maintain our own libical fork. Given how much effort this may all take, it was decided to reconsider alternatives.

We then split into teams:

VOBJECT

Researched VObject: A Python-based library used by the Chandler Project. Easy to used, documented, and included tests. Provides easy access to unknown fields, offers sensible recurrence, parses VCARDs and VVENUES. All seems well ... except it's written in Python. Could be used if (1) ported laboriously to Ruby, (2) invoked as-needed via backticks, (3) run as a daemon and accessed via TCP/IP, (4) run as Java daemon like Lucene and accessed via TCP/IP, or (5) run as Jython application on Java and port current Rails app to JRuby so that it can talk directly to Jython. None of these approaches are quick or appealing.

RUNT

Researched Runt: A Ruby Gem that provides a way to define and retrieve recurring event series. It may be a good way to for representing recurrence internally within Calagator. If paired with some library that can just extract the iCalendar data fields like the RRULE, the Runt library be used to add recurrence support.

RECURRENCE UI

Discussed additional ideas for the user interface and added an end date or maximum number of occurrences to Andy's mockup of a working a Calagator input widget for recurring events

ICALENDAR PARSERS AND VPIM REVISITED

We had a long discussion after leaving CubeSpace to compare the pros/cons of:

  • Building our own iCalendar parser
  • Fixing/improve VPIM
  • Finishing the libical bindings
  • Integrating with VObject

We arrived at the conclusion that we should make an effort to rework VPIM before pursuing the other alternatives further.

Many of our issues with VPIM may be due to our insistence of writing workarounds for its bugs and shortcomings, and thus we're layering workarounds for workarounds rather than just fixing or improving the code.

Reworking VPIM has many advantages:

  • It's Ruby code
  • Doesn't require any compilation
  • Will be easier to maintain
  • Does everything we currently need (at least with workarounds)
  • Could be extended to support recurrence and venues (Reid already did some of this in the past)

Therefore, resolving VPIM's issues may be faster and easier than any of the other alternatives we've identified. While we're not committing to sticking with it, we'd like to spend at least a session trying to make it work.

The effort we've put into libical, VObject and VPIM libraries WAS NOT WASTED! Trying to find the best way to parse iCalendar data is a hard problem, and we had to look into these alternatives to be able to adequately understand the effort required to get these libraries to meet our goals.

VIRTUAL COLLABORATION

We spoke a bit about virtual code sprints and writing very complete ticket descriptions so that people could more easily complete tasks outside of sprints. The conclusion we came to was that if people describe these as blockers, then we'll pursue solutions specific to the requester's needs.

NEXT SPRINT

We'd like to have a code sprint on December 13th. Could try doing VPIM rework. Seems like there's growing demand for completing the "with_my_events" branch, which is mostly done other than for the specs, so this could be another focus.

November 15, 2008

Participants: Audrey Eschright, Igal Koshevoy, Joe Cohen, Amy Farrell, Leif Warner, Reid Beels, and new code sprinter Jeremy O'Leary (co-chair of Synergy)

We spent most of this day planning and researching how to provide recurring events, the last major unimplemented piece of v1.0.

Reviewed the iCalendar specification relating to recurring events. Discovered that the spec is quite involved and not something we want to implement ourselves if at all possible.

Reviewed how VPIM (library that Calagator currently uses) parses and creates recurring events, and it's poor to non-existent. It doesn't import EXDATE properties, creates an RRULE when none exists, does not expose details of RRULE objects, can't create RRULES for BY information (e.g. 1st Tuesday of the month). Given how many problems we've had with VPIM and how ugly the workarounds we've had to write to use it, hacking it to provide this support may be daunting and a poor investment.

we decided to spend time reviewing alternate iCalendar libraries that provide sensible support for parsing data, recurring events (including EXDATE and RRULE), locations and tags. We researched:

We added a new wiki page on RecurringEvents. This records the various specifications, issues and discussion for how to model recurring events in our system.

We also discussed with Jeremy the practices for getting CNRG calendars and events to work better with Calagator. (CNRG is the Community Non-profit Resource Group. Here is one of CNRG's daily digests ( http://cnrg-portland.org/digest/archive/167 ) which is a mix of event announcements, job announcements, internships, and general announcements.)

October 25, 2008

Participants: Reid Beels, Joe Cohen, Amy Farrell, Igal Koshevoy

Igal and Reid improved the time selector by improving the default start and end time options.

Amy and Joe worked on Google Calendar issues. Amy found and fixed a bug in Calagator's creation of iCalendar files. As a result, when one exports an iCalendar file from Calagator, the file can be imported successfully by Google Calendar. Igal created specs for this fix.

Done:

To-do:

  • Issue 311: We need to add more expressions to the blacklist.
  • Issue 306: We need to submit our fixes to acts_as_validated to its authors.

October 11, 2008

Participants: Reid Beels, Audrey Eschright, Igal Koshevoy, Joe Cohen, Leif Warner, Anselm Hook, Amy Farrell, and first-time participant Brian Felder

Added wiki-like versioning ( Issue298 ) by: adding acts_as_versioned plugin; creating version (backup) tables for Event and Venue; worked on the UI for reverting

Igal worked with Brian and Leif to get development software installed on Brian's machine.

Igal, Amy, and Leif worked on  Issue300  (Importing a source with an invalid hostname should cause a validation error) and added a variety of new flash error messages to differentiate various kinds of import errors. This process led to the (lengthy) discovery and fixing of a number of issues associated with importing from https:// urls, which Calagator was not handling properly.

Anselm and Joe worked on a possible UI for recurring events (Issue152).

September 20, 2008

This past Saturday was the 19th Calagator sprint, and the first one we've had since the big build up before OSCON.

We had a full house with eleven participants, including birthday boy Reid Beels, Ward Cunningham, Audrey Eschright, Igal Koshevoy, Joe Cohen, Gabriella Roth, Daniel Etra, Scott Becker, and first-time attendees Amy Farrell, Leif Warner, Ted Kubaska and Jeff Schwaber.

Some upcoming Calagator-related events were added or affirmed:

This sprint was very different than previous ones. Rather than coding, we decided in advance to spend the time writing text (which was MUCH harder than writing code) and discussing Calagator's future:

  • Wrote new text for the home page's "Hi there" section that introduces visitors to Calagator and how to use it.
  • Wrote new "About" page describing the project and its history.
  • Wrote new "Getting started" section describing the tasks that Calagator can help people perform. The text is written, but we still need to add some screenshots to clarify some items (ticket 292).
  • Wrote new "Get involved" section describing how people can become part of the project.
  • Watched Jeff Schwaber's demo of his prototype event registration system, which will be the focus of an upcoming code sprint.
  • Discussed sponsorship. Although some would like to add sponsorship opportunities to the site, the costs of running the site and paying for registrations are covered by Igal through Pragmaticraft, so there's no urgent need to seek funding, and the group can continue focusing on making the site better for its users.
  • Discussed how to credit sponsors and contributors. We'd like to add a section to highlight companies that provided us services, and individuals that contributed their time to the project.
  • Discussed how to interpret traffic to the site. Although there are progressively more hits to the site, it's already tracking almost all Portland-area tech events and Google claims 900 unique visitors per month, which may mean we're already reaching most of the people interested in such a site.
  • Discussed future of project in terms of how to support other kinds of communities. No conclusion was reached, but options discussed included:
    • Keep the site focused on Portland area tech events.
    • Make the platform easier to setup and write documentation so that other communities can run their own customized instances on their own.
    • Provide customized instances for other communities that we'll run for them in exchange for either an agreement, sponsorship or monthly fee.
    • Provide a fixed set of communities (e.g., Technology, Arts, Cycling, Investing, etc) where we create a limited number of fixed portals within the existing Calagator site. These portals would only be created if members of an interested community could promise to spend enough effort sharing events and promoting community building efforts to make sure that these calendars are successful.
    • Provide free-for-all communities where anyone can create a community calendar whose events are a composite of either cherry-picked events, or those with specific tags.

Although this session wasn't meant for programming, a number of issues were identified and fixes were deployed to production:

  •  Issue 294  - Events filter form should have narrower fields and not list the time but only date
  •  Issue 293  - Venue show page should use similar formatting to event show page
  •  Issue 284  - Venue details should always show the 'Future events happening here' section
  •  Issue 287  - Send/subscribe/export event(s) text should be clear and consistent
  •  Issue 289  - Change second-level event menu entry from "Import Events" to "Import Event(s)"
  •  Issue 291  - Import events page should be clearer about what it does and how it works

Thanks again to all those that attended. See you at the upcoming code sprints!

-igal

July 19, 2008

Today's code sprinters: Reid Beels, Joe Cohen, birthday girl Audrey Eschright, Igal Koshevoy, Markus Roberts.

The major improvements related to tagging:

  •  Issue 211  (Add tags to events and sources) - Audrey, Markus, Reid completed adding tags to Events, including displaying Tags on each event's show page
  •  Issue 242  (When exporting, Calagator should include tags)
  •  Issue 243  (Search is (was) only using the title) - The biggest problem (consuming half a day) was debugging searches so that they work on Event tags; finally solved by adding "OR" to the search string. Searching now searches in all fields.
  • Added ATOM feed for custom search results.
  • Added ICS export for search results, and UI for search result feeds.

Other:

  •  Issue 233  (Improve display of multi-day events) - We did a quick patch to make the display look like Calagator_overview_combined_Page_2.png. (We may make further changes after OSCON. Thanks to Bill Burcham and Garbrielle for their input. See the discussion at http://groups.google.com/group/pdx-tech-calendar/browse_thread/thread/13bf2472970748c5
  • Joe updated and retagged all issues with labels (e.g., "Component-tags"), which makes it much easier to to set labels and find issues related to them.
  • We also took some time to discuss FOSCON and staffing the Portland Ruby Brigade booth at OSCON

July 12, 2008

Our all-day code sprinters today: Reid Beels, Joe Cohen, Igal Koshevoy, and new code-sprinter and new PDX resident Markus Roberts.

We worked on new features:

  •  Issue166  - "Sources should have a UI" - Added basic list/edit/delete (Reid, Markus, Igal)
  • Issue221 - "Events and Venues should have tags" - Created backend and specs, and some UI (Reid, Markus)

And on the following issues:

  •  Issue231  - "Events should use end_time instead of duration" - Done, but required resolving a 4-way collision that took most of the day. (Igal, Joe)
  •  Issue220  - "MS Windows shouldn't fail URL tests" - Done. (Igal, Joe)
  •  Issue228  - "Inputting new venue to Event edit shouldn't raise exception" - Done. (Igal)
  •  Issue230  - "Migrations should run correctly on new database that doesn't have tag tables" - Done. (Reid, Markus)
  •  Issue216  - "Improve performance of application" - Added action caching to dynamically-generated CSS, reviewed queries. (Reid, Markus, Igal)

Thanks for the good work!

-igal

July 3, 2008

Our evening code sprinters were: Brian Artiaco, Reid Beels, Joe Cohen, Audrey Eschright, and Igal Koshevoy.

We made a lot of progress towards implementing the back-end portion of the tags system.

Since the last code sprint, we've completed the following:

  •  Issue31  - Finding duplicate by all fields should take into account NULL values
  •  Issue207  - Upgrade production server to Ruby Enterprise Edition and Phusion Passenger, and rewrite webadmin tool in Sinatra
  •  Issue223  - Events imported from Upcoming should not create duplicates due to venue normalization
  •  Issue224  - Events imported from an Upcoming iCalendar feed should each get their own venue
  •  Issue225  - Events imported from an Eventful iCalendar feed should have detailed venue information
  •  Issue226  - Events should be imported from an iCalendar feed that uses Windows style end-of-line markers

There's no code sprint this Saturday, but we plan to have some more full-day Saturday and Wednesday lunch code sprints in the coming weeks in preparation for OSCON.

Thanks for the good work and enjoy the holiday!

-igal

June 21, 2008

Today's full-day code sprinters: Reid Beels, Joe Cohen, Audrey Eschright, Craig Fisk, Igal Koshevoy

We spent the morning prioritizing and re-organizing the Issues to identify the ones we want to complete for Milestone 1.0; marked some issues as fixed, won't fix; etc.

After lunch, we started to fix some of the higher-priority issues including:

  •  Issue204  (The sort order of Event and Venue lists sorted by title should be case insensitive.)
  •  Issue209  (Creating event with blank venue throws exception)
  •  Issue205  (Export of an event using "Add to Google Calendar" fails for some sources of events)
  •  Issue155  (Long Event Descriptions Foil Google Calendar (Reminder) Integration)

We also undid the fix to

  •  Issue201  (Stop re-importing venue/event where geocoding changes venue attributes), and decided to solve this as part of fuzzy matching on import (Issue217 and Issue218).

June 18, 2008

Today's mini code sprinters: Reid Beels, Scott Becker, Joe Cohen We worked on  Issue201 .

June 7, 2008

The Calagator die-hards who used a gray day to skip the Grand Floral Parade: Scott Becker, Reid Beels, Michael Bunsen, Joe Cohen, Audrey Eschright, Igal Koshevoy.

The big news is that we can now search for events!

We finished and deployed the following:

  •  Issue107  : Implement search for events (Reid, Audrey, Michael)
  •  Issue186  : Improve text on import events page describing formats (Joe)
  •  Issue189  : Fix bugs in acts_as_solr so that it works (Igal)
  •  Issue188  : Switch server from Mongrel to Thin (Igal)
  •  Issue190  : Write recipe for automated install of Java for production (Igal)

Progress was made on:

  • Porting to Rails 2.1, but stopped because there seem to be serious problems with how it handles timezones and it also breaks RSpec.
  • Porting to PostgreSQL, mostly in an attempt to see if it handles timezones better, but stopped because of Mac OS X problems.

Thanks for the good work!

-igal

May 24, 2008

The Calagator die-hards who used a good-weather part of the Memorial Day weekend: Audrey Eschright, Reid Beels, Joe Cohen, Craig Fisk, and Igal Koshevoy.

There was lots of discussion about coding priorities. Coding work included improvements in duplicate prevention and squashing. We created many new tickets, and blocked some old tickets to replect those priorities. Fixed Issues included:

  •  Issue48  : Duplicate squasher should return you to where you were before squashing (Igal)
  •  Issue140  : Source spec file should describe how importing multiple duplicate events should create just one (Audrey)
  •  Issue158  : Importer should skip past events based on both their start and end time (Joe & Igal & Reid)
  •  Issue165  : Venue's 'events happening here' should not list duplicates (Audrey)
  •  Issue160  : Event filter-by-date should display events that start at 12:00am on the Start date (Audrey)
  •  Issue161  : Event 'Get hCalendar Markup' should work with jQuery (Audrey)
  •  Issue167  : Importer should skip previously imported squashed duplicates (Joe & Igal)
  •  Issue173  : Footer's source code version display shouldn't complain when run on platforms without the command-line SCM tools (Igal & Joe)
  •  Issue174  : Future event finder should be made into a common model method (Igal)
  •  Issue175  : Venue show page should display the 'Future Events Happening Here' section only if there are matching events (Igal)

May 10, 2008

Today's attendees: Audrey Eschright, Reid Beels, Bryan Stearns, Igal Koshevoy, and new developer Ben Kerney.

Work included:

  •  Issue121  (Bulk duplicate squasher should not display groups with only one member (massively refactored squasher to vastly simplify its code)) (Bryan)
  •  Issue124  (Finish source reimporter task) (Igal)
  •  Issue125  (Bulk venue duplicate squasher throws exception) (Bryan)
  •  Issue129  (Fix portland_to_utc helper because it throws exceptions) (Igal)
  •  Issue133  (Fix Mofo, it fails to import non-string nested fields like postal-code) (Igal and Ben)
  •  Issue134  (Fix gcal_reminder, it throws exceptions on events without venues) (Igal)
  •  Issue135  (Don't display old events on duplicate squasher) (Igal)
  •  Issue138  (Fix specs so that they do the most exact matches possible) (Igal)
  •  Issue139  (Fix tab highlighter, it stops highlighting when you drill down) (Igal)
  • Various fixes to specs and fixtures (Audrey and Ben)
  • All sorts of great UI work (Reid)

May 7, 2008

Because the April 28 code sprint was canceled, we scheduled a mini-sprint today. Our mini-sprinters were (in reverse alpha order): Bryan Stearns, Kevin Scaldaferri Audrey Eschright, Joe Cohen, Reid Beels

The coding included:

  • Issue95 (Add validation to Event email address) (Kevin)
  •  Issue110  (Improve "Get hCalendar markup") (Bryan)
  •  Issue116  (Add METHOD, UID, and DTSTAMP fields to iCal exports; works around bug in Outlook 2003 so that it can import ics files exported by Calagator) (Joe)
  •  Issue117  (Duplicate squasher should not allow squashing object into itself) (Reid)
  •  Issue119  (Titles of venues from Upcoming events should not include HTML escaped link) (Audrey)
  • Issue120 (Google Calendar shows incorrect iCalendar subscription title)(Audrey)
  •  Issue122  (Importing events from one calagator instance to another creates bad venue data) (Kevin)
  •  Issue123  (Item imported from link should point to external source instead of Calagator) (Joe)
  • Reid worked on a number of matters not in the Issue tracker.

April 12, 2008

Code sprinters: Ed Borasky, Reid Beels, Joe Cohen, Audrey Eschright, Craig Fisk, Bryan Stearns

Reid and Bryan worked on a number of issues relating to end time and event duration, including fixing bug that caused lack of end time to raise error; added white listing for event description; worked on problems with mofo microformat parser. Some of this work was related to getting mofo to parse our Atom feed for hCal entries. This now works, but we're searching for more example Atom and RSS feeds to test against ( Issue96 ).

Audrey (with a number of people looking over her shoulder) improved the display of the Venue bulk duplicate squasher; added a rudimentary Event bulk duplicate squasher; added validation and fixing to the Venue and Event URLs; added a "Get hCalendar markup" link to the Event Show page; sanitized Events and Venues index and show pages.

Closed tickets include:
  •  Issue43 , Add bulk duplicate squasher for events
  •  Issue67 , Create a bookmarklet to help users import events
  •  Issue68 , Add automatic linebreaks when displaying multiline fields (e.g., event description)
  •  Issue77 , Generate hCalendar code for easy copying to other sites.
  •  Issue83 , In Venue duplicate squasher, add show venues with a duplicate zip code
  •  Issue84 , Suggest validation for attributes
  •  Issue90 , Event and venue descriptions should be sanitized prior to display.
  •  Issue91 , Event without end times should not raise the "start time is after end time" error.
  •  Issue46 , hCalendar parser should be able to find events in atom feeds.

April 9, 2008

Afternoon mini code sprinters: Reid Beels, Joe Cohen, Audrey Eschright, Don Park, Bryan Stearns

April 3, 2008

Evening mini code sprinters: Reid Beels, Joe Cohen, Igal Koshevoy, Sam Livingston-Gray

  •  Issue44  (Write specs for the source importer's duplicate prevention system) Sam reviewed and improved these specs
  •  Issue74  (Importing a bad URI causes a crash) Igal and Reid worked on this issue and determined that this was a Google problem related to the particular URI in the issue. We cannot fix this problem.
  •  Issue75  (Change event model to use duration instead of end time) Reid worked on this issue. (Discovered that we can perform addition on Time objects, but not on DateTime objects.)
  •  Issue76  (The Venue/Edit screen should allow directly setting the lat / long) Reid and Joe fixed this. The system should eventually allow setting latitude / longitude by clicking on the Googlemap.

April 2, 2008

Lunchtime mini code sprinters: Scott Becker, Reid Beels, Joe Cohen, Audrey Eschright, Don Park, Kevin Scadeferri, Bryan Stearns. (Kerry Finsand, Dan Mendell, Oliver Ortiz from NeutralSpace dropped by to see what we were doing and to encourage us.)

We identified these issues as ones that made sense to work on at a mini Code Sprint:

  • Issue47 (Sort and Filter by Source)
  •  Issue48  (Duplicate squasher should return you to where you were before squashing.)
  •  Issue51  (Show the year of the event). We closed this issue. The year now displays by default when an event list is generated. At some later point we will change this so that year is displayed only when context requires.
  •  Issue66  (Add recurring checkbox to import page, save attribute in the Source model)
  •  Issue67  (Create a bookmarklet to help users import events)
  •  Issue68  (Add automatic linebreaks when displaying multiline fields (e.g., event description)

We also decided to close  Issue53  (Home page display of recently added events should show only future events) because the problem addressed by the issue title was previously fixed. We opened a new issue re not importing or creating past events.

March 15, 2008

Report

Thanks go out to our eight participants today: Anselm, Daniel, Igal, Joe, Reid, and new recruits Scott Becker, Kevin Scadeferri, and Bryan Stearns.

We contributed 1927 lines worth of patches to this open source project since the last release, including some of the trickiest code in the system. Further details: http://code.google.com/p/calagator/wiki/StatusReports

Major changes to the application include:

  • Automatically eliminates duplicates when you import events and venues that are exactly the same at those already in the database, making it possible to repeatedly import the same source without creating duplicates.
  • Manually consolidate duplicate venues (/venues/duplicates) based on fields, making it possible to squash all duplicate venues by hand in seconds.
  • Provides Atom subscription feed of all events, complete with hCalendar markup and iCalendar VCS/ICS attachments to make it easy for users to add these to their personal calendars.
  • Displays human-friendly messages when a user tries to import a source without any events or whose URL is invalid, doesn't save these bad sources, and provides a form so the user can easily edit and resubmit the URL if they made a typo.
  • Etc.

All changes were tested and deployed to the production server.

Special thanks go to Reid for spending a lot of time before the code sprint building most of the bulk duplicate squasher system, fixing bugs, etc.

Research was also done today to:

  • Use geocoding to find a venue's latitude and longitude from its address.
  • Provide user interface and logic for manually handling non-exact duplicates during the import.
  • Find why Google Calendar sometimes fails to import our iCalendar feed.
  • Etc.

Procedural changes today:

  • We declared a 5pm code freeze when all new work needed to come to a conclusion. From then until the 6pm closing, we reviewed all committed code, wrote specs, refactored, and otherwise readied code for a production release. This worked great.
  • We reviewed most new members code either before it was committed, or soon after. This provided a good way to discuss code style, specs, and alternative ways to write clearer code.
  • We used a three-person team later in the day to tackle a really tough task, and they got through it a fraction of the time that a single person was able to do tackle a task of similar complexity earlier in the day, which proved the value of collaboration.

Thanks for all the hard work, solid code, and good lessons!

-igal

PS: Audrey, we miss you and hope that you feel better soon. :)

Bug Squashing

Anselm fixed  Issue 34  (Sources should not be saved when no items are found).

Brian fixed  Issue 35  (Source connection errors should be handled gracefully).

We looked at  Issue 37  (ical subscription not working for google calendar) and found that behavior irregular (sometimes it worked, sometimes it failed, but with different errors). Because Google Calendar is in beta, we decided to put off dealing with this issue.

Igal fixed and refactored #find_with_duplicate_support code to provide a generalized way to use the #find command with additional features.

Enchancements

Anselm and Reid built an Atom feed ( Issue 23 ).

Scott and Bryan completed work on the logic for Geocode to venues ( Issue 41 ). (A UI still must be built.)

Igal, Kevin, and Reid built initial system to prevent import of exact duplicate events.

Daniel and Joe worked on a description of NotifyingUserOfDuplicates to notify users of potential duplicates and ask whether they should be imported.

March 2, 2008

Reid, Audrey and Igal: Thanks for staying up late again and committing all those fixes and improvements today! We contributed 1047 lines worth patches today. Major changes:

March 1, 2008

Thanks to today's participants: Igal, Justin, Audrey, Chris, Joe, Reid, SamK. We contributed 1636 lines worth of patches to the app since last time.

  • Reid verified that OTBC calendar import works ( Issue 17 ).
  • Reid showed us a wire frame that he created for the calendar.
  • Reid worked on the Event Display page, including embedding hCard markup for venues
  • SamK created an Edit Event form.
  • Reid started writing code for the Event view, including getting it to write out the time and event span.
  • Joe created a revised description of the project to be put on the calendar home page. Once we begin automatic imports, this description should be revised to give instructions on how to get a calendar imported automatically.
  • Audrey & Chris fixed a bug which incorrectly created a venue for hCal events that lacked venues ( Issue 10 ).
  • Audrey & Chris created an end time for events
  • Igal and Justin explored the Icalendar library and discovered some issues with its throwing exceptions when it found unrecognized keys.
  • Igal and Justin found a deeply embedded problem with the Icalendar library 1.0.2 in which it relies an a bug in an older version of Ruby.
  • Igal and Justin started exploring Vpim as a possible replacement for Icalendar, discovered that when Vpim finds a field it doesn't know about, it discards the field. Will research Vpim more.
  • Everyone watched the Portland Urban Iditarod. We had a great view. For some photos, see here.
  • Audrey & Chris improved event imports so that when an eventis imported, the source is saved and is associated with the event
  • Reid created Event and Venue views based on his wireframe
  • Audrey & Chris changed the event listing to show all upcoming events from soonest to furthest in the future.
  • Reid created an Event list that includes hCalendar markup.
  • Reid added active scaffolding for the source model, allowing viewing of saved sources at /sources/list.
  • Igal and Justin implemented the iCalendar parser and specs. The parser uses the Vpim gem and some heavy voodoo to fool it into handling venues correctly. The Vpim gem has been copied into the Rails project, so no one else needs to install it.
  • Igal:
    • Tore out ActiveScaffold from the normal controllers, moved it to admin controllers in case we ever want it again -- e.g., you'll find the ActiveScaffold list of events at /admin/events
    • Created new controllers, actions and views that provide index, add, edit, update, and show. These use nice partials to generate the new/edit forms.
    • Added nice calendar selectors to the new/edit event form.
    • Reworked SourceParser so that each subclass gets its own label and registers itself dynamically.
    • Fixed Event::from_abstract_event, it no longer creates a Venue if there's no AbstractLocation.
    • Fixed /sources radio button labels, clicking them now makes the form select the associated radio button.
    • Added .gitignore so folks can use git-svn with the project.
    • Reworked tests broken earlier so that everything passes again.
    • Added migration to delete invalid venues. Added logic to make sure bad records can't be added in the future and that deletes nullify associations.
    • Don't display maps for venues without addresses.
    • Deployed and tested SVN r269

February 16, 2008

Thanks to Audrey, Igal, Reid, Joe, Anselm, Daniel, and our latest arrival, Mark Dilley, for participating in this weekend's code sprint. We contributed 1134 lines of patches to the app this time.

Audrey will post a higher-level update update here or on the blog, but here are the nuts and bolts of the changes:

Anything else?

We ended up focusing on the location import stuff which proved to be more complicated than we had thought because of how mofo was dealing with the embedded hcards. A bunch of fields got added to the venue model (possibly temporary, none required) to handle that possible data that could come from hcards.

Two finished cards:

A couple of things that weren't on cards that got done:

I also have the cards for:

Igal took note of both of these before he left. I'll hold on to them until next time.

February 2, 2008

Dan and Alex (oh, I hope I got your name right) worked on documenting various Data Source Models (http://code.google.com/p/calagator/wiki/DataSourceModels). They also migrated all our documentation from the mailing list over to the wiki: http://code.google.com/p/calagator/w/list

  • Location recognition

We researched what kind of data is likely to be supplied in the location field of the hCalendar data, and discovered that Upcoming and other sites are using the hCard microformat. That may give us a head start on importing structured venue information.

  • iCalendar import
Coders didn't end up finishing the iCalendar import, because Igal and Sam found that we needed to refactor the import code to make it easier to process other formats besides hCalendar. However, they did complete that refactoring.

  • Website coordination/Blog

Audrey added more info to the main page so people have more obvious pointers to find out how to get involved. Joe Cohen and Selena wrote a blog entry encouraging hCal adoption. It was posted on Saturday! We also brainstormed some other blog entires, and have two more in the hopper, that should go up later this week. Selena added a flickr sidebar, to display all photos tagged with 'calagator'. Gabrielle made a list of folks to contact about adding hCalendar support to their event announcements.

  • Documentation of the "big ideas"

We made a whiteboard diagram and Anselm took a picture: http://www.flickr.com/photos/anselmhook/2237614952/

  • Other coding bits:
  • - Audrey made the error message when Import fails more informative - Coders confirmed that multiple hCal events on one page are recognized - Several of us tested functionality and generated a few bug reports :)

January 19, 2008

Today several of us met during the Code Sprint gathering at CubeSpace to talk and work on the calendar.

Participants: Audrey Eschright, Selena Deckelmann, Igal Koshevoy, Reid Biels, Paige Saez, Daniel Etra, Anselm Hook, and Bill Burcham.

We spent the first part of our gathering discussing our goals for the project. We focused on our reasons for creating a new calendar system, and the user communities we intend for this to serve. We determined that many existing calendar services have barriers to entry such as required registration that limit usage in our community. Current calendars can also lack the quality of details we would like to provide. We felt that creating a model for aggregating events around a specific interest area is important, and something that existing calendars only partially succeed at.

We also talked about the different types of groups and cultures within our community, loosely labeling them as business, new media, open source, and a fourth group that we called the X-factor or newbies: people who don’t know they’re part of our community until they see what kinds of events and groups are out there. Not requiring users to register an account with yet another centralized system seems important to serving many of these groups, since the existing tools they use reflect a range of preferences for connecting online. We then split into pairs/small groups to work on specific tasks.

Results:

  • The existing group websites we examined can be imported much more easily with the addition of hCalendar markup for the event details. Selena and Daniel created documentation that we can share with event organizers (http://groups.google.com/group/pdx-tech-calendar/web/example-hcal-markup). We discussed the possibility of using a hCalendar generator to provide ready-made HTML to paste into websites and blogs.
  • A next step for encouraging hCalendar usage will be to contact individual groups who aren’t using a standardized calendar format, and tell them about our project.
  • Paige created a sample email template that can be used to structure event information, for organizers to cc to our system when they send out event announcements. Email seems to be the one tool everyone uses, and this would help with our goal of accessibility.
  • Igal and I set up a new Rails application, and added it to a group repository at http://code.google.com/p/calagator/. The application now has a bare bones structure for adding and viewing events. We also decided that event venues were important attributes, and that combining information on venues across events would be highly useful, so users can now add and update venue information as well. We’re using a temporary view scaffolding system to allow us to add and edit information in the database. We’ll develop a more polished interface as we continue.
  • In order to begin pulling sample data from websites, Igal and Reid are creating an hCalendar event importer. This can also be used as a model for adding other calendar formats to the system.
  • Igal is going to set up our calendar program on a server where people will be able to try it out. Getting feedback early and often will be important to ensuring we’re meeting the needs of our users.
  • Selena set up a new blog at http://calagator.wordpress.com/ to help us connect with the local tech community as we continue working on this. Thanks everyone who came and participated today, and thank you also to everyone who has contributed to the discussion online. The diagrams and resources on the pdx-tech-calendar website were very helpful as we began work.

We’ll be meeting again in two weeks, on February 2nd, for another round. Please feel welcome to attend whether or not you program or write HTML. We worked on many things that everyone can help with, including brainstorming, researching, and planning. Or if you have other skills you’d like to contribute, but don’t know how to get started, email the list and we’ll help.


Sign in to add a comment
Hosted by Google Code