Trispis says, "Okay. Next up in this room is ..." Trispis says, "Me." Trispis says, "Wheee." China is getting confused. Trispis says, "If everything had gone according to plan, I would have had an actual beta release prepared for today." Raevnos throws spitwads. "Just finish it on time!" Trispis says, "But, alas, as you've all already surmised, I don't." Trispis says, "I can only apologize." Trispis says, "Nonetheless, I would like to make my presentation today in a pre-alpha state." Trispis says, "What am I talking about?" Trispis says, "About 6-8 months ago, brief mentions of a publicly available MUSHcore began popping up in some of the discussions taking place on M*U*S*H. People were often inquiring about the existence of such a package." Trispis says, "About 4 months ago (give or take a month), Raevnos and I (and a few others) would occassionally mention the possibility of combining our respective accumulations of code into such a MUSHcore." Trispis says, "The increasing frequency and intensity of these talks prompted us to create a bulletin board group dedicated to getting community input on the matter." Trispis says, "As with any publicly accessible discussion board, we had a wide range of inputs. Many, many interesting ideas were put forth. Likewise, many many metadiscussions surfaced. But the underlying objective was achieved: public sentiment was heard." Trispis says, "On a personal level, I realized that there was no way I could maintain my sanity working on code with such a large group of people, so I stepped out of the project." Trispis says, "But I didn't abandon it." Trispis says, "On my own, over the past month or so, I began working on some of the MUSHcore concepts. -- for the same reason I was one of the instigators of the MUSHcore bb group: I want to see such a thing exist." Trispis says, "At present, I have one command in a near-alpha state, and another in a seriously pre-alpha state." Trispis says, "I had hoped to find time to recode them before today's conference, but things didn't work out." Trispis says, "My current plan for the future is as follows..." Trispis says, "First. Immediately release the current code under the terms of the Gnu GPL." Trispis says, "B. Sometime after the festival ends, recode what I'm releasing today into an official alpha release." Trispis says, "III: In about a month from now, set up a PennMUSH server specifically for development of this as a fullscale project." Trispis says, "Then, return to the plan Raevnos and I had: start gathering existing code and rewrite it to integrate with the MUSHcore." Trispis says, "I'll make relevant announcements about significant advancements or whatever. Probably on a bboard here on M*U*S*H." Trispis says, "A few things to mention before I unveil the #dbrefs involved and set them visual." Trispis says, "First. Some of this code is very CPU intensive. It currently lags a bit on this server. I'm speculating it would run less noticably lagged on a faster CPU." Trispis says, "B. Did anyone get this joke last time?" Trispis says, "III. Well, in case you didn't, I used it shamelessly again." Trispis says, "All joking aside, this code is written with the Zone Master Room in mind. It is all mortal powered, no special privileged processes or anything. Also, it's not global here." Trispis says, "The main command I want to hilite today is ++who (two pluses so that it doesn't collide with +who)." Trispis says, "This command functions almost like a spreadsheet. All columns are configurable, add-able, removable. Margins can be either static (fixed width) or dynamic (adjusting to accomodate its entries. Borders can be added and removed. Etc. Etc. Etc." Trispis pauses for effect. Trispis says, "But the most phenomenal aspect of this command is that it is USER CONFIGURABLE." Trispis says, "No, not just ADMIN configurable, but yes... every individual player can customize the look of his ++who." Brody wows at that. Urza yells, "Blasphemy!" :-) Trispis says, "As I mentioned a moment ago, the code is very CPU intensive. If I dropped the object in this room and 3 or 4 of us typed ++who, the MUSH would come to a near standstill for everyone else for probably 8-10 seconds." Brody grins. Trispis says, "Because of that, I'm simply going to release the code. If you want to come by my crate sometime during non-festival times and test the command, please do so (by all means!). However, I will not be making the command object available during festival activities. (In about 5 years, when every MUSH runs on a multi-gigahertz processor, these things won't matter. But right now, in this sloppy pre-alpha state, this code isn't much good for public consumption.)" Trispis says, "Anyway. The stuff I've been writing is on the following objects..." Trispis says, "#5985 #5017 #5020 #4710" Trispis says, "Questions anyone?" Urza says, "You stated that every player can make theirs look different. How is this possible?" Trispis says, "Good question." (MISSING SOMETHING?) (NOTHING MISSING. TRISPIS IS SIMPLY BEING A JERK, TRYING TO ELICIT A SPECIFIC FIRST QUESTION. THE OTHER QUESTIONS DO GET ANSWERED... ...LATER) Trispis says, "Any other questions?" Nymeria wonders if you think it will be possible to make it less CPU intensive, or if you think it will remain rather demanding? Dack takes a seat in the Right Back Row. Trispis says, "No one wants to know what I mean by 'Margins can be either static (fixed width) or dynamic (adjusting to accomodate its entries)." Trispis says, "?" Urza says, "What do you mean by 'Margins can be either static (fixed width) or dynamic (adjusting to accomodate its entries.'" Nymeria chuckles Trispis grins. Brody grins. Urza smiles. Trispis says, "Glad you asked." Trispis says, "In most every +who I've ever seen, each column has a set width using rjust() or ljust() or center() or something. For example, the Name column never changes widths, even if everyone connected has a very short name." Trispis says, "The code I've written will actually adjust the column's width, dynamically, to fit the 'widest' entry." Aurora blinks. Urza says, "Might I inquire as to how that was accomplished? It sounds rather amazing." Trispis says, "Sure." Trispis says, "Basically, it works like this..." Chili hmms, "Thats a good idea" Trispis says, "If you set a column's width to a positive integer, the code treats it as fixed-width." Trispis says, "If you set a column's width to a negative integer, it processes every entry in that column and determines the longest entry. Then it selects the larger of: a) the longest entry in the column, or b) the absolute value of the negative integer. -- This creates a 'shrink-to-fit' effect for that column." Urza says, "Interesting." Talek Symbol hrms, trying to think of an efficient way to calculate that, where efficient is measured in function invocations... Trispis says, "If a -0 is set, it will actually make the column completely disappear if there are no entries. I've found this to be especially useful for monitoring: a) the presence of admin, b) channels." Urza takes a few notes on this. Trispis says, "Finally..." Trispis says, "If a '+' is set for the width, that column takes the ++who's defined overall width (also user configurable), then it expands that column to take all of the remaining spaces up to the overall +who width." Trispis says, "This final one is applicable to a DOING column or LOCATION column (or whatever you deem to be a 'chop-able' column -- one that you don't mind cutting off if there aren't many spaces left)." Trispis says, "Other questions?" Trispis says, "BTW, Urza..." Urza says, "Yes?" Trispis says, "With reference to your first question about the user configurations..." Urza listens intently. Trispis says, "This is the key to making it a fully mortal Zone Master Room object." Trispis says, "Store user settings in attribs identified by the user's #dbref.... on an object you control." Urza says, "Sort of a ++who settings database?" Trispis says, "Yes. Precisely." Urza says, "Interesting." Trispis says, "Any other questions?" Talek Symbol says, "What happens if you set more than one column to width '+'?" Trispis grins at Talek, "Leave it to you to spot that one." Trispis says, "Known bug. No solution implemented yet." Talek Symbol awws. Trispis will probably make it force you to remove the other before setting one. Raevnos says, "It doesn't split the leftover space automagically? I'm shocked. ;)" Trispis hrms. That's an idea, too. (: Urza says, "Could you not include a setting to automatically erase the old setting then set the new one?" Talek Symbol says, "Can you specify the order in which columns appear?" Falcon enters Linux Lobby. Falcon has left. Urza says, "too many questions, too quickly. :)" Trispis says, "Urza: Yes, but then you'd have to specify a global value to put into there when you do it (otherwise it'd have a blank entry in the dataset, which is space-separated, which would further cause it to crash)." Urza says, "that couldnt be good. :)" Trispis says, "Talek: Yes. You can re-order them." Urza says, "can you tell it not to display certain columns?" Trispis says, "You can remove them, and re-add them. -- All columns are pre-set evaluations (location with safeguards for unfindable, playername, etc.). Admin (or whoever controls the master object) can add more such presets... to cater to custom game themes (Faction, Race, etc.)." Trispis says, "Or, you can set the width to a 0 (without a minus) and that column will not display." Trispis says, "Although, it will still exist in your column processing (i.e., it'll contribute to lag)." Urza says, "That's pretty cool." Trispis says, "Anyway... if there are no further questions... the code is GPL. Enjoy!" Brody woos! Trispis says, "Oh, one last thing." Trispis says, "About this pre-alpha thing..." Trispis says, "I had an early version of all of the commands I discussed. All of them functional." Trispis says, "right now, most of them DON'T work." Trispis says, "If you take the code now, you're on your own in getting it to work." NOTE: Nymeria, maybe someday I'll get the code reworked into something less demanding. For now, though, I've yet to discover a way to retain the extremely high functionality aspect while reducing processor load.