MU Soapbox

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

    Posts made by Chime

    • RE: Git repo safety guidelines

      I am-- for good or bad-- old enough to remember version control before git.

      Try being primary release engineer for a large project in CVS with multiple layers of submodules, each of which receives third-party-tracking re-imports into several branches. All with customized local autotools (including inhouse M4, woo) applied in tree to each that no one else seems to know how to update.

      Rough? Now try teaching it to various iterations of junior engineers and developer types, and having to fix it when they inevitably hose everything, ever, in all the ways.

      Git... isn't bad. It isn't bad at alllll... but I do know your pain.

      posted in MU Code
      Chime
      Chime
    • Git repo safety guidelines

      posted in MU Code
      Chime
      Chime
    • RE: Optional Realities & Project Redshift

      @surreality

      Damn. I swear I just wasted like a whole hour drooling over espresso machines again.

      I would probably go with more of the semi-auto style if I went that way, along the lines of Breville's BES920XL. But. Those brass Pavoni machines are so pretty~

      (There's a reason I've been way less pleasant than usual this month, and I blame the perpetual withdrawl migraine. 😐 )

      I tried doing that-- Once. I was working in an office back then; regular university IT department stuff. After about two weeks of trying to do without any caffeine at all, a group of my co-workers cornered me before I could slip back into the safety of my undersea-crevice cubicle. They didn't say anything, but stood there, silently judging me. After an evil cackle, one of them cracked open a can of redbull or something. Not the best soft drink, and certainly no comparison to coffee-- but that smell... If I hadn't smelled it, I'd not have been seriously tempted. Once it was thrown open before me, I was lost. With great gleeful gulps I drank the thing down, then scuttled back to my cube-- screeching with furious delight at the raw power of the stuff.

      It is truly the modern vitae.

      Then of course there is the trip I took with some friends a few years back; we were huddled near the meager shade of a tarp to escape the harsh Mojave sun, squinting through the glare at endless miles of dusty earth and purportedly still-alive creosote bushes. As the silence stretched, my friend put his hand on my back and grinned slyly. His tongue darted out for a moment, moistening his lips as he surveyed the camp. His eyes swiveled back to me, and his grin showed far too many teeth.

      "I've got something you'll like," he said. There was no doubt in his voice; he knew me far too well. He nodded, likely knowing anything I might have thought or said was superfluous. I did scowl; his self-assured dominance was wearing thin in the heat and I remain ever the skeptic. Rolling a small container into his hand, he showed me the label, then leered-- daring me to action.

      "PURE ANHYDROUS CAFFEINE," it read. Well, and so. "Wow. Um. Like how do we even--" I recall not being terribly articulate, but then again I hadn't had any yet. He pulled out some ridiculously flavored bag of doritos and proceeded to coat one with the powder until it looked like a powdered donut.

      "Try this." he said, leaning in closer. Him being him and me being me, I did-- but that caffeine certainly didn't hurt. My heart may have disagreed, however; I could feel it accelerating within the confines of my body, trying to escape. Soon after, my face contorted in dismay. "Auwwgh."

      Miracle tho caffeine might be, it doesn't taste very good in pure form.

      posted in Adver-tis-ments
      Chime
      Chime
    • RE: Optional Realities & Project Redshift

      Y'all need some more vitamins T, H, and C. Alternate/newer technology types in the MU* space still catering to potentially RP-involved games are relevant to my interests.

      If updates come periodically... great! It's content and something to read that might inspire people to go do something. If you don't like it, don't read it. That said, each post of that sort should be framed in the form of "here's what we've done since last time:" and be a coherent forward progression. Blind repetition does no one any good, but I don't think that's the case here, is it?

      @Thenomain said:

      (hint: drink fresh-ground, home-brewed coffee; it's very inexpensive)

      Ground fresh every morning for that pot of coffee with a standalone conical burr grinder using beans roasted in the past week taken exclusively from the Mordecofe plantation in Ethiopia. You probably haven't heard of it. * adjusts her hipster glasses and flaunts that westcoast cargopants-and-flannel chic *

      Seriously though, it's really good coffee.

      posted in Adver-tis-ments
      Chime
      Chime
    • RE: Optional Realities & Project Redshift

      @HelloProject said:

      @surreality I actually know some people who used to run a MOO with MUSH-like features, so I'll see if the coder is still around and if they know how to do that.

      Well, I was one of those...

      Setting up : and ; to preprocess right is easy enough. You still need to handle color all in softcode though, as moo doesn't have any color concept or even decorated strings of any form.

      If you have a unified output layer in your softcode, e.g. on player:tell() or the like, it's a pretty simple matter to handle it there. I posted code for this on the old WORA. SurfaceTension (my BluePlanet MOO) had this plus a NOSPOOF implementation in the same function.

      .program #4:tell
      for line in (args)
        if (index (line, "~") || index (line, "%"))
          line = strsub (line, "~", "~7E");
          line = strsub (line, "%%", "~25");
          line = strsub (line, "%r", "~0D~0A");
          line = strsub (line, "%t", "~09");
          line = strsub (line, "%b", "~20");
          ansicode = 0;
          while (matches = match (line, "%%c[fhuinxrgybmcwXRGYBMCW]"))
            {s, e, rep, sub} = matches;
            ansicode = {5,1,4,7,0,30,31,32,33,34,35,36,37,40,41,42,43,44,45,46,47}[index ("fhuinxrgybmcwXRGYBMCW", line[e])];
            line[s..e] = tostr("~1B[", ansicode, "m");
          endwhile
          if (ansicode)
            line = line + "~1B[0m";
          endif
          try
            set_connection_option (this, "binary", 1);
            notify(this, line + "~0D~0A");
          finally
            set_connection_option (this, "binary", 0);
          endtry
        else
          notify(this, line);
        endif
      endfor
      .
      
      posted in Adver-tis-ments
      Chime
      Chime
    • RE: Optional Realities & Project Redshift

      @HelloProject said:

      I feel like this would all be solved if everyone just agreed to make a MOO, somewhere in between a MUD and a MUSH.

      Yep. There will always be random players that claim they can't code for moo but can for mush. It's best to smile, nod, and ignore them. If they can't pick up moo coding in a few minutes, they probably shouldn't be "coding" on a mush either.

      Damn, I sound so jaded and elitist.

      In summary, MUSH should refer to a technology type centering around MUs that implement command queues and quasi-quoted function evaluation over a primitive hierarchical object database. It's a soulcrushingly bad design. Like MUDs, mushes have a lot of hardcoded commands and concepts. The community tends to favor RP, but there are always outliers and extras.

      Similarly, MUCK is the same idea, but with the "softcode" implemented by a dialect of Forth. Whether that is a good thing or not depends largely on how much you like Forth, but I think most sane developer types would still consider it a step up from MUSH. A very, very big step. Less hardcoding here, so much more flexible. The community is predominantly furry. Whether that is a good thing or not depends largely on how much you like the whole furry concept. They're more accepting of my fascination with octopuses, at least...

      MOO went a step further, and instead of using Forth-- an extensible stack-based language-- it uses a stack-based bytecode VM. A javascript-like (but much earlier) language then compiles down to moo bytecode. The bytecode structure is conceptually analogous to JVM or CLR bytecode, but users don't interact with it directly. There is no community left that I've found.

      MOO also spun off coolmud and coldc. It's a pretty flexible design, but the implementations are very much showing their age. The beautifully abstract and minimalist hardcode that is its strength is also a community weakness; every MOO is very different.

      So. What about MUDs? Well, the have a reputation for -- whatever, who cares; like any technology you can do anything with it. The unifying idea, if there is one, is that more of the game is implemented in hardcode and less in softcode, if any softcode is present. That can be good or bad depending on the implementation language and the nature of the problem you are trying to solve.

      Moving forward, why aren't we all using (insert whatever perl/python/java/javascript/etc mini server is popular this week)? Similar too MOOs, there isn't much of an established codebase, and what is there is still far too primitive or incompatible with existing user expectations.

      My current direction is actually much more MUD-like; throw almost everything into hardcode and implement it faster/cleaner/better THERE rather than in the softcode layer. Why use a crap baby-language when we can just use a proper one? Mushcode is training-wheels without the bike.

      posted in Adver-tis-ments
      Chime
      Chime
    • RE: Capped XP vs Staggered XP?

      @Cobaltasaurus said:

      The point of this-- in every case that it has been pitched to me --was to allow "new players to catch up to old players". e.g. New players get more XP vs the old players getting less, so someday there's something resembling an even ground.

      However, since most games also offer XP as rewards for PrPs, does this model actually work? Or can the old players just keep supplementing their auto-xp with PrP-xp? Do we really care if it doesn't work all that well?

      Well. One could set the auto-XP curve to be based on the active game population as a whole. More interestingly, the far end of the lotsa-xp curve could have a negative value. This would force the top-XP characters to participate in PRPs with a large population of players-- or start losing XP.

      How that would equate with already-spent stats... less clear.

      posted in Mildly Constructive
      Chime
      Chime
    • RE: Chime @ TR

      @2mspris: Yep. Fixed again for the short term. No, I don't sleep; I wait.

      That said, kinda frustrated about apache stability in this round of packages.

      posted in A Shout in the Dark
      Chime
      Chime
    • RE: Remember That Modern Jobs System?

      @Bobotron said:

      What's the likelihood that this won't vomit percent-signs on Penn?

      Considering Alzie's fetishistic devotion to Penn, probably pretty good.

      posted in MU Code
      Chime
      Chime
    • RE: Must-Have Mux Functions?

      For IC vs OOC time, I'd recommend using the code I wrote for DarkSpires there.

      QUIT
      @va me=#230
      -
      @wipe %va
      -
      
      @name %va=Time Commands
      -
      
      &conf_ic_ratio %va=1.5
      -
      
      &conf_ooc_launch %va=Tue Jan 01 00:00:00 2013
      -
      
      &conf_ic_launch %va=Tue Jan 01 00:00:00 2002
      -
      
      &fn_offset %va=
        sub( 
          convtime( get( #230/conf_ooc_launch ), utc ), 
          convtime( get( #230/conf_ic_launch ), utc ))
      -
      
      &gfn_ictimeof %va=
        add( 
          mul( 
            sub( %0, convtime( get( #230/conf_ooc_launch ), utc )),
            get( #230/conf_ic_ratio )),
          convtime( get( #230/conf_ic_launch ), utc ))
      -
      
      &gfn_ooctimeof %va=
        add( 
          trunc( fdiget( #230/
            sub( %0, convtime( get( #230/conf_ic_launch ), utc )),
            get( #230/conf_ic_ratio ))),
          convtime( get( #230/conf_ooc_launch ), utc ))
      -
      
      &gfn_icsecs %va=ictimeof( secs() )
      -
      
      &cmd_time %va=$+time:
      @pemit %#=
        strcat( 
          header( +time )%r, 
          OOC Time:%b, convsecs( secs(), utc ) UTC.%r,
          %bIC Time:%b, convsecs( icsecs(), utc ) UTC.%r,
          %rEventually cool moon and weather stuff will go here.%r,
          %rRemember that this game runs on loose-IC time%;%b,
          feel free to RP with an IC time-setting near the IC time listed above.%r,
          footer())
      -
      

      isstaff() et all

      These should probably change into a more general purpose group membership test system, but in the absence of consensus, isstaff() is a pretty good simple answer. Given more time/energy/giveadamn, I'd recommend something like

      hasrole( dbref, rolename )

      were rolename might be staff, etc.

      header() ...

      I regret the existence of wheader() as a separate things. Most newer games using my base code just have header() and it is wide. That looks bad with certain older crufty mushcode. It might be good to have a more general api for visual-form construction, but header/divider/footer is the basic minimum.

      msg() ...

      Yes.

      titlestr()

      I know you're proud of how very clever it is, but... is it really used that much?

      lmax/lmin()

      Brazil added hardcode for these in the 2.12 tree in January. Otherwise yes.

      isic()

      Hmmmmmm. I want to say that a more general concept of "situational context" should be articulated here, but isic is reasonable.

      shortdesc()

      is an approach to permissions. Really it should just be @attribute short-desc=visual or something, but people never seem to remember that.

      vcolumns()/vtable()

      Yeah.

      crumple()

      Never heard of it, but sounds handy.

      plural()

      Only if it is per-object overridable, like MOOs tend to do.

      say()

      Yes!

      lpmatch()

      How is this different than iter( ...,pmatch(%i0))?

      width()

      Hrm. Yeah, I guess. Might be wise to call it uwidth() or the like. Along these lines it might also be good to have header/divider/footer take an optional width argument, so that they can be used in the construction of more complex form combinators.

      posted in MU Code
      Chime
      Chime
    • RE: Cheap or Free Games!

      League of Legends. It's still free. And everyone is still an asshole. This pre-game lobby summarizes nicely. I'm Lepidopterodactyl, shortened for name limitations of course.

      Lepidopterodactl joined the room.
      The Red Blizzard joined the room.
      Celestial Poet joined the room.
      bsnake32: top pref
      Lepidopterodactl: That's a really pretty name.
      The Red Blizzard: bsnake?
      Celestial Poet: nah my name
      The Red Blizzard: pfff
      The Red Blizzard: pretencious bastard
      The Red Blizzard: imma jg
      Lepidopterodactl: fill
      Celestial Poet: fuck you stupid whore i bet you are a son of a b1tch in real life and play in a mcdonals while yuou fuck a dog
      The Red Blizzard: fite me irl
      Celestial Poet: wrong chat
      Celestial Poet: sorry
      
      posted in Other Games
      Chime
      Chime
    • RE: Chime @ TR

      For what it's worth, those recent web troubles appear to have been an Apache bug. Should be fixed now. Maybe.

      posted in A Shout in the Dark
      Chime
      Chime
    • RE: Chime @ TR

      @DarkDeleria said:

      Hey Chime, just an FYI -- I think thereachwiki is down again 😞

      Try now. Really hoping to deprecate all php services in the next year. Ugh.

      posted in A Shout in the Dark
      Chime
      Chime
    • RE: RL Anger

      @silentsophia said:

      I'm so tired of tics and tremors.

      shakey fist-bump

      For most of my stuff, I've learned to position myself with braced arms/hands so that it doesn't matter. Certain fine work like soldering, hand-sewing details, etc are becoming ever more difficult. Anything requiring significant force (screwdrivers, holding pots/pans one-handed, etc) is frequently a non-starter.

      posted in Tastes Less Game'y
      Chime
      Chime
    • RE: The I-Can't-Remember-What-We-Called-The-Cool-Things-Thread Thread

      @Thenomain said:

      So I continue to use TextWrangler, which additionally extends the selection in both directions, in this instance, instead of assuming the selection anchor is always at the end. This is how I select all of function( nested( other( functions ))). If I can't select like this, then forget it.

      (edit!) Oh yeah, I forgot: Yes, TextWrangler allows for color schemes, but the text rendering engine it uses has been written in-house since before MacOS was an 'X', so it's usually better on my eyes to go black-text-on-white. I will try it again, mind.

      Sounds like "none of the above" is the right answer there. Keep looking.

      @Arkandel said:

      If it's not vim it's not a real editor anyway.

      I suppose. I can use vi and it's fancier relatives like vim. I'll probably always prefer emacs, at least for development work. It's more of a poor-man's portable lispmachine than an editor. Most of Theno's concerns are sorta hilariously irrelevant to me; I control editors with a keyboard, and mouse just gets in the way. I doubt I can give him much useful advice, but I concede that even vi in any form is better than whatever wreck he's using now.

      Pro-tip: when on-site with a customer and you ask for emacs but they give you vim, smiling and saying, "I go both ways" is not quite the desired effect.

      posted in Tastes Less Game'y
      Chime
      Chime
    • RE: Chime @ TR

      Hi! Fixed reachwiki. Sorry about the trouble.

      posted in A Shout in the Dark
      Chime
      Chime
    • RE: The I-Can't-Remember-What-We-Called-The-Cool-Things-Thread Thread

      @Thenomain said:

      Note: These two programs I have white text on black. I react very differently to the same font in the black-on-white of a text editor. edit: I was using Andale Mono for telnet.

      Well there is your problem. Use a light-text-on-dark-background color scheme in your text editor.

      If you can't, get a real editor.

      posted in Tastes Less Game'y
      Chime
      Chime
    • RE: The I-Can't-Remember-What-We-Called-The-Cool-Things-Thread Thread

      @Thenomain Interesting. Looks okay, but it's mostly based on the BitStream/DejaVu work, which I already use everywhere for most things. Not a big change from that, but more hinting annotations in the font are a good thing

      I do wonder why it's released as a separate font when the DejaVu guys would love to merge in most of those changes.

      posted in Tastes Less Game'y
      Chime
      Chime
    • RE: Hell-Ban MU

      This is part of why-- when I've banned people actively Doing Evil-- I tend to do it in the form of an iptables rule that blocks only the inbound packets. I engineer my firewalls to be stateful, so this leaves existing TCP sessions intact, at least in one direction.

      From the perspective of people on the game, the person just becomes quiet and eventually idles off. This tends to de-escalate nicely; everyone says their piece, gets their last word in, then tends to subside as nothing else comes back.

      From the perspective of the person banned, people are still actively responding to them, though eventually they seem to not pay as much attention and finally there is a network outage of some sort. This tends to have a moderately de-escalating effect also.

      In most cases, a temporary ban is quite sufficient for the person to cool off and resume responsible adult behavior. Not always, though.

      I don't think implementing a separate game is the way to go; better to do it with a variation on in-game message routing, much like how BLIND rooms (e.g. for truly quiet quietrooms, freezers, etc) make everyone in one feel like they are alone. I'd recommend calling it a SHUN flag on the player object, or similar.

      Ultimately, pseudonymous services of this sort really have two options: Hope for the best, or rely upon some third-party authentication source for tracking accounts. E.g. OpenID, G+, Facebook (ugh), etc. Or allowing people in only after they have been recommended by one existing player-- and hold that player accountable for their guests' behavior. This is essentially a variation on the external authentication concept.

      As it is, most of the community is horrified by the idea of supplying even an email address, yet so pathetically clueless that they won't use SSL.

      posted in MU Code
      Chime
      Chime
    • RE: MUX server fork

      Heyyy. This thing is still alive, and has a variety of fixes.

      Additionally, I've not got a basic set of unit tests (with ever expanding coverage) and per-commit checking via travis-ci. In particular, I can now show things like: Build Status

      Other long-standing mux issues fixed in current mechanipus branch:

      • The inline-sql handler (sql()) will conveniently auto-reconnect whenever needed, completely transparently.

      @Chime said:

      Things NOT present but definitely on the must-do list before a release:

      • Complete replacement of the svdhash database implementation. This is a huge amount of work but necessary for where I want to go with it.
      • SQLite support for games running without mysqld handy.

      Still on the agenda, and in progress! Add to this:

      • Will do a complete rewrite of the SSL layer to clean up some odd cases and allow carrying SSL contexts across @restart.

      Known issues:

      • stubslave launch may be broken

      Fixed!

      • dbconvert symlink origin on non-symlink platforms (windows?) with out-of-target DESTDIR may break

      Should be fixed, difficult for me to test. (And probably no one cares)

      • MinGW cross-compliation goes down in flames because of the lingering VisualCisms.

      Likely dropping windows or at least MSVC support entirely.

      • I need to write a bunch of manpages.

      Yep. And to continue extending the doxygen docs-- but I'm holding off on that as a LOT of the complexity disappears when rewriting certain parts.

      posted in MU Code
      Chime
      Chime
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 13
    • 14
    • 6 / 14