2024-05-11 00:52:34 ah my bad! "better" as in, my code is usually simpler from the result of not using rot. 2024-05-11 00:52:42 maybe this changes with time :) 2024-05-11 00:58:55 if your code is simpler for using >r and/or swap, then rot wasn't the right tool for the job 2024-05-11 01:03:50 well said 2024-05-11 01:04:05 maybe what I meant all along is, rot doesn't seem like the right tool often. :D. 2024-05-11 03:42:57 I think if you find yourself arriving at rot, the first question you should ask yourself is "can I change my earlier code to put these things on the stack in a different order?" 2024-05-11 03:44:09 Practically speaking, on x64 it's not that bad - just a pair of xchg instructions. There are plenty of more expensive primitives. 2024-05-11 03:44:39 Chances are the top of your stack is in the cache. 2024-05-11 04:08:03 So, overseas guys - what exactly is Eurovision? 2024-05-11 04:08:31 I've got the BBC in my Newsflash list, and it seems like they just can't get enough of it. 2024-05-11 04:08:56 Is it some kind of entertainment awards show, or along those lines? 2024-05-11 04:30:20 KipIngram> I think if you find yourself arriving at rot, the first question you should ask yourself is "can I change my earlier code to put these things on the stack in a different order?" 2024-05-11 04:31:11 in my experience, the answer to that is usually "no, i wanted them in that order to start with" or "they were generated in that order for good reason" 2024-05-11 04:35:20 perfect example is indirect addressing in my x86 assrmbler. the handler for "4 (%sp) %ax add," gets displacement, sp, ax on the stack, so it can naturally write the opcode, modrm byte, and then displacement. "%ax 4 (%sp) add," works the same way, but needs a rot to reorder them first because the displacement is between the two operands. 2024-05-11 04:36:24 i COULD write so the user has to always write the displacement first regardless of which operand is the indirect, but that's stupid and gay 2024-05-11 09:23:35 KipIngram: Eurovision is an international song contest between countries of the 'European' TV area, so a bit further than Europe. 2024-05-11 09:23:45 It's quite popular, more popular among women and gay people for some reason. 2024-05-11 09:24:18 Years ago it was more universally popular and groups like ABBA were on there 2024-05-11 09:24:27 Among young people anyway 2024-05-11 09:24:55 And the gay stuff is why it was censored in Russia, so countries were voting against Russia a lot until eventually they were banned 2024-05-11 09:25:25 And in retaliation Russia invaded Ukraine. That's the real reason, not NATO expansion, but because of Eurovision. 2024-05-11 09:25:47 So it's a big deal among the political elite, most people here haven't watched in years though 2024-05-11 09:27:20 I've never been a fan myself, not really that into pop music, and the music on there is pop music that's not good enough to be on the radio 2024-05-11 09:30:48 I don't know if virtue signalling has always been a big part of it, last time I tried watching like 8 years ago that was all it was and I find that quite tedious 2024-05-11 09:31:32 That and the nationalism and/or westism honestly 2024-05-11 11:32:07 According to my in-laws it got very political at some point 2024-05-11 16:10:47 That all fits with the way these headlines have looked. I find that sort of thing "tedious" as well. I'd never heard of the thing at all, but since I ran across Peter Zeihan on YouTube I've been trying to pay a little more attention to things, and it's just covering up the BBC headlines this past week or so. 2024-05-11 16:11:17 I felt a little bad for the gal from Israel - you'd think by reading this stuff that she personally orderd the whole business going on over there. 2024-05-11 17:40:23 I was thinking the other day how you would have a screen buffer for example on a ga144 when you need several KB of ram. if you wanted to plot a single pixel, would you just have code to figure out which core's memory to write to? 2024-05-11 17:48:24 You might broadcast to all cores and have them figure out if it applies to them 2024-05-11 17:48:36 I'm not sure about the GA144 architecture 2024-05-11 17:53:19 Yeah, that's the "gist" of programming the GA144. Somehow you have to know who's got the resource you're interested in and you send them a message. I think they have a standard fabric for such a message passing network. Maybe they call it ether? 2024-05-11 17:54:10 Google EtherForth - it's a two GA144 setup where one of them is your application target and the other runs "the Forth dev system." It's an interesting study of how to break a complex system up over the cores of a system. 2024-05-11 17:54:30 They've actually spread responsibility for various parts of the Forth environment around on that dev GA144. 2024-05-11 17:55:33 I definitely think programming one of those is a different sort of endeavor than most embedded programming, not only because there are a lot of cores but also because each one has a tiny memory and you really can't fit a whole lot of complexity into any one of them. 2024-05-11 17:56:12 I think in some ways it's similar to designing a digital circuit with discrete TTL parts - the information flows around the system in a similar way. 2024-05-11 17:56:37 And each "processing element" does a very simple piece of work. 2024-05-11 17:57:30 I know they only communicate by passing data between neighboring nodes. there's nothing for arbitrary nodes to communicate in hardware 2024-05-11 17:57:35 You get a good example of the process in the EtherForth docs, and I think they also discuss that ether fabric. 2024-05-11 17:58:25 Ill check it out. it must be something in software they do to abstract the neighbor to neighbor transfers 2024-05-11 18:00:29 yes, it is. 2024-05-11 18:00:43 I don't remember the precise details - it's been a while. 2024-05-11 18:01:18 There's a similar process for bringing the whole array up in the first place - the bit of code that runs on each node has to be delivered to that node, etc. 2024-05-11 18:01:33 I think it all starts with them all standing ready to execute instructions delivered from a neighbor. 2024-05-11 18:01:58 So basically those ports are their "reset address." 2024-05-11 18:02:48 They come up ready to take code from any of them - it's up to the programmer to choose exactly how to make the choice of where a particular core actually gets code from. 2024-05-11 18:03:41 Now that I think of it, it's a bit like how mecrisp across runs the controller in interactive mode - it's being driven from the outside in that mode, rather than running local code. 2024-05-11 18:03:50 Just scaled up to 144 cores. 2024-05-11 18:16:12 I can picture that "setup" spreading like a wave across the array. :-) 2024-05-11 18:17:19 I don't think that ether code is built in or anything - I think you have to flow that in too. Set up on one node, and then you can use that to get at its neighbors - set up there, etc. 2024-05-11 19:04:26 My issue with the GA144 is I don't understand the purpose 2024-05-11 19:05:29 What applications does it have 2024-05-11 19:28:29 This is the competition https://www.aliexpress.com/item/1005005036714708.html 2024-05-11 19:29:51 Although GA144 feels somewhere between an FPGA and a CPU 2024-05-11 19:40:52 Chuck's looking healthy in last video I've seen of him 2024-05-11 19:53:16 https://www.youtube.com/watch?v=3jJkyc-raJQ 2024-05-11 20:05:19 I've only been able to guess about that, but I've wondered if perhaps it might have application in very high speed digital signal processing applications, like maybe in military radar or something. I've always had the feeling that one of their hopes was to sell into niche military applications. 2024-05-11 20:06:06 Someplace where even though volumes might be small there would still be significant money to be had. 2024-05-11 20:06:21 I haven't been able to think of any high-volume consumer applications. 2024-05-11 20:07:04 Chuck seems very obsessed over energ efficiency during that time, so maybe also applications in military drones? 2024-05-11 20:14:42 Probably anything like that FPGA would outperform 2024-05-11 20:15:16 Being under 1W isn't an issue for military drones 2024-05-11 20:15:31 "anything like that" signal processing 2024-05-11 20:51:53 FPGA would take more power, though. 2024-05-11 20:52:11 And generate more heat. 2024-05-11 20:52:25 I think you're right, though, that the FPGA would almost always out-perform. 2024-05-11 21:01:18 mentioned in ##programming https://archive.org/details/ataribooks-forth-on-the-atari-learning-by-using 2024-05-11 21:08:56 I only read the cover 2024-05-11 21:11:09 That's all you need, I think. I started to read the introduction, but it has odd grammatical and punctuation errors. 2024-05-11 21:56:08 Interesting that it was published in 1983 and refers to Forth as a "new" language. 2024-05-11 21:56:39 Looks like it's German origin, which could explain the oddities. 2024-05-11 21:57:12 I didn't mean that as a comment on Germans particularly - just a general "English as a second language" thing. 2024-05-11 22:00:39 So I had an interesting little bug at work yesterday. I've just ported my database to a new host, and it came time to "harvest" the first set of results. I ran the harvest utility, and it threw an out of range error in the database interface. I pointed it back at the old db and it worked fine. 2024-05-11 22:02:53 One of the things that's stored is the Unix Epoch start and stop times of each times of each test. The db treats that as an unsigned 10-char integer string. The harvest utility initializes to the full integer range and then pulls those times in based on the data it sees. Somewhere along the way I added a "wait / do nothing" step to my test, and it turns out that my harvest code failed in that case, and 2024-05-11 22:02:55 just retained start=0, finish=maxint. 2024-05-11 22:03:41 Apparently the Python on the old host used 32-bit integers, and maxint was 2^32-1, which fits in 10 chars. The new host uses 64 bits, so that became 2^64-1. 2024-05-11 22:03:51 Or 2^63-1, but in any case, it doesn't fit. 2024-05-11 22:04:06 So the db routines barfed when they saw that. 2024-05-11 22:04:31 I need to fix the root problem, but for the time being I just stuck in if finish>9999999999: finish=0. 2024-05-11 22:05:14 I don't really care about the results in a "do nothing" step anyway. 2024-05-11 22:27:55 g 2024-05-11 22:28:02 whoops