Wednesday, September 10, 2008

Unwelcome Compromise

Alright, now on to Allacrost. If you keep up with the site news at all, you'll see that we've been rather sluggish this year. So sluggish, in fact, that at least once we've been accused of being a dead project (we are not though, not by a long shot). A lot of the people on our team have been not outputting nearly as much as they usually do. Especially myself. This year has been the first real break that I have had from Allacrost since I started this project over four years ago, and for a while it felt really good. Now I feel guilty when I ignore Allacrost and instead choose to spend my time watching Netflix movies or playing games with my little free time. I can't speak for everyone else, but I know there are three reasons why my time to spend on Allacrost has diminished by so much.

First, my training takes up a lot of my time. I'll spend anywhere from 1.5 to 3 hours a day exercising (not including travel time, socializing, etc.) and I usually workout 6 days a week. Many times I'll workout in both before and after work, so those days are even tougher. Allacrost used to be my primary hobby for many years but I've just replaced it with something else (for better and for worse). The second reason is work. In my past job I used to write code all day so when I came home, often I was sick of programming and it was the last thing that I wanted to do. So since I hardly do any programming at my job lately, I thought to myself "hey, I'll come home and won't be burnt out on programming!". Wrong. My work is so demotivating and my days at work are so long and boring that when I come home I just feel lazy and lethargic. I think work is actually making me a little depressed as well. The third reason is I've been having trouble maintaining my Debian system. I run Debian unstable, so I guess I can't complain too much. I didn't update my system software for a long time but finally did it a few months ago and decided to install a new kernel. Well, I couldn't get the ndiswrapper to work for my USB wireless device (even though it worked and continues to work fine in the old kernel) and I had problems with nvidia's graphics drivers as well. I spent nearly half of my Saturday trying to get those two to work once and made almost no progress, it was very frustrating. To make matters worse, the upgrade broke the graphics drivers in my older kernel, and I can't get them working again because that software isn't available anymore in the Debian packaging system (AFAIK). I've also had headaches with hardware, including a dying (in a very loud and annoying fashion) north bus fan on my motherboard, which I replaced with a passive heat sink (that I had to modify with a hacksaw to get it to fit with my graphics card) and I think its not quite enough, because now occasionally my system will randomly freeze up in a very bad way and I have to restart my system. I've been considering extreme solutions such as buying new hardware or installing Ubuntu over Debian, but I haven't made up my mind yet. I really want my system to be more quiet though...when I built it years ago I tried to choose components to make it as silent as possible but it is still definitely loud. I can still work on Allacrost on my laptop of course (running Ubuntu), but I hate working on my laptop (ergonomic issues with it).

Anyway enough of those issues. So we've been on the cusp of our next release for Allacrost for like two months now. There's just not a lot of motivation on the team right now and we have been really taking our sweet time with this one. Its kind of annoying actually. I'm not sure if I'm correct here, but I've been thinking that maybe I'm the reason that the rest of the team has been slow and unproductive. I am the leader of the team, and I've been so detached from Allacrost for a good part of this year that I don't know what people are working on, or who some of the new people are, or things like that. So I think that my actions (or rather the lack of them) has led everyone else to feel decreasingly motivated about Allacrost and things just kind of gradually slipped away. Even though I'd like to resume the commanding leadership role that I used to have, I don't know if I have the capacity to do that if I'm also working and training my butt off. I've been trying to encourage some other people to step up into being leaders so that our team can continue to function well even when I'm gone, but its difficult.

One thing that I think would really help our team out in a phenomenal way is to have a team manager. We've had three team managers in the past (all of which have left the team). They've all been a great help in their own way, but none of them have really stepped up the way I hoped they would. I really want a manager who lives up to that title. Our previous managers have been more like "support personnel", helping with the website and other miscellaneous stuff. I want a manager who organizes people, sets priorities, organizes content, leads design discussions, etc. I know its hard for someone completely new to the project to step up to such a role, but I still hope that we can find such a person someday. I know the manager of the FIFE project, barracuda (who also visits our IRC channel quite often), and he is exactly for FIFE what I want our manager to be for Allacrost. We are currently without a manager, so after we get our next release out I think we'll probably solicit for such a position. If we can get an outstanding manager (or managers) and have other leaders on the team live up to their roles, I think our team will be in awesome shape.

