« first day (141 days earlier)      last day (466 days later) » 

00:22
you ever get a bug, but while fixing it you go off on a bunch of tangents so ur commits are really huge?
that just happened to me: a simple pop was missing, so to find out the issue i made a debugger, and while making the debugger i revamped my Span class :P
At least I don't keep the entire source code in memory for the length of the execution anymore :P
 
9 hours later…
09:59
math was great today
they told us to start calculating standard deviation
i love python so much
imagine actually typing the whole formula into a CAS who even does that anymore (the rest of my class, apparently)
Designed a lot of programming languages.
Never got to implementing them.
I just want to design a new programming language.
But I am afraid I won't implement it.
@RydwolfPrograms Wait you proposed this site?
I just looked on Area 51.
And I found that you proposed langdev.stackexchange.com.
 
2 hours later…
11:36
@Redz one of the best parts of being a programmer is getting to do this :p
someone: "hey Ginger gimme a random number"
me, starting Python: "one sec"
eyyyyy yearling!
11:48
which is kinda odd since my account is only 4 months old
 
2 hours later…
13:38
The next programming language I am going to make is properly going to be a golflang.
Just saying that out there.
Esolangs are much more fun, but do whatever you enjoy
I meant the next programming language I make is going to be a golflang.
Going to edit the original message.
Yea I got that
@mousetail Esolangs are nice too. Anything that's easy to parse.
What should I name it though.
Painrose is not at all easy to parse lol
13:40
Huh that's not good.
For anyone trying to make a Painrose compiler or interpreter.
Trying to build one now
...
Anyways I am going to name it Golfs or Golfv or something like that.
It will be pretty compact like I want to make it super compact.
Why not name it "aaaaaahhh" to fit your username
My username did not orginate from "ah".
How about "AhGolf".
That would make it a pun
13:42
Yeah.
AhGolf is nice
Going to start working on it.
After that if I have time I am going to work on SvelteChat.
Stack based?
Stack based probably for simplicity.
Any unique concepts or ideas you are adding?
13:43
I am going to make an interpreter.
Unique concepts or ideas?
I am not sure.
Like are you doing anything differently than existing golflangs?
Well maybe everything will be stack-based.
Like even instructions.
Ok interesting
This is some boilerplate whenever your making an interpreter/compiler:
Same stack for data and code or two different stacks?
13:45
Two different stacks.
Boilerplate is this:
import sys

try:
	filename = sys.argv[1]
else:
	print("LangName: Filename needed")
So instead of looping you'd need to duplicate N items from the instruction stack
@mousetail That's a genius idea.
@The_AH Yup
Going to take it.
@RydwolfPrograms |Good.
Or instead of an "if" you'd conditinally pop N items from that stack
13:46
That will be a pretty unique programming experience.
My next programming language will be AhGolf.
I am going with an interpreter.
Yep, would be very cool, though unsure if it would really be golfy. Interesting from an esolang pespective though
@mousetail It would be.
More compact then if and for loops.
Are you sure? An if or loop can be just 2 bytes, while you need to push the length in your method almost certainly costing more
Well if the syntax is this:
<
Pop a instruction, that's just one byte.
Well that's not complete if loop syntax.
Popping one instruction is not that useful, you'd normally want to pop an entire block, so need some way to delimit it
13:50
What about <5 to pop 5 instructions?
That's good, but it would limit how big a block can be
What do you mean it will limit it?
What if a block is more than 9 instructions?
Then <10 to pop 10 instructions.
Or <5 then another <5.
Ok but then you'd need bytes to delimit numbers. How to distinguish pushing 10 or pusthing 1, and then 0
13:52
Oh...
How about <(10).
Everything in the brackets is interpreted as a number.
That works
But then how do we pop from the normal stack...
but it will cost 4 more bytes than a normal loop or branch
@mousetail Ouch.
Okay so "@i" for instruction stack and "@n" for normal stack so do @i then < to pop an instruction or @n then < to pop a value from the normal stack.
Oh hello.
We were talking about my programming language, Ahgolf, that I am making.
Right now in real time.
The concept is really cool, I'd really love to see it explored even if it isn't very golfy
13:54
Good.
Okay so everything after . is going to be printed.
".Hello, world!" is going to print "Hello, world!".
jfami@Macs-MacBook-Pro ahgolf % echo '.Hello, world!' > code.ahg
jfami@Macs-MacBook-Pro ahgolf % python interpret.py code.ahg
Hello, world!

