wp-SwimTeam v1.18.747 released

This afternoon I released v1.18.747 of wp-SwimTeam.  This release includes what I am calling Phase 1 of the new Event Model.  The event model has been completely overhauled in anticipation of being able to generate Meet Entry files in SDIF format directly from wp-SwimTeam.  The whole Events tab looks and works differently.  Events are collected into what I call Event Groups.  This release adds the ability to import events from a Hy-tek Events File (.hyv).  Events are managed (added, deleted, imported, re-ordered, etc.) within the context of an event group.  In Phase 2 events will be connected to a swim meet via an event group although the swim meet will still retain the ability to re-order the events on a meet by meet basis.

Key features in this release are:

  • Phase 1 of overhauled Event Model is complete. The new Event Model introduces the concept of Event Groups. Events are now defined in the context of an Event Group. Swim meets currently do not have any connection to Events but that will chance in a release fairly shortly in Phase 2.
  • Added ability to import events from a Hy-tek Events File (.hyv) into an Event Group.
  • Added ability to delete all events from an Event Group.
  • Changed Google Maps API Key from required to optional. If the API key hasn’t been entered, wp-SwimTeam will now gracefully work without it.

I changed a lot of code in this release, if you run into anything odd or functionality that isn’t working or behaves differently, let me know ASAP and I’ll do my best to fix it quickly.  Now that I am back to a stable code base I should be able to turn bug fixes pretty quickly.  That is hard to do when you’re doing a bunch of remodeling!

This release has been committed to the WordPress Plugin Repository so you should an update notification on your Dashboard.  You can also download it and manually update it from the Download & Installation Page.

Edit (4/16/2012 @ 10:07 AM):  This update includes a database update so you must de-activate and re-activate the plugin after updating to have the database upgrade run.  One of these days I’ll figure out a more elegant way to do this!

Sandbox Swim Team Theme

This evening I posted a new Sandbox based theme called Sandbox Swim Team.  This theme is designed for Swim Team web sites.  Like the LEGO and Soccer themes I have done recently, this theme is widget ready and has styling for a number of plugins I use regularly.  This theme has a number of options to support custom header images, color scheme choices, and themed login pages.  You can see this theme in action on the MacGregor Downs MacDolphins web site.

image  image

How to handle inactive users?

Since I am into the second season of using wp-SwimTeam for the MacDolphins I am running into families who swam last year who don’t plan on swimming this year.  When I started building wp-SwimTeam I made the decision that I didn’t want to delete swimmers or families so pool records and a history could be kept easily.

The wp-SwimTeam plugin handles inactive swimmers and families just fine however the E-mail Users plugin we’re using to contact our swim families doesn’t know anything about active or inactive families so people who aren’t interested any more are getting copies of e-mail they shouldn’t really receive.  Most ignore them but some don’t want to be bothered.  I don’t want to build an e-mail system into wp-SwimTeam, there are plugins that already do that.  I am not really interested in building a custom role manager either but that might be the solution.  By default I have all users as subscribers now, I could also look into assigning inactive users to have “no role on this blog” and see if that prevents them from receiving e-mail.

TSA Presentation

I have been asked to present the experiences of the MacGregor Downs MacDolphins with WinSwim and our team web site at the March board meeting of the Tarheel Swimming Association (TSA).

Our experience with Hy-Tek and ultimately WinSwim were significant drivers in the development of the wp-SwimTeam plugin.  I have made the presentation available for download.

