Keeping Configurations Happy

I just spent about 20 minutes trying to figure out a very dumb problem with my configuration files.

 The way I have my configuration setup for my projects is becoming a little cumbersome. I would interested in any other ways people have of accomplishing this because I am ripe for change.

In my folder structure I have it setup like so:

Now, above this folder I have the branches and tags folders, as well as a docs folder that holds any documents, psd files etc so I don’t have to branch/tag any large original files all over the place and increase the size of the svn repository.

As you can see the “lib” folder is any dependencies I have on my projects. Castle, SqlCe and log4net/nhibernate is in the root. In addition I have a app_offline.htm under app_offline that gets copied to the deployment root before the deployment happens, and then deleted after it is finished. Everyone should be doing this!!

Under the “configuration” folder are the following files:

  • site.deployment.config
  • site.desktop.config
  • site.staging.config

Herein lies the problem…All that is in these files is AppSettings that change depending on where the project is at, for filepaths, specific files etc… If I also develop from a laptop there would be a site.laptop.config that would contain appropriate paths to save files to etc… The appropriate .config file is copied to whereever the app.config is and renamed to site.config, then I tell TortoiseSVN to ignore site.config so that it doesn’t get placed into the project root. With NAnt, I have a task that copies that config file into the right place and renames it to site.config. I know what your’re thinking here, “Well you could use XmlPoke”, which I do for certain things but I can’t always use xmlpoke when I am running on my machine etc..

This is all grand and peachy for myself being the only developer, but then what happens as I bring on more developers? Then I need site.username.desktop.config, for each and every developer. This becomes a real PITA.

I know there has to be a better way to accomplish this other than the way I am doing it now. It has worked so far but it’s becoming a pain to change a setting and then copy the site.whatever.config to the right place and rename it to site.config. I guess I could use pre/post build events but again this seems like to much of a pain.

Does anyone have a better way of doing this? I can’t stand this method anymore. I need something more effecient

Build, Train and Listen

This afternoon I conducted a training for a number of teachers that will be using my new website CMS to perform website updates.I know alot of developers groan at the thought of talking to the users of their software. People truly are stupid in numbers. Even I don’t like it all that much. That being said, I still force myself to do these trainings from time to time.

Normally we have three other people that actually perform the trainings, but when a number of new features come out for the first time, or we are trying something new I setup a new presentation and talk before all the people. You would be suprised how beneficial this can really be to the health of the project. Now, there is definately alot of extra chatter going on in the form of complaining, or a user that can’t figure out whether to right click or left click, but as a whole you can instantly see trends arise in what people are trying to do that they can’t do.

Amazingly, the more of these I go to you consistently see the average person do the same set of things to the software. This helps so much in jotting down notes on how to make this easier or make that easier. I can get quality feedback in 90 minutes that would take me much longer to retrieve from Reviewers. Unfortunately you do have to filter out a lot of extra suggestions that is irrelevant, like the one user that wants it to everything for them just outside the realm of reality.

Being in a school district and making software for internal use only definately has it’s benefits so this probably doesn’t apply to all situations but it should still be considered. Maybe along the lines of telling a user of the system to user a piece of software like normal and you watch them go about their normal work. The desire here, at least for me is to eliminate the pain they have to deal with when I am not present. My aim is to make it as easy as possible for that user to utilize my software so that they will recommend to management that we should continue working because of this or that, or they should renew my contract etc…

Throughout the whole month of September I will be doing at least one training a week if not twice at two school per week. By the end of the month we should have the majority of the schools out of the way. Hopefully then the teachers will stop pestering me =)

It is quite a task to attempt to bring about 1500 teachers up to speed with a new piece of software in a little over 2 months and also continue on with my normal duties. I think in the end the trainees will also train the trainer. Both parties are receiving. Cheers!


Welcome to the new blog.Over the next couple of weeks I will continue to be doing informative posts about agile, ddd, castle project and other various development topics.I am expecting a new baby boy in the next couple of weeks. His name is Aidan Allen Chambers and his due date is October 11th. Mom can’t wait to be done with the pregnancy. She is nearly drained of life =)Check out the Flickr pics on the bottom right to see some sonogram photos of Aidan. Cheers!