Print This Post

An unfortunate turn of events

So, apparently my company will be downsizing, with IT taking the brunt of the cuts…  By rough estimation, it’ll end up being around 20%. Doing the math that ends up being 3.5 developers. I am the 4th newest, but the most recent fills a singular specific job that’s not going away, and my gut says he’s safe. Which puts me at #3   :-(

My company is pretty choosy about the hiring process and it’s personnel, and truly, there is no chaff at all to cut. It seems that the only logical choice would in that scenario would be people with the least amount of connectedness which to me suggests “Last In, First Out” (pardon the programmer humor)

At any rate, a great bunch of guys and a very viable company, I hope they do well and that I continue my employ.

Cross your fingers for me folks, I’ll know July 2nd.

–Regards!

Print This Post

Looking for you Laura Glancz

When you lived in Macedonia (could have been Medina, started with an M :-(  )Ohio, you were dating a friend of mine named Barry D. This would have been early 90’s. After you guys broke up you vanished. I can’t find any sort of trace of you anywhere, should you happen to ever come across this, you should get in touch with me. It’s John M. and I can be reached here or via email: coder at monkk dot com

Print This Post

Goodbye TDD, Hello TDD …

Well a third TDD post and with mixed emotions I am here. On the one side, I have found BDD which (in my opinion) is far better then TDD.

What the h#ll is BDD you ask? Behavioral Driven Design. So what does that mean? It is development that is driven by the required behavior of your application(s). For example, if you need to write a online slot machine game, and the app you write behaves as an online slot machine game, you have successfully developed an online slot machine game. Ok, no duh! So what? How is that better then TDD where you would have written tests that would pass when you successfully written an online slot machine game?

Oooh, so go ahead and re-read that last question. Notice how it suggests that your artifact of the entire development process is a set of tests (and the implied working application), whereas the BDD version leaves you with a working application (and the implied tests).

That is the difference my friends, they are essentially the same but their terminology differs to emphasize what truly is important in the development process. The creator of BDD states that BDD is just TDD done right. And that’s relevant to the effect that when using TDD it is too easy to fall into the trap of focusing on the tests. Not to imply testing isn’t important, but they are a required evil in that if we never made mistakes, we would never need to write a single line of test code. As that’s pretty much impossible (being human) testing and QA aims to mitigate the risk of the human factor.

So I still haven’t really explained what the deal with BDD is, so here goes (and I apologize, an expert on the topic I am not.) To cite http://behaviour-driven.org/GettingTheWordsRight:

Behaviour Driven Development grew out of a thought experiment based on Neuro Linguistic Programming techniques. The idea is that the words you use influence the way you think about something.As an example, when I was first getting to grips with TDD, I was pairing with an experienced agile coach, writing little test methods, then writing the code, and generally feeling good about life. Then I went ahead and wrote some code without a test. The coach, JR, asked me why I’d written the code. I answered: “we’ll need it in a minute”, to which JR replied “yes, we might”. By using the word “might”, he introduced the possibility that we might not. As it turned out, we didn’t. - Dan North

As far as using it, there are a few implementations ( http://en.wikipedia.org/wiki/Behavior_driven_development) for writing tests using BDD. The most popular is rSpec ( http://rspec.info/ ) for the Ruby platform. There are severl for Java, two (mostly dead) for MS .Net Framework, and vaious others (python, PHP, scala). There is a Google Video by the rSpec creator which is quite interesting: http://video.google.com/videoplay?docid=8135690990081075324&q=behavior%20driven%20development&total=27&start=0&num=10&so=0&type=search&plindex=1

I haven’t had the opportunity to do anything with BDD, nor does it look like I will with the state of BDD as it stands today. I believe what has happened is that TDD ate it and we just have to make due. The tests we write should be behaviorial based even if the syntax of the testing domain language leaves us asserting like we’re writing procedural code instead of the OO stuff us enterprise type developers eat all day :-/ Please rSpec guys, port your code to .net :-))

Print This Post

A few weeks into a TDD style project

So, as you may have read in my previous rant regarding Test Driven Development, I am one of two developers participating in a test of TDD. The project is relatively small in scope and is mostly in a stand-alone “engine” so really, I think it’s a pretty ideal test subject. If you were paying attention, your spidey sense started tingling when you read “…an is *mostly* in a stand-alone engine…” Yes, well, as one might guess the mostly is now causing us some grief. The subsystem I am working on interfaces with the main application so that it knows when it has work to do. In the final design of the subsystem, it is a stand-alone windows service consuming application events from the event queue. Now, not only is this a test TDD project, but also trying to incorporate some Agile/Scrum techniques. I think maybe this was a mistake. Agile makes more sense when you have a team of greater then two. So really I think we are suffering an issue stemming from Iteration grouping. Our 1st iteration is quite large and provides the framework for the rest. However, we are not able to take advantage of smaller implementation items that can be pushed to later interactions. Which causes us to call my sub-system from within the application that writes to the event queue, instead of just reading the event queue.

