Sunday, April 5, 2009

Resurrection of the blog

Well, I certainly let a lot of time go by on my blog, so I write now with remorse and shame. However, there's no time like the present to start back up so less whining and more writing.

The focus of this entry will be around a new project I threw together and some of the tools and methodologies going into it.

The Problem


To provide some background on what I'm doing, I should probably mention that this is a project for People's City Mission. I work there now (as in 'get paid') as a member of AmeriCorps. My title is kind of a catch-all position dubbed "Internet/Web Specialist." I'm not entirely sure what all goes into being an AmeriCorps member because I wasn't told much other than that I'd be getting paid after all that time volunteering.

Anyway, one of the great things about my role is that I pretty much have free reign to consult and help the organization make better use of its technology resources. It's a cool learning exercise because most of my training is in the academic or enterprise realm. In these domains, the technology environment is generally pretty solid and there are plenty of financial resources devoted to making it competitive. In the non-profit environment, this isn't always the case. Thus, I am challenged to think critically and find out how to do less with more.

One of my main goals there is to help them make their Web site more effective. To do so, I trained a few people on how to download a local copy of the site from the FTP server, make minor edits, and push the changes back to the server. Again, this isn't my preferred environment because there is no versioning. This created the problem of multiple people making changes to the same code base and over-writing the updates of others.

To fix this, I recommended implementing a change control system. I started by setting up a rudimentary e-mail process until I could get something better in place. Eventually, I would need a solution that would track all changes being made to the site's code base, track who was making those changes, and limit the ability to make changes to capable and trusted individuals.

The Solution


I did some investigating to see if there was an existing solution that would serve those needs. Additional criteria required that the solution would incur no costs, and that any hosting requirements would create as few snags as possible.

The first thing I found was that there weren't many hosted solutions available. Therefore, I opened up my search to open source solutions that I could run on a server located on-site. I figured I could use DynDns to make it accessible on and off-site.

I looked at a few alternatives, and Bugzilla and Trac were most ideal. Both are credible and widely-used issue-tracking solutions. However, my audience isn't necessarily tech savvy and much of the terminology and concepts used on each solution could have been a problem. I also saw that each had extra features that my problem didn't need, which could have been distracting or confusing to my audience.

Therefore, I decided to create my own. It seems like a simple enough problem, and a new coding project could be good for me. I looked into Ruby on Rails as a platform and I even started my project with it. However, I learned the MVC paradigm with Grails and I found myself thinking in those terms. My love for Grails ended up being tempting me enough to switch.

I think I'll be getting a server from People's City Mission, and I plan on putting Xubuntu on it and running the project from that. For now, I'm just prototyping on my laptop and hopefully I'll get something I can deploy to a server easily.

Other Tools


I did a lot of drawing on a marker board in my office at the Mission. I'm the type that likes to sketch things out and do some design work ahead of time so. I find this makes it a lot easier to throw concepts into code. I took some pictures of my work with my phone and decided later to get these ideas into digital form. For that, I looked online for some good diagramming tools and came up with Dia. This is kind of similar to Umbrello, but Dia doesn't force you into a UML paradigm. Instead, I could use any of its multiple sheets to visualize my ideas. This ended up being kind of fun and I was able to tease out some new features and eliminate redundancies and inefficiencies in my initial design.

Hopefully, this project turns into something useful for the people that work there. My main goal is to improve efficiency and make the process of keeping the Web site up to date and effective an activity in which everybody at the Mission could participate. Ideally, there should be enough interesting stuff coming from this project that I can write more about it instead of letting another three or four months go by before I post again.

No comments: