« first day (183 days earlier)      last day (2311 days later) » 

@AndrewSavinykh Thanks
@WheatWizard It's a bit different from what is described on esolang
@AndrewSavinykh yeah I was noticing so strange behavior
is there anything in particular?
@WheatWizard comapre the esolang page and this: web.archive.org/web/20060621185740/http://www4.ncsu.edu/…
There are a few discrepancies.
I believe that the latter matches the implementation
@WheatWizard, FYI, I've been putting orphaned languages that TIO has here: github.com/TryItOnline For Glypho it's github.com/TryItOnline/glypho
@AndrewSavinykh Thats a good idea. Thanks for doing that.
 
3 hours later…
03:22
@Dennis could you pull chain? I've added a -u or --utf8 option to run in utf8.
also, is it possible to add K to TIO?
@ConorO'Brien isn't it already on TIO?
@AndrewSavinykh sure enough. I tried /nexus/k haha oops
or is it a different K?
It's the same I think
03:29
ya. I was confused because there's no tio.run/nexus/k and I usually use languages by typing it in the url bar :P
04:03
@Adám there seems to be a new version of APL dyalog for linux, do you think TIO needs to update? cc:@Dennis
04:32
So, I wrote brand new setup notes for TIO here github.com/TryItOnline/TioSetup If anyone wants to proof read and correct my English, they are most welcome. The/a articles do not exists in my native language, so I often skip them where they are due, just because I do not know any better.
what is your native language, out of curiosity?
oh, fun! I want to learn russian sometime
under Domain registration and certificates, did you mean "within" instead of "withing"?
@ConorO'Brien you can hit me with any question if you get around to doing this ;)
04:45
@ConorO'Brien certainly!
@ConorO'Brien Done. I've changed the wrapper and everything seems to be working.
@AndrewSavinykh It's a patch, so need is probably not the right word, but I'll update it tomorrow just in case.
05:09
@Dennis thanks!
05:54
@Dennis Can you please Pull RProgN 2? I decided to actually work on it again.
@Dennis What's the current spec of the arena server and what's the daily avg requests/s?
@ATaco Done.
Did you pull 1 or 2..?
@mınxomaτ It's a $5 DO droplet, so one E5-2650L core and 512 MiB of RAM. There were 30034 requests last week, so 4290 per day.
@ATaco 2
06:10
Just took a moment to update, but now it's erroring. Gotta do some bugfixing it seems.
Oh, I see that error.
@Dennis So with 4290 what's is the resource usage like? I suspect the CPU usage is at least "high".
(Don't make an empty arg, it crashes things)
(I also forgot to actually build it)
Can you do another pull please?
@mınxomaτ Fairly low, actually. It spikes every now and then, but the average is about 0.30.
Actually, I counted the number of requests to the backend. Forgot about caching...
No that's fine. I was just interested in the actual requests
@ATaco Great, now everything's broken. :P
06:18
Well that was fast
What kind of everything's broken?
21 Feb 06:17:04 UTC rprogn-2 - FAIL (2 sec)
21 Feb 06:17:04 UTC Expected: Hello, World!
21 Feb 06:17:04 UTC Got: Could not find or access the file "cfg.txt"
cfg.txt (No such file or directory)
21 Feb 06:17:04 UTC Debug Exception in thread "main" java.lang.NullPointerException
        at config.Config.<init>(Config.java:36)
        at main.Main.main(Main.java:32)
Well, that's interesting.
What code are you running?
Hold on, Gotta switch to the mobile, Wont be able to make changes from there.
@ATaco "Hello, World!"
Are you expecting with the newline?
You didn't disable cache, did you?
06:24
Nope
Try again.
That's uh, something alright
Oh gosh
I compiled the wrong project
Well, I'll be on my laptop in 2 and ill recompile with the correct project
Alright.
06:41
@Dennis Done, pull attempt no.3
In an unsurprising turn of events, compiling the correct project made everything better. :P
Yay
I'll be going to bed now. Let me know if there are more updates and I'll pull them when I get up.
Alright
07:00
@AndrewSavinykh I don't think that's necessary. There are some performance enhancements, and some fixes that do not relate to TIO (they deal with GUIs). The only interesting fix is Nonce error in {⊂⍵}⌸x if x is floating point. Don't expect any major changes until the release of 16.0 this summer, which TIO should definitely upgrade to ASAP.
07:49
@Adám this summer is about to end ;)
@AndrewSavinykh Oh, I'm sorry, I forgot you're upside down.
 
2 hours later…
09:24
@AndrewSavinykh Reading through the config scripts for the setup: I can't help but think that a (or two) simple docker containers would be much, much easier than a patchwork of scripts. Especially considering you need to edit any system change into the setup scripts manually. Or am I missing something? I'm just talking about the setup here. With a container it would simply boil down to pulling the container instead of running through the whole setup.
09:43
@mınxomaτ Can you explain this better please? You still need to install stuff inside the container, no?
You use the existing scripts to build a docker image. If a new server is to be deployed, they don't have to run any setup apart from running the built image.
@mınxomaτ Let me see if I understand this correctly. We are building new server very infrequently. On the other hand we pulling new version of languages regular. These language updates require an image rebuild every time anyway (happens a few times a week), building a new server only is required once in a while. To me it feels like it's more work in the net, not less.
The development is handled inside the dockerfile, which contains the difference between the base image and the final image. Suppose now someone wants to setup TIO, they have to docker run the final image, but they don't have to run the actual setup procedure. Adding to the simpler workflow, this also mitigates all the memory issues mentioned, since after running a setup once, it never has to be run again. Think of it as a system-wide git repo if you will.
@mınxomaτ the same patchwork of scripts then will migrate to docker?
I understand points about using the image vs running the scripts
I'm just clarifying the rest
Only once. Because if you have the new image, let's call it status quo, the scripts are done and never needed again. Then you stack new iterations of development on the previous image. Each dockerfile then only contains what improvements your have done. Changes to the filesystem are tracked as with git. This way, as with git, you can restore a previous complete server config at once, without running a setup.
It still makes sense to track the dockerfile separately in git, of course.
09:56
@mınxomaτ Sorry, I'm not sure I understand. I though that you build an image from a dockerfile, and the dockerfile then would have to contain all the scripts in there. If it does not, there is nothing to build the image from
And if it's not the dockerfile which is the source of truth but an image, then where do I store the image? I'm guessing they are massive.
@AndrewSavinykh An example evolution would be this: Fedora image -> big dockerfile with all the current scripts -> final TIO image. After that the scripts can be discarded. If something is modified, only the modifications are what's in the dockerfile, so the future becomes: TIO image -> dockerfile with current improvements -> TIO image 2.0.
@AndrewSavinykh At the docker hub hub.docker.com
Basically a GitHub for docker images.
Docker is not virtualization. It only separates the parts of the OS accessed by your application in virtual contexts. A docker image doesn't contain the whole operating system :)
@mınxomaτ Okay, let's go through the following scenario, to see if it suites. Let's assume I have a production server and a development server (we do not yet, but we are discussing it). Let's assume I update a language on the development server and want to push changes to production. Will docker flow support this, or does this have to be a separate flow? My gut feeling it has to be separate because refreshing a docker image probably cannot be done incrementally
@AndrewSavinykh That's the whole point of docker.
Make changes, run docker build on dev and docker pull on any prod servers.
@mınxomaτ also, do you know if docker and SeLinux are compatible with each other? Dennis relying heavily on SeLinux, and I do not know of containerization can get in the way of it
10:05
@mınxomaτ how does this work though? docker build will result in an image, how docker pull knows what parts of the image is missing?
@mınxomaτ is there any VPS provider support required for docker to work?
@AndrewSavinykh It checks the update on docker hub. This is bigger than a simple diff of course, but it's only meant for server configuration. For tiny non-server related changes you might mount a symlink to a git repo outside of the container.
@AndrewSavinykh AFAIK KVM-virtualized VPSs support Docker.
@mınxomaτ how are differences handled? For example different installation will have different domain names, different certificates, different private keys, etc?
DO e.g. has a native method for deploying docker images, so you don't even have to run a prod server, the prod server is built right from docker hub. On updates simply rebuild: digitalocean.com/products/one-click-apps/docker
@mınxomaτ can you give me an example of server vs non-server, so I understand what you mean?
@mınxomaτ that's docker on ubuntu, unfortunately
@AndrewSavinykh Anything non-sensitive lives in the container. Upon deployment you need to run certbot once.
10:14
right so each rebuild, I'll need to update certificates, update httpd configurations, update private key for arena...
You don't need to update http configs.
@mınxomaτ they are domain dependant
So? You can keep the FQDNs in the config. They won't be any use without the right server :)
And you can use IP-based security instead of keys.
All this is just an idea to keep in mind in the future. I don't think the development is stable enough (much less the actual server hosting or config) to warrant a major change.
@mınxomaτ It's an interesting idea, thank you, I'll certainly keep it in mind, docker is something that I'd be quite interested having an experience with. But I'm not entirely convinced on the benefits for TIO. If you'd like you can try and sell this idea to @Dennis when he is awake tomorrow (today), and/or make a proof of concept that we all could play with. Even without that - thank you for the contribution ;)
I think Dennis has enough to test and play with for at least a month's worth :D
10:22
We are currently talking about a "build server" but we do not know yet how we are going to implement it. Here is the problem we are trying to solve: very soon we will have 2 load balanced arena and pulling a language will become a bigger nuisance. We need a way to pull and test once, and then when happy deploy on both arenas.
If you have any thoughts about this, I'll be happy to hear ;)
That's why, even if SW looks good from a price point, you should move everything to linode. One arena server should have a small web server installed on it, instead of using SSH (an unscalabe idea in the first place) to answer requests. Now all the backend needs to do is have a text file with the IP addresses for balancing.

