The police department I work for uses 3 binders to keep track of Trespass Notices for addresses throughout the city. To find out if someone has been trespassed from an address, officers must ask dispatch, then the dispatcher must step away from their position to open and leaf through the Trespass Notice Binder. This is an issue that was begging to be fixed by a simple web application.
Purpose: The Trespass Notice Web App is designed to keep track of all current and expired trespass notices and to make it easier for dispatchers to update and find trespass notices.
Solution: I had just finished a course at Regis University called “Modern Software Engineering” which went over the process of designing software. I used the processes learned in the course to create a Software Requirements Specification (SRS) with a list of use cases and UI mockups for the app. The course really helped me relate the layers of an application (presentation layer, business layer, data layer) to the MVC framework that is used by Rails. I used a school assignment as a template in MS Word and used a pen, paper and a scanner for my UI mockups to create the SRS.
I decided to create the app using Ruby on Rails as that is the language and framework I am most familiar with. I used the Cloud9 web-based IDE so I could work on the app at work and so that I didn’t have to worry about setting up a development environment. My main sources for information while developing the app were my SRS, RailsTutorial.org and GetBootstrap.com.
Even though the Rails Tutorial and the Ruby community in general promote Test Driven Development (TDD), I did not use TDD because I felt the project was small enough for me to test myself. I also am not familiar enough with testing tools and with Ruby and Rails to make the best use of my time. I only gave myself a month to develop the app while at work. I also did not use git for version control. Git is a great tool for backup and collaboration. I trusted Cloud9 to backup my files and I had no one to collaborate so I decided not to use git. Now that my project is on the interwebz for all to see I’m feeling a little bit of shame for not using TDD or git during this project. However by not using those tools I was able to focus directly on learning the HTML, CSS and Ruby I needed to learn to complete this project.
Challenges: My initial idea was that the app would be hosted within the City’s network so that officers and dispatchers would not have to keep track of yet another set of usernames and passwords. Unfortunately, I was not able to count on our IT department to give me space for a web server so I had to make a more secure app that was hosted outside the City’s network.
Since this is a project for my department, I decided to work on it only during my shift at work as a police dispatcher. This meant learning and writing code in the middle of the night while handling emergency phone and radio traffic. If you think this sounds difficult, then you are absolutely correct. There were nights were I had to just set aside the project due to a high call load or because I was too tired to troubleshoot code. That was frustrating.
I had some issues understanding objects in Rails that had controllers but not models. It makes sense to me but its still a little too close to fuzzy knowledge for my comfort. I also would feel much more comfortable if I was better acquainted with using Rails to send emails.
Outcome: I did post the project on GitHub and I’m pretty proud of my first web app. It’s not perfect but it’s a good first web app. I’ve had co-workers use it and they like it. I showed it to my Communications Supervisor and my Records Supervisor and they both liked it although they would like to see additional functionality added to it. They want the app to also keep track of municipal warrants of people who live in the City. This is basically like asking me to build a second web app and merge it with this one. It is doable but it will take a while to make happen.
I am honestly not sure if this will ever end up being used by my department. I now need to figure out how to host it, how it will be maintained and how it will be incorporated into the department’s current workflow. I would prefer if the department treated me like a vendor and paid me monthly to host and maintain the app on Heroku. However this requires me to sell the app to the department and I do not enjoy being a salesman.