Averill Cate's Portfolio

In approximately 2000 The City of Tucson's planning department realized that it needed to build a web application that allowed people to view the status of permits related to property construction permits, property permit modification, and property zoning permits. That applications is call Property Research Online (PRO) and the original version is still being used.

Since 2000, the City of Tucson has undergone many changes and the developers who originally constructed the application no longer work for the City of Tucson. I inherited the project in 2013 because there were many existing bugs in the application and there were no developers to fix those issues. The original application was developed using Java and Java Server Faces and the applications has been hosted via Apache Tomcat. The applications primary functions are based on three different search features:

  • Single Address Search - The user enters a valid single street address and the application finds and displays all permits for the address.
  • Address Range Search - The user enters a valid address range. The application presents a list of valid street addresses within the address range and lets the user select a single address in order to view the address's permits.
  • Parcel Search - The user enters a property's parcel number and the application finds and displays all permits for the parcel.
  • Permit Search - The user enters a known permit number and the application displays the permit's details.

PRO has some interesting complex issues. It relies on three significant data sources. The most important data source is the City of Tucson's permitting database, which is the back-end database to a vendor supplied permitting system. The second most important data source is data and/or documents from the City's document management system. PRO interacts with the back-end database to the vendor supplied document management system. The last significant data source is the City's address database, which is a geospatial database provided to the City of Tucson by Pima County.

When I took over the project I found that the Java-based application had many memory leaks and even moderate use of the application caused the site to need to be restarted on a daily basis. Many of these memory leaks were fixed by adding code that makes sure JDBC connections are closed once the application has completed running a query. I was also allowed to start rebuilding/refactoring the application so it would be easier to maintain and fix as well as easier to add new features.

The first first phase in rebuilding process was to turn the application's data needs into REST based web services by developing the City of Tucson's web API. One reason I chose this method was because PRO is primarily a read-only application, but most importantly building services like the one's for the city's web API allow those services to be re-used by as many applications as possible. Because the application had to be run a specific Unix server I used the Java-based Spring Boot framework. The three primary reasons for choosing the Spring Boot framework were ease of configuration, well-defined and easy to implement REST based controller development, and the general belief that a Java based application can have the "write once, run anywhere" capacity.

The second phase in rebuilding PRO was to re-implement the applications front-end or user interface. I constructed a prototype of the application using the Python based Django framework. Django follows the model-view-controller design pattern which helps maximize separation of concerns for the applications internal components. Also, Python and Django greatly increase development speed and Django is robust enough that the prototype could be declared as the final production-ready version and the application would be scalable if we ever had to deal with usage demand issues.

One of the last things that I have been working on as an enhancement to the application is a map-based search tool. This tool, which exists, allows the user to zoom into a city parcel, select the parcel and the application calls GIS web services to find the parcel's address and permit information.



I am currently interacting with City of Tucson employees who will be using the application to find bugs and enhancements. The new version of the application is expected to go-live in late August 2015.

Tools Used

  • Java - Spring Boot
  • Python - Django
  • Git and GitHub
  • TeamCity


, , , ,

In 2012 The City of Tucson started an open-data initiative in order to promote government transparency and to provide more and higher quality services to the community. I started working on this initiative from multiple perspectives. I participated in the RFP review process which lead to the selection of the open data portal provider (www.socrata.com). I also participated in the planning and portal implementation phase. This phase required creating a City department wide group of stakeholders and data liaisons who would participate in providing department specific data to the portal as well has having a roll in the long-term direction of the portal. The third component that I am currently directing is the development of a City of Tucson WebAPI. Right now, the WebAPI serves two purposes. It provides the first version of a generic web api that can used by people participating in the civic hacker communities (e.g., Code For Tucson). It can and is used by local community activists for accounting purposes in local home owner associations.

Please refer to the City of Tucson Property Research Online project for a description of the complexity and issues involved in this project.

