« first day (3861 days earlier)      last day (986 days later) » 

2:00 PM
@BrowncatPrograms Yeah but prefix has the luxury of having expressions grouped together
That doesn't exactly happen in stack land
Anyhow
 
It doesn't use that
 
I'm going
 
That's not how it works
 
It's midnight
 
2:00 PM
And I'm tited5
 
\o
 
*tired
o/
 
@BrowncatPrograms replace should be shorter than map...join, no?
 
@exedraj No you're not, you're lyxal
 
@Neil Forgot about that, yeah
If anyone's interested, the way Ash's dynamics work (the name for any operators that take a function) is that they have an implicit {
So it's just a normal function, but using a dynamic (where a function would be necessary anyway) starts the function implicitly
 
2:04 PM
@PyGamer0 Retina, 19 bytes
 
@BrowncatPrograms So there's no prefix weirdness, it'd work just as well with postfix, stack based, or other types of tacit
 
@AaronMiller Charcoal, 11 bytes: ∧⁼ηIΣηI⌕θΣη Takes x and y as a list and outputs "", "0", "1", or "-1".
 
2:25 PM
0
A: Sandbox for Proposed Challenges

simonalexander2005A phonetic letter input a letter of the alphabet, A-Z (upper or lower or a mix, I don't mind) output the phonetic (i.e spelled name of the )letter of the one passed in, along with the appropriate indefinite article a or an (again, in any case) full set of test cases (lowercase) - see This english...

 
@exedraj my third ever answer was in brachylog and the first two were in clojure lmao
 
@exedraj I think 05AB1E, although I only used that once. My first "regular" esolang would probably be Husk
 
I don't think I've ever used a golfing language.
 
Huh
 
2:36 PM
What's the first esolang you used?
 
Brainflak.
It's just the first language I used.
Actually I seeems I have some Husk answers:
https://codegolf.stackexchange.com/a/211958/56656
I don't recall making this but I have apparently used Husk before.
 
6
Q: User card is missing padding between username and reputation in review queues

GlorfindelIn the Close Votes and Low Quality Posts queues, when reviewing a question, the padding between the username and reputation seems to be missing:

 
2:51 PM
@BrowncatPrograms Dang, I can't post a bunch of resources and studies about the effectiveness of the COVID vaccine in their google classroom, because they disabled class comments
 
lol
@WheatWizard For LotM?
 
3:12 PM
Oh no...someone in my class is trying to write a program to translate Python to Java, with no knowledge on how either language is parsed/interpreted and no relevant libraries
2
 
@BrowncatPrograms tell him that i said: "good luck :P"
 
@BrowncatPrograms ...Why?
Not only is that hopelessly doomed, it'd be about as useful as umbrellas with sprinklers
 
No idea. I'd ask them, but I really don't want to be the one to crush their dreams.
 
Tell them to just use Jython
 
3:38 PM
  public Vehicle(int n) {
    location = n < -20 ? -20 : n > 20 ? 20 : n;
  }

  public void forward() {
    location = new Vehicle(location + 1).getLocation();
  }

  public void backward() {
    location = new Vehicle(location - 1).getLocation();
  }
You can tell I didn't want to re-write the ternary mess :p
Even though it'd be way easier
But this is more abstract
 
Isn't that just min(20,max(-20,n))?
 
Yes
But we're not supposed to use those yet :p
Oh nice, they're finally teaching us about comments 45% of the way through the class
much comment, very advance
 
<!-- /* {- #// how does comment? -} */ -->
 
Well frick
The instructions for our assignment are on github
And github.io is blocked here
 
3:57 PM
Okay I've figured almost everything out from running it and seeing what errors or is marked incorrect
Can someone go to amooc.github.io/right-triangle/RightTriangle.html and tell me what formatting I'm supposed to use for toString?
 
Uh...well then I guess I'm really not going to get a 100% on this lol
 
 
I think I might've found a cached one
> A String representation of this right triangle. This is in the form "right triangle with base a, height b, hypotenuse c"
Found it!
 
4:03 PM
\o/
 
🎊
 
🎉
 
@BrowncatPrograms Why tf are you literally making a new Vehicle object just to change the location?
 
Abstraction, of course
 
That's not abstraction lol
 
4:06 PM
We don't need to know how the location is determined, we just try to put a car there then figure out where it ends up
This is obvious and very good practice
 
lol that's exactly how I drive
 
Aaron Miller is 1D convirmed
No right() or left()
 
No, I am 2D because am plate. My car is 1D.
 
How does a 2D object fit in a 1D object?
 
4:08 PM
Practice
 
Linear transformations
 
Unless your personality is so one-dimensional you can be compressed into a single dimension
 
How many dimensions is a plate-like personality?
 
Cursed languae feature: You need a getter to get methods from an object
car.getMethod("forward")(1)
That prevents risks from being able to directly access the method, of course :p
 
*Haskell has entered the chat*
(idk how optics work in Haskell but I hate the record syntax and I hate Haskell)
(Haskell is pretty cool though)
 
4:11 PM
That reminds me: does anyone have any ideas for what Dysfunctional Functions™ means? I have no idea, but its name is good enough that it gets to be included in Cursed.
 
@BrowncatPrograms Isn't that just JS's [...] constructor syntax?
 
@AaronMiller Like a dysfunctional family, they don't always listen to each other (certain functions can't be called from certain other functions)
 
@user How do we communicate this to the user?
 
ERROR: `foo` isn't talking to `bar` right now because `baz` cheated on `foo` with `bar`. Their parents `fred` and `waldo` are also going through a divorce right now, so please try to understand the situation.
 
that's a lot to unpack
 
4:15 PM
lol what determines if a function can talk to another function or not?
 
Their names
 
Random
 
If they share 3 or more letters in their names, they can talk to each other :P
 
 
but then you could just prefix every name with abc_
 
4:16 PM
@user I've found that randomness is a boring way to make something cursed
 
@user Here's a start to how you should be doing abstractions
@Dudecoinheringaahing True
@pxeger Well you do need workarounds to the cursedness
 
@Dudecoinheringaahing Meaning that functions with names that are less than 4 characters will be unable to communicate with each other. That's evil and I love it.
 
The fact that all functions start with that is cursed
@AaronMiller Also, if they share more than 90% of their names but not 100%, they hate each other too
 
Or, if they share 3 or more letters in their names, but those 3 letters can;t be in the same order :P
So abcd and adbc can talk to each other, but abcd and abce can't :P
 
@Dudecoinheringaahing Yeah, I've been trying to avoid unintended randomness and arbitrary restrictions in the cursedness.
I like these ideas. I'll probably combine them into some kind of Cursed Dysfunctional Functions™ stew.
 
4:19 PM
^^^^^^^^^^
Also, trying to force the cursedness is the fastest way to make something uncursed
It's cursed when it seems unintentional or just borderline enough to hit the uncanny valley of cursedness and normality
 
lol true
now I'm trying to figure out if that was unintentional or not
 
Yeah, the best cursed features are stuff that makes sense by the letter of the feature, but make you go "wtf, why?"
 
Sort of like my idea of having integer division error with a remainder; on the very surface it seems potentially something you'd do, but it's just annoying (that's not a very good example, since it still feels a bit contrived)
 
Switch statements that use gotos instead of breaks
 
switch statements but the switch and case keywords are swapped
 
4:24 PM
Switch statements in one of my languages just move the switch block above the switch statement, and turn switch into goto
 
Switch statements but instead of normal cases it's regex matching
 
That's useful
 
Switch statements but switch switches the case of the value. So switch {"Hello, World!"} case "Upper" returns HELLO, WORLD! :P
 
Indenting lines with ZWSP to settle the spaces vs tabs debate
 
Right aligned code
 
4:27 PM
Indent with backspaces
 
@Dudecoinheringaahing I like this
 
@BrowncatPrograms you mean with a Unicode RTL marker?
 
Use spaces and tabs to right-align them :P
 
Input and Output are variables you read from and assign to, but any variable that includes in or out in the name will work, so a variable like isLooping will actually just provide input.
 
4:30 PM
‮abcdefghijklmnopqrstuvwxyz
 
		def fib(n):
	a = b = 1
	for _ in range(n):
a, b = b, a+b
	return a
 
@BrowncatPrograms There's something kinda nice about this actually
 
@Dudecoinheringaahing So increasing the indentation effectively decreases how indented it is?
 
Kind of, yeah :P
 
4:34 PM
I'm gonna refer you back to the language motto:
in TheMostCursedRoom, Aug 10 at 15:33, by Aaron Miller
That's a horrible idea.
Let's do it.
One especially cursed idea we came up with is having regex syntax similar to JS's, except that instead of being delimited with /, it's delimited with r. That doesn't seem super cursed on its own, until you realize that some keywords have an r in them, so a keyword like During would have to be written as Du!ring (the escape character is ! (except when escaping ! (then the escape character is \ (like in most languages))))
 
@BrowncatPrograms the same code but golfed (if it was Javascript, that is.) (can probably be golfed more): n=>[...Array(n).keys()].filter(e=>e%2)
 
No, my function takes an array
It'd be n=>n.filter(x=>x%2)
 
@BrowncatPrograms Ohh I didn’t see that hehe (yep that’d be the golfed version then)
 
4:49 PM
Are there any languages, esoteric or otherwise, where 0 != -0?
 
Not to my knowledge, I think IEEE 754 even says they should be equal
 
I think JS, but -0 doesn't actually create a signed zero. You can, I believe, only do that with fp errors
 
No, 0 == -0
 
> -0 doesn't actually create a signed zero
 
console.log(-0) -> -0
 
4:53 PM
@Dudecoinheringaahing Wherever you got that, it's wrong
 
But toString() gives "0"
 
@BrowncatPrograms Even 0===-0 gives true
 
Yes, like it should
 
@BrowncatPrograms It's JS, all my knowledge comes from half-misremembered SO questions :P
 
4:54 PM
@Adám Object.is does not though
 
Huh, Math.sign(-0) gives -0
 
why does ![] == []?
 
Because [] is cast to a boolean
The more important question is why new Boolean(false) is truthy :p
 
But if [] == false, why does ![] == false?
 
4:58 PM
Because JS gotta be JS.
 
new Boolean(false) == false is true
But new Boolean(false) is truthy
That's so cool
@AaronMiller Because arrays are truthy
JS probably uses a separate truthiness algorithm for ==
Wait no
They're probably cast to numbers
 
 
In Cursed, -0 and 0 will both effectively equal 0, but will be unequal to each other.
 
There are for equality algorithms in JS
 
5:05 PM
four?
 
SameValue, SameValueZero, Abstract Equality Comparison, and Strict Equality Comparison
SameValue, used by Object.is, is the only one that considers 0 to be different from -0
TIL:
 
Why are there no <<< and >>> and <== and >== as alternatives to < and > and <= and >= but without coercion?
 
>>> is already in use
 
Oh, I didn't know.
 
And I doubt any of those are useful
 
5:10 PM
(![])<[]
false
[]<![]
false
[]==![]
true
[]===![]
false
 
What should it return if it doesn't cast them and they're unequal types?
 
Object.is(-0, 0) === false
 
It's not like equality where you can just state that they're not equal
 
Either it should implement a total order, or error due to incompatible types.
 
I've never run into and never heard of anyone running into an error due to < and friends doing casting
@AaronMiller See above, already mentioned
Object.is uses SameValue
Which means it also considers NaN to be the same as NaN
Whereas NaN === NaN is false
 
5:13 PM
oh, missed that
tfw x = NaN, and x != x
 
Okay, so what's happening with ![] == [] is that [] is cast to a primitive, and ![] (false) is cast to a number (0), then they're compared
So evidently [] is 0 as a primitive, which makes sense
It's probably stringified to "" then cast to a number, which would be 0
 
i.e. it's magic
 
@Adám Ooh, this is very helpful
 
Interesting, SameValueZero still considers NaN == NaN to be true
So [NaN].includes(NaN) is true
 
@AaronMiller I really like this, because if you allow assigning the groups to names, it would actually be very useful
But horribly unintuitive and inconvenient too
 
5:24 PM
and, if you tried to use it on anything other than strings, horribly error-prone
 
Also, IEEE-754 has multiple NaNs, which can be accessed using TypedArrays, meaning that you can have two NaNs which are not identical with Object.is
Fun
 
@pxeger Well I was thinking of making it stringify everything
 
well that's what I mean
 
Oh yeah
 
imagine trying to regex-match the string representation of an array
or, worse, a float
 
5:25 PM
Not too bad honestly
 
@user I'm not sure which groups you're referring to
 
Actually wait, they are identical with Object.is
More fun
 
@AaronMiller Captured groups
$1, $2, and so on
Oh and because we believe in functional programming, everything should be an expression, including statements like goto
 
but in Python and other flavours you can name them like (?P<my_group>.*)
@user so does goto return the bottom type?
 
There's no return keyword, the last expression is implicitly returned
 
5:27 PM
that's not at all cursed
particularly for a functional language
 
@pxeger I was thinking of the result of executing that label but that works too
 
But...goto doesn't have a last expression
 
@pxeger I know
 
@BrowncatPrograms that's why it returns the bottom type!
 
I like that about Scala, but in a language like this, it would get confusing
@BrowncatPrograms Like if you have ;label; <some expr> and then goto label, it would return <some expr>
All blocks are expressions that return the last expression in that block
 
5:28 PM
goto should return the machine code/bytecode generated for the expression being jumped to
 
@user You're in charge of implementing the regex and pattern match and whatnot, so I'll leave it up to you. I like the idea, though.
 
Great, thanks!
What do you think about statements as expressions?
 
but if it's being jumped to, so it can't possibly return anything?
 
I was about to point that out yeah
 
unless you want it to implicitly jump back, which just sounds like function calls with extra steps
 
5:29 PM
@pxeger After you jump there, it comes back to the goto ;)
 
@user I like it, if we can figure out the logistics of it.
 
@user That's useful
 
@user sounds like function calls with extra steps
 
@BrowncatPrograms We call them "functions" :p
 
> usefuk
Ah true, Redwolf's idea might be better
 
5:30 PM
goto can't return anything though
 
Or pxeger's, although just returning ()/Unit/never whatever feels lazy
 
When you goto, you go somewhere else and can't use the return value
 
@BrowncatPrograms Maybe gotos start a new thread
 
The goto statements don't return implicitly, but there is a label called ;camefrom; which will return to the last place jumped from, so we could make it return something if we wanted.
 
So in the current thread, they return the bottom type, and it goes to the new label in a new thread
@AaronMiller That's good
 
5:31 PM
@user like Unix fork?
but with threads
 
I guess?
Or Go's go, I think
 
@user that sounds similar to what I was thinking for asyncgoto
 
Nice
Maybe asyncgotos are allowed inside normal (non async) functions but they just fail horribly
Somebody please write all of these ideas down, they're all deliciously evil
 
Also, implicit conversions are going to do some weird stuff, for example it might do something like cast to an int if possible before casting to a string, so something like null will cast to the string "0" instead of "null"
 
And you can define your own implicit conversions, like in Scala
That might also slow down programs by a ridiculous amount and make them hard to debug
 
5:35 PM
@user asyncgotos will probably be the only async stuff in the language, they'll simply start a new thread or something, but continue execution in the current thread as well.
 
Can threads be joined or awaited or deleted?
 
Nope, they run until they hit a statement to terminate them (not sure what that will be yet), but they will run alongside the other threads, so they can change variables and stuff for the other threads.
 
Oh no
 
Oh yes
And all variables are global
 
I think that's a little too cursed
 
5:40 PM
This sounds like assembly with more compexity :p
 
@user the async, or the variables?
 
compexity™
I am spell
 
Plus, with scopes, we can have Python-like cursedness where you need nonlocal foo to assign to foo instead of creating a new variable foo
@AaronMiller All variables being global
@BrowncatPrograms Hi spell I'm user
 
@user nope, they're all global
:)
 
