In light of the recent (and increasingly present threat of future) attacks by aggressive actors across the globe, we wanted to show just how devastating such tragic events can be. In the hopes that visualizing the worst can provide a concrete quantitative addition to security concerns instead of exchanging rhetoric, governments can prepare themselves and their infrastructures far better than they currently can.
What it does
Analysis of city key-point (medical, transportation, power, etc) information is done via publicly accessible databases and APIs. Hyperios then uses a genetic algorithm to optimize for a realistic operating scenario on the given city. These areas are scored on their predicated causality rate (based on localized population density of the area), importance to city infrastructure, and relation to other sites targeted. Weapons and munitions (based on cost, count, and effectiveness) are factored in to determining the most efficient, effective, and devastating strike. Pretty terrifying stuff, right?
How we built it
We built a Java backend that handled most of the data-crunching. MongoDB was an easy-to-scale and effective data store, especially with the powerful aggregate functions built into it in newer versions.
Challenges we ran into
Ubuntu by default only allowed an older version of MongoDB to be installed, causing all random document selections to fail. The $sample keyword was not understood whatsoever, and being a new database system to the both of us, it was difficult to work through the problem. On the front-end side of things, Mapbox initially seemed to be a promising API for visualization; however, when it came to the actual implementation, a poorly-documented and unbalanced amount of user experience soon created a dead end in development. Switching to the Google Maps API had some overhead, but it was ultimately better supported. In addition, it wasn't quite as pretty.
Accomplishments that we're proud of
Learning a whole new database management system outside the relational database bubble, learning how to create a genetic algorithm from scratch without a library, and debugging a hackathon project of high complexity while still getting more than an hour of sleep.
What we learned
Never make assumptions about dependencies. Ever. Always be ready to cast aside your first choice or your work, and always have your mind set on the finish line. Being attached to work that isn't the best you can do means your team suffers, and if your team suffers, that's on you. Working on this wasn't easy, but it was educational and rewarding.
What's next for Hyperios
Potential improvements include country-based mapping with more API support -- for example, the Mashape marketplace had an endpoint that could map crime rates to hot spots by geolocation; examining the effects of a community with less financial resources could contribute to accuracy as well as set the stage for more machine learning techniques in the future (such as neural network deep learning).