You have one "mother" arena server where you push your changes to. If you are happy, you simple go to the other arena server(s), delete their disk and clone the one from the "mother". There's nothing on the arena servers that should be unique. No domains, keys or anythi
The arena nodes store a secret (a hash or something) that only them and the backend node knows about (to prevent rogue requests from other servers on the internet), but that's of course the same for every arena node.
Linode also has a dumbed-down clone of docker where you can mix HDD images and setup scripts to deploy servers. Storing such images is free.
@mınxomaτ Can you comment why the SSH idea is unscaleable?
You need to exchange keys.
@mınxomaτ is not TLS (https) exchanging keys all the time?
10:37
You don't need TLS for the local networking. You can interface with the arena linode via it's private LAN IP and firewall block all other access. (which you also only need to configure once).
arenas currently do not have anything secret. at all. they store a public key for backend, but that's, well, public
@AndrewSavinykh That's backwards.
If you have e.g. two arenas and need another, clone any one of them. Now you just add the private IP to the list on the backend. You never even need to access the (new) arena.
@mınxomaτ sorry my point was that https is quite scaleable from what I see, so why ssh is not scalable in comparison?
I never said anything about HTTPS?
@mınxomaτ that's how SSH works. you have private key on the client and public key on the server. If it's backwards then SSH is backwards.
10:41
@AndrewSavinykh It's backwards because you treat the arena as the server. It isn't. The server balances load across compute nodes (arenas), the public key should be on the arena of anything.
@mınxomaτ you did not. You said that SSH idea is not scalable because of the key exchange. I'm saying that HTTPS does the key excahnge and remains scaleable, so I would like to know what makes SSH unscalable
HTTPS is not even applicable to my point.
SSH makes no sense if you have a public node that does load balancing over private (arena) nodes. You already have a secure channel by default. Just transfer over HTTP. There is nothing you have to do on the arena nodes other than creating and deleting them.
@mınxomaτ that's what I said. that the public key is on the arena. Did you read it differently?
I think we are getting stuck on this point.
@mınxomaτ agreed
10:44
My point is: With my recommendation you never, ever have to exchange any keys, secrets or certs between the arena and the balancer. You never have to setup domains or anything unique for arena nodes. You push changes to one, and scale to multiple if you need to. Simply add or remove the LAN IP from the load balancer's list.
Let me make a diagram :)
@mınxomaτ that makes sense. Dennis needs to work out how to install a proper kernel on linode. May be he has already.
We figured that out already. Search the transscript for "fast link"
@mınxomaτ did you end up giving him the fastlink?
We are not even close to that. Update in ~1 week.
So he said that he needs a vanilla Fedora 25 Server installation. Can we achieve that somehow?
@mınxomaτ that is, how can I spawn a clean Fedora 25 Server with standard kernel?
10:55
@AndrewSavinykh Yes. The wheels are already in motion. Dennis is currently testing OVH's Fedora image. I'm meanwhile preparing the same image in KVM. But this will take some time. Expect an update in ca. one week.
@AndrewSavinykh By using full disk virtualization and bringing your own KVM disk, or by recompiling the kernel. Both things I'll test soon on linode.
@mınxomaτ Oh I see, so you are working on it. I misunderstood you when you first said 1 week, I thought you were waiting on Dennis, and was wondering if I could do some testing in the meanwhile
11:12
Here's a setup with arena scaling in mind.
11:26
@AndrewSavinykh Sorry, I meant Dennis is testing CentOS on OVH, not Fedora. I need sleep >.>
12:22
@Dennis Did you ever give AppArmor a try before SElinux or does TIO require anything that AA can't do? Genuinely curious.
12:43
@Dennis I just tested this and could indeed revert a linode kernel back to distro kernel. So we don't have to create an image, you can use SEL out of the box.
 
