« first day (5 days earlier)      last day (118 days later) » 

08:25
!alive
@VoteToClose Yes, I'm alive.
!eval vitsy "'a'55*[DO1+]"
@VoteToClose abcdefghijklmnopqrstuvwxy
!eval vitsy "'a'd3*[DO1+]"
!eval vitsy "'a'd3*[DO1+]"
@VoteToClose abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„ †‡
08:28
Uhh.
!eval vitsy "'a'd2*[DO1+]"
@VoteToClose abcdefghijklmnopqrstuvwxyz
!eval vitsy "'a'd2*[DO1+]"
@VoteToClose {zyxwvutsrqponmlkjihgfedcba
@Data did you know it also responds when you simply edit a message?
@VoteToClose abcdefghijklmnopqrstuvwxyz
08:30
Yup.
I'm just trying out a few things.
Why are you guys using the quotes by the way?
So we can have spaces. :P
because a language name might have more than one word in it?
Because the code might have more than one word in it.
For example, spaces are really important in Pyth for arity definitions.
@VoteToClose But didn't youz guys use the special args parsing?
you could even do stuff like
08:34
!eval vitsy "aa*D3-rb2*+HZ"
@VoteToClose zyxwvutsrqponmlkjihgfedcba
!eval lang
someCode
moreCode
Bot restarted after crash.
Did I do that?
08:35
Yeah. :P
Anonymous
@overactor Sure, if newlines weren't significant in some languages
^
For example, Vitsy.
Anonymous
And Jelly
Anonymous
@VoteToClose I saw that
@Mego I did that for my python_bot and it read the newlines fine
08:35
!eval vitsy "1mrZ\n'methodology'"
@VoteToClose methodology
@overactor You have a python bot?
>.> Isn't that on the to-do checklist?
Anonymous
@overactor There's a difference between Python, where newlines are (mostly) insignificant beyond being whitespace, and Jelly, where they separate chains. Or Seriously, where a newline is a command.
It requires an api key from sphere-engine.com though
@Mego A leading newline would be a problem for seriously, I suppose.
Anonymous
08:39
@overactor A serious problem, if you will
Anonymous
Sphere Engine is ideone's proprietary API, which costs $$$
!eval vitsy "\n'This code will never be executed.'rZ"
@VoteToClose <no output>
Anonymous
We're aiming to do this with no money spent
08:39
^
By breaking ideone into a backend.
c:
@Mego yeah, I made it knowing another bot had obtained a charity license from ideone
they don't do that anymore though
@VoteToClose so I read, it's quite clever
Anonymous
I would really love to figure out how ideone's POST requests are encoded so that we could hugely simplify the process
Probably encrypted. :c
Anonymous
It's not encrypted
Anonymous
08:43
Unless it's something like a one-time pad which seems like overkill
Anonymous
I mean, the code is in plaintext in the POST data
Anonymous
It's just a matter of figuring out what the rest of the data means
>.>
Hooray for the timeline tool! \o/
08:55
Regarding the formatting, you could make multiline messages compulsory
And fixed width font
Bot terminating...
Bot started.
always writing \n for newlines seems like a nuissance though
Anonymous
@Mego that's a good point
Anonymous
09:01
I wrapped the arg parser in a try/except block, so if parsing goes wrong it won't crash the bot
Anonymous
!eval lang
someCode
moreCode
@Mego Argument parsing failed.
Anonymous
\o/
cool cool
Anonymous
Granted, the bot is highly resilient (sometimes excessively so), so if it crashes, it usually just reboots
09:10
@Mego excessively resilient?
That's a complaint I've never heard
Anonymous
For the longest time, the stop command was bugged
Anonymous
And it would come back after dying
Oh, I've seen the stop command being bugged
was that solved?
Anonymous
Yep
Was that pushed to SE-Chatbot?
Anonymous
09:17
Not that I'm aware of
@ProgramFOX ^
Anonymous
It's a very hacky fix, and I'm not sure if you guys want it :)
It's something
can you link to the commit?
Anonymous
We also modified botbuiltins/admin.py to move most of the stop command code out
Anonymous
09:21
Now it's just:
Anonymous
def command_stop(cmd, bot, args, msg, event):
    if msg is not None:
        msg.reply("Bot terminating...")
        time.sleep(2)
    bot.running = False
    bot.die()
