Thursday, April 28
MOVED TO WORDPRESS
Despite Bushman's attempts to confuse me, it almost seems like we've made it through this week. Ramp, Rick and I had an awesome codefest yesterday, conferencing our phones together and going through our mutual checklists and tackling as many of the significant problems we ran into as we could. Pretty much a 14-hour straight, non-stop coding session. Admittedly, there was the mandatory "lets replace this" which took us a the first few hours, some old legacy system that we looked at and realized not only was it redundant, but so were all the systems that hung off it.
We've had a few players drop by the office who've probably left feeling neglected if not snubbed, but some of us (well, *some* of us) are insanely busy... We're trying to get as much cleanup and polish work done for Friday's presentation, and naturally we want to yank our fingers out of the pie well before its due to go in the oven.
Ramp certainly has a pretty long check-list still, which means Rick will no doubt have plenty more support to provide. But I think I'm about ready to be moving on to 1.20 work. For me that's a couple of last significant cleanup actions, a couple of minor feature adds, a revamp of the scoring system, delivering some of the new mission types, and some work on bringing us closer to having TOEs and Deployments all nicely tied in with brigades.
Ramp and I are also going to have to do some work 1.19-1.20 on brigade management and the new king-of-the-hill scoring systems, but after so many months of under-the-hood systems work, it promises to be a return to working on something that feels more like a game and less like an ATM :)
See ya'll at the con... And if you drop by the office tomorrow, please do bear in mind we're working, and to a deadline, a very very close deadline :)
- Ol
We've had a few players drop by the office who've probably left feeling neglected if not snubbed, but some of us (well, *some* of us) are insanely busy... We're trying to get as much cleanup and polish work done for Friday's presentation, and naturally we want to yank our fingers out of the pie well before its due to go in the oven.
Ramp certainly has a pretty long check-list still, which means Rick will no doubt have plenty more support to provide. But I think I'm about ready to be moving on to 1.20 work. For me that's a couple of last significant cleanup actions, a couple of minor feature adds, a revamp of the scoring system, delivering some of the new mission types, and some work on bringing us closer to having TOEs and Deployments all nicely tied in with brigades.
Ramp and I are also going to have to do some work 1.19-1.20 on brigade management and the new king-of-the-hill scoring systems, but after so many months of under-the-hood systems work, it promises to be a return to working on something that feels more like a game and less like an ATM :)
See ya'll at the con... And if you drop by the office tomorrow, please do bear in mind we're working, and to a deadline, a very very close deadline :)
- Ol
Sunday, April 24
MOVED TO WORDPRESS
MOVED TO WORDPRESS
What a strange day. I've been tweaking server code for most of it. I started out coding on my laptop while watching Deadwood episodes 3 thru 7. Then I watched Troy while cleaning up the results of some code reorganization. And finally I spent 3 hours plugging it all in to the client, to the Matrix soundtrack.
It would have been less than 3 hours if Microsoft's SourceSafe wasn't so basically abonimable and when used over a VPN ten times so.
The downside to watching Deadwood is the effect on ones vocabulary. My vocalisations over my opinions about the performance of SourceSafe were significantly discomfiting to my neighbor's wife's mother, who happened to be out on the balcony as I expressed myself...
Microsoft's efforts at destroying my soul aside, I've finally managed to pull together a group of small side projects I've been working on for what seems like forever.
Message passing is the heart of a complex system like ours, and with the distributed nature of our servers, you can often find yourself sending messages more than one hop. Spawn lists, for example, have to make two hops before being sent to the front end.
This can add up to a lot of extra complexity - each message has to be received, read and processed or forwarded. Because our older code was all written in "C" each step has to be lovingly re-created (or CP/M - Cut, Paste / Modified). But along with Rick's help, I've been slowly migrating to C++. And today marks the birthday of the new message passing routines.
I had to sacrifice a little efficiency (another reason we had stuck with the custom delivery routines for each message) but I get it back in other ways.
And what game concept did I use to bed this miraculous achievment of science? Erm, well it's a .command that allows you to change the home of a brigade. And although it worked perfectly, brigades don't have homes yet so the command is about as effective as telling Microsoft you have a complaint.
But in my little world of messages and packets, it still feels like a wonderful conclusion to a difficult week :)
It would have been less than 3 hours if Microsoft's SourceSafe wasn't so basically abonimable and when used over a VPN ten times so.
The downside to watching Deadwood is the effect on ones vocabulary. My vocalisations over my opinions about the performance of SourceSafe were significantly discomfiting to my neighbor's wife's mother, who happened to be out on the balcony as I expressed myself...
Microsoft's efforts at destroying my soul aside, I've finally managed to pull together a group of small side projects I've been working on for what seems like forever.
Message passing is the heart of a complex system like ours, and with the distributed nature of our servers, you can often find yourself sending messages more than one hop. Spawn lists, for example, have to make two hops before being sent to the front end.
This can add up to a lot of extra complexity - each message has to be received, read and processed or forwarded. Because our older code was all written in "C" each step has to be lovingly re-created (or CP/M - Cut, Paste / Modified). But along with Rick's help, I've been slowly migrating to C++. And today marks the birthday of the new message passing routines.
I had to sacrifice a little efficiency (another reason we had stuck with the custom delivery routines for each message) but I get it back in other ways.
And what game concept did I use to bed this miraculous achievment of science? Erm, well it's a .command that allows you to change the home of a brigade. And although it worked perfectly, brigades don't have homes yet so the command is about as effective as telling Microsoft you have a complaint.
But in my little world of messages and packets, it still feels like a wonderful conclusion to a difficult week :)
MOVED TO WORDPRESS
After Disks 2 and 3 of Deadwood, I decided to really push the potato couch bit today and watch Troy. And I'm shocked. It's an impressive cast, and the titles are like a Trojan army of industry names. Alas, the Trojan army fell.
Much of the acting goes beyond abysmal tho. It seems that the worst amongst the cast are so awful that they bring everyone else down. Perhaps the coaches and writers threw up their hands and gambled on the effects. The effects are hard to fault but they don't do anything special. The worst performances I've seen yet from Brad Pitt or Sean Bean. Peter O'Toole I just felt sorry for.
And it seemed James Horner couldn't be bothered either, he snagged themes from Enemy at the Gates and a couple of other films and strung them together. Mayhap he thought the impressive cast and crew and the likely effects would make the music go unnoticed. Sorry, James, but I was permanently expecting Jude Law to appear and shoot Achilles.
Frankly Doctor Who production and acting standards are higher than those that make up Troy. Especially when Achilles finally falls to an arrow in the ankle.
Much of the acting goes beyond abysmal tho. It seems that the worst amongst the cast are so awful that they bring everyone else down. Perhaps the coaches and writers threw up their hands and gambled on the effects. The effects are hard to fault but they don't do anything special. The worst performances I've seen yet from Brad Pitt or Sean Bean. Peter O'Toole I just felt sorry for.
And it seemed James Horner couldn't be bothered either, he snagged themes from Enemy at the Gates and a couple of other films and strung them together. Mayhap he thought the impressive cast and crew and the likely effects would make the music go unnoticed. Sorry, James, but I was permanently expecting Jude Law to appear and shoot Achilles.
Frankly Doctor Who production and acting standards are higher than those that make up Troy. Especially when Achilles finally falls to an arrow in the ankle.
Tuesday, April 19
MOVED TO WORDPRESS
So they elected a new pope.

