• Member Since 24th Sep, 2015
  • offline last seen Last Wednesday


Let R = { x | x ∉ x }, then R ∈ R ⟺ R ∉ R... or is it?

More Blog Posts347

  • 26 weeks
    Lame Pun Collection

    So I decided to trawl conversation logs for throwaway lines I spout on occasion. Because otherwise I’d forget them entirely, and some of them are actually good ideas. Granted, most of them are stupid puns… But I like puns, and I’m still not sure why you’re supposed to cringe at them.

    Read More

    10 comments · 681 views
  • 27 weeks
    Rational Magic

    I basically improvised most of this lecture from memory when talking with DannyJ yesterday, but then I thought, why not blog this, should at least be food for thought. It’s not directly pony-relevant, more like a general topic of discussion which one needs to meditate on when writing fantasy – but that includes ponyfic, so you might be interested.

    Read More

    24 comments · 834 views
  • 34 weeks
    A series of unexpected observations

    So I’ve been reading things.

    Read More

    15 comments · 846 views
  • 43 weeks
    Read This

    Still alive.


    In the meantime, if anyone is curious about why am I having such a hard time writing, you can read DannyJ’s review of Season 9.

    I’m still busy living that mess down, you see.

    10 comments · 767 views
  • 78 weeks
    In other news...

    No, I’m not dead.

    Ok, maybe a little.

    Read More

    10 comments · 509 views

Random #2 · 3:49pm Jun 6th, 2016

A random collection of one line thoughts which I found no uses for, but maybe you will. Some should be good for a laugh, at least.

In a different community, these would be tweets.

Fluttershy has a chicken named Elizabeak, and a potted plant, named Elizabeet.
Max Factor is a valid pony name. He’s a scientist, not a stylist.
Fluttershy: So what it’s like, being a tree? I always wanted to be a tree. Groot: I am Groot.
Make Trixie Great and Powerful Again!
“Selenography” is the scientific name for Luna’s memoirs.
Dashboard is a place where Rainbow Dash posts announcements of Wonderbolt performances. In Equestria Girls, however, it’s a popular insult to use for Rainbow Dash.
“I have alcohol stashed all over Ponyville. For alcoholic emergencies.”
The dominant religion among ponies is stereotheism.
There is one more Pie sister, but the family has disowned Kinkie Pie. So she married an Apple and changed her name. We don’t know much about her, but her son is Adam Apple.
Cheese Sandwich walks into a bar. The bartender says, “Sorry, we don’t serve food here.”
Rarity Instigates.
The Lizard of Ows: Rarity is shipping Fluttershy with Tin Woodsman and enlists the help of Spike. Spike suffers.
Deep in the bowels of the Equestrian equivalent of IKEA, a real Swede is hidden in a padded, windowless room. He thinks up product names. Nobody knows what sort of alien plays the part in the human IKEA…
If Treehugger loves plants so much… what does she eat?
Rainbow Dash and her dreaded enemy Monochrome Crawl.
Fortune favors the bold. Fame favors the italic.

Report Oliver · 685 views · #random
Comments ( 38 )

Maybe I should do one of these. It'd certainly help clear out the useless bits and scraps.

Also, now I want to write a story entitled Rarity Instantiates.

4002995 You really should, you're one of the few who could pull it off well I think.

Intriguing and amusing. I like this better than twitter as you get to read more all at once.


Please do. To both. :)

If Treehugger loves plants so much… what does she eat?

Fruit that has naturally fallen from trees. She's careful to always save the seeds.


I.e. she robs the children of plants of their food, right. :)

Hmn... I have a chicken named Elizabeak. And others named Peckingham. Henrietta, Cluckwork, and Mrs. Squabble. I have not, however, given punny names to any of my trees or plants. Maybe I should start? :pinkiecrazy:

Also, in my latest story, Twilight uses "selenographic reaserch" as an euphemism for fooling around with Luna. :raritywink:


But that should be selenologic research, it's only selenographic if she writes hot steamy diaries about it!

:rainbowlaugh: I smell an edit!


I recommend you make use of hot steamy diaries as a plot device instead. :)

:rainbowhuh: "Plot device?" You mean a chair?


No, I mean a


Seriously though, since selenography implies describing, somepony stumbling on Twilight's more sensitive writing could be interesting...

Yeah... I will keep that in mind for future stories. Might even make a good comedy one-shot! :yay:

And, holy carp, I just realized that of course Twilight would take notes about her "scientific" interests.

