{
    "componentChunkName": "component---src-design-system-templates-article-index-tsx",
    "path": "/blog/developers/use-cases/generating-blue-dot-testing-data/",
    "result": {"data":{"contentfulComposePage":{"title":"Generating Blue Dot Testing Data","seo":{"title":null,"description":null},"content":{"author":"Jere Suikkila","publishDate":"Jul 26, 2022","updatedAt":"Jul 28, 2022","content":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Blue Dot is one of the most requested and exciting features of indoor maps and \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://www.mappedin.com/blog/product/positioning/what-is-blue-dot-wayfinding\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"wayfinding\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\". It helps users locate themselves on the map in an instant. With our Mappedin SDK, it only takes a few lines of code to \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://developer.mappedin.com/web-sdk/v4/blue-dot\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"enable and draw the Blue Dot on the map\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\".\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Fingerprinting the venue for indoor positioning and quality control of the positioning accuracy require physical presence at the venue. To develop Blue Dot-enabled applications, you’ll need to test them in various ways. Many test cases and prototyping can be done remotely if representative test data is available. While in-person walks to perform testing in a venue has its benefits, it may not be the most practical and using test data provides repeatable and possibly automated test cases for your application.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"At Mappedin, we organize \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://www.mappedin.com/blog/company/culture/employee-q-and-a-ben-liu-coop-student-turned-senior-software-developer/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"quarterly hackathons\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" where developers spend a few days to build interesting demos. One of these interesting demos was a project \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://www.mappedin.com/blog/company/culture/employee-q-and-a-ben-liu-coop-student-turned-senior-software-developer/\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"Ben Liu\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" (Staff Software Developer, Team Lead) and I created for generating fake Blue Dot traces for testing purposes. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"During the latest Hackedin, I moved it to a CodeSandbox, so that anyone can take advantage of easy test data generation. The source code and the application are available at \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://codesandbox.io/s/bluedot-data-faker-wilhwv\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"https://codesandbox.io/s/bluedot-data-faker-wilhwv\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\".\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"<iframe src=\\\"https://codesandbox.io/embed/bluedot-data-faker-wilhwv?fontsize=14&hidenavigation=1&theme=light&view=preview\\\" style=\\\"width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;\\\" title=\\\"bluedot-data-faker\\\" allow=\\\"geolocation;\\\"></iframe>\\n\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"To open the application in full page view, visit \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://wilhwv.csb.app\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"https://wilhwv.csb.app\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\".\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"To start generating data, click on locations and set them as start and destination positions. Click \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"bold\"}],\"value\":\"Generate \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\"to see a route calculated using the paths in Mappedin’s data and the Blue Dot walking along that path. To generate some noise in the data, it’s possible to have the Blue Dot randomly miss the exact path by increasing the jitter value. You can also adjust the accuracy value, which will display the transparent inaccuracy indicator underneath the Blue Dot.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The output is a JSON array of geolocations, following the style of \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://developer.mozilla.org/en-US/docs/Web/API/GeolocationPosition\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"underline\"}],\"value\":\"GeolocationPosition\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" Web API.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{\"target\":{\"sys\":{\"id\":\"5ekBTFEQtFc9R8EoxC1aIA\",\"type\":\"Link\",\"linkType\":\"Entry\"}}},\"content\":[],\"nodeType\":\"embedded-entry-block\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"While this example shows our Mappedin Demo Mall, you can easily change the venue slug, client id, and client secret values to generate data for your own venue. You can download the generated positions in JSON format. To test the data in your application, you could use a similar Blue Dot \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"bold\"}],\"value\":\"PositionUpdater\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" to what’s demonstrated by the data generator to play back the “recording”.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"In a follow-up blog post, I’ll dive more into a CodeSandbox for visualizing positions, including some additional samples for our Mappedin Web App as well as mobile apps.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}","references":[{"contentful_id":"5ekBTFEQtFc9R8EoxC1aIA","__typename":"ContentfulCodeBlock","code":{"code":"[\n  {\n    \"timestamp\": 1583957906820,\n    \"coords\": {\n      \"accuracy\": 5,\n      \"latitude\": 43.52012478635707,\n      \"longitude\": -80.53951744629536,\n      \"floorLevel\": 0\n    },\n  \"type\": 0\n},\n…\n]"},"language":"JSON","settings":null}]},"image":{"file":{"url":"//images.ctfassets.net/wdjnw2prxlw8/4f6w7xYxTgGdZe03C5Fo72/1c94f15d052d0eaeb527028221626138/Screenshot_2022-07-21_at_15.20.56.png"}},"pdf":null,"relatedPosts":[{"title":"Integrating Indoor Positioning System with Mappedin SDKs","slug":"ips-integration","content":{"__typename":"ContentfulBlogPost","author":"Jere Suikkila","publishDate":"Feb 15, 2022","updatedAt":"Jul 6, 2022","tags":{"category":{"name":"Developers","slug":"developers"},"topic":{"name":"Use Cases","slug":"use-cases"}},"content":{"raw":"{\"data\":{},\"content\":[{\"data\":{\"target\":{\"sys\":{\"id\":\"yV1ZZQhfqbkAoBwXzD0Xn\",\"type\":\"Link\",\"linkType\":\"Asset\"}}},\"content\":[],\"nodeType\":\"embedded-asset-block\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"bold\"}],\"value\":\"You are here\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" is one of the first things we expect to find on a map today. There is no need to manually triangulate our position based on stars because the device we hold in our hands can already tell us our location. That is if we are outdoors. The story gets more complicated if we move indoors.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"With Indoor Positioning Systems (IPS) users can see their precise location represented by a blue dot within the context of an indoor map. Similar to outdoor GPS, users are not required to enter a \\\"start\\\" location and as they begin to follow along a route, the blue dot moves with them, providing an enhanced navigational experience.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Indoor Positioning Systems are valuable components of rich indoor mapping experiences. They ensure that the user does not need to know their location in a venue. This saves both time and confusion, making for a much more pleasant wayfinding experience.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"GPS has about 3 meter accuracy when we are outside and have no obstructions such as skyscrapers around us. However, inside a building, GPS is nearly useless. That's why several technologies have been developed to provide indoor positioning in various scenarios such as \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://resources.mappedin.com/blog/what-is-blue-dot-wayfinding\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"wayfinding\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\", \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://resources.mappedin.com/blog/indoor-mapping-use-case-asset-tracking\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"asset tracking\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\", contact monitoring and smart building applications.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Positioning smarts for indoors\",\"nodeType\":\"text\"}],\"nodeType\":\"heading-2\"},{\"data\":{\"target\":{\"sys\":{\"id\":\"4aHfBcHMLcb5o2fmxayffP\",\"type\":\"Link\",\"linkType\":\"Asset\"}}},\"content\":[],\"nodeType\":\"embedded-asset-block\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The different indoor positioning systems have different tradeoffs. For example, using beacons requires installing Bluetooth Low Energy (BLE) devices in known positions around the venue. WiFi-based systems use existing infrastructure and requires a radio frequency mapping of the venue. Some systems blend multiple technologies in sensor fusion to further process the positioning data into a more accurate representation of the actual position.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"To integrate with the Mappedin SDKs, it does not really matter what underlying technology is used to obtain the indoor position as long as it can provide information about the current floor and the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://developer.mozilla.org/en-US/docs/Web/API/GeolocationCoordinates\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"geocoordinates\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" (latitude and longitude). Based on that the Mappedin SDK is able to \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://developer.mappedin.com/guides/webv4/bluedot\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"place the Blue Dot on the map\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" indicating the current position of the device.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{\"target\":{\"sys\":{\"id\":\"7tbzSHUglPtWzsIa9kPuUD\",\"type\":\"Link\",\"linkType\":\"Entry\"}}},\"content\":[],\"nodeType\":\"embedded-entry-block\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"One of the easiest ways to \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://resources.mappedin.com/blog/product-101-imdf-export\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"setup Indoor Positioning System is Apple's infrastructure-free positioning\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" combined with Mappedin map rendering and data management.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Integrating positioning data with Mappedin React Native SDKs\",\"nodeType\":\"text\"}],\"nodeType\":\"heading-2\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Below is the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://developer.mappedin.com/guides/react-native/quickstart/\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"minimal implementation of drawing a map\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" with Mappedin React Native SDK. In 5 minutes, we will build on this code to display the Blue Dot and override the positions from a premade path of geocoordinates. After ensuring everything works as expected, you can easily connect the IPS to provide the position to Mappedin SDK instead\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{\"target\":{\"sys\":{\"id\":\"aRyiK6XjGEWNpHL0a2E4F\",\"type\":\"Link\",\"linkType\":\"Entry\"}}},\"content\":[],\"nodeType\":\"embedded-entry-block\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We have pregenerated a route in \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://developer.mappedin.com/code/sdks/react-native/positions.json\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"},{\"type\":\"bold\"}],\"value\":\"positions.json\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" that can be used for debugging Blue Dot features in \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"},{\"type\":\"bold\"}],\"value\":\"mappedin-demo-mall\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\". Below is the first element of the list, which we will set as our starting coordinate for camera focus. It follows the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://developer.mozilla.org/en-US/docs/Web/API/GeolocationPosition\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"specification of Geolocation Position of Web APIs\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\".\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{\"target\":{\"sys\":{\"id\":\"WWftOy5W8uhstWiXOHYNk\",\"type\":\"Link\",\"linkType\":\"Entry\"}}},\"content\":[],\"nodeType\":\"embedded-entry-block\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"First, we create a \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"},{\"type\":\"bold\"}],\"value\":\"MappedinCoordinate\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" for our starting location and zoom in the camera to get a closer view of the Blue Dot.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{\"target\":{\"sys\":{\"id\":\"4nDiMFiWYwIzJj2E7aOJsU\",\"type\":\"Link\",\"linkType\":\"Entry\"}}},\"content\":[],\"nodeType\":\"embedded-entry-block\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"We set the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://developer.mappedin.com/docs/react-native/latest/enums/state\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"map state\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" to \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"},{\"type\":\"bold\"}],\"value\":\"follow\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\", which keeps the Blue Dot in the middle of the view. Then we enable the Blue Dot and set the starting location.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{\"target\":{\"sys\":{\"id\":\"3gV9owEJDn12XKswCpc1ko\",\"type\":\"Link\",\"linkType\":\"Entry\"}}},\"content\":[],\"nodeType\":\"embedded-entry-block\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"To walk through the list of positions, we can create a simple interval outside of our \",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[{\"type\":\"code\"},{\"type\":\"bold\"}],\"value\":\"render\",\"nodeType\":\"text\"},{\"data\":{},\"marks\":[],\"value\":\" method for overriding the position every few seconds. The position will jump to the start after the route is completed. This code is not optimized and should be replaced with the positioning updates coming from your IPS.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{\"target\":{\"sys\":{\"id\":\"7D6MiKAE2X6B36mYYzcoK2\",\"type\":\"Link\",\"linkType\":\"Entry\"}}},\"content\":[],\"nodeType\":\"embedded-entry-block\"},{\"data\":{\"target\":{\"sys\":{\"id\":\"29dn1eaOYbx5f8K4w1D0Pf\",\"type\":\"Link\",\"linkType\":\"Asset\"}}},\"content\":[],\"nodeType\":\"embedded-asset-block\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Completed sample\",\"nodeType\":\"text\"}],\"nodeType\":\"heading-2\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Below code sample can be pasted into a fresh \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://developer.mappedin.com/guides/react-native/\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"React Native starter project\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" with the addition of \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://developer.mappedin.com/code/sdks/react-native/positions.json\"},\"content\":[{\"data\":{},\"marks\":[{\"type\":\"code\"},{\"type\":\"bold\"}],\"value\":\"positions.json\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\".\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{\"target\":{\"sys\":{\"id\":\"7hyVSBE6ShMkx2Qu837G2w\",\"type\":\"Link\",\"linkType\":\"Entry\"}}},\"content\":[],\"nodeType\":\"embedded-entry-block\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Summary\",\"nodeType\":\"text\"}],\"nodeType\":\"heading-2\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Mappedin SDKs are ready to work with any IPS provider that can be integrated with your app to provide geolocation and floor to Mappedin within minutes. The Blue Dot can be enabled and then connected to the position updates in just a few lines of code, delivering accurate indoor positioning and enhanced wayfinding experiences.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"If you want to discuss indoor positioning as it relates to your venue, \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://www.mappedin.com/contact-us/\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"contact us now\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\".\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"blockquote\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"articleType":"Dev Content","image":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAABoVBMVEXR3N/x8fHS0tKQkJCSkpLq6urT0tIOXXXM1djT1NTm5ubCwsK1tbXv7+9Yjp67yc2sr7TQ0dTo6OjE1Nnj4+OqqqrIyMgkbIG5ys/a2tvw8PDr6+uko6Nei5mlu8K8vsLu7u62y9Ht7e07eo2pwcnq6uvm5+jT3N+4y9GcucFGgZNAfI5SiZo6eYwian8MXHSrxMzh5ueJrLYhaoAja4EdZ30ZanoWe4wGXnY/UWVGV2sDV3BmS1wsVGqevMXM1tkdZ3xMWm4MVW4HYXgSbIAXZXsydYlBf5FTippjlaNzn6x/pK+StL5JgZFZY3W0f4kKWHCjvcW+zuTM1+nW1tacnJzl5eXR0NDs7OyFrLjt7u7b4OESXnU5Wm8UVW2MrrioqKje3t63t7d9fX3Ozc1qnKtwn61om6pll6YLWnJXh5bU1NS6urrf39/Pz8+Tk5Pp6enAv79omqkuWW1kTF2Wtr9ZWVnBwMCdvcaQtb/g6u1pm6ocY3gEV3B1nqrFxMTNzMzn5+dlZWXAvr9tnq0laX5HSVxklqTh4eHV1dVVVVWFZ6dkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5gkTDjAgrcPzDgAAALpJREFUCNdjZGDEAL8Zhd8JMzK+52VlZPzJARZ6JMnGqPhG9IXEv4dKyEpZ+B98UbxvIAQXABr3j4WPgeGHHZDzkwGo+5I+WIIJKPicDwjExAXu8NvtvszHt52XhZchEqJvVfhbPkYGhqOeDAxMPKm8vLz3eHh4GICQJ5/hPy/DKRYmBgYuRkvGGaIcXxg+i/5geM7G8I9FEKK5iJGxk3lJbTdIAxMTz7vXbziBYAoHF98fjnZh+bfhZgDvBy0LpeAB/AAAAABJRU5ErkJggg==","aspectRatio":1.7768817204301075,"src":"//images.ctfassets.net/wdjnw2prxlw8/yV1ZZQhfqbkAoBwXzD0Xn/e605b6b14ed11811c0cb5f995cdd75a0/bluedot-accurate.png?w=480&q=50","srcSet":"//images.ctfassets.net/wdjnw2prxlw8/yV1ZZQhfqbkAoBwXzD0Xn/e605b6b14ed11811c0cb5f995cdd75a0/bluedot-accurate.png?w=120&h=68&q=50 120w,\n//images.ctfassets.net/wdjnw2prxlw8/yV1ZZQhfqbkAoBwXzD0Xn/e605b6b14ed11811c0cb5f995cdd75a0/bluedot-accurate.png?w=240&h=135&q=50 240w,\n//images.ctfassets.net/wdjnw2prxlw8/yV1ZZQhfqbkAoBwXzD0Xn/e605b6b14ed11811c0cb5f995cdd75a0/bluedot-accurate.png?w=480&h=270&q=50 480w,\n//images.ctfassets.net/wdjnw2prxlw8/yV1ZZQhfqbkAoBwXzD0Xn/e605b6b14ed11811c0cb5f995cdd75a0/bluedot-accurate.png?w=720&h=405&q=50 720w,\n//images.ctfassets.net/wdjnw2prxlw8/yV1ZZQhfqbkAoBwXzD0Xn/e605b6b14ed11811c0cb5f995cdd75a0/bluedot-accurate.png?w=960&h=540&q=50 960w,\n//images.ctfassets.net/wdjnw2prxlw8/yV1ZZQhfqbkAoBwXzD0Xn/e605b6b14ed11811c0cb5f995cdd75a0/bluedot-accurate.png?w=1322&h=744&q=50 1322w","sizes":"(max-width: 480px) 100vw, 480px"}}}},{"title":"Employee Q&A: Ben Liu - Co-op Student Turned Senior Software Developer","slug":"employee-q-and-a-ben-liu-coop-student-turned-senior-software-developer","content":{"__typename":"ContentfulBlogPost","author":"Lucy Bragg","publishDate":"Feb 25, 2022","updatedAt":"Feb 25, 2022","tags":{"category":{"name":"Company","slug":"company"},"topic":{"name":"Culture","slug":"culture"}},"content":{"raw":"{\"nodeType\":\"document\",\"data\":{},\"content\":[{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"In only two years, Ben Liu transitioned from a co-op student to a Senior Software Developer at Mappedin. Astonishingly, he now manages his own co-op student. We delve into his journey and his reasons for why a Software Developer should start structuring their career at Mappedin. \",\"marks\":[],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"Ben, thanks for chatting with me. To begin, can you tell us about your current role at Mappedin?\",\"marks\":[{\"type\":\"bold\"}],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"I’m currently a Senior Software Developer on the Product and Platform team, specifically team Ship It, which is primarily responsible for our pre-built front end applications: Mappedin Web and the Mappedin directory experience. I’m responsible for maintaining those two applications, along with a host of other smaller applications, and I’m the technical owner of the Mappedin Web V2 experience. \",\"marks\":[],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"You’ve had an impressive journey at Mappedin over the last two years! You started as a co-op student, transitioned into a part-time employee, and now manage your own co-op student. How has this experience been for you?\",\"marks\":[{\"type\":\"bold\"}],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"It's been pretty crazy; I definitely didn't think that I would progress so fast. I was quite lucky in terms of timing because when I first \",\"marks\":[],\"data\":{}},{\"nodeType\":\"hyperlink\",\"content\":[{\"nodeType\":\"text\",\"value\":\"joined Mappedin as a co-op student\",\"marks\":[],\"data\":{}}],\"data\":{\"uri\":\"https://www.mappedin.com/blog/company/culture/employee-q-and-a-ben-liu\"}},{\"nodeType\":\"text\",\"value\":\", I got to jump right in and work on a huge feature upgrade to one of our primary pre-built products. We were working on our next generation directory upgrade, and there was a significant chunk of improvement work, so I learned a lot about how it works.\",\"marks\":[],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"After my 8-month co-op, I started working at Mappedin part-time, and we decided to work on the Web V2 experience. I got the opportunity to work with Anzor, the Principal Software Developer, on building the foundations of this entirely new upgraded version of the web experience. He’s an incredibly smart guy, and while he moved on to bigger projects, I remained and continued to work on Web V2 and directories.\",\"marks\":[],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"I was lucky enough to gain a lot of knowledge on the directories, and after Anzor moved to other projects, I was left as the most knowledgeable person on the web experience; which is crazy given the circumstances. Getting all of that experience was really helpful in enabling me to adopt more responsibilities and take on more projects. \",\"marks\":[],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"Do you think there are opportunities for career growth and development for developers at Mappedin?\",\"marks\":[{\"type\":\"bold\"}],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"Yes absolutely. Personally, that’s probably the biggest benefit for me working at a smaller company like Mappedin - the accelerated rate of growth. The company is always growing, we’re always recruiting new people, and we’re always looking to promote existing employees into higher positions. \",\"marks\":[],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"Currently, I’m hoping to step into more managerial positions. Normally someone in my position with my level of experience would not be afforded that sort of opportunity, but here at Mappedin, I have been given the opportunity to work towards those goals so early on in my career which I think is pretty lucky. It’s not something that I would expect to get anywhere else. \",\"marks\":[],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"How would you describe Mappedin’s culture and team environment?\",\"marks\":[{\"type\":\"bold\"}],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"Very fun and friendly. I’ve done co-ops in a few bigger companies and there’s a lot of bureaucracy and administration that you have to go through to get anything done, but it’s not like that at Mappedin. If there’s something I want to work on, or if there’s an idea that I have, I can easily reach out to Ed Wei, the CTO; or Hongwei, the CEO, which isn’t something that you would normally get at a larger company. \",\"marks\":[],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"What are some things that the Product and Platform team is working on right now?\",\"marks\":[{\"type\":\"bold\"}],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"Right now, we’re prioritizing enhancements to the Web V2 experience. Roughly a year or so ago, we launched the second version of our mapping web experience, which is a complete overhaul of the original experience. It’s built from the ground up using TypeScript, and uses much more updated technologies and practices. \",\"marks\":[],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"Over the past several months, we’ve been continuing to work on maintaining that application while adding new features. Currently, we’re adding a feature that will allow users to save an arbitrary location when they’re in a building or mall; for instance, you can save your spot in the parking lot and navigate back to it later. \",\"marks\":[],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"What aspects of your job do you find the most rewarding?\",\"marks\":[{\"type\":\"bold\"}],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"Predominantly, the most rewarding aspect has been the agency and ownership that I’ve been given over our products. And most recently, it would be the increase in management responsibilities that I’ve been given. \",\"marks\":[],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"I feel like the work that I put in is actually meaningful because my superiors and those managing me take an interest in the things that I do. If I excel, I’m rewarded, and if I’m veering off of the right path, then I’m given feedback right away to correct it. \",\"marks\":[],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"Is there one thing you like most about working at Mappedin?\",\"marks\":[{\"type\":\"bold\"}],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"When people ask me why I like working here, one of the things that I tend to say is the opportunity for growth; it’s easy to progress in your career at Mappedin. Don’t get me wrong, the people are also great. I love the people I work with and enjoy the team activities every week, but the opportunity for growth has been invaluable to my career.\",\"marks\":[],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"Being able to get to this point relatively early in my career is amazing. Even if I didn’t work with great people and have a great environment, which I do, I would still stay at Mappedin because I don’t think I could have gotten these opportunities anywhere else. \",\"marks\":[],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"We’re hiring for many developer roles currently at Mappedin. Why should a developer come to Mappedin right now?\",\"marks\":[{\"type\":\"bold\"}],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"We’re hiring two Team Leads, a Front End Developer, a Full Stack Developer, and a Developer Evangelist (\",\"marks\":[],\"data\":{}},{\"nodeType\":\"hyperlink\",\"content\":[{\"nodeType\":\"text\",\"value\":\"see our open roles here\",\"marks\":[],\"data\":{}}],\"data\":{\"uri\":\"https://www.mappedin.com/careers/\"}},{\"nodeType\":\"text\",\"value\":\"). I think developers should come to Mappedin for a lot of reasons. The company is growing quite rapidly, so if you’re looking to work at a fast-growing company with a lot of opportunities for growth and promotion, or to get experience with different technologies, then this is an excellent place to work. \",\"marks\":[],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"Even if you’re not looking to go into management or something like that, Mappedin is a place where developers can grow very quickly and learn a lot of new skills. If you get hired as a Front End Developer, but after a while you decide that you want some experience in back end or something else, then people will make that happen. As long as we have the resources, we’ll try our best to facilitate those opportunities, because that same person might grow into an excellent Back End Developer, and we don’t want to get in the way of that. We want developers to explore their utmost potential. \",\"marks\":[],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"Do you have any advice for a developer who wants to apply here?\",\"marks\":[{\"type\":\"bold\"}],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"My only advice is to apply! We have a lot of products that are very visible on the web and out in the wild, so if you visit any number of places that have our products (for instance the Toronto Eaton Centre or Conestoga Mall in Waterloo) or if you visit any of our customers’ websites, you can see exactly what it is that we do. If that looks interesting to you, I personally think it’s pretty interesting, then just apply! You’ll get to meet me or some of the other people on the development team and it’ll be a great time working together.\",\"marks\":[],\"data\":{}}],\"data\":{}},{\"nodeType\":\"paragraph\",\"content\":[{\"nodeType\":\"text\",\"value\":\"Interested in working with Ben? Check out our \",\"marks\":[{\"type\":\"italic\"}],\"data\":{}},{\"nodeType\":\"hyperlink\",\"content\":[{\"nodeType\":\"text\",\"value\":\"Careers Page\",\"marks\":[{\"type\":\"italic\"}],\"data\":{}}],\"data\":{\"uri\":\"https://mappedin.com/careers\"}},{\"nodeType\":\"text\",\"value\":\" for all open roles, or send an email to our recruitment team at careers@mappedin.ca.\",\"marks\":[{\"type\":\"italic\"}],\"data\":{}}],\"data\":{}}]}"},"articleType":"Article","image":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAMAAABI111xAAABAlBMVEXQ0ND////8/Pvn5uT6+vn9/fzi28F4cl0mJSMgHReln5P+/v3b1LiflHKukX6Wb1hTNyc0Kh7e1brT09Pa2trW1tbd3d3U1NTe3t7f39/b29vw8PD3+PTDwJ+glHzHqJimd2B+UjlqTzfEtoz5+PTl5eXn5+fh4eHPz8/V1dXx8fHl6OWkr6SsmYqehXV8WUhiQC1+ZVTBxrbw8e3ExMTFxcW2trbr6+lVVUmBdme9mIWofW9/Uzygi22vp4X49/Pz8/Pm5ub4+PhubmwyLifNq5Waa2COZUmnmHjPyrjz3NXz3df35+L14NvNwrnJqJGNZExNPjC8sJv8+/rv6uf7+voNxWhgAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAB3RJTUUH5gkdExwijt2+nAAAAGJJREFUCNdjYMACGBnBBONfNEEWRjD4hhBkYWBghwoKMULBM0ZGaUYEuCki8l6I8TojoxZM5JE8I+NpqHYemKD2NW1GiJlMDKe4IeAQlyk3N9x2R7DazX/Q3BnEyLiGgRAAANfhD4nccBKmAAAAAElFTkSuQmCC","aspectRatio":1.7525773195876289,"src":"//images.ctfassets.net/wdjnw2prxlw8/1QKVMhAGd4vR05fRTduIej/675532841de194ac5e3d1abf1b27e3cb/Blog_Employee_QA_Ben.png?w=480&q=50","srcSet":"//images.ctfassets.net/wdjnw2prxlw8/1QKVMhAGd4vR05fRTduIej/675532841de194ac5e3d1abf1b27e3cb/Blog_Employee_QA_Ben.png?w=120&h=68&q=50 120w,\n//images.ctfassets.net/wdjnw2prxlw8/1QKVMhAGd4vR05fRTduIej/675532841de194ac5e3d1abf1b27e3cb/Blog_Employee_QA_Ben.png?w=240&h=137&q=50 240w,\n//images.ctfassets.net/wdjnw2prxlw8/1QKVMhAGd4vR05fRTduIej/675532841de194ac5e3d1abf1b27e3cb/Blog_Employee_QA_Ben.png?w=480&h=274&q=50 480w,\n//images.ctfassets.net/wdjnw2prxlw8/1QKVMhAGd4vR05fRTduIej/675532841de194ac5e3d1abf1b27e3cb/Blog_Employee_QA_Ben.png?w=720&h=411&q=50 720w,\n//images.ctfassets.net/wdjnw2prxlw8/1QKVMhAGd4vR05fRTduIej/675532841de194ac5e3d1abf1b27e3cb/Blog_Employee_QA_Ben.png?w=960&h=548&q=50 960w,\n//images.ctfassets.net/wdjnw2prxlw8/1QKVMhAGd4vR05fRTduIej/675532841de194ac5e3d1abf1b27e3cb/Blog_Employee_QA_Ben.png?w=1360&h=776&q=50 1360w","sizes":"(max-width: 480px) 100vw, 480px"}}}},{"title":"Hackathons at Mappedin","slug":"hackathons-at-mappedin","content":{"__typename":"ContentfulBlogPost","author":"Eric Lauff","publishDate":"Apr 21, 2021","updatedAt":"Jul 6, 2022","tags":{"category":{"name":"Company","slug":"company"},"topic":{"name":"Culture","slug":"culture"}},"content":{"raw":"{\"data\":{},\"content\":[{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"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.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"What is Hackedin?\",\"nodeType\":\"text\"}],\"nodeType\":\"heading-1\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"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.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The Fun One-Off Projects\",\"nodeType\":\"text\"}],\"nodeType\":\"heading-2\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"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.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{\"target\":{\"sys\":{\"id\":\"FUl51geeMqqqLbBXs4lvm\",\"type\":\"Link\",\"linkType\":\"Asset\"}}},\"content\":[],\"nodeType\":\"embedded-asset-block\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"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.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Potential Product Features\",\"nodeType\":\"text\"}],\"nodeType\":\"heading-2\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"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 \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://www.mappedin.com/wayfinding/web-app/\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Mappedin Responsive Web App\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" and \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://www.mappedin.com/wayfinding/digital-directory/\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Mappedin Digital Directory\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" products. My job was to work on the front-end portion of the Mappedin Digital Directory. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"The link could be added in the \",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://www.mappedin.com/mapping/map-editor/\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"Mappedin CMS\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\" 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.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"},{\"data\":{\"uri\":\"https://player.vimeo.com/video/539701812?badge=0&autopause=0&player_id=0&app_id=58479\"},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"https://player.vimeo.com/video/539701812?badge=0&autopause=0&player_id=0&app_id=58479\",\"nodeType\":\"text\"}],\"nodeType\":\"hyperlink\"},{\"data\":{},\"marks\":[],\"value\":\"\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"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.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{\"target\":{\"sys\":{\"id\":\"2xvdOGjTradddsSAsseae5\",\"type\":\"Link\",\"linkType\":\"Asset\"}}},\"content\":[],\"nodeType\":\"embedded-asset-block\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"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. \",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"},{\"data\":{\"target\":{\"sys\":{\"id\":\"7nPWFeqVrnjMs3Emy5pk1t\",\"type\":\"Link\",\"linkType\":\"Asset\"}}},\"content\":[],\"nodeType\":\"embedded-asset-block\"},{\"data\":{},\"content\":[{\"data\":{},\"marks\":[],\"value\":\"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.\",\"nodeType\":\"text\"}],\"nodeType\":\"paragraph\"}],\"nodeType\":\"document\"}"},"articleType":"Dev Content","image":{"fluid":{"base64":null,"aspectRatio":1.5,"src":"//downloads.ctfassets.net/wdjnw2prxlw8/247d6IH4C0Z6emSNwHwZjW/ac948ec138988cd07c06208be2289fb6/image.png?w=480&q=50","srcSet":"//downloads.ctfassets.net/wdjnw2prxlw8/247d6IH4C0Z6emSNwHwZjW/ac948ec138988cd07c06208be2289fb6/image.png?w=120&h=80&q=50 120w,\n//downloads.ctfassets.net/wdjnw2prxlw8/247d6IH4C0Z6emSNwHwZjW/ac948ec138988cd07c06208be2289fb6/image.png?w=240&h=160&q=50 240w,\n//downloads.ctfassets.net/wdjnw2prxlw8/247d6IH4C0Z6emSNwHwZjW/ac948ec138988cd07c06208be2289fb6/image.png?w=480&h=320&q=50 480w,\n//downloads.ctfassets.net/wdjnw2prxlw8/247d6IH4C0Z6emSNwHwZjW/ac948ec138988cd07c06208be2289fb6/image.png?w=720&h=480&q=50 720w,\n//downloads.ctfassets.net/wdjnw2prxlw8/247d6IH4C0Z6emSNwHwZjW/ac948ec138988cd07c06208be2289fb6/image.png?w=960&h=640&q=50 960w,\n//downloads.ctfassets.net/wdjnw2prxlw8/247d6IH4C0Z6emSNwHwZjW/ac948ec138988cd07c06208be2289fb6/image.png?w=1440&h=960&q=50 1440w","sizes":"(max-width: 480px) 100vw, 480px"}}}}],"tags":{"category":{"slug":"developers","name":"Developers"},"topic":{"slug":"use-cases","name":"Use Cases"}}}}},"pageContext":{"slug":"generating-blue-dot-testing-data"}},
    "staticQueryHashes": ["1252674921","3226752585","3508205345","764694655"]}