jfami@Macs-MacBook-Pro ahgolf %
The first Ahgolf interpreter has been invented.
14:36
ginger@gingersrv:/home/ginger/lycsal$ ./hello
258169372
amazing
Huh.
Good.
Not sure how.
I'm pretty sure it output the raw pointer value instead of the actual string
oh wait, I forgot to add a case for processing strings in vystringify :/
The Ahgolf interpreter for some reason.
Is saying invalid value.
When the value is a valid string.
77 messages moved from The Nineteenth Byte
@RydwolfPrograms Wait this is a real message???
14:50
oh hey I can access mod tools again
@Ginger Oh no.
will there ever be a situation in which it is impossible to statically analyze the metadata of a type?
@Ginger Yes.
you say that with extraordinary confidence considering you have no idea what I'm referring to
I do.
Your saying if there will be a situation in which it is impossible to statically analyze the metadata (assuming this is the details, attributes, etc) of a type.
I am assuming builtin type here.
Monad is a difficult one.
14:53
if the answer is no (which I think it is) then I don't need to preserve things like the length of an array into the LLIR
so I can just use TypeSpecs for everything
@Ginger Ohh so is this about whether all types will be sized?
buddy you have no idea what I'm talking about
@RydwolfPrograms pretty much yeah
You can't know
But for anything ?Sized you can just put it in the heap and use a pointer to it
actually nevermind
while I was typing a message to provide context I realized that I'm being silly and actually don't need to worry about it
can't believe I was trying to figure out how to stringify... a string
LLVMPositionBuilderAtEnd(builder, stringPath)
LLVMBuildRet(builder, valuePtr) // that was easy
hmmmm
it just occured to me that TypeSpecs having LLVMValueRefs with their metadata could pose a problem
since it'd be pretty easy to imagine one of those LLVMValueRefs being referred to in a context it doesn't exist in
but then again element implementations are effectively inlined into the main function and therefore share a context
ayyy, it worked!
15:28
@The_AH yes. Any room owners can move messages from the room they own to any other room they can access
15:44
ugh, I'm going to have to figure out how to store the length of an array alongside the array itself
I think I have two options here:
1. store the array and its length together in a struct
What's the second option? Slices like Rust?
2. do what Clang does and have the array's length be a stack variable that gets kept around for as long as necessary
I like the first better
unfortunately, it's both harder to implement and harder to optimize
oof
What about slices?
15:54
what about them? :p
I'm typing
I'm not really sure what you're referring to
That's because I haven't given you any pointers yet :P
well hurry up and do that so I can run mem2reg
Let me type my damn message
The array is stored on the heap or wherever without any length, and instead of just having a pointer to the array, you have a pointer and the length
At least, I think that's how Rust stores slices, take this with a shaker of salt
15:56
hmm
so currently arrays (and everything else) are stored on the stack
I have no idea what it was about option 1 that made it hard to optimize, so I don't know if that would apply here too
Rust has brilliant design.
Along with Python and Javascript.
Every other language is too complicated.
For a person to understand.
@Ginger What happens if an array escapes a function?
basically, a struct containing 1. an array, 2. a type tag, and 3. a length is unweildy and annoying to manipulate
@user they don't really, since "elements" are inlined into the main function
Wait, does LYCSAL not have user-defined functions?
15:59
but LLVM's pointers can cross function boundaries without issue, so it wouldn't matter even then
@user not yet, maybe later
keep in mind I only have two elements right now and one of them is print :b
Well if you're going to add them later, you need to start thinking about them now
I'd rather like to have non-broken types first though
If a function returns an array stored on the stack, the function's stack frame will be cleared when it returns, and anyone trying to use the array will probably get garbage
@The_AH many would argue javascript is very poorly designed. after all, Brandon Eich made it in like 5 days
hmm, good point
16:01
Just go with the heap
right
but then how do I store the contents of the array?
Also as references, I guess
my current solution involves type tags and pointers and is annoyingly complex
@The_AH there are many other languages. Ruby, Elixir, Swift come to mind
basically, since pointers and numbers both have a fixed size, I store those in the array
@The_AH wow, I didn't really process that message
16:02
Right, but arrays can contain more arrays, so you can't store everything inline
@Ginger I'm assuming it's satire?
Rust I agree with, Python is kinda iffy, but JS???
@user I'm pretty sure it's not
Rust I'd definitely put under the "complicated" category, even if it's better designed than a lot of other languages
fair
@user if I can use stack pointers and heap pointers interchangeably than this becomes much easier
since the compiler naïvely puts every value on the stack
Are numbers just 64-bit floats or proper rationals?
yeah uh about that
16:05
I guess if they're just floats, putting them on the heap and only storing references to them wouldn't make much sense
the compiler currently uses i64s for integer VNums and doubles for everything else
right, I think this solution will work: arrays are stored on the heap, and contain "structs" with a type tag and a pointer (stack or heap) to the element itself
I say "structs" because they're really just an i8 and pointer next to each other
So every "element" of your arrays contains a pointer/int/double and also a type tag?
@Ginger That's what structs are :P
currently? yes
@user oh right lol
If the array only contains pointers, then you don't need it to also store a type tag, right? Because the object that the pointer points to will have a type tag?
well uh no
16:08
@Ginger Oh did you mean to say it contains a pointer or a number here?
normal values don't have type tags because the compiler can statically figure out types
@user no, it always contains a pointer
Ah
if it's a number value being stored the pointer goes to the stack, else it goes to the heap
@Ginger Wait wow this is pretty amazing
(strings are just arrays of bytes and can probably be treated in a similar fashion)
16:10
What if you return a number from a function? You can't store them on the stack either, right?
you can
everything can be (and is) stored on the stack
Oh, do you make a copy of the number?
@Ginger No I mean in the future, when you have user-defined functions
It's better to plan for that now than to radically change how things work later
ugh yeah you're right
wait, then why does my vystringify code work?
that returns a pointer...
sprintf doesn't return anything
yeah, I'm creating the buffer
the buffer vystringify returns is allocad inside it, returned from it, and yet still usable outside it???
something terrible is going down (through the entire town)
16:14
Maybe that part of memory happens to not get clobbered by the time you use it?
> allocad memory is automatically released when the function returns.
Oh wait what
but I guess it's not actually cleared
so when vystringify returns, the pointer it returns points into unallocated memory
but since that pointer is printed directly after the return, nothing has time to overwrite the value there
that's extremely cursed
16:41
@noodleman Well yes but after years it has improved.
@noodleman I have not programmed in any of these but I have seen their syntax and it isn't the most appealing. To me, C and C++ also come to mind. They are too complicated but essential in this world.
@Ginger Rust, Python and Javascript are greatly designed. Every other programming language is too hard to learn (including C and C++ but they are essential for this world)
@The_AH this is a false statement, very broad
@noodleman Well what I meant is almost every other programming language, there are still tons of languages out there that are not hard. I apologize.
javascript has poor design, even if the language has grown to not be terrible. python is arguably not very well designed.
i just think you chose bad examples
JS is a mess, and I say this as a person with considerable experience with it
same here
16:49
Rydwolf has even more experience and would (probably) agree
Python and JS are the best languages ever.
I have been using JS for years.
Python is my first programming language.
I have a lot of experience with them.
have you used, like, any other languages?
I can tell that they are good.
Well I have of course.
I love Python, it has a special place in my heart, but its package management mechanism is the worst of any language I have ever used
they are good, until you put them in comparison with many other languages
16:50
Maybe it's just because I don't use npm much but I like Python's package management.
I conceptualized Rabbit specifically because of how much I despise Python's package mechanism
Rust is also good.
I have used it a bit.
python package management sucks. npm is..okay? but not great
having experience with something doesn't make it better, as the MediaWiki developers can attest
Dang, I haven't really used any other package management.
Maybe my standards are low because of that.
16:51
you can admit JS has flaws right?
yes.
JS has many flaws.
and yet you still say it's the "best language ever"
But it doesn't entirely suck, it still is good to an extent.
@Ginger I meant a good language.
@The_AH i agree with this
@The_AH then why didn't you say that?
16:52
but it’s not fair to say it is a great language and every other language is too hard to understand
I thought it would be clear.
@noodleman I really shouldn't have said that.
I personally disagree with even that assessment, but you seem to not really know what you mean yourself
is it good or is it bad? what's your position?
As someone who has been programming in JS for 4 years and in Python for 5, I do know what I mean myself.
@Ginger good but not great.
your opinions are your own problem, but at least have them be consistent
They are consistent.
16:53
@The_AH unfortunately, we are not you and therefore do not
I am just not good at explaining things.
4 mins ago, by The_AH
Python and JS are the best languages ever.
Well of course I will say that, they are my primary languages but that was an overreaction to some extent I admit.
so it was hyperbole?
that's fine
Yeah.
16:54
but it sure wasn't clear
I think a lot of programming languages suffer in one aspect.
i would have read it as sarcasm if say Ginger said it
So the aspect a lot of programming languages suffer in is error handling.
Go's error handling is horrible, Python's is not horrible but still not the best and JavaScript's error handling I haven't really used much so I cannot comment on that.
JavaScript’s kinda sucks, you can’t specify which error will be thrown by a function, you can throw things that aren’t Errors, stuff like that
@noodleman Hmm, I will need to use their error handling more to form an opinion.
16:57
rust has pretty good error handling from what i’ve read though i haven’t used it myself
Rust error handling sounds appealing but I haven't explored it much.
Rust's error handling is the worst part of it IMO
I hate it
Hmm...
Yeah it sounded real cool when I was looking at the docs but it gets annoying real quick when you have multiple kinds of errors and then you just usinganyhow::Error everywhere
Not sure about anyhow but yeah in tons of Tokio stuff you just end up with Box<dyn Error>
Which is nasty since dynamic dispatch
And you can't match on it
17:04
matching sounds like a nice luxury to someone like me who mainly has experience with JS
there’s actually a proposal to add matching to JS but it kinda sucks
Yeah pattern matching and tagged unions is suuuuch a nice feature
One of the few things I really miss when using JS
Without enums tho, pattern matching's pretty limited
Since a lot of the niceness about matching is the compiler can make sure you don't miss a case
Well unless you could somehow get it to work with ghetto enums. Like maybe if you used symbols in an object and passed the object to it
PHP is probably in the middle.
It's not a bad language but not a great one either or a super good one.
ehhhh PHP's the butt of every joke for a reason
17:11
PHP has gotten some nice quality-of-life improvements in recent years though
Exactly noodle man, PHP is way better then people think it to be.
I remember trying to use it and having to have 50 manual pages open at all times since all the builtins take args in the weirdest order and they're all top-level functions instead of methods
i watched some video called “PHP is not dead” or something
@noodleman A video like that changed my perspective on PHP.
Before I thought it was absolutely trash and inferior to JS.
It still is inferior to JS but not that much.
I mean PHP and JS are kinda for entirely different purposes
PHP's an HTML preprocessor and the closest JS gets is a back-end (but using Node for prod is kinda bad)
17:14
JS was initally designed as a HTML preprocessor.
that seems dubious
got a citation?
One min.
Wait it wasn't?
Even if it was planned to be it certainly never actually was
Why didn't anyone tell me this?
I my entire time using JS thought that.
@RydwolfPrograms citation-needed
(for the bit about Node in prod)
17:25
alright, I've done enough LYCSALing for today
What is LYCSAL?
the Great Array Rewrite *thunder crash* begins tomorrow
@The_AH the Laconic vYxal Compiler System tArgeting Llvm
it's a compiler that compiles a subset of Vyxal to LLVM IR
@Ginger Okay and you rmaking it and rewriting it.
Oh wow interesting.
I am the only main developer, yes
Want to hear all of my current projects?
17:27
not really
The list is long.
And there are some interesting ones in there.
you do understand that we can't physically stop you, right? :b
Well I shouldn't have asked in the first place really.
Okay.
Here is the list.
SvelteChat
Noml
mytm
Ahgolf
Rbuilder
XTTP (and XBrow)
Youtubl
There are more but these are the most notable ones.
Some of the names can be very cryptic because I like to use short abbrevations.
17:36
is sveltechat a chat made in svelte?
 
