« first day (330 days earlier)      last day (2164 days later) » 

00:36
@ConorO'Brien Pulled and currently syncing.
00:47
I've manage to harden the servers a bit. That will hopefully be enough until I finish rewriting the backend.
01:31
@Dennis Just out of curiosity have you gotten any donations since the HN post?
01:59
@quartata Yes, one 0.005 BTC donation (roughly $11).
Out of curiosity, what is the monthly cost of running TIO?
Since the weekend, $25 in servers.
@cairdcoinheringaahing Do you have a Hello World?
@Dennis This should work:
nvm message too long to send
The output of tio.run/##KypNqvz/…
(No golfing there at all, just increment accumulator until value is reached, output, reset to zero.
Btw, @cairdcoinheringaahing, your docs have something weird in them: "Commands operate on the active accumulator, which can be changed through the use of the <# command." But the description for <#: "XORs active with 1"
03:14
@Phoenix Thanks, but that printed 0, not Hello, World!.
._.
Well, I'm not sure why that didn't work.
I think the documentation is completely borked
In order to output the number 0, the code would need to contain a *\ according to the docs. Or enough spaces to get the charcode for ascii 0. Eitherway, ಠ_ಠ.
Docs are here, in case you want to try/figure out how I did it a stupid: github.com/SatansSon/Commentator/wiki
@Dennis I found a part of the source code which may explain your problem:
program = sys.argv[1]
args = eval_input(sys.argv[2:])
if program.endswith(".txt"):
    program = open(program).read()
The filename needs to end in .txt
Ewww.
This isn't the first language I've seen that does this. Why .txt for source code?
¯\_(ツ)_/¯
.¯\_(ツ)_/¯ wouldn't be much better.
2
03:31
BRB making a language called ¯\_(ツ)_/¯
Does my Hello World work if the filename ends in .txt?
No clue, can't check from my phone.
@Phoenix Be sure to make a filesystem that can handle that extension as well.
Eh, time to download Commentator.
@Dennis I've locally verified my Hello, World! program works, so you can use that.
Pavel@DESKTOP-CRBHFJN MINGW32 ~/Desktop/Commentator-master/Commentator-master
$ python interpreter.py code.txt
Hello, World!
Yep, that works.
@cairdcoinheringaahing tio.run/##S87PzU3NK0ksyS/6/…
@Phoenix Up now. Thanks!
03:50
\o/ I did a useful ^-^
I like how these #/*s line up even though those are all spaces and not newlines.
 
3 hours later…
06:35
@Dennis @Phoenix thanks for figuring that out for me and thanks for getting it on TIO. Yeah I need to fix that in the docs, and I didn't have a Hello world because that's a string and Commentator hates strings.
 
3 hours later…
09:13
@Dennis thanks
 
5 hours later…
14:35
@Dennis could you pull Commentator please?
14:55
@cairdcoinheringaahing Yeah, as you can see, I wrote a script to generate it for me.
15:18
@Phoenix I don't know what your talking about
13 hours ago, by Phoenix
The output of https://tio.run/##KypNqvz/P9rcSEfB0MAQRFjACEMg18RER8EYKGdhDhUwNDSBKzIAyhnH6qUmJm‌​copOQr1GTWcHGq2CnY2CioK6hrZcI5yvpa6lypeSn//wMA
Which is basically tio.run/##KypNqvz/…
16:10
@cairdcoinheringaahing Done.
@Dennis thanks
@Dennis what is the most number of languages by 1 user you've added to TIO?
I'm not sure. I guess I could grep languages.json for usernames.
ais, probably
He's made like several dozen langs.
Ah, grep would fail for that one, as the languages didn't come from GitHub...
16:29
@Dennis I'm looking through languages.json and why is 7's encoding "it's complicated"?
@cairdcoinheringaahing According to &'s esolang page, each command can be only 3 bits, making the byte-size calculation more complicated.
It also has two modes, I think.
(7's, not &'s)
@Dennis is it possible to run a TIO page of code by using en external script e.g. Python?
and one last question: can I get one of my languages removed if I wanted to?
16:54
@cairdcoinheringaahing Sure. As long as you can make HTTP requests, you can connect to the backend.
@cairdcoinheringaahing No, I prefer my permalinks to the permanent.
17:19
@Dennis is it possible to let chapel utilize its parallelism instead of everything being serial?
@saruftw I know next to nothing about the language. Any idea why everything is serial?
@saruftw, @Dennis: I don't know much about the TIO implementation of Chapel, but the typical implementation makes queries to the system to determine the number of cores available to determine the default parallelism.
@Brad Well, that explains it. TIO runs on multiple servers, but all of them have a single core.
I was just writing a program to check that: tio.run/##S85ILEjN@f@/vCizJDUnTyMjtShVL680NyC0WENT0/r/fwA
TIO uses this implementation (the official one, yes?), compiled like this and invoked like this. If there's anything I could do better, please let me know.
17:32
@Brad Debug output on that is weird.
mv: failed to set default file creation context to ‘unconfined_u:object_r:sandbox_file_t:s0’: Permission denied
That can safely be ignored. SELinux is weird sometimes.
@Dennis: I'm brand-new to TIO (was brought here by the Chapel port): Are there any policy restrictions against running multiple threads per core from a system utilization perspective? (e.g., we could potentially make the installation oversubscribe).
@Brad There are limits, but you should be able to run multiple threads.
OK, I'll see if we can come up with a way of configuring to use 2 or 4 by default.
Processes per request are limited to 64. Multiple threads are fine.
17:35
Also, since you mentioned multiple servers: Is it possible/legal to run a program across multiple servers? (with some minor mods to configuration, this is something we should be able to do quite easily).
@Brad I don't see how. AFAIK the servers don't know about each other, and they don't have internet access.
@Brad That's not possible at the moment. The reason TIO has multiple servers is to balance the load, and 4 single-core servers are cheaper than one 4-core server. They don't communicate with each other.
@Phoenix They do have internet access. It just isn't exposed to user-supplied code.
Well, yeah, obviously.
Have to send results back to the front end and all that.
OK, thanks, we'll focus on single-node runs for TIO for now.
For reference: Multi-node Chapel would require ssh from the launching node to the servers, the ability to set an environment variable specifying the server names/IP addresses, and UDP between the servers.
TIO code can't even use sockets, which for some reason are required by Wine, which is why there's no Batch as of this moment.
17:44
@Brad Right. Requests aren't allowed to SSH once they enter the sandbox, so that's going to be difficult.
@Phoenix That might actually be solvable by disconnecting the arena servers from the internet. I'm currently looking into that.
With the new setup, the servers are updated via rsync, so there's really no reason the arena servers have to connect to the internet.
Googles rsync
We could also potentially simulate multi-node executions by additional oversubscription of the server if it came to that. But I'm going to focus on the multi-threaded part first.
Do TIO servers have hyperthreading?
@Brad OK, let me know when I should do something on my part, such as re-building Chapel.
Updates will be automated soon, but they're still manual at this point.
@Brad Are you a developer of Chapel?
17:51
@Dennis: I think we ought to be able to do it without a rebuild by adding an environment variable to the compile + run script. I just have to verify that and figure out which variable to set.
@Phoenix No, cat /proc/cpuinfo shows only one core. Multiple virtual cores would show up separately.
@Phoenix: I am.
It seems like an intresting language, especially the parallelism seems cool, but I can't even figure out what the example code on the main page of the website is doing.
Well that sounds bad... :)
It essentially deals the integers 1..n out to all of the compute nodes on which the program is running in a cyclic manner, and each of them prints a little hello world message indicating its ID.
I don't do anything systems-related, so I probably wouldn't understand it even if it was written in a language I do know.
17:55
It's the standard tension: Don't want to put too much code (bogs down) but want to entice people to look deeper. Sounds like we're on the wrong side of that for your background.
Is config just a variable initializer, like JS's let?
Kinda a weird choice if that's what it is.
Well, I wouldn't use it for the things I like doing, which is small scripts and games and such, but I don't think that's the intended use case anyway.
@Phoenix Looks like you can override n with command-line arguments, hence config.
(guessing)
Ooh, that makes sense.
That's cool.
If that had support from an IDE, it could have a section for modifying config variables, allowing you to quickly test values for e.g. the allignment of some graphical element.
Or if you were using a library, you could make customizations without editing the library code.
18:02
@Phoe
@Phoenix: config adds command-line support for overriding a symbol's default initializer as specified in the code. So by default, the code will run with a problem size of 100, but running with --n=100000 would override that.
@saruftw That message cuts of rendering for me halfway through.
@Phoe gets displayed and that's it
I have to assume there's more to the message becasue @Phoe by itslef is not enough for a ping.
@Phoenix var is a standard way declaring a variable.
var a: int;
or var a: string;
^^ explicit type declaration

