2023-09-20 07:37:42 KipIngram: Hehe. I see you've caught the geometric algebra bug. My condolences^H^H^H^H^H^H^H^Hgradulations. 2023-09-20 07:41:26 Seeing how ℂ and ℍ pop out of the 2- and 3-dimensional Clifford algebras is super fun. 2023-09-20 07:46:45 You might also enjoy Conway and Smith's little treatise "On Quaternions and Octonions". The first part gives really nice proof sketches for the classification of 2- and 3-dimensional symmetry groups. 2023-09-20 07:52:20 There is a bit of an elegance overlap between Forth and maths, isn't there? 2023-09-20 07:52:35 Obviously elegance of Forth is a bit more limited but it's still interesting in its niche 2023-09-20 08:09:15 Definitely. Simple systems that pull more than their weight in generality tend to feel elegant in my experience. That's something that both good math and good programming share. 2023-09-20 08:20:54 xelxebar: I *love* geometric algebra. I find it shockin that it's not how physics is taught in the first place, from secondary school. It takes numerous things, which we're usually taught as totally separate ideas, and just sweeps them up under a unified umbrella. 2023-09-20 08:21:11 I will check out conway and Smith - thanks. 2023-09-20 08:21:48 veltas: I imagine you could find some overlap. That's also what I'm liking in APL - it's strong connection to math. 2023-09-20 08:22:32 For some reason I've always found "maths" - that plural form of the word - amusing. :-) 2023-09-20 08:23:12 It's just not a form I used to any big extent - if I want the plural form I'll usually say "mathematics" instead. 2023-09-20 08:23:41 My wife has a friend that once, many years ago, was talking about how many RAMs her computer had. That made me smile too. 2023-09-20 08:24:22 xelxebar: I probably stumbled across geometric algebra only a year and a half ago or so. It was a bit like finding a gold mine. 2023-09-20 08:24:42 I've had some craven thoughts about my educators for never teaching me about it. 2023-09-20 08:26:14 Just as an example of that "separated teaching" - when I was taught complex arithmetic they began with "ok, let i represent the square root of -1." Then we just worked from there, working out the arithmetic rules. 2023-09-20 08:26:28 But the whole business just "falls out" of geometric algebra, as just one of many such things. 2023-09-20 08:27:29 Two-dimensional bivector has squaring to -1 as a natural part of its behavior, and there's only one "unit bivector" in 2D - just name it i and you're done. 2023-09-20 08:28:24 Exactly the same package of ideas in 3D leads directly to quternion theory, etc. 2023-09-20 08:28:57 Basically, I love anything that lets me "learn once" and then just keeps on delivering payoffs. 2023-09-20 08:29:25 "Let's remove Quaternions from every 3D Engine (An Interactive Introduction to Rotors from Geometric Algebra)" http://marctenbosch.com/quaternions/ 2023-09-20 08:30:14 GeDaMo: I wasn't necessarily meaning to plug quaternions there - just plugging geometric algebra. :-) 2023-09-20 08:30:32 I just thought that might be of interest :) 2023-09-20 08:31:08 Already have it open. 2023-09-20 08:33:19 xelxebar: I also don't terribly appreciate how I was taught only a limited piece of vector algebra. They generally teach the dot and cross products, and just leave it at that. Then it turns out that the cross product really only works in 3D (we can "squint a little" and use it in 2D too, but that's cheating a little). I guess they do it to AVOID having to introduce bivectors, but I think it would be better 2023-09-20 08:33:20 just to bite the bullet and present the general framework. 2023-09-20 08:34:08 In 3D it just happens to be the case that there are three unit bivectors and three unit vectors, so duality lets you "cheat a little" and represent a bivector as a vector. 2023-09-20 08:34:23 And that's what a cross product is. 2023-09-20 08:36:23 Okay I've written everything for the interpreter and compiler for my Forth, just need to debug it now ..... 2023-09-20 08:36:26 Days later... 2023-09-20 08:36:34 Lunch break over now anyway 2023-09-20 08:37:07 KipIngram: is 'mathematics' plural? 2023-09-20 08:37:27 I know americans like to do 'mathematic', whatever that means 2023-09-20 08:37:50 veltas: I use to refer to the 'general field' of math. The same as how I might say "physics" or "chemistry." 2023-09-20 08:39:26 I really regard "math" and "mathematics" as forms of the same word - referring to a "general domain." "Maths" makes it sound like it's a countable set of things. And I get it - there are different "areas" of math, and referring to those as "maths" - there's nothing wrong with doing that. I just got a long way through life without seeing that done very much, so when I started to run into it it just sounded 2023-09-20 08:39:27 odd to me. I don't mean to be calling it "wrong." 2023-09-20 08:39:34 Not seriously, at least. 2023-09-20 08:39:55 If I wanted an adjective i'd say "mathematical." 2023-09-20 08:40:06 KipIngram: Yeah, cross product is one of those things that sticks out like a sore thumb. 2023-09-20 08:40:14 E.g., "that's a really mathematical discussion." 2023-09-20 08:40:43 But they don't point that out to you when they teach it to you. 2023-09-20 08:40:45 Just a cultural clash 2023-09-20 08:40:57 Yes, definitely. 2023-09-20 08:41:16 And it was only when the internet got going that I really started getting exposed to other cultures. 2023-09-20 08:41:29 I'm old enough to have spent a large fraction of my life in the "pre-network" era. 2023-09-20 08:42:05 And I think Americans historically paid less attention to other cultures than a lot of other folks did. 2023-09-20 08:42:18 Americans paid a lot of attention to England 2023-09-20 08:42:19 Not a particularly shining aspect of our typical behavior. 2023-09-20 08:42:56 To be fair I don't think any cultures typically care about each other unless they're forced to 2023-09-20 08:43:14 but then the internet showed up, and it got a lot easier to learn about how things are done elsewhere. 2023-09-20 08:43:32 I think you're right. 2023-09-20 08:44:25 KipIngram: Since you're geeking out on this stuff and you like'd the projective approach, have you also encountered conformal geometric algebra? 2023-09-20 08:44:51 My wife works in the oil industry, and her coworker base was a lot more diverse than mine was back in the day, so I got some exposure to other "ways" by socializing with her work peeps. 2023-09-20 08:45:41 No, not yet, but it's somewhat on my list. I've caught on from Roger Penrose that conformal stuff seems to have a lot of power. 2023-09-20 08:46:07 and yes, from what I can tell, projective geometry seems to start to bring some of that in. 2023-09-20 08:47:46 Speaking of Penrose, I've tried a number of times to grok his "twistor" stuff, but so far it's still eluding me. 2023-09-20 08:48:30 I did find a good YouTube playlist a few weeks ago on "Spinors for Beginners," and that was very helpful. Penrose's lectures on twistors don't just glaze my eyes over quite as much as they used to, but I'm not there yet. 2023-09-20 08:48:57 Yeah, I'd like to look into CGA a bit more, too. Conformal maps play a prominent role in General Relativity and such, due to Lorentz transformations. 2023-09-20 08:49:30 bivector.net also has lots of resources, IIRC. Haven't checked in a good while, though. 2023-09-20 08:49:36 Yes. Penrose seems to use those methods to "fit the whole universe" into a contained diagram, and that's pretty nifty. 2023-09-20 08:49:45 Seems like a natural tool for cosmology. 2023-09-20 08:49:48 Lots of *video and other* resources, that is. 2023-09-20 08:50:23 Oh, yeah, the Penrose diagram for black holes? :P 2023-09-20 08:50:50 Infinity/Singularity sits on a line. 2023-09-20 08:51:36 Typical learning process for me on really hard things will be that I find some resource, consume it, and get practically nothing out of it. Then later I find another, and so on. Little bits and pieces will gradually sift in, and then (hopefully) at some point I reach some critical point and things just seem to "fall into place." 2023-09-20 08:52:02 I remember very vividly wathing a Leonard Susskind video on GR where he was going through the tensor math, and I had one of those moments. 2023-09-20 08:52:30 I studied tensors in graduate school, and I did well in the course but still didn't really "get it." That one Susskind lecture was the "critical mass' point. 2023-09-20 08:52:50 Very suddenly it just all made complete sense. 2023-09-20 08:53:10 Not that I'm an expert now or anything, but it was still a milestone. 2023-09-20 08:55:41 KipIngram: it is fine for you having different behaviors in a word depending on type? 2023-09-20 08:55:50 oh why im an anon 2023-09-20 08:56:30 now 2023-09-20 08:57:06 i for example have len which gives the lenght of a string or the length of a list 2023-09-20 08:57:24 i don't see a reason to have different words for them 2023-09-20 08:57:53 maybe debugging when you accidentally put a list when you wanted a string 2023-09-20 08:58:36 KipIngram: what kind of types will you have? 2023-09-20 08:58:48 AndChat172500: It's "atypical" in Forth, but if you have planned your system out right I see no problem with it. 2023-09-20 08:59:06 Typical Forth behavior, though, is that a particular word does a particular thing, every single time. 2023-09-20 08:59:46 I think if you're getting into different variable types, it's time to move off of Forth 2023-09-20 08:59:49 vms14: The advantage of having different words for those two things is that the code that runs when you run the word doesn't have to make a decision. 2023-09-20 09:00:05 That's *typical* Forth - programmer chooses the word that's right for the situation. 2023-09-20 09:00:12 right it's a problem for compiling 2023-09-20 09:00:22 KipIngram: yup 2023-09-20 09:00:23 unless you have some kind of inference 2023-09-20 09:00:34 KipIngram: the chainsaw shouldn't have to care if you're sawing a log or a leg 2023-09-20 09:00:42 Doh. 2023-09-20 09:00:49 Um, yeah. :-) 2023-09-20 09:00:53 KipIngram: if you're sawing through your leg, either you've got a good reason for it or you've made a mistake 2023-09-20 09:01:03 making a compiler is hard 2023-09-20 09:01:18 you need to pick the right thing to do the right thing to the right thing 2023-09-20 09:01:31 That's a Forth thing too - the whole language and approach is set up to make the compiler "easy." 2023-09-20 09:01:37 Almost trivial. 2023-09-20 09:02:18 it's not even really a compiler, it's a tokeniser 2023-09-20 09:02:24 As you parse words, you look up their xt's. And almost the only difference between interpreting and compiling is that you save that xt to an ongoing list instead of executing it. 2023-09-20 09:02:38 Yes, it hardly deserves the name "compiler." 2023-09-20 09:02:42 you store the address of the thing you want, it's really just a token 2023-09-20 09:02:44 yeah 2023-09-20 09:02:58 it's nothing nearly as complicated and overengineered as a compiler 2023-09-20 09:03:23 And one of the reasons it can be that simple is the design of the language itself. 2023-09-20 09:03:30 a huge part of "The One True Forth Way" is getting your head around the idea that you should try the simplest thing that could possibly work, first 2023-09-20 09:03:41 Yeah. 2023-09-20 09:04:27 vms14: Do you have the length of your list stored somewhere, or do you have to count the items? 2023-09-20 09:04:33 in a sense, it's like TDD 2023-09-20 09:04:54 And your strings - null termination or count byte? 2023-09-20 09:06:26 vms14: In Forth, the typical input to a len word would be an address on the stack. len has to either know what it's pointing at, or else it has to figure it out. 2023-09-20 09:06:43 The Forth way would be for it to know, because you wouldn't put the wrong thing on the stack before calling it. 2023-09-20 09:07:02 But absolutely nothing stops you from designing a system where it can figure it out. 2023-09-20 09:08:03 The decision about what exact code to run has to get made somewhere - either the system makes it or you make it. 2023-09-20 09:08:23 Forth generally has you make it. 2023-09-20 09:08:38 strlen, listlen. 2023-09-20 09:08:58 Python has the system make it. 2023-09-20 09:10:22 GeDAMo: "However, Quaternions are taught at face value. We just accept their odd multiplication tables and other arcane definitions and use them as black boxes that rotate vectors in the ways we want. Why does i2=j2=k2=−1 2023-09-20 09:10:24 and ij=k 2023-09-20 09:10:26 ? " 2023-09-20 09:10:40 There - that's precisely what geometric algebra fixes for you. 2023-09-20 09:12:12 Of course, geometric algebra also has its "basic rules" that we "just accept,' but it's a simpler, more contained set of rules, that you then just apply over and over. 2023-09-20 09:12:46 In this case it's the notion of "signed area." 2023-09-20 09:13:53 The signed area of a pair of vectors is the area of the parallelogram they define. Postive if rotating the first one into the second one is a counter-clockwise rotation; negative if it's clockwise. 2023-09-20 09:14:15 That immediately implies that uv = - vu; if you reverse the order of the vectors, you reverse the sense of the rotation. 2023-09-20 09:14:49 And eventually that's why the 2D bivector squares to -1. 2023-09-20 09:15:09 And why all those quaternion multiplication rules pop out. 2023-09-20 09:15:53 Geometric algebra just feels like the "right" starting point. 2023-09-20 09:17:43 KipIngram: perl automatically stores the len of a list and a string 2023-09-20 09:17:52 i just access to it 2023-09-20 09:18:16 for example in the dictionary you have the len of the words name 2023-09-20 09:18:22 so you first compare the len 2023-09-20 09:18:34 perl does that when comparing strings automagically 2023-09-20 09:18:40 Ok. So here again, you're harnessing pre-packaged capabilities.Nothing wrong with that, but it's going to shape what you wind up with. 2023-09-20 09:19:00 yeah the more stuff you use, the more limitations you have 2023-09-20 09:19:17 i'm kind of lucky that perl is quite flexible 2023-09-20 09:19:34 I spend a lot of time thinking about that kind of stuff, because in the end I have to build it all. 2023-09-20 09:19:35 and the other implementation will be in js because of web applications 2023-09-20 09:19:44 So, what EXACTLY do I want? 2023-09-20 09:20:01 i value freedom a lot in a lang 2023-09-20 09:20:07 I can go any direction I want, so I'd like for it to be a sensible one. 2023-09-20 09:20:24 i basically refuse to use a language that does not let me choose how i want to do the stuff 2023-09-20 09:20:43 constraints fuck my creativity a lot 2023-09-20 09:20:53 Well, see, I'll be choosing too. I'm just choosing at language design time instead of language "use time." 2023-09-20 09:20:56 that's why i value freedom 2023-09-20 09:22:11 KipIngram: in my case i have what i wanted, a toy lang 2023-09-20 09:22:24 i mean it does what i want to use it for 2023-09-20 09:22:39 if i want to play with sockets i can 2023-09-20 09:22:43 I do too, but in the end I don't want to wind up having built "te kitchen sink." I expect to have a system with SPECIFIC capabilities, and then I'll have to use those and won't be able to do things I didn't plan in. 2023-09-20 09:22:56 I want it to be a small and straightforward system, so it won't have "everythiNG>" 2023-09-20 09:23:06 So I think a lot about what exactly to arrange for it to have. 2023-09-20 09:23:26 In some sense I want to wind up "doing the most with the least." 2023-09-20 09:23:29 yeah a carefully designed language you can be proud of 2023-09-20 09:23:38 i can't be proud of my lang for example xd 2023-09-20 09:23:52 but i'm happy and i like it 2023-09-20 09:24:00 We've talked about this - you're engaged in a learning exploration. 2023-09-20 09:24:19 but not only that, i kind of like it 2023-09-20 09:24:29 Learning is fun. 2023-09-20 09:24:34 it has colon words and it's concatenative 2023-09-20 09:24:45 it has closures macros etc 2023-09-20 09:25:01 i can get fun 2023-09-20 09:25:25 my only problem is i don't feel it able to do a serious program 2023-09-20 09:25:53 but it keeps evolving so yeah a learning process 2023-09-20 09:26:38 https://imgur.com/a/tzHPfoP 2023-09-20 09:26:44 has colors xd 2023-09-20 09:27:18 i want to make words to represent elements and use them to represent the stack with colors depending on the type 2023-09-20 09:32:17 My very general target is something that has the "innate" feel of Forth. A stack, with data items on it. Words that I can execute. But "type aware," and in some appropriate way the types of the items on the stack will control what words are *available* at any given time. That is, some words may do entirely different things depending on the current stack context. 2023-09-20 09:33:49 I don't want to have to explicitly allocate memory for everything; if I want to work with a matrix, I just want to input that matrix and know that the system will find a suitable place to put it. 2023-09-20 09:34:36 If I want to run an additional thread, the system will find RAM to house it in. Etc. And when it dies that RAM will get recovered. 2023-09-20 09:35:16 I want to think about the problem I'm trying to solve and not about all of the housekeeping. So that is a strong departure from traditional Forth. 2023-09-20 09:35:50 But when I first fire the system up, I want it to BE traditional Forth. All this additional stuff is stuff I want to build up to. 2023-09-20 09:36:22 And that's NOT non-traditional; building up to stuff is something Forth claims to be able to do. 2023-09-20 09:40:45 I've got this feeling that the precise way I plan the base level system will influence how easy it is to do that later building up. So those are the things I'm thinking about. What do I eventually want to be able to do, and what do I do first to make that process unfold well. 2023-09-20 09:51:59 This is a rather fun resource: 2023-09-20 09:52:01 https://oeis.org/ 2023-09-20 09:52:32 "Online Encyclopedia of Integer Sequences." Just about any string of numbers that has any "application" to it is in there somewhere. 2023-09-20 09:54:03 I wonder if it has a programmable API; it would be neat to be able to just reach in there automatically and pluck out a desired sequence. 2023-09-20 10:07:22 https://www.youtube.com/watch?v=LCWglXljevY 2023-09-20 10:07:27 "OEIS: The Movie." 2023-09-20 10:12:39 https://oeis.org/wiki/JSON_Format 2023-09-20 10:15:27 You can also just download the whole database, since it's under a libre license. It's just a big text file, 30MB compressed. 2023-09-20 10:24:06 xelxebar: not even *that* big 2023-09-20 10:30:03 what are the tips when deciding the order of the arguments for a word? 2023-09-20 10:32:03 Minimize shuffling for the most common usage? 2023-09-20 10:32:36 i assume the main one is the most specific argument comes near to the word and the order of arguments is actually defined by the "relevance" or connection they have with the word 2023-09-20 10:33:36 but i see how important it is, at least more than in other languages due to the linear nature of the stack 2023-09-20 10:33:57 GeDaMo: that's my goal actually 2023-09-20 10:34:53 for example being able to dup some arguments without having to swap 2023-09-20 10:35:21 i assume with the usage you end deciding better 2023-09-20 10:35:33 but i'd like to be able to foresee it 2023-09-20 10:36:35 anyways the most important order is the one i can remember 2023-09-20 10:37:13 That's also a good option :P 2023-09-20 10:37:31 i have troubles with words that take 3 arguments like setting a key value for a hash 2023-09-20 10:38:36 object key value set 2023-09-20 10:38:53 could also be key value object set 2023-09-20 10:39:23 and depending on what you do one makes more sense than the other 2023-09-20 10:39:58 I think I'd make that value key object set 2023-09-20 10:40:33 it's the one that makes more sense 2023-09-20 10:41:59 i'll use that, i think is the same order crc has too 2023-09-20 10:42:21 and the best thing is using logic i can remember the order 2023-09-20 10:42:41 because for me makes sense since the value will usually be taken from somewhere 2023-09-20 10:42:44 that's what I use 2023-09-20 10:42:49 :D 2023-09-20 10:42:52 hi crc btw 2023-09-20 10:43:05 key and object combine to produce the address 2023-09-20 10:43:46 crc logs died? 2023-09-20 10:48:44 no; looks like I needed to update a path (I moved things to a new server recently, so a few scripts on the machine doing the processing needed to be updatednn) 2023-09-20 10:48:51 they should be up to date now 2023-09-20 10:53:04 i have to make a bot to somehow create a workaround for irc to have some kind of offline features 2023-09-20 10:54:13 i wonder what the irc 3 solves 2023-09-20 10:54:39 https://ircv3.net/ 2023-09-20 10:56:55 https://ircv3.net/specs/extensions/chathistory 2023-09-20 10:56:56 oh 2023-09-20 13:20:06 Yes but no network implements chathistory 2023-09-20 13:20:19 It sort of violates the concept of a classic IRC network a bit 2023-09-20 13:20:41 And introduces all sorts of legal concerns like GDPR etc 2023-09-20 13:21:29 I remember a simpler time when you could just talk to the police each 'incident' and otherwise not really design your systems for privacy or aware of illegal content etc 2023-09-20 13:23:56 And you weren't just selling everyone's data as well so I suppose a**holes have ruined it for everyone 2023-09-20 13:29:00 lovely spam! wonderful spam! spam spam spam spam spam 2023-09-20 13:37:46 vms14: I think I'd lean toward value key object set. 2023-09-20 13:38:04 In parallel with !: value target ! 2023-09-20 13:38:32 And which way key and object should go - that feels a little more iffy to me. 2023-09-20 13:39:03 But the last act you take is to send a message to an object, so that makes me think send 2023-09-20 13:39:26 So yeah, I think value first and object last. 2023-09-20 13:48:57 One day we'll have a cool IRC forth 2023-09-20 15:18:53 You know, it's nifty that 1^3+2^3+...+N^3 = (1+2+...N)^2. 2023-09-20 15:19:47 And most of us probably already know N*(N+1)/2 for 1+2+...+N 2023-09-20 15:20:49 For completeness, 1^2+2^2+...+N^2 = N*(N+1)*(2*N+1)/6 2023-09-20 15:54:19 I wish GeDaMo the best of luck in clown college 2023-09-20 17:48:05 Aha - fun stuff. I just worked out a proof of the fact that if you're given a square matrix of grid points there is no way to place an equilateral triangle on it such that all three corners are on precise grid points. 2023-09-20 17:49:50 You can show that in order to succeed in doing that you require that tan(60) be rational, and it's not (it's the square root of 3). 2023-09-20 17:50:01 It's actually pretty straightforward. 2023-09-20 18:27:38 This is how I spend vacation - I'm such an exciting guy...