Kevin Coughlin (F'11)

Objectives and Key Results (OKRs) for the Fall 2011 Semester
Objective 1: Familiarization with Amazon Web Services


 * Key Result 1: Read AWS Documentation and set-up local development environment (COMPLETED)
 * Key Result 2: Work with Apache Tomcat extensively and deploy applications to mimic functionality that COMTOR will require (COMPLETED)
 * Applications to Deploy:
 * File Upload and Storage (COMPLETED)
 * Jar Upload, Read, Write and Extraction (COMPLETED)
 * E-mail using SMTP (COMPLETED)
 * Call JavaDoc Programmatically (COMPLETED)
 * Key Result 3: Understand COMTOR Comment Modules / Process and Map using UML Diagrams
 * Key Result 4: Organize COMTOR in Preparation for AWS.

Objective 2: Deploy COMTOR to the Amazon Web Services 


 * Key Result 1: Migrate COMTOR to AWS
 * Key Result 2: Test COMTOR and Eliminate Bugs
 * Key Result 3: Design and Implement User Interface
 * Key Result 4: Analyze Performance and Project Long Term Performance on AWS

Discontinued OKRs due to move to AWS
Objective 1: Familiarization with the Google App Engine


 * Key Result 1: Get and Work with COMTOR Using SourceForge and GIT (COMPLETED)
 * Key Result 2: Understand COMTOR Comment Modules / Process and Map Using UML Diagrams
 * Key Result 3: Organize COMTOR in Preparation for Google App Engine (DISCONTINUED)

Objective 2: Learning Google App Engine


 * Key Result 1: Complete and Deploy App Engine Tutorials Provided by Google (COMPLETED)
 * Key Result 2: Launch Self-created Apps with Various Features (COMPLETED)
 * Key Result 3: Implement HTML/CSS/JSP in Each App (COMPLETED)
 * Key Result 4: Implement Google User Services in Each App
 * Key Result 5: Implement Data Storage Services in an Upload and Read File App

Objective 3: Deploy COMTOR to the Google App Engine 


 * Key Result 1: Migrate COMTOR to Google App. Engine
 * Key Result 2: Test COMTOR and Eliminate Bugs
 * Key Result 3: Design and Implement User Interface
 * Key Result 4: Analyze Performance and Project Long Term Performance on App Engine

Progress Blog
11/27/11

Ant build file completed and files trimmed down to only the necessities. Now working on calling comtor methods from servlet and tracking IPs.

11/15/11

Cleaning up ANT build file and source code.

11/11/11

Amazon EC2 instance set up with Tomcat running on Ubuntu, WAR deployed and ran.

11/09/11

ANT build file written and working. Deployed locally, now setting up Tomcat on Ubuntu instance in Amazon EC2 to deploy to. 11/08/11

Writing ANT build file for .WAR

11/05/11

Committed and Pushed my changes to sourceforge

11/04/11

Exporting Source to WAR file and deploying to Tomcat server - DONE Now committing and pushing my changes to sourceforge

11/02/11 -- Unique Folders created based on Session ID

Successfully Created Unique Folders based on Session ID and folders inside for JavaDoc output. Now working on Error Logging, cleaning up source code to push through Git and options for deleting on session exit.

11/01/11 -- Calling JavaDoc Programmatically

Had problems with Eclipse where updates made in eclipse were not pushed to Tomcat when deployed using Eclipse Tomcat Server and therefore no changes could be made. However I reconfigured the build / run path and was able to make changes. Successfully called JavaDoc programmatically, extracted a jar and created the JavaDocs for java files in the directory I handed it.

Now working on unique folders for users and sessions, and beginning to implement COMTOR with my Java Servlet. Also cleaning up code and building file structure / pushing to Sourceforge.

10/23/11 -- Calling JavaDoc Programmatically

I am currently working on calling JavaDoc programmatically. Once I have this module working we will begin the task of deploying COMTOR to the cloud. Update - I was able to successfully call JavaDoc programmatically in my Servlet that also handles a Jar upload, extracts the Jar and e-mails the user. All these calls are done by the servlet to separate classes such as Email, JarExtract, FileUpload and JavaDoc.

10/01/11 - 10/21/11 -- Tomcat Apps: File Handling & Storage, Jar File Handling, Storage and Extraction, E-mail using JavaMail (SMTP)

I have spent the last few weeks working with Tomcat and deploying an application with the modules that COMTOR will require when pushed into the cloud. These modules read Upload forms and store the file physically. There is another module which handles Jar files that are uploaded and extracts them keeping their file structure intact. I have also created a module that uses SMTP (current G-mail) to e-mail a user based on a form they fill out. This will be used as a report delivery method.

Shift from Google App Engine to Amazon Web Services

In late-September the decision was made to switch our focus from Google App Engine to Amazon Web Services (AWS). The main reason for the switch was to file system limitations imposed by GAE when compared to AWS. Amazon would also allow us to have control over a physical server. This server will house the development environment necessary to run COMTOR on the cloud. Since we were no longer using GAE I switched my focus to quickly learning AWS and Apache Tomcat. I modified my Google App Engine apps so that they ran on Tomcat rather than the app engine. Therefore the time spent working with GAE was not wasted since the only difference was that I would deploy the application myself.

9/23/11 -- git & BlobInput Stream, JarInputStream, JarEntry etc.

I got git working. I also modified the servlet so that I created a Blobinput stream off of the blobkey from what the user picks to store. I stored a jar file with a png and .txt file. Then had the blobinputstream go to a jarinputstream which then read each entry and printed it to the screen.

9/19/11 -- Moving forward with using Blobstore & BlobInfo

I was able to upload files using a POST form, store them as blobs and create their BlobInfo objects. I then retrieved the BlobInfo such as filename, filetype, filesize, etc. and print it to the screen. The next step is to duplicate, modify temp files, and retrieve files.

9/12/11 -- Making Progress on GAE Data Storage for Java

I was able to create a class that creates a Persistence Manager Factory once for my app ( it is data intensive). I then found classes online and made an Employee class. This class declares Strings such as firstName, lastName, hireDate, etc. attaches them to the Employee object and then has get methods to invoke. I then created a new PMF and Employee in my servlet class, created a query of the DB for an employee of last name Smith, returned the values. I also printed the attributes of Employee to the servlet such as firstName, lastName, etc.

I am now going to move forward to storing a text file and returning / printing that text file to the servlet.

9/9/11 -- Encountered problems with Eclipse on Macbook.

Downgraded Eclipse from 3.6 to 3.5 over the weekend. Eclipse was still having an issue recognizing the SDK installations. I went into preferences and manually pointed Google Plug-in to SDK and GWT installations.

9/7/11 -- Updated Personal Wiki sub-page with OKRs.

Began researching data storage using Google App Engine and Java Servlets

Tutorials
Eclipse GAE Plugin Installation

Eclipse GAE Plugin Troubleshooting Guide

IRC Installation and Configuration

Utilizing Google Groups

Blogstore Tutorial

Datastore Tutorial

Links

 * Amazon Web Services
 * Official AWS Site
 * AWS Toolkit for Eclipse
 * Apache Commons File API
 * Extracting a Jar Programmatically
 * Java Servlet File Upload Example
 * Running Tomcat Locally
 * Setting up Tomcat on Mac OSX
 * Configuring Tomcat to run using Eclipse
 * Virtual File System on GAE
 * GAE VFS using Apache Commons VFS
 * Using gaeVFS with CFML
 * Google Groups
 * Google App Engine Forum
 * Google App Engine (Java) Forum
 * Google App Engine Articles
 * Data Storage Links:
 * Google's BigTable DBS
 * Blobstore API
 * Datastore API
 * Creating, Getting and Deleting Data (Google):
 * Java Datastore for Google App Engine Overview:
 * http://www.reddit.com/r/appengine
 * http://code.google.com/appengine/
 * https://appengine.google.com/
 * IRC Clients
 * Windows
 * http://www.mirc.com/
 * http://xchat.org/
 * MAX OSX
 * http://colloquy.info/
 * Linux
 * http://xchat.org/
 * IRC Channels
 * #appengine on Freenode