1 hour later…
18:59
@noodleman Sorry for the late reply, yes it is a chat made in Svelte and it will have a lot of features including the features of this chat.
Ooh will it include the bugs too
I'll only use it if it has UTC midnight emulation d:
@RydwolfPrograms What bugs?
@Ginger Sure. Not sure how to implement that.
19:32
@RydwolfPrograms Oh there won't be any bugs.
19:43
gotta admire that confidence
0
Q: Unit Testing Built Into Language

XtrosI'm mostly looking to poke holes in this design, as well as suggestions on next steps. For the language I'm creating, I think I might have additional keywords and statements available just for test files. What are the issues with this? test suite // not sure what exactly to name this, but it mat...

@NewPosts this is absolutely a bad idea
I can't immediately think of a single situation in which this would be useful
I am making an account.
I do language design very often so I need it.
@Ginger Thanks.
I also have my first question pretty clear.
So my question will be about interesting loop syntax that will revolve around stacks.
I am spefically going to ask which syntaxes are better then others.
19:59
Be careful, that sounds like it'd be a very subjective question
 
1 hour later…
21:26
@Ginger erm... rust has it
@The_AH ^^
21:46
@Ginger wait huh yearling how does that work
good question
@Ginger I've used something like this before and I like it for some small things. I have a directive %test "<name>" <type>: <expr> that means "When the testing framework looks at this file, in a test named <name> evaluate expression <expr> and print the result. Then compare to the golden test file"
is that for a badge on PLDI
you get yearling after being active on a site for a year
21:48
i know that
but was yearling on PLDI
yes, which is interesting, since PLDI's only existed for 4 months
huh
i don't see it on your badge list
...oh wait
I got it on Area 51, of all things
misread the badge icon lol
oof
 
1 hour later…
23:07
6
Q: Rename the 'Blatantly off-topic' close reason

user16217248I noticed a community-specific close reason was created and called 'Blatantly off-topic.' However, for users without the close votes privilege, the 'Other' close reason is renamed to 'Blatantly off-topic.' I think it would look weird to <500 users to have 'Blatantly off-topic' listed twice. I thi...

(cc @user16217248)
@Seggan in what form?
@supercat Please stop arguing about the purpose or intent of the C standard in comments. Comments are just not a good place for that kind of discussion because they are limited, noisy (they ping the post author every time), and there is no way to downvote them. I know from our previous discussion in chat that you have strong opinions about this, but having a strong opinion is not, on its own, sufficient reason to leave a comment.
let's not star that, folks
reprimands shouldn't be on the starboard
23:47
@Ginger ★
3

« first day (141 days earlier)      last day (466 days later) »