grrr
 
5:42 PM
It makes it easier for the user, since they don't have to keep track of scopes and stuff within all the functions and gotos and stuff. :)
 
lol
 
( ͡° ͜ʖ ͡°)
Also I'm not sure how I feel about instantly recognizing every string there that taken from the wikipedia page on the scunthorpe problem
 
I don't understand "evaluate" and "expression". Are there languages where those are functinos/reserved keywords?
 
6:15 PM
@DLosc Why not go back to Snoopy for dog week? :P
 
6:53 PM
Feel free to brandish your pitchforks: Top bar is now sticky for everyone
 
If I had the rep, I'd edit that to be a
 
For every downvote on CGCC (on undeleted posts, I think), there are 164 upvotes
Wait no
I'm bad at sql
Wait yeah
I'm not bad at sql
It's 164
Query: select cast(count(case votetypeid when 2 then 1 else null end) as float) / count(case votetypeid when 1 then 1 else null end) from votes
The ratio on CGCC meta is slightly lower (as expected), around 124
And on stackoverflow it's 14 :p
 
@BrowncatPrograms votetypeid = 1 is accepts, not downvotes
 
7:07 PM
Yeah yeah shut up :p
 
Why did they even do that?
 
On SO it's around 7.6
On our meta it's around 6.3
 
