« first day (4176 days earlier)      last day (650 days later) » 
00:00 - 13:0013:00 - 23:00

12:02 AM
???
 
Looks like it's Flobnar @JoKing
 
sounds good
"@Jok" actually did ping me lol
 
who's in charge of lyal?
 
wait whats happening
 
12:05 AM
lyal
who's in charge of it
Is lyal now?
 
i mean, i'll probably be teaching flobnar this time round, i dunno who usually announces it
 
You can :P
 
what
 
I just saw this code: ᵖʳⅰₙt(*fiˡtₑʳ(stʳ.ⅰˢªˡₙuᵐ,ᵐªp(ᶜʰʳ,ʳªⁿgₑ(ºʳd('{')))),ˢᵉᵖ='')
(python) lol
 
Welcome to the twenty-first Learn You A Lang for Great Good! Today, we'll be learning Flobnar, a 2D lang described as what you'd get if Befunge got drunk. During the event, feel free to post CMCs to practice Flobnar (FMCs), ask questions about the language, and so on.
4
 
12:11 AM
> Pip
 
shhh
some useful links, the TIO interpreter and the documentation
Essentially it is a function style version of Befunge, with instructions having similar effects and with 2D navigation
 
This is so cursed
FMC: Factorial
 
Each single character instruction either returns a value or calls other instructions in cardinal directions
Programs start at @ going left, and will print the final value that is returned (unless you use the -r flag)
 
Oh wait, there's a factorial example on the page :P
 
well, try golfing it I guess
The directional commands ^v<> are all as you'd expect, simply calling whatever is in that direction. The # instruction will skip over the next instruction (note that blank spaces don't count as instructions, so this is slightly different to how Befunge's # works)
Dyadic instructions like arithmetic ones (+-*/%) will evaluate the first parameter from the north and the second from the south. On division by zero, the modulo and division operators will continue straight to get a value instead
 7
 -@
 5
will evaluate as 7-5 and output 2
There is a stack in Flobnar, but it's very different to Befunge. \ is used to push the value south of it to the stack, : can be used to retrieve the current top value, and $ to pop the top value before continuing. Note that this is only per evaluation, you can't push a value in one branch of the program and then use it in another.
:
$
+\<<\@
:7  9
This program outputs 16, where the bottom : evaluates to the 7 and the top one to the 9
@emanresuA I suppose i should also mention my answer at 19 bytes
 
12:38 AM
@emanresuA 24 bytes without looking at joking's
 
the -d flag enables decimal input with &
 
ooh nice
 
If a function would fail, e.g input with no input left or the aforementioned division by zero, the evaluation will continue in some direction to get a default value
 
how do i split an input intio two?
 
FMC: Print 1-100
 
12:45 AM
@NobodyNeedsNames push it in call stack with \ and use the "function argument" : to peek it
 
actually, i take that back
that's stupid
 
@emanresuA 17 bytes!
 
Woaj, you beat joking!
 
very nice!
 
Why doesn't this work?
 
12:50 AM
@emanresuA they go up/down, not left/right
i thought the same thing, it's more intuitive
 
just went ahead and golfed it
+<
5*<
+<^
5 ^@
 
Oh, because it wraps. Neat
 
yeah, you can usually translate code up or down, left or right without changing the behaviour in order to reduce whitespace
@Bubbler i was golfing yours myself and came across 16 but outputs the negative unfortuntely
 
1:03 AM
FMC, random number between 1 and 100 snicker
 
That's impossible
 
flobnar has a random instruction (?), so not really
 
why
@JoKing almost as if you are questioning "flobnar has a random instruction"
 
@JoKing Oh
 
uniform randomness would be very annoying though
 
1:10 AM
IT
S
and i did it: tio.run/…
 
@NobodyNeedsNames i was thinking more along the lines of 16 bytes
assuming 1 to 100 inclusive
 
is that uniform
 
no lol
 
i keep getting really small numbers
 
1/3 chance you'll get a 1, 1/3 you'll get a 4, otherwise increment
 
1:23 AM
increment what
 
the number
 
Is @ functionally the same as < during execution?
 
yup!
@NobodyNeedsNames on the next iteration it'll be 1/3 chance to get 2, 1/3 to get 5. etc
 
oh....
can it get 101
i think you can ;-(
@JoK There?
 
1:39 AM
it moduloes by 100 each iteration, so no
 
oh
but can it get 100
@JoK ?
 
eventually, sure
 
but it mods 100
or is it 101?
 
approximately ~1 in 3^96 odds
 
and will it get 0?
 
1:49 AM
it moduloes and then increments, so it is one indexed
 
oh
what's the next lyal?
 
2:15 AM
Jellyfish probably
 
2:36 AM
FMC: Cat program
 
@JoKing ~,@?
       ~,@
 
this only prints one character
 
FMC: Hello, World!
A get-based approach is probably fastest
 
3:00 AM
<+,@
~
v<
perhaps
@emanresuA a bunch of ~ and + and numbers and a @
 
3:15 AM
@jok
 
doesn't seem to terminate? you know you can test these on TIO right?
it doesn't even reach the ~
 
it never terminates, so it never calls the print. additionally, this would print backwards lol
 
I'm not getting how this is different in semantics from my previous 17 (factorial)
 
what about this, why doesn't this work... does it only print after termination?
 
3:26 AM
@Bubbler ah, the default for EOF is below the & for some reason
 
oh
 
i wish flobnar was more directionally ambiguous
i might make a equivalent ><> analog with updated syntax
someone remind me next lang workshop
 
@JoKing Ooh
Gotta love compilerPotions
 
3:42 AM
why doesn't this work
<+@
v<
,<~
and why does this output nothing
+@
,
1
+
but this does:
+@
>,1
+
And why does the example cat program
~,<
  +<@
  >^
does nothing?
 
@NobodyNeedsNames This loops forever because the two + are calling each other
(I think)
 
isn't it evaluating north and then south?
wait
good point, what if...
and it still doesn't work:
+@
1
,
+
 
it outputs infinite sohs if that's what you want
 
damn, flobnar is way too vertical
 
oh
@Bubbler yes indeed
Why isn't this working?
+@
~
,
+
 
FMQ: Is there a way to terminate by error?
 
@JoKing Yes
 
yeah, that's the only way I could think of
 
It might be possiblw to recursion error
 
4:11 AM
oh lol, i guess invalid instructions are also errors
 
Waiiit... Is Esolanging Fruit Chris Pressey?
 
i'm pretty sure they aren't
> Last seen more than 6 years ago
 
@JoKing yah
what does the flag do
@emanresuA Example program given:
Hello, World!
:
g<
0+<   6
\< 0 0v
 :,` |<\@6
>-^:#<6
 1    +<
 
4:28 AM
-r supresses the final returned value from being outputted
 
@DLosc idea: Acc!!!, which is like Acc!! except there are no variables
Only Count while <expr> {
 
Trying to figure out how / why that works
 
the return result of , is zero
 
Oh
OHHHH, the execution sorta zigzags
 
4:41 AM
yes, ignoring invalid commands using -i
 
what's -i again
is there even a documentation?
 
See here for flags
TIO uses Esolanging Fruit's impl
 
 
1 hour later…
5:58 AM
0
A: "Hello, World!"

BubblerFlobnar, 34 bytes Hello, World!� :> v: g|\@>!, 00> + Try it online! (Previous record: 41) The last character at the end of the first line is the null character \0. @ Start the program : : \ >!,g Initially n (top of stack) = 0. > + 0 Print the char at (n, 0), push n+1, and evaluate ...

 
6:14 AM
1
A: "Hello, World!"

BubblerFlobnar, 34 bytes Hello, World!� :> v: g|\@>!, 00> + Try it online! (Previous record: 41) The last character at the end of the first line is the null character \0. @ Start the program : : \ >!,g Initially n (top of stack) = 0. > + 0 Print the char at (n, 0), push n+1, and evaluate ...

 
6:28 AM
good
 
7:21 AM
Somehow 1 to 10 is harder than factorial
 
7:51 AM
0
Q: Add in the blanks

Wheat WizardIn this challenge you will be given a list of positive integers which represents some range of integers which has been truncated for display. Your job is to find the missing bits and insert ellipses to show that that part has been truncated. The input will always be strictly ascending and if two...

 
8:49 AM
0
A: Sandbox for Proposed Challenges

eKKiMBuild a file/directory tree Task In this challenge, your task is to write a program or function which takes an array of paths with an additional boolean indicating it is a file or directory and outputs a file/directory tree in any reasonable format. Remarks Some directories can end with a forwar...

 
9:27 AM
hi, long time
I'm making a programming game. Can I use some of the questions asked here, or parts of them, as tasks for my levels? I won't use the answers.
by here I mean the codegolf.SE
 
thanks
hmm, seems complicated, back to making my own. Although programming-related SE sites have all the serious and non-serious tasks under the sun :))
 
9:44 AM
It's not that hard, just give credit and re-share your modifications
 
the sharing back is hard, I want to sell the game on Steam
giving credit is the easy part
 
 
1 hour later…
10:46 AM
@pxeger Please don't mess with my posts like that. There's a reason I chose that font, and I have many other posts that use it in the same way. And using backticks doesn't give that font; I don't understand why you would try to make me think backticks give the same font as Mathjax.
I didn't use the regular header font for that because it could be confused with a language name.
There's plenty of compromises we have to do to make text look the way we want on StackExchange sites. For example, we also have to use <sub><sup>...</sup></sub> to get a small font. It sucks, but that's the way it is. So for this, using the Mathjax font to get a distinct-looking header is just what I'm stuck with.
 
11:02 AM
@Deadcode I meant you should write \$\text{Modification}\$ instead of \$Modification\$ if you specifically wanted a different font. Otherwise the kerning is all wrong
 
Someone hated you
 
@pxeger I used the backticks to contain the formatting I was suggesting; they weren't supposed to be part of it
 
@pxeger That gives a different font, that basically looks the same as a standard header.
And why did you edit my post again. I asked you kindly to please stop messing with my posts like that.
Correcting typos is fine, but messing with my design decisions is not.
 
The effect of the kerning is not as bad on "Variations" as it was on "Modifications" at least
But I don't see any need to get in such a tizz about it. This is a collective site, and I'm aiming to clean it up where it helps. If you insist on having it one way or the other, you can just rollback.
 
@pxeger It feels like a personal attack to have that kind of edit done on one of my posts. I'm a perfectionist and I carefully consider every design decision. To have one casually changed like that without my permission feels like an insult.
 
11:12 AM
Well I can't help if you feel that way about an SE feature which I'm using for its intended purpose
 
I would disagree that that's its intended purpose.
You wouldn't edit someone's post to include a new golf, would you?
Nobody does that. They suggest them as comments.
 
pxeger, stop caring.
 
Messing with the posters' design decisions is not within the scope of what edits to other people's posts are intended for, I would say.
 
No, because we have a policy against that
Fixing formatting is definitely an accepted use for edits
 
It's one thing if a poster casually used the wrong formatting. But if they intentionally decided to do that, it's a whole other matter.
 
11:14 AM
If you don't consider it "fixing" because that's what you want, then fine
How was I supposed to know you intentionally decided to do that? I just assumed you didn't know about \text
 
But you did the same edit again even after I asked you not to. That's not okay.
 
It was a completely different edit
 
It looked the same.
 
Not remotely, for me
 
You changed an italic serif font to a non-italic sans serif font.
 
11:16 AM
@emanresuA I think I'm not the one who cares. I'm defending myself against an accusation of being rude, when I had no intention of doing anything other than helping tidy some formatting
 
And don't stop caring. Caring is good.
 
1 and 4 are mine. They look completely different to me
 
1 and 4 are both non-italic fonts. The whole point was that I was going for a font that looked very different, and italic serif accomplished that.
Now I'll admit that 1 is serif and 4 is sans serif. But 1 is not the look I was going for.
And furthermore you did it without even asking me, even when you knew I was here in the channel ready to chat.
You could have just told me here what your suggestion was.
And let me decide if it fit my specifications, and whether I wanted to implement it.
 
@Deadcode You can add the italics without going back to the bad kerning. But I think 1 and 4 look plenty different (not that I even think they need to be); the italic difference is much less than the whole font appearance, and serifs. But that's besides the point.
 
@pxeger And "you can just rollback" is not a valid argument. I am not notified when someone does an edit to my post unless I am actually looking at that post, or I happen to look at the index and see that my post got bumped and I wasn't the one who did the editing.
It's easy to miss someone else doing an edit to one of your posts.
 
11:21 AM
@Deadcode I thought it unnecessary to ask you, because 1. my edit effectively already was me asking: if you didn't like it, you can just roll it back. 2. my second change brought it so close to your original while still fixing the kerning that I thought you couldn't possibly object
@Deadcode I'm pretty sure that you do get a notification when someone else edits your post
 
@pxeger But I had just asked you to please not do that kind of thing to my posts, and then you went and did the same thing immediately.
 
You do get a notification
 
To be honest, I completely ignored "don't mess with my posts like that" because SE encourages me to edit posts when it improves them. It's not "messing with".
 
## \$Variations\$
## \$\textit{Variations}\$

so your suggestion would have me do the second one instead of the first. But the second one is indented ever so slightly, and it's ever so slightly smaller. I don't like it as much...
If I do decide to do this, BTW, there will be at least half a dozen posts I have to edit. All will get bumped
 
If you seriously care that much about the amount of spacing around the header, you can change it to what you like. I just think the readability gain from fixing kerning on the letters was more important
 
11:28 AM
Thanks @pxeger
 
That table looks better for me
 
@starrers: I understand if you want to show which side you support in an argument. But I think starring those messages is not a good idea, for several reasons:
4
 
and I keep forgetting the preview of tables is messed up
 
- it may encourage people to star opposing messages, and then the starboard would fill messages all about the same one topic
 
11:31 AM
I have a strong urge to star these reasons but I will resist
 
- it may appear to turn a useful debate into a popularity contest
- it brings attention to a argument that both original sides have more-or-less finished, which is likely to cause unnecessary annoyance
 
I see what you mean about the kerning. But I just have to decide if this is acceptable, and then go and ahead the at least half a dozen posts if so.
 
Changing the topic then: Is there a challenge for randomly picking from a list, and if so would it make a good challenge?
 
@pxeger That's another reason it was not acceptable for you to do the edit, BTW. I have done the same thing on many posts, and if just one were edited, that would make my posts inconsistent.
 
@AncientSwordRage almost certainly yes to both
 
11:35 AM
@Deadcode I would prefer half a set of posts to have 'good' kerning than none of them
@pxeger I couldn't find the former
 
And I agree with pxeger about starring the chat messages. Whoever did that, it was in extremely poor taste.
 
@Deadcode Bear in mind, that different chat rooms have different tastes. Someone who's rarely here won't know the customs and norms perhaps
the reasoning holds
 
@AncientSwordRage What reasoning?
 
It's not a punishable offence, and we can just clear the stars. Don't get too worked up about it
 
it's just that it's not always an issue in some places
7 mins ago, by pxeger
@starrers: I understand if you want to show which side you support in an argument. But I think starring those messages is not a good idea, for several reasons:
@pxeger yup, I cleared some myself
@pxeger if you do come across a 'random pick from list' then let me know
 
11:39 AM
@AncientSwordRage If we don't already have one, feel free to write up a sandbox post. Just keep in mind these guidelines about randomness
 
@pxeger I knew there would be some sort of sticking point about randomness, thanks
 
@pxeger On a different note, could you please install python-chess on ATO? It's pretty small; shouldn't be a problem. I'd also appreciate having Boost (C++) installed, though that's much larger, so I'd understand if you don't want to.
 
11:50 AM
Boost is 180MiB though, so I probably won't be able to add that in the near future
 
@pxeger Thanks!
 
@pxeger Imagine having hard disk space restrictions. I cheat
 
If you just deployed why is the fix for syntax highlighting not live yet
 
It was only a partial deploy, just to update the Python image
 
Ah ok, how often do you do a full deploy?
 
11:53 AM
@pxeger Yet it's not on staging...
 
@mousetail Every few weeks, but it depends on how much has changed, and how much of it I've already deployed in bits and pieces
@emanresuA staging is pretty broken at the moment
 
WHy?
 
@emanresuA because I'm testing some things
 
@emanresuA do you just query ato for dso?
 
I'm working on cancellation
 
11:54 AM
@user good idea
 
@mousetail done that now
 
It’s okay for staging to be broken
 
Need more levels of staging
 
Would be nice to have a staging for every branch tho
 
really, I shouldn't be training my users to rely on staging
if I deployed to prod more often, that wouldn't be such a problem
 
11:56 AM
Another feature request would be the ability to resize the answer box. It's not really big enough for verbose languages like rust.
 
@pxeger Have you got incremental deployment?
 
@pxeger you would just have more, exciting problems
 
@user if someone wants to sponsor me the £££s worth of disk space, I'll gladly implement that ;)
 
Abuse discord for infinite storage
 
@emanresuA sort of, but it's non-zero downtime, and only partly automated
 
11:57 AM
files saved there stay forever
 
I'm already kinda abusing Docker Hub for infinite storage
 
Ooh how?
@pxeger Dyalog perhaps?
 
If I end up compiling any wasm binaries myself, I'd probably externally host them
 
@user by putting an entire new Arch Linux installation there once a week
 
0
A: Sandbox for Proposed Challenges

AncientSwordRageGenerate a Tiefling's Traits A Tiefling is a character race from Dungeons and Dragons, that have a list of possible traits: small horns fangs or sharp teeth a forked tongue catlike eyes six fingers on each hand goat-like legs cloven hoofs a forked tail leathery or scaly skin red or dark blue ski...

 
11:59 AM
I suppose Docker can't complain that much about me though, given that Arch Linux themselves are putting an entire new Arch Linux installation there several times a day
 
lol that’s an interesting way to do it
@pxeger ato is probably a drop in the ocean for them anyway
 
Also while I'm here, do my latest edits here make sense and/or work for people?
 
Storage is extremly cheap in bulk, it's just us pebs that have to pay for individual petabytes
 
The problem is that ATO's storage needs to be accessible speedily
I can't just put it all on S3 glacier
 
Checked, and DSO has about 70KB of code
 
12:03 PM
@pxeger In any case, thank you for pointing out the kerning issue, even if the way you did wasn't to my liking. As it turns out, I found a way to get basically the exact same font size but with proper formatting:
old version: ## \$Text\ goes\ here\$
new version, fixed: ### \$\large\textit{Text goes here}\$
The new version is still ever so slightly indented more, but I can accept that.
 
+ 330KB of DVSM
o/
 
@user At some point I'll get around to setting up GitHub Sponsors, and then hopefully all my worldly problems will be solved
 
How is ATO financed?
 
My own pockets
 
Ouch
 
12:04 PM
It costs about £8/month in total
 
Oh that's suprisingly cheap
Ever get issues with people abusing it for crypto mining or similar?
 
I think that would be pretty hard to do
It's max 60 seconds execution time per request, and max 20 requests per minute, per IP address
 
@pxeger That's amazing! All the same, thank you very much for doing it.
 
^
 
@mousetail isn't that against the TOS?
 
12:11 PM
well yeah that too
 
Yes, that's why I asked if he had problems. If it was allowed it wouldn't really be a problem but just a design decision
 
@pxeger thanks for funding it!
 
12:43 PM
In python, is it faster to compute the union of sets of integers than sets of shortish strings?
 
How big are the integers?
 
Up to 2**32
 
I would guess integers are faster then
shouldn't be too hard to benchmark though
 
A benchmark is a great idea
 
Python has the builtin timeit module for benchmarking
 
12:47 PM
The difference is pretty insignficant
int: [0.6171469429973513, 0.6378249230328947, 0.6157839560182765, 0.6052223299629986, 0.6150264090392739]
str: [0.6953656200785190, 0.6999090739991516, 0.6987536610104144, 0.6986689930781722, 0.6942863309523091]
 
Strings seems consistently slighly slower, order of 2-5%
 
i'd call that significant
 
Hmm
That's a shame
 
they would be the same speed if you used string ints
 
Strings would probably still be slighly slower because of the system that prevents collisions from being predictable
 
12:52 PM
is that standard jargon?
 
no
at least IDK
 
fair lol :P i just dont know what you mean
what's colliding? and why dont we want to be able to predict it?
 
Do you know what a hash collision is?
 
nope, but now i know what to google :)
 
Basically when 2 values hash to the same item
There was a issue in python that since there where strings known to collide you could pass these as query parameters to servers running python
This would massively slow them down and make them unresponsive
 
12:55 PM
oh wow
 
So they changed it so the exact hashes for strings are unpredictable so you can't pre-compute hash collision payloads to perform denial of service attacks
hash seed is randomized on startup
 
and so this (possibly?) slows down string comparison because of random?
 
The algorithm is more complex
For integers the algorithm is literally number%hashsize
there is no real way to make this unpredictable
If you XOR the number you would still get the same collisions
Strings use a much more complex algorithm that allows the seed to effect different strings differently and actually break collisions
 
But a 5% slowdown seems surprisingly small
 
00:00 - 13:0013:00 - 23:00

« first day (4176 days earlier)      last day (650 days later) »