But could they really not see this?


But could they really not see this?

Saturday, April 16
MOVED TO WORDPRESS
Rickb and Ramp are steadily steaming through getting the new UI into shape, but on the host side I hit a home run around about last week - basically trying to get the hosts to crash, find it and nail it - with little spurts of manic activity when I've had to do something for one of the client guys. If it were one or the other, it wouldn't be so bad, but the gear shifting grates a bit - I guess my clutch ain't as well oiled as it used to be :)
It's also a huge come down - although I think Rick hates the last 10% more than any other coder I've ever met :) I'm pretty sure he hates having to work with me, I'm a black box that takes forever to make small changes - 'cause what to him is a wrong bit in a set of flags here, to me is 2 packers, 3 receivers, 3 senders, 3 dispatchers, 1 or more queues and a probably a couple of processors in there someplace to check on :)
Some of the older code we still run is very locally efficient. Marty (Vandal) was a bit of a genius at figuring the best way to minimize number of bits and cpu instructions involved in an operation. But he sometimes failed to see the effect on the larger picture. Just because all your gears run like greased lightning doesn't mean the whole machine is guaranteed to be perky. But he was very good at effectively engineering meta-data from context.
For example the hosts only exchange ownership information about facilities - so only the strat host actually knows if a facility is open or closed, and in the case of firebases the hosts assume that when all of the buildings in a firebase are destroyed, the firebase facility must be closed. Conversely, if a firebase building exits the destroyed state, the parent firebase facility must be open. Voila.
These remote assumptions can sometimes trigger events elsewhere in the system where another assumption is made (and quite possibly modifies or reshapes the data that's being transferred), and it can take a long time figuring why something over here can cause a seemingly unrelated effect over there.
The trouble with these assumptions is that you can end up with a kind of chinese whispers between processes (or even within a process), that can be very hard to figure out, short of following the entire path of an input all the way to output.
So when, for example, we're trying to figure out why the 1.19 in-game and out-of-game maps are behaving differently (they're the same map, just connected to different servers), and Rick asks me "Just don't send CP_STAT_OPEN all the time" - it's going to take me a while - it's very possible that in the particular message Rick is receiving, that bit means something entirely different - perhaps the code used to ignore the flag and so something else borrowed it...
That, however, is pretty rare in Vandal's code. He was very good at either marshalling data or massaging event sequences so that meta data could be fairly reasonably assumed out of it. The cruder "borrowing" of data is usually the offspring of one of the other former host coders...
Fortunately there isn't a great deal of Elmo or BRD code left. Given my rework of the mission server, I'm not even sure there's any of his left. I've more than halved the number of lines of code in the servers' codebase ("servers'" indicating the servers, plural, rather than just the map/mission host: I've reduced the amount of code in the map/mission host by over 70%, and significant amounts of that are now directly shared with the client and neighbouring hosts).
It's also a huge come down - although I think Rick hates the last 10% more than any other coder I've ever met :) I'm pretty sure he hates having to work with me, I'm a black box that takes forever to make small changes - 'cause what to him is a wrong bit in a set of flags here, to me is 2 packers, 3 receivers, 3 senders, 3 dispatchers, 1 or more queues and a probably a couple of processors in there someplace to check on :)
Some of the older code we still run is very locally efficient. Marty (Vandal) was a bit of a genius at figuring the best way to minimize number of bits and cpu instructions involved in an operation. But he sometimes failed to see the effect on the larger picture. Just because all your gears run like greased lightning doesn't mean the whole machine is guaranteed to be perky. But he was very good at effectively engineering meta-data from context.
For example the hosts only exchange ownership information about facilities - so only the strat host actually knows if a facility is open or closed, and in the case of firebases the hosts assume that when all of the buildings in a firebase are destroyed, the firebase facility must be closed. Conversely, if a firebase building exits the destroyed state, the parent firebase facility must be open. Voila.
These remote assumptions can sometimes trigger events elsewhere in the system where another assumption is made (and quite possibly modifies or reshapes the data that's being transferred), and it can take a long time figuring why something over here can cause a seemingly unrelated effect over there.
The trouble with these assumptions is that you can end up with a kind of chinese whispers between processes (or even within a process), that can be very hard to figure out, short of following the entire path of an input all the way to output.
So when, for example, we're trying to figure out why the 1.19 in-game and out-of-game maps are behaving differently (they're the same map, just connected to different servers), and Rick asks me "Just don't send CP_STAT_OPEN all the time" - it's going to take me a while - it's very possible that in the particular message Rick is receiving, that bit means something entirely different - perhaps the code used to ignore the flag and so something else borrowed it...
That, however, is pretty rare in Vandal's code. He was very good at either marshalling data or massaging event sequences so that meta data could be fairly reasonably assumed out of it. The cruder "borrowing" of data is usually the offspring of one of the other former host coders...
Fortunately there isn't a great deal of Elmo or BRD code left. Given my rework of the mission server, I'm not even sure there's any of his left. I've more than halved the number of lines of code in the servers' codebase ("servers'" indicating the servers, plural, rather than just the map/mission host: I've reduced the amount of code in the map/mission host by over 70%, and significant amounts of that are now directly shared with the client and neighbouring hosts).
MOVED TO WORDPRESS
Until I get the time to set my blog up properly (i.e something other than blogger) I had to give in and move the whole thing to http://kfsone.blogspot.com/. Hopefully should be a little more responsive here.
Thursday, April 14
MOVED TO WORDPRESS
Work's pretty crazy, we're all manicly busy, so unfortunately every time I get the spark to come here and blog, it only takes blogger a few minutes to fully douse whatever enthusiasm I had for it...
Since it's working for a change...
Apparently I've removed over 150,000 lines of code from our source code - and all that while adding new features and a very large quantity of comments. Course, I have the luxury of using C++ unlike the original coders, and I sacrifice performance on the micro-scale in some places to reap it back on the macro scale in others.
Since it's working for a change...
Apparently I've removed over 150,000 lines of code from our source code - and all that while adding new features and a very large quantity of comments. Course, I have the luxury of using C++ unlike the original coders, and I sacrifice performance on the micro-scale in some places to reap it back on the macro scale in others.
Sunday, April 10
MOVED TO WORDPRESS
About a year ago I was walking with a friend from England only to be startled by my first ever encounter with skunks. Finding myself with something of significant size scuttling at my feet I instinctively leapt back and snapped my head down to look at what I was leaping from. The pain and stiffness took a while to go down, but they finally stopped bothering me - so I thought.
Actually, I think I just trained myself not to make the movements that hurt or caused the swelling. Then, a month or so ago, suddenly the aching and pain started to come back. Presumably the reading didn't help, because it got worse, until middle of last week I had to get Doc to take me to a Chiropractors.
I've been twice now, and after each visit it feels so much better, but it seems to be becoming less painful by spreading out. When I woke this morning I couldn't move my head without an unpleasant grinding sound.
I have 3 appointments with the Chiro for 4 weeks, I've bought one of those "sweedish sleep" pillows to give me some better support and I've been using a gel-ice pack.
I'm coming to the conclusion that my cat is done with litter trays. I'm having a hard time figuring out what she likes to eat. Doesn't like anything "mush"ed, likes to lick the gravy off of sliced food, but her favorite foods seem to be dry - which is a little odd. I bought her some Iams UT, since she seems to have a problem that way, well see if she'll touch it. Doesn't like "fishy" foods - won't touch salmon, doesn't like liver, will eat "baa bits" (dried mutton) but won't touch wet lamb foods, loves cheese, enjoys a bit of egg in her food occasionally. Likes milk, but only when I want to give her water.
Actually, I think I just trained myself not to make the movements that hurt or caused the swelling. Then, a month or so ago, suddenly the aching and pain started to come back. Presumably the reading didn't help, because it got worse, until middle of last week I had to get Doc to take me to a Chiropractors.
I've been twice now, and after each visit it feels so much better, but it seems to be becoming less painful by spreading out. When I woke this morning I couldn't move my head without an unpleasant grinding sound.
I have 3 appointments with the Chiro for 4 weeks, I've bought one of those "sweedish sleep" pillows to give me some better support and I've been using a gel-ice pack.
I'm coming to the conclusion that my cat is done with litter trays. I'm having a hard time figuring out what she likes to eat. Doesn't like anything "mush"ed, likes to lick the gravy off of sliced food, but her favorite foods seem to be dry - which is a little odd. I bought her some Iams UT, since she seems to have a problem that way, well see if she'll touch it. Doesn't like "fishy" foods - won't touch salmon, doesn't like liver, will eat "baa bits" (dried mutton) but won't touch wet lamb foods, loves cheese, enjoys a bit of egg in her food occasionally. Likes milk, but only when I want to give her water.
Thursday, April 7
MOVED TO WORDPRESS
Tuesday, April 5
MOVED TO WORDPRESS
Jessica Alba, say no more, eh, nudge nudge, wink wink?
I wonder what they might fill the extras DVD up with. No, wait, that other thing.. hope :)
I wonder what they might fill the extras DVD up with. No, wait, that other thing.. hope :)
Sunday, April 3
MOVED TO WORDPRESS
Speaking of heaven, my DVD will happily play DVDs at 1.5x speed. Otherwise I would have had to suffer for a whole 90 minutes of Lathe of Heaven. Even so, an hour of it was bad enough.
To be fair, this is the 1980 version I'm refering to... It seemed to be the televisual equivalent of a school play, only with less acting talent.
If you ever feel you have toh to the world, make yourself watch Lathe of Heaven.
To be fair, this is the 1980 version I'm refering to... It seemed to be the televisual equivalent of a school play, only with less acting talent.
If you ever feel you have toh to the world, make yourself watch Lathe of Heaven.
Saturday, April 2
MOVED TO WORDPRESS
cd typo ; rm -rf
Of course, it only takes a minute to write a script, so it hardly seems worth backing up. Pfft. Even a handful of scripts. And of course the nature of scripting says it gets easier as you get more scripts.
Oh, don't worry. I learned that lesson a long time ago. We use source control for all the critical stuff. I got caught out with a few things I didn't have properly backed up, mostly because I recently migrated my development box over to a new machine.
All the same, I hate testing the backups... I once lost 10 years of my personal data because a harddrive literally caught fire while I was backing it up to CDs. I wasn't expecting anything to go wrong, it just seemed the sensible thing to do. By a stroke of luck, I had managed to back up everything new on the drive since I had last cloned the drive for a backup. Wahoo! Unfortunately in the process of restoring from that drive I lost that backup too, and was left with just the one CD.
It seemed like it was going to be more of the same today, Gophur breathing down our necks for a 5pm beta and Doc doing his best to make sure the reset went without a hitch, and all the while I'm trying to get the client to rebuild for Ramp, with host-API changes I'd made, figure out why spawning wasn't working with the latest build on the host or the client, and at the same time replace the rank system with the new rank structure.
With just enough snags to ensure me nothing was going to happen without another 12 hour coding stint, we kept running into bizzare new problems, and suddenly everything clicked into place. The problems were functionality functioning as expected and the new mission state engine worked perfectly.
