The UChicago App Challenge has just concluded its fourth year. Each year the app ideas get even better, and the prototypes that we are able to build in just 10 weeks are more full-featured. This year the field was dwindled from an initial pool of 120+ entrants to three finalists.
The entrants worked on their ideas for the duration of the academic year, attending workshops and meeting with UI/UX, tech, and business experts to better define their concepts. Each quarter marked a new phase of the App Challenge. With the end of each phase came a round of eliminations, culminating in a final phase for 3 entrants. This final phase, occurring during Spring quarter, was a 10 week development cycle hosted by Web Services, in which the the entrants’ ideas were transformed from wireframes to prototypes. Two interns worked diligently on each app alongside web services programmers who helped coordinate the effort. Each week during the development cycle the teams met for a progress review. In the case of Access UChicago, these meetings also involved delicious baked goods provided by Stephen.
Stephen Pannuto sought to raise awareness of accessibility issues around campus with Access UChicago, which enables users to report issues, such as a broken elevator, in real-time directly to Facilities and the rest of the university community. David Thomas & Matthew Chen conceived Tap, an app that makes it easy to annotate audio recordings for quick and effective access to important lecture notes without scrubbing through hours of content. Will Clark set out to provide low-income countries with essential economic modeling capabilities through his app, Open Macro.
The challenge concluded with the finalists presenting their ideas to a room full of spectators. Three judges, all Chicago-area experts in entrepreneurship, marketing, and advising, probed the entrants with insightful questions. Each of the presentations was compelling, truly highlighting the effort and dedication of each entrant.
The judges conferred and the winner was announced hours later at the Polsky Center Innovation Showcase. And the winner of the 2015 App Challenge and $10,000 prize was… drumroll, please… Will Clark's Open Macro!
Oren Sreebny, Senior Director for Emerging Technologies and Communications was quoted as saying, "It's a great example of the growing democratization of sophisticated algorithms in ways that can be used not just by coders but by people knowledgeable in the subject area, who otherwise would not have access to the tools to use those models."
This quote quite appropriately depicts the problem and solution at the core of Open Macro. There are 'sophisticated algorithms' coded and published, but the barrier for entry to use them is high. The goal in implementing Open Macro was to generalize these models as a 'black box' taking input, running the model, and producing output. With the ability to represent each model uniformly in-hand, the task became building a user-friendly front-end that explains what each model does, defines each input parameter and how it is used, and finally conveys the output in a format that is easy to interpret.
Open Macro Technologies
A lot of technical work goes into producing each app for the App Challenge. When we set out to build Open Macro, Will’s knowledgeability about the 'sophisticated algorithms' provided a great foundation. Will had access to them, knew how to run them, and had figured out a nice way to generalize such that the complexities were abstracted to simple interface to program against. For the rest we used mean.js and all of the components that it ties together.
Each component in the MEAN stack (MongoDB, Express, AngularJS, and Node.js) came together nicely thanks to mean.js. Here is a brief summary of each component and how they were used:
MongoDB provided persistence and mongoose provided nice object modeling. We were able to quickly set up object models for the application, and more importantly, it was very easy to adapt the models to accommodate changes throughout development. Having used MongoDB both with and without Mongoose, it seems a wise choice to always use it.
Express provided server-side application structure for Node.js. It facilitated the creation of all server-side routes. All object models in Open Macro are accessible through a RESTful API, which express made quick work of. Without other server-side commodities provided by mean.js like User models and skeleton code to integrate with Passport we would not have been able to accomplish everything that we did in 10 weeks.
All of the server-side code runs on AWS utilizing their compute optimized VMs to run the economic models in Octave.
Using socket.io the server communicates with the browser in real-time, updating the user on the progress of their simulation, piping through the console output.
AngularJS integrated very well with the server-side routes using the $resource service, making the transport from database to client-side templates painless. Finally, we used Angular Material for all of the UI components. Sadly, our development cycle happened right before 0.10.0 was released, which introduced much needed components that we sorely missed like Menus and FABs.
Development for each of the apps was incredibly challenging and rewarding. With great ideas, ambitious entrants, and a fantastic team of interns, everything came together to make all of the hard work truly enjoyable. If history is any indication, next year’s App Challenge will be even bigger and better. Don’t miss it!