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.
The major feature that I had been working on which I didn’t complete is the ability to generate a Jobs vs. Commitment report. The Jobs module allows each job to assigned some number of credits and there is a setting to set the minimum number of credits each user is responsible for. By default the system will use zero which means there isn’t a minimum. In the latest release, when a user looks at their My Jobs tab, it will show the jobs they have committed to and sum up the credits. If the sum of the credits is less than the minimum, an error notification will be displayed for the user.
Right now this message is only displayed on the My Jobs tab but an administrator will also see it when view selecting the Jobs action for any user from the Manage->Users tab. I had given some thought to displaying the notification anytime a user logged in but have conclude that would be too intrusive. I may make it an optional setting at some point though.
The one thing I haven’t figured out is how to handle a situation like we have with our own team. On our team we ask each family to volunteer four times (four credits) for the season regardless of how many swimmers they have. If both parents are in the system (primary and secondary contacts) right now they would be erroneously flagged if each signed up for two jobs because together, they have met our requirement.
Reporting job commitments versus user is pretty easy and I will do that in the next few days but I have also considered reporting job commitments versus swimmer so that both contacts can be accounted for. In speaking with some teams locally, they require two volunteer commitments per swimmer so that is yet another permutation to account for. In the short term I will likely only report commitments versus users and leave it at that for now and revisit it after the season as there are some other things I need for our season which starts in three weeks: Results, Meet Entries, and some work on WinSwim/Hy-tek interoperability.
I’ve expressed my disdain for a number of things, primarily Hy-tek’s poor SDIF support in this forum so I guess it is appropriate that I also note some things I find useful and work well. DropBox is one of them. It solves a problem and solves it very well.
A lot of swim team files are shared among a group of people and e-mailing them around can be problematic. We’re using DropBox to share some of the files and I am planning to store our WinSwim database in DropBox so the Swim Team’s computer and my computer will have access to the same database file. I am optimistic that doing this will allow us to collaborate on the meet line up and heat sheet process without having to mail files around. I’ll report back later on how it works out.
In the mean time, if you want to check out DropBox (free for 2GB of storage), use this DropBox referal link and I will get some extra space as will you when you sign up!
I have one more feature to add to the Jobs module before I consider it complete. I have a request to be able to send out Reminder Notifications on a per swim meet basis which should be pretty straight forward to implement and I hope to have it done in the next day or two.
Once that is complete, I need to decide what to do next. I have a couple of choices.
- I’ve had a couple requests to be able to import a roster into wp-SwimTeam. I don’t think this will be too difficult technically but it does require a couple decisions. Since swimmers in wp-SwimTeam are connected to parent or guardian users, what WordPress userid would the imported swimmers be connected to? The obvious choice is the Admin user or user running the import. Swimmers could then be updated at a later time to connect them to the appropriate WordPress user if/when it exists.
- Import results. This has long been on my to-do list because the MacDolphins need it. I’ve been working on processing results off an on as a side project (see Flip-Turn) with the intent to fold that work into wp-SwimTeam when it is functioning and useful. I already have a lot the functionality working and the GUI will look familiar to wp-SwimTeam users but I have yet to tackle relays and really push the robustness of the SDIF parsing.
- Hy-tek/SDIF compatibility. This is also something I need for the upcoming season. Anyone who has read much of this blog knows that I am not a big fan of Hy-tek and their goofy checksum and weak support of SDIF. Since it isn’t likely to change and lots of teams use Hy-tek, we need to resolve the data exchange problem. This issue may be the highest priority for me personally and I’ve debated whether to build some functionality into wp-SwimTeam to try and resolve sharing data with Hy-tek teams.
Comments and suggestions are welcome. I try to incorporate suggestions quickly if I can.
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.
Before I spend a lot of time writing code to read Hy-tek files, I thought it would make sense to try and document them first. I’ve started with the .hyv file format which describes the events that comprise a swim meet. I’ve documented the fields I’ve been able to figure out in a Google Docs spreadsheet. If you’re interested in helping me flush this out, let me know and I’ll provide the ability to update the file.
You can see what I have so far here.
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.
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!
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.
I am considering adding some SDIF utilities to wp-SwimTeam. Just this week I have had to deal with submitting meet entry data to a team who uses Meet Manager. Ugh. Everytime I have to do this it reinforces my dislike for the Hy-tek products.
Fortunately Hy-tek now has a demo version of Meet Manager available which while limited to 6 events, is useful for testing in a limited fashion. For example, I was able to verify that the MM RE1 export from wp-SwimTeam will load in Meet Manager. I was also able to test quite a few permutations of SDIF E0 and D0 records until I figured out what combination of course and seed times would load successfully.
Now that I know what works I am considering adding a couple utilities that will apply changes to an uploaded SDIF file and send it back for download. If you have ideas for SDIF manipulations that need to be made, drop a note in the comments and I’ll see what I can do.
The first one I will do will modify SDIF files to include seed times (which are optional per the SDIF specification) when the fields are blank.
Recent Comments