That makes sense, I suppose stopping is quite a vital function
Anonymous
I wanna say there was one other change I made, but I can't seem to find it
Anonymous
Ahh, yes, in browser.py, I modified RoomSocketWatcher by adding a self.killed boolean property, and making the runner method ignore exceptions if it's true, to prevent unnecessary error logs from the socket closing.
Editing whole bunch of the botbuiltins.utils.
Commented out half the commands.
Anonymous
09:28
I saw that you did that earlier
Anonymous
That was to disable the spammy commands, right?
@Mego That's ChatExchange, right?
Anonymous
@overactor Yeah
@Mego Yup.
!listcommands
Commands:
module, stop, disable, enable, ban, unban, delete, alive, utc, listcommands, help, eval, evaldebug
09:37
!eval marbelous "{{eval vitsy "'64'rZ"}}"
@overactor d
That's cool
o-o I didn't know we could do that.
Also, thanks for using my language. :D
I'm not proficient in many eslangs and I saw you using it :?
And yeah, that's possible
!eval marbelous "{{eval vitsy "'64'{{eval vitsy "'rZ'rZ"}}"}}"
@overactor d
09:48
Might come in useful one day...
Anonymous
How does that nested-eval thing work?
It just starts at the inner-most {{ }}-pair and does a replace and then re-evaluates
you can do it with any command
Anonymous
Ahh, I didn't know that subcommands were possible
Anonymous
I scanned over that, but I didn't quite grasp what it did from the brief scan
Anonymous
09:57
Glad I didn't disable it
I suppose it's a bit dense
If you enable cat and read, you can do some more cool stuff with it
!eval lang"{{read <post_id>}}"
@overactor Syntax: !eval <language name> "<code>" "[input]" "[args1]" "[args2]"...: Error: not enough arguments: got ['lang"Command']
Anonymous
Wait what
Anonymous
!stop
10:00
@Mego Bot terminating...
no wait
message id
it's in chat
Anonymous
Oh
Anonymous
Well I went ahead and re-enabled read for now
Anonymous
If trolls abuse it, we can just ban them ;P
@Mego exactly, it's not all that abusive anyway, it just repeats something that has already been said
'Hello, World!'rZ
!eval vitsy "{{read 27335402}}"
10:02
Bot started.
Oh, it's not on :)
Anonymous
!read 27335399
!eval vitsy "{{read 27335402}}"
@Mego exactly, it's not all that abusive anyway, it just repeats something that has already been said
2
@overactor Hello, World!
Anonymous
!eval seriously "{{read 27335402}}"
10:03
@Mego <no output>
Anonymous
(I have no idea what it will- oh ok)
Anonymous
Oh right W is for while
Anonymous
Infinite while loop yay
0A
21
64
6C
72
6F
77
20
2C
6F
6C
6C
65
48
!eval marbelous "{{read 27335468}}"
Bot restarted after crash.
10:05
whoops
Anonymous
0A\n21\n64\n6C\n72\n6F\n77\n20\n2C\n6F\n6C\n6C\n65\n48
Anonymous
!eval marbelous "{{read 27335492}}"
@Mego Hello, world!
real newlines don't work?
at all?
Anonymous
Apparently not
Anonymous
10:07
Odd
That is odd
Anonymous
Probably has to do with how ast.literal_eval parses stuff
Anonymous
Oh wait, it's because re.dotall isn't enabled
Anonymous
!stop
@Mego Bot terminating...
10:08
aha
I see
Bot started.
Anonymous
!eval marbelous "{{read 27335468}}"
Bot restarted after crash.
Anonymous
!eval marbelous """{{read 27335468}}"""
Bot restarted after crash.
Anonymous
10:11
Hmm
Anonymous
!eval marbelous "'''{{read 27335468}}'''"
Bot restarted after crash.
hmm
strange
Bot started.
Anonymous
!eval marbelous "{{read 27335468}}"
10:13
Traceback (most recent call last):
File "/home/ubuntu/workspace/INTERPRETERS/marbelous.py-master/marbelous/marbelous.py", line 573, in <module>
thisboard.parse(parse_lines)
File "/home/ubuntu/workspace/INTERPRETERS/marbelous.py-master/marbelous/marbelous.py", line 180, in parse
if row[i][0] == "#":
IndexError: string index out of range
Anonymous
It doesn't like fixed-font
Anonymous
0A
21
64
6C
72
6F
77
20
2C
6F
6C
6C
65
48
Anonymous
!eval marbelous "{{read 27335574}}"
@Mego Hello, world!
Anonymous
10:14
There, I made it parse strings using triple quotes
!eval marbelous "
0A
21
64
6C
72
6F
77
20
2C
6F
6C
6C
65
48"
@overactor Hello, world!
Anonymous
That will probably break something else but I don't care
:27335588 Hello, world!
Ooh, the whole thing in fixed font also works
Anonymous
10:16
Neat
Anonymous
10:39
Umm this is bad
Anonymous
!eval seriously "1"
@Mego <no output>
Anonymous
!evaldebug seriously "1"
@Mego /opt/tryitonline/bin/seriously: /opt/Seriously/seriously.py: /usr/bin/python^M: bad interpreter: No such file or directory
Anonymous
TIO is borked
Anonymous
10:40
!eval pyth "T"
@Mego 10
Anonymous
Oh wait that's not TIO
Anonymous
!eval brainfuck "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++."
@Mego A
Anonymous
!eval Jelly "1"
10:43
@Mego 1
Anonymous
Oh wait that's python3
Anonymous
What other TIO langs are python 2?
Bot started.
Anonymous
!eval seriously "12"
Bot restarted after crash.
Bot restarted after crash.
Bot started.
Anonymous
10:54
!eval seriously "1"
Traceback (most recent call last):
File "/home/ubuntu/workspace/INTERPRETERS/Seriously/seriously.py", line 5, in <module>
import commands
File "/home/ubuntu/workspace/INTERPRETERS/Seriously/commands.py", line 11, in <module>
import pyshoco
ImportError: No module named pyshoco
Anonymous
!eval seriously "H"
>>>

