Hackedin: Tech Stack Showdown

May 8, 2023
8 min read
By: Zach Merrill

At Mappedin, we make time every few months to participate in a company-wide hackathon, aptly referred to as Hackedin. Last month, we gathered in person for an entire week to collaborate and build our unique ideas. At first, there was no predetermined theme so the only limit was each group’s creativity. We asked ourselves a lot of questions. What should we build? Should we build that idea that’s a bit out of the box? If we could build that, should we? In the end, it turned out to be an amazing collection of projects that explored almost every part of our tech stack. Everyone was given a chance to present their project and answer questions from the wider team.

It’s impossible to fit all the amazing projects in a minute and a half, but click here to watch a short video showing off some of the exciting things the groups put together.

Projects

We asked some of the developers for details about their projects and their experience building them during the week-long hackathon. Continue reading to learn more about each one!

Aphrodite - The Map Beautifier

Please describe your idea. Where did it come from or what problem were you trying to solve?

We wanted to create an app to customize a map's colors on the fly. We also wanted to integrate OpenAI’s ChatGPT in some way.

What did you enjoy about working on this?

It was really exciting to try out dozens of prompts for the AI and see the colors it chose and its reasoning behind those decisions.

What was the most challenging aspect of this project?

We had to learn a little bit of prompt engineering! There's a lot that goes into getting consistent results with ChatGPT.

If you had more time, what would you add next?

If we had more time we would integrate with the Conversations API. That would allow users to have back-and-forth messages with the AI to tweak the map design.

Multiplayer/Collaborative Editor Experience

Please describe your idea. Where did it come from or what problem were you trying to solve

Multiplayer. Our new map editor has been designed from the ground up around a data/communication architecture that allows many people to make edits at the same time while maintaining the integrity of the data. We took advantage of this architecture and designed a system for updating clients of changes to the data in real-time, and also added cursors and user presence icons to indicate who is actively editing a venue. 

What did you enjoy about working on this?

It was really amazing to see the real-time changes “just work” once the data was flowing between clients; the simplicity of the multiplayer implementation really highlights the advantages of our architecture. Designing and implementing the backend pubsub service was a pretty informative learning experience for me as well.  

What was the most challenging aspect of this project?

The efforts by the entire  team in developing the architecture and associated components over the last year and a half were crucial to the success of this Hackedin project – this work was very much the tip of an iceberg of work done by everyone. 

If you had more time, what would you add next?

We would like to communicate data about the tentative features being created – at the moment changes magically emanate from the various cursors, but it’s not entirely clear what users are actually doing in the moment. We also briefly investigated smoothing the user cursor movement to minimize jitter but determined it was non-trivial, so mostly just improving UX and polish. Maybe we could add a chat feature? That would be cool.

Automatic Door Detection with Directions

Please describe your idea. Where did it come from or what problem were you trying to solve? 

This is an enhancement for our door detection algorithm adding predictions for direction of doors with ML magic. When a user is drawing over walls with entrances in the basemap, the algorithm places doors with swing directions and hinge locations based on our ML model’s prediction.

What did you enjoy about working on this?

Working with our next gen editor has been extremely fun and rewarding. For this project we enjoyed working with geometry and deck layers.

What was the most challenging aspect of this project?

Swing direction of doors was an interesting problem to solve. As ‘front’ and ‘back’ are relative terms and could not be defined without additional information of spaces such as differentiating a hallway from a room. To keep things simple we use clockwise and anticlockwise to denote direction and UI tooling exposes users to “flip the direction”.

If you had more time, what would you add next?

Implementing spatially indexing for the detected coordinates can optimize our search operation for intersections which will avoid potential lags while using the editor.

Styling for Print Maps

Please describe your idea. Where did it come from or what problem were you trying to solve?

I wanted to be able to generate a printable map from our CMS that is easy to use, which customers can use in static directories or other marketing material.

What did you enjoy about working on this?

It was nice to be able to export a very cool looking map with a click of a button.

What was the most challenging aspect of this project?

Working on the CMS platform was definitely a challenge since it had many unique features which required a lot of learning and testing.

If you had more time, what would you add next?

If we had more time, we would have made it possible for users to configure and fine tune the exported map to their exact needs and branding.

Styling Maps with Stable Diffusion and ControlNet

Please describe your idea. Where did it come from or what problem were you trying to solve?

Our CTO brought forward some cool examples of people using Stable Diffusion and ControlNet to generate renders in Blender. To quickly sum up each technology, stable diffusion is an ML model that generates images from text prompts, and ControlNet allows you to steer the generated output from stable to match your characteristics of user-provided input data.

For Hackedin, we attempted to use our building data to create realistic renders of our maps as a potential way to style client data automatically. A lot of manual work goes into designing and creating stylized maps, this could save us a lot of time and create some beautiful maps we maybe would not be able to offer clients otherwise. 

What did you enjoy about working on this?

It was fun working with stable diffusion and ControlNet, truly some amazing stuff - this tech being all over the place in the future.

What was the most challenging aspect of this project?

My hardware is only okay at running inference on these ML models, testing changes to my input would require some wait time (30 seconds to 2 minutes) between renders.

My output images did not look as good as a lot of examples out there. Getting familiar with the text prompts and what works well with stable diffusion takes some practice. If you have better hardware you can also up the resolution of the images being processed and generated and this can have a big impact on the quality of the results.

If you had more time, what would you add next?

It would be cool to get it working in our product, i.e.have a button that generates a render of the current camera angle of the venue, or even better, get it working in real-time.

Mappedin Sharpie - Front End Library

Please describe your idea. Where did it come from or what problem were you trying to solve?

We wanted to create a quick and easy way for people to build front-end applications in the style of Mappedin’s other consumer-facing products.

What did you enjoy about working on this?

It was fun to do some deep thinking about the user experience! We were focused on making it as easy as possible for an inexperienced developer to get something that looked similar to a Mappedin app running.

What was the most challenging aspect of this project?

It was challenging to decide how to separate logic from each component so that they could be more reusable. Our current components are built with Mappedin-specific use cases in mind, so figuring out what we wanted to remove or separate was tough.

If you had more time, what would you add next?

If we had more time, we would try to port over most of our components from the Mappedin Web App, as well add thorough testing to ensure that everything functions correctly. We would also add more documentation to make it easier for somebody to get set up using it.

Wrap Up

This has been just a small subset of the exciting things that were shown. In the future, we’ll be creating even more content to show off our amazing developers and the work they do. Be sure to follow us on Linkedin to stay up to date on all things Mappedin. 

Enjoyed this? Come work with us! We’re always on the lookout for passionate individuals who love indoor mapping tech. Visit our careers page to see our open roles and find your next project.