> Edit: from your comment reply to Sonic pointing out this SO bug report, it sounds like the issue at hand there was that your own team was not aware of the feature. That is not really a bug, so I'm guessing there are other issues.
 
@Dudecoinheringaahing I didn't even know that could be disabled :p
 
On MM it's around 3.57
 
7:09 PM
Enter 2, 6 or 10 to find the ratio of a type of vote vs its opposing vote (up/down, close/reopen, vtd/vtud)
 
6 gives me a division by zero error
 
ngn
@Dudecoinheringaahing i don't have enough rep to downvote so i'll just wave my thumb down in the air
 
Wait yeah, they stopped counting close votes that way in 2013
For every vote to undelete here, we have 4 votes to delete
 
@ngn Post something in the (MSE formatting) Sandbox so I can bounty it and you'll have enough rep to downvote :P
 
@ngn Downvoting requires 101 rep on MSE
 
7:11 PM
Windows phone has a ratio of 5.5:1 for up:down
> We didn’t change the default. We’ve only removed the ability to change the default.
Ah, reassuring
 
??? that means literally nothing
 
> We didn't change something that takes you ten seconds to change back, we changed something forever and frick you
 
ngn
@Dudecoinheringaahing i have 99 since monica and stuff :)
 
Got to love downvoting answers :P
 
