3:00 AM
@Maltysen I'm not asking to just "print ∞" That would be a really boring challenge.

@TheBitByte that's what we were wondering about

@Maltysen Well, I hope you understood now.

@TheBitByte not really. if we're not printing ∞, then what are we doing? the sum of the harmonic series is ∞

@TheBitByte That's exactly what you're asking for.

@Maltysen Yes, but if you're just printing ∞ you're not really calculating any series. It's a valid but terrible answer.

3:04 AM
@TheBitByte for the most part, challenges that ask you to "get this answer using this formula" are pretty dumb.
That's literally "which language can write this shortest".

@EᴀsᴛᴇʀʟʏIʀᴋ In this case, I never specified any formula.

> harmonic series
that's a formula

@TheBitByte here we don't really have a concept of boring answers. if a question allows for boring but competitive answers, then the challenge is stupid

^
@Maltysen *boring answers on code-golf questions

Well, tell that to the Hello World challenge. Tons of boring answers, including a stupid 0 byte solution.

Technically, though, the challenge explicitly allowed them.

3:05 AM
@TheBitByte that was a

^
@TheBitByte yes, but don't do that please
just post a new message
it messes up the conversation
@TheBitByte you leave no golfing potential in this challenge. That's considered a dumb challenge. If you post it, it may get closed and will certainly get downvoted to oblivion.

Do X with Y algorithm has the same problems with Do X without Y
it's really tough to define what "Y" entails

@EᴀsᴛᴇʀʟʏIʀᴋ When did I say I was gonna post it? I know it's not good for posting on main.

its much better to simply define inputs and outputs

> if you post it
i meant "if we judge it by the quality standard that we have here"
@TheBitByte then why are you trying to argue that it is a good challenge

3:08 AM
@EᴀsᴛᴇʀʟʏIʀᴋ By CMC standards, it's excellent.

no, it isn't
CMC's are supposed to be solved in shorter code.

If CMCs could be close voted then almost all of them will be.

no,
most wouldn't

Quite a few would.

> few
maybe a couple
@TheBitByte sorry, i nuked my message because it was accidental
Whatever. I'm done arguing.

3:10 AM
Winners don't quit. Quitters don't win. haha

@muddyfish congrats!

On what?

Why are you quoting old messages though?

@TheBitByte starboard
2

3:12 AM
@Maltysen Oh I didn't see that...

@Maltysen ALL HAIL THE STARBOARD, LONG MAY MOD ABUSED FEEDS REIGN

I've decided there are going to be 8 commands in my language. There will be a register and a stack

okay
@DestructibleWatermelon name?

@EᴀsᴛᴇʀʟʏIʀᴋ ALLE HAGEL DER STEURBORD!

...
@Dennis what actually happened to TIO?
scheduled maintenance?
@TheBitByte .... doesn't change

3:20 AM
@EᴀsᴛᴇʀʟʏIʀᴋ Was?

@EᴀsᴛᴇʀʟʏIʀᴋ Some process hogged the CPU for 4.5 hours.

Was it a bitminer or something like that?

@Dennis do you know what it was?

@EᴀsᴛᴇʀʟʏIʀᴋ No clue. The VPS has a single core, so when it freezes, there's no way to access it without forcing a reboot.

Who runs a VPS on a single core anyways? Genuine question.

3:22 AM
@Dennis hm, okay

@TheBitByte I do.

@TheBitByte people who kindly spare money to run a server like that to be nice

@TheBitByte clearly TIO, which seems like quite a successful website to me

Believe it or not, more cores cost more money.

@Dennis I know, but VPS like DigitalOcean are so cheap, at least that's what I thought.
I'm used to the big guns though so I have no idea about VPS.

3:23 AM
cheap is relative

I mean, TIO isn't like Google or anything, so I can understand.

I am using Digital Ocean, but 20 dollars a month out of my own pocket were a bit too much for me. But thanks to donations, I will upgrade once I make v2 public.

You could use Azure with an automatic scaler.
It automatically adds more resources when you need them.

That sounds like a death trap.

I don't know the pricing plans.
I think, but I'm not sure, that you could add a limit to it, so that the resources keep scaling up but only up to the limit you set.

