MU Soapbox

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Muxify
    • Mustard
    1. Home
    2. Chime
    • Profile
    • Following 7
    • Followers 10
    • Topics 16
    • Posts 263
    • Best 126
    • Controversial 0
    • Groups 2

    Chime

    @Chime

    Coder

    310
    Reputation
    564
    Profile views
    263
    Posts
    10
    Followers
    7
    Following
    Joined Last Online
    Website mechanipus.com/ Location Portland, OR

    Chime Unfollow Follow
    Coder Reader

    Best posts made by Chime

    • Mechanipus outage & Closing plans

      As sent to Mechanipus-hosted game admins:

      Two major things:

      First, the primary server most of you are on (Kuramori) needs to undergo
      a migration operation ASAP. I'm scheduling this for around mid-day
      (US-time) tomorrow (Thursday, 6 December 2017). Services (mush,
      database, webhosting, shell access, etc) will be completely offline
      during the duration of this move, which may take several hours.

      No data is lost or in any immediate danger, but physical hardware
      problems necessitate this move to ensure we have reliable backups.
      (Blessed are the pessimists, for we take backups, etc.)

      Kuramori should return to operating status afterward all by itself, but
      I anticipate that mushes linking against truly antique libraries may not
      restart without a recompile. Please understand: this is 2017 and
      Kuramori is a 64bit Debian environment; some of you are still running
      binaries compiled on ISU. It's easier to recompile and relink than
      continue to maintain binary compatibility, so that's what we'll be
      doing. Sorry-not-sorry.

      I'll be around to recompile or assist with other restart operations as
      needed; my Discord id for those of you using that sort of setup is
      Chime#3134. Contacting me there is fine, but keep in mind that I do
      have a job and extensive help requires extensive time. Hangouts, email,
      etc. is fine too.

      Second, it's become apparent that Mechanipus is much less an essential
      component of the MUSHing community than it was; there are a multitude of
      low-cost hosting services and VM providers that are a much better fit
      for most users.

      As a result, Mechanipus will be closing.

      Mushes will be permanently halted and web services suspended on 15
      January 2018. Two weeks later, at the end of January, I will be doing
      the final removal of accounts, data, and likely decommissioning Kuramori
      itself.

      I strongly suggest moving to a new provider as soon as you are able.
      You may need to find codestaff to help you; I do not have the time or
      energy for such an undertaking, but I'm happy to advise other hosting
      providers that are stepping up to the plate.

      Please do not:

      • Ask me to fix your wiki.
      • Ask me to export your mush, sql, wiki data, images, etc.
      • Ask me to Continue hosting "just this one thing."
      • Panic. Really; you have weeks to get yourself sorted out, just start now.

      Thank you for your time and effort over these years to keep our hobby
      alive. I've delayed this announcement until another unrelated problem
      (see above) has required an outage. After the outage, I will get things
      back online, but please do remember that the End is approaching.

      posted in MU Code
      Chime
      Chime
    • Chime Patreon

      I feel so awkward putting something like this up-- but here it is. Very no-frills and barebones at the moment, but for those of you who would like to nudge my tip jar, I now have a Patreon account thing set up.

      I can post specific goals and things there if people want me to do that, but for the meantime it's a Help-Chime-cover-hosting-and-coffee type of thing.

      Please feel under absolutely no obligation of any sort-- I'm not deathly ill or destitute, but I have the business sense of an octopus in a peanut butter jar. This helps people help me, and gives you a handy way to nicely prod me toward improving MU* things we share interests in. One-time and recurring payments of any sort are all quite welcome.

      Things I've been doing (and will continue, anyway):

      • Mechanipus MUSH hosting, in its various forms
      • Work on TinyMUX for various features/feeps/improvements
      • Mushcode here and there for certain games

      Things I can be nudged into working on more (words are worth as much as money, but money does give me more time to spend on this):

      • Working on MOO hard/soft code to get that into a usable state for modern MUSHers.
      • Writing targeted tutorials (probably here) for everyone to read on certain topics. Not sure about the audience yet, but devising training materials for esoterically technical stuff for people with no time to understand is something I do for work already...
      • Wrapping up the packaging details and documentation on my TinyMUX changes (as seen on github) into a formal release of some sort.
      • Porting specific features between MUSH versions.
      • Implementing specific MUSH features. (JSON manipulators, xml-rpc/json-rpc hooks in both directions, variable buffer size (VBUFs instead of LBUFs, more and better regexp support, built-in mushcode prettyprinting and debugging features, etc.)
      • Helping create a better framework for mush-mediawiki integration
      • Devising a better mediawiki hosting setup so I don't tear my hair out and other people more interested in doing actual large-scale-hosting-as-a-business can deploy it.

      Existing Mechanipus customers!

      • You don't need to do anything. Really. It's not going away, and I'm not likely to ever manage to turn Mechanipus into a viable business.
      • This is just if you want to help out in this way.
      • It is very much appreciated though, especially if you need a lot of help with fixing mush issues.
      • This is not payment-for or a promise of support, but it does keep me less burned-out and more able to cover the Mechanipus hosting costs.
      posted in Adver-tis-ments
      Chime
      Chime
    • RE: Arx- Gareth

      @Thenomain said in Arx- Gareth:

      I feel the same about the phrase "free you from the game". What a load of political bullshit. If you're going to throw someone off the game, don't say you're giving them anything, lest of all "the opportunity to play elsewhere". This is probably because I lived through the 80s. Hey Management, please don't say you're doing me any favors. Sheesh.

      Think of it less as passive aggressive politicalspeak and more as an ominous homage to the mobster trope.

      In a quiet, breathy voice, the Godfather explains, "You see-- these staffers-- they are like family. I love my family. Respect them, yeah? You've disrespected my family. You've disrespected my family in my house." He pauses, sighing and shaking his head. "I'm not mad at you. Disappointed, perhaps, but not mad. And we're all friends now, after what we have been through together-- so we should be happy for you." Smiling faintly, and nodding to the burly thugs scattered around the room, he explains further to the poor bastard tied up on the floor, "We're giving you an opportunity, you see. A character roster-- that you can't refuse."

      Soft chuckles break out around the room, and the Godfather gestures vaguely toward the door. "Go-- give him a set pose. Out in the harbor."

      posted in A Shout in the Dark
      Chime
      Chime
    • RE: Reports of my demise have been blah blah blah.

      @HelloRaptor said: (paraphrased mildy)

      First Poster
      That rant was all bullshit.
      Third Poster
      Nay, that's certain:
      We are blest soapbox is rid of it.
      Second Poster
      Peace! let us hear what yon Raptor can say.
      HELLORAPTOR
      You mother fuckers --
      Citizens
      Peace, ho! let us hear him.
      HELLORAPTOR
      Friends, MUSHers, Shang rejects, lend me your eyes;
      I come to bury the forum, not to praise it.
      The evil that men do lives after them;
      The good is oft interred with lost back'ps;
      So let it be with SoapBox. The noble Glitch, he
      Hath told you RP was kinda fun:
      If it were so, it was a grievous fault,
      And grievously have we all answer'd it.

      Okay, no, I'm not really sure where I was going with that. Anyway. Raptor, you're an asshole for hating that a forum caters to others' tastes. We're assholes for disliking your dislike. We'll miss you either way. Have fun out there, you bastard.

      posted in Mildly Constructive
      Chime
      Chime
    • RE: [REQUEST] Comprehensive MUSH experience

      MOO and CoolMUD/ColdMUD are very different than mushes; different assumptions and the hardcode presents a very open-ended set of tools. Numerous people (including me, sigh) have used MOO to e.g. write a webserver and other oddities. This is wonderfully powerful, but also means that the MOO user interface is a lot less unified. The bare minimal.db setup doesn't differentiate between players/things/rooms/doors; all of these things are softcode. I think this is fantastic, but it also means the average non-technical user can't really tell much about the UI from knowing only that site Foo is "a MOO."

      MUSHes (and MUXen, which really are the same for these purposes) instead present a very uniform UI with (relatively) rigid constraints on the data and implementation choices. On the code-side of things, ALL data is LBUFs, or large-buffers, which traditionally were 4000 bytes in size. More modern MUX environments generally default to 8000, Firan used 24000, and my fork (in use on the Reach, Darkspires, et al) tends to use 64000. MUX use utf-8-based, so that may or may not mean 64000 characters tho. Also, color-codes are stored in-text in a persistent fashion. All other datatypes-- integers, floating point values, lists, error indications, DBrefs, etc.-- are represented in these text LBUFs with the same hard limit on sizing.

      MOO instead had an actual typed (albeit dynamically typed) language with internal stack-oriented bytecode virtual machine. MUSHes lack that data typing capability, which is why larger mush applications like Anomaly Jobs (a ticket tracking system, essentially) tend to have hilariously small limits on their dataset and prefer to drop data as soon as possible.

      To get an idea of MUSH programming, read Amberyl's guide and likely browse Brazil's tinymux softcode wiki, if that is still up. The PennMUSH people also likely have some good docs. For most users, the "big four" mush families (TinyMUSH, RHOST, PennMUSH, and TinyMUX) are essentially the same, though they have different design goals and limitations, and somewhat different UIs for email and comchannels.

      To get an idea of MOO progamming, I actually mirror some of the MOO hardcode and semi-standard default softcode starting point, aka a 'core,' which explains some of the basic MOO user assumptions, as far as they ever had any.

      There is also MUCK. Where MUSH went with a naive string processor and MOO went with a modern yacc parser with bytecode stack vm, MUCK implemented a typed FORTH, accessible in-game as MUF and a more limited higher-level MPI language sometimes used on top of that. MUCK is a great deal more powerful than MUSH, but many people have trouble thinking in forth terms and MUCK has historically been associated with the Furry community. @nuku_v would be a good person to ask about that stuff, but he doesn't seem to have connected here in a few months.

      MUSH/MUX examples this community is likely more familiar with, vaguely sorted by max-conn per last 30:

      • Shangrila (adult)
      • The Reach (hybrid NWoD1+NWoD2 set in Maine with Lovecraftian theming), many staffers/players here
      • Naughty Muffin (adult)
      • City of Hope (wod?)
      • New Prospect (wod?)
      • Kushiel's Debut (Kushiel books)
      • M*U*S*H (Penn-based social)
      • HeroMUX (superheros)
      • CoMux (superheroes)
      • Requiem for Kingsmouth (wod)
      • Sheltering Sky (wod)
      • Eldritch (wod; are you guys even open yet?), @thenomain's game
      • Shadowrun Denver (shadowrun)
      • Road to Amber (amber)
      • PernWorld (pern)
      • DarkSpires (Dresden Files, FATE-based, set in Oxford), @jinshei's game
      • RenoMush (wod)
      • Blood of Dragons (GoT)
      • Game of Bones (GoT)
      • City of Fog and Blood (nwod, sadly mostly defunct)
      • Haunted Memories (nwod, set in Vienna, sadly defunct), many staffers/players here
      • Wildcard (AnitaBlake, FATE-based, basically defunct), formerly mine, now run by @Cobaltasaurus, in theory
      • Blood&Citrus (AnitaBlake, NWoD1 retheme, defunct)

      MUCK examples:

      • Tapestries (like a furry shangrila)
      • Furry Muck (similar but less adult more social?)
      • Flexible Survival (MUD-like but very adult, furry), @nuku_v's game
      • Rusted Promises (Still a bit MUD like, but more RP-oriented, not really adult, somewhat furry), also @nuku_v's game

      Be sure to look down the lists at mudstats, as there are many more than I have listed but I've been a bit out of touch and don't recognize a lot of the newcomers. Note that they separate MUSH/MUX and don't separate NWoD1/NWoD2/OWoD, so it's a bit awkward.

      Also, be sure to check max/min/avg/current orderings; some games are in different timezones (e.g. because their staff are in Austrailia), and have varying numbers of continuously-connected or continuously active clients. Reach's internal +who at least gives a stat on currently-active unique IPs, which is a more meaningful number.

      posted in MU Questions & Requests
      Chime
      Chime
    • What a refreshing feeling
      mysql> drop database thereach;
      

      Yes. It is done.

      I have archives of the wiki, the forum, the game, etc etc etc. Not sure there is interest but the archives exist and some of them can be safely posted (e.g. via bittorrent or the like).

      As it stands, the forum content is only in the mysql dump and I don't imagine that is easy to extract in a useful form that doesn't have significant privacy violations. The complete wikistate from sql is present, but I will likely instead offer the mediawiki content xml export and a separate tar of the images. The content xml was somewhere around 4G of data but compressed to around 100M. The images with thumbnails mostly removed, etc., come out to about 4.5G. Final sqldump is about 1G. Game internal DB state, maildb and comsys have been archived via my git archive backuper thing, so I have detailed version history over time. No, not handing that out. Complete git archive (bare) for that is about 2.2G.

      Realistically, any future flatfile of the reach game db would need to have users removed and quite likely a great deal more. I'm going to punt and for now say that the people that need that data should already have that data and go yell at fallcoast if you'd like more than that.

      Q&A:

      • But I was still using that!
        Okay. Go play somewhere else, now. The Reach was closed ages ago.

      • But the wiki!!
        Realistically it spent most of its time locked because of the AbsenteeLandlord plugin that locks a wiki if no admins login. In any case, I have a relatively pre-sanitized mediawiki xml export and separate image tar that may suit your needs. Ask and I'll put that together.

      • But the ICONS omg
        Yes, okay. I can see why lots of games would want access to the icons and didn't manage to copy them off before whatever. See this archive

      posted in MU Code
      Chime
      Chime
    • RE: Eldritch - A World of Darkness MUX

      I can only speak from my experience as staff and dealing with staff. Yes, staffers WILL spend SOME time idling. It happens. People have lives. That said, if someone is ALWAYS idle for hours at a time? There's an issue there.

      This is often a bad assumption caused by overly-complex code and poor +who implementations.

      Consider a typical workflow:

      • Codestaffer or similar launches a TinyFugue session within a screen/tmux session, has it configured for autologging and log rotation -- note also that this "startup" can happen without the user being online, awake, or even alive.
      • This connection stays up and connected forever.
      • As the user goes about their day/week/life, they log in and out from various locations and additional clients as needed -- sometimes with a new client and sometimes by reattaching to their screen/tmux session.
      • The user is quick and responsive for a fair number of hours most days, and possibly even has published office hours.

      Given that, when only the TF session is running -- detached -- random users on the mush will see that staffer as idle. They might see them as idle for days or weeks, even if they were chatting just seconds ago.

      Haunted Memories especially fell victim to this, as lots of us there understood and used this technology in exactly that fashion. End users just could not wrap their head around the concept. Awkwardly enough, a variety of staffers and players in this boat couldn't either.

      So. What can we learn from this?

      • Everyone is an idiot.
      • If you think this is a reason to enable idletimeout, you're an idiot.
      • If you think rewriting +who, who, +finger, page @mail look SESSIONS and all myriad commands and bits of mushcode that tie into user status info (consider places code for example) will cover all cases of this, you're an idiot.
      • If you think that this is a good reason to NOT rewrite those things, you're an idiot.
      • If you think explaining these details to anyone is going to make an appreciable difference, you're an idiot.

      Or perhaps more gracefully:

      • Please don't assume anything.
      posted in Adver-tis-ments
      Chime
      Chime
    • RE: A directory of MU*'s that's actually good

      @faraday MSSP can use either telnet IAC codes or a pre-login command. On MOOs we generally supported it with a pre-login command.

      It'd be fairly straightforward to add to MUX, which has a reasonably nice telnet layer for these things but... eh, it's irrelevant for the mud-centric data and giving mudstats better data is largely pointless given it can do INFO.

      Future work should probably be JSON-based and reasonably self-descriptive / general. I do like the idea of a game-to-game spidering protocol for distributed discovery and publication of games mirrored on each-and-every game. These days I'm more interested in getting Evennia to do do the things I want than adding features to mushes. I mean come ON people! Mushcode is terrible and needs to die out.

      posted in Mildly Constructive
      Chime
      Chime
    • RE: Does size matter? What about duration?

      Quality over quantity, but given good quality prose with interesting characters that are well portrayed and offering engaging hooks? I like it long and hard. Shut! Up! It allows for a depth of experience not seen in lighter interaction.

      Fast can be okay, and even a good thing, but:

      • Did you miss responding to someone's pose?
      • Excessive spelling and grammatical errors?
      • Are you meta-posing thoughts instead of describing actions?
      • Are you hand-waving descriptions or making excessively large assumptions to shorten things?

      None of those are a scene-killer for me, necessarily, but they do start to detract. Certainly, long poses can be just as problematic if done poorly.

      For long poses, please:

      • Match pose-time with others in the scene, roughly. If everyone is posing in 3 minutes, don't take longer than 6. If everyone is posing in 10-15 minutes, don't take less than five unless you have something Earth-shatteringly profound to write in a few flawlessly tuned lines; balancing expectations makes everyone happier.
      • Don't try to multitask. If you are going to do multiple scenes concurrently, great-- but do not presume that changes your speed requirements within a single scene. It's almost always better to bow out with an ooc explanation that the other scene is taking up too much time. It doesn't even have to be a long explanation. "Sorry, gotta go. Pack-mate is pregnant with Azlu, and guess-who's coming to dinner."
      • Don't try to multitask. If you're playing a video game while waiting for others, the scene probably is a bad match for you, or vice versa. You really can't play League of Legends between poses, no matter how slow they are, without looking like an ass.

      Many of my best scenes had an average pose rate of 10-15minutes, with 3-5 people present. I've had a lot of fantastic RP with pose rates of 3-4 minutes, but I find that challenging if I'm trying to cough up 2-3 paragraphs worth in that timeframe. Longer pose rates, like 30-60 minutes are feasible, but that quickly becomes more like a play-by-mail setup. Fortunately, I like those too... and RPing with some people is always worth the wait.

      posted in MU Questions & Requests
      Chime
      Chime
    • RE: Downtime

      So. This is a thing that happened.

      Nearly all games came up fine as I keep the shell cron @reboot lines up to date and I'm pretty anal about information safety and system hygiene with respect to keeping things up-to-date and orderly.

      One guy's stuff didn't. I'm kinda speechless at the level of foil-hat bat-shittery contained in this log. I'd wrap it in a spoiler-tag, but apparently those don't work here yet.

      tl;dr take away lessons:

      • I'm not out to get you.
      • I'm not launching a l33t h4x0r cyberattack on the world, your pets and/or loved ones, or your game.
      • I'm happy to provide basic assistance and handholding within a reasonable timeframe as I like teaching people new things.
      • I do expect people to have a basic sense of self responsibility.
      • Game owners must understand how their games are started, what they do when they don't start, how to access a shell, how to take backups, how to verify backups, etc. etc. etc.
      • Most don't, but can coast by fine if they are running reasonably normal games, have followed past advice, and/or have a unix-savvy friend they can lean on once in a while.
      • The vast majority of people are really nice and a joy to talk to.
      • The other 1% is NOT and can FUCK OFF because I soooo did not need to deal with this shit today.

      And so, here is the log. I tried to help him. Didn't work:


      <a game owner>: alright no problem.. for some reason one of my sites seems to have come up but there's no DB or anything, other siste never came back
      <Chime>: was a clean shutdown, so that's a game config problem?
      <a game owner>: No idea... you setup all my sites
      <Chime>: okay, which game is having what problem?
      <a game owner>: ____.mechanipus has no DB loaded and ______ is not even online
      <Chime>: ______ doesn't have a game/ dir or anything; there's a penn install and an rhost install
      <Chime>: I don't know what you have set up there, but the cron @reboot line in the shell never got updated for that
      <Chime>: should be safe, just needs a restart?
      <Chime>: looking at ____
      <a game owner>: ______ is the rhost
      <a game owner>: I've never started any of these either, you always did it
      <Chime>: Do you have codestaff that can manage these sorts of things?
      <Chime>: I'm trying to step away from game-by-game assistance as much as possible
      <a game owner>: Well I've never done it before and you didn't send any warning this would happen.
      <Chime>: Okay.
      <Chime>: well.
      <Chime>: Let's fix this:
      <Chime>: You log in to the shell and start it
      <Chime>: that way, you'll know how
      <Chime>: and I can answer questions if you have them
      <a game owner>: Don't know how and don't have time to, if I had known it would be going down I could have prepared for it.
      <Chime>: Okay. You're welcome to copy your files off and get hosted elsewhere?
      <a game owner>: Just seems a little rude to take the stuff down without warning and then tell me any problems are my fault when you set it all up
      <a game owner>: Least you could do is put the games back up
      <Chime>: What I set up-- for all the other games-- came back up fine.
      <a game owner>: Not at all mine aren't up and you're the only one who has set them up
      <Chime>: You've gone out of your way to get custom rhost/penn stuff and I can't tell what the startup routine should be without asking you each time
      <a game owner>: You've done it each time, so I'm not sure what you need to ask me
      <Chime>: I should have sent out an alert. Didn't have a chance to, as work has been keeping me busy. Sorry for the inconvenience.
      <a game owner>: Everytime there is some unexpected or unanounced alert mys tuff goes down and there is a problem yet it runs fine the other 100% of the time
      <a game owner>: If you don't want to host me fine, please fix it, so I can let people know to come decompile their crap and then I'll backup my stuff and be done with this nonsense
      <a game owner>: I actually liek to warn people if something is going down
      <Chime>: I like to warn people too.
      <Chime>: I don't always have that opportunity.
      <Chime>: Part of the problem here is I need you to take responsibility for some aspects of game administration
      <Chime>: "You always did it before" is not an okay answer.
      <a game owner>: Like I said, please just put the games up properly so I can warn the players they will be shutting down.
      <Chime>: okay, check ______. I started what seems to be current and put that in cron
      <a game owner>: Like they're literally loaded with blank DBS right now
      <a game owner>: This is the same crap that happened when the servers crashed
      <Chime>: then you've got a buggy mush hardcode and I cannot help you
      <Chime>: your data is probably there, but you're doing something very wrong if this keeps happening
      <a game owner>: Yes you can, you've done it every other time
      <a game owner>: Sadly, you've never told me what you've done the other times, you've just done it so it's not as if I've got notes.
      <Chime>: fine.
      <Chime>: looking closer.
      <a game owner>: Like I said, If you don't want to host me, I'll gladly just close my games down and backup the data but I would like the opportunity for players to grab anything they want or need first etc.. and they cna't do that right now
      <Chime>:

      INFO
      ### Begin INFO 1
      Name: ______ ____
      Uptime: Wed Mar  4 22:12:15 2015
      Connected: 0
      Size: 9990
      Version: RhostMUSH Alpha 3.9.3RL(A).p3
      ### End INFO
      

      <Chime>: that looks up?
      <a game owner>: With no data in the DB loaded when I logon.. no character bits, no staff biuts, limbo is the base room
      <a game owner>: Like I said, you've fixed this every time and not told me what you did so it's not like I have a clue what to tell you to do.
      <Chime>: heh, wow.
      <Chime>: okay.
      <Chime>: as a game owner
      <Chime>: do you understand where your flatfile is
      <Chime>: where your backups are going, etc?
      <Chime>: independent of who set you up or how-- those things are irrevocably your sole responsibility.
      <Chime>: I will try to help
      <Chime>: but come ON
      <a game owner>: Nope, whoever server host is has always set that up; which in this case is you. Thatr's why I said, just put these up so I can let players grab what they want and I will be done.
      <a game owner>: I'm sorry that suddenly you have an unwillingness to help, but that's why I had you host because you were willing to help.
      <Chime>: my willingness to help evaporated months ago because of various life problems. I haven't been taking on new customers and I've been slowly phasing things out.
      <a game owner>: If I had known that you would suddenly take down the sites, then put them back up broken and tell me how terrible I am I could have just went with another host a long time ago. This is why I'm done, if you want, I can just mass email the players, let them know the site is down for good because the person who has been administrating the site since existence told me to go fuck myself when they took it downm
      <Chime>: in particular, doing the full-featured support you're looking for is one of the most singularly unrewarding things in the world.
      <Chime>: I did not take your site down.
      <Chime>: I did not break your site.
      <Chime>: I did not hide how your site is configured, or take your data, or anything.
      <Chime>: I haven't told you to go fuck yourself
      <a game owner>: Everything is always working until these 'unannounced' shutdowns.
      <Chime>: Though I'm very sorely tempted.
      <Chime>: okay
      <Chime>: You are welcome to copy your files off
      <a game owner>: Telling me how terrible I am and how I should know what to do when you've always done it?
      <a game owner>: That's pretty much telling me to go fuck myself
      <a game owner>: I'm not sure what else you call that.
      <a game owner>: Since you've handled the site side of things since I first hosted with you almost 3 years ago.
      <a game owner>: I really don't give a shit if you want to do it for me, but there are a handful of people who still connect to those sites who I am sure would like the chance to get their character data and send out contact info to friends
      <a game owner>: So if you think sabotaging me is cool, awesome. I'd like you to think of those people though and how annoying it is to suddenly just lose contact with others and lose your stuff.
      <a game owner>: Maybe if you had showed me day 1 what the hell you did to fix it after these crashes/shutdowns that always hapen without warning; I would have known what to do. So please, for the love of god, just fix it this one last time and we can be done.
      <Chime>: your next host should be able to salvage anything you need
      <a game owner>: I'm not looking for another host, I'd like to give these people a chance to grab what they like off the site.
      <a game owner>: Like I said, just fix the problem you caused please so I can be done with this crap.
      <Chime>: No.
      <Chime>: I'm done.
      <a game owner>: You have a responsibility as a host unfortunately
      <Chime>: No. I don't.
      <a game owner>: You do.
      <a game owner>: I'm asking you to put back up the sites you took down.
      <a game owner>: It's all well and good to lecture me on what I should know, but unfortunately it's you who has done this since you hosted me.
      <Chime>: We don't seem to be communicating here.
      <a game owner>: Trust me, had I known there was going to be a shutdown and you were going to have a meltdown over me asking you nicely for help; I would have told people beforehand the games are shutting down.
      <Chime>: Your set of assumptions is broken. I cannot help that. Your game is down. My services came up fine, but your specialized config did not. Out of the goodness of my heart, I have assisted with that in the past, and I can see now that this was a terrible mistake.
      <Chime>: You have no desire or willingness to take responsibility for your own game
      <a game owner>: Actually, if you had told me or showed me what to do before I would know.
      <Chime>: This discussion is over.
      <a game owner>: I didn't know because you took responsibility as a host.
      <a game owner>: It's not.
      <a game owner>: I would like you to fix what you have broken please.
      <a game owner>: At this point, this is starting to look like a purposeful attack.
      <a game owner>: Since I have evidence that at every point in the past; you have fufilled duties as a site administrator and fixed the issues after this.
      <a game owner>: Now, after a 'sudden mysterious' downtime that was not warned about or announced in a very irresponsible manner; you are claiming I should know how to fix something you have done up until this point.
      <a game owner>: Cyber-attacks are very serious, especially if you are abusing your position as a server host to do them.
      <a game owner>: What you are doing right now is an attack on me.
      <a game owner>: More importantly though, it is an attack on the people who connect to the sites.
      <a game owner>: I also have multiple emails before of me asking you about payment, which you've never responded about.
      <a game owner>: Now neither site is even booting, even more odd.
      <a game owner>: If you like, feel free to zip up my site files and send them to me so I don't need to logon to your servers since none of my access is working.
      <a game owner>: Thanks so much for all the help over the years, wish I knew it was going to come back to bite me in the ass when you decided you didn't enjoy helping people anymore.
      <a game owner>: God bless.


      I'm not responding to him anymore because I don't see much point. I've since taken down all three of his games (rather than the two that were broken) and closed the accounts and archived the files. It's more than would fit on a CD and kinda a disorganized jumble, because that's how he keeps his data. Judging by his comments and my past recollections it would be fairly easy to fix, but his behavior kinda removed all incentive to do so. If he can send me a postal address, I'll be happy to mail him a DVD-R or something.

      I'm providing what is currently a free service because I DON'T HAVE TIME FOR THIS SHIT. @Loki, I so totally sympathize with why you guys took down ISU. I'm in the same boat, but never had a business partner to help with taxes and billing. Mushhosting is one of the most singularly unrewarding endeavors a person could ever undertake. I think I'd seriously rather go do retail.

      For everyone else I'm still hosting: You're awesome, and thank you. Your stuff will continue to work for as long as you need it. If you have trouble, please just ask nicely and I'll try to help as soon as I can.

      For everyone else who wanted hosting: I'm sorry that I ran out of patience and give-a-damn. I'm quite happy to answer questions between hosting-providers though, and provide guidance for others on how to do these things. But really, my best recommendation is: don't. It's not worth it.

      posted in MU Code
      Chime
      Chime

    Latest posts made by Chime

    • RE: What to do when your mush is attacked

      Enough games are run on their own VMs now that iptables is a pretty legit way to go, if you can manage it.

      posted in Mildly Constructive
      Chime
      Chime
    • RE: Comfort Food...

      Mattar paneer (basically curried peas and cheese over rice)

      posted in Tastes Less Game'y
      Chime
      Chime
    • RE: Um...What?

      @thenomain said in Um...What?:

      Me: I...what? Did I Kickstart something and completely forget about it?

      I'm glad I'm not the only one that does that ._.

      posted in Tastes Less Game'y
      Chime
      Chime
    • RE: A directory of MU*'s that's actually good

      @faraday, on SurfaceTension (a BluePlanet MOO that got delayed when various friends pulled me away to work on The Reach):

      #7:2
      ":MSSP-REQUEST";
      ":";
      ":Provides in-band access to Mud Server Status Protocol (MSSP) data.";
      try
        set_connection_option(player, "binary", 1);
        notify(player, "~0D~0AMSSP-REPLY-START~0D~0A");
        for var in ($mssp_data())
          notify(player, $list:join("~09", @var) + "~0D~0A");
        endfor
        notify(player, "MSSP-REPLY-END~0D~0A");
      finally
        set_connection_option(player, "binary", 0);
      endtry
      return $nothing;
      .
      

      and then $mssp_data() was

      #0:7
      dbsize = 0;
      helpfiles = 0;
      rooms = 0;
      exits = 0;
      descs = 0;
      progs = 0;
      triggers = 0;
      for o in [#0..max_object()]
        if (valid(o))
          dbsize = dbsize + 1;
          if ("description" in properties(o))
            descs = descs + 1;
          endif
          if (parent(o) in {#17, #18})
            rooms = rooms + 1;
          endif
          vind = 1;
          for v in (verbs(o))
            progs = progs + 1;
            if (verb_args(o, vind) != $tnt)
              triggers = triggers + 1;
              while (tpos = index(v, " "))
                v = v[tpos + 1..$];
                triggers = triggers + 1;
              endwhile
            endif
            vind = vind + 1;
          endfor
        endif
      endfor
      return {{"NAME", "SurfaceTension"}, {"PLAYERS", tostr(length(connected_players()))}, {"UPTIME", tostr($boot_time)}, {"CRAWL DELAY", "1"}, {"HOSTNAME", "surfacetension.accela.net"}, {"PORT", "7777"}, {"CODEBASE", "LambdaMOO 1.8.2-cvs20050209-5"}, {"CONTACT", "surfacetension-mssp-1@accela.net"}, {"CREATED", "2009"}, {"IP", "66.220.1.33"}, {"LANGUAGE", "English"}, {"LOCATION", "United States"}, {"MINIMUM AGE", "18"}, {"WEBSITE", "http://surfacetension.accela.net/"}, {"FAMILY", "MOO"}, {"GENRE", "Science Fiction"}, {"GAMEPLAY", "Roleplaying"}, {"STATUS", "Alpha"}, {"GAMESYSTEM", "Synergy"}, {"SUBGENRE", "Blue Planet"}, {"HELPFILES", tostr(helpfiles)}, {"ROOMS", tostr(rooms)}, {"ANSI", "1"}, {"VT100", "1"}, {"DBSIZE", tostr(dbsize)}, {"EXITS", tostr(exits)}, {"EXTRA DESCRIPTIONS", tostr(descs)}, {"MUDPROGS", tostr(progs)}, {"MUDTRIGS", tostr(triggers)}, {"ADULT MATERIAL", "0"}, {"MULTIPLAYING", "Restricted"}, {"PLAYERKILLING", "Restricted"}, {"QUEST SYSTEM", "None"}, {"Roleplaying", "Enforced"}, {"WORLD ORIGINALITY", "Mostly Stock"}, {"SSL", "0"}, {"ZMP", "0"}};
      .
      

      In summary:

      MSSP-REPLY-START
      (lines of tab-separated key-value pairs)
      MSSP-REPLY-END
      

      With CRLF line terminators.

      The above code is wonky garbage and e.g. always returns zero exits as I never got around to making exits for that moocore. Yes, really. ._.

      We should probably type this up into a revised spec, if the odd case anyone still cares about mssp...

      posted in Mildly Constructive
      Chime
      Chime
    • RE: Comfort Food...

      @auspice Right! But you see in the US 'gravy' usually means that horrifying thing grandmothers make with turkey droppings drippings or something at Thanksgiving and Christmas.

      My discovery of the wider world of gravies as a general sauce with vegetarian applications is relatively new, or else I'd likely be considerably rounder. (happened when we moved to Portland, mmmm)

      @wildbaboons said in Comfort Food...:

      It's almost always turkey, occasionally beef.

      This sounds like some sort of Texan heresy.

      posted in Tastes Less Game'y
      Chime
      Chime
    • RE: A directory of MU*'s that's actually good

      @faraday, per http://tintin.sourceforge.net/mssp/news.php:

      • Mar 20, 2009 - Plaintext version of MSSP finalized and added to specification.

      The mudbytes spec seems to be dead, and their wiki reports 500, so... hm. That was the only version that described the plaintext one apparently. Tintin's is incomplete because they only care about telnet.

      A few code references (especially for MOOs) demonstrate the basic idea though; see https://thejoyofstick.com/blog/2012/05/12/share-your-moo-status-using-mssp/ for example.

      This is largely representative of the overall state of decay in the MU* community. As telnet gets further phased out and web-clients start to take over, this is all going to be JSON-rpc and RESTful gubbish.

      posted in Mildly Constructive
      Chime
      Chime
    • RE: A directory of MU*'s that's actually good

      @faraday MSSP can use either telnet IAC codes or a pre-login command. On MOOs we generally supported it with a pre-login command.

      It'd be fairly straightforward to add to MUX, which has a reasonably nice telnet layer for these things but... eh, it's irrelevant for the mud-centric data and giving mudstats better data is largely pointless given it can do INFO.

      Future work should probably be JSON-based and reasonably self-descriptive / general. I do like the idea of a game-to-game spidering protocol for distributed discovery and publication of games mirrored on each-and-every game. These days I'm more interested in getting Evennia to do do the things I want than adding features to mushes. I mean come ON people! Mushcode is terrible and needs to die out.

      posted in Mildly Constructive
      Chime
      Chime
    • RE: Comfort Food...
      • Waffles and/or Pancakes, potentially with BLUEBERRIES and hand-whipped cream. REAL 100% pure maple syrup.
      • Mild udon (Japanese noodle soup with big thick noodles and a thin broth) using vegan dashi (broth base) and silken tofu; shiitake and enokitake (mushrooms). Maitake is also fantastic if you can find it.
      • Miso soup, again from vegan dashi, with small cubed tofu, kombu, nori, and scallions.
      • Vegetarian poutine. (Yes, this is a thing and it is amazing)
      • Malted milk shakes.
      • Toast.
      • Eggs&toast -- ideally sunny-side up but properly cooked so the eggwhite is solid and firm and the yolk is gooooey and the toast has a thin spread of Marmite or even just yeast flakes.
      • Quesadillas -- flour tortilla on a very-lightly oiled griddle, four-cheese blend, Tapatio sauce, possibly with guacamole and sourcream on the side.
      • Campanelle alfredo with smoked gruyere and steamed broccoli.
      • Plain lentil soup.
      • French onion soup, properly baked in an oven until the cheese browns delightfully.
      • Real county fair cheese curds fresh enough that they still squeak.
      • An Old Fashioned -- Rye whiskey, Angostura bitters, simple syrup, soda water, frozen whiskey stones or ice; garnish with orange peel.
      • A Sazerac -- Rye whiskey (traditionally Sazerac whiskey), Peychaud's bitters, simple syrup, soda water if needed, shaken with ice and strained. Coat the interior of the glass with absinthe and swirl the rest back into the main drink (because absinthe is goddamn delicious). Garnish with lemon peel.
      posted in Tastes Less Game'y
      Chime
      Chime
    • Mechanipus outage & Closing plans

      As sent to Mechanipus-hosted game admins:

      Two major things:

      First, the primary server most of you are on (Kuramori) needs to undergo
      a migration operation ASAP. I'm scheduling this for around mid-day
      (US-time) tomorrow (Thursday, 6 December 2017). Services (mush,
      database, webhosting, shell access, etc) will be completely offline
      during the duration of this move, which may take several hours.

      No data is lost or in any immediate danger, but physical hardware
      problems necessitate this move to ensure we have reliable backups.
      (Blessed are the pessimists, for we take backups, etc.)

      Kuramori should return to operating status afterward all by itself, but
      I anticipate that mushes linking against truly antique libraries may not
      restart without a recompile. Please understand: this is 2017 and
      Kuramori is a 64bit Debian environment; some of you are still running
      binaries compiled on ISU. It's easier to recompile and relink than
      continue to maintain binary compatibility, so that's what we'll be
      doing. Sorry-not-sorry.

      I'll be around to recompile or assist with other restart operations as
      needed; my Discord id for those of you using that sort of setup is
      Chime#3134. Contacting me there is fine, but keep in mind that I do
      have a job and extensive help requires extensive time. Hangouts, email,
      etc. is fine too.

      Second, it's become apparent that Mechanipus is much less an essential
      component of the MUSHing community than it was; there are a multitude of
      low-cost hosting services and VM providers that are a much better fit
      for most users.

      As a result, Mechanipus will be closing.

      Mushes will be permanently halted and web services suspended on 15
      January 2018. Two weeks later, at the end of January, I will be doing
      the final removal of accounts, data, and likely decommissioning Kuramori
      itself.

      I strongly suggest moving to a new provider as soon as you are able.
      You may need to find codestaff to help you; I do not have the time or
      energy for such an undertaking, but I'm happy to advise other hosting
      providers that are stepping up to the plate.

      Please do not:

      • Ask me to fix your wiki.
      • Ask me to export your mush, sql, wiki data, images, etc.
      • Ask me to Continue hosting "just this one thing."
      • Panic. Really; you have weeks to get yourself sorted out, just start now.

      Thank you for your time and effort over these years to keep our hobby
      alive. I've delayed this announcement until another unrelated problem
      (see above) has required an outage. After the outage, I will get things
      back online, but please do remember that the End is approaching.

      posted in MU Code
      Chime
      Chime
    • RE: Quiet Quiet Rooms?

      @skew said in Quiet Quiet Rooms?:

      Thank you, @Chime!

      Anytime!

      Hate to do this, but can anyone break down how to apply this patch in very, very simple terms? I can get into the console as necessary, I know what git is, I just have no idea how to apply a patch to a game. Or, well, most anything else linux-related.

      Sorry for being a bit terse. I spend most of my waking hours at some sort of unix prompt (Linux or otherwise). First, you'll need several tools. If you don't have administrator (root) access, then hopefully your host has already got these installed. On deb-derived systems (Debian, Ubuntu, Mint, etc etc) you'll want something like

      $ sudo apt-get update
      ... some lines downloading package lists ...
      
      $ sudo apt-get install build-essential g++ make patch tar bzip2 wget git
      ... some lines describing additional packages it wants to install ...
      ... question about if that's okay (say yes, generally) ...
      ... many lines about downloading and installing each package ...
      

      If the tools are already there, then you won't need to do that.

      $ cd
      $ mkdir mux-src
      $ cd mux-src
      $ wget ftp://ftp.tinymux.org/tinymux-2.12/alpha/3/mux-2.12.0.3.unix.tar.bz2
      --2017-05-09 23:35:06--  ftp://ftp.tinymux.org/tinymux-2.12/alpha/3/mux-2.12.0.3.unix.tar.bz2
                 => ‘mux-2.12.0.3.unix.tar.bz2’
      Resolving ftp.tinymux.org (ftp.tinymux.org)... 52.34.23.255, 2600:1f14:2a0:2201:ab7d:7d:8dd3:57fc
      Connecting to ftp.tinymux.org (ftp.tinymux.org)|52.34.23.255|:21... connected.
      Logging in as anonymous ... Logged in!
      ==> SYST ... done.    ==> PWD ... done.
      ==> TYPE I ... done.  ==> CWD (1) /tinymux-2.12/alpha/3 ... done.
      ==> SIZE mux-2.12.0.3.unix.tar.bz2 ... 1080619
      ==> PASV ... done.    ==> RETR mux-2.12.0.3.unix.tar.bz2 ... done.
      Length: 1080619 (1.0M) (unauthoritative)
      
      
      mux-2.12.0.3.unix.tar.bz2               100%[===============================================================================>]   1.03M  --.-KB/s    in 0.09s   
      
      2017-05-09 23:35:06 (11.6 MB/s) - ‘mux-2.12.0.3.unix.tar.bz2’ saved [1080619]
      
      $ tar xjvf mux-2.12.0.3.unix.tar.bz2
      mux2.12/
      mux2.12/INSTALL
      mux2.12/SGP
      mux2.12/CHANGES
      mux2.12/LOCAL
      mux2.12/REALITY.SETUP
      mux2.12/NOTES
      mux2.12/src/
      mux2.12/src/move.cpp
      mux2.12/src/Doxyfile
      mux2.12/src/autoconf.h.in
      mux2.12/src/muxcli.h
      ... many more files unpacking ...
      
      $ git clone https://github.com/lashtear/tinymux.git
      Cloning into 'tinymux'...
      remote: Counting objects: 59424, done.
      remote: Compressing objects: 100% (2/2), done.
      remote: Total 59424 (delta 0), reused 0 (delta 0), pack-reused 59422
      Receiving objects: 100% (59424/59424), 18.34 MiB | 17.20 MiB/s, done.
      Resolving deltas: 100% (46787/46787), done.
      

      Now, you should be in a folder called 'mux-src' right underneath your homedir, with the tar.bz2 archive of upstream tinymux from Brazil and a git checkout of my quirky version.

      $ ls -laF
      total 1080
      drwxr-xr-x   4 lucca lucca    4096 May 10 00:01 ./
      drwxr-xr-x 104 lucca lucca   12288 May  9 23:56 ../
      drwxr-x---   5 lucca lucca    4096 Feb 13  2016 mux2.12/
      -rw-r--r--   1 lucca lucca 1080619 May  9 23:35 mux-2.12.0.3.unix.tar.bz2
      drwxr-xr-x  11 lucca lucca    4096 May  9 23:58 tinymux/
      
      $ cd tinymux
      $ git show 5fd6080286dc36fe7ba6673a208dbfb445a6d056 > ../blind-room.patch
      $ cd ..
      $ ls -laF
      total 1088
      drwxr-xr-x   4 lucca lucca    4096 May 10 00:03 ./
      drwxr-xr-x 104 lucca lucca   12288 May  9 23:56 ../
      -rw-r--r--   1 lucca lucca    4606 May 10 00:03 blind-room.patch
      drwxr-x---   5 lucca lucca    4096 Feb 13  2016 mux2.12/
      -rw-r--r--   1 lucca lucca 1080619 May  9 23:35 mux-2.12.0.3.unix.tar.bz2
      drwxr-xr-x  16 lucca lucca    4096 May 10 00:03 tinymux/
      

      Now we have that same bit plus that blind-room.patch file. Now before you start suggesting that it'd be really handy if we kept all those patches somewhere easy to access-- that's exactly what any revision control software (like git) does. Anyway, time to apply.

      $ cd mux2.12
      $ patch -p2 <../blind-room.patch 
      patching file game/text/help.txt
      patching file src/move.cpp
      patching file src/netcommon.cpp
      

      Congrats. You now have a tinymux tree from Brazil but with just that one patch of mine added. If you were instead building from his git repo, you could do this all much easier with the git cherry-pick command, but you probably aren't. If building against an archive export of his git tree, change the parameter to -p1 because of the slightly different directory structure.

      This should work for most any 2.12 or 2.10 version, though if you use 2.10 the file offsets are slightly different, so you would see instead:

      $ cd mux2.10
      $ patch -p2 <../blind-room.patch 
      patching file game/text/help.txt
      Hunk #1 succeeded at 5009 (offset -12 lines).
      patching file src/move.cpp
      patching file src/netcommon.cpp
      

      Yes; git, patch, diff, etc are all rather clever and indispensable tools that I can't imagine getting through my day without. Game should build as normal with these changes.

      posted in MU Code
      Chime
      Chime