« first day (1033 days earlier)      last day (742 days later) » 
00:00 - 19:0019:00 - 00:00

00:18
Multi-branch lambda conversation time (again) :p
Here's a list of what each lambda type does with more than one branch
map: refocus the context variable each time
filter: keep where true under all branches
sort: tbd
reduce: tbd
normal lamda: nothing
No clue what sort and reduce should do.
I know there were some suggestions, but nothing concrete was decided upon
Didn't you already decide that it would also sort by those other branches?
That made sense to me
If two elements are equal when they go through the first branch, try the second branch. If they're equal there too, try the third, ...
it made sense at first, but then when I went to implement it, I realised that might be too complex
unless it's just "select the smallest each time, if the smallest is more than 1 item, filter until either 1 item or end of branches"
that could work
Wouldn't sort(branch1, branch2, ...) be the same as sort(x => [branch1(x), branch2(x), ...])?
Oh I see actually implementing is hard
How about if there's more than one branch, you group by the result of the first branch, then inside that, group by the result of the second, and so on until each group only has one element, and then sort?
00:39
@user good idea in theory, gets verbose real quick in practice
+ Maps are confusing to work with
@lyxal Verbose is fine, isn't it?
Because I also tried that
@user not when it starts becoming confusingly verbose
I ended up with things nested 5 levels in parenthesis
Because you have to wrap each branch in a lambda and then call that in a call to VFun.execute and compare those in a call to MiscHelpers.compareExact which is already in a call to group by and it's not just a flat list of VAny, it's a list of 2tuples because ctx-m exists so then there's indexing into each 2tuple
And then you mix recursion into all of that and it just becomes unpleasant
+ it's really easy to get lost in the types being thrown around
You've got a Seq in one place, some sort of iterable thing in another, VList required and a Map with VAny as keys
Perhaps we could use sortWith?
I feel like it'd be pretty straightforward to implement using sortWith (you provide your own comparator)
@user this was using sortwith
Or was it sorted?
I don't remember which method I tried using
list.sortWith { (a, b) =>
  val (aRes, bRes) = branches.map { f => (f(a), f(b)) }.dropWhile(_ == _).head
  aRes > bRes
}
Something like ^ maybe?
00:54
@lyxal I changed to q:
Fair enough
@user just gotta figure out how to incorporate zipwithindex into this :p
01:44
Now that there's literate mode, I don't think I'll use normal form very much anymore :p
Except for golf
it automatically generates normal form
so I don't even have to use it then
!!/dQw4w9WgXcQ
[Dqw4W9Wgxcq]!? STEFFAN!? WHAT ARE YOU TALKING ABOUT!?
We gotta see the source code
@VyxalBot WRONG
!!/wrong
01:55
[Wrong]!? STEFFAN!? WHAT ARE YOU TALKING ABOUT!?
@VyxalBot WRONG
!!/run 2 2+
[Run]!? STEFFAN!? WHAT ARE YOU TALKING ABOUT!?
!!/status
[Status]!? STEFFAN!? WHAT ARE YOU TALKING ABOUT!?
DEE BOT NO WORK
!!/die
01:57
[Permissions] NO
IT'S TIME TO BE A [Big Shot]
!!/amiprivileged
[Amiprivileged]!? STEFFAN!? WHAT ARE YOU TALKING ABOUT!?
Uh why did the bot just restart
Wait did it shut down
!!/die
[Permissions] NO
SEE YOU KID!
IT'S TIME TO BE A [Big Shot]
It literally tells me no and then shuts down lol
01:58
!!/die
SEE YOU KID!
IT'S TIME TO BE A [Big Shot]
!!/die
[Permissions] NO
!!/die
01:59
it's gone
ah
I think I crashed it
!!/mom
@Steffan :+1:
@Ginger I BROKE DEE BOT
*we
02:02
IT'S TIME TO BE A [Big Shot]
I think you'll find I played a non-trivial part in crashing it :p
oh it's back
!!/!!/
[!!/]!? LYXAL!? WHAT ARE YOU TALKING ABOUT!?
try not to break the bot challenge (impossible)
@Steffan er
oh no
eh, it's restarting fine
I'll fix it tomorrow :p
@Steffan here ya go
@lyxal Do the lambdas need indices? I guess the first line could be list.zipWithIndex.sortWith { case ((a, i), (b, j)) =>?
Do we want scala-steward btw?
02:11
@Ginger WOW I didn't know that .gitignore was so powerful
@Steffan wdym?
That's amazing, you wrote a whole BOT in .gitignore
Better link for Scala Steward, actually. It's a bot that keeps sbt plugins and dependencies and stuff up-to-date
@Steffan you're looking at the wrong branch dumbnut
._.
In the code, it just sends [Permissions] NO if you send !!/die and aren't privileged, but continues to quit the bot
!!/die
02:13
[Permissions] NO
SEE YOU KID!
bruh
IT'S TIME TO BE A [Big Shot]
I may be stupid :b
!!/die
[Permissions] NO
02:14
that's stupid enough that I'm going to go fix it right now
IT'S TIME TO BE A [Big Shot]
s
!!/die
[Permissions] NO
lmao
02:14
stop
IT'S TIME TO BE A [Big Shot]
!!/die
[Permissions] NO
What other commands are there?
STOP KILLING THE BOT
I'M TRYING TO FIX IT
02:15
This isn't interfering with you fixing the code, right?
message sending? no
Let us have our fun. Pleeeeease?
but restarting it sure is
@user no
@Ginger Really? How?
Bot works in mysterious ways :b
02:16
i suppose the admins rn are just you and lyxal?
but has been shut down
Btw, I don't think it's necessary for it to announce itself every time it joins. We can see it in the users list
(quick interlude and a reminder for me for after lunch: I need to look into why a variable followed by execute-lambda at the end of a program seems to be moved to the front - also, look into whether or not variables are being combined into groups in the arity grouping phase. Also I need to specifically test to see how something like ... $abs execute-lambda is being parsed - I'll make a test for it)
Resume bot discussion
IT'S TIME TO BE A [Big Shot]
it'll probably work now
@user it's so I can easily tell if it crashed
@Steffan hyper, lyxal, and I
02:20
!!/die
[Permissions] NO
ok it work
!!/díe
[DíE]!? LYXAL!? WHAT ARE YOU TALKING ABOUT!?
nice
02:21
lol
go commit díe
2 messages moved to ­Trash
You'll have to me-proof this:
@emanresuA eh? looks fine to me
02:25
Click on the link ;)
@Ginger whatever you do don't add a dice rolling command
why not oh no I have fallen for your trap
@Ginger pxeger happens otherwise
oh no
02:29
Jul 13, 2021 at 8:04, by pxeger
!!/roll 4996272011d4996272011
Mfer froze the bot
I mean it did roll 4 billion dice q:
Do we want a bot to automatically update our libraries and sbt plugins and stuff?
sure
Why not
@user yes lambdas need the index for context variable m
Ah ok
02:38
I've got something locally not pushed yet
@steffan an idea for the website - the ability to open up multiple output and code tabs
You could send a program's output to a different box each time or run multiple programs at once
Can't people just open another tab in their browser for that?
All on the same page though
Convenience
And then you could allow programs to read from other output boxes and do some weird sort of multithreading program communication thing
Uh-oh
Who's going to implement all this multithreading program communication stuff?
Because webworkers are pain
You can't have two at once?
You can
02:50
Well then you just make multiple webworkers
Communicating between them will require callbacks or something, right?
And they all include which box they're sending output to in their messages
@user no no the program literally scrapes the output box :p
o.O
The web workers just have a number assigned to them
Or something like that
They already have a session value if that helps
03:22
@user you say mutability bad, but it's all my brain could handle at 11pm :p
I mean, mutability isn't always bad, it's just that to gain admittance into the FP community, I must yell MUTABILITY BAD whenever I see the word var
@lyxal It did actually terminate the following day.
that's crazy
it took a whole day to roll a random number?!
all day
the backlog on the bot was one of the backlogs ever
I thought surely it would just crash or segfault or something
03:36
it just kept going
@Steffan Generating numbers takes O(n^n), didn't you know
Generating the nth natural number is one of the hardest problems in CS
am I an nth natural number?
Any more feedback on my latest Vyxal MVP? I think I only heard from mathcat and ginger
They complained it was too high contrast
18 hours ago, by lyxal
I feel like maybe I shouldn't be allowed to close the code tab on the new website without a way to bring it back :p
lol it's not done
it's an MVP for a reason
03:45
that's why it's feedback :p
I'm going to implement it but I'm going to do some other things first lol, like adding inputs and moving buttons where they belong
And getting Pinia set up
What's pinia again?
Store
@Steffan Love it! I'm not sure the option to open a tab in a new window is needed, though
^
it's really cool that you can change the layout
I only ever went with the TIO look because it was a safe layout style
but this new way of doing this is epic
{ctx-n 0 < if ctx-n negate else ctx-n endif} :=abs
[12|4|7|3|9|3N] sort-lam $abs execute-lambda | negate end
> [ 3 | -3 | 4 | 7 | 9 | 12 ]
04:02
Pushed a new commit to use Pinia
I disabled the maximize on tabs, I'd hate it to accidentally click it lol
{ctx-n 0 < if ctx-n negate else ctx-n endif} :=abs
[12|4|7|3|9|3N] sort-lam $abs end
Are we... implementing vyxal in vyxal?
no
it's because there's no abs element yet :p
and I needed one for testing
the point was more that you don't need execute-lambda after $abs anymore
I think the multi-branch stuff of the PR is mostly done (except for reduce lambdas with multiple branches)
time for the parameter parsing part
I'm thinking to just reuse the same : syntax used in v-2
so you might write lambda x:y:z body $x $y add $z times end
and that'll make a lambda with arguments x, y and z
or lambda x:1:y ...
which puts an argument into x, pops 1 value and pushes it to the stack and then an argument into y
and * for varargs
lambda ~ body ... end could be for lambdas that operate on the stack
04:26
I set up the sidebar and moved the run button there. Going to bed now lol
o/
ooh looks nice
04:44
@Steffan Looks really nice. Minor bug, you can see the options to maximize and stuff if you move a tab ^
 
7 hours later…
11:54
Gonna switch : to , for lambda parameters
Because it looks nicer in literate mode and consistency counts
!!/test
[Test]!? GINGER!? WHAT ARE YOU TALKING ABOUT!?
wow, the bot survived the night
that's a nice change :p
!!/die
SEE YOU KID!
IT'S TIME TO BE A [Big Shot]
12:06
bruh
2 mins ago, by Ginger
wow, the bot survived the night
I had to fix that
please don't, I want to see how long it'll run stably for
and now you've reset my progress
The fact it survived 7 hours indicates that it should run stably unless the server restarts
no, it really doesn't
not when it's sechat we're talking about :b
I clearly have more confidence in the library than you :p
in other news, I wrote a function for the parser and completely forgot to use it
and spent the last 5 minutes wondering why things weren't working
5 6 λx,y|#$x #$y +} Ė
> 11
and the tests fail
wonderful
   java.lang.NullPointerException: Cannot invoke "String.isEmpty()" because "$this" is null
[info]     at scala.collection.StringOps$.nonEmpty$extension(StringOps.scala:1168)
[info]     at vyxal.Context.pop(Context.scala:57)
huh
you know you've done something wrong when you get a java error in your scala
12:21
@lyxal lemme just say I have never seen a library that loved failing silently after working fine for a week more than sechat v1
12:48
1 2 3 3 lambda * do fold- add end execute-lambda
> 6
13:26
aight, time for more bot work
today we will be adding commands
yknow I just realized the bot is offline :|
I didn't do it
IT'S TIME TO BE A [Big Shot]
> ValueError: 34 is not a valid EventType
I'm sorry what
wtf is event 34
34: "EventUserNameOrAvatarChanged",
you caused it
you killed the bot yourself :p
fuq
13:30
dignus :p
wait, where is that list?
weird, I'm pretty sure I copied that list verbatim when I made sechat v1
bruh
I did, but I mistyped the last 3 event numbers when I copied them over back in *checks GitHub* June 2022
that's been a bug for like half a year wow
SEE YOU KID!
IT'S TIME TO BE A [Big Shot]
ok, that should be fixed now
anyway, time for commands
13:39
SEE YOU KID!
bot will be in the sandbox for a while
is it safe to do things that would otherwise send webhooks?
yes lol
if the bot isn't running nginx will just send a 502 back to GitHub
@Steffan @user #1611 - better lambdas is now ready for review
it needs tests before merging though
now, what's the best way to implement help
13:41
but it's 12:41am and I wanted to click button, so I'll add them later
o/
14:40
Should we send a delegate to APL Seeds '23? d:
15:13
@mathcat this isn't anything to worry about, is it?
@mathcat are we using py directly?
lemme check
nope, we can just bump our pytest version to fix this
oh good
hmm ig you need to update poetry.lock too
wait I'll pull
just a second, we've got errors
lmao it needs to be locked
one second...
ok done
can we get some approvals
15:25
we can merge tho, right?
yes
boom done
back to golfing
I need to maintain my #1 week spot
15:49
@user Oops. That's because the options to show maximize or not is set in my default layout, so when the user moves them around, it resets
I don't think I can fix that
interesting design
maybe bigger font size for accessibilityâ„¢?
I'm pretty sure wcag recommends 16px or larger
the tab names are 12px but they're not something long and important
yeah ig
16:11
just made my first vyxal answer :)
\o/ congrats
congrats
argh ninja'd by like 10 ms :P
already outgolfed thethonnu lol
bye 4 bytes -.-
Actually, I guess I can just select the maximize button in CSS and force it to be hidden
@Jacob oh wow
16:50
IT'S TIME TO BE A [Big Shot]
ok, the bot has some new commands
I'm going to be afk for a while so I'm starting it back up
!!/status
I am doing ballet at the Bolshoi Theatre in Moscow
!!/status
I am doing benevolent things like giving back to the community by volunteering at the local soup kitchen
also, !!/status has some new functionality
I'll let the bot explain:
!!/help status
16:53
!!/status: I will tell you what I'm doing (maybe). If you don't have a sense of humor and/or are a bot developer, run !!/status boring for actual status information.
!!/do you do ne do ne do ne do ne do ne are is do ne do ne do ne do ne do ne is are are are are is is is is is is is is are do ne do ne do ne is are are is are is are is do ne are is do ?
!!bug!!
the only new commands I added are !!/help, !!/status, and !!/info
so nothing else works
Does it use the gpt3 generated status messages tho?
it also doesn't have the various regexes from the old bot implemented yet, so there's only one way to run commands
@mathcat I copied the status messages verbatim, so if the old bot had them the new one does too
noice
we still haven't seen many of those
16:55
wait, were they in data.yml?
those were the only ones I copied
lemme check
yup that's right
the flowey quotes are almost nostalgic :p
!!/status
I am doing an environmental scan of the local area. You should really stop leaving those banana peels everywhere, it's attracting bugs
lmao
lol
17:02
Random question: Who actually started the cookie meme?
I'm not sure if it was user, lyxal or pygamer0
17:24
Header and footer is now added to the website
I proposed the question a while ago and only got one answer: CM6 or Monaco?
monaco just because ik what that is :P
is the changes published?
2 days ago, by Steffan
Should we use CM6 or Monaco?
@Seggan Ofc
CM6 is just CodeMirror 6
Atm I just have a textarea, so I ened to know CM6 or Monaco so I can use it
?
Welp people be gone
lol
Like I said, I'm kind of leaning towards using Monaco rn after actually trying it out
Yeah you have all VScode's nice features
CM6 was quite an improvement over v5 though, so it's pretty good
._.
I guess it's Monaco
We got 3 votes for monaco and 0 for cm6
Even though 8 billion people haven't voted
17:45
We can now flex that Vyxal is equivalent to vs code :d
18:27
!!/status boring
Bot status: Online
Uptime: 1:37:17.513948
Running since: 2023-02-14T16:50:32.933733
Errors since startup: 0
18:48
lmao yes
00:00 - 19:0019:00 - 00:00

« first day (1033 days earlier)      last day (742 days later) »