[]
Bot started.
Anonymous
!eval seriously "H"
@Data huh?
Anonymous
10:57
I broke it
Anonymous
!stop
Anonymous
!eval seriously "H"
Bot started.

Godammit Mego.
Anonymous
It's not my fault
Anonymous
11:02
I'm trying to monkeypatch seriously because it broke on TIO
Oh.
Ohhhhh.
Bot started.
Anonymous
!eval seriously "H"
@Mego Hello, World!
Anonymous
!eval seriously "2⌐"
11:05
@Mego 1.55740772465j
Anonymous
Uhh
Bot started.
Anonymous
Alright this should work now
Anonymous
!eval seriously "2⌐"
11:09
@Mego 4
Anonymous
\o/
Anonymous
It can unicode
Anonymous
My work here is done
Hooray!
12:01
!eval vitsy "'{{eval seriously "H"}}'Z"
@overactor <no output>
I might not know how vitsy works :)
Anonymous
room topic changed to PPCG Code Snippet Chat Bot: Home of Data (no tags)
Anonymous
12:37
!eval seriously ",;Σ" "2,3,4"
@Mego -26
@Mego -11
Is the second bit input?
9
[2, 3, 4]
Anonymous
!eval seriously ",;Σ@"
@Mego <no output>
:27337253 <no output>
Anonymous
12:39
...
Anonymous
!eval seriously ",;l@Σ"
@Mego <no output>
Anonymous
What on earth is going on
Anonymous
What did quintopia and/or I break
Anonymous
Oh duh
Anonymous
12:41
!eval seriously ",;Σ@l+1-" "2,3,4"
3
9
@Mego 12
@Mego -11
Anonymous
Yeah that's a bug
Anonymous
Oh wait no I'm just dumb
Anonymous
!eval seriously ",;l@Σ-u" "2,3,4"
@Mego -6
@Mego -5
@Mego 7
Anonymous
12:42
Yahtzee
13:56
!alive
@VoteToClose Yes, I'm alive.
!eval vitsy "{{eval vitsy "'rd3*Z"}}"
@VoteToClose 'rd3*Z
!listcommands
Commands:
module, stop, disable, enable, ban, unban, delete, alive, utc, listcommands, help, read, eval, evaldebug
13:59
!eval vitsy "{{read 27338805}}"
@VoteToClose 'rd3*Z
!evaldebug vitsy "{{{{read 27338834}}}}"
@VoteToClose <no output>
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.ArrayList.elementData(ArrayList.java:418)
at java.util.ArrayList.get(ArrayList.java:431)
at com.VTC.vitsy.Vitsy.index(Vitsy.java:735)
at com.VTC.vitsy.Vitsy.top(Vitsy.java:732)
at com.VTC.vitsy.Vitsy.opHandle(Vitsy.java:377)
at com.VTC.vitsy.Vitsy.main(Vitsy.java:88)
!evaldebug vitsy "{{ {{read 27338834}} }}"
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.ArrayList.elementData(ArrayList.java:418)
at java.util.ArrayList.get(ArrayList.java:431)
at com.VTC.vitsy.Vitsy.index(Vitsy.java:735)
at com.VTC.vitsy.Vitsy.top(Vitsy.java:732)
at com.VTC.vitsy.Vitsy.opHandle(Vitsy.java:377)
at com.VTC.vitsy.Vitsy.main(Vitsy.java:88)
14:01
!eval vitsy "{{read 27338834}}"
@VoteToClose <no output>
!eval vitsy "{{read 27338805}}"
@VoteToClose 'rd3*Z
!read 27338805
@VoteToClose 'rd3*Z
14:02
!eval vitsy "{{{{eval vitsy "'eval vitsy'rZ"}} "'test'rZ"}}"
@overactor 'rd3*Z
@overactor <no output>
You missed a quote.
'rd3*Z is the standard Vitsy quine.
Hey, @GamrCorps
!eval vitsy "{{read 27339035}}"
@VoteToClose 'rd3*Z
:27339033 'rd3*Z
14:08
@GamrCorps hi
!eval vitsy "'l1+\Drd3*Z"
@VoteToClose 'l1+\Drd3*ZZZZZZZZZZZZ
!eval vitsy "'l1+\Drd3*ZZZZZZZZZZZZ"
@VoteToClose 'l1+\Drd3*ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
I found a faster way to do the double length quine.
14:11
Could this bot with all its commands be considered a programming language?
Hmm.
Yes.
It's capable of adding two inputs.
It's "input" would be read, I suppose.
!eval vitsy "{{eval vitsy "{{eval vitsy "{{eval vitsy "'rd3*Z"}}}}}}"
@VoteToClose <no output>
do many languages not assume the top of the stack to be filled with input?
14:13
!eval vitsy "{{eval vitsy "{{eval vitsy "{{eval vitsy "'rd3*Z"}}"}}"}}"
@overactor 'rd3*Z
Oh, yeah. :P
So it's about a billion language interpreters combined.
I like it.
It's fricken overpowered. xD
quite a bit of overhead though
not java level
you could set up an alias for eval
so that
14:15
public static void eval {
System.out.println("{{eval vitsy "'rd3*Z"}}");
}
!! lang "code"
works
@overactor Command not found.
you could also argue that the prefix can be left out of the byte count I bet
Standard run execution.
This is the command line.
14:17
if there were shorthands for languages, you could do
!! v "'rd3*Z"
@overactor Command not found.
We'd have to count the language name as a flag.
@VoteToClose Or just have it as a command !!v or !!j, etc
@GamrCorps That's a lot of setup, but we could.
Is there a synonym module thing?
@VoteToClose I seem to recall special_args_parsing always gets called
scroll a bit to the right
14:21
Yeah, I've edited one of those files before.
you can add a list of strings as aliases
Hmm.
That's a brilliant idea.
Lemme try something.
maybe a better idea:
add a special args parsing function
@VoteToClose Bot terminating...
14:24
if cmd.startswith("!v "):
    vitsy_stuff
elif cmd.startswith("!s "):
    seriously stuff
...
You can completely bypass the "command has to start with the command name in order for the command to be called" rule
or just do a find/replace thing with a map: [("!v", "!eval vitsy"),("!s","!eval seriously")...]
if I remember correctly
if cmd.startswith("!v "):
    return ["vitsy", args[3:]]
Bot started.
Nah. I'm just gonna let it go for now.
!listcommands
14:29
Commands:
module, stop, disable, enable, ban, unban, delete, alive, utc, listcommands, help, read, eval, evaldebug
I'll work on it after I get out of school. :P
!! marbelous "64"
@overactor Command not found.
Anonymous
I'll work on it too, once I finish eating breakfast. I like the idea of using Data as a programming language. The ability to mix-and-match languages will be super powerful.
14:38
@Mego might be worth a meta post though
I'll post the meta question?
15:02
0
Q: We Built a Programming Language... right?

VoteToCloseRecently, Mego, quartata, CᴏɴᴏʀO'Bʀɪᴇɴ and I (VoteToClose) (building upon the work of ProgramFOX et al.) built a chat bot named Data that can run code for several different esoteric languages (and maybe, in the future, other languages). Now, after a conversation with overactor, one of the devs fo...

15:17
A possible problem could be that it runs remotely
16:03
@Mego I've never had a problem with >>stop myself, but if you have then I definitely welcome any fixing pull request :)
 
6 hours later…
Anonymous
21:53
@ProgramFOX I'm still not entirely sure what was going wrong to cause the issues I was seeing (I suspect threads shutting down in an unsafe order), but it works now, so woohoo.
22:09
@Mego The suggestion in your comment would imply separation from TIO. Should we stop TIO interactions and move to having every language interpreter on TIO on the host for Data?
Anonymous
@VoteToClose For the purposes of using Data as a chatbot to quicky test code, TIO is ideal, because it vastly simplifies running a large number of languages. For the purpose of using Data as a programming language, we can release a self-contained version as the interpreter. The Data bot running here would be seen as an online interpreter - equivalent to the local interpreter, but not the "main" implementation.
22:23
@Mego But we'll have to distribute the interpreters as well.
Anonymous
22:39
@VoteToClose Nah, just include a script that clones the relevant repos
23:03
@Mego Oh, yeah. So all we need is an offline interpreter to pass to EvalModule.py then?

« first day (5 days earlier)      last day (118 days later) »