This is our second hackathon for this year (do check out the first hackathon here). Our team is keen on having a hackathon every 3 months. Hackathon is the time for team members to experiment with new technology, to indulge in offbeat ideas and to build something crazy that would delight our customers at the same time.
We have hired interns on a regular basis as we strongly believe in giving back to student community. It provides a great opportunity for students to learn about the industry. We had awesome interns this summer, and we wanted them to experience the hackathon at Teamie.
Let us hear from our Interns on what they think about the Hackathon.
I really enjoyed this hackathon as it exposes me to many interesting ideas and various technologies out there. This is very different from other hackathons which usually limit what you can build and use. Good job for the team who organize it! And looking forward to many more interesting products from the future hackathons! – Max Kusnadi
The hackathon was a great learning experience as there are many new technologies being used in other colleagues’ presentations. I was amazed by some truly innovative ideas, such as facial emotion detection and virtual classroom. There were also well-executed projected that looked extremely polished and production-ready, such as the pi bot for gif and youtube. Good job for everyone who hacked up something interesting. – Zhu Liang
There was no specific topic for the hackathon and this created a lot of possibilities. Everyone can do whatever they think might be useful and interesting. Some ideas were very innovative and some were very inspiring, such as the facial expression detection. I really enjoyed all the presentations. Furthermore, everyone had a choice to work on a project alone or join others and work as a group. This gave us the freedom to choose teammates and projects and thus gave us more motivation. Moreover, the time span of the event was appropriate. It wouldn’t drain our energy and at the same time it imposed necessary pressure on us to help us grow. – Chuxin Liao
I find the hackathon very fun. I think it is a very clever move by teamie, it really surface some interesting ideas that can potentially integrated into the system in the future. From an intern point of view, I am very excited as well as curious to see what everyone is able to built in the hackathon. Also, I think including interns like us in hackathons really provide more width and extra dimension towards the hackathon. Overall, it is a good and fulfilling experience. – Chan Khan
Let us take a look at some of the ideas from the hackathon
One of our developers wanted to make it easier for you to attach videos and GIFs to Teamie post comments. The traditional way of searching for a video from youtube and pasting a link is time consuming, especially if you need to comment on multiple posts. This hack enables you to search for YouTube videos and GIFs from within the comment box itself. And this is done by invoking Teamie’s mascot Pi through a special command 🙂
While working on the Activity Stream, a developer realized there is no way to detect how happy or sad our users are when using Teamie. (We all have that day when the coffee machine stops working don’t we?) So he teamed up with another developer and implemented image emotion detection. You could submit photographs of your face (which could be taken through a web camera) and Teamie would tell you how happy or sad you are. Drawing inspiration from the ability of Google Photos to detect facial emotions in photographs, the team used Google Cloud Vision API for this hack.
Ask Me Anything
One of our interns wanted to use a computational knowledge engine (e.g: WolframAlpha), which can answer questions like who is albert einstein? The exact process is described below.
- Each function is associated with a list of verbs and a list of nouns. eg: (‘create’, ‘make’) and (‘classroom’, ‘lesson’) together defines the function ‘create classroom’.
- For any query, we extract the verb-noun pair and compare the similarity between the query and all functions.
- Google Natural Language API is used to identify the main noun and verb of a query: noun — word that is identified as object, use subject when object is not detected, verb — word that is identified to be a verb and also is the root of the parsed query
- A word2vec model trained on text8 (a small scale public text resource) is used to assess the similarities between two words — it has a function S that takes in two words and outputs value between 0 to 1, with 1 being identical.
- The similarity of a function F with noun list NL and verb list VL to a query Q with noun N and verb V is calculated as minimum( maximum( S(each of NL, N) ), maximum( S(each of VL, V) ) )
- If and only if the highest matched function has a similarity score beyond a threshold (which is set to be 0.7), it will be considered a match to the query.
Pick your theme
When we conducted a survey among Teamie users to find out what they’d like to have on Teamie, some of them felt it would be great to personalize Teamie’s look. This hack was done by a cross-functional team consisting of a developer, a designer and a customer support executive. It lets you pick a theme of your choice for Teamie!
Virtual Reality is a promising technology that drives engagement among users (read this to know how Virtual Reality can be leveraged in Education). One of our interns was excited to explore how we can bring Virtual Reality to Teamie. The GIF below shows a virtual classroom, in which a user can use Google Cardboard viewer or any other similar viewer to enter and browse content in the classroom. The virtual classroom was created using A-Frame which is an open-source framework for creating 3D and virtual reality experiences on the web.
Emoticons are a great way to express emotions on both web and mobile and a team of developers wanted to make Teamie support Emoji. And that’s exactly what they hacked!
There are a lot of code reviews done by developers at Teamie and at times it becomes difficult for the human eye to detect subtle changes. Additional white spaces in code, for instance. This hack was done by a developer who was dissatisfied with existing tools and went ahead to build a plugin using Bitbucket API.
One of our developers was done with his hack much earlier than the hackathon deadline. Since he had time on his hands, he decided to hack some more. The result was keyboard shortcuts! It enables power users to do things quickly on Teamie.
One of our interns felt the admins in the Teamie ecosystem were feeling left out. The dashboard provides insightful stats for administrators. Some interesting metrics available in the dashboard are Average time spent by visitor per day for the entire year and no. of homework tasks due per day for the entire year. The calendar view was created using calendar-heatmap which uses d3.js and the calendar heatmap was customised to allow support for future dates.
Visitors Live Count Widget
Widgets in mobile app provide just in time information for users, and one of mobile app developers wanted to provide that information for Teamie admins. The Android widget shows the real-time visitor count on the site and also has an option to update the real-time visitor count as shown in the GIF below.
Testing with Appium
Automating the testing process is a huge time saver and one of our QA engineers explored a new tool called Appium. It’s an open-source tool for automating native, mobile web, and hybrid applications on iOS and Android platforms. One of the challenges faced was that when automating a hybrid app, Appium failed to detect the context when switched from Native view to webview. To make this work, the app being tested should have the webview debugging option enabled which would allow Appium to detect the webview context.The GIF below, shows how the login workflow was automated using Appium.
Interactive Teamie Intro Video
At Teamie, it’s not only the developers who participate in the hackathon. This time around our marketing manager got involved too! Reaching out to every learner in the world is a difficult process and our marketing team wanted to make it easier for anyone in the world to get a good understanding of Teamie. The marketing team developed a very basic interactive video which will showcase various Teamie features like Collaborative Learning, Tracking and Analytics etc. This was done by leveraging YouTube Annotations.
An infrastructure engineer wanted to explore how Amazon Machine Learning can be leveraged by Teamie. The hackathon was a good opportunity for him to play around with the tool, feed it with data and see what comes up. At the end of the hack, our engineer was able to predict which learner would score 40 marks in a test as shown in the screenshot below. In the dataset chosen 70% was used for training and 30% was used for testing the trained model.
Some of our users felt that they had to browse multiple calendars to know the different calendar events, so this hack built an option to export the calendar events into a single calendar.
Jenkins & Protractor & Allure Test report
Continuous Integration ensures that any enhancements to existing features or new features which we build don’t end up breaking existing functionality. So one of our testers played around with the combination of Jenkins and Protractor to see how it fares. He created a suite of tests that any person in the team could run. The tool also provides an interface to check which of the tests have passed or failed.
That brings us to the end of this blogpost on our Second Hackathon. It was a great learning experience for all of us. Our aim in having these hackathons is also to make these hacks a part of our core product. One of the hacks from our previous hackathon, “Auto Publishing of lessons” has shipped to our customers already and we will be shipping the “Android Wear Widget” too shortly.. You can look forward to seeing some of the hacks from this hackathon too in our upcoming releases. So stay tuned by subscribing to our blog! If you have any idea that you think can make a difference for Teamie users, do let us know as we are always looking out for new ideas 🙂