Geek Speak

Clean shutdown

No more zone just yet, wine’s just made me blabby. The testing I’ve just been doing with my server is real black box stuff. The build process fires off a script that kicks off the server and then runs the test harness which connects to the server and does “good stuff”, on lots of threads, until it’s done. The script then runs a server shutdown app which asks the server to clean up and go away and, well, it does.

The slacking worked

Had one of those days where I couldn’t get started. I guess it was probably something to do with the beer last night. It was Darren’s birthday and we went to Namco on the South Bank and played on the arcade machines, drank beer, drove Dogems and generally acted Darren’s age ;) Since I couldn’t get going with what I was supposed to do today I sorted out the next socket server release and did the Windows Update dance with all of my boxes.

Developer buy in

The refactoring project rolls on and the code gets better. This week saw a marked change in attitute from some of the developers on the team… I was originally brought into this project because the lead developer was leaving and other developers within the team were unhappy with taking over the project as they were scared of the state that the code was in. Management accepted the need for change and welcomed the incremental improvements that my original report on the project proposed.

VS.Net 2003

Why oh why couldn’t the new VS.Net solution file format have either been compatible with VS.Net 2002 or have a different file extension… I’m in the process up updating my socket server code to build with VS.Net 2003. The code already builds with both VC6 and VS.Net 2002. Since the project files for VC6 and VS.Net have different file extensions they quite happily co-exist in the same directory. Unfortunately, for whatever reason Microsoft chose to make the VS.

I'm an exception, let me out of here...

We’re adding some new functionality to the refactoring project. Unfortunately the new functionality is located in the Heart of Darkness - the most twisty and poorly structured code in the whole system. Today I stumbled onto something truly awful. Exceptions used as glorified gotos within a 350 line function… Exceptions are a great way of handling exceptional situations by hurling information up the call stack to someone who can deal with it better than you can.

A coming together...

A good week for the refactoring project. The release procedures that are now in place mean that we’ve been able to react quickly to new functionality requests whilst continuing the new development efforts. Ah the wonders of a source control system being used properly… It would be nice if we reacted at the right speed rather than just jumping when the users scream, but we’ll get there. This week we had a couple of releases that could have done with a little more testing… Still, this was pointed out to the person who made the call to release and, well, they made the call.

Stage complete. Time bonus...

This morning I wasted some time tracking down bugs in the multi-threaded online game engine that I’m writing for a client. Now I have tests. Tests are good. The bugs were little things, they always are. Most of the wasted time was spent simply getting the server into a state where I could poke it just right and make the bug wave a white flag. For example, a bug only shows up when you have 3 players and one does something particular in round 2 and another leaves when he shouldn’t in round 3.

Infect me

I’m not test infected yet. I’m almost there. I want to be there. But I’m not there yet. I just spent an hour and a half fixing a couple of bugs in the online game system I’m writing. It took longer than it should have. Some areas need refactoring a little due to requirements evolution. The main problem, however, was getting to the point where I could test each change that i made took too much time; run server, run clients, do some stuff, watch it fail.

You don't want to do it like that....

During some simple refactoring today, a phase of ‘restricting access to data members’, I discovered an interesting little design ‘descision’. In the spirit of completely mixing up the business logic and the display logic we have a data member that represents a colour that an object uses as its background colour when it is displayed in a grid. The colour is set depending on the state of the object; error, ok, new, complete, etc.

Requirements overload

Today -1 Week: Them: So, here’s what we need by 9th June. Us: Ok, we can just about do that… Today: Them: Oh, add all of these things and put most of the things we asked for last week way down the list. Can you still do it by the 9th? Perhaps. Right now we don’t know if we can still hit the 9th. The new requirements have added a vast element of uncertainty.