4 hours later…
16:37
@Dennis can you add valgrind (for Bash)?
16:47
@mınxomaτ I knew nothing about SELinux or AppArmor, so I picked one at random. SELinux seems to work well and is pretty easy, so I stuck with it.
@mınxomaτ Nice. The only part of that tutorial that bugs me is that they say you have to repeat the process every time you update the kernel. I'm not sure why that would be required.
@Pavel Valgrind requires a lot of permissions sandboxed processes do not have.
@mınxomaτ Keys are exchanges only once per boot. The main server maintains a single persistent connection to each arena.
 
1 hour later…
17:59
@Dennis You essentially take manual control over the boot process and thus have to manage grub yourself. The linode kernels don't care about the boot configuration, as the boot is managed from the virtual machine host.
18:10
But when I upgrade the kernel on my desktop machine, it automatically reconfigures grub without any manual intervention. The tutorial suggests that the VPS would be different somehow.
18:23
It is, because after switching to the GRUB 2 boot mode, the host can't keep track of the names of images. After switching, you get GRUB as a bootloader, whereas before that it's simply ignored.
GRUB is not used, or rather bypassed for performance reasons. It allows a faster boot (and a guaranteed boot. GRUB could get stuck, and now you have to open (g)lish to interface with GRUB).
18:37
@AndrewSavinykh I'm going through and proofreading now, I'll make a pull request some time today.
@mınxomaτ I guess I'll understand all of this a little better once I actually do it.
@Pavel than you so much for volunteering to do this, it's greatly appreciated
No problem, I'm somewhat of a grammar nerd (even if what I post in chat isn't a great indication of that).
Also, it's interesting to read through all the docs.
@AndrewSavinykh there any files other than README.md and tmplanguages.md that have proper language, or are the rest all scripts?
18:58
@Pavel only comments in scripts and the most important ones are copied in README.md anyway
Alright
 
3 hours later…
22:07
@Dennis Can I get another RProgN 2 pull please?
22:17
In a little while. Not at my PC right now.
All good, no rush.
22:45
@ATaco All done.
Cheers.

« first day (183 days earlier)      last day (2311 days later) »