4002995 Or do R. A. (Rarity Abbreviates)


I think she'd prefer Haskell...

http://www.deviantart.com/art/M-for-Monad-545083648 :)

If anything, I see Rarity using a LISP... She sounds like the type of pony not getting lost in multiple layers of parentheses.


Nononono, this is the Pinkie language. MUSHCode.

&U_GETST #5=[if(strlen(setr(1,after(grab(%0,[ucstr(%1)]:*),:))),%q1,0)] &U_PUTST #5=[if(setr(4,match(%0,[setr(2,ucstr(%1))]:*)),replace(%0,%q4,%q2:%2),setunion(%0,%q2:%2))]

It's really supposed to be written this way, (spaces are significant) has a widely held reputation of driving programmers mad, and they say the world's written in it. Which is true. :)

Also, I'm pretty sure Twilight would be using something outright procedural, because checklists.


Are they saying that functions operate by side effects and commands are containers for places that these side effects can happen on?

Tutorials suck about as much as the language itself, most of them were written in early 90s when nobody actually used the language the way it got used in early 00s. Command chaining that this one describes doesn't work very well, by the way, because of the intricacies of how commands enter the single-threaded global execution queue, you could easily end up with them running out of order. Most real user-facing code is something like this:

&attribute_name object=$command:@emit [u(object/attribute_storing_function_code)] &attribute_storing_function_code object=[function(function(function(function(meh))))]

Functions can only produce a result as part of generating text output, whenever that happens. This is not a programming language containing text delimited by quotes, this is a stream of text containing delimited snippets of a programming language. Pretty much everything revolves around the objects of the virtual (textual) world the language exists for, and ultimately, only user commands can result in text output. I.e. a user 'looks' at an object by inputting a command. An attribute on the object gets evaluated to produce text output that the user will see, and any functions found therein (anything between square brackets) are interpreted. Oh, and everything is a string limited to 8192 bytes. In some dialects, empty string is equal to 0, in others it's an error to treat it as a number.

Why would anyone program in that? Because you don't get anything else to program in, duh. Some of the stuff written in it is pretty extensive, and it got really fun when they introduced sql() for interfacing with a real database. :)

As far as arcane scripting languages for virtual environments go, MUSHCode is actually a relatively comfortable one, even if it is insane. eAthenaScript or LSL are magnitudes more painful to use. In eAthenaScript, you could crash the server with a missed semicolon, which only fires when a user tries to interact with the object you scripted. Or inadverently lock up the client. And there are no loops. Or non-integer numbers. Or a modulo operator. In LSL, you're limited to 16kb of compiled CIL code + heap, numbers take 10 bytes, a function definition introduces 600 bytes overhead, lists introduce so much overhead that you can forget about using a list of more than 100 numbers, but you can produce a largely unlimited amount of modules, each with these limitations. So you set them up so they send messages to each other, it feels like programming a bucket of microcontrollers. Usually, you say "screw it" and make HTTP requests to your offworld server where a real program does all the work, instead of writing anything in this horror.

Does it have metaprogramming? And if not, how could it be Pinkie's language?

It's not meant to have metaprogramming. But it has runaway evaluation with possible privilege escalation for reasons described above, and it's pretty trivial, if mindbending, to produce code that writes code, self-modifying code, self-replicating code, etc, etc. :) Not to mention code that literally rewrites the world as you attempt to observe it, which would be just the Pinkie thing to do.


That actually makes sense. Well, except for the string length limit, using the empty string as 0 and significant spaces.

The length limit is due to it getting started in mid-80s, when 8192 bytes was a lot. Significant spaces is a direct consequence of code being embedded into text -- if your code contains spaces which leak into text, the user will see them, which will screw up whatever fixed width text formatting you may have.

This thing wasn't designed, it evolved. :)

I'd just make attributes public (users and functions have access) or protected (only function have access) and evaluate attributes when they are read to produce a string

Eventually, (by 00s) as these virtual worlds grew bigger, they introduced attribute flags and attributes flagged "nocommand" would not get scanned for commands.


Sanitizing? Never heard of it, or there wouldn't be runaway evaluation! :) In fact, evaluation is recursive, which is why the example I started with works in the first place: [if(strlen(setr(1,after(grab(%0,[ucstr(%1)]:*),:))),%q1,0)]

