Prototype mobile brewfest app
For the fourth year in a row, we're attending (and volunteering) at the Oregon Brewfest. This year, we decided to write an app to help us in the enjoyment of this lovely yearly event.
OBF is considered by many to be one of the best beer festivals drawing from top brewers in the United States and you can't beat the downtown Portland location along the Willamette river. The OBF site provides detailed information about the 85 brewers and their hand-crafted beers but we wanted something a bit more portable so we prototyped an app we call Brewfest Companion (aka "Bru Note").
We wanted an app that would easily allow the user to flip back and forth between an alphabetical list of brewers and a "grouped view" by style. For example, you're interested in seeing which beer Lucky Labrador is pouring or you want to see all Saison styles in attendance. In either of those views, it should also be easy to read the full description of the beer.
The first task was to source the data from OBF. We wrote a command line tool to parse the ugly and malformed HTML tables. For quick data juggling and manipulation, Python is our language of choice. Adding Beautiful Soup to the mix makes parsing HTML almost painless. At this stage, we manually edited the styles to conform to more standard, generally accepted styles.
After parsing, we generated a small sqlite3 database that can be loaded and queried on the phone bundled with the application.
Next, we built our app using Xcode 3. The structure of the code is a UITabBarController, two UINavigationControllers, and two UITableViewControllers. This allows us to load a tab bar that displays two buttons (Brewers and Styles).
- when Brewers is selected (default) it loads the brewers table, alphabetical sort
with the name of the brewer and their beer. - When Styles is selected a grouped table is loaded, where each brewer is grouped by style.
- In either of those views, selecting the beer, displays the brewer, beer, style, ABV, IBU and a description.



Attached is the source for the project. If you decide to use it, learn from it, extend it, or you're interested in hiring us to develop an app for you, please contact us.
We often write "throw-away" code for one-off tasks or to scratch our own itch. The source might not be immediately useful for others but the lessons learned are invaluable. We always try to blog, tweet, or share those lessons when appropriate.
- Avalanche Forecast
- Breakout in Processing
- Brewfest Mobile App
- CiviCRM Discount
- CiviCRM Profile Permissions
- Danger Rose Field
- DB Tools
- Image Node Reference
- Linode Drupal StackScript
- Liquid Planner Shell
- OpenVZ Drupal Installer
- Randstring Safari Extension
- RSRA Database
- Ubercart/CiviCRM Integration
- User Login Block
- Webform Download Archive
In the process of writing custom software for our clients, we've also contributed bug fixes, patches, unit tests and documentation to various open source projects.



Comments
Post new comment