Content production has been slow lately too although our main composer, Ryan, has been producing a lot of new music lately. I almost feel bad sometimes because he has produced so much music for this game over the past four years, and yet so far we have very little game in which to present his works. The programming team made a decision a while back to stop messing around with our engine so much. Our engine is still incomplete, but its in good enough shape that it can do most of what we need. Much of our time last year was spent working on the engine, which is great and all but it doesn't really do much to help progress of the game in the short term. We've decided that instead we're going to be more focused on our short-term objectives. We know what features we need implemented for our next release, and we're going to do exactly what is needed to implement that feature. That may require us to go into the engine sometime to add support for something, but for the most part we'll be working on code for the actual game.

For the past couple of days I've been working on Allacrost a lot while I'm on my vacation. And let me tell you it feels really good to be working so hard on this project again. I've been working on the map mode code and fixing some issues in there and preparing it for additional features that we'll need in the near future. Its exciting to work on challenging design problems again (something that has been mostly absent from my job). My motivation to work on Allacrost has increased nearly ten fold in less than two days, its amazing. I wake up each morning and get right to work on it without even thinking. I'm hoping that this feeling will last past my vacation and that I can make a full comeback into Allacrost. If that happens, I hope that other people on the team will follow my return.

Well that's about all I have to say about Allacrost. Now back to writing code. :)

Labels: , ,

Sunday, September 07, 2008

Victory and Defeat

So my race season has come quite aways since my last post. So far this year I've done one 10K run, five triathlons, one duathlon, one aquathlon, and one open water swim race. It feels kind of cool to be a more dynamic athlete than just a runner, which is how I competed in years prior to this one. I've done well enough to win a few medals and trophies in these races as well. In less than a month I'll be doing a half ironman, which is a 1.2 mile swim, 56 mile bike, and 13.1 mile (half marathon) run. I'm looking at this upcoming race as something completely different, and unlike my other races my goal isn't to win....its just to survive. That will be my last triathlon for this year and I'm kind of looking forward to the season being over so I can recover myself a bit. Other races I have coming up are a 5K run, another aquathlon, and a 10K run. Next year I'm going to do the Austin marathon (which I've trained for twice in the past, but got too injured both times to go through with it). I'll do a half marathon race before that as well. Anyway let me focus on what's been going right and what sucks.

Swimming was what I thought would be the biggest challenge for me going into triathlon, but it really hasn't been. I'm a pretty decent swimmer and I've done very well in the swim leg of several of my races. What I hate about it though is that I'm so inconsistent in my results. The pace they report in races is the average time it took you to swim 100 meters. My fastest pace was a 1:30 I swam at that aquathlon, and my slowest pace has been a 2:10 I swam at one of my triathlons. There are things that definitely make me faster or slower on the swim, the big one usually being getting in a bad position relative to the other swimmers and ending up trapped behind a pack of really slow swimmers. But I can't *feel* how fast I'm going when I swim. At the last race I did on Labor Day I thought I was having a fairly fast swim, and later when I looked at the results my pace was 1:55, and that was even with me wearing a wetsuit. I was not happy with that time at all. I was expecting to swim around or below 1:40. And during swimming efficiency is so crucial that I constantly have to check myself and think things like "Are my hips high enough? Are my arms entering the water at the right distance and angle? Are my legs kicking too little or too hard? Are my hands and fingers shaped correctly?". The list goes on. Its not too bad, just annoying sometimes.

The biggest problem I have with cycling are my technical skills. Things like making turns, mounting/dismounting, or taking in fluids on the bike are major challenges for me. I can go fast and straight on the bike but that's about it. I've been slowly teaching myself to do more and more though. My last race was the first time I've used aerobars in a race and I really think they helped me a lot. But I still feel kind of nervous whenever I'm on the bike because my balance is pretty bad. My biggest strength on the bike though is hill climbing. In a race whenever there's a hill, I always blow by at least a couple different cyclists. But sometimes I leave my bike in too high of a gear when going uphill, and after doing that a few times my lower back begins to spasm and eventually destroys me. I've had this happen to me in one race and I've been battling back problems on the bike occasionally ever since. I like cycling though, its a lot of fun. Especially when you're going fast, although going too fast (on downhills) can scare me enough that I end up riding the brake a lot.

