Monday, November 28, 2005

The upper-limit of skill

After having not played CounterStrike for nearly 2 weeks I hopped back on tonight for almost 3 hours. It was great getting to play again but with every missed shot I made I wondered if there was an upper-limit to my skill with this game that I will never surpass. I've been playing this game on an almost weekly basis for the past four months yet it seems I am just not getting any better.

Some of it had to do with my mouse acting funky but now that I've replaced it, I can't claim that as the sole cause anymore. Sometimes it's as if I will aim at somebody, shoot, and then watch them slowly look towards me, point their gun at me and plug one right in my head. All this time I am continuing to unload my clip on them with no negligible effect. It is quite irritating!

Not to worry, the M4A1 is still my weapon of choice but lately the AK-47 has found its way back into my regular arsenal along with the Desert Eagle as a handy sidearm. Three shots to the head (when I can aim properly) and they go down. Speaking of AK-47, I find it rather odd that the primary firearm for the new Iraqi Army is in fact this fine example of Soviet engineering. Media has portrayed this weapon as that used by terrorists and now our newest ally is training to use it in everyday operations. I suppose the choice has more to do with cost and interoperability with existing arms but still, it is a bit disconcerting.

Continuing on my political angle, my former representative, congressman Randy "Duke" Cunningham, admitted today to accepting bribes from various defense contractors in exchange for furthering their interests with the Department of Defense. These charges are quite egregious, carrying a prison term of 10 years and a fine of $500,000. This story hits somewhat close to home as Mr. Cunningham sponsored my application to the Naval Academy in 1997. Though I ended up going to Purdue instead, at the time it was my hope to become a Navy Ace just like he had.

Regardless, crooked politicians deserve jail time. Though Washington may be well known for it's insidious lobbying and downright nasty politicking, there is no excuse for degrading an office of Congress in this manner. If he was unable to handle the pressures and temptations of such a place then he should not have been there. To survive in Washington takes both luck and skill.

Tuesday, November 15, 2005

The cutting-edge and its place in production environments

The software developer constantly balances on the tip of a sword in their daily job. On the one hand they need to write production-quality applications in an efficient manner. But on the other hand, new tools and products are coming out every day that can help developers speed up their coding and also make their projects that much better.

These new tools however are not always ready for the production environment. I am especially wary of relying on products that are not v1.0 yet. But even those tools that are supposedly mature can introduce an untold number of bugs. When my former employer decided to go from ColdFusion 5.x to MX 6.0, the number of bugs doubled overnight. What had once worked in the old version, such as loosely-typed date formatting, no longer worked in the Java-powered strictly-typed 6.0. A minor revision a few months later helped in some places yet caused even worse bugs in others. But because in that few months time we had written applications that took advantage of all the new features there was just no going back.

In retrospect it was a good decision to upgrade however, certain steps should have been taken beforehand to analyze what changes a major upgrade would bring. This is why it is so important to have both a testing and development server in addition to a production server. With both of these tools we could have continued to develop in ColdFusion 5 while testing version 6 on a limited basis. When we made the switch to version 7, much more precaution was taken and though I was no longer employed there to see the final push I can only hope that the extra servers helped ease the transition.

Currently I am toying with the idea of using Ruby on Rails as the platform on which to build the next incarnation of my company's health portal. Whereas the accepted standard at the company is J2EE, recent articles have convinced me that the Ruby path is the true path though it may be harder in the short term with regards to management. In actuality, management at my company is fairly progressive and has never given me reason to think that they doubt in their programmers' abilities. And now that Rails is approaching the big 1, it will make adoption of it as an enterprise-capable platform that much easier.

Do not be afraid of something simply because it is new. The future is coming regardless of how we feel about it. Just as Java was once at the forefront of web application development, so I believe that Ruby is in that position today. But before you make that leap to a new technology make sure you have your contingency plan in order and are ready to put in some long hours if necessary.

Thursday, November 10, 2005

Assumptions and their impact on software development

The rhetoric we usually hear about assumptions is that they "make an ass out of you and me". But I've heard another one that I think is more fitting in a lot of circumstances: assumptions are the mother of all fuck ups. This was proven beyond a doubt today when a vendor professed to us in a meeting that he had made certain assumptions about our product and that he would now need much more time to take these new 'facts' into account.

It's funny the way facts and assumptions work. For most, an assumption is a fact until it is proven otherwise. This is especially true in software design where there are so many variables that to take them all into account can cost an exorbitant amount of time. As such, programmers tend to focus only on the big ones leaving the smaller assumptions to sort themselves out. This can and often does spell disaster for large projects.

One of the ways to help minimize such dangers, besides increased communication between team members, is to decrease the complexity of a project. Remarkable advances have been made in software development to facilitate code testing without sacrificing budget, time or scope. On the Java side, I've been hearing great things about JUnit from my friends. But unfortunately for J2EE development, overall complexity still remains a huge hurdle to overcome, even for small to mid-sized projects.

Enter Ruby on Rails. This is the most ambitious project I've seen to date to try to tackle the problem of increasing complexity and overhead with regards to web application development. I've worked in many languages over the years: Perl, ColdFusion, PHP and Java just to name a few. When I saw what Ruby was capable of I didn't believe my eyes. But after I installed it and had a web application running in under 15 minutes, I knew that this was something big.

So many of the modern web application languages available today require assumptions to be made. Configuration settings, typically stored in large and difficult to read XML files, are assumed to be static but RoR makes no such assumptions. Using inspection and reflection, Ruby can change its configuration settings at runtime so that changes made to a database structure are promulgated to the application itself without having to do the reconfigure, recompile and redeploy dance so many J2EE folks have gotten used to. And most important of all, less assumptions equals less fuck ups.