Let us assume that %1, that is, parameter 1 of the call is "foo" and parameter 0 of the call is "FOO:1 BAR:2". The code essentially transmutes itself. First, ucstr gets evaluated before anything else, since it has an extra pair of [] brackets around it, and immediately becomes text -- and text is code:


Then grab(x,y) is evaluated, looking for a wildcard pattern y in list x. And X is parameter 0:

[if(strlen(setr(1,after(grab(FOO:1 BAR:2,FOO:*),:))),%q1,0)]

setr(x,y) is a side effect function, it sets %qX register to Y.


I.e. the above sequence returns 1, and if you call it with BAR you will get 2. These two functions implement a dictionary/hash stored as a list.

"look chair" is actually a hardcoded command anyway and does exactly what you said. It's extending the hardcoded commands to make objects that behave in ways impossible to specify in advance that the whole business is about. And as far as I can tell, most of it was improvised starting from a simple feature request "I want to insert a variable into an object's textual description"


Right? RIGHT?

No, they aren't doing it at all, "look at chair" will look for an object named "at chair" in your vicinity. :)

Although that probably would be demoralizing and thus all of the hours would have been saved, including the ones for playing.

The whole practice largely died out by now. You can still find isolated pockets, but now it's a very esoteric environment. Which is kind of a shame, because it was a system specifically tailored to roleplaying in textual form, and whenever I look at what people call roleplaying today and how they struggle to do it in forums and on social networking platforms, neither designed nor suitable for the task, I want to cry.

Sometimes, I feel like reimplementing the whole thing from scratch with a dedicated browser-based client, capable of rich text, blackjack and hookers. But then I lie down and wait for the feeling to pass. :)


I guess I'd need to learn hunchentoot, cl-who and parenscript for the whole browser-based client

I hear, Clojure compiled to javascript is the in thing these days if you really need to do it in Lisp. :) And the server-side could be written the same way for nodejs, to make use of the numerous low-level libraries... I'm not doing this because it would take quite a long time to make it work, but the moment where it could become popular is really in the past.

What do you think of the following?

The idea of a custom delimiter is clever, but I'm not sure it really fits the problem domain. In fact, I suggest you check out the code and play around with the thing, maybe you'll understand better what's it all for. :)

Maybe these should be tweets! I'd certainly follow and RT.

The dominant religion among ponies is stereotheism.

At least up until the end of Season 3, when they switched to SurroundSound. :trollestia:


Tweets are way too transient, they get forgotten in hours. :)

Rarity Transubstantiates


...but into what? :)

4295869 She has the essence of divinity, but the accidents of an ordinary marshmallow.


A very rarefied marshmallow, you mean. :)

Max Factor is a valid pony name. He’s a scientist, not a stylist.

As I've seen in some other 'fic whose name escapes me at the moment, so is "Cloud Strife"
The Look command should not, generally, take time. It often makes for interface problems. But that would be very Pinkie, yeah…

What, we're not proclaiming Pinkie as a Malbolge writer? Access to an oracle would make it substantially easier to program in, after all… :pinkiecrazy:


As I’ve seen in some other ’fic whose name escapes me at the moment, so is “Cloud Strife”

I actually went so far as to acquire a large list of modern US first and last names and filter out those which are dictionary words, in an effort to produce a generator of hybrid pony-human names – that is, names which would sound normal, if a bit nonsensical, for ponies, but be normal human names at the same time. I’m not exactly done with this generator, but one of my favorite results is “Melody Fryer.” :)

The Look command should not, generally, take time. It often makes for interface problems. But that would be very Pinkie, yeah…

Considering the telnet protocol, there are always microseconds involved…

What, we’re not proclaiming Pinkie as a Malbolge writer? Access to an oracle would make it substantially easier to program in, after all… :pinkiecrazy:

Malbolge is a deliberately obtuse language nobody actually used to produce something practical. MUSHCode was and remains a practically applied language that also happens to be crazy. I think this distinction is quite important here, Pinkie isn’t crazy for the sake of crazy, she’s crazy because it’s funny. :)

I ancipate you Thinking about Canon with Pinkie at some point, especially for her appearances in the wrong sides of mirrors, obvious teleportation and space-mangling effects, outspeeding Dashie, inventing a flying machine, ability to defy gravity (slides up slide), tails-mode-flight…

…the fanon Eldritch-Horror Pinkie may have been in mind when I suggested Malbolge.

But I meant that the look command should not consume game-time, though obviously that's not a thing that'll work as well in a MUSH as in 1P IF.

Login or register to comment