Yes, you heard that right… in celebration of the incredible turnout of last night's meeting (HEY! Someone other than myself showed up!), I wrote the cleanup utility I kept talking about writing and had been too lazy to do.
I think you'll like this… AND, the more people who show up, the more colors you'll see! :)
EDIT: In case anyone wants the utility to do this, here's the ugly beastie...!
19:03:45: Ghasatta says 'unbelievable that I actually remembered my password' 19:04:51: Ghasatta dances wildly before you! 19:11:59: Quixadhal falls down laughing. 19:12:42: Quixadhal says 'I just made myself some spinach and noodle soup with hot chille paste. :)' 19:13:22: Quixadhal says 'even more amusing, my cat is going to investigate.' 19:13:23: Quixadhal grins evilly. 19:13:45: Ghasatta says 'sounds good' 19:13:48: Ghasatta says 'the food anyway' 19:14:15: Quixadhal says 'the cat decided to stop an sniffing it. I was almost looking forward to the show.' 19:15:49: Quixadhal says 'I guess it's a good thing I didn't check in the area files right away. :)' 19:17:06: Ghasatta says 'area files?' 19:17:54: Quixadhal says 'Yep… after you install OLC, you're supposed to boot the game, do an "asave world" to rewrite them in OLC format, then reboot.' 19:18:00: Ghasatta says 'oh' 19:18:09: Ghasatta says 'that sounds bad' 19:18:13: Quixadhal says 'I didn't trust the OLC code enough yet. :)' 19:18:58: Quixadhal says 'turns out my rewrite of the skill lookup to use a binary tree would have broken a few things. The old version did prefix matching, so my changes of 'detect invis' to 'detect invisibility' would have gotten lost.' 19:19:22: Quixadhal says 'Meaning…. potions/scrolls/staffs etc that had detect invis would have "lost" that property.' 19:19:47: Ghasatta nods. 19:20:30: Quixadhal says 'That's half the reason I'm slow checking things in… it's hard to test a lot of these things.' 19:20:49: Quixadhal says 'The other half, of course, is me being lazy and choosing to play an MMO instead of being productive *grin*' 19:20:54: Ghasatta says 'heh' 19:21:30: Ghasatta says 'yeah it seems like no one ever thought about testing / qa for muds' 19:21:51: Quixadhal nods. 19:22:13: Quixadhal says 'Unfortunately, that task usually falls to the player base… if the admins don't hear people bitching, they assume things are working properly.' 19:22:21: Ghasatta says 'hell even having source versioning is like advanced technology :P' 19:22:47: Quixadhal says 'of coruse, I have no player base… well, other than the half dozen people who log in here for meetings. :)' 19:22:51: Ghasatta snickers softly. 19:23:31: Ghasatta says 'actually' 19:23:33: Ghasatta says 'one thought I had' 19:23:40: Ghasatta says 'which I am not so zealous to implement btw' 19:23:48: Quixadhal chuckles politely. 19:24:00: Ghasatta says 'is to make a unit test for mud framework' 19:24:12: Ghasatta says 'that alone would probably benefit prospective mud owners immensely' 19:24:29: Ghasatta says 'so its something we should consider since RaM is supposed to be a distribution' 19:24:53: Quixadhal says 'challenging for something that's already written. unit testing from the ground up isn't too bad.' 19:25:50: Quixadhal says 'if we were to write a ROM emulator for socketmud, that'd definately be the way to go… but it's awfully hard to add a framework to an existing plate of spaghetti.' 19:27:30: Quixadhal says 'That's one thing I do miss from my years of perl programming.. it was easy to add test cases right into the code. CPAN has all kinds of nice testing frameworks to use for that.' 19:29:22: Ghasatta nods. 19:31:18: Ghasatta the Implementor is here. 19:31:18: Quixadhal ares in the southern end of the temple hall in the Temple of Mota. 19:31:48: Ghasatta says 'so' 19:31:59: Ghasatta says 'now that I am done with my WoW Battleground ;)' 19:32:07: Ghasatta says 'you can enjoy my full focus! woo!' 19:32:20: Quixadhal grins evilly. 19:32:23: Ghasatta says 'a couple things I wanted to go over' 19:32:46: Ghasatta says 'first is that I'm going to be going abroad for about 6 weeks starting in 2 weeks' 19:32:51: Quixadhal says 'I was just trying (again) to find more space in my limited inventory. Hunters have to sacrifice a bag slot for ammo. :)' 19:33:01: Ghasatta says 'so, I'll do as much of the std::string stuff as I can before I go' 19:33:08: Ghasatta says 'I have a hunter too' 19:33:21: Ghasatta says 'level 60. I refuse to pay for the upgrades' 19:33:23: Quixadhal says 'LOL, by the time you get back, maybe I'll have it check in to svn! *grin*' 19:33:37: Ghasatta says 'heh' 19:33:47: Ghasatta says 'well thats one reason why I kept the std::string olc utilities small' 19:33:57: Ghasatta says 'didnt want to just drop in a ton of code and risk it breaking something' 19:34:12: Ghasatta says 'but I have been waiting to do anything more on that front until the utilities are checked in' 19:34:18: Quixadhal nods. 19:34:51: Quixadhal says 'I have a format function that works like sprintf, but with std::string' 19:34:57: Ghasatta nods. 19:35:02: Ghasatta says 'cool' 19:35:07: Quixadhal says 'I figure putting that in, I can yank a good many of those char * temp buffers.' 19:35:23: Ghasatta says 'you can, but that is going to be very painful' 19:35:35: Ghasatta says 'talk about risky' 19:35:45: Quixadhal says 'it uses a char * internally (with vsnprintf), and expands it if needed.' 19:36:05: Ghasatta says 'have you checked out boost format?' 19:36:21: Quixadhal says 'yes, but I hate the not-quite-printf format of it.' 19:37:10: Quixadhal says 'It would be ok if you're starting from scratch, but I don't want to hunt down one-off bugs from it doing something slightly differently' 19:38:11: Quixadhal says 'I did that in perl, as their printf function isn't *quite* compatible with libc… it doesn't honor the .3s notation correctly.' 19:38:17: Ghasatta says 'on the other hand, it's pretty stable, so you don't have to worry about the boost::format implementation introducing any bugs on its own' 19:38:19: Quixadhal says '%3.3s that is.' 19:39:41: Quixadhal says 'true. If I do it right though, this version is a near drop-in replacement. It just returns the string instead of the length.' 19:40:02: Quixadhal says 'so instead of sprintf(buf, …), it'd be buf = sprintf(…)' 19:40:15: Ghasatta says 'how is memory allocation handled?' 19:40:18: Quixadhal says 'that, I can write a sed script to do. :)' 19:41:09: Quixadhal says 'if your string is < MAX_STRING_LENGTH, it just prints to an internal char * buffer and then hands you a new std::string initialized from it.' 19:41:33: Ghasatta says 'ok, and returns the std::string by value?' 19:41:45: Quixadhal says 'if you're bigger than that, it reallocates a vector to hold it and does the same.' 19:42:08: Ghasatta boggles at the concept. 19:42:13: Ghasatta says 'why's that?' 19:42:24: Quixadhal says 'Yes. That way, if you want to do string sharing or something, that's on you. If you want to muck with it, you can without hurting anything else.' 19:42:47: Ghasatta says 'so what is the return type?' 19:42:54: Quixadhal says 'Well, I'd rather it handles whatever you throw at it, rather than truncating it and hoping you catch it. :)' 19:43:00: Quixadhal says 'std::string' 19:43:10: Ghasatta says 'how does this vector business work then?' 19:43:53: Quixadhal says 'vsnprintf returns how big the output SHOULD have been' 19:44:11: Quixadhal says 'if it's bigger than the size you passed in, you know it got truncated, so you can try again.' 19:44:29: Quixadhal says 'in that case, I allocate a vector of characters and size it to what vsnprintf wanted' 19:44:43: Ghasatta says 'why is it a problem to return a string bigger than the max size?' 19:44:44: Quixadhal says 'redo the print into the now correctly sized buffer' 19:44:56: Quixadhal says 'and return the std::string conversion of it.' 19:45:31: Quixadhal says 'the idea is, if 99% of your strings are NOT too big, it's *much* faster to use a stack char * array than a vector.' 19:45:34: Ghasatta says 'oh I thought you were going to send out a vector of strings' 19:46:01: Ghasatta says 'you are talking about what happens internally in your function' 19:46:05: Ghasatta says 'not what it returns' 19:46:16: Quixadhal says 'yep… it always returns a single std::string' 19:46:49: Ghasatta says 'kk' 19:46:58: Ghasatta says 'sounds neat' 19:49:17: Quixadhal says 'Hunters are overpowered. :)' 19:49:28: Ghasatta says 'augh, are you playing wow?' 19:49:35: Ghasatta says 'deathknights are overpowered imo' 19:49:38: Ghasatta says 'at least that deathgrip thing' 19:49:51: Ghasatta says 'it's hilarious to get ping ponged between a group of em' 19:49:56: Quixadhal grins evilly. 19:50:15: Ghasatta says 'ok, back to programming for a second' 19:50:34: Quixadhal says 'I just find it amusing that I can solo a level 59 heroic at level 57… or at least my pet can. :)' 19:50:39: Ghasatta says 'I'd like to be able to dig in on some of the std::string conversions' 19:51:07: Ghasatta says 'the pvp is more balanced imo' 19:51:22: Ghasatta says 'hunters lose 1 on 1 to paladins and deathknights' 19:51:30: Ghasatta says 'sometimes' 19:51:41: Ghasatta says 'anyway, I dont really want to do the string stuff but someone's got to do it' 19:51:54: Quixadhal says 'yeah, it's not fair that player pets despawn when their master dies, but NPC pets get to keep fighting.' 19:52:07: Quixadhal smiles happily. 19:52:18: Ghasatta says 'the mobs are just too dumb to know to attack you instead of the pet' 19:52:24: Ghasatta says '(most) players don't fall for that' 19:52:31: Ghasatta says 'although some do, and its hilarious when it happens' 19:52:45: Ghasatta says 'some big melee class sitting there whittling your pet down while you shoot the crap out of them' 19:52:47: Quixadhal says 'yep, which is why they should let your pet continue fighting while you're dead. :)' 19:53:05: Quixadhal says 'as long as you haven't released yet' 19:53:40: Quixadhal says 'would make the BM spec a little more frightening in PvP.' 19:54:22: Quixadhal says 'but yes, C++ conversion is not a fun thing in general… too many things that need to all get poked at the same time.' 19:55:38: Ghasatta says 'well I have less than 2 weeks to add code' 19:55:45: Ghasatta says 'so I want to be able to start soon' 19:56:55: Ghasatta says 'do you see a checkin happening soon?' 19:57:04: Ghasatta says 'or should I just run off with my own branch?' 19:57:50: Quixadhal says 'I did a couple of small checkins today, but not the olc utilties yet… JUST grabbed those to poke at them this afternoon.' 19:58:07: Quixadhal says 'I was going to ask if you wanted a branch' 19:58:36: Quixadhal says 'They're a bit of a pain to merge (always, with every source control system), but it would let you work at your own pace' 19:58:53: Quixadhal says 'and I can always hand-merge chunks if I diverge too far in a different direction.' 19:59:14: Ghasatta says 'well another option' 19:59:20: Ghasatta says 'would be that we have a shared dev branch' 19:59:26: Ghasatta says 'and then a release branch' 19:59:29: Ghasatta says 'which is more pristine' 19:59:38: Ghasatta says 'that way we wouldn't get too diverged' 19:59:43: Quixadhal says 'true, that would be doable I believe.' 20:00:18: Quixadhal says 'I'll have to poke at the access control files to see where one goes about that. If I can remember where they are again. :)' 20:00:25: Ghasatta says 'hehe' 20:01:15: Quixadhal says 'I actually was going to check in the area fiels too, but there's some issue from my site to Davion's' 20:01:37: Quixadhal says 'If I try to check in more than a half dozen things in one swoop, sometimes it fails and is grumpy. *sigh*' 20:03:23: Ghasatta says 'gets grumpy eh' 20:05:59: Ghasatta says 'and seriously…magic numbers on files??' 20:08:21: Quixadhal says 'not magic numbers… technically magic byte sequences. :)' 20:08:29: Quixadhal says 'do a man magic on a unix system. ' 20:08:35: Ghasatta says 'yeah was looking over it' 20:08:38: Ghasatta says '*boggle*' 20:08:50: Ghasatta says 'I don't know how to add that to my .emacs file though' 20:08:52: Ghasatta shrugs helplessly. 20:09:01: Quixadhal says 'it uses known patterns to detect file types based on content, not extension.' 20:09:15: Ghasatta snickers softly. 20:09:31: Quixadhal says 'emacs! AIEEEEE!!!! I call upon the powers of /bin/vi to banish the demon!' 20:09:45: Ghasatta says 'oh, you're one of those people' 20:10:59: Quixadhal smiles happily. 20:11:39: Quixadhal says 'vi is the One True Editor, rightly successor to the majesty of ed.' 20:12:28: Quixadhal says 'and it really freaked out one of my coworkers when I set their copy of visual basic 6 up to use gvim instead of the default editor. *grin*' 20:12:43: Ghasatta says 'http://www.io.com/~dierdorf/vi-emacs2.jp...' 20:13:59: Quixadhal grins evilly. 20:14:43: Quixadhal says 'I could write a small comic strip about how emacs is rightly a government editor… back in the days of the Sun 3/60, we had a name for emacs.' 20:15:03: Ghasatta snores loudly. 20:15:23: Quixadhal says 'It was more insulting back when most computers only had 4 Megs of RAM. :)' 20:16:19: Quixadhal says 'Eight Megs And Climing Still.' 20:16:24: Ghasatta says 'heh' 20:16:57: Quixadhal says 'I think I have the permissions file setup right… now, I have to figure out how to make the branch directory properly.' 20:17:42: Quixadhal says 'Oh, and what password do you want? I'll try to remember to edit it out of the log file *grin*' 20:17:51: Ghasatta says 'um' 20:17:57: Ghasatta says something horrible. 20:17:58: Ghasatta winks suggestively. 20:18:13: Quixadhal rolls your eyes in disgust. 20:18:26: Quixadhal says 'maybe it won't let me put that in? *crosses fingers*' 20:18:56: Quixadhal says 'darn.' 20:20:21: Ghasatta says 'aw' 20:24:08: Quixadhal says 'ok, I think it may have worked. :)' 20:24:30: Quixadhal says 'In theory… you now have a branch directory AND there should now be a dev branch we can all write to.' 20:25:42: Ghasatta says 'hmm' 20:26:15: Ghasatta says 'my svn-fu is weak' 20:26:39: Quixadhal says 'soooo, it's at http://sulinea.arthmoor.com/ram/branches...' 20:26:56: Quixadhal says 'if you're sitting at the root level, you should be able to do an svn update to grab it.' 20:27:14: Quixadhal says 'and you also have a branches/ghasatta for your own amusement.' 20:28:32: Ghasatta says 'weird. I hit svn update but it didn't update recursively' 20:28:36: Quixadhal says 'the dev branch should have an exact copy of Fire, except for the line I added to the HACKLOG.' 20:29:09: Ghasatta says 'ok think it worked' 20:29:22: Ghasatta says 'let me try something that requires the password' 20:29:33: Quixadhal says 'yep, be sure to use svn help for syntax' 20:29:45: Ghasatta says 'er should there be anything in my branch?' 20:30:02: Quixadhal says 'Nope, that's for you to copy/create/whatever.' 20:30:30: Ghasatta says 'ok' 20:30:40: Quixadhal says 'svn copy is how you branch, it's a bit odd syntax-wise so be careful.' 20:31:02: Quixadhal says 'things to know…. :)' 20:31:25: Quixadhal says 'if you want to delete or rename a file, don't just delete or rename it on your end. use svn delete or svn rename' 20:31:43: Quixadhal says 'otherwise, svn just assumes you didn't checkout the file and doesn't do anything with it.' 20:32:18: Quixadhal says 'likewise, for rearranging like making a new directory, svn mkdir works better than doing it locally and trying to tell svn what you did.' 20:32:35: Quixadhal says 'and the big one for source code :)' 20:33:08: Quixadhal says 'svn propset svn:keywords "Id" foo.c' 20:33:32: Ghasatta says 'ok let me try that' 20:33:33: Quixadhal says 'if you don't do that, the fancy tags you see in the headers won't get expanded properly. :)' 20:33:36: Ghasatta nods. 20:34:09: Ghasatta says 'so in order to make my own branch' 20:34:24: Ghasatta says 'I go to the dir and "svn copy ../dev"' 20:34:26: Ghasatta says '?' 20:34:50: Quixadhal says 'well… to do it nicely, you'd probably want to use the URL versions.' 20:34:53: Quixadhal says 'for example:' 20:35:18: Quixadhal says 'svn copy http://sulinea.arthmoor.com/ram/Firehttp://sulinea.arthmoor.com/ram/branches...' 20:35:25: Quixadhal says 'that's what I used to branch from Fire to dev.' 20:35:41: Quixadhal says 'that does it server-side, so it's fast and instantly committed.' 20:35:50: Ghasatta nods. 20:36:23: Quixadhal says 'so if you wanted a "foo" branch, you'd copy from the dev URL to http://sulinea.arthmoor.' 20:36:34: Quixadhal says 'com/ram/branches/ghasatta/foo' 20:36:58: Quixadhal says 'stupid cut and past included the newline. :/' 20:37:30: Ghasatta says 'ok, think it worked' 20:37:50: Quixadhal says 'In theory, you can merge from one to another, but unless you're very religious about always doing an update to your own branch before working on it, it's a big fat pain to merge back in.' 20:37:55: Ghasatta nods. 20:38:36: Quixadhal says 'In other words, you have to constantly do merges FROM the main branch into your own, so when you want to shove your own back, it's already up to date.' 20:38:55: Ghasatta says 'yeah I can see how that might present problems' 20:38:58: Quixadhal says 'makes sense, but it's very easy to forget' 20:39:38: Quixadhal says 'once you do it server-side, another update should pull it down.' 20:40:10: Ghasatta says 'yep, looks like it worked' 20:40:32: Ghasatta says 'I'm thnking that most of the planned changes I will do directly on the dev branch' 20:40:34: Quixadhal says 'so that way, you don't have to wait for my slow ass *grin*' 20:40:45: Ghasatta says 'and then crazier stuff on my own branch' 20:40:47: Ghasatta snickers softly. 20:40:48: Ghasatta says 'good' 20:41:08: Quixadhal says 'and I can kill more orcs (very weird playing on the alliance side)' 20:41:13: Ghasatta snickers softly. 20:41:20: Quixadhal says 'even more weird on a PvE server…' 20:41:21: Ghasatta says 'what realm do you play on, out of curiosity?' 20:41:54: Quixadhal says 'A couple friends dragged me onto Nazgrel. I also know a bunch of people on Durotan, and my old horde main was Spinebreaker.' 20:42:34: Ghasatta says 'lol. I'm on durotan too' 20:42:52: Quixadhal says 'I just returned to the game back in December after a 2 year break…. lots of changes!' 20:42:57: Ghasatta says 'and some other lowbies on other servers' 20:43:02: Ghasatta nods. 20:43:12: Ghasatta says 'like I said before, I am holding out on the expansions' 20:43:25: Quixadhal says 'Spinebreaker is PvP, and it was hard to get to 60 there. :)' 20:43:32: Ghasatta says 'so it's questionable if I'll even be hanging on to my account' 20:43:35: Ghasatta nods. 20:43:41: Ghasatta says 'I bet' 20:44:08: Quixadhal says 'I picked up the box set (wow + BC) for and the new expansion for on a black friday sale.' 20:44:17: Quixadhal says 'I picked up the box set (wow + BC) for $15 and the new expansion for $25 on a black friday sale.' 20:44:22: Ghasatta says 'not too bad' 20:44:30: Ghasatta says 'I just have a hard time on principle' 20:44:40: Ghasatta says 'I'm already paying per month, you should give me new content for free :P' 20:44:51: Quixadhal says 'I gave the original to my roommate and used the expansions. :)' 20:45:06: Quixadhal says 'Yeah, EVE-Online spoiled me there, and City of Heroes.' 20:45:51: Quixadhal says 'If I were still playing EVE though, you'd never see me. That game is crack if you can get into it.' 20:45:57: Ghasatta snickers softly. 20:46:02: Ghasatta says 'I tried it out' 20:46:14: Ghasatta says 'didnt go beyond the trial' 20:46:22: Ghasatta says 'mostly because I was busy' 20:46:36: Quixadhal says 'vertical learning curve, but the regional markets make it an amazing thing.' 20:47:11: Quixadhal says 'actually having huge alliances of players controlling choke points into areas with raw materials… very nice.' 20:47:43: Ghasatta says 'so why did you stop playing?' 20:47:45: Quixadhal says 'best PvP game out there, IMHO. But yeah, you need to devote many hours to do well.' 20:48:29: Ghasatta says 'so are my string utilities merged into the dev branch yet?' 20:48:34: Quixadhal says 'mostly the time constraints. You can putter around for an hour or two a day.' 20:49:02: Quixadhal says 'but to hold regions of space, or do well in trading, you have to keep checking stuff all day long.' 20:49:31: Quixadhal says 'nope! It's right where Fire is, namely with the ban code as the last checkin I believe… and a bugfix or two.' 20:50:34: Ghasatta says 'ok, any objections if I merge it in?' 20:50:56: Quixadhal says 'Nope, go for it!' 20:51:06: Ghasatta says 'ok!' 20:51:11: Quixadhal says 'I DO need to find a decent indent for C++ though. :)' 20:51:34: Quixadhal says 'I figure if I want to poke at stuff, I can do that once you've put it in place just as easily' 20:52:39: Quixadhal says 'hmmm, time to go flip over the stuff in the oven. brb. :)' 20:52:40: Ghasatta says 'here's mine ;P' 20:52:42: Ghasatta says ';;; c++-mode' 20:52:43: Ghasatta says '(lambda() ' 20:52:53: Ghasatta says '(add-hook 'c++-mode-hook' 20:52:54: Ghasatta says '(lambda() ' 20:53:02: Ghasatta says 'arg, forget it' 20:53:08: Ghasatta says 'was going to show your my emacs lisp ;)' 20:53:22: Quixadhal says 'yes, but it has to honor the settings in .indent.pro' 20:53:37: Ghasatta says 'I'm kindof a k&r guy' 20:53:47: Quixadhal says 'which can be found in the Fire/src and Ice/src directories. :)' 20:54:45: Ghasatta says 'what the heck is that?' 20:54:54: Quixadhal says 'Personally, I write very compactly (used to an 80x24 cyan vt220 terminal), but I've adapted for others in the project.' 20:55:12: Quixadhal says '.indent.pro is the set of settings that indent uses to format the source code. :)' 20:55:40: Quixadhal says 'all the scary -T's are telling it about custom typedefs' 20:55:41: Ghasatta nods. 22:58:09: Quixadhal says 'I'm a thinkin' our meeting be done. :)' 23:14:49: Ghasatta has lost his link.