Overview• First Census Bureau mobile app for Android/iOS both phone & tablet• Developed as part of ongoing Web Transformation effort• Displays 16 economic indicators • 13 from Census Bureau Central Indicators Database Repository • 2 from Bureau of Economic Analysis • 1 from Bureau of Labor Statistics
Overview• Collaborative team effort • Communications Directorate – product owner & manager • Contractor – front-end development • Economics Directorate – data experts and back-end development • IT Directorate – technical guidance, back-end development, and technical support
Overview• Mobile app front-end displays data• Three back-end API‟s supply data at App startup, refresh, and indicator release • CIDR Private API developed by Econ • BLS Private API developed by IT • BEA Public API• Config file on server queried at CIDR BLS BEAstartup BoC Private
Front End Architecture• Adobe Flex 4.6• Adobe AIR 3.3• SWIZ 1.4• iOS 4+• Android 2.2+
Front End Architecture• Skills Required • Tools Required – Adobe Flash Builder 4.6 – ActionScript – Xcode and Eclipse for some – CSS native components – XML
Front End Architecture• Pros of Adobe Flex • Cons of Adobe Flex – Device agnostic from a – Larger footprint single code base (especially on iOS) – Easier than native – Android support varies by development device – Broad developer – Slower performance community – Requires AIR runtime
Back End Architecture (CIDR)• LAMP stack: • JSON-based : – RHEL 5.8 – Economic dashboard data – Historical economic indicator – Apache 2.2.3 data – Mysql 5.0.95 – Simple format derived from – PHP 5.1.6 mobile application mockups. – Private through hash based “authentication”• Zend Framework 1.6 – Text-based, easily parse- – Simple, loosely-coupled able. component library for web – Data available as soon as applications upload process is completed on internal Census servers.
Back End Architecture (CIDR) dashboard_data category time_slot data_type display_cell geo_level error_type
Back End Architecture (CIDR)• JSON export of dashboard_data table
Back End Architecture (CIDR)• Historical data available in CIDR database (display_cell table)
Back End Architecture (CIDR)• Basic hash-key based authentication• Example URL: – http://www.census.gov/econ/currentdata/api/dashboard?id=sapient&ha sh=89704299208e7e9d16380e4384861396f3398cb0• Calculating hash: – sha1(secret key + time stamp + path requested) 1. Secret key – a 40 character alpha-numeric string 2. Time stamp – in the format YYYY-MM-DD 24HH (e.g. „2012-05-14 17‟) using UTC timestamp. 3. Path requested – excluding id and hash parameters. „/econ/currentdata/api/dashboard‟
Back End Architecture• Skills Required • Tools Required – Dev/test environment – LAMP web dev – IDE – Enterprise-scale development experience (not for newbie‟s) – REST interface design
Back End Architecture• Pros of Private API • Cons of Private API – Fast performance for – Additional skilled database on our server resources required – Customized to need of – Additional application to front-end developer support – Access more data than – Dependent on your public API infrastructure – Under your control
Project Challenges• Limited insight into technical design and code at handoff (25,000+ LOC, few comments or technical docs initially)• Security framework still under development• Lack of dev/test tools & environment for mobile• Standardizing data formats from 3 API‟s (e.g. timestamps)• Timely technical support from other agencies• Coordination with external contractor (e.g. config updates)
Lessons Learned• Early involvement with contractor on technical design• Schedule time for review and feedback at milestones• Early engagement from security to address framework• Identify and procure tools far in advance• Test external API‟s for reliability/accuracy
A particular slide catching your eye?
Clipping is a handy way to collect important slides you want to go back to later.