2022-03-13 05:02:08 KipIngram: Well if they never go over a line then why not make the end of a line an alternative to ';'? 2022-03-13 05:02:29 Then you can fit 2 more characters on a line 2022-03-13 08:08:21 Hmmm. Well, I see no particular technical argument against doing that, though I don't find the idea very appealing. I mean, you're right. But the ; just feels like "part of Forth" to me. I don't know that I want to make it *impossible* to write a multi-line definition. 2022-03-13 08:08:40 I think that response has a large emotional component in it. 2022-03-13 08:09:17 Zarutian_HTC: I like the ropes concept. 2022-03-13 08:09:42 Feels like the right way to go to me. 2022-03-13 08:10:29 Hey, I just realized that in my current setup ctrl- sends an explicit null. Maybe that's common knowledge, but I was unaware of it. 2022-03-13 08:11:33 I've set my termios so that ctrl-a through ctrl-z all work; nothing gets intercepted. 2022-03-13 08:12:27 I want all of those available for editor commands and so forth. 2022-03-13 08:13:09 Does anyone here who's done a system support utf-8? 2022-03-13 11:24:17 KipIngram: Taste is important, I just thought it was worth thinking about for you 2022-03-13 11:24:31 Not for me, because in my taste I think there's nothing wrong with breaking a function across lines 2022-03-13 11:38:23 I'm definitely not experienced enough to redesign FORTH in any meaningful way, I've stuck to conventional FORTH the whole time 2022-03-13 11:38:43 Maybe like 10 years in lol 2022-03-13 13:41:51 I found Forth in college, and I'm 59 now - I've spent pretty much my whole adult life "tinkering around" with it. 2022-03-13 16:40:56 KipIngram: Yeah I can definitely tell some people are much more experienced on here and you seem like one of them 2022-03-13 16:48:50 KipIngram: Do you use just a CHR variable or also a line number variable for a block editor? 2022-03-13 16:51:38 Because how else can I distinguish the end of a line and the start of the next line 2022-03-13 17:26:18 Well, in the future I will probably support "real" variable length files. But historically I've just regarded a 4 kB block as 64 lines of 64 chars each. I print it on the screen that way, navigate around the screen in it that way, and so on. 2022-03-13 17:27:05 It's an edit in place thing, full screen. I can show two blocks side by side on my notebook, and hop back and forth between them with a keystroke. 2022-03-13 17:27:40 Mostly control keys to "do stuff," but it does support vim-style repeat counts, and the control keys I chose for various things are vim-like. 2022-03-13 17:28:38 line delete deletes to a stack of lines, so I can move several lines by deleting them all one after another and then push them back somewhere else, including the other screen. 2022-03-13 17:28:51 It won't allow me to push existing non-spaces off the buffer. 2022-03-13 17:29:23 I think it's probably close to the most I could hope to have without making it a bigger project. 2022-03-13 17:29:31 The source code for it fit in one 4kB block. 2022-03-13 17:30:31 That's why I like 4 kB better than 1 kB - four is enough to actually hold a substantive amount of code, that can do a fairly major job. 2022-03-13 17:31:19 So you have seperate line and column variables? 2022-03-13 17:31:53 Yes. 2022-03-13 17:32:04 Sorry - you asked that and I completely failed to answer. 2022-03-13 17:32:14 row and col. 2022-03-13 17:33:14 I just have to make sure my row and col agree / stay in sync with the cursor, which I move relatively rather than absolutely. 2022-03-13 17:33:25 I think - that may be wrong. 2022-03-13 17:33:37 I don't actually have the source on this computer - it's still on my work computer. 2022-03-13 17:33:48 I moved the new system I'm working on to this computer, but it doesn't have an editor yet. 2022-03-13 17:34:39 Anyway, since yesterday I'm very psyched over the ropes stuff that Zarutian_HTC put me on to, so I think that I'll soon be stepping to actual files with variable line lengths. 2022-03-13 17:36:13 I like blocks, but I just don't see how to do really big things without files. 2022-03-13 17:36:49 At least not in a graceful way that avoids repeating similar chunks of work over an dover. 2022-03-13 17:43:00 KipIngram: Have you seen how Swift Forth does blocks? 2022-03-13 17:43:29 They have like a map and you can map multiple different files or just allocate memory to different ranges of block numbers (I think?) 2022-03-13 17:44:06 I am just trying out blocks right now, don't have a strong opinion on them yet 2022-03-13 17:44:22 No, I haven't seen that. Sounds interesting. I will still have blocks in the future. Just will add some things. 2022-03-13 17:44:44 And I guess the file stuff will get built on top of blocks. 2022-03-13 17:46:27 And I think there are words for changing which file is active, if you just want to use one block file at a time 2022-03-13 17:47:01 You can have multiple block files *open* but only one is 'active' of course, if you don't use the map 2022-03-13 17:47:08 Makes sense. I've always just used one blocks.dat, but it would be easy to make that changeable. 2022-03-13 17:48:31 I guess my focus has never been on trying to "integrate with an OS" in any signficant way - I'm always thinking about some future time when I am the OS, and trying to make things that work in that circumstance. 2022-03-13 17:49:08 When I think I'm getting close maybe I'll try it out on an Raspberry Pi or something. 2022-03-13 17:49:16 Yes I am of the same mindset 2022-03-13 17:49:34 Plus that gives me an excuse to learn about interesting things like file systems and so on. 2022-03-13 17:49:45 My original forth was for a machine without an OS 2022-03-13 17:50:07 I would probably consider writing something targeting UEFI 2022-03-13 17:50:15 In my heart that's what Forth is "for." 2022-03-13 17:51:21 Yeah I agree, FORTH can be your OS, editor, IDE, REPL, file manager, compiler etc. 2022-03-13 17:51:25 It's just a lot smaller 2022-03-13 17:51:32 Have you ever used vxworks? 2022-03-13 17:52:23 No, I haven't. 2022-03-13 17:53:11 But I took a job once and when I went in found the guys trying to do a real time application with non-real time tools. And I wasn't able to talk them out of it. :-| 2022-03-13 17:53:38 Had one of the guys look me right in the eye and say "There's no way to make code like this meet timing 100% of the time." 2022-03-13 17:53:47 I was gobsmacked. 2022-03-13 17:54:03 So instead they wrote all kinds of handlers for when it missed the timing. 2022-03-13 17:55:07 A lot of the industry has moved away from true blue blooded real time operating systems 2022-03-13 17:55:10 I'll admit, maybe it's not as easy as it was when I first started out. In those days you got a CPU databook and your code in front of you and you toted up clock cycles. 2022-03-13 17:55:23 And you *knew* how long it was going to take, exactly. 2022-03-13 17:55:43 Because Linux on a latest gen processor is faster than your real time chip 99% of the time 2022-03-13 17:55:51 Right. 2022-03-13 17:56:18 I think real time seems to be mostly interesting to "IoT" people and anyone doing humble embedded stuff 2022-03-13 17:56:44 This was an humble embedded thing. 2022-03-13 17:57:02 It was a recording unit for data coming from a geophone. 2022-03-13 17:57:08 If you're working with a simple embedded chip, then you'll often have a "real time OS" like FreeRTOS which is more of a library for control flow than an OS 2022-03-13 17:57:26 Which is what you want 2022-03-13 17:57:30 The seismic real time was pretty tame, but it also had a 5 GHz radio link that had to synch up with a mesh network of peers. 2022-03-13 17:57:36 And that timing was a lot tighter. 2022-03-13 17:58:28 Yeah. The problem here was that before I showed up (as VP of engineering, no less), they had done a big slug of the work using a thing called Quantum Framework, because it was a pet system of one of the guys working there. 2022-03-13 17:58:39 And he absolutely swore by it. But it wasn't realtime. 2022-03-13 17:58:54 I think the number one thing that gets forgotten with these kinds of systems is denial of service from interrupts, if your "real time" chip can be crashed because there's "too much activity on a bus" then it's not realtime 2022-03-13 17:58:55 It was nifty - I'll give it that. 2022-03-13 17:59:08 You could basically design your system using statecharts, and it would generate the C. 2022-03-13 17:59:17 That sounds awful 2022-03-13 17:59:42 It's not how I would have ever done it, but at least it did what it professed to do, as far as I could tell. 2022-03-13 17:59:56 So far as getting the logic right goes. 2022-03-13 18:00:02 I like to write code and not inflict diagrams on unwitting programmers 2022-03-13 18:00:08 :-) 2022-03-13 18:00:22 I'm the same way, though I'm the opposite in hardware design. 2022-03-13 18:00:32 I hated the transition from schematics to Verilog / VHDL. 2022-03-13 18:00:53 I think the *shape* of the circuit on a schematic page conveys information. 2022-03-13 18:01:05 "You can't just write code, how are you going to design it?" ": WASHER WASH SPIN RINSE SPIN ;" 2022-03-13 18:01:12 Sometimes at an intuitive level. 2022-03-13 18:01:55 I found a nasty bug in a guy's FPGA design once because I saw something about the "circuit shape" down in the corner of a page that triggered me. 2022-03-13 18:02:03 He was just sure I wouldn't be able to help. 2022-03-13 18:02:20 He was clicking through schematics pages every couple of seconds, and something in me just made me stop him. 2022-03-13 18:02:36 And I studied that section, and sure enough he had reconvergent fantout creating a race condition. 2022-03-13 18:02:57 I had to study it for a few minutes to really pin it down, but *something* said "here" to me. 2022-03-13 18:03:06 And I would have never seen that in a page of Verilog. 2022-03-13 18:03:11 Never ever. 2022-03-13 18:03:49 I'm sure we've gained a lot by using hardware design languages. But I lament the things we've given up. 2022-03-13 18:04:06 And plus I'm just an old dog and Verilog is the new trick. 2022-03-13 18:04:31 I can use it, but nowhere near as well as I could do schematics. It feels clumsy to me. 2022-03-13 18:05:04 I've not done verilog/VHDL but it seems like every bloody bug is either some kind of synchronisation issue / race condition 2022-03-13 18:05:43 Yeah. I'm a hardware guy from the start, and you get trained to watch for those from the start. I think it's harder for software people who cut their teeth on single-core processors. 2022-03-13 18:05:56 Whenever it goes back to the FPGA programmers it always comes back with "ah yes I did synchronise that bus fully, does it work now?" "You tell me!" 2022-03-13 18:05:57 Though modern multi-core chips with threading - same boat to some extent. 2022-03-13 18:06:13 did not* 2022-03-13 18:06:33 Plus the modern stuff introduces some god awful tricky cache related issues. 2022-03-13 18:06:55 For both correctness and performance. 2022-03-13 18:06:59 I think languages generally struggle to accurately express parallelism 2022-03-13 18:07:14 Yes, whereas it's inherent in a schematic. 2022-03-13 18:07:34 Re: cache, my favorite is "false sharing." 2022-03-13 18:07:47 Where two threads on two cores that share NO VARIABLES can thrash each other. 2022-03-13 18:07:57 Because they each have variables that happen to be on the same cache line. 2022-03-13 18:08:10 Whenever one of them writes his variable, it invalidates the other guy's cache copy. 2022-03-13 18:08:14 BAM goes your performance. 2022-03-13 18:08:15 Yep like if you allocate space for another thread to use on your stack 2022-03-13 18:08:18 That's the main cause of that 2022-03-13 18:08:30 Or from your heap 2022-03-13 18:08:35 Yeah. 2022-03-13 18:09:20 I makes me want to use flow-based programming for everything, where each core does a stage of the work and then gets done and hands everything off. 2022-03-13 18:09:26 Yeah the computer *can* maintain coherancy if they're not the same data, but it will be slower than doing it on one thread 2022-03-13 18:09:41 "not the same data" I mean not the same memory 2022-03-13 18:10:00 Yes, I've always assumed that's the "false" in false sharing. 2022-03-13 18:10:16 they're not "really" sharing... but they kinda are anyway. 2022-03-13 18:10:29 It's a bad name, programmers are terrible at naming 2022-03-13 18:10:40 :-) 2022-03-13 18:10:50 It's correct but the name pretty much implies something else 2022-03-13 18:12:32 I'll admit I'm very bad at parallelism / synchronisation 2022-03-13 18:12:41 See, when I used to gobble up interesting info on parallel programming back in the early 1980's, when it was all fancy and new, everyone talked about very fine-grain parallelism. 2022-03-13 18:12:46 Well I can synchronise *devices* well but not threads 2022-03-13 18:12:58 But that just doesn't seem to be where the world has gone. 2022-03-13 18:13:18 It's not the kind of parallelism that multi-core chips are good at. 2022-03-13 18:13:59 Dataflow architectures - the diagrams would show arithmetic ops in the same expression running in parallel. 2022-03-13 18:15:00 Pipelining does work well, at least. 2022-03-13 18:15:13 That stuff pretty much happens today, just as part of pipelining, microcode optimisation, hyperthreading etc 2022-03-13 18:15:37 Yeah, they've accomplished an awful lot, that's for sure. 2022-03-13 18:15:43 We're ticking all the boxes except power usage lol 2022-03-13 18:15:53 And size 2022-03-13 18:15:58 And price 2022-03-13 18:16:32 That's the embedded niche: power + size + price. 2022-03-13 18:16:34 But we didn't win the boot time race. By all rights computers should be "instant on" these days. 2022-03-13 18:17:01 Yeah because the hardware's fast but the firmware and software is a dystopian nightmare 2022-03-13 18:17:22 I agree. 2022-03-13 18:19:00 At work the card reader on a vending machine often stops working and I have to reset it by holding a button on it for a while 2022-03-13 18:19:05 It takes like 40 seconds to boot 2022-03-13 18:19:25 It's just doing self-tests I think but fuck 2022-03-13 18:20:06 Quite possibly those tests are required by whatever regulations/standards it conforms to as a payment device? Don't know 2022-03-13 18:21:41 Chuck Moore's perspective on writing software is the correct one. Paraphrasing, "you have some input and you need to get to some desired output" 2022-03-13 18:21:47 Nothing else matters, you don't need it 2022-03-13 18:48:36 I ***100%*** agree.