« first day (173 days earlier)      last day (2321 days later) » 

2:28 AM
@Dennis new rules:
semanage fcontext -a -s system_u -t bin_t '/usr/lib(64)?/swipl-.*/bin/x86_64-linux(/.*)?'
semanage fcontext -a -s system_u -t bin_t '/usr/lib(64)?/node_modules/coffee-script/bin(/.*)?'
semanage fcontext -a -s system_u -t bin_t '/usr/lib(64)?/golang/bin(/.*)?'
semanage fcontext -a -s system_u -t bin_t '/usr/lib(64)?/node_modules/babel-cli/bin(/.*)?'
semanage fcontext -a -s system_u -t bin_t '/usr/lib(64)?/pypy-5.4.0/bin(/.*)?'
do they look good?
 
You could use a wildcard for pypy as you did for swipl.
Looks good otherwise.
 
@Dennis oh, thank you for spotting this
and we are done. Let's see how the arena fares once 24 period is over, and if it did not slow down, we are good to go ;)
@Dennis however I feel that it's starting to slow down unfortunately
 
2:44 AM
:(
I wonder if it's just SSH or the entire system.
 
2:59 AM
Btw, cache is at capacity. With the current configuration and amount of traffic, it holds results that were accessed a 9 days and 8 hours ago.
 
@Dennis if you had any stats returned of which parts of call took what time, we could see problems more easily. if you measure how long a back end call takes, how long an arena call takes, how long the script call takes etc... but it has to be implemented at different levels so might not be straight forward
 
Definitely not straightforward.
time factor 999999999999999991999999999999999967
Running that every once in a while could measure CPU performance.
Would have to be run at idle times though.
Took 55.5 second right now. I'll measure again tomorrow.
 
3:17 AM
@Dennis new york sold out on vultr
at least for me
 
Eh. Do you need a droplet right now?
 
@Dennis Well I wanted to create a 10$ one and see if it helps with our problem. I created one on DO instead, it should suit you even better ;)
 
The performance issue? Hm, those extra 512 MiB of RAM certainly couldn't hurt.
It's a bit sad that it doesn't come with more CPU cores though.
 
@Dennis yes, but the thing is. If you have to keep restarting it every few days then you still have the problem
if it's once a month... I would be able to live with that
 
Periodic restarts are a good idea anyway, since it's the simplest way of patching the kernel. And as soon as there are two arenas, that can be done without affecting the service.
 
3:30 AM
@Dennis your backend code refers to arena.tryitonline.net
how do you get that to resolve to the private ip? did you modify the hosts file?
Also I'm getting insane amount of journal
@Dennis did you have to configure to limit it?
 
@AndrewSavinykh Yes, I set the private IP in /etc/hosts.
@AndrewSavinykh Is that on main or arena?
I set MaxRetentionSec=1week on arena. Didn't bother so far on main as the disk is fairly empty.
 
my arena has been running for 16 hours. It got 1GB of journal and then ran out of disk space
I trimmed it to 50MB about and hour ago and now it's back up to 250MB
so it's filling up pretty quickly - with the 15 minutes test cycle
 
Huh. With my one-week limit, I barely got 225 MiB.
 
on the offchance you have not seen this yet: digitalocean.com/community/tutorials/… @Dennis
 
3:49 AM
I did. Fedora isn't supported yet, unfortunately.
 
@Dennis just noticed that too
 
5:21 AM
The frontend just received a (very minor) update that will allow it to detect if it's outdated instead of spewing Unicode characters all over the page.
Ironically, I can't update the backend to match yet.
 
How hard is it to add a language to TIO?
 
If the interpreter runs on Fedora and I/O is non-interactive, you pretty much just have to ask and link me to it.
 
github.com/patrickroberts/bean ? I even wrote my own interpreter at patrickroberts.github.io/bean but the permalinks are atrociously large because it's a static file server and I can't connect it to a database afaik
 
Alright, I'll check it out asap.
 
