Mar 20, 2017 02:02 AM
I am a part-time social dance teacher and also work as an IT support person in two private companies working in dance teaching business. Some months ago I got a task from my boss - to build an application for scoring, to be used in a dance competition.
The competition in question is a peculiar one: you see, in a normal dance competition, there are fixed couples dancing, and nominated judges give the scores. All existing scoring apps are build around this hypothesis.
Ours was different however: it was based on peer review, ie. every leader danced with every follower and the dancers gave scores for each other. No existing application bends to this peculiar case, so I needed to build one from scratch.
I also needed to make my application an online one, so at first I thought about SQLite + PHP. Then I ran into Airtable and thought, well this might actually have great potential. And it did!
It didn’t take long to have the basic setup, and I must say the Views for a table helped me immensely, since they give me so many different useful views to my data. Very soon I had the most important views ready:
The best part of the Views really is that they can give totally different insights into the same data, suitable for the people with different roles - as in my example, head of the competition, registration assistants, scoring personnel.
So the basic setup was there and it was already impressive - but then I ran into a problem. You see, it was obvious that I need to set up a scoring table, with link fields to the competitors and with information about the dance in question and the scores.
Let me give you an example:
Leader (man) n:o 3 dances with Follower (lady) n:o 57. The dance is Tango, and the Leader gives the Follower a score of 8.0. Meanwhile, the Follower grades the Leader as a 7.5. These two scores are represented in the scoring table as two records:
Record1: 3 (link), 57 (link), Tango, 8.0
Record2: 57 (link), 3 (link), Tango, 7.5
All is dandy with this - but imagine that the scoring personnel would need to fill all this information manually, from scratch. Already the qualification rounds of the competition involved giving 1400 scores, so that’s 1400 records ad described above. All being done manually. Moreover, adding link data for Airtable records is all but fast, since Airtable actually opens up the linked record in question upon typing its number.
I didn’t think my app could actually be used in a real situation, where the competitors await eagerly the results, so the score calculations needed to be done very fast and efficiently.
I was sort of stuck - but then I found out Airtable also provides an API to other apps. And pretty soon I found Airtable Ruby by Nathan Esquenazy. And boy oh boy, it solved absolutely all of my problems! Pretty soon I had a Ruby script up and running on my Linux, and with the app I could create, alter and destroy the score records automatically on my scoring table.
In the end, my app works like this:
My app came to a real life test last Saturday when we held the competition. And everything worked like a charm! We had one person at the registration counter, filling in the competitor data. Then I divided the dancers to each qualification groups. Three persons filled the dancer’s scores. The results of the qualifications - and the final results - were ready within minutes of the competition.
We got a lot of praise from the dancer’s for everything running so smoothly. No wonder!
The best thing about my app and Airtable is that the score calculation process is completely scalable: each one in the personnel was logged into the Airtable with their own accounts, and we could’ve easily added more personnel to the task, if needed.
The only feature still missing from Airtable, which would have made the event even more exciting, is live sorting - it would’ve been so exciting to see the final scoring table, where the competitors change places as the score calculation progresses!
All in all, I am very happy about Airtable. Together with Airtable Ruby Client, it solved a complex problem which would otherwise have required me a lot more coding.
I would gladly show you pictures of my app, but atm I only have the real data in there, and for the sake of not showing any personal information to you, I decided not to add pictures of it yet.