3:27 AM
Nah, rescaling is sufficiently easy with DO. If I wasn't planning to retire the old server soon, I would have already done it.

What are the specs of the new server/VM?

I'm beginning to think I should have two stacks...

@TheBitByte 2 CPU cores and 2 GiB RAM.

@Dennis What CPU I mean?

6

Cheater, Java Tries to sell nothing for money. import java.util.List; import java.util.Random; import com.ppcg.stockexchange.*; public class Cheater extends Player { private Random random = new Random(); public Offer acceptOffer(List<Offer> offers) { return null; } pu...

and it's winning...

3:32 AM
@TheBitByte Intel Xeon CPU E5-2650L.

@Dennis Isn't that one EOL?
haha
You have two cores though out of 8, so 4 threads. Use them wisely.

It might not be the newest model, but CPU power hasn't been an issue for TIO.

I see.
Is TIO optimized for multicore?
This Xeon has SMT too, so that's another perf boost.
Even with two cores, you still have four threads.

How would I optimize TIO for multicore? The interpreters work they way they work (not much I can do about it), and the OS should do load-balancing just fine on its own.

I mean like, maybe 3 threads for running golfed code, and the last thread for running the website itself.
@Dennis How many monthly visitors does TIO usually get?

3:40 AM
The web server itself doesn't require nearly enough CPU power for that.
Not sure.

I wonder if SE staff could do stack snippets for different programming languages.
That would be cool, like TIO, and awesomely powerful because of the backend SE already uses.

probably, but it would take some effort. afaik nothing but js runs natively in any browser

Nothing but JS and every interpreter you can write with it.

I don't think JS itself it slow, the browsers are, and that's the issue.
If you had well optimized browsers with even CUDA/OpenCL acceleration, then maybe SE could do the snippet thing.
I don't see that happening any time soon, though.
If it did, TIO could be just be a domain name linking to a github page where js interprets everything, preferably using RawGit's CDN.

The whole point of TIO is not to interpret code on the client side, which is slower and more difficult to set up for a large number of languages.

That's what I said, browsers are slow.

3:48 AM
The problem with porting languages to JS remains though.

Nobody said you have to port it yourself.

I'm not talking about that. I'm talking about my vision for TIO. Adding a new language should be quick and painless.

Anonymous
@TheBitByte Nobody wants to do the porting, though.

@Dennis There are things like EmScripten, for example. That's not painless, but it's not painful either.

Anonymous
@TheBitByte What about the languages written in Python? There's no simple tool (or set of tools) to convert Python to JavaScript.

Anonymous
3:52 AM
The only things close are brython and skulpt, which both come with hefty sets of issues that make them unsuitable for interpreting

@Mego Yes there is. (skulpt.org)
Ninja'd
There's also pypyjs.org

Anonymous
@TheBitByte Skulpt and Brython are incomplete. That one relies on PyPy, which doesn't have a feature-complete implementation of Python 3. On top of it all, if there is any need for external file access for running an interpreter, JS is not an option, no matter how many libraries you load it up with.

I'm not familiar with the others, but PyPy.js is huge and, more importantly, uses PyPy under the hood. PyPy 2 is usable; you can forget about PyPy 3.

@Mego I'm not saying Skulpt and co are easy to use, but they're not ultra hard to use either.

Incomplete is incomplete. If a TIO-hosted interpreter requires a feature that isn't present, it's not an acceptable alternative to the real deal.

Anonymous
3:56 AM
@TheBitByte I call "missing important Python language features that languages created in Python rely on" being at least ultra-hard to use.

Also, as long as it's only a bit harder than using server-side interpreters, I'm not interested.

@Mego You mean Skulpt isn't turing complete?

@Mego How is JS not an option
I thought JS was the only option

Anonymous
@TheBitByte You're being unnecessarily obtuse. I'm not going to rewrite parts of the Python standard library in Skulpt's half-finished Python implementation just so that my language can run in the browser.

@TheBitByte Not the Turing argument... brainfuck is Turing complete, but that doesn't mean I can host TIO using only brainfuck.

3:58 AM
@Dennis I think Conor created a webpage with brainfuck though :P

Anonymous
Also Skulpt suffers from the same problems as Brython and PyPyJS: it implements Python 2, not 3.

@TheBitByte It is really painful, we're talking about >20 second startup time here

There are lots of interesting esolangs that aren't turing complete.

However, would their *interpreter* have to be turing complete itself? That's an interesting question...

@TheBitByte Trivially, yes.
In fact, a common way to prove TC is to interpret or implement something known to be TC.

Anonymous
@TheBitByte Nope. TC means that a language/system can emulate a Turing machine. If a language is not TC, there is no reason to expect that the interpreter of a non-TC language must be written in a TC language.

4:00 AM
@El'endiaStarman A non-turing complete lang incapable of doing certain things, hence why it's not turing complete. This means that its interpreter only has to interpret what the lang itself can compute, no? I could be wrong, though.

Anonymous
@El'endiaStarman They're asking the inverse of what you're proving

Anonymous
@TheBitByte You are correct. A linear-bounded automaton (LBA) can be simulated in a LBA, and LBAs are not TC.

@TheBitByte Browses aren't slow, they're pretty fast, like normal JS. The slow part is loading and parsing a few MB of interpreted asm.js.

@ASCII-only Browsers are slow, to an extent. Compare WebGL performance VS normal game performance. At leas Mozilla has an experimental project to fix that.

Anonymous
4:03 AM
@ASCII-only But browser-run code is always going to be slower than natively-run code, thanks to the extra layer of abstraction between the code and the metal. The JS sandbox slows code down a lot.

@Mego asm.js is pretty fast though (1-2x slowdown)

@Mego Doesn't this apply to the concept of interpreters in general, though?

Anonymous
@ASCII-only Pretty fast compared to what?

Compared to native

@Mego He's saying ASM.js is miles faster than normal JS, in some benchmarks.

4:04 AM
Depending on the benchmarks used

Anonymous
@TheBitByte For the most part, yes. Tools like JIT compilation can bring interpreted code closer to native code, and in some carefully-crafted cases, the interpreted code can even be faster than the native code. But, in general, native code is always faster.

@ASCII-only Indeed, but the general idea is that interpreting other programming languages using ASM.js may be miles faster than doing the same thing with normal/vanilla JS.

Anonymous
asm.js may be faster than vanilla JS, but it still can't hold a candle to compiled C code, running natively.

@TheBitByte Plus it's too hard to compile to normal JS anyway, hence why Emscripten exists
@Mego Depends on what it's being used for, PyPy.JS is almost as fast as PyPy IIRC

@Mego Yes, but that's if your esolang does have a compiler rather than an interpreter.

Anonymous
4:06 AM
@ASCII-only I find that incredibly hard to believe.

Plus hopefully wasm will reduce the gap between browser and native speeds

Anonymous
@TheBitByte I don't think we're having the same conversation anymore.

wait nvm it's really slow

Anonymous
Yeah, 15.5 times slower. Your statement is patently, grotesquely false.

Yeah, but it's still faster than CPython, but only because PyPy is so much faster

4:09 AM
I think he's saying not all JS interpreters are slow.

Otherwise, why is Emscripten potentially faster than vanilla JS?

Anonymous
Also, 85 open issues and the last non-configuration commit was nearly a year ago.

@Mego Proving your argument by nitpicking doesn't work, if that's what you're wrong.

Anonymous
It's safe to say that PyPyJS is no longer being actively developed

Anonymous
So PyPyJS is a dead, buggy, woefully incomplete project. Yeah, I'm not going to be touching it with a 10-foot laser pole.

Anonymous

Anonymous
4:12 AM
It's 1.2x slower than CPython

Anonymous
It's also 213x slower than vanilla JS. In other words, it's completely useless.

@Mego At this point you're just arguing for the sake of arguing.

I typed this message on my brand new smartphone! :D

Woo, hurricane party :D

Anonymous
4:13 AM
@TheBitByte I'm not arguing - I'm pointing out obvious, glaring problems with your suggestion, which indicates that you didn't even bother doing the slightest bit of research before making the suggestion.

@El'endiaStarman Lemme guess: S7?

@TheBitByte How

@El'endiaStarman Nice! What model?

@Mego You just want to prove that JS interpreters are slow, and seem to be willing to do anything to reach that conclusion. They may be slow, but not as slow as you think

@TheBitByte asm.js is definitely not the solution to interpreters on the browser.

4:14 AM
@TheBitByte Luckily for me, yes!

@TheBitByte JS interpreters for languages written in C are very slow
@TheBitByte How would you know how slow he thinks they are

This whole discussion is pointless. It started the idea of making TIO run client-side interpreter, when TIO was created with the purpose of not having to use client-side interpreters. It's Try it online, not Try it in your web browser.

Anonymous
@TheBitByte I'm not trying to prove anything. I said that there was no reason to try to port a Python-interpreted language to JS. You said that there were tools available that made it possible. I'm showing you why it is neither feasible nor possible.

@Mego I'm not talking about a double interpreter situation. I'm talking about an esolang that has a direct and optimized interpreter in JS.

4:18 AM
@TheBitByte Almost all of them already have their own online interpreters
So it's kinda pointless

Anonymous
@TheBitByte Then we are no longer having the original conversation that I joined. I am not interested in that discussion.

@Mego Is it because you don't have a response?

@TheBitByte No, have you read the start of the conversation?
Python does not have a direct and optimised interpreter written in JS

why is me saying "starboard" starred?

startrolls

4:21 AM
@Maltysen Because it's helpful for people to know what side starboard is :P

@Maltysen Fine, unstarred you.
Looks like the grace period is over, so I can't unstar you.

@TheBitByte Too long since you starred

That's not a bug. After the grace period, stars are permanent, if not cleared by a room owner.

@ASCII-only Is that a thing? TIL.

4:24 AM
@ASCII-only Really? What's the use?
Imagine somebody edits his answer to something I disagree with, and I can't downvote him.

@TheBitByte You can change it only when the answer/question is edited

@TheBitByte edits reopen it
shit ninja

@ASCII-only But after the edit there's still a grace period again, right?

@Maltysen What kind of a ninja is that

@ASCII-only It's a meme.
At least I think it is, given that I've only seen it used on SE chat so far.

4:26 AM
@TheBitByte After the edit you can vote again, the grace period applies after you vote again

@ASCII-only What if I don't change my vote, though?

@TheBitByte You can just ignore it then
Pretty sure you're free to change your vote any time if that happens

@TheBitByte For the old vote, no. Once a post has been edited, you can retract or change your vote whenever you want to. But the new vote will once again be locked until there's a second edit.

@Dennis I don't see what's the use for grace periods, really. They don't prevent voting bots, for one.

Anonymous
@ASCII-only Not a very good one

4:28 AM
@TheBitByte That's not what they're meant to prevent. If you search on Mother Meta, there more than a few discussions regarding grace periods.

@TheBitByte Voting bots are prevented by the 40 vote/day limit and serial voting detection.

@ASCII-only But not by the grace period, if that's what they're using it for.
Also, I know about the vote limit but I don't get the use, It limits normal users, not just bots.
Ideally, you want something that gives some freedom to users and still disallows bots.
Then you can ban manual spammers individually.

@TheBitByte As I already said, it isn't what they're using it for.

Anonymous
@TheBitByte They're meant to implement the philosophy that SE has for voting: be careful with your votes, and make them count. You shouldn't vote on a post until you have fully read it and decided how you are going to vote. Making your vote lock in after a short period of time incentivizes users to carefully consider their votes, so that they aren't tricked into upvoting useless answers.

@TheBitByte That's assuming all users can behave themselves, which sadly isn't true.

4:32 AM
@Mego "tricked into upvoting useless answers" doesn't apply on PPCG.

Anonymous
It also helps protect against serial unvoting

Anonymous
@TheBitByte Most things don't. Votes locking in after a certain amount of time is a network-wide feature.

Anonymous
However, I don't see a good reason why that feature should be disabled for PPCG

@Mego Yeah. I've been reading on Meta and there's no proper reason given for the grace period. It's like they just decided it to be like that.

Anonymous
The same reasoning applies here as with the rest of the network: don't have an itchy voting finger. Read the post and think about how you want to vote before you actually do.

4:34 AM
@Mego Again, this doesn't apply on PPCG because people tend to upvote funny but useless answers.

Anonymous
@TheBitByte That's an issue with the users, and also what flags are for. If an answer does not solve the challenge, flag it.

Okay, @Maltysen or somebody, help me understand what's going on in the Pyth code *@"\/ for The Squiggly Sequence.

Anonymous
While I don't agree with everything Jeff says in the second link, three different answers is far from "no proper reason given"

@DLosc he uses @ to index the string with and implicit Q, and in Pyth indexing is modular, so it works out to the correct one with respect to even and odd, and then does * to string repetition, again with an implicit Q
no point free stuff at all, all procedural

4:38 AM
@DLosc Pyth has implicit input now, so the actual code that is executed is *@"\/"QQ.

@Mego In your first link, OP says "he then downvoted me" How does OP know?

@DLosc here is the compiled python code: imp_print(times(lookup("\/",Q),Q))

@Maltysen Ok. I guess my definition of "point free" was something like "you don't have to write an operand and the program automatically knows what to supply," which fits the current scenario but apparently isn't the technical definition of "point free."

Anonymous
@TheBitByte You're nitpicking

This is a more specific use case.

4:40 AM
@Mego I'm not. That OP is just mad over a downvote, evident by the fact that OP can't prove the guy downvoted him, rendering OP's question almost useless.

@DLosc point free means that you do operations on functions without mentioning any specific value
jelly(and J, etc.) are completely point free

Anonymous
@TheBitByte Thank you for reassuring me that any conversation with you in the future will be as frustrating and fruitless as the ones I've had with you today.

@Mego Thank you for using personal attacks and not answering the simple question intended at you.

@TheBitByte With you, questions are never simple.
3

@DLosc like instead of doing def fourth_power(x):return square(square(x)), you do square(square)

4:44 AM
@Maltysen Okay, so point free has more to do with being able to perform operations on functions to create bigger functions, which are then implicitly applied to the inputs to generate the outputs? Whereas the Pyth program has the "implicitly applied to the inputs to generate the outputs" part but not the "operations on functions" part?

@DLosc yeah
That's what I thought you meant by implicit input
@DLosc pyth kinda has some stuff to work on functions, but they are less actual point free stuff and more just syntactic sugar that expands back out to the explicit form
like yM expands out to myd
(where y is just a random function I picked, and d is "point")

Okay.
In reference to Pip, what I meant by implicit input was that you don't need a statement to retrieve the input value--when given as a cmdline arg, it is automatically stored in the variable a. On the other hand, though, I guess that isn't really different from storing cmdline args in sys.argv in Python--just shorter. So maybe "implicit input" isn't a good term to use to describe Pip.
You still need to put a explicitly in every expression where you want to use that value. Infix makes it a bit hard to imply, except maybe once on the very RHS.

@DLosc what if you let your usual associativeity rules decide where to fill it in?
like 3*+6 could fill it in the middle
and because * binds tighter than + it would work like that

@Maltysen Problem with this specific example is that + is also a unary operator.

@DLosc ah

4:52 AM
But in theory, that could work.

@DLosc why? i understand why in normal langs for clarity etc, but there shouldn't be any reason to have + be a unary in golfing langs

I don't know if I've actually used it, but it does do a couple of things.
Think of it as a "cast to numeric" operator. Strings and numbers are the same Scalar type, so +"abc" would convert to 0 and +"34abc" to 34. Theoretically, the latter could be useful.

oh

Also, +1.0 would simplify to 1, though I can't imagine a scenario requiring that.

well how about, if you have 3*+6, then you leave it, but if instead of + it was one that was always binary it would fill up
like, you assume as much as you can that it is already filled up, but if you can't, then fill it in

4:56 AM
Yeah, I think that would just require another case in the parser, where if it's expecting an expression but gets a binary operator it fills in with a default expression.
I do have a lot of multiple-arity operators, though... I'd have to come up with some examples to see how many use cases it could actually apply to.
Also, to figure out what the most useful default value is.
It could be a, the first cmdline arg, but it could also be _, which is used to construct lambda functions.

@DLosc idk anything about pip, but pyth switches around what it fills up with depending on the context
so you may wanna do something like that