Heavy Hearted…

Yesterday morning our little black guinea pig passed away.  Melissa and I were leaving to take him to the vet when he passed away in my hands.  I had done everything I could think of over the past two weeks to nurse him back to health after discovering he was losing weight.  I took him out of his cage and gave him all the fresh veggies he could eat.

On that Tuesday morning I lost my little buddy…  And it makes me very sad.

Day One…

And so starts day one of the development week.  Admittedly it is hard to get going this morning as there are other distractions around but at the same time I’m really looking forward to getting lost in some code only to emerge with a product that feels good.  There are a number of ways I intend to use to make the code I produce this week live up to that standards.

The first is to have a GIT repository.  I’ve used SVN before, but everyone is jumping on the GIT band wagon and frankly, I can see why.  I’ve been going over the documentation for it looking for the catch as to where it gets confusing to use…  Haven’t found it yet.  In fact, I have my first repository up and going right now.  The next step is to see if I can post back data to it.  There are some user rights that I have to switch around on the remote server, but that shouldn’t be hard.

Secondly, two words…  Unit…  Testing…  Yes, I ddn’t think I would see the day that I’d write more testing code then actual useful code, but the draw to making code that doesn’t have to be fixed after every feature addition is quite strong.  I have my doubts and questions on how to unit test for certain things, but google is my friend on those I think.

Finally, I’m writting out a set of requirements for each of the projects (some of the requirements have already been met, but I’m going for completeness) and I’m holding the release of the code to them.  Once they have been met and tested, I will post them to the InterCAVE website for everyone to use.  One thing I hadn’t thought of was that I would need at least an hour or two after the code has been finished to create a “How-To” for each one.  A program without documentation is kind of useless after all.

Scheduled DEV time

Networking and system administration is my profession, but admittedly programming is my passion.  I am lucky to be in a position that allows me to write utilities and programs to enhance our network at work and at home.  Deep down inside I also hope that someone else on the Internet might come across them and find them useful on their network as well. 

One of the biggest problems is finding an extended time to work on a project.  At work there are slower times then others that can become productive, but there is always the chance that people will come asking for help on this, that, or the other thing.  What I need is a time set aside to simply sit down and get some of the stuff done.  I had thought about taking a sabbatical to see if I would do it full time, but the war chest hasn’t been built up enough yet to do that.

What I DO have, is 10 days of vacation to use in the next month or they go bye-bye.  I have arranged to take June 8th through June 12th off from the day job and will be using it to polish up and release some older projects, to finish some newer ones, and hopefully to do a little research into some existing problems and ideas that are bouncing around in my brain.  This is something new to me as I’ve never had 5 days of pure development time set aside.  Hopefully I will be able to post a summary of each days work here (or over at the InterCAVE Studio :: Code site).

UserManager project

Some time back, I started out on a project that would simplify creating users.  Working in a public school, I knew that staying on top of user additions can be a daily task and one that might be better suited to the computer teachers.  Otherwise they would have to wait for someone in the technology department to go through the help desk email box.  While you can trust a computer teacher to make a good effort, you can’t necessarily rely on them getting all of the settings correct or the location for their object correct for that matter.

I reasoned that the best idea would be to create a program that would give you just a few choices, maybe based on their grade level.  Click on that choice, then enter their first name, last name, and student number.  From there the program should simply do all the tasks that are needed for a new user.  Four years after my initial hypothesis, I actually managed to put together a program that did just that.  The stars aligned, and time was granted for me to work on it.  This was, of course, because even for us to create a user, it took the better part of 3 minutes EACH.  When you consider that the UserManager program does it in under 5 seconds each, thats a pretty good improvement.  It gets even better when you feed it a .csv file full of new users.

A year has passed and some new requirements have emerged.  We have outsourced our student email to live@edu (a microsoft live product) and need to create user email accounts along with user objects.  Instead of simply adding the code and effectively maintaining the program as a in-house only program, I’ve been working on moving the creation/deletion/password changing features out into plugins.  My hope is that this will allow others to pickup the base program, use whatever plugins i’ve already developed for the system, and maybe add a new one or two depending on their network.

You can find the UserManager project over at InterCAVE Studios.