ifMUD - A MUD Forever Monkeying HAVE AN ACCOUNT? Type "connect name password greeting" to log in. NEED AN ACCOUNT? Point your web browser at http://fovea.retina.net:4001/ WANT TO KNOW WHO'S HERE? Type 'who' for a list of current users JUST VISITING? You can also log on as a guest by typing "connect guest guest". ANY PROBLEMS? Send email to Liza Daly TYPE connect, who, or quit: Login Succeeded "The reports of my death have been greatly exaggerated." -Admiral Jota ifMUD An interactive conversation Copyright (c) 1998 by rec.[arts|games].int-fiction Release 41 / Serial number 970720 / perlMUD v2.1z ifMUD is brought to you by retina.net, an ISP in Massachusetts running off a state-of-the-art aluminum Christmas tree. FAQ: http://www.ministryofpeace.com/text/ifMUD/faq.html BACKUP: 208.221.8.3 4000 PHOTOS: http://www.retina.net/~ddyte/ ROCK: http://sadie.retina.net/ CHANGES 12/22 From DGlasser: - '@users ma' will search for all users with 'ma' in their name - CASE CAN NOW BE PRESERVED IN ARGUMENTS! %0-3 strip case, but %4-7 preserve it. From Jota: - If an object is sent home, and its rname field is set, the value of that field will appear on the ohomemsg (instead of its name) - Exits will not be acronym'ed, and if you're set puzzle then anything you @create or @name won't be acronym'ed - '@users wizards' will list all the Wizards on ifMUD - [Wizards only] @garbage will clear out the MUD's garbage objects To view this again, simply type 'motd' without the quotes. Robinson Manor A gracious, welcoming, airy space. Music drifts in from unseen speakers. A picture window on the southern wall provides a pleasant source of light and a sense of openness. Boxes of unpacked belongings (which are not available to be seen) are evidence that moving in has just begun. You can see: a picture window, fiendish thingy, Harpo Marx, stock market report, convo that goes 'ping', little book, aoeuID, birthday puppy, wickerwork turtle, read this, Sonata in D, strange genius, fortepiano, Mozart costume, teleporter, Jeopardy podium, buzzer3, buzzer1, buzzer2, CompY2K countdown Visible Exits: west, north [jrw] jrw appears in a puff of logic. Adventurer, Long Lost, Returns You are in the middle of a ticker tape parade celebrating the return of the legendary Jota. Streamers are falling from buildings to either side. Seating is plentiful, but everyone is standing and cheering. The parade continues to the north. You can see: Birthday Calendar, Sadie CDs now available!, World Map, neon sign above the spoiler room, Typo Tally Two, box of communicators, Adventurer's L* Suggestions (ALS), Adventurer's L* Archive (ALA), ICQ, yokifier, Zines are HERE!, QUEST announcement!, Xyzzy Award Nominees (beta version), GC FAQ -- draft, FAQ help request, ZombieIvan, Okay who sent this?, library 6/8 bugs, Inform pronouns hack, mistletoe, Isthmus quote, satanic mass, laundry list, Quiddity Songs urls, Jeopardy button, freshly baked buttermilk muffin, Zarf on his coding, tattered scroll, der Clapper, Latest Sadie News, bun-bun, anonymous message board, DorianX, Ellison, Steve, Grocible, Whizzard, Jota Visible Exits: east, north, down, northeast, west, south, northwest, southwest, up, southeast jrw steps out of a shimmer of green light. You have new mail. Type "mail" to view it. Steve says, "mmhmm" jrw says, "Hallo." Steve says, "Hey." Grocible exclaims, "speaking of spdif, it's jrw!" [Caoif] Caoif has connected to ifMUD. jrw exclaims, "!" Steve says, "I need to learn how to do those neet tables in html." who User On Idle Ddyte To Spatch: Gimme Smoochin'! Grocible 01h01 02m00 The satin finish provides darkly deviant good looks. jrw 02m50 00m00 Overcoming the odds. Whizzard 31m43 24m14 Avoiding idiots Caoif 00m35 00m00 Something constructive Jota 29m23 04m58 Doing: Wondering where I am DorianX 05h11 01h07 repeat till it's funny Ellison 05h07 03h36 forever envious of the caveman Steve 04h06 00m09 Golfers do it in some humorous golf-related manner. Uptime: 14h10; pollster: neild; Users online: 8 End of List. Caoif arrives in the Lounge from a hole in the wall, which closes behind him and vanishes without a trace. Caoif waves as a hearse drives into the room, on its way to bring some poor adventurer to a final resting place. Grocible says, "tables, like, suck." Caoif looks at Jota. jrw says, "at last, I find myself online with the famous (and legendary) lost (but now found) Jota (Admiral)! (but he's lurking)" Jota wakes up, just for jrw. Steve says (to Groc), "I find this cool looking, tho. http://www.fostex.com/spc_cop12.html" Jota says, "Greets, and Salutations :)" Caoif climbs into the hearse, which drives off and then returns without him. jrw says, "I feel honored" Jota nods, and bows. Grocible says, "oh that sorta simple table is ok" Caoif slides into the room from an unseen chute above. He soon rises to his feet, nothing injured aside from his dignity (but since when has dignity mattered here?). Caoif looks at Jota. Jota hrms. Caoif drops a small gold ball, which rolls away. The gold ball disappears into the shadows. ..Jota several of the (many) rooms you left behind on here have cropped descriptions, creating a sort of half-eroded ruins-like mystique, which added poignance to the mystery of your disappearance. jrw says (to Jota), "several of the (many) rooms you left behind on here have cropped descriptions, creating a sort of half-eroded ruins-like mystique, which added poignance to the mystery of your disappearance." Jota gives a raspberry to the ifMUD source. Caoif nods. Caoif says, "The Muddy Region, the Sandy Region, the Lauir of the Oracle, to name a few..." Jota nods to jrw, "Heh. I'll probably start fixing that quest after I finish some of the current source modifications I'm working on... " Jota exclaims, "Oh, and those places too!" jrw watches two women fighting over some two-timing loser on Jerry Springer. Caoif watches Jerry Springer get sliced into pieces when a redneck grabs a chainsaw and uses it in the fight. ..Jota you do seem to be fixing bugs with a surprising energy jrw says (to Jota), "you do seem to be fixing bugs with a surprising energy" Steve says, "Damn, but that 75 ohm cable is expensive." Jota says (to jrw), "Heh, you think this is amazing? You shoulda seen me way back when..." Jota says, "New MOTDs almost every day." jrw says, "I've heard tell. 'When Jota was here...!' 'Jota, Jota, Jota!' 'Jota no bakka!'" Jota grins. Jota barata niktu. jrw says, "not to give you a complex or anything." Jota had an ego complex before he left, not to worry. Jota *still* hasn't heard any good legends about himself -- 'cept for that suicide one. Caoif says, "Well, just about everyone assumed you were dead or in jail..." Steve says, "The suicide was the main one, really." Jota exclaims, "In *jail*? There's one I haven't heard yet!" Jota sits back. "Tell me the story of Jota in jail..." Caoif says, "Well, I haven't actually HEARD any stories on those lines...it's just that everyone thought you were either dead or in some place where computers were forbidden..." jrw says, "Well, someone said that after working on that huge quest, there was a mud crash that wiped out a lot of it, immediately after which you disappeared, never calling again." Jota heh.s jrw says, "I've only been here since the beginning of October, and I've soaked in this hero-myth." Jota grins, the hero incarnate -- so to speak. Jota wonders if you can be incarnate on a MUD. jrw says, "the fact that you did leave a lot behind, and did vanish seemingly overnight, does generate an eerie ambience" Jota chuckles. Whizzard says, "I just figured you'd found true love." Caoif agrees. Caoif agree with jrw. jrw says, "we read into the Story of Jota our own fondest desires, or deepest Fears." Jota says, "When you say 'left behind', did you mean stuff I'd done or stuff I still had to do? :)" jrw grins. "Exactly." Caoif says, "Possibly both. Help t-programs gives an 'unfinished' response...I asked Liza if you left her the rest in your will..." Jota grins. Jota says, "Not to mention all those bugs hanging around the MUD." Caoif says, "Spatch or someone had to delete the Oracle. It caused a system failure" jrw muses some more. "There's even an Icarus-like slant on it, too. Jota did too much, too fast -- he flew too high..." Jota sighs about the Oracle. Caoif goes home. Jota had put a *lot* of work into the Oracle. Caoif arrives in the Lounge from a hole in the wall, which closes behind him and vanishes without a trace. Caoif dropped Oracle. ex oracle Oracle is owned by sherbert Caoif says, "Here's sherbert's tribute to the Oracle..." jrw asks, "Sherbert?" Jota says, "Um, not quite the same." x oracle Mmm... Jotaliscous. jrw says, "-liscous. Rhymes with, er, viscous." jrw asks, "what kind of oracle was it?" Jota says, "The Oracle could converse ('ask about ') about a large number of things." jrw needs to finish writing his little MONSTERS mudgame. Caoif says (to jota), "And presumably a tribute to you. Sherbert had never run across you, but she understood you had done a LOT for ifMUD."" Caoif says, "Well, I never was able to get that Oracle to say anything..." Whizzard stretches. Whizzard asks, "Geez, when did it get to be 11pm?" jrw says, "I was having trouble maneuvering oddities of the @switch statement." Jota hmms. "Probably because of the crashes that scrambled a lot of code." ..whizz about an hour after 10pm... jrw says (to whizz), "about an hour after 10pm... " Jota would have probably been able to fix it if it'd still existed hen he arrived. Whizzard uses the Venusian death thwap on jrw. Jota wonders... "Did anyone save the Oracle to disk anywhere? jrw says, "you'll have to ask the latemorning/early afternoon crowd that." jrw says, "the liza-mamster-lpsmith-neild-spatch-markm group" Jota blinks. Caoif says (to Jota), "Over in my section, I've been trying to get NPCs. Mrs Lovett and a gravedigger. I'd like for them to be able to chat, but that's a little too complex for me..." Jota says, "Well, not necessarily..." Steve says, "That is: 'The people logging in from work' crowd." Caoif says (to Jota), "I mainly stick with the 'action' bits...I haven't created the gravedigger, but Mrs Lovett can be found across the street from the graveyard." ..Steve well, yes... but the latenight/earlyearlymorning crowd is people logging in from work, too, just they're in Europe, not the US jrw says (to Steve), "well, yes... but the latenight/earlyearlymorning crowd is people logging in from work, too, just they're in Europe, not the US" Caoif takes an unhealthy interest in Ivan. Steve says, "Not so many of them. ddyte, tufty, and Psmith are the only people I know of who log on from work and aren't from North America." Jota says, "Something like: @succ =talk:@tellplayer( "%#", @print( " says, \"", @switch( {"topic one", "first topic", "one", "first"}, "That's topic one.", {"topic two", "second topic", "two", "second"}, "That would be topic two." ), "\" ) )" Jota says, "Er, make that @tell, not @tellplayer." Jota was mixing up the MUD's source's functions with the softcode functions :) Whizzard says, "Man. That frightens me just to look at." Caoif nods. Whizzard says, "Way too much syntax." Jota chuckles. "Hey, now that's one of the easier pieces of Jotacode..." Caoif says, "Too complex for me...no way I could memorize that." Whizzard says, "And you wonder why I left the implementing of the maze to you." Caoif smiles. Jota explains it, "You see, it's all surrounded by @tell()" help @tell The @tell function is used to show a piece of text to a specific player. It takes two arguments: the dbref of the player and the text to be shown. Usage: @tell("204", "The kitten looks at you strangely.") (From Caoif) The hardest trick is making it look easy. jrw says, "hey, that's the same way I was writing things." Jota says, "That function takes two arguments: a dbref and a string. This sends the string to the player who matches the dbref." help @print The @print function will just return whatever string you give it. It can take multiple arguements. For examaple, the code: @print("Hi there! ", "And there!") will just return "Hi there! And there!" Whizzard says, "Hmm. The blanket has formed a perfectly warm pocket of air for me. I love when that happens." Jota says, "In this case, the dbref is "%#" (everything in Jotacode is treated like a string, since that's the way Perl does it). %# stands for 'The dbref of whoever is using this thing.'" Whizzard says, "I find it vaguely distressing that New York was warmer than Riverside today." jrw says, "much better than when it leaks in a little pocket of cold air that resists being sealed off" Whizzard says (to jrw), "Exactly." Jota says, "In this case, the string for @tell is returned by @print..." jrw blinks. jrw asks, "all of this mud programming code is your invention?" Jota repeats the code, since it's scrolled away: @succ =talk:@tell( "%#", @print( " says, \"", @switch( {"topic one", "first topic", "one", "first"}, "That's topic one.", {"topic two", "second topic", "two", "second"}, "That would be topic two." ), "\" ) ) Jota says, "Mostly -- some others have added/modified functions, but I think the basic setup was mine." jrw says, "ahhhhhh now it all becomes clear......." Whizzard asks (to jrw), "See why he became a legend?" Jota notes that the last ) in his example is the end of the @tell, and the one right before it is from @print. jrw attempts to touch the hem of Jota's garment. Whizzard says, "In the beginning, when Jota brought forth the MUD from darkness...." Caoif asks, "Care to repeat that?" You are carrying note Beatles CD Author vote reminder blahblah prcurt work in progress jeopardy starter drowsy eyelids 4in1 last point hint jrw's prediction about zarf's prediction communicator x wip MONSTERS! One of the oldest text-based games. Kill them before they kill you. This version coded by jrw. Obvious Actions: /Commands, /?, /N, /Q, /L, /S, /M, /G, /X, /K, /I ex /l /L;/Lasers;/laser;/las #6431E Owner: jrw Home: #0 quiet 0: @print("%c%c","Unfortunately, the monsters erect an array of mirrors%c","which reflect the beams back at you, decimating your%c","hapless army.",@setfield("6413","us",@sub(@getfield("6413","us"),@idiv( @getfield("6413","us"), "10" ),))) 1: @print(@setfield("6413","temp",@rand( @getfield("6413","us") )),@setfield("6413","temp2",@switch(@lt( @getfield("6413","temp"),@getfield("6413","them")),"0", @getfield("6413","them"),"1", @getfield("6413","temp"))),@setfield("6413","them",@sub( @getfield("6413","them" ), @getfield("6413","temp2" ) )),"%c%c","Your powerful particle beams rip into their troops,%c","killing ", @getfield("6413","temp2"), " of them.") 2: @print(@setfield("6413","temp",@sub(@getfield("6413","them"),@rand(@idiv( @getfield("6413","them"), "3" ) ))),@setfield("6413","them",@sub(@getfield("6413","them"),@switch(@lt( @getfield("6413","temp"),@getfield("6413","them")),"0", @getfield("6413","them"),"1", @getfield("6413","temp")))),@setfield("6413","temp2",@sub(@getfield("6413","us" ),@rand(@idiv( @getfield("6413","us"), "2" ) ))),@setfield("6413","us",@sub(@getfield("6413","us"),@switch(@lt( @getfield("6413","temp2"),@getfield("6413","us")),"0", @getfield("6413","us"),"1", @getfield("6413","temp2")))),"%c%c","Your powerful particle beams rip into their troops,%c","killing ", @getfield("6413","temp"), " of them. Incensed, the monsters use their%c","death ray on your men, wiping out ", @getfield("6413","temp2"), " brave soldiers.") 3: @print(@setfield("6413","temp",@rand(@idiv( @getfield("6413","them"), "2" ) )),@setfield("6413","them", @add( @getfield("6413","temp"), @getfield("6413","them") )),"%c%c","Your powerful laser beams blaze into their camp,%c","striking their nest of monster hatchlings. ",@getfield("6413","temp"), "%c","new monsters are born!") 4: @print(@setfield("6413","temp",@rand(@idiv( @getfield("6413","them"), "2" ) )),@setfield("6413","temp2",@rand(@idiv( @getfield("6413","them"), "5" ) )),@setfield("6413", "temp3", @add(@getfield("6413","temp"), @getfield("6413","temp2") ))@setfield("6413","them",@switch(@lt( @getfield("6413","them"), @getfield("6413","temp3") ),"0", @sub( @getfield("6413","them"), @getfield("6413","temp3") ),"1", "0")),"%c%c","Your powerful laser beams blaze into their camp,%c","striking their headquarters. ", @getfield("6413","temp")," monsters are killed%c","and another ", @getfield("6413","temp2"), " flee, deserting their army!") success: @print("You fire laser beams at the monster army.",@setfield("6413","curcomm","L"), @execute(@getfield("6425", "outcome")),"%c%c",@execute(@getfield("6425","main"))) Location: #6413 Destination: nowhere /Lasers. Fire lasers at monsters. Jota asks, "To repeat the code sample, or what I just said about parentheses?" Caoif says, "The code sample...I'm tryping to capture it..." Jota repeats the code: @succ =talk:@tell( "%#", @print( " says, \"", @switch( {"topic one", "first topic", "one", "first"}, "That's topic one.", {"topic two", "second topic", "two", "second"}, "That would be topic two." ), "\" ) ) Caoif says, "Thank you."" jrw says, "I'd been using @print as the surrounding code dingus, not @tell." Jota says, "Actually, @succ should be @field -- sorry about that." jrw says, "4: @print(@setfield("6413","temp",@rand(@idiv( @getfield("6413","them"), "2" ) )),@setfield("6413","temp2",@rand(@idiv( @getfield("6413","them"), "5" ) )),@setfield("6413", "temp3", @add(@getfield("6413","temp"), @getfield("6413","temp2") ))@setfield("6413","them",@switch(@lt( @getfield("6413","them"), @getfield("6413","temp3") ),"0", @sub( @getfield("6413","them"), @getfield("6413","temp3") ),"1", "0")),"%c%c","Your powerful laser beams blaze into their camp,%c","striking their headquarters. ", @getfield("6413","temp")," monsters are killed%c","and another ", @getfield("6413","temp2"), " flee, deserting their army!")" Jota says, "@print is actually misnamed; it should be called @cat." Caoif says, "Okay."" Jota says, "And in this case, @print would work fine. @tell is really unnecessarily complicated." Whizzard shakes his head and is glad he is excused from further MUD design. jrw says, "I was having this @switch problem where somehow a bit of one of the strings from option 1 was being printed even when it was option 2's turn, or vice versa." Caoif nods. Jota fixes the code: @field =talk:@print( " says, \"", @switch( {"topic one", "first topic", "one", "first"}, "That's topic one.", {"topic two", "second topic", "two", "second"}, "That would be topic two." ), "\" ) Caoif says, "Just when I shut off the log, you fix the code...sigh." Jota nodsto jrw, "There is currently a bug in @switch that executes code that shouldn't be exectued." Jota chuckles. jrw says, "hm, RealTV is showing a motorbike race. I suspect a crash is coming up." Whizzard sighs in nostalgia. Jota says, "At the moment, if there's code for one of the arguments in @switch, it'll actually execute the code (whether it's the correct branch or not), in order to turn it into a string." jrw says, "that was it." Jota nods. Whizzard says, "I miss the Maze of Doom. I feel it was a good puzzle, with those giant mallets hanging over your head while your partner pushed switches at the entrance that triggered certain mallets in the maze." jrw says, "someone had a delicate workaround, but at that point it was all getting really hard to mentally parse my own code." Jota says, "You can just stash the relevant code in a field, and have @switch call @getfield -- that'll return the code." Jota says, "And just surround the @switch with an @execute, to run it." jrw says, "mm." Jota says, "That's a little like breaking it into functions, like in real code." jrw says, "recently, a version of checkers, complete with board, was attempted, but it was too buggy to play." Whizzard says, "There was a certain joy in seeing a player's reaction to being squished for the first time." jrw says, "not by me, I might add." Caoif got Oracle. Jota hrms, and realizes he doesn't quite remember the @switch command as well as he'd thought... Whizzard sings, "Memories." Whizzard grins. Whizzard asks (to jota), "You ever get around to playing Lesson of the Tortoise?" Jota asks, "Not yet -- a MUD game, or regular IF?" Caoif climbs into the hearse, which drives off and then returns without him. jrw says, "harumph. Suddenly, as of yesterday, my newsreader is no longer grouping threads into a thread, but treating all posts as if they were islands unto themselves, which means I can't 'Mark Thread Read' successfully." Whizzard says, "Regular IF. A short-short I wrote. 10 rooms." Jota nods. "I'll probably get to it eventually -- what's it about? :)" Whizzard says, "It's a bit of Chinese folklore." Whizzard says, "More or less." jrw asks, "the return of Gareth Rees, coinciding with the return of Jota, just at the point of the ugliest mudslinging ever seen on raif. What times are these?" Whizzard says, "The end of the world is at hand." Jota nods, "Interesting. Is it related to the tortoise and the hare at all?" Jota dropped Doggy. Whizzard says, "The return of Jota will bethe 4th sign of the apocalypse." DorianX says, "next thing you know, I'll release soemting that is neither a library nor an arcade game" Jota says, "There, if you want that code snippet (in a working form), examine Doggy." Whizzard says (to jota), "Nope. The tortoise is a magical animal in Chinese/Japanese myth. (I admit, I often confuse the two.)" ..DX gasp jrw says (to DX), "gasp" Jota nods to Whizzard. "Does it have any giant mallets in it?" Whizzard says, "No, but there's a hoe." DorianX asks, "Anyone have a c64?" Jota shakes his head. Whizzard says, "Nope. Not for many years." Jota says, "Not I." Whizzard says, "I still miss Impossible Mission." jrw says, "never did." Whizzard says, "Stay awhile....." Jota chats with the dog. DorianX says, "Im desparately trying to gt a playablr version of Down Down Down" Whizzard exclaims, "STAY FOREVER!!! HAHAHAHA!" Caoif arrives in the Lounge from a hole in the wall, which closes behind him and vanishes without a trace. Caoif chats with the dog. Caoif chats with the dog. DorianX says, "if I had a working 1541 drive, I could maybe rip it off the original (if the oriinal is still intact, otherwise I can get a backissue from loadstar)" Caoif smiles. Steve has disconnected. Steve slips away on the newly waxed floor. [Steve] STOP WITH THE KICKING! DorianX says, "but I don't. this is a problem" Whizzard says, "Welp. I think I have to get up in the morning." Caoif says, "Ditto."" Jota asks, "Who was it who was logging that code bit anyway?" Whizzard says, "So, beddy-bye for whizzy." Jota waves, "Night Whizz!" Whizzard says, "Not I." Caoif asks, "I was logging it...do you want me to log again?" Whizzard tips his hat. Whizzard has disconnected. Whizzard goes to hamstring some zombies. [Whizzard] Whizzard has disconnected from ifMUD. Jota says (to Caoif), "You can just examine Doggy." Caoif says, "Okay."" Caoif chats with the dog. Caoif chats with the dog. Caoif chats with the dog. DorianX chats with the dog. DorianX chats with the dog. Caoif says, "Interesting..." Jota points at that %0 is whatever you call the dog, and %1 is what you ask about (eg, in 'ask dog about jota', %0 is 'dog' and %1 is 'jota'). Jota says, "So you can have NPCs complain about being called the wrong name, if you want :)" Caoif chats with the dog. Caoif chats with the dog. Caoif chats with the dog. Caoif says, "I see." Jota smiles. Caoif says, "So, in this case, you can refer to Doggy by his synonyms when using him as the subject of conversation..." Jota nods. "In this case, all the things in {} brackets count as the same thing." Jota says, "Asking him about 'talking dogs' is the same as asking him about 'doggy'." Caoif nods. Jota makes a minor change, just for his own ego... Jota chats with the dog. Jota says, "There." Caoif smiles. Jota says, "Now 'genius' is considered the same as 'admiral jota'." Caoif chats with the dog. Caoif smiles. Jota chats with the dog. Jota grins. Caoif says (to Jota), "I'm sure all the attention you've been getting since your return has to be a big ego boost." @succ bb = The dog chats with jrw. Success set. Jota nods, "Of course. It's rather nice." dd The dog chats with jrw. Jota has been taking full advantage of it :) Jota chuckles at jrw. jrw says, "hey, I was just about to pooh-pooh this '12 Days of Interactive Fiction' posting, but the fourth day is a ref to my Comp98 game." Jota grins. jrw says, "so now I think this is brilliant" Jota grumbles at @shutdown. Caoif asks, "What about @shutdown?" Jota says, "It's supposed to cycle through all the users online..." Jota says, "Notifying them of the shutdown, sending them home." Caoif nods. Caoif asks, "But it doesn't do that?" Jota says, "But it doesn't seem to do anything in that stupid for loop." Jota threw in just a plain statement to tell me 'Test!', but it wouldn't even do that. Jota says, "And the for statement looks identical to what's in WHO, to list each player, and WHO works fine." jrw says, "hurm, I hate when that happens." jrw says, "however, usually there ends up being a solution that explains it very compulogically." Caoif asks, "Well, I have to be going soon. Anything else you'd like to share?" Jota nods. Jota waves to Caoif. Caoif goes home. [Caoif] Caoif has disconnected from ifMUD. Jota has a terrible feeling he might have some idea what's happening, and has no idea what to do about something like that. Jota thinks the MUD is shutting itself down too fast, before it's actually finished perform the preceding code -- which makes no sense whatsoever. jrw says, "What do you suspect? -- oh." jrw says, "hm." Jota asks, "But how in the world could it do something like that?" Jota sighs, and gets a rather strong confirmation to his suspicions. Jota hrms. [mef] The mists of the frame relay cloud swirl around mef as he arrives.... mef came to get down, came to get down, so get off your seat and jump around! mef says, "Hey." Jota says, "Hiya, mef" mef asks (to jota), "What's happening?" Jota is considering sacrificing a copy of the MUD source to the Perl gods. mef says, "You don't say." Jota asks, "What sort of rites do they tend to prefer?" jrw says, "violent, messy ones" mef says, "Feed them to the greedy regexps." Jota nods. "So I don't need to burn a hardcopy? That's good..." mef says, "Or turn them into hash. :-)" mef says, "Slice and chop them, too." mef just got Syndicate Wars in the mail. Fun! mef says, "If bloody." Jota hmms, and wonders why @shutdown tries to send people home, if it doesn't seem to bother saving the db afterward... Jota considers commenting out the line that actually shuts down, to see what happens. Jota says, "OK, unfortunately, that seems to help :(" mef says, "However, I seem to have to reboot in MS-DOS mode in order to play. Doesn't recognize the sound card otherwise. Blah." mef also figured out that the way that IE stores bookmarks, they take up a HUGE amount of disk space due to cluster size issues. mef says, "I had like 200 or 300 bookmarks, which were taking up 32k apiece due to minimum cluster size, even if they were like 200 bytes apiece." Jota says, "Woah." Jota asks, "They're not all in one file?" mef says, "Nope. They're stored as "Internet Shortcuts", presumably so that they can be treated like any other shortcut, dragged around into different folders, etc. But that's just dumb." Jota yucks. Jota thinks that would inspire him to cut down on his use of bookmarks. mef says, "I'm sure everyone at Microsoft is running Windows NT, where cluster size isn't an issue. Or at least Win 98, where there's a new filesystem that does the same think (FAT32). But I'm running vanilla Win95, and I just cleared up like 15 megs of disk space by getting rid of my IE bookmarks." mef exclaims, "Well, I use Netscape most often -- and now I have an even better reason!" Jota grins. mef says, "Netscape's bookmarks are all in one file." mef says, "But I was just totally astounded to see how much space they were wasting. I have a utility that gives you a tree listing of your hard drive, and you can toggle between space allocated, space actually used (due to cluster size), and wasted space (due to cluster size)." jrw says, "they probably did that bookmark = shortcut thing as part of their 'IE is part of the OS' strategy." mef says, "My other big culprits, predictably, are Perl, Emacs, and my C compiler -- all of which have lots of little files as well." mef says (to jrw), "Right. Makes sense -- they saved the need to code a special bookmark menu, by just populating a menu with already existing shortcuts, just like the Start menu." Jota wonders if they just should have figured out a way to make the menu able to read html files :) mef says (to jota), "No kidding." Jota spits at the MUD source! mef says, "That's what Netscape does. If you open it's bookmark file, it's just a web page." mef says, "it's=its."" Jota wonders if just sticking in a one-second delay would fix his problem... jrw says, "wurgh, what a kludge" Jota asks, "Is there a way to make Perl delay for a second, to let functions finish themselves?" Jota still doesn't see how something later in the code can happen before something earlier in the code. mef asks, "What kind of functions? Like, system calls?" @emit bridge_engineer says, "I wonder if just sticking in this wad of gum will hold the trestle together..." (From jrw) bridge_engineer says, "I wonder if just sticking in this wad of gum will hold the trestle together..." Jota says, "Actually, a for loop. There are two: one tells everyone the MUD's going down; the other sends 'em all home." Jota says, "After these two loops, there's a loop that boots everyone. Then the MUD exits." jrw says, "the bytes and antibytes are annihilating, creating antibug pairs that travel backward in time." Jota says, "Unfortunately, people get booting before receiving the announcement, and the MUD exits before sending anyone home." Jota replaces 'booting' with 'booted'. jrw says, "That sounds like the @switch problem I was having." mef asks (to jota), "Right, but within the loops, are there any system calls? Anything that could be asychronous?" Jota asks, "Um... in what way?" Jota says (to mef), "I'm not sure; they call other functions. Lemme check." Jota says, "Let's see, first loop:" (From Jota) for ($i = 0; ($i <= $#activeFds); $i++) { (From Jota) my($id); (From Jota) $id = $activeFds[$i]{"id"}; (From Jota) if ($id != $none) { (From Jota) &tellPlayer($id, $objects[$me]{"name"} . " is shutting down the MUD - \"" . $arg . ""); mef exclaims, "Wow. In my Perl directory, 15 megs are being used. 55 are allocated due to cluster size issues. Sheesh -- 40 megs wasted!" (From Jota) } (From Jota) } mef asks (to jota), "Does the tellPlayer function call any system functions?" Jota says, "Pretend the indents are right; the MUD strips them out of my @emit's." Jota says (to mef), "I'll take a look at tellPlayer." jrw had a copy of generic PerlMUD at one point, but thinks he trashed it already. Jota asks, "Lessee, funny replacements aren't special, right?" mef asks, "Eh?" jrw asks, "which funny replacements would these be?" Jota says, "It's does a split on a -- whatsitcalled, a hash table? (array of arrays of strings with strings as indices)" Jota says, "Funny replacement: $what =~ s/\s+$//;" Jota says, "It does a foreach on the split thingy, if that's significant." Jota says, "Is if ($what =~ /^$gag /i) anything special to Perl? :)" mef says, "Shouldn't cause problems. You want to look out for system(), backticks, and stuff like that." Jota says, "Then it fiddles with more of those table things, including another s/ replace thing..." Jota says, "Um, I can't see anything like that." mef asks, "Is it writing to any filehandles, maybe?" Jota says, "Some rather comlicated s/ replacements, um... wait, it calls *another* function..." Jota isn't sure how to recognize when Perl writes to file handlers :) Jota says, "tellPlayer calls plainlength, plainrindex, and linkUrls, linkEmbed, and tellActiveFd..." Jota grumbles. Jota looks up linkUrls. mef asks, "Whatt is tellActiveFd?" mef says, "You can usually tell a filehandle because it's an all-caps thing that doesn't have a $ or @ or % in front of it." Jota says, "And that calls encodeUrl" Jota looks up tellActiveFd... Jota stops. "All caps things? We got some of those, back in shutdown... Jota looks back at shutdown. mef asks, "Hm. Before or after the problem?" Jota says, "close(LISTENER);" Jota says, "That's after the for loop that notifies, but before the one that boots." Jota says, "if ($commandLogging) { close(CLOG); }" Jota says, "But that's probably not relevant; I don't think we're logging anything." mef says, "Hmm. Probably not it. We need something that's *in* the loop that notifies, so that it might be happening asychronously and taking too long." Jota loops back to tellActiveFd. mef says, "Oh. I wonder if one of the data structures that's getting modified is tie()-ed to a disk file. That might do it..." mef says, "Any chance I can see the source? That might be easier than debugging by chat. :-)" Jota says, "Let's see... tellActiveFd writes to something called $activeFds[$active]{"outbuf"}" mef says, "I wonder if that is where it writes to the different network connections that it has open...and I wonder if that's buffered somehow, and the buffers need to get flushed." Jota nods. Jota sighs, and has no idea how to. Jota figures this is a bug he can't fix himself. "You'll need to ask liza if I can send you a copy of the source :)" mef says (to jota), "I suppose it should come from you, not me...why don't you mail her..." Jota nods, "Sure. I'll mudmail her." mef says (to jota), "I am going to bed, anyhow -- I, hopefully, will have time to deal with this tomorrow night. If she says yes, go ahead and mail me the source at mef@netaxs.com and explain a little better exactly what the problem is..." Jota nods, "Sure thing." mef exclaims, "Cool. Night!" Jota mails himself your Email address :) Jota waves! mef says, "wave" mef has disconnected. mef goes home. [mef] mef slowly fades away into the mists of the frame relay cloud... Jota goes to read Usenet. Jota gets a wild look in his eyes, and -- hey, where'd he go? jrw stalls out on reading raif with 23 msgs to go. jrw says, "night for now." q