Today is the first day of the rest of my web development life. I had two books waiting for me when I got home and I can hardly wait to crack them open. So after I sign off here I'm off to dive into my new RoR books. Look for more articles here on this subject as I learn about this amazing new framework.


Monday, November 07, 2005

Close Encounters of the Third Post

I remember reading somewhere a few years ago when blogging was all the rage that on average a blogger only posted twice before losing interest and moving onto something else. Twice is precisely the number of posts I made at my previous blog attempt before losing interest. But I am determined that this time will be different. It seems that I'm thinking about this blog all the time. Whether I am at work, driving or at home playing Counter Strike, I am thinking about what I could write about in my blog. Tonight I got some real inspiration so here goes nothing.

First off, I love the DVR. Some might know this technology better as TiVo but for all intents and purposes, DVR is a step ahead. It works interchangeably with your cable provider so that the same box you record shows on is the same one you can order movies from. I've taken advantage of this fact several times and my cable company has proven to be an excellent provider.

So knowing that I use the DVR for everything I'm going to also let you in on the fact that I never watch commercials. If I have to wait an extra 20 minutes to watch a show without interruption then I'll do it. I've come to absolutely despise commericals. Most of them lack any value whatsoever and I figure that I get bombarded with enough commercials as it is surfing the web.

Tonight I saw the two-hour Law and Order: Criminal Intent movie and was absolutely blown away. It had suspense, storyline and more. And just when I thought it couldn't get any better, guess who walks in: Colm Meaney. In case you aren't a huge Star Trek fan like myself, that's Miles O'Brien of TNG/DS9 fame. But my obsession for Star Trek can be saved for another blog entry.

Anyways, so Colm Meaney walks in and his character is a complete 180° from those that I remember him in. He is a salacious and repulsive character, absolutely disgusting. But he played it so well that after the show, it was difficult to imagine him as the mild-mannered Chief Engineer of Deep Space Nine. But without giving too much away, let me just say that it was a great episode and that without DVR I would have a lot more time on my hands to write in my blog.

Friday, November 04, 2005

Sushi rocks!

With nearly all of my fellow co-workers out today due to various circumstances, I ended up going to lunch with just the boss. His name's Ryan and he's a pretty cool guy. He's not much older than me, likes to party and totally understands the direction that the web is going. Oh and he also likes sushi. And not just the California rolls but octupus, tuna, crab, et al. He even had the sushi chefs whip up a special roll for us. It had tuna, cream cheese and all sorts of spices and was fried in tempura. Mmmm, so good. I had that meal over seven hours ago and not even a single pang of hunger.

Looking back on my blog from yesterday, I still didn't fully explain the meaning of my blog's title. So in addition to the M4A1 being my weapon of choice on Counter Strike, it is also a gun that I make no effort at concealing whenever I have posession of it. It comes with a silencer that you can attach but that just slows down the rate of fire and besides, it makes pretty colors without it. So hence the blog title.

There are some other topics that will come up in my blog from time to time. I'm a huge political junkie and a progressive. So whenever this administration makes a gaffe, which seems to be happening with increased frequency, don't be surprised if I comment on it. Actually, the Senate, House and silly politicians in general are all fair game as far as I'm concerned.

Thursday, November 03, 2005

Com os belos companheiros

The title of this (my first!) blog comes from a Brazilian drinking song and means "with my beautiful friends". I've only managed to memorize the first and last verses but I keep trying. Hmm, I suppose folks might be wondering what I intend to write about in this space. Brazil definitely. Audis. Sirius. Counter Strike. Oh and my newest love: Ruby on Rails.

I actually had a blog about a year ago. I set it all up on my own personal website and made my best attempt to keep it up to date. But the time between updates got longer and longer. I just figured it wasn't worth it anymore and that it was more of a blight than a nice looking feature so I took it down. Lately though I've had a lot on my mind, things that I want to get out and I figure that this is as good a place as any where the entire world can read it ;-)

I've actually been surfing the web for 10+ years now. I started with a dialup account at an outfit called CNS in my hometown of Carlsbad. I was only 16 at the time and I remember having to go out and buy an additional 8MB of RAM so I could browse the Internet graphically. I'd been using BBSes for a few years at that point so the transition was fairly gentle. But once I made it there was no turning back.

High school graduation happened a few years later followed by college graduation and recruitment by a central Florida-based company called Harris. Times were good at Harris for awhile but then things turned sour. To save this space from becoming a rant against bad management (and a few bad managers in particular) let me just cut it short by saying that I ended my tenure there to begin working at a great local company called Health First Health Plans.

In the three months since I started there I have come to love programming again. I was put in charge of taking a barely functioning web portal written by three wannabe CS guys (actually I think wannabe CT would be more apropos) and turning it into something that my company could market as a feature of their health plans. We're a lot closer to making that a reality, a month away perhaps, and the future is looking very bright.

Oh, you're probably wondering about the title of my blog. It comes from the fact that my favorite weapon in Counter Strike is the M4A1 (pictured right). It's a wonderful weapon only available to Counter Terrorists but whenever I play Terrorist I always take the opportunity to steal one off the dead body of a CT. That's short for a Counter Terrorist player, not somebody degreed in Computer Technology as it was referenced above.

Anyways, I've rambled on far too long for a first blog. I will do my best however to keep this space updated, unlike some certain other bloggers I know.