Running what was got me into triathlons in the first place. Specifically, I have a history of shin splints and that constant injury prevented me from running as much as I would like to, which brought me to cross training via cycling and swimming, which naturally turned me into a triathlete. Even though I've been running less through my triathlon training, my shins have still hurt enough to cause me major problems throughout the year. I finally got fed up with it and a few weeks ago, went to get fitted for custom orthotics for my running shoes. They've been a great help so far and the pain in my running legs continues to drop more and more. Although I've had enough injuries in other areas that it might just be I notice the other areas hurting more than the shins lately. :/ After triathlon season is over though, I'm going to turn my focus back to purely running for a while, and I'm looking forward to that.

Earlier this week something horrible happened to me which has never happened in any race I've ever done. The race was the Austin Triathlon and I signed up for the Olympic distance, which was a 1500 meter swim, 25 mile bike, and 10K run. I thought everything was going fine during the race. I felt sluggish on the run, but that's nothing unusual for me. With about 400 meters, or less than 100 seconds, left in the race, I suddenly lost consciousness and collapsed. About 15 minutes later I woke up in the medical tent, and couldn't remember a thing about what happened. The last thing I remembered was about another 400 meters back from where I passed out. My memory was in a horrible state. I couldn't remember a lot of things, like people's names, or my own phone number. I couldn't do math either (I was trying to calculate what time I would have finished based on the progression of events). I was really upset when they told me I didn't finish the race, because I have always finished every race no matter what. It upset me enough that I cried a little and was having trouble accepting what happened. In fact I *still* have trouble accepting what happened, because I felt fine on the run. I wasn't feeling dehydrated, or exhausted, or too hot, or anything like that. And I also didn't have any damage from when I fell on the pavement. When the medics got to me my body temperature was 104F, which is a really dangerous state to be in (according to Wikipedia). Once I regained consciousness I felt fine, other than being a little freaked out about the memory loss. I wanted to get up and leave but they made me stay there lying down for what felt like forever. So yeah, I was pretty disappointed with the outcome of that race, especially because I was expecting it to be a really good race for me. But its a learning experience I suppose.

Well that sums up my race season up pretty well. If I wrote these posts more often I'd go into more detail about the specific results and outcomes of each of my races, but that's way too much for a single post. Next time I'll be talking about Allacrost, so look for that in another 2-3 days.

Labels: , , , ,

Friday, September 05, 2008

Life Update

I'm on vacation for the next week and finally able to catch up on my blog. I'll be in Vancouver Washington visiting some family for the next few days, and I'm looking forward to the cooler weather and not having to waste my life at my job for a week. As you can imagine I have a lot to catch up on, so instead of trying to do it all in one gigantic post I'll split it up over a few different ones over the course of my vacation. For this first post, I'll just talk about life in general. In the next few days I'll talk about how my racing season has been going and about Allacrost.

So outside of exercising, life isn't all that exciting. I'm really starting to hate going to work everyday. Not because I hate the people, or the culture, or the environment...but because I hate the work I do itself. Now the reason I took this job in the first place was because I wanted to gain experience in developing driver software, but I've been working at NI for almost a year now and have made almost no progress toward that goal. My first eight months or so were spent in training (somewhat irrelevant training) and rewriting a test application for VXI that was written in the late 80s and had seen little progress since then. That code base was undocumented and not understood by anyone, so it took me a long time to dissect it and figure out what it was trying to do and how I could re-write it. The application itself was actually moderately complicated as well. (It was a multi-threaded app so there were a lot of synchronization and timing issues to deal with). I didn't mind working on that so much, because I got to actually develop code and design a solution.