[download#4#image]

Busy with Swim Team

It seems like most of my free time has been consumed with swim team lately.  I volunteered to help bring the MacDolphins into the 21st century this year and it has taken quite a bit more time than I expected it would.  A lot of that is because it is fun working a technical problem and doing it right.

We had some goals for the season.

  1. Report results in a timely manner.
  2. Capture times and keep a history so swimmers and parents could monitor their progress.
  3. Electronic registration to minimize data entry errors.
  4. Communicate quickly and effectively.

After searching the internet for an existing swim team solution I determined there really wasn’t anything suitable do I decided to write my own WordPress plugin to address part of the problem.  I had no aspirations to build a complete solution but I did want to offer something which addressed goals 1, 3, and 4 above.  I started working on the plugin early this year and for the most part, it is working out pretty well.  I wish I had a few more things done but I am happy with what I have been able to do.

For actual meet management, our team (actually me) ended up choosing WinSwim over the industry standard Hy-Tek solution.  I went with WinSwim mostly because their support was excellent and their ability to import our roster electronically.  For whatever reason, Hy-Tek has made doing this difficult if not impossible to do.  (Read more on my wp-swimteam plugin blog regarding my dealings with Hy-Tek.)

WinSwim is easy to use but it hasn’t been without some problems.  Fortunately they don’t seem to mind the volume of e-mail and issues I am sending them and they turn around solutions really quickly.  To distribute the data our parents and swimmers want to see (mostly their times), I have learned quite a bit about Crystal Reports.  It is pretty powerful once you get the hang of it but the learning curve is non-trivial.  This weekend I think I had the “ah-ha” moment because now I am able to edit and create new reports pretty quickly.

The season is coming to a close and I still have a few things to do.  I need to get end of season reports done for our banquet.  I think this will be pretty straight forward now that I think I have a handle on Crystal Reports!

Busy with Swim Team

I have been really busy with swim team the last couple weeks, it is taking almost all of my free time.  I guess that is what happens when you volunteer to be the “IT guy” for the swim team!

Our swim team has been run over the years by volunteers (as most are) using paper and Excel.  It hasn’t been the most organized swim team but the kids had fun.  We did however, lose a lot of information which kids and parents would like, notably swim times.

Last year my wife agreed to run swim team and asked me to help her get the whole process computerized.  I have developed a WordPress based plugin I call wp-swimteam to handle much of the work which when used in conjunction with WinSwim, is working pretty well to manage our season.

However, it is all new and there are lots of questions and lots of “we didn’t used to do it this way” but by in large, people are pretty happy with the way things are going.  They certainly have a lot more information than they have had in the past.  We had a fire drill this week to get data submitted for the local city wide invitational meet which required me to do a bunch of work to get our data submitted.  This is the sort of activity which you don’t realize ahead of time, how involved it can be.  I must have submitted our roster 10 times with the various changes.

WordPress is a great platform for a Swim Team (and probably many other youth sports).  With the wealth of plugins available, it can handle pretty much anything we have thrown at it so far.

Two Weeks of Swim Team Registration

It has been about two weeks which our swim team, the MacDolphins, has been using wp-SwimTeam in conjunction with WordPress for swim team registration.  This has been a pretty good testing experience and for the most part, has goine pretty smoothly. 

However, some things which seem obvious to me apparently aren’t so obvious so I will need to rethink those.  For example – when adding a swimmer, the swimmer should be registered for the current season by default as part of the registration process as opposed to making it a separate step.  I also need to add some birth date checking as we had a number of swimmers registered with the current date (the default) which means they were born on the day they were registered.

I also ran into a problem where anyone using Apple’s Safari web browser (either on a Mac or a PC) wasn’t able to do much because the Javascript behavior of any of the buttons on the GUIDataList objects (a nice spreadhseet like widget used extensively to present information to the users) was different than Internet Explorer or Firefox.  It was very odd and took a while to chase down but it is fixed so now Mac users are happy too!

The next thing I am working on is Swimmer numbers for swim meets.  In our area, each swimmer is labeled (usually on their arm or leg with a Sharpie) with their swimmer number.  Some teams number their swimmers sequentially, other clubs, like ours, give each age group a prefix and number the swimmers within the age group.  E.g. the 7-8 girls are numbered 801 – 8xx and the 7-8 boys are numbered 701-7xx.  We will need this capability in the next 2-3 weeks so it is bubbling up the list.  I also need to generate some reports so that is a priority as well.

Swim Team Registration – baptism by fire!

Last Sunday we had our Swim Team open house and registration.  It was the first serious test of the work I have done by someone other than myself.  At work we have 8 laptops in a rolling case we use for workshops and training so I brought them home and set them up for people to use – I would have 8 people registering simultaneously.  Because most people wouldn’t have access to their e-mail, I had them visit me first where I assigned them a username and password.  They then logged in and registered themselves and their swimmers.  Everything went pretty well for the most part.  Except for one minor glitch.

I had a very late request (like an hour before registration) to capture one more field so I adjusted the data model, changed the form and tested everything.  Since the data model changed I needed to deactivate and re-activate the plugin for the tables to update.  Worked great in my development area but I forgot to deactivate and re-activate on the live server.  Oops.  People were getting database errors when they tried to update their contact information.  Great.

Fortunate, the important part, the actual swimmer registration was unaffected so I had people skip their address and only worry about their swimmers.  This worked fine and we registered almost 100 swimmers in about two hours.  I knew if I had 5 quiet minutes to look at it, I would know what was wrong.  Sure enough, once open house ended andI could look at it, I immediately saw what the problem was.  Duh.

Now I need to ping every registered parent to update their contact information.

Swimmer data model enhanced

Last night I enhanced the swimmer data model so additional information can be captured.  The swimmer record now support five (5) optional fields which are under the control of the site admin.  This is similar functionality to what the user profile provides.  Both the User profile and Swimmer profile optional fields hve been enhanced to support required, optional, and yes-no fields.

I also made a bunch of other minor tweaks to various things as I get ready for Swim Team registration on the 13th.  Our team registration will be the smoke test of the system.