In the final week of the semester, the team demonstrated our project Guesstoric in the trade show. There were aspects of the project that were working however there were also aspects that were not working properly. Overall, unfortunately I would say a lot of the aspects that were not functioning properly had impacted greatly and negatively on the user experience, particularly in the first hour of the trade show. These aspects are outlined below:
What was working:
- The user could enter their name in the welcome page and be displayed in the scores page
- The user could choose a continent which would set up the content for the following questions
- Some continents could display an image from Trove fine e.g Oceania. Users were then encouraged to choose this location while the issues were being resolved
- Checking the input and displaying correctly/incorrectly entered characters
- The scoring system (some of the time)
What wasn’t working:
- Although the user could choose a location, the Trove API calls were not yielding any images for many of the continents
- The Wiki API to extract relevant text
- The plan B which had to be implemented due to the lack of Wiki-extracted text. This was to hard-code the text into the data.JSON file from Wikipedia, and then pull it from the JSON file onto the page. There was a syntax error which was impossible to pinpoint in the data.JSON file and the questions were unable to display any of the text.
- The scoring system would display a score outside of the range e.g 600/100.
What was an interesting and unintentional outcome, was that because the images rarely appeared and there was no text, this had made the game incredibly challenging and some users actually enjoyed trying to answer these ‘impossible’ questions. Although this was not intended, it was interesting and a little humorous to see.
We had also conducted user testing (lead by Sho) during this session and received an array of feedback. It discusses information about the users themselves as well as what frustrated them about the game, what they liked about it, what could be improved etc. These findings can be found here: https://drive.google.com/file/d/0BzY5tywhuJqrdVNKeFdKTkc4Vk0/view?usp=sharing
Reflection on Demo:
Overall I felt the demo (as well as the pitch) had communicated and given users a basic idea of the concept, however there were a lot of issues that arose during the demonstration that unfortunately did not give justice to the true capabilities and features of Guesstoric. A lot of these issues could have been prevented and solved through various methods, however the biggest lesson to take home was that this should have been tested in-situ a lot earlier. The biggest contributing factor to the issues that arose was that a lot of the functionality was quickly integrated into the system all at once without first testing bit by bit if it works the way it should. Instead of implementing a feature and relying on the fact that it should all work, it would have been best to test the feature working in relation to the rest of the system.
By proper testing before the demonstration, this would have prevented the need (and stress) to fix bugs while people wanted to test our product. Another contributing factor to the issues that arose, was that it wasn’t communicated early enough that the Wiki API would not be working, and that a plan B would need to be set in place. In fact this was only found out less than an hour before the demonstration. Earlier communication surrounding this, or even proactively attempting to implement a plan B by the responsible team member themselves would have helped to alleviate this last-minute hurdle.
The individual technical issues faced and proposed solutions are further discussed below:
- Syntax error in JSON file:
- After the demo it was discovered what the syntax error was. Because it contained information that was copied from a Google Doc, the quotation marks in the Google Doc were actually a different ASCII value to the proper quotation marks needed in the code. This would have been solved by using an online syntax checker to pinpoint exactly where the syntax error occurs. This was needed as my current code editor (Brackets) does not show the location of errors in JSON files.
- Trove images not appearing:
- Many of the images were not appearing mainly due to the search term not yielding any results. This was overcome in 3 ways:
- by slightly modifying the search term e.g ‘Empire state’ yielded more results than ‘Empire state building’
- by completely changing the monument if absolutely no images for that monument are found
- by adding more website sources e.g Flickr, nla.gov, etc
- Scoring system not displaying correct score:
- Sometimes the user would get a score over the range of 100. This would suggest the score is not resetting properly at each round, and so this reset was added to the code each time a user enters a new question round. A check for negative score values was also added.
Next Steps:
The next steps for the team is to work towards the final report and make several changes to the final product.
The changes I worked on was getting the images from Trove to appear, pulling multiple images from Trove, randomisation on both the questions and the images that appear to enhance dynamic behaviour and add a loading animation/image. Unfortunately due to time constraints the features of the project that were unable to be completed by the end were levels of difficulty, an instruction page and extracting text from Wikipedia.
Getting the images to appear from Trove involved the 3 approaches as described above. Adding multiple images just meant wrapping the ‘$(outputName).append(image)’ line in the processImages() function in a for loop that looped twice (if more than 1 image was found). It was necessary to check if more than 1 image is found for each question before appending the output with the images in the loadedImages array, so as to avoid an Uncaught TypeError: Cannot read property '0' of undefined error.
Randomising the questions that appear for each continent involved creating a new ‘shuffledQuestions’ array and using a ‘shuffle’ function to randomise the order of the questions. E.g [1,2,3,4,5] could become [3,5,1,4,2]. These numbers in this array would then be used as indices to access the question content i.e questions[2].outputNum became questions[shuffledQuestions[2]].outputNum. The shuffle function works by iterating through each element in an array and assigning its value to another random element in the array. This function was also used to shuffle the images extracted from Trove. The algorithm can be seen below:
Algorithm used to shuffle/randomise items in an array
Reflection on the Course:
Overall I feel that I have learned a lot from the course over the semester. I feel as a team we had pulled together a product that we are all proud of, albeit not all features were implemented. In saying this, I’ve also learned in team projects such as this, it is important to not plan/aim for too many features, however judging what’s potentially too much versus just the right amount of work to be done is also a skill that is learned during these projects. I’ve also learned a lot about teamwork, and where these processes could have been improved throughout the semester.
I found myself frequently taking on a leadership role throughout the semester. I did not necessarily appoint myself in a leadership role, rather I took charge and delegated tasks wherever I felt it was necessary. Other team members had also shown leadership in some aspects of the project and so the roles within the team were not set in stone but rather depended on the situation and context. Haven taken a leadership role for a large part of the project, I felt responsible for making sure the project is progressing as it should and that each team member (including me) has an equal share of work and pulling in their weight. I found this to be a challenge, and had some concerns particularly towards the end of the semester, that the work delegated was not equal. I may have taken on too many tasks, and some of the team members may have been looking for things to do. It is essential in these situations to communicate openly and honestly, and ensure that each team member knows how to contribute as they should.
Overall I enjoyed this course, collaborating with others creatively and learning both technical and project management skills.