If you’re curious as to what I’ve been busy with, here’s a list of projects I’ve been working on (in reverse chronological order) and a brief explanation of its story, goals, implementation and end result.
pBug (November 2009)
pBug was a special project given to me directly from the Senior VP of Development to redesign the bug tracking system that Oracle uses. Many employees at Oracle in the Primavera Global Business Unit weren’t particularly accustomed to the workflow which Oracle uses, and the need emerged for a system which allowed them to create, remove, update, delete and view bugs in a way which they were comfortable with. After meeting personally with developers, QA analysts, supervisors, and all future user groups, I compiled a list of use cases which augmented the requirements given to me by higher management.
In two weeks I created a working prototype which allowed our employees to create and view bugs in a efficient and easy-to-use manner and it was put into production usage shortly thereafter. Later on we added many useful features, most notably the ability to edit bugs, completely customizable and sharable dashboards, drag and drop batch actions, an administration application, and quick edit menus.
In addition to having partially-documented API and a relatively old schema format, most values stored in the Oracle database (and visible in the Oracle BugDB UI) were stored and viewed as integer codes, which can be confusing and not particularly helpful to those unfamiliar with the system. Another primary task of pBug was to resolve these integer codes to human readable values (specified in pBug) when viewing a bug, but at the same time store them as the integer codes in the database – and most importantly it needs to do this quickly.
Having many potentially expensive concurrent queries both with the Oracle BugDB database and the pBug database proved to be a performance consideration for the application. To address this, a database caching layer was created using memcache, which increased performance times dramatically and limited the number of expensive queries needed to interact with the system. The cache would be refreshed nightly, consisting of all possible permutations of codes both from Oracle and from the Primavera Global Business Unit. Editing, adding and deleting a bug were all accomplished using Oracle stored procedures, and all bug queries would interact with the Oracle database directly – thus eliminating the need to store potentially redundant information within pBug. When the cache was fully implemented, it increased performance to approximately 250% in some areas.
Due to the rapid development needs of this project (short timeframe, rapidly changing requirements), pBug was developed in PHP using the CodeIgniter framework. CodeIgniter provided us with many tools out of the box, including an ORM layer, transport objects, and multiple database support (needed for the Primavera name mapping among many other specific needs). The system used Oracle’s oci8 driver to connect to BugDB database via the Instant Client. pBug used the JQuery and JQuery UI javascript libraries for client-side AJAX interaction with the rest of the system. All pBug controller and model level functions were tested using the SimpleTest framework on a staging server before release, and all view (HTML and Javascript) code was tested manually using a test plan.
Security was also a very large concern for this project. All data transmitted to and from pBug was encrypted using SSL security (via an Oracle SSL certificate), and session information stored is encrypted using 256-Bit RSA encryption and was destroyed on session termination. Industry standard XSS and SQL injection filters were been put into place which scrub all input fields (regardless of where they are used) before they were accepted as input into the system as well. The app server has also been hardened using Suhosin.
Medical Image Viewer (Spring 2009)
The Medical Image Viewer was a team project created for my Software Engineering Subsystems course. The goal was to create an image viewer in Java (and Swing) which could read a variety of xrays in multiple image formats (PNG, JPG, and ACR) encapsulated in a folder called a study. The system also needed to display them in multiple modes (one image at a time, four images at a time, and a special traversal mode used to compare one image to another set of three at a time), perform and save brightness and contrast manipulations and also be able to display 3D reconstructions (transverse, corononal, sagittal) of xrays based on a stack of already existing images with as high performance as possible. Release 2 (of 3) can be downloaded here if you’re curious: link.
Note: I’m trying to dig up some old scans which we used for testing, but until then I’ve included a blank screenshot in the gallery below.
MyTimeline (Spring 2009)
MyTimeline was the capstone project for Timeline (RIT’s yearbook) in which I was/am one of the editors in chief and manager of the project. The goal was to create a web application which enabled students to create their own yearbook from our photos and layouts or photos and layouts which they would like to create themselves. Their book could then be downloaded, shared on the web, or printed on demand and delivered to them free of charge (shipping costs extra).
A complete SRS document can be found detailing the designs, goals and mockups of MyTimeline: here
DARi (January-May 2009)
DARi (Development and Alumni Relations intranet) was a project undertaken while I was a Web Applications Developer at the RIT Educational Technology Center. The project consisted of an entire Intranet to manage announcements, tracking and reporting of all vacations (including an approval process), business trip, and sick days (with support for partial hours), a staff and workgroup roster, and support for the client to add and remove HTML pages in a fashion similar to a Content Management System (CMS). The system also had to integrate with the RIT Active Directory for authentication, but still offer the administrators the ability to finely control access to the system.
DARi was developed in PHP using the CodeIgniter framework and used a MySQL backend with an ORM layer. DARi also used the JQuery for all client-side AJAX interactions with the system. The SimpleTest framework was also used to ensure quality prior to a release.
Know Joe Ryan (June 2008)
Know Joe Ryan was a web application developed for a local Rochester realtor to showcase the houses he had on the market. The system offered users the ability to search all homes in the Rochester, NY area on a multitude of criteria. The system also provided users with property images, directions to the listing via Google Maps, as well as the listing and Realtor information. I also added a section which enabled you to talk directly to Joe via text messaging. The database was updated nightly (or manually) from a custom textfile via FTP and an associated Cron job.
The application was written in PHP, used a MySQL database and used custom Javascript and PHP frameworks.
Try the app yourself! http://www.knowjoeryan.com
Momentum (Fall 2009)
Momentum was a calendaring application designed as a potential replacement for Microsoft Outlook, Apple iCal or other desktop calendars. The system was written in Java and used Swing for its GUI. The system was capable of daily, weekly, and monthly views and was also able to create single and recurring appointments based on custom criteria. It was also able to read and write industry-standard ICS files which contained the event information. The complete project including presentation, documentation, source code and binaries for the first release can be downloaded here: link.
Note: I’m trying to find the third release, and when I’m able to locate it I will replace the zip file above with the latest information.
Other Websites
Here are some other websites I’ve worked on:
Gallery
Older Projects
If you’re curious about other projects I’ve been up to (Freshman Year and earlier), please swing by my older software portfolio here