Gearing up for Swim Team 2012

It will be summer swim team season before I know it so it is time to start gearing up for the upcoming season.  I haven’t really looked at wp-SwimTeam since last fall and WordPress has had several updates since then. I found out today that one of the updates causes the “real name” for the users not to be returned so that is first on my list of things to fix.  There are also some GUI inconsistencies that I’d like to fix.

This is my short list of items which I want to implement this season:

  1. New/update Swim Team theme.  This really isn’t related to wp-SwimTeam per se but our site is looking a little dated and it is time to freshen it up.
  2. Results Import:  I said I was going to do this last season and I never finished it.  I really want to get this done this year.
  3. Export of Meet Entries:  The wp-SwimTeam plugin has all of the informtation (roster, scratch list, event list, etc.) to generate a Meet Entries file in SDIF format.  Providing this file will greatly simplify getting a team’s entries into either Hy-tek or WinSwim (or any other tool which imports meet entries).  This will likely be first on my list after fixing the name bug and the GUI inconsistencies.
  4. Document all of the short codes on the wp-SwimTeam demo site.  I really need to do this.  It would make it much easier for new people to pick up the plugin and do something useful with it quickly.

Season over, what next?

Our 2011 Summer Season is over and I will actually have some time to get back to work on wp-SwimTeam.  I find it hard to work on it during the season as I spend a lot of time doing swim team stuff.  Other than fixing something serious, I don’t have much free time to work on the plugin during the season.

But now the season is over and I won’t be working with our coach on line ups, spending time at the pool, etc, and I can spend some time on it again.  After our season there are a number of things I want to implement that I know we need for the MacDolphins:

  1. GUI improvements – there are a number of places the GUI can be confusing and needs some help.  I also hope to add some icons to make things a bit more intuitive.
  2. Export Meet Entries – all of the information can be stored with wp-SwimTeam, there is no reason why a Meet Entries file can’t be exported per the SDIF specification.
  3. Swimmer Reminders – similar to the volunteer reminder e-mails that can be sent in bulk, I plan to add the ability to send out swimmer reminder emails.  I am hoping that these reminder e-mails will improve the scratch process for us and eliminate our no-shows.
  4. Results – I have some work done (see the Flip-Turn demo) but do not have it integrated with wp-SwimTeam yet.  It isn’t complicated work but there is a lot of it to do.
  5. Hy-tek compatibility – there is some work done by others that should enable better Hy-tek compatibility.  I am hopeful that I can actually generate and/or process Hy3 and HYV files for entries, result, and events.
  6. New Theme – the MacDolphins theme needs to be updated.  It is based on the Sandbox theme and WordPress has evolved quite a bit since Sandbox was developed and even my extensions to Sandbox for the Sandbox-SwimTeam theme are showing their age.

Looking at Meet Entries

I have started looking at generating meet entries (SDIF) directly from wp-SwimTeam.  When you factor in events, strokes, registrations, scratches, and relays, the problem of generating meet entries becomes fairly complicated.  I’ve been sitting on the couch watching golf and perusing the SDIF specification and have a pretty good idea of what I want to do, now I just need to decide how to do it.  For the time being, I think I am going to focus on individual events as they are much easier generate than the relay events.  However, I don’t want code myself into a corner and make relay events hard to implement so I can’t decide what to do.  I also need to decide if I approach this from a roster perspective (ie by swimmer) or from the meet perspective (ie by event).  Hmmm …. decisions, decisions!

More thoughts on the Opt-In/Opt-Out changes

I’ve made a fair amount of progress today on the new Opt-In/Opt-Out Event model.  One of the big benefits of this model is it will facilitate being able to generate a Meet Entries file (SDIF) which could be consumed by Hy-tek Meet Manager or WinSwim.

The meet event information has been in wp-SwimTeam for quite some time but I’ve yet to do anything with it as other things, like the Jobs system, have taken priority.  Knowing which swimmers are registered for which event will make the generation of a Meet Entries file fairly straight forward to implement.

wp-SwimTeam v1.1.533 now available

I have just posted v1.1.533 of the wp-SwimTeam plugin.  This version includes the first pass of Contextual Help for all plugin screens and forms.  I have added and/or clarified some of the information to (hopefully) make it more clear what particular areas of the plugin are for and the actions which can be performed.

This version also fixes a number of minor bugs that I encountered, most were due to typos in the SDIF constants that were exposed when I turned the WP_DEBUG flag on.

I added one significant new feature:  It is now possible to configure the Opt-In/Opt-Out system to support opting in or out of Full, Partial, or Both types of swim meets.  Control over this setting, which defaults to BOTH, is on the Options page under the Swim Team tab.