Now, here’s where it really gets ugly. Due to how we have our name-spacing and library hierarchies, I have to move my subsystem completely out of the main project library and add it to the library code it interfaces with. And later I will have to move it back. The sub-system isn’t huge, but that’s a pain. 

And why didn’t we see this coming? Because we are implementing from what the tests dictate we need, not what we will need for the entire project. Some may argue that the tests apparently were not complete and I agree. But I think it’s a little unreasonable to know that from the test perspective until it’s discovered by actual implementation. And these happen late in the game so a change is not only a change to the implementation but to the entire underlying tests which defeat the purpose of starting with the tests.

I guess one might further argue that TDD is not a replacement for detailed design. But I have to wonder, if the design is indeed so detailed as to reveal this issue before any coding (and I have seen designs that would fit the bill, as well as designed some of that ilk for prior employers) that one would not need to start with the tests as testing techniques would have been built into the requirements and design. Of course if you can , why not as it prevents people from getting time crunched and not implementing tests at all. But isn’t the point of TDD to speed up and allow for iterative design (as well as pushing testing to the forefront, which I praise it for) ?

Regards!

Print This Post

Test Driven Development

Well folks, I’m here today to gripe about Test Driven Development (TDD if you can’t live without an acronym). For those unfamiliar with it, the concept is (and feel free to correct me folks), one starts coding the unit tests firsts and implements the various classes/structures one needs to make the unit tests function. By the time all is done, you have a completed, working, and unit tested application. Re-factoring is embraced, heck there’s even the TDD mantra: “Red, Green, Re-factor” (which comes from the Nunit paradigm of failed unit tests show up in red, running one’s show up in green, and the re-factor refers to moving code around / renaming classes functions, etc to make more sense in one’s project domain. Essentially it means, when just the test is written, it will fail as there is no concrete things to actually perform the tasks the test requires. Once you right just enough to make the tests pass, it passes (green) and is now ready to be “integrated” into the rest of the project with minor corrections).

Sounds good in theory doesn’t it? Unfortunately, I don’t live in Theory (houses are far too costly…) Why only in theory you ask? Well, as I sit here writing some tests so I can actually code the logic at some point, I’m looking at some diagrams of system interaction and whatnot and I frankly have no idea what the hell the tests are supposed to do… I have nothing to test, and using TDD, at best, I’ll have tests that work and they will dictate what I build, unfortunately, the business wants me to build something particular. Depending on how well I do it, I could end up with something that is what they asked for, OR I could end up somewhere completely different if my understanding is off or I get pulled into the cadence of test code (vs. application logic which may be optimized for performance or maintainabililty, or whatever).

Basically, what I am getting at is, TDD is helpful when you don’t know what you are building. However, if you don’t know what you are building, why the hell are you building anything? Your time would be better spent fleshing out the requirements and the design. And before you say it (because I KNOW you’re thinking it), “But the business doesn’t know what they want, just what they think they want and I need to deliver what they NEED!” Well, I agree, so wouldn’t expectations be better managed by working through requirements with the business so everyone is on the same page, wouldn’t you know better what you are trying to build? I think so.

So where did it all go wrong? To put it bluntly, <flameShield on=”true”>Inexpereienced Developers are the majority of the workforce, and they often make mistakes (as doing is the only way to build experience, this is expected, and natural (albeit problematic)) TDD is just another way to homogenize the programming workforce to reduce the negatives.</flameShield> The downside is it also reduces the positives of having an “All Star” team. People also cite “quicker to market” reasons as by the time development is done there is something to deliver. This is just slight of hand to avoid the problems of managing business expectations. Cough up more frequent milestones and vi’ola, it looks like things are getting done. Unfortunately in reality, the same time is spent, and I propose, MORE time is being spent with TDD refactoring every pass and of course the final refactoring to align the new code with the existing code (which to be fair mostly amounts to renaming of classes, functions, etc, not so much new coding)

To me it just sounds like an excuse to not have to learn more formal documentation and requirements skills. I think knowing what you have to build is far more important then delivering it quickly. The old adage goes, “You can have it done Fast, Right, and Cheap. Pick any two.” This technique addresses the disconnect between the developers and the business that employs them who know very little about software development (think Business Programming here, not so much Software Development shops ;-) ) I firmly believe a much better approach is to teach the business what they need to know to manage software development projects, because we as developers don’t have that skill, our magic is programming and archetecting, management is for the pointy haired boss types.

 Ok, I’m done. My apologies to anyone I’ve offended! Please feel free to correct me, I’d love to hear your thoughts!

I should probably mention Martin Fowler’s book, “Refactoring. Improving the Design of Existing Code” as it’s pretty good, although seasoned developers will likely know a lot of the items in the book, other books seem to reference this one (for example, “Refactoring to Patterns” by Joshua Kerievsky”)

-Regards!