var a = "hello";
^^ automatic type allocation
@Dennis Can you update Röda?
Sure it is. @pho should be enough.
18:04
I did not know that.
@Den
._.
I kinda want to learn Chapel now.
@fergusq Currently syncing. Just a minute.
@Dennis thanks!
Chapel also supports config types and params (static / compile-time values) which can be specified on the compiler's command-line: essentially a c-pre-processor replacement. e.g., tio.run/…
Except that... something seems broken in the compiler flag settings. E.g., -st=real -sv=1.23 seems to generate a scripting-related error for me. :(
@fergusq All done.
@Brad That's not really c-preprocesser replacement so much as a version of typedef, no?
18:11
Well, it's a typedef that you can re-configure on each compile.
Ah... user error. I tried to put two compile-line flags in one box rather than two. Here's a reconfiguration run:
18:29
TBH that seems less useful.
When would you want to change the type of something like that?
@Phoenix: When do people use pre-processors? :) Switching between 32-bit and 64-bit representations of numeric values, writing a rank-independent algorithm that you can recompile as 1D, 2D or 3D between debug and production runs, etc.
Granted my four-line example is not particularly compelling... :)
18:49
@Dennis Sorry to bother you, but I came across something a bit odd that I can't explain. I was trying to make a bubbglegum program from my phone (don't ask), so I used TIO's bash to try this.
I tried to use this output as a bubblegum program, but the output is noise. I noticed that the output of each gzip differs in the fifth byte, but gzip -d seems to work.
@FryAmTheEggman Bubblegum uses raw DEFLATE, not the gzip format. That means you have to cut off the gzip header (ten bytes), and you can cut off the checksum at the end (8 bytes).
@FryAmTheEggman tio.run/…
Oh, thanks! The python wording lead me to think that wasn't the case, I guess I should've read the docs
I take it back, the manual for the python zlib module is pretty limp :P
zlib is yet another format.
19:04
gzip has options to get the raw deflate stream
@Phoenix It does? I can't find anything in man gzip.
I can't find it now either, but I swear I saw a SO post about it earlier
You need --no-name, I don't remember if that's it though.
No, that just strips the name header.
19:39
@Dennis: I just added a comment to your commit of the Chapel compile + run code with a suggestion for how to enable parallelism in the execution environment. I'm about to break for lunch but will check back later.
19:51
@Brad Is this how it should look with the environment variable?
20:04
Does it look different without it?
Yes, without the env variable, the output is sorted.
@Dennis: Yep, that looks like it had the intended effect! Sweet!
Here's a simpler example:
Nice! I'll commit that change to the repo now.
To make the case you were running more interesting (report locales other than #0), we'd need to re-build for multiple locales (compute nodes) and add some more environment variables to run them in an oversubscribed manner. Would you be interested in pursuing that?
@Brad How would I tell it to output all of the numbers sorted?
20:15
@Dennis: Related: When does the install step run? When you ask it to? Whenever someone requests a Chapel environment? (seems unlikely given the response times I'm seeing).
@Phoenix: If you change the forall loop to a for loop, it'll print them in serial order.
The reason they come out unsorted is that the forall loop says "do all iterations in parallel"
@Brad The install step would be run probably only when Dennis manually pulls the language from github.
Though if you look at it closely, you'll see that for the 4 threads we configured it to run on, it actually breaks the range into four serial chunks which are then merged in a nondeterministic order.
I did notice.
Of course, you could also compute the parallel, unsorted results and store them into an array where the array indexing would "re-sort" the results by iteration.
@Brad Languages are installed when the servers are rebuilt (TIO recently moved to another VPS provider) or when the language is updated (usually by request of the author).
20:20
Or, you could literally create a distinct task per iteration by changing the forall into a coforall ("concurrent forall") in which case you wouldn't see any serial chunking at all: tio.run/##S85ILEjN@f8/OT8tvygxJ0chUyEzT8FQT8/…
@Dennis: OK, thanks. So what we could do is this: (1) build both the comm=none (single-node) and comm=gasnet (multi-node) builds; (2) set some environment variables that would get us ready for either mode to run; (3) Then a user could opt into one or the other via a compiler flag when they compile.
Let me know if this would be of interest and I'll prototype and pass along additional notes (probably on GitHub).
@Brad Not sure I understand (3). Does such a compiler flag already exist, would it get added to Chapel, or would it be TIO-specific?
It already exists. One can set --comm=none or --comm=gasnet as a means of choosing between the two configurations built in step 1.
In step 2, we'd need to set some environment variables to say "spawn all the locales locally" (i.e., don't try to use ssh, udp, etc.)
20:38
Right. I'll probably understand this better once I see the concrete changes you propose. I'm definitely interested.
@Dennis: OK, I'll try to find some time to do the trial run and send you some good instructions. Thanks!
@Brad If you really wanted to, GitHub provides instructions for setting up your own instance of TIO in a docker container, so you could test things yourself.
There are subtle differences though. Not everything that works without SELinux will work with.
21:06
@Phoenix: Thanks for that note. I'm not enough of a Docker user for that to sound way attractive, and also don't think we'll have much trouble getting it going. Mostly I've just been distracted by "work" today. :)
21:43
@Dennis can you pull Add++ please?
@Dennis: I just posted proposed mods that I believe should enable multi-locale gasnet but just as I was verifying something locally I ran into a small surprise, so if you haven't started into them already, I'd hold off for now until I've had a chance to determine if this is a personal error or a real problem.
22:02
@Brad I haven't one anything yet and won't be able to for a few hours. I'll wait for your notice.
@Dennis Is there a way to make input to any language get piped through xxd? And if not, do you think that'd be a good idea?
I've seen people have trouble with null bytes and stuff before - and working around it in bash makes getting the byte count annoying
22:18
@FryAmTheEggman Yes, being able to switch between text and hex would be useful for a number of fields (code, input, output, maybe args). That is on my to-do list, but so are 100 other things.
So many ideas, so little time...
Next on the list are Hello World examples (loadable from the frontend) and WebSockets.
OK, just checking if it existed already - perhaps I'll write it myself :P
Hmm it might mess up adam's quine challenge because it'd require the state be saved - funny consequence
@Dennis: Something's definitely amiss (github.com/chapel-lang/chapel/issues/6749). I suspect it won't be resolved before tomorrow, so let's postpone the gasnet attempt for now and I'll ping you once we're on firmer ground.
OK.
22:39
@Dennis Would be nice to have a brief description of the language in addition to the hello world example.
Perhaps copied from Wikipedia/Esolangs
I feel like the link already does a good job of that?
23:18
Good point

« first day (330 days earlier)      last day (2164 days later) »