· 4 min read
Hackathons at Mappedin
Throughout the year, Mappedin hosts hackathon events to provide developers with opportunities to work on projects that are outside the scope of our regular sprint work. In the past, hackathons lasted only one day and occurred once a month; however, we have adjusted this event format to support a three-day-long event that occurs once every couple of months. We call this event Hackedin.
Hackedin provides Mappedin employees a chance to collaborate with coworkers from different teams and to gain exposure on projects that you may not be familiar with. Developers have the flexibility to choose any project, whether from a list of Hackedin ideas that other team members have come up with, or something that you come up with on your own. Oftentimes, Hackedin projects end up turning into useful product features and sometimes they are simply fun, one-off hacks that help the team learn a new skill. Afterwards, we all get together for a meeting so that everyone can show off what they’ve built.
As a software tester, I like to try out dev work during our hackathons so that I can expand my skill set and learn a few new things. An example of a one-off hack that I’ve worked on is a Python script that can convert map data into a Minecraft world. A few of my coworkers were experimenting with a Python library that allowed them to edit Minecraft world files and insert blocks. I created a script that goes through map data layer by layer and uses a line drawing algorithm to connect points and create the polygons that make up the walls and locations on the map. The script then goes back and fills in solid layers like floors using a simple algorithm that works like a bucket fill tool. I used this to create a to-scale version of one of our test mall maps in Minecraft that you can walk around in.
Another fun project that I worked on recently with another coworker was creating a Slack bot that uses the Steam API to find common games for groups of people. There are several different formats of Steam ID, so the bot will take in a list of IDs of various formats and convert them all to the standard Steam account ID format. The bot will then make a request for each ID to get a list of games that the user owns and return a list of games that are common to all users. In the future, we might want to store each users’ owned games in a database so that the bot doesn’t have to make several requests every time it runs. My coworker came up with this unique idea when we first started working from home as a useful way of finding games to play for team activities.
Last summer we had a hackathon where, prior to its start, we came up with a list of product features that we wanted to try implementing by the end of the day. The list came from our product team, who were relaying information about which features our customers wanted to see in their maps. We then split up into teams based on which projects we wanted to pick up. My team, in particular, was tasked with implementing the ability to add custom links within location profiles in our Mappedin Responsive Web App and Mappedin Digital Directory products. My job was to work on the front-end portion of the Mappedin Digital Directory.
The link could be added in the Mappedin CMS so that the person managing the maps could edit both the text and the webpage URL. The idea was that after selecting a location on the map, the user would see a tab on the location’s profile page and be prompted to scan a generated QR code with their mobile device. After scanning, the corresponding webpage would open right in the browser. An example use case would be navigating users to curbside pickup registration. While we successfully delivered a working proof of concept for our Digital Directory by the end of the day, the feature was released specifically for our Responsive Web App product.
A similar project that came out of that hackathon was the related locations feature which shows related points of interest in a location’s profile page. This can be useful to a user viewing the curbside pick-up area for a retailer, or multiple occurrences of a restaurant chain in a stadium, for example. Related locations can now be used in our Responsive Web App.
During another recent hackathon, I worked on a feature suggested by our product team: a way for users to save their parking spot on the Responsive Web App map once they’ve arrived at the venue. I used the existing framework that we have in place for saving your section in a stadium venue, but modified it for saving parking spots. The user is able to select a parking spot on the map and add a marker that persists through page refresh and closing the map. Users can easily navigate to and from the parking spot, clear the marker if it’s no longer needed, or add a different pin if they relocate their vehicle.
A lot of useful product features come out of Hackedin and it’s a great opportunity for the Mappedin team to develop new skills and be exposed to projects outside of their usual sprint work.