Print This Post

www.Quake-Revolution.net

Due to a DNS registrar issues, Quake-Revolution.com is now available at www.quake-revolution.net and will be returning once the registrar issues have been resolved.

 The team apologizes for the inconvenience and offers a reminder, “No good deed goes unpunished” :-)

Regards!

Print This Post

Reactance 1.3 Beta 7 Released

Mostly a maintenance release to address a bug in the off-hand grapple. Thanks [CL2] R@ancid Me@t (CL2 Clan Site) for pointing it out. And thank you Evolution (from Quake-Revolution for pointing out it was likely a prediction issue (damn you Q3!)

What happened to 1.3b6 you ask? Well, it actually never happened. It wound up fixing the bug in offhand-grapple, but was no where near the real solution :-/ (they all can’t be gems folks…) So, it was sh!t canned in 1.3b7 was born.

Here’s a snippet from the ReadMe :

2/28/2008  -Monkk: Fixed broken off-hand grapple. Thanks Evolution for
                 aid in locating the problem and R@ncid Me@t of CL2 for
                 finding it (bastard :P sorry it took so long to fix...). While I
                 was in there I added 2 grapple related cvars (server
                 controlled): mod_grappleDistance and mod_grappleSpeed.
3/2/2008    -Monkk: Completely redid the offhand grapple to not force
                 the sound on the weapon itself, but instead on the hook
                 that is being fired. When one is attached to the wall with
                 the offhand grapple, the grapple continues to make the
                 sound. You will also notice the sound originates from the
                 hook missile. This is due to having no weapon actually firing
                 it. The normal q3 grappling hook weapon gun acts the same
                 as it always has. Also added cvar for
                 mod_ambientWeaponSound which will disable the sounds of
                 the RG, LG, and BFG

http://www.reactanceunlagged.com to grab it =]

Regards!

Print This Post

Quake Revolution, so much for d34d :-)

This is the most active dead Quake III Mod I’ve ever seen.

Version 1.39Beta6 Released. Head on over to quake-revolution.com for a full list of changes

Additionally, they’ve added 3 new developers: Duality, Whinger, and donvito. Duality and Whinger have volunteered to help with the Quake 3 mod, whilst donvito is going to help Lucron and I work on a Quake 4 mod.

Quake4 Mod eh, Hmmz I say :-)

The Quake Revolution Tournament needs at least 3 more teams to sign up for participation, so, dust off that Railgun, hop on over to the Quake Revolution Project Forums and sign your team on up!

Print This Post

City of Heroes / City of Villians

On the urgings of a new co-worker friend, I hopped on over to http://www.plaync.com and purchased City of Heroes. As it turns out, one can purchase the combo set of Cities of Heroes and Villians for $29.95 USD.  The downside of course, would be the $14.99 USD a month subscription fee (the 1st month is for free.) It is worth pointing out that if you buy in 3 / 6 / or 12 month blocks, the per month fee is somewhat lowered.

Now, PlayNC is the same guys who brought you Guild Wars and Dungeons Runners. All 3 of these games are VASTLY different. Though I believe they all run on the same 3rd person based game engine.

Once you buy the game online and download it (it can also be purchased in stores and activated online). It hooks to your exising plaync account and while the client is a hefty 2.4 GB of download, the servers seem to be pretty responsive. A few hours and you’re good to go.

When you login, you create a character and pick a server. Each server seems to be named for various virtues like Liberty, Freedom, Gaurdian, etc. It also seems that you have 12 character slots per server. Apparently there is a way to transfer between them at a $9.99 USD. cost.

At any rate, the character designer is pretty damn AWESOME!! You could seriously just make heroes or villains all day in whatever depth of customizable skins and powers as you can dream.

Of course, you start with just a few powers and as you progress through the game more and more unlock and are available to you.

I’ve only created a single hero and am just getting used to the interface. It differs from guild wars. It is themed well for a super hero type game, but it seems more… N00bish, if you will. I guess I can’t say thats a bad thing but it has a ton of features and I find them pretty difficulat to find wheras, Guild Wars seemed much more intuitive. Although, I have played many Fantasy themed RPG’s in the past so maybe it’s just more of a mature and demanding market.

Any way you slice it, it’s a fun game. I probably will not extend the original month much past 1 perhaps as I have an erratic gaming schedule and would like to allow myself the chance to find something new.

Anyway, I recommend it, it’s fun. You know you’ve always wanted to be a super hero and villain, you know it!

Grassy Nole will w00p j00!

Print This Post

Quake Revolution CTF Instagib Tourney (with Prizes!)

The guys over at Quake Revolution are having a Quake3 tournament for their mod towards the end of February, AND there are prizes (oooooooh!)

SpAzy has donated 3 months of Quake3 server hosting and the fellas over at ClanTeamWork.com have donated a years worth of Web hosting for the winner!

Get that railgun polished up and swing by www.Quake-Revolution.com for more details !