[download#7#image]

Flip-Turn – swim results management

A few weeks ago I mentioned that I had started working on a new swim team project.  I am calling it Flip-Turn.  Flip-Turn is a basic PHP/MySQL web application which allows a swim team or swim association to publish swim results on the web in a format that is easy to navigate and view.

Dealing with results has been the last real big hole in wp-SwimTeam and I’ve started working on it a couple times only to abandon it because I didn’t like where it was headed.  Over the winter I had an e-mail dialog where a team was simply looking to store results in a database so they could be easily displayed on a web page.  As I started thinking about this I came to the conclusion that it would be an interesting project to work on and would be an easy way for me to find a better way to manage results.

For the last couple weeks I have been working on Flip-Turn as time permits and I now have a basic demo up and running.  You can see it here:  http://demo.flip-turn.com The demo is pretty simple, it allows a user to upload results in SDIF format and parses the results and stores them in a database.  The results can then be queried based on swimmer, event, or swim meet.  While pretty basic, it works pretty well.

In its current state Flip-Turn doesn’t deal with relay (E0) records but does handle individual (D0) records correctly.  In most cases, what people seem to be concerned with are their individual results so that is what I have focused on.  I don’t anything I have done will prevent dealing with relay records at a later date but for now, I don’t plan to address them.

Wile the code seems fairly robust, I am not ready to distribute the code yet as I don’t have a great solution for initializing the database tables or changes to the tables.  I need to figure something out there – right now I have an SQL script that needs to be run against the database to create the tables.  I used phpMyAdmin to initialize mine.

I fully expect to roll this effort back into wp-SwimTeam as this is something I’ve wanted to do for our swim team for a couple seasons.

A new project?

Recently I have been working on a new Swim Team related project which at some point I will likely integrate into wp-SwimTeam but for now, it is a standalone application.  Pretty regularly I receive e-mail from people who want to post their meet results online in some form or fashion.  Most of the time these results come from Hy-tek in the form of a ZIP file or a CL2 file.

Generating or posting a static web page with some results on it is pretty straight forward and most swim software can do this in some form or another.  Storing the results in a database and presenting them as part of a web site isn’t something readily available as near as I can tell.  It would be nice to be able to upload a season’s worth of results and allow swimmers and parents to review their times and see the trends.  This is basically what I am working on.

At this point I can import a SDIF meet results file and extract the meet data from it.  I have some other infrastructure complete as well and will begin working on extracting and processing all of the result records in the next day or two.

I’ve based this project on two external PHP libraries.  I am using  the 2.x thread of phpHtmlLib, which I also use for wp-SwimTeam and ADODB.  This is my first time using ADODB and so far, there haven’t been any issues.  I decided to use it because I needed a database abstraction layer and phpHtmlLib has a ADODB data source widget which makes it very easy to present data to a user.

Swim Team results analysis tool

Periodically I search for new swim team related software to see if anyone else is trying to solve the problems I am trying to solve.  Today I found something interesting called Natalog.  Natalog is from a company called Natavision and it is a swim results viewing and analysis tool.

I think much of what this tool can do is available in Crystal Reports but this looks to be much easier and certainly something a parent or coach might find useful.  It takes a variety of input formats including SDIF (.sd3), Hy-tek, and plain text.  Since it accepts SDIF, it can report WinSwim results very easily.

I am slowly adding reporting functionality to wp-SwimTeam and I doubt I will ever do anything to this extent.

SDIF Forum Google Group

I get a fair number of questions about how to import swim team data from one place to another.  Most of these questions are from people like me who have information in one place and want to figure out how to use it again without having to type it in again.

In theory, SDIF (Swim Data Interchange Format) should address this issues.  SDIF is a standard published by USA Swimming.  If you visit the USA Swimming web site and search for SDIF, you won’t find much.  The SDIF 3.0 specification is pretty old, it was published in 1998.

There is a page which references the newer XSDIF specification but I am not aware of any swim software which currently supports it.  So in reality, the 3.0 version of the SDIF specification (this is a very poorly formatted document – if you’d like a better version, download the SDIF specification from the WinSwim web site) remains the standard to work with.

If you are interested sharing ideas, solutions, problems, etc. with others who are trying to solve similar problems, please join the SDIF Forum Google Group.  It seems like there are quite a few people trying to solve similar problems, the Google Group should help people communicate.

As it relates to wp-SwimTeam, one of the first things I need to solve is the ability to upload a Hy-tek Events File and connect the events to a swim meet.  This is necessary in order to upload results for a meet and connect them to a swimmer.  This information could be extracted from a results file but Hy-tek events files are frequently available so I want to leverage the information they contain.

Being able to engage in a dialog on how to parse the .hyv or .hy3 files would be really helpful for me, I am sure it would be beneficial to others as well.  In many cases, someone has probably already written a script or Excel macro to extract the information.  I can’t imagine how many times the wheel is being reinvented – I am guessing lots!

Meet Manager SDIF Compatibility

I’ve been doing some research into Meet Manager and its ability to import an SDIF entries file.  Since so many teams use Meet Manager, getting data into it is pretty much of a requirement.

I posted previously on this topic but this year, as I was preparing our entries for the Cary City Meet, I did some experiments.  Hy-tek now makes a demo version of Meet Manager available.  The demo version is limited to six (6) events which makes it useless for doing much real work but it is fine for some simple experiments like I wanted to do.

What did I learn?

Meet Manager is really picky about SDIF.  This really isn’t a surprise.  The first thing I ran into was SDIF files (which are ASCII) that go through e-mail as simple attachments rarely will read into Meet Manager successfully.  There is something about line endings that Meet Manager is unusually sensitive too.  This issue can be avoided by zipping an SDIF file before sending it via e-mail.  You can actually load the zip file into Meet Manager directly, Meet Manager will unzip it for you.

The real compatibility issue comes from D0 and E0 SDIF records which don’t have a seed time.  Meet Manager simply does not like records without a seed time (blank) even though the SDIF specification indicates this is legal.

To get past this issue, the SDIF file must contain either “NT” or “00:00.0” (right justified) in the seed time field AND the course code.  Meet Manager will accept both formats as “no seed time”.

Unfortunately Meet Manager still does not read heat and lane information from the SDIF record.  This is really a nuisance.  As near as I can tell the only way to get heat and lane information into Meet Manager is via a .CL2 file (maybe) or via a .HY3 file (definitely).  Of course both of these file formats, which are similar to SDIF, contain the Hy-tek proprietary checkum for each record.

I would really like to solve this problem as it would make interchanging data so much easier.