Tools Used

  • Java - Spring Boot
  • Git and GitHub
  • TeamCity


In 2012 I worked for MDA Corporation (not the Muscular Dystrophy Association). I was a programmer on a team developing a product name Precision Edge, which was a Microsoft Silverlight and C# based application that was designed to help farmers as a precision farming tool.

I started on the project after most of the core work was finished and was involved with feature enhancement and bug fixes. However, the nature of the application required all team members be familiar with as many aspects of the application as possible. During the year I worked on the project I helped develop PostGreSQL GIS data tables. ArcGIS geospatial web services using Python and C# .Net application code that exchanged and processed data between the database and the GIS web services. Also, my favorite part that I got to develop was a new feature that used MDA meteorological web services to retrieve climate data that was then used in the application's back-end climate prediction model.

Tools Used

  • C# - .Net
  • Python
  • ArcGIS Server
  • PostGreSQL



, , , , ,

In 2009 and 2010 I had the good fortune to be asked to work for a start-up company in Tucson, AZ called Blue Earth Imaging. The company’s primary products were aerial images captured by using company’s airplane. At the time, most of our customers were large farms located in southern Arizona and the Palm Springs area of California. In most cases the company was contracted to capture photos of the customer’s crop plots that were about to undergo some type of pest-control treatment and we were contracted to capture images of the plot before, during, and after treatment. Once these images were captured we needed a way for the customers to access the images via a web browser. Because the company was a startup with limited funding we did not have the resources to buy a commercial software packaged like ESRI’s ArcIMS. The company was able to afford commercially available image serving software, but that was not a complete solution.

To solve this problem, I used open source tools to develop a web application that would essentially act or behave like ArcIMS and serve our imagery as well as reference maps to the customer. The first step was to select a web application development framework. At the time it was a new framework, however I felt it was a robust framework for our purposes and it was a framework that would allow us to migrate our work to other frameworks if needed. Most importantly, we wanted a framework that would foster the Model View Controller design pattern. So, I chose the Django framework (https://www.djangoproject.com/). We also needed a backend database for this project. We chose the MySQL (www.mysql.com) database because it was a well known database server and our needs, at the time, did not demand and enterprise scale database server.

To develop the web interface, as stated earlier, I used the Django framework with the javascript jQuery api. Using these tools, I developed the equivalent of a single page application that used interface components that were updated based on user interaction by relying on REST based url calls. The REST end-points accepted request parameters using GET methods.

The last tool or API that we needed, and perhaps one of the most important, was the Google Maps Javascript API. This API is remarkably simple to use and could also be extended to include plugins and third-party tools that we did need in order to have a way to overlay our imagery onto base maps. Also, the Google Maps Javascript API was easy to understand I was able to build additional functionality in our web application that allowed our customers to red-line (draw boundary lines and annotations) on the maps.

Tools Used

  • Python - Django
  • Subversion
  • ERDAS Image Server
  • Google Maps Javascript API
  • jQuery


Much of my graduate and research associate work at The University of Arizona was on a project named DotAGWA. DotAGWA was an internet application that allowed a users to see the effects of land use change. A user could select a location in the Walnut Gulch Experimental Watershed, which is located in Tombstone, Arizona. Once a location was selected or defined, the application would retrieve soils, vegetation, and precipitation data parameterize and run a surface water model. The surface water model would produce output that the application would retrieve and display in the application.

This application was being developed during the earlier days of web application development. Consequently, I had to develop tools to figure out how to get the surface water model, which was an older Fortran model developed in the 1970's and 1980's. Some of the trickier issues involved figuring out how to run the model so that the whole application could be run in a way that might allow multiple users to run the web application at the same time without having the surface water model lock. To deal with this situation, I developed a simple queue-based approach which meant having multiple versions of the model's executable file, tracking which one was being run and if still being run then using the next available copy if needed.

Tools Used

  • C# .Net
  • Java
  • Subversion