Kevin Coughlin (S'12)
Objectives and Key Results (OKRs) for the Spring 2012 Semester
Objective 1: Create API Web Service (Frontend & Backend)
- Key Result 1: Create unique API key for user in a secure manner using an encoding algorithm
- Key Result 2: Store API key & user information using either AWS' SDB or DynamoDB
- Key Result 3: Provide functionality for user to retrieve and manage their API key
- Key Result 4: Provide administrative dashboard for API
Objective 2: Create COMTOR API backend
- Key Result 1: Create API for useful calls to COMTOR based on future plug-in support and using good practices & standards
- Key Result 2: Investigate SQS as a way to push API calls to be worked on by COMTOR backend service
- Key Result 3: Provide documentation and code examples for COMTOR API
Timeline
3/26/12 - Logged in to check if I could edit the wiki... seems to be working now.
2/22/12 - Read: http://coding.smashingmagazine.com/2012/02/09/beginners-guide-jquery-based-json-api-clients/
2/20/12 - Read http://quietlyamused.org/blog/2012/02/19/on-naming/
2/19/12 - Implemented SQS
2/13/12 - Began working on COMTOR jar abstraction layer to call AWS SQS
2/12/12 - Revamped Keygen to work with DynamoDb. Implemented query against DynamoDB to check if key was already stored or not. Began implementing calls to AWS as methods to enforce good Object-oriented practices. and cleaned up code.
1/30/12 - Investigated JSON: generating JSON using JS from HTML form then sending to PHP to database/output, then send back as response to call Google Maps. Did this to work with JSON in every way possible. Now looking into CouchDB & PHP as a lightweight way to handle API information. Successfully installed CouchDB locally and interacted with using PHP. Now trying to implement with earlier google maps using JSON work.
1/23/12 - Successfully have form that takes e-mail, converts to MD5 hash, stores MD5, email, time/date, and IP in AWS SDB and sends API key to user email using SES. Now working on accessing SDB for admin panel, parsing XML, and sending data using AJAX / jQuery
Useful Links
- Amazon SQS
- Web Design
- Pre-fix free CSS - http://leaverou.github.com/prefixfree/
- Google Maps KML - http://code.google.com/apis/kml/documentation/
- Twitter Bootstrap (v2) - http://twitter.github.com/bootstrap/
- Twitter Bootstrap (dark) - http://www.reddit.com/r/webdev/comments/p80pu/darkstrapcss_a_simple_dark_theme_for_twitter/
- Beautiful Buttons for Twitter Bootstrap - http://charliepark.org/bootstrap_buttons/
- Foundation (Another bootstrap) - http://foundation.zurb.com/
- SMS / Voice / etc APIs
- Tropo - https://www.tropo.com/home.jsp
- Twilio - http://www.twilio.com/
- DynamoDB
- CouchDB
- Javascript & CouchDB - http://css.dzone.com/articles/couchdb-javascript
- Using PHP to interface with CouchDB - http://wiki.apache.org/couchdb/Getting_started_with_PHP
- HTML5
- Java Servlet and POST
- API Design
- How to add an API to your web service - http://particletree.com/features/how-to-add-an-api-to-your-web-service/
- How to design a good API - http://piwik.org/blog/2008/01/how-to-design-an-api-best-practises-concepts-technical-aspects/
- http://news.ycombinator.com/item?id=1668561
- http://stackoverflow.com/questions/2915691/books-about-javascript-api-design-best-practices
- http://wiki.apidesign.org/wiki/TheAPIBook
- http://doc.trolltech.com/qq/qq13-apis.html
- http://chaos.troll.no/~shausman/api-design/api-design.pdf
- "How To Design A Good API and Why it Matters" by Josh Bloch. Slides to accompany video are here [1]