But nowadays, I loathe my work. The VXI driver software has a lot of issues with it. To name a few:

  1. All the people who developed the driver and who have experience with it have long since left the group or left the company
  2. The driver stack consists of multiple layers which are tightly coupled together (too tightly IMO), which makes it difficult to understand an individual component by itself
  3. Documentation on how the driver works is very incomplete in some areas, and non-existent in most others
  4. The software design is poor, making it very difficult and very frustrating to understand

Even worse, my job isn't really to develop driver software as I was expecting it to be. Its to take this very buggy, poorly written code and make minor improvements and fix the hundreds of bugs filed against it. I describe my job as a "software maintainence engineer", or the equivalent of keeping an old, dying person on life support for as long as possible. Sounds enthralling, I know. We have an upcoming release of our driver which changed probably less than 20 lines of code (none of which were by me) and supports one new controller. This seemingly simple change requires months and months of testing to get out the door (every release seems to be like this). While I have no complaints about thorough testing, I do have complaints over the fact that the other part of my job is to do most of it myself. I do have one software technician working with me on testing though, so its nice to have someone to share the pain with (he hates it just as much as I do). But I find it utterly ridiculous that months of my time are being spent following instructions step-by-step written down on a piece of paper. I became an engineer and went to graduate school because I wanted my work to be interesting and challenging. A freaking high school kid could do this testing as well as I could. My group has made it known that we don't like the testing situation and our managers (whom I have the highest respect and regard for) are trying to do what they can about this, but the fact is that I work in a group that mostly maintains "legacy" products and software so the company doesn't really care to invest in the resources that we would like to have.

So as a result, I've become more and more cynical and disinterested in my job. I love everything else about the company, but the disinterest and dislike of my work continues to drain me. I'm very unmotivated these days and that feeling is bleeding outside of work into my personal life as well. I submitted my bi-annual review earlier this week and laid everything out, stopping just short of saying "if my situation doesn't improve, I highly expect to leave the group and/or the company in the near future". I mean really, I took the job for driver development experience and I'm not really getting any of it, so I'm having trouble finding reasons to stay in my current position.

Outside of work my life has been pretty bland. I go to the movies or out to eat with people sometimes, but not much else. I did meet a great girl named Kristina a few weeks ago though and we've made a list of things we want to do in Austin. The only problem is she and I are both pretty busy so its hard for us to find time to get together and do these things. (By the way the relationship is purely platonic). Because my training and racing takes up so much of my free time, I haven't been able to visit the animal shelter much lately. Hmm, I watched a lot of the the Olympics (I never watch sports by the way) and enjoyed those 2-3 weeks. I kind of wish they went on longer. I've also been keeping up with politics this year for the first time in my life. I can point to two people who got me into this: George W Bush and Barack Obama. Bush got me interested because I look at him and what he's done and couldn't help to wonder "How on earth did such a man get elected to the presidency not once but *twice* by the people of this country?". Obama I started to learn about a few months before he announced his candidacy for the 2008 election. I really respect him for who he is and what he stands for. Unlike the Bush administration, Obama seems genuinely interested in helping all Americans, not just friends in high places.

So yeah, I'm totally an Obama supporter. I've even made a few donations to his campaign, which is the first time I've ever contributed anything to a politician. But I really, -really- want him to be our next president. If I had more time and energy I wouldn't be adverse to helping his campaign in other ways as well. The thing that entices me the most about Obama is something that most people would never think of and probably don't care about. Its the manner in which he makes decisions and works with people. I read a great piece in some Chicago-area newspaper a while back (I'd link it if I could remember) that spoke about how Obama was incredibly inquisitive about a matter in which he didn't have a lot of expertise in. I think he analyzes an argument or a problem much like a good engineer would to be honest (almost amazing that he's a lawyer then, haha). And he's not just trying to push his own agenda, I believe he sincerely wishes to work with republicans and conservatives to arrive at a compromise. Contrast that to Bush who does asinine things like vetoing bills to provide health care for poor children because he's paranoid about the uprising of social medicine. And like Abraham Lincoln, I believe Obama will put not just liberals and democrats in his administration, but those whom disagree with him as well. I think that is an excellent idea and I have a lot of respect for a man willing to do something like that.

Anyway I'll end on that note. See you next time.

Labels: , ,