@Dennis that's awesome, thank you
 
5:32 AM
How would I run it from the command line?
 
Eh.. I don't have a command-line utility yet. If that would make it easier I could write one in a few hours and commit it
 
Yeah, that would be much easier.
Preferably one that takes a filename as argument (code) and reads from STDIN (input), but that's not a requirement.
 
@Dennis can it exhaust stdin before actually executing?
 
That's up to you.
 
Okay, I'll let you know when the command line utility is published
 
5:48 AM
@Dennis should the stdin stream be interpreted as utf-8 or latin1, or something else?
 
The default for TIO is UTF-8.
 
Okay, got it
 
I've looked around on main and saw mostly unprintable character. Are all Bean programs like that?
 
Yeah, but if needed I can change the output encoding to that one with all printable 1 byte chars
Just, not entirely sure how to do that in node / js
 
Not required. A few languages take the code as xxd-style hexdumps.
 
5:53 AM
I can take a hexdump file as input to the command line utility. Should there be flags to specify raw file vs hexdump file as input?
 
Not necessarily for TIO, but probably.
For TIO, I can work with either as long as you use xxd-style.
Which is the only format the byte counter supports.
 
00000000: 6d6f 6475 6c65 2e65 7870 6f72 7473 203d module.exports =
00000010: 207b 0d0a 2020 6e6f 6e45 6e75 6d65 7261 {.. nonEnumera
00000020: 626c 6528 7661 6c75 6529 207b 0d0a 2020 ble(value) {..
^ Like that?
 
Yep.
 
 
2 hours later…
7:52 AM
@Dennis the command line utility is published, even added a man page ^^
 
Alright. I'll add it tomorrow. Currently 5 AM here...
 
Understandable :P
 
 
6 hours later…
2:08 PM
@Dennis Could you please pull Brachylog?
 
@Fatalize Done.
 
Thanks! (I think I'll stop saying thanks everytime, this is kind of polluting the chat room)
 
 
5 hours later…
6:49 PM
@Fatalize As you wish, but a thank you here and there doesn't add a lot of volume and it's nice to know that the author is aware of the pull.
9
 
7:00 PM
@PatrickRoberts I don't know Node/npm very well. I can't seem to install gulp. (TIO doesn't have a lot of RAM). Do I actually need it to run the interpreter?
 
No, the dependencies are not needed because the post-processed file is in dst/bean.min.js and that's what the command line utility depends on
 
What about babylon and in-publish? Those are not marked dev.
 
You can just rm -rf node_modules, seriously. It'll still work, I promise.
 
Heh, I installed them globally. Now I have to figure out if they were installed before...
 
npm uninstall -g babylon in-publish gulp ...
 
7:03 PM
But what if another interpreter needed them?
 
Is there another one that needs them?
 
I don't know...
 
can you check the creation date on the global folders for those dependencies? if they're today, then obviously there isn't
 
I'll deal with that later. Do you have a Hello World program?
 
00000000: 2623 8100 c8e5 ecec efa0 d7ef f2ec 64 &#............d
Assuming that's in hw.dump, the call should be echo "" | bean -d hw.dump
 
7:11 PM
I get an error.
undefined:1
var a="",_=[""],$=[];switch(switch(switch(switch(switch(switch(switch(switch(for(Reflect await switch(tryswitch(Reflect){}switch(tryswitch(Reflect){}switch(tryswitch(Reflect){}switch(tryswitch(Reflect){}class throw switch(Reflect){};throw trydo Reflectwhile(throw trytryencodeURIComponentswitch(tryfor(Uint8Array in switch(switch(switch(switch(switch(switch(switch(switch(for(encodeURIComponent await do throw tryconsole;while(switch(switch(switch(switch(switch(switch(case switch(for(Reflect await case tryswitch(Reflect){}switch(throw switch(setInterval){};){}:)trytryfor(setInterval
 
Nevermind, I goofed something up.
 
I was about to say, wtf is that xD
oh, you ran without -d?
 
No, I created a hexdump of the hexdump instead of reversing it...
 
ahahaha
 
7:13 PM
Seems to be working. I'll prepare the wrapper. In the mean time, do you have a program that prints Hello, World!? That would be useful for our test suites.
 
my command line utility can run hexdump files directly, if that makes things easier for you, and yes:
00000000: 2623 8100 c8e5 ecec efac a0d7 eff2 ece4  &#..............
00000010: 21                                       !
 
@PatrickRoberts Try it online!
 
Thank you very much for adding it. I'm still gonna keep my interpreter on github.io because it makes development much easier, but I can now use TIO for posting answer test suites :3
I'm going to edit patrickroberts.github.io/bean to output xxd-style hexdumps
 
You're welcome. :) Please let me know if I have to update it. A simple ping here will suffice.
 
7:33 PM
@AndrewSavinykh Are you around?
 
7:45 PM
I just tested it on a program I had written for a recent challenge that required input, seems to work just fine, so I don't think anything will need to be updated unless I ever modify the language
 
 
1 hour later…
8:54 PM
@Dennis hello
 
Hi!
 
we are about at square one. It does slow down and the 10$ versions slows down too
 
:(
 
@Dennis I'm wondering what I'm doing wrong because right now, yours is running faster than mine, that usually was not the case ;)
 
I don't have swap. Maybe that helps.
 
8:57 PM
@Dennis explain? you were saying earlier you have a huge swap
@Dennis during normal operation though my swap is not really used though, it's mostly seems to be used during install
 
I have a file, but I'm currently not using it. I only wanted a swap file to compile some stuff that wouldn't compile without it. If the user code uses enough memory to start swapping out, everything will slow down to a crawl. Better have the OOM reaper kill the entire mess.
 
@Dennis why would not you delete the swap file then? It's not that it's slow to create?
 
I seem to have deleted it in the meantime. I also pruned a bunch of stuff from my Trash folder.
 
@Dennis I will be offline most of the day today, is there anything you wanted me for before I go?
 
I was wondering if you can manually trigger your HW tests for my arena. I did a bunch of questionable things with npm, and I'd like to find out if I managed to break something in the process.
Btw, your last test run spotted a bug I introduced in Emojicode. :)
 
9:04 PM
@Dennis what did you do to Emojicode?
@Dennis I started a test run
 
After talking about ownership of /opt folders, I ran chown -R root: /opt, just in case. One of Emojicode's files had permission 750 for whatever reason, so it apparently was owned by runner before and couldn't get accessed anymore after the change.
 
@Dennis hm I'm not having this problem
 
As I said, I did something utterly weird when I set up Emojicode. Even with my Bash history, I can't quite figure out what.
 
1 MB version does not seem to run considerably faster on DO. I don't know I somehow leaning toward vultr. What did you say vultr does not have that you need?
 
@AndrewSavinykh Thanks! I'm happy to announce that, despite my best efforts, everything is still working.
@AndrewSavinykh Nothing, really. I just have years of experience with DO and am reasonably confident they won't screw up too badly at some point.
Does vultr offer automatic backups and private networking?
 
9:14 PM
@Dennis backups seem to be much more expensive (but you do not need backups, you can restore everything from git)
@Dennis so for bean, after you clone, do you need to compile, etc?
 
No, just download and add the wrapper. Which reminds me: I should push the wrapper.
Done.
Eh, that backup is expensive. I suppose building main won't take too long and backing up the arena doesn't really make sense anyway, but once I get server-side permalinks working, I'll need some sort of backup.
 
@Dennis oh right, server-side premalinks
@Dennis you won;t need to backup the whole image though, you'll end up with roll-your-own anyway
@Dennis not even npm install?
 
Nope, not even that. bean.js is pre-built.
@AndrewSavinykh But where/how? Just backing them up with the same provider isn't enough. I'm not saying DO or vultr would simply disappear some day without prior notice, but I had that happen with other providers before. And while downloading them to my home computer should we fast enough if I use diffs, uploading them in case of a catastrophic failure would take hours (or even days, once there are enough of them).
 
@Dennis you need to implement expiry ;)
okay bean is in
199
who will be lucky 200?
@Dennis so what are we gonna do with slow down problem? Any ideas?
@Dennis there is one thing to try but I really really don't want to do that- since it started happening only recently We can roll back to a week ago.... then if slowdown disappears we can start slowly adding things back. I really don't want to because it will take weeks to locate
@Fatalize I considered that too briefly, and decided against. There is really no downside. Dennis surely would like to know his efforts are appreciated, although he is too modest to say ;)
 
9:35 PM
I'm fairly certain I already had the problem a week ago. I just shrugged off the delayed logins and blamed my lousy internet connection.
For now, I'll run the test I mentioned yesterday once a day to figure out if it is actually the whole system that slows down or if only new SSH connections are affected.
 
@Dennis how do you know when to run it? (that is when idle)
 
Your last test suite took 5 minutes and 4 seconds, which is pretty good.
@AndrewSavinykh I keep a terminal with top open and restart the test if someone else uses the arena.
 
@Dennis f* yeah. That's what I've been saying: it now runs faster than even 1GB droplet
This is driving me mad
I have not added the ssh config you mentioned though
 
If SSH is the problem, that's a huge help. Still just a band-aid, but it at least mitigates the problem until we can figure out what causes it.
And even without problems, I'd expect 200 new SSH connections to add roughly 30 seconds of latency.
 
@Dennis do I need restart sshd for the config to be picked up?
or is it read every connection?
 
9:47 PM
Changes to sshd_config require restarting the service, but since this configuration is done on the client side, you don't have to restart anything.
Assuming I understood correctly and you meant ~apache/.ssh/config.
 
@Dennis yes
sorry
as you see I'm confused ;)
it does not seem to affect anything though
did you check that it has any effect yourself (like looking at the logs?) @Dennis
 
Btw I'm hoping to get my last re-write of the API done this weekend. This would allow you to run all 200 tests with a single request, so running the test suite directly from the arena would not be necessary anymore. It would also become a lot less expensive, as executing sandbox consumes quite a bit of CPU time.
@AndrewSavinykh I ran ssh with and without from the console, and it seemed to make a difference.
 
@Dennis last iike in you are going to retire? kidding...
@Dennis I create yesterday a script that uhm
 
Heh, no. I came up with a rather flexible format that should allow adding new features without having to change everything else.
 
So I set up a site meta.tryitonline. The script clones backed and copies /run into the the meta.tryitonline documet root while renaming it to what you tells it to, like run-arena17. Then it seds the content to connect to arena17.tryitonline.
This way it's much easier for me to have separate test suites point to different urls
because they now all go to meta.tryitonline/run-arenaID
so your change is very in-line with all of that
when you have two arena nodes I would be able to run suits against each separately this way
short-circuting load balancing
if that all makes sense
 
9:58 PM
Sure does. Going through the backend would mean that you cannot choose the arena.
 
so please make sure that you leave a script in the backend that I could use that still allows that. @Dennis
currenly it's /run, but I imagine after the change it will be something else
 
Once I implement load balancing, yes.
 
@Dennis cheers. With that I'll be going, if you have nothing else?
 
Or do you mean the API change I planned?
 
@Dennis it should not affect it I think. I will still be able to copy /run to connect to a particular arena it has in it
 
10:04 PM
But the format of the request will change a bit. I mean, how code, input, etc. are combined.
I plan to implement compiler flags, environment variables, etc., and those will require the new format.
 
@Dennis this means I'll have to update the test runner. okay
 
Only minor changes until you decide to take advantage of the new features and make a single request for all of them.
 
@Dennis I'd like to do that sooner rather than later. The only problem, does this mean that the request will need to wait for 5 minutes to return?
I don't think it will work well if this is the case
 
Pretty much, yes. It doesn't have to be one request. Batches of 10 or 20...
 
@Dennis uhm
you do not know how long it takes before you run it
shtripped test takes sometimes 58 seconds to run alone
so you do not know how to group them u[
would you still kill the lot after 60 seconds?
 
10:09 PM
Oh yes, 36 seconds for the last one.
The 60 second time limit is still in place. I could implement a secret token that waives it though.
 
@Dennis hm...
so it's not like 60 seconds per script when you have multiple
 
No, that seems to make DoS attacks a bit too easy.
But 60 seconds might indeed be a bit too low if multiple runs inside a single request are desired.
Why on Earth does Shtriped take that long to print Hello World though?
 
I have to conclude I do not think that this change will help with tests alot. For tests we might need a separate API but you might never get around implementing it. It needs to be asynchronous, private and without the timelimit
@Dennis because
let me find the answer for you, just a moment
 
Ah, it's a increment the variable one unit at a time until we reach 46758282851806618588827407 thing.
Someone should write an optimizing Shtriped interpreter...
 
proper hello world never finishes
it's just "Hel" that is running in the test suite
 
10:17 PM
Make it HW and it should finish in a couple of seconds. ;)
@AndrewSavinykh If I finish the API rewrite as quickly as I think it will, I'll start to work on that. With the JSON files you already prepared, that shouldn't take very long.
 
@Dennis cheers
 
10:36 PM
Should cut roughly a minute of the test suite. Will also prevent it from failing when the arena isn't idle.
 
Are we up to 200 langs yet?
 
199
 
Gaot++?
 
Definitely not Gaot++.
 
SQL?
I don't know anything about SQL, I just found it intresting it's not there.
 
10:40 PM
SQL would be a nice addition, but I didn't figure out how yet. Not knowing anything about SQL doesn't help.
 
@Dennis SqlCli might be what you need?
 
But that still requires connecting to a database and an SQL server, all of which would have to run inside the sandbox.
Or maybe not and I'm grossly misunderstanding how SQL works.
 
Do we know anyone in TNB who understands SQL?
 
Uh, I think SQLite may do what I want.
 
Yeah, looking at the description that sounds exactly right.
 
10:49 PM
And it's already installed on my server. Huh.
 
Cool
 
Alright, that was almost too easy. Try it online!
 
Now we need to find someone who golfs in SQL. Also, WOOHOO 200 LANGUAGES
 
11:06 PM
@Dennis I don't think you need to change anything, but I pointed main in package.json to dst/bean.min.js and moved babylon to devDependencies. I hope that clarifies any confusion you were having earlier about what was needed.
 
TIO Nexus now hosts exactly 200 programming languages. https://tio.run/nexus#get-started
5
 
@Dennis what's wrong with Gaot++?
 
It's a meme-based encoding of a simplistic stack-based language that nobody actually uses.
 
Oh God that looks like Downgoat's take on unary
 
No, that's Unicorn.
 
11:16 PM
@Dennis and how trumpscript is any better?
 
It isn't, but at least it's popular.
I put off adding TrumpScript for a long time, but I kept seeing requests to trumpscript.tryitonline.net in my server logs.
@aditsu I still haven't figured out how to add psql without compromising the setup (even if I figured out how to run the server in userland, I'd still have to find a safe way to permit socket connections), but TIO has SQLite now. Does that help in any way or are they too different?
 
11 Feb 23:20:27 UTC [165/199] shtriped - PASS (2 sec)
 
Much better. :)
@PatrickRoberts Alright, pulled the changes.
 
@Dennis hello world for sqlite please? select 'Hello, World !' did not do it
and commit if you please
I need to run again, I'll attend when/if I'm back
 
11:35 PM
It's missing the ;.
.print "Hello, World!" also works. Oddly enough, without the semicolon.
 
11:50 PM
@AndrewSavinykh Shoot, I forgot. Done now.
 

« first day (173 days earlier)      last day (2321 days later) »