Started by a group of Boston University students 2015, Urban Refuge uses technology to improve both urban refugees’ experience and humanitarian organizations’ ability to coordinate resources, making aid available via a centralized, easy-to-access database. Urban Refuge’s research found that simply making options available on a map on refugees’ personal devices dramatically increased the odds refugees would find and accept vital assistance.
Together with Microsoft Technical Evangelists, the Urban Refuge team translated their findings into Android and iOS apps optimized for refugees’ unique needs, from localization and graphic-centric UI to geo-tagging and social login. Today, we’ve invited Urban Refuge and their Microsoft Technical Evangelist partners, Gavin Bauman and James Sturtevant, to share how Microsoft technology, including Visual Studio Tools for Xamarin, Azure, HockeyApp, and Visual Studio Team Services, freed the team to focus on user experience, easily respond to user feedback, and prepare to scale to more communities.
Tell us a little bit about Urban Refuge’s mission and how you became involved.
[Urban Refuge (UR) Team]: Urban Refuge was born out of a class taught by Professor Lori at Boston University’s Pardee School of Global Studies. We were motivated to use our knowledge about the Syrian refugee crisis to create something practical to help refugees. When we discovered that, despite greater aid resources in cities, refugees experience lower access to aid in urban settings than in camp settings, we saw a problem that technology could solve.
Historically, organizations use expensive and time-intensive surveys to assess and allocate humanitarian aid, without sharing information across NGOs. As students, we didn’t want to write policy papers that would never get read, we wanted to use technology to design and build a digital infrastructure that could serve refugees and act as a conduit that connects local municipalities and NGOs.
No one in our class was a developer, but we quickly started learning about tools that could help us build our app.
[Gavin Bauman (GB)]: As Microsoft Technical Evangelists, our job is to help other developers deliver industry leading-applications and services. James has been developing software professionally for the last decade or so, and I got my start more recently (beginning in 2014, after my university computer science classes and spending my spare time developing Android apps for fun).
Urban Refuge’s mission clearly aligns with Microsoft’s mission, “to empower every person and every organization on the planet to achieve more.” We’re in a unique position; we’re able to work with organizations to turn their visions into a reality and reach so many people in the process.
Tell us about the app and what it allows users to accomplish.
[UR]: Urban refugees currently make up 78% of the 655,000 registered Syrian refugees in Jordan, particularly Amman. Research suggests that the majority of refugees have mobile devices, but they discover available assistance primarily via word of mouth.
We used this research to create an accessible, easy-to-use digital mobile platform that maps aid locations—places like charities, medical clinics, schools, and community organizations—for displaced persons and enhances the digital architecture of cities.
We designed our app to help as many people as possible. For example, we use more icons than text to make sure we’re not excluding anyone who’s illiterate and to avoid creating more translation work for us. Users click on an intuitive icon and immediately see all nearby services across categories (health, education, cash assistance, work, housing, etc.). Also, since streets aren’t very well marked in online maps for Amman, we’re geo-coding locations to provide directions to exact addresses.
[GB]: Refugees use Urban Refuge (Daleel Amman in Arabic) to reliably locate and navigate to aid facilities, without any stigmas associated with being a refugee. They simply open the app on their phones, choose their resource type, and Google Maps acts as the visual mapping element to show what’s nearby. We’ve also adhered to localization strategies, so the app reads well in Arabic and English.
Currently, we pull from a database of over 160 aid organizations and, going forward, the Urban Refuge team can just enter new organization or resource details in a web-based management portal, making it easy to add aid options and expand to more global refugee communities.
Why did you choose Visual Studio Tools for Xamarin?
[GB]: Urban Refuge wanted to develop a solution that didn’t require maintaining multiple complex codebases and was available in Arabic and English. Xamarin.Forms allows us to do both, giving us performant, native UI controls that look like they were made for each operating system and that work the first time, every time.
[James Sturtevant (JS)]: Honestly, I wouldn’t have been able create an Android and iOS application without Xamarin; I would have spent weeks simply learning about two different platforms, two languages, and two different UI concepts. I was productive right away, without having to learn platform-specific languages.
Describe your development process.
[JS]: When I met the Urban Refuge team, they’d already done the majority of the design work; I helped flesh out technical details and then Gavin and I started working on the implementation.
After two and half weeks, we had a working end-to-end solution, including an ASP.NET Core backend to store and load aid, location, and refugee data. Azure was our first choice, mostly due to its scale and developer-friendly tooling. We used Azure App Service and Azure B2C for authentication to allow the Urban Refuge team to continue iterating in the future, confident that security and scale won’t be a problem.
Visual Studio Tools for Xamarin provided an easy-to-use, but flexible, abstraction with dependency injection. We share the majority of the UI and business logic across Android and iOS and for some components, like our Hockey App integration or localization implementation, we could write platform-specific code and still access it from our shared Xamarin.Forms code.
We set up our builds in Visual Studio Team Services. After the first week, we were deploying beta versions to the Urban Refuge team every few days. This was a great experience for them and for us as developers. Seeing the app as it was being developed gave Urban Refuge confidence that we were on the right track and creating the best app for their mission. As the UR team used the app, we used HockeyApp’s detailed reporting and stack traces to find and fix bugs that would’ve been very difficult to replicate and track down.
We moved quickly, since we were programming in C# and using familiar patterns, and Xamarin lowered the transition overhead between the backend and front end, making our iteration cycles extremely fast.
How are you testing your apps?
[UR]: Mobile quality is extremely important to us. It would be disastrous if we launched with a buggy app that crashed. Industry research shows that users have a low tolerance for apps that fail, so we’re investing time now to ensure we have the highest quality product possible. We’re about to start testing with a team of Syrian and Jordanian students, who are based in Jordan and working with Microsoft technical evangelists from the Amman office. They’ll help us run one (or more) beta rounds as we prepare for the full launch.
This beta testing phase is critical for making sure our app works well in a variety of settings. For example, we want our maps to load once and be available offline, allowing our users to find help and get directions, even when they don’t have internet access. We’ll use our test phase data to determine what changes we need to make our roll-out.
Why did you select HockeyApp? What were you trying to accomplish?
[GB]: Knowing how users actually use the application will help the Urban Refuge team ensure they’re surfacing enough available assistance opportunities, so we’ve instrumented the apps with HockeyApp. We’re anonymously collecting data every time a user selects a filter (e.g. aid of a given type), and this detailed telemetry will allow the small team to prioritize and focus their resources on what’s most important.
Since the Urban Refuge team is distributed, including its Amman beta testers, we’re also using HockeyApp to automatically deploy new builds to test groups.
How are you incorporating beta feedback into your production release?
[UR]: We have a multi-phase plan for gathering and incorporating user feedback. We started in March 2017, when we asked potential users (refugees, Jordanians, and NGOs) to provide input on our icon design and other app features. We made changes and we’re currently in the second phase where Syrian and Jordanian student teams in Amman will continue to provide feedback throughout the beta testing period. For our production release, we’re building a reporting mechanism into the app, which will allow users to provide feedback directly to our developers and helping us improve (for example, flagging a resource with incomplete or inaccurate information).
What’s your team planning to build next?
[UR]: After we launch in Amman and have a clear idea of refugees’ response, we plan to expand to other cities in Jordan. Eventually, we’ll grow to other regions in the Middle East, and we’d like to create a similar app for Boston residents.
Our long-term goal is create an “early warning system” for social resource providers and state agencies. Ideally, the usage data from our apps will help accurately predict optimal resource allocation and identify social epidemics, such as housing instability, joblessness, or lack of available childcare, based on increased demand (or searches) for those aid types.
What advice do you have for developers who are just starting out or investigating mobile development? Any best resources?
[GB]: I was a beginner not too long ago, and the best advice I can give is to have a clear vision of what you want to do. The worst thing a new developer can do is code “blind.” Start your development process with a pen and paper and sketch out what your solution will look like before you start building anything.
This is rare for me to say, but the Xamarin documentation is nothing short of awesome. There’s plenty of recipes to get you up and running quickly with things you haven’t touched yet, and Xamarin University classes helped round out my mobile development skills. We also took advantage of some great Continuous Integration blog posts for Android and iOS to implement our automated build pipeline.
Finally, it never hurts to have a mentor that can help you dig your way out of a hole!