Note to self (rant)
by at 10:01 PM
Don't trust Windows-based CVS stuff to not mess up branches, especially when the reason for the branch is to protect a major milestone internal build from getting messed up when I rearchitect things for the next phase of development.
(I was at work until 8PM working on some basic refactoring, then I checked stuff in, then I was at work until 9PM to clean up after it and split my development into a separate module like Antoine suggested I do to begin with, in order to avoid precisely this problem. Gnar. I'm still not sure if I reverted all of the files which were affected, either.)
Comments
If you are, please move to something more robust, like storing printouts in cardboard boxes next to the furnace.
A confluence of three things happened:
- we're using CVSNT, a craptacular port of CVS to WinNT (which doesn't actually map D:\CVSROOT into something various CVS clients won't choke on) which seems to have trouble with tags and branches
- TortoiseCVS (the client I'm using) doesn't have very fine-grained control over reverting files
- I was pretty tired due to a long day of code merging, problem-explaining, arguing, manager-going, and subsequent dev tree forking and didn't think to test that the branch actually worked
The brief summary (I don't feel like going into detail) was that this morning I was working on merging James' stuff with mine and found that his "platform-independent" code wasn't even close to such, and it was exceedingly craptacular... at lunch I politely mentioned that I was running into some portability issues with his code and said that we should consider forking the source tree into two totally separate versions and just do it more like a parallel development, at which point he yelled "THAT'S BULLSHIT" at me and refused to actually listen to what I had to say, much arguing ensued, we got back from lunch, I met with Jason (our manager) to talk about the issues I'm having, various one-on-one talks happened (Jason-Antoine, Antoine-me, then finally Antoine-James), and so tomorrow we're going to have a meeting between the four of us to try to work these things out. In the meantime, I just did the CVS branch to try to do the parallel development idea as a temporary thing, but the branch didn't hold and so after Antoine and James had left I continued to work on what I thought was a separate code fork and then when I checked in my changes, it clobbered the HEAD branch which had previously contained the internal development milestone, and which wasn't tagged, making a revert much more difficult than it should have been.
I think I fixed all of the files which got messed up but I'm not positive, so I also sent email to Antoine and James to let them know what happened, and I'm going to try to go into work early tomorrow so I can make sure.
So right now I'm tired but can't sleep.
I use this weird CVS interface called "bash".
Sorry to hear about your other issues.
when Antoine was setting up our file/CVS server I asked him why he wasn't using Linux and Samba, and he said he just wanted to get it working as quickly as possible, but he still had to install/configure/etc. XP on the system, and the user permissions issues were horrible, and the CVS server is a crappy kludge (and because of the aforementioned D:\CVSROOT thing I can't even use the cygwin commandline CVS client), and so on. But that's kind of how a lot of this stuff has gone — instead of doing it the right way to begin with, Antoine decided that getting it working first was more important. I think by now I've more than proved my point that spending the extra time to do it right the first time would have saved so much time down the road...
Oh, and Antoine really needs to understand Amdahl's law. He's annoyed that my filesystem layer isn't as fast as it theoretically could be and wants me to optimize the hell out of a piece of code which is called maybe once a frame and doesn't even take up any time right now, and at the same time he doesn't care about the massive speed-optimization stuff which had to happen for the other parts of the system. He also really wants me to switch from a binary search on a sorted list to using a hash table, because hash tables are "sexy" and binary searches aren't, never mind that hash tables take more memory and are usually much slower with the amounts of data we're working with... meh.
I agreed to try optimizing the stuff more if there was an actual measurable impact on performance. Which there won't be.
(The particular issue is that rather than storing our filesystem with nested directory structures or whatever, it's just a flat list of filenames which happen to have path separators in them. He doesn't like this, never mind that doing multiple levels of lookups on a tree structure is slower and takes more memory, and that I have an extremely clever solution to the problem of changing "directories" which works by filtering out sets of files, and makes clever use of pointer aliasing to take basically no memory or CPU, and it gives a huge performance gain when only looking at a specific filtered set and so on.)
It's kind of weird in what way his priorities are messed up with some things. I'd find it funny if he weren't my team lead.
http://press.nintendo.com/articles.jsp?id=3666
My first idea would be to invest in education. Spend some time talking to people with a printout from the profiler, and explain while optimizing the resource loader that is only invoked once in a while is not going to help the game significantly. Anyone, even a nonprogrammer, should be able to get that.
OTOH, you probably already tried that, as a reasonable person.
I suppose it's hard being "the new one", especially when you know what you are doing. Best of luck, and may the game be fun to play and well reviewed
Questions like that are fine.
We're not on that list.