> We didn't tell your child your house burnt down. We've only burnt down your house
 
ngn
7:14 PM
if downvoting is -1 rep, why isn't upvoting +1?
 
Hmm, I wonder why :p
 
ngn
rhetorical question :)
@user this sandbox? it seems i don't have enough rep to add an answer :) but thanks
 
32
A: New Community VP seeks your input - what should we be looking to change and what is inviolable?

Adám One thing that you would advise me (in my role as VP of Community here) never to touch. Stack Exchange…  …without asking the community first. The core community is tired of radical changes being announced as they happen. One thing that you think I should change as quickly as possible. Stop l...

 
@Adám I'll make sure to ping you the next time a change is made so you can add it to that :P
 
@Dudecoinheringaahing Thanks. Is the existing list there missing any old ones you can think of?
 
7:21 PM
@ngn Oh, that's too bad
 
@Adám Not that I can think of
The most recent profile changes (not shipped yet) were demoed for feedback, I guess that wouldn't count
 
How did the topbar used to act when you disabled the sticky?
 
Probably was just static
 
@AaronMiller Like on GitHub.
 
I'd make a userscript to fix it, but this is really an issue for userstyles
 
ngn
7:30 PM
@AaronMiller it hid when you scrolled down
 
isn't it pretty much as simple as a .top-bar { position: static; }?
 
@ngn can you take into account castling (whether the king and knight have moved)?
 
ngn
@Wezl it's 4 bits: can {white,black} x {castle queen-side,castle king-side}
 
wow, you answered quickly after I responded two days later
 
8:03 PM
Is there a way to tell in a userscript when the chat finishes loading, like some sort of event or something? window.load and document.load are too soon, and not everything has loaded yet, and adding some arbitrary setTimeout feels really jank.
 
8:16 PM
DOMContentLoaded doesn't work?
There's MutationObservers, I think
 
I forgot about DOMContentLoaded. I'll try that.
Hmm... I have
window.addEventListener('DOMContentLoaded', (event) => {
console.log('DOM fully loaded and parsed');
});
This was taken directly from the MDN docs, but it doesn't seem to execute at any point.
Wait, does the fixed font thing only work if the whole message is fixed font?
 
Hi
gyes\
 
8:32 PM
hOI!!!
 
G'day mate
 
@AaronMiller Yes
 
oof
I'm going to try MutationObservers next. From the docs, it looks like that might just do it
Hey, MutationObservers will actually fix a problem I was having with one of my other userscripts. Nice!
 
8:58 PM
@Dudecoinheringaahing I'm gonna return to Snoopy eventually. As long as we're having special weeks, I figured I'd rep some other comic characters I like.
If we do sharkboy/lavagirl week next, it'll get harder, but I have a couple ideas :D
 
9:18 PM
lol
 
9:41 PM
@AaronMiller Use @run-at document-start
Otherwise the script doesn't run until the DOM's ready
But the default behavior is to run when everything's loaded, so you might not need to do anything
 
What about 22 :P
(tho not really, the search isn't a great one)
 
More like 3.
Have you coinheringaahed today?
 
Yeah, I do my daily coinheringaahings when I wake up :P
5
 

« first day (3861 days earlier)      last day (986 days later) »