Web Development Progress at the CTRSC
In the CTRSC, we use “whatever tool is right for the job” in the words of Robert Kelley. These tools happen to include the LAMP (Linux, Apache, Mysql, PHP) for our web foundation.
As my first blog, I would like to talk a little about how our development process has evolved in terms of tools and planning. In other words, how we went from mere mortals to gods (maybe a slight exaggeration). Our first development steps involved no frameworks. Everything was in pure PHP, built-from-scratch HTML/CSS, and a good ole custom mySQL query procedure. I was still learning everything at this point so this was hugely beneficial to my understanding.
Static Sites and Basic PHP tools
Realizing that rapid app development with such a small team without some type of framework would be impossible, we started testing various structures to find something optimal. Our first dive into frameworks involved CSS. Many of our main websites were built off of the Blueprint CSS framework, a fairly basic grid system. It suited our needs at the time for our static sites.
Creating custom MySQL code for all our database needs became frustrating. I settled on a nice tool called MySQLWorkbench. It allows you to get an overview of your entire MySQL backend, including databases, tables, table structures, and records. I have used it to rapidly implement fairly complex database designs and quickly edit, create, and delete records.
As our web presence began to mature, we began to focus on what we really wanted to accomplish: data-driven web tools that would help various aspects of our research process. For this, we needed some type of PHP framework. The tedious process of creating custom PHP would not work for our timeline. We tried a few MVC frameworks such as CodeIgnitor and CakePHP and eventually stuck with the latter. The switch has had a positive overall effect on the quality and quantity of our content output, in spite of overcoming some poor documentation obstacles. Our first task was to create a new backend framework for the Infectious Disease Laboratory with a biorepository for lab samples and a lab management system for processing lab results.
With the help of CakePHP and a new CSS framework (Gumby), we created a lab management system and lab reference repository. The lab repository involves the documentation of sample collection and shipping. The lab management system was the first major production application I have worked on. It took a coordinated approach to find the exact needs of the laboratory team and what we could accomplish to make their work flow more efficient. Our development process involved 5 steps: brainstorming system goals, creating system structure, programming, review, and testing. As the basic functionality of the system became available, we were able to begin a cycle of programming, review, and testing until the system was ready for production. The “testers” (the ID lab team) would report feature requests and bugs and we would prioritize them according to how it would affect the overall system functionality.
Current Frameworks and applications
The frameworks we use currently are CakePHP and Foundation. Foundation has a wide variety of JS features in addition to some beautiful typography and layout designs. We are implementing these two frameworks into a statistical analysis request tool (StART) that will streamline and document the flow of our analysis. It will also provide a quick way for our analysis requesters to check their analysis status and download the datasets/analysis associated with their project.