Sunday, February 19, 2006

Fun at Work

I've been having some crazy fun at work! Our project is progressing very well and I've added some really sexy features to it. I found that I enjoy writing tools / scripts for developers more than writing applications for customers. (Unfortunately, the latter are more prone to paying for software than the former) ',;-) I am the resident build-master in my department. I manage the build scripts and make sure that people don't check in stuff that breaks the build. I could call myself a "Build Nazi", but that may carry the wrong connotation. I think of myself more like the "Soup Nazi", but with software builds instead of jambalaya. What is this commit? Huh? NO BUILD FOR YOU! Heh heh heh...
Yea, so. Fun at work. I think it's very important to have fun at work irregardless (not a real word) of anything. My modus operandi is that if I'm not having fun at work at the moment, I need to get up, walk around, and go bug some of my coworkers. After all, what good is having coworkers if you don't go bother them everyone once in a while to let them know you're still around.
I know there's some nerdage in this post somewhere... heh. Oh yea, the software I'm working on! Great stuff. I wrote a GUI framework a whiles back for this application and I'm finally getting some integration work done to pull pieces into it. Basically, you start with a skeleton application that has some menus predefined, a toolbar, a sidebar, and a main work area. You can define plugins via .xml files that exist in the distribution tree. These files are pulled in automatically when the application starts. I've been using Spring (for .NET) [linky: http://www.springframework.net]. They still have some bugs in there, but it's coming along really well. I think I had a post about it before... [linky]. Anyhoo, Spring is an "Inversion of Control" or "Dependency Injection" container. You describe objects in xml files and how to instantiate them. Each object may require other objects in the container to be set in the constructor or via properties (this determines the instantiation order). Check out the website, they have links to some articles regarding the topic. I may even write a paper or something about my GUI framework... oooh... great idea. So yea, the nerdage part of this is that you can drop new pieces into the application by dropping a folder into any subfolder of the application and then restarting the application. It will automagically pull in the new pieces and fire up the application. My boss liked it, I did a short demo where I pulled in a few pieces and showed how they were in the app, then deleted a folder, restarted the app and showed that the features were missing. So, the great part is that when I do a "debug" build, it will pull in all our testing plugins that test the individual controls or features as well as the whole application. When we want to do a "release" build, it won't pull those folders in. If we wanted to update a feature, we could just remove the folder and put the new one in. If we wanted to add a new feature, all we do is push the folder into the filesystem. Sexy! My job satisfaction has been skyrocketing these last two weeks. I owe it to my overdue vacation in California. (Nice place to visit, but I wouldn't live there unless I got some crazy crazy job offer or something I couldn't pass up). I couldn't move there though... I would miss my family and my girlfriend. I dunno what it was, but after I got back from my vacation, my fingers had a mind of their own (don't think dirty thoughts, I'm talking about typing). I think I'm going to need a new keyboard soon... my old one at work is a biohazard area. I've spilled coffee, orange juice (both from an orange and from a bottle), milk, water, and random bits of food on it. It contains 2.5 years of hair, flecks of skin and boogers. I'm not afraid to admit that when I'm deep in thought, I pick my nose (I'm trying to pick my brain, but haven't been quite able to reach it). I have hairy hands and they like to shed. Back to job satisfaction... Yea. We have a really small group (4 developers) so I get a lot of freedom when it comes to what tools to use and I have a say in how the project goes programming-wise (15%... the manager has more pull than me, go figure). All this work on the build script and integrating into my GUI framework have been very invigorating. There's some thing beautiful about pulling a source tree, running one command, then firing up a working application. Mmmm... hotness. This high should last until mid to late June, at which time I hope to start up another high (with a new project). Ahhhh.... yummy.

No comments: