« first day (5028 days earlier)      last day (38 days later) » 
00:00 - 17:0017:00 - 23:00

00:03
wow.
Is typeadd... an automatically defined type inhabited solely by a (possibly-0-size) representation of add as a type?
Correct on all counts.
If that's a hack to make it look like you have an overloaded function if you already support overloaded metamethods, the jank doesn't seem too extreme
Like it's still a hack for sure but a relatively sensible one
Metamethods are easy to overload, because they don't change at runtime. Functions however, may.
I can make it work by implementing a tuple type, but it's going to be an uphill battle
00:22
Does Brainchild compile to brainfuck?
used to iirc
Ahh, that explains the name and the idiosyncratic assembly representation
It used to, and theoretically could be resurrected to do so
But roughly at the point I wanted 32 bit ints instead of 16 bit ints I threw in the towel and burned the connectivity
@emanresuA for anyone wondering what happened to this: all our "golflang creation myths" are kinda based on the idea that golfing languages emerged from the void fully formed, a platonic ideal of a golfing language, when in reality they took years of feedback and iteration to become what they are today - and it's kinda difficult to frame a history around this, especially when you're also trying to highlight that there were plenty of langs which were abandoned partway through this
also I may end up having to split this into two separate blog posts if I'm not careful
00:28
Not a horrible outcome, all things considered :P
You could also split some content you feel is not-super-necessary-but-not-worth-cutting into that second blog post if it's length you're worried about
@ATaco it must be nice not needing extra dummy types to achieve a 1/2 arg split :p
because the vyxal 3 way is:
record Nil => }
extension AddFunny given
  lhs as Nil,
  rhs as num
does
  $rhs 2 +
}
extension AddFunny given
  lhs as num,
  rhs as num
does
  $lhs $rhs +
}

5 `Nil` $@AddFunny print
5 7 $@AddFunny print
I read that as one-half arg split for a second or two
also I feel like there is a qualitative difference between a function taking a flexible number of arguments and one being type overloaded on a fixed number of arguments where some of those arguments can be a unit type :P
granted that is presumably the closest you can get with a stack language
that's what I was aiming for :p
obviously, without taking an explicit parameter list, you can't have something pop and utilise num and num, num at the same time
Now I am trying to imagine what kind of system would actually be able to support a function literally taking half an argument
@UnrelatedString There's currently a section on hypothetical fourth-generation languages, and (semi-)recent ideas that could potentially be (/ have already shown themselves to be) quite powerful, might end up splitting that
00:37
Ooh
Yeah good call
@lyxal ...come to think of it, a greedy/ambiguous approach could be possible where it pops two arguments and does the binary overload if they're both nums but pushes the bottom argument back and does the unary overload if only the top is a num
I'm very interested in the history of golfing languages
Very stupid because it would in practice presumably be waaaay more pain than it's worth to actually use
@UnrelatedString what if I have two numbers on the top of the stack and want to call the unary version?
but possible
17 secs ago, by Unrelated String
Very stupid because it would in practice presumably be waaaay more pain than it's worth to actually use
I tried writing something about it at some point, though it was more from a perspective of having some value in "purity" which is something I don't think I was right about at the time
00:40
@UnrelatedString sounds like unit types with extra steps :p
presumably the workaround would be something like tucking a dummy value under the top and then getting rid of it afterwards, so yeah, you would probably use a unit type with literal extra steps
@emanresuA e.g. compression (vyncode, jcram), static typing (catstruct/newspeak although those never got beyond prototyping, more recently iogii to a degree (I need to look more into iogii, there's some ideas there that looked quite interesting from a first glance but I should probably try and understand how they actually work)), nondet stuff e.g. nekomata, fracbytes, etc
@UnrelatedString besides, it's already implemented like that
without the popping two things part
extension AddFunny given
  rhs as num
does
  $rhs 2 +
}
extension AddFunny given
  lhs as num,
  rhs as num
does
  $lhs $rhs +
}

"rizz" 5  $@AddFunny print
calls the first option
...only calls the first option
somehow, it defaults to only using the unary version if there's a conflict
It'd be nice if extension{ / record{ were aliases, the unbalanced brackets annoy me
you can use end instead of }
00:43
Ah :p
as well as any of:
"endfor",
"end-for",
"endwhile",
"end-while",
"endlambda",
"end-lambda",
extension AddFunny given
  rhs as num
does
  $rhs 2 +
end-lambda
is perfectly valid and does the same thing
That looks like the sort of sugar I added to my first version of RProgN
so 2 is funny, TIL
@emanresuA FWIW Nekomata isn't the first nondet golfing language, it's just the first to combine nondeterminism with other aspects of modern golflang design--Brachylog is occasionally competitive despite design goals explicitly prioritizing aesthetics and Prolog-like structure over raw golfiness, and Perhaps was going to be modernized-Jelly-plus-nondeterminism but I never actually got around to implementing the nondeterminism or SBCS syntax :P
@ATaco in fact:
extension AddFunny no?
  rhs as num
else:
  $rhs 2 +
endfor

7 $@AddFunny
is also valid
00:47
That is funny
because there's 22 different branch aliases
all of which are interchangable :p
(they all get turned into | at the end of the day)
Also Husk is statically typed--in fact IIRC its big core feature is being able to change how it parses based on static type inference
@UnrelatedString I'm aware of that, yeah, and I'm definitely going to mention brachylog (and if you want to talk about your plans for Perhaps lmk) but Nekomata's model seems extremely powerful, especially for brute-force things where you get, sort of, implicit maps / cartesian products over all possible values
once again, need to look more into that
00:51
And yeah Nekomata's super good at it
Its model is IIRC exactly the same as Brachylog and Perhaps's models, minus the constraint logic Brachylog has, but the constructs for manipulating it are very elegant
The one stupid thing I was going to innovate with Perhaps that I also kinda got hung up on planning for when I stopped making progress was some kind of tagging for infinite lists that would turn that implicit Cartesian product into traversing a table of pairs by antidiagonals, which would save some effort for some thing where in Brachylog you'd do something like minimize the sum of two variables or whatever, but I forget how Nekomata handles that kind of thing--probably just individual builtins
also the more I look into this the more I feel like Vyxal 2 is the PHP of golfing languages - a kitchen sink of builtins which sometimes are very useful and sometimes are very not, and a lot of lingering jank. It'll be interesting to see how v3 goes, but at the time it was getting started I don't think I understood quite how necessary (mostly) starting from scratch was
01:13
True
Basically I think we need more golfing languages with different ideas being thrown out
I have a golfing language which I have been quietly designing (though not yet implementing) for about a year, though I don't think it'll be more competitive than say Jelly
01:31
The amount of times I've typed meatmethod instead of metamethod
It's harder than it looks :p
Because of the time dedication required to see the project through
I have realized that :P
Y'all want to use languages instead of infinitely tweaking them?
@lyxal More like:
Design can also be hard sometimes once you've gotten past the reality of initial ideas :p
01:39
The Implementation IS the design~
01:59
@lyxal one might say a full commitment's what you should be thinking of (something you don't get from many other golfers). If you don't spend time on your golf language, then there's something you should understand: you're never gonna push it up, people are never gonna golf it down, people are never gonna run programs in your language
Oh mein gott, an old bug has come back to haunt me
Defining a function inside a function changes the expected return stack
02:17
What is the general term for multidimensional arrays like T, T[2], T[2][2], T[2][2][2], and so on?
If there is none, I'd like to call them "binary hypercubes".
02:49
0
A: Sandbox for Proposed Challenges

Dannyu NDosMultiplication in \$\mathbb{Z}[(-1)^{1/2}, (-1)^{1/4}, (-1)^{1/8}, \cdots]\$ Objective Given two (complex) numbers in the adjoint ring \$\mathbb{Z}[(-1)^{1/2}, (-1)^{1/4}, (-1)^{1/8}, \cdots]\$, multiply them and output the result. I/O format The inputted numbers and the outputted number shall be...

Nvm; I guess binary trees are better.
 
5 hours later…
07:56
Today on your weekly "make fun of philosophy stack exchange":
1
Q: Chat Considered Harmful

Scott RoweCould we just not use the Chat feature? If things get that out of hand then TILT - Game Over - put in a new quarter and start again. I don't see a point in embalming bad discussions in little boxes that most likely won't get looked at, except by people trying to scrape personally identifiable inf...

 
1 hour later…
09:18
TIL that a post's edit history tells you when it became a HNQ
If you go into the timeline (little clock button) there's a bunch more events
Why did I have 3 different nineteenth byte tabs open? Isn't one enough?
There are 10 types of people in the world:
• Those who understand binary
• Those who don’t
• Those who thought this was going to be another ternary joke
• And those who truly knew this joke would be in quaternary.
CMC Extend this joke forever
* those who know that base 10 is base 10 in every base
* those who don't know 😊
* those who know 💀
10:20
foiled again!
@mousetail'he-him' you should really pay your tabs, or the barman won't serve you anymore
10:34
@mousetail'he-him' I accidentally do that sometimes
I'll have TNB open in one tab, forget it's there, be in another room, and think "I should check in TNB" and open it again
There is 10 type of person in the world:
• Those who know that unary doesn’t work in this joke.
Another variation:
There are 10 types of people in the world:
• Those who understand unary
• And there are no other types.
doesn't really work with 10 does it
maybe with 11?
There are 10 types of people in the world:
• Those who understand this joke is in base f_omega(99^99)
• And the rest are different ways people do not understand this.
___
There are 20 types of people in the world:
• Those who don’t understand why this joke is in base 1/2.
That doesn't make sense, it would be 0.1 people in base 1/2
@TheEmptyStringPhotographer that is approximately f_omega(99^99) more types than there exist or have ever existed people at all
... is APL 1-indexed?
10:50
Yes it seems to be
Are you doing the APL challenge?
yeah
the challenge is nicely done at elast, not sure i enjoy the language yet
With the builtins available in the challenge at least, a lot of trivial things seem very tedious
for challenge #6, is there a way i'm supposed to duplicate the string i'm testing or is the solution really to just use 2 identical string literals like 'APL'≡⌽'APL' ?
this solution is accepted but it feels wrong
I duplicated the string too
You could do {omega = reverse omega} 'APL' I guess
11:06
ah, it passes 'APL' as an argument
i can't edit my submission though 🤷‍♀️
1
A: Sandbox for Proposed Challenges

Benjamin WangIf this question were a question on this site, should it be tagged restricted-source or code-challenge, or something else? https://puzzling.stackexchange.com/questions/129034/an-extremely-simple-programming-language/129041#129041 Assume we have added objective constraints and scoring function so ...

Would this be a duplicate of the bignum bakeoff reboot? Or maybe largest number printable?
It's specifically asking for solutions in a specific very limited esolang, though I believe the language is Turing-complete.
The language is similar to brainfuck but with named variables rather than a tape.
@mousetail'he-him' "Identical to", but yeah :P It's like JS having == and ===, APL has = which applies to scalars and ≡ which applies to the whole array.
@noodleperson I think so yea, we don't need another busy beaver challenge
I think I agree yeah
Left another comment
11:23
I wonder how the APL challenge code judges the fixed output challenges. Does it check if certain substrings appear in the code? The output is just 1 so can't really tell much from that
I think it parses the code and makes sure it only uses identical to and reverse.
or whichever functions are permitted for that challenge. It does say "You did not solve it with the intended method" if you don't
That just checks if you don't use disallowed builtins, not if you actually solve the challenge
whatever they're doing is quite thorough
it doesn't accept any other string than APL
and it doesn't accept manually reversing it
True
Maybe they're checking Solution≡'\'APL\'≡⌽\'APL\'' :p
Actually can you backslash-escape single quotes in APL?
11:43
I think you need to double '' to escape a '
double quoted strings don't exist in Dyalog
Oh nvm I know what you're saying
golf together (which is temporarily here) now has an attempt at a leaderboard
i still want to add bonus points for not being improved for some amount of time and probably needs balancing
but the system is there
the algorithm for now is 5 points for initial solution; as many points as imrpovement bits for each improvement; 10 points for each solution in an approach you submitted
The hirarchy of grouping by approaches, then languages, is a bit problematic for approaches that differ only in the same language
11:58
wdym?
For example, you could have one solution using some standard library module and another doing it raw. But in another language the distinction doesn't make sense
@RubenVerg I feel like there's a fundamental problem with awarding points for byte improvements, namely NOP padding
submit a very long answer with a lot of newlines, etc, and then submit an improvement straight away
and before you say "no points for self-improvements", sock accounts
Or just cooperation between different people
@RubenVerg I guess it depends how you define "approach"
@mousetail'he-him' not sure i understand
if one language does not have the thing in the standard library you just don't submit a solution for that approach in that language
@lyxal i know
bu tbf everything is built on trust anyways
there's no checking stuff works either
and there can't be
I imagine you'll have ways to invalidate improvements?
(for the community to do so I mean)
12:09
yeah
haven't thought of a nice way though
probably voting or a bad actor can delete an improvement then do it themselves and get the improvement points
Be prepared to spend a lot of time moderating
I'm prepared to not have many users(:
I also probably want some bonus points for creating the approach with the shortest solution
Sometimes just a few users can cause a lot of drama though
12:15
yeah, I know
There will be cases where some users view some solutions as invalid, chating, boring, whatever, and another group thinks they are smart and invotive. And you won't be able to make any decission without angering at least some people
12:42
@RubenVerg response time on monitoring says it's 3000ms, it doesn't even load in firefox it just times out
maybe you're swapping a lot and need more ram?
it worked fine for me before, with slightly slow speed I just attributed to Deno
I'm getting Internal Server Error now
it loads instantly for me now
it makes sense for the response time to increase when you add an app obviously but this suggests I didn't size the machine correctly
12:44
Home page is fast but none of the hole pages load
guess I pushed something I shouldn't have
I'll check in a bit
i'll take a tour around the VM when i get home but i think you're gonna need more ram which i'm not sure i have
Suggestion: Add an option to optionally add TIO or ATO links to solutions. It's easier to improve a solution if everybody doesn't need to write their own test harness
Have you tried downloading more ram?
12:48
yes, unfortunately i need more dedidaded wam
@mousetail'he-him' fixed
@Themoonisacheese how much do I have currently?
I really wouldn't expect to need much but haven't ever checked
What DB are you using?
postgres but hosted on supabase
On a seperate server from the code?
the only thing running in the VM is the server itself
12:51
@RubenVerg 2Gb
i think
that sounds like way more than enough
don't forget you're also running an OS
Ok that would explain the slowness, though at least it will be an easy enough issue to fix when you need to and doesn't indicate anything wrong with your code
using 400M I think
which is a lot
@RubenVerg can you do free -h and post the output?
13:10
madeline@celeste:~$ free -h
               total        used        free      shared  buff/cache   available
Mem:           1.9Gi       784Mi       959Mi       1.0Mi       370Mi       1.2Gi
Swap:          974Mi          0B       974Mi
oh
you're fine
i think it's not loading for me because corporate firewall
(IP:port adress on http only is very rarely not a scam tbf)
i suspect the latency has more to do with db access across continents
yeah the pi doesn't connect to wifi anymore so I can't rout through there
(i do already host a postgres instance o nthat network if you want)
I'm hosting it not locally so I don't have to migrate anything when pushing to real server
fair enough
13:14
Migrating with pgdump is quite doable
it's also a chore
That's true
given this is supposed to be a temporary situation i completley undestand not wanting to do that
Spending an hour migrating the database now will save like 1 second of loading time over the lifetime of the site
this is not quite true as simply loading the homepage is already 3000ms but yeah
13:18
i don't remember it taking that much for me
it's taking that much for the monitoring software
you probably have it in cache
2.5-3.5 seconds seems typical for me
I guess doing one query per leaderboard user to get the username when I already queried it before and trashed it doesn't help
don't mind hosting the database locally if somebody suggests a good migration guide though
I guess I also don't mind losing data since it's nowhere near full release
Download locally a postgres client. Run PG_DUMP to get a file, then do PG_RESTORE to push it to the other database
It's gets a lot more complex with compression and such for big databases but the basic version should work for you
(and then don't forget to switch database hosts in code)
i've seen it happen multiple times
13:22
@mousetail'he-him' sounds simple enough
tbh the hard part is that when you are hosting a complex app, you have to ensure everything either changes to the new host gracefully or is stopped during the migration
You probably want to take the site offline for a bit during the process, otherwise you'll end up with partial data in both databases
I kinda wanted to keep the VM around as a backup
I suppose I can make it connect to my server's postgres?
(when I get that of course)
we could even set replication up so that you have 2 synced databases
13:24
Depends how you configure the firewall
that's a bit more involved though
Peano arithmetic vs Piano arithmetic
i'm thouroughly confused by challenge #10 for the APL thingo
Often you block external access to the database in the firewall, just to reduce attack surface. You are in full control of that though
i don't even know if i could do it in a language i know tbh
13:25
I needed a night to sleep over #10 before I got it
@Themoonisacheese think of the things you learned before and how to combine them
I really cannot think of a solution that doesn't also use addition but I'm told that it exists
(on the other hand, you probably don't need a challenge to know how addition works)
i genuinely don't even know where to begin when doing it in a language i know for sure
so maybe i'm just not good enough
it would be probably completely different in a non array-y language
fair enough
Hint: rot13(rvtug)
13:30
i guess that does make sense, but then again maybe i solved 8 the wrong way
doesn't really matter which way you solved it, just its result
What if I made a math language that have recursive functions, BUT they are guaranteed to terminate
How will you guarentee it?
solve the halting problem easy
13:36
1. There will be a secret recursion counter
2. You cannot call any function that is defined after the function you defined
3. You cannot define functions inside functions
the fact y'all are suggesting that spoiler makes me think I solved spoiler a tiny bit differently to most people :p
again, how you solved it doesn't matter at all
While you are here can you please remove The Empty String photographers message please?
how do i make spoilers?
The one that reveals the spoiler
13:37
(i get they're links, not how i set the hover text)
3 messages moved to Trashcan
@RubenVerg [display text](link "spoiler text")
Now see, I already moved the other two :p
@lyxal how do you make private rooms that can’t be read by most people?
there's a checkbox for it
spoiler
cool spoiler
...
you need to actually replace the other parts :p
13:39
oh, that's how you do it without addition
interesting
That's not how I solved it
also "simply" is, it turns out, not that simple
I rot13(V bireynlrq n erirefrq irefvba)
@lyxal for making it so that people cannot read messages there?
I used spoiler
@TheEmptyStringPhotographer yep
well, it's technically a radio button
13:40
@lyxal I don’t see it anywhere
is it mod-only?
@TheEmptyStringPhotographer funny that, isn't it :p
@mousetail'he-him' i don't think that's attainable without prior knowledge though
Are non mods able to use that feature?
:ppppppppppppppppppppppppppppppppppp(p)
13:41
i think you just need to be RO no?
@mousetail'he-him' tbh I don't know
Anyone can be an RO
because you can create private chat rooms with users, in which you're RO
this is what the "let's continue this discution in chat!" thingo does
in the sense that it 100% doesn't display for non-mods, but I've never tested adding it as an API parameter
@Themoonisacheese those are public
Those rooms are not private though
13:43
fair enough
I can create a "Gallery" room but not a private room
I technically own the most “active” room on Chat.SE

Utility Bot

Where Utility Bot sends stuff
feel like there may be some more active rooms than that on chat.se :p
SE admins when 45 Gb of their chat logs are entirely comprised of "bot is online" messages
13:45
It should gzip well at least
7
Look at all the stars on the wall!
In this room ofc
Anyhow, my approach to spoiler is vastly different to my problem 10 answer, and tbh the result of spoiler doesn't really go to informing my p10 answer either :p
i've given up, i now know how i should do it but it would take too much brainpower that i have already expanded on solving 1-9
APL takes a while to get used to
even after 5 years of doing APL challenge related stuff mine is still really ugly
but it's the approach that counts, not the actual APL
@rydwolf stars have aligned and i have heard about gasp research drama with CMU researchers
if you want material for your satirical student paper about the research replication crisis that's a few years old but still unresolved, hmu
13:52
@lyxal fr I just remembered I used spoiler in part 10
with only the covered builtins? How?
well, it's not covered in the first 9 :p
but technically speaking the part in question could be rewritten with covered stuff
making it even worse
My 10 is just rot13(guerr fvk naq rvtug va gung beqre)
...I may have overthought things
my #8 is 26 chars
which feels a lot like overthinking
13:56
hey you beat me by 1 character :p
(can shave like 2 chars but not much more)
well done :p
My #8 is 23
are we counting {}s?
It uses - though
I am
13:57
I was too
✅🐴🔋🗜

Guess the xkcd comic
@TheEmptyStringPhotographer correct horse battery staple
@TheEmptyStringPhotographer you voted for a zebra made out of compressed batteries?
@lyxal That’s not even an xkcd comic!
actually if i strip unneccessary whitespace i get 19 bytes
13:58
@lyxal compressed batteries are dangerous
@TheEmptyStringPhotographer How marvelous, my noble steed changes into the garbage collector
@mousetail'he-him' Sadly incorrect
@Themoonisacheese see, you're not so bad at APL :p
make that 15
i needed the confidencce boost
14:02
19 messages moved to ­Trash
mfw I forget the bakery exists
I'm counting the seconds till TESP grows up
drinks grow-up juice
I am now mature.
@mousetail'he-him' Good luck
@lyxal do me a favor and check discord
14:05
I as like that as an early teen, though I wasn't allowed in any online chats unsupervised
I feel like I was kinda like that to some extent but then as soon as anyone got mad I just collapsed instead of doubling down
I did a lot of shitposting in the Scratch forms
ahaha that brings me back
I got irrationally angry once at people claiming Runescape wat better than Club Penguin
Hopefully nobody here has dan braimage.
14:12
@lyxal wait how
"Base conversion" == a^2*b?
We should get a private room for those who already solved the challenge so we can actually share our sols
@mousetail'he-him' spoiler
btw yall make sure you have the latest version of the pronouns userscript (1.7), tampermonkey is Not Good at auto-updating it
Oh that's not a spoiler tag
lol
14:22
LMAO
@Ginger mine updated fine
wacky
guess tampermonkey doesn't like me
this computer hadn't been turned on for a week though
so maybe it just force checked my extensions
 
2 hours later…
16:30
I love CMU
Have y'all heard of the fence?
Yep
Hard not to have
...actually no I think I only heard of it when I was actually researching for my application to CMU
Wow really? I didn't know it was known about outside CMU
but it's still pretty legendary
@rydwolf They kind of advertise it on their website IIRC :P
00:00 - 17:0017:00 - 23:00

« first day (5028 days earlier)      last day (38 days later) »