2022-04-10 10:25:09 I have a stack in C able to get any kind of type or I think so 2022-04-10 10:25:13 https://termbin.com/fq79 2022-04-10 10:25:33 there's something I should be aware of? 2022-04-10 10:39:26 No, I don't think so. That looks straightforward enough. Later, when I get into such things, I'm approaching it a similar way, with the type and address info packed together in a 64-bit cell, so that the items can sit happily on the Forth stack. 2022-04-10 10:41:02 The other alternative I considered (and remember, this is for later advanced stuff - not anything I'm incorporating into the base system) using a separate stack, so I'd have a data stack and a "type stack" that I kept in sync. The advantage of splitting it off that way is that a lot of things can still be directly on the stack without having to be a pointer. 2022-04-10 10:41:13 Like a 64-bit float (or int or char or whatever). 2022-04-10 10:41:33 Blending the type info into the cell means that it can only be a pointer to something, not really the something itself. 2022-04-10 10:42:05 You can also make arrays of these things and thereby get a Python style list, where the list can contain a mixture of types. 2022-04-10 10:45:41 yes, I'd like to have integers directly instead of pointers too 2022-04-10 10:53:22 but for now it will be like that, anyways I have to still decide a lot of stuff 2022-04-10 11:11:02 Well, I think when I get around to doing it I'll blend them together into one stack. 2022-04-10 11:11:56 That's a while off, though. 2022-04-10 11:12:15 I want it eventually for an environment that's like Matlab / Octave. 2022-04-10 11:16:59 The main burden of having the data items remote from the stack is that you have to manage that other memory. Once it exists, that single extra instruction to dereference the pointer really isn't worth getting too wound up over. 2022-04-10 11:17:29 I don't really know how I'll end doing stuff 2022-04-10 11:17:58 atm what I've done is to implement if and alike by taking lists of words from the stack 2022-04-10 11:18:18 not sure if I'll do the same now in C 2022-04-10 11:18:43 but if I do that I need to implement nested lists in order to have nested loops 2022-04-10 11:19:52 I think I should stay playing with perl until I got the stuff defined, but I'll try with C 2022-04-10 11:20:22 for some reason I feel like I'm doing it right just by doing it in C 2022-04-10 11:20:44 but C is not a language to make prototypes and experiment 2022-04-10 11:21:31 and I wonder if I should use lex and maybe also yacc 2022-04-10 11:23:00 I'd like to not rely in lex and/or yacc, but since I want to add strings and nested lists it's likely I'll need a parser, not like if I was only evaluating words 2022-04-10 11:23:14 Well, those other tools are really for compiler design, right? Where you're wanting to parse some fancy syntax? You wouldn't really need those for Forth - I think C would be more "well targeted." 2022-04-10 11:23:28 If you were writing a more standard high level language I'd agree, though. 2022-04-10 11:24:12 I suppose the way is to provide the tib in forth and make words that handle this stuff 2022-04-10 11:25:14 also I was wondering if use the berkeley db for colon words 2022-04-10 11:25:53 I would get hashes for free (don't mind in rewriting old word definitions) but won't work for primitive words 2022-04-10 11:26:26 I suppose nope, maybe I'll make the dictionary as a linked list 2022-04-10 11:26:33 I don't want vocabularies btw 2022-04-10 11:26:52 I think they go against the simplicity of forth 2022-04-10 11:27:32 and add overhead for a problem you can just solve with a prefix name like crc does, even more when forth allows a lot of freedom to choose a name for a word 2022-04-10 11:28:36 but I have no idea on how to convert words to an index in an efficient way 2022-04-10 11:28:43 like avoiding use of strcmp or alike 2022-04-10 11:29:30 that's maybe why I think in the berkeley db, but meh 2022-04-10 11:30:05 could use it for primitives too if the berkeley db returns an index for a word 2022-04-10 11:30:25 and could return an index for primitives and the list of words directly for a colon word 2022-04-10 11:32:03 Yes, that's exactly the way to do it. 2022-04-10 11:32:26 The standard "read a string from keyboard to buffer" word is EXPECT (addr max --). 2022-04-10 11:32:42 Old standard Forth wraps that in a word called QUERY: 2022-04-10 11:33:14 : query tib tib_length expect ; 2022-04-10 11:33:36 Then the word WORD parses the next space delimited word out of there and puts it in the "word buffer." 2022-04-10 11:34:11 You can arrange it so that the word buffer is located exactly where that name will need to be if you decide a new word needs to be created. So the rest of the create stuff just fills in the other fields around it. 2022-04-10 11:34:21 The name string doesn't have to be moved again. 2022-04-10 11:35:12 All of that is pretty easy - it's just moving stuff around a little bit and setting some things. 2022-04-10 11:35:36 The higher-workload word is FIND, which searches the dictionary for the word. 2022-04-10 11:36:51 But actually now that I have that string comparison primitive my find is down to just seven short little lines, so it's not THAT bad. 2022-04-10 11:39:33 I am writing a half-assed json parser in forth and I was wondering what are some forth-friendly datastructure? I know in forth data is code, so probably anything that can be interpreted right? 2022-04-10 11:40:31 Anyway json sucks pretty hard imo after having written that, are there other examples out there of people handling JSON data in forth? 2022-04-10 11:41:03 So, the main problem you might run into is that json would allow things to be put together without spaces in between - if you space separated all the tags you coud probaby leverage the interpreter in some fashion. 2022-04-10 11:41:29 Or maybe I'm wrong - does json have spaces in nice places? 2022-04-10 11:41:48 no space at all as far as I understood 2022-04-10 11:42:13 I am basically parsing char by char and check for the " : , etc... 2022-04-10 11:42:19 Right. 2022-04-10 11:42:28 And that's what you'd do in a lmost any language. 2022-04-10 11:42:37 I'm looking at the Wikipedia article on json now. 2022-04-10 11:43:01 The example they show has { } and [ ] characters space delimited. 2022-04-10 11:43:06 But not the : 2022-04-10 11:43:25 Sometimes } and ] have commas after them, but you could handle that. 2022-04-10 11:43:26 Yeah but I need : in order to distinguish key and values 2022-04-10 11:43:53 You could always re-define it to your needs. 2022-04-10 11:44:03 You'd just have to remove that when you were done. 2022-04-10 11:44:09 I already have something working, the last thing I need is to handle indexes in arrays 2022-04-10 11:44:24 And since it's not space delimited Forth wouldn't naturally pick it up. 2022-04-10 11:44:54 I was thinking a few weeks ago about how one could use regex tech in a Forth interpreter. 2022-04-10 11:45:20 The interpreter would have a list of regexes, and it would work through them - the first one that gave a match would trigger its supporting code. 2022-04-10 11:45:52 But I was more interested in the best way to "store" JSON, right now I just have a chunk of memory containing the whole string and I go through it each time I am looking for a specific value. 2022-04-10 11:45:56 My notion was that you could set that up so that it did the same thing with normal Forth that Forth does, but then you could add other regexes to extend the capability. 2022-04-10 11:46:04 Ah, ok. 2022-04-10 11:46:14 Well, that's what I meant when I said you'd wind up having to build it 2022-04-10 11:46:27 You can store stuff in absolutely any way you like (lists, trees, etc.) 2022-04-10 11:46:44 Just no native support for operating on and navigating those structures. 2022-04-10 11:47:07 JSON is like tree structured, isn't it? 2022-04-10 11:47:33 Seems like it yeah 2022-04-10 11:47:48 Are S-expr a thing in the Forth community? 2022-04-10 11:48:00 No. 2022-04-10 11:48:22 If it's a formal computer science thing it's likely not a "thing" in Forth. Forth is very... basic. 2022-04-10 11:48:40 It didn't in any way rise up out of academia. 2022-04-10 11:48:42 KipIngram: find was easy to implement when I've tried to implement vocabularies, but was a primitive 2022-04-10 11:49:03 Find is a good candidate for a primitive, for performance reasons. 2022-04-10 11:49:29 I was pretty happy with the Forth code I wrote for it, though - I thought it was a nice showcase for the features I've added. 2022-04-10 11:49:41 actually was named 'search' and traversed the vocabularies checking if one of those indexes in the dictionary was the word you wanted and returned the index 2022-04-10 11:49:52 And adding the counted string compare primitive probably captured the lion's share of the benefits of having it primitive. 2022-04-10 11:49:52 also it's the reason I don't like vocabularies 2022-04-10 11:50:20 I may be wrong, but my ipression is that Chuck drifted away from vocabularies, or maybe wasn't into them in the first place. 2022-04-10 11:50:22 it's easy to implement but I feel like adds so much overhead just for a problem you don't really have 2022-04-10 11:50:33 That starts to get into "namespaces," and that's probably too fancy for him. 2022-04-10 11:50:51 Plus he's big on focusing maniacally on "the one problem at hand." 2022-04-10 11:50:54 even knowing usually you don't have many vocabularies, still feels like unnecessary overhead 2022-04-10 11:51:09 Vocabularies are almost by their nature a way to separate things into different application areas. 2022-04-10 11:51:17 KipIngram: I've also read he does not like local variables 2022-04-10 11:51:33 Right - that's "the stack." 2022-04-10 11:51:39 I think he also considers it something you don't really need 2022-04-10 11:51:56 vms14: He warns against any type of variables if I remember correctly 2022-04-10 11:52:12 Any of the things we think of as being "good ideas" in Forth he's usually taken more to the extreme than the general community has. 2022-04-10 11:52:18 haha then he won't like my stack able to get any kind of type 2022-04-10 11:52:28 but I like this feature 2022-04-10 11:52:35 No, not at all, but hopefully he'd recognize that you're learning. 2022-04-10 11:52:49 I can push words in the stack and this let's me add lisp macro features 2022-04-10 11:52:56 Yep. 2022-04-10 11:53:05 although reading from the tib would also work 2022-04-10 11:53:58 but it let's me have lists inside the stack too, and then I can get lists of words which I could execute or do whatever I want 2022-04-10 11:54:00 Well, somewhere under the hood of the tools you're using there will be something like "reading from the tib" going on. 2022-04-10 11:54:17 Somewhere your typing gets broken into pieces and interpreted, so "it's in there." 2022-04-10 11:54:20 You just may not see it. 2022-04-10 11:54:44 KipIngram: I don't get what do you mean 2022-04-10 11:55:05 I'm thinking I may change how tib works at some point, when I implement command history. 2022-04-10 11:55:37 I'm thinking I'll make the historoy disk resident - a block will be opened, and each line of text will be appended to it. When it's full I'll move on to the next block. 2022-04-10 11:55:39 my initial idea is to have a buffer of more likely a file handle 2022-04-10 11:55:58 That way all the past commands are there, and at some point I'll add a way to scroll back to them. 2022-04-10 11:56:00 and if it's the repl then stdin would be the file handle 2022-04-10 11:56:12 and if it's a file, then this file's handle 2022-04-10 11:56:24 Couldn't do that initally, because I didn't have BLOCK then. 2022-04-10 11:56:40 so word would fetch from that filehandle not worrying whether we are in a repl or a file 2022-04-10 11:56:50 And that will make the command history something I can edit - open it up, copy pieces of it out, etc. 2022-04-10 11:56:56 well word should never worry about that 2022-04-10 11:57:06 it's expect 2022-04-10 11:57:40 That's right. You can decide whether word gets passed a pointer or assumes one, but either way it will just call tib, and has no idea what tib is doing. 2022-04-10 11:58:02 Usually I think it just automatically uses tib. 2022-04-10 11:58:14 But if you pass a pointer to it, you could then use it in other places. 2022-04-10 11:58:24 And it is a useful bit of code. 2022-04-10 11:58:31 You also pass it the character to use as a delimiter. 2022-04-10 11:58:53 In older Forth ( ... ) is a comment, and ( is just a word that calls WORD on the ) character. 2022-04-10 11:59:04 Throws the result away - you've now skipped over it. 2022-04-10 11:59:48 I was also thinking one day that if you insisted on ( and ) being space delimited, you could use Forth to write a fairly simple Lisp interpreter. 2022-04-10 12:00:14 It would build stuff up on the stack, and the ) items would process chunks of that stuff. 2022-04-10 12:00:28 ( would mostly just put a "marker" on the stack. 2022-04-10 12:00:46 then s" does the same with " 2022-04-10 12:00:53 calls word with " as delimiter 2022-04-10 12:01:59 if word does not find the delimiter, triggers expect again? 2022-04-10 12:03:19 KipIngram: I have to implement that feature btw, to have lists 2022-04-10 12:03:36 but need them to be able to nest 2022-04-10 12:07:30 why Chuck does not visit this irc channel? 2022-04-10 12:07:34 Right. 2022-04-10 12:08:01 I suppose it's fine for him as I would make him cry xD 2022-04-10 12:08:10 Oh gosh - I'd be amazed if that ever happened. We're not very important around here. 2022-04-10 12:08:41 Back when the TV show Babylon 5 was on, the creator and showrunner participated in the usenet channel devoted to the show. That was awfully cool. 2022-04-10 12:10:32 That's the thing about that "scan for char" mechanism. it doesn't handle nesting, really. 2022-04-10 12:11:11 So, in that old book Chuck wrote, he talks about "levels" of parsing. 2022-04-10 12:11:26 He shows an example of how an infix parser could be written, if you felt you had to have one. 2022-04-10 12:11:58 That's "Programming a Problem-Oriented Language" 2022-04-10 12:12:06 http://forth.org/POL.pdf 2022-04-10 12:12:16 It's back toward the end of the book. Might give you some ideas. 2022-04-10 12:14:07 I think back in those days he hadn't gotten quite as fixated on minimalism as he got later. 2022-04-10 12:14:40 It's really a shame he didn't get more credit for all that work - he was in some ways a trailblazer. 2022-04-10 12:15:01 But he didn't have certain letters after his name and didn't work for a big fancy research lab, so... 2022-04-10 12:15:44 I had a quick look at that book 2022-04-10 12:15:53 liked this phrase "I'm not sure why you're reading this book. I" 2022-04-10 12:15:59 Then later outfits like Microsoft picked up some ideas from Forth, like when they putted threaded processing in BASIC. They touted it as some revolutionary new technique. 2022-04-10 12:16:05 Forth had done it years earlier. 2022-04-10 12:16:14 time to take the dogs for a walk 2022-04-10 12:16:26 thanks KipIngram you still helping me to realize a lot of stuff :D 2022-04-10 12:16:37 dont threads predate forth by a lot? 2022-04-10 12:16:42 always clarifying stuff 2022-04-10 12:16:51 i know some fortran compilers used it but not sure if it was back in 1955 yet 2022-04-10 12:16:53 Well, "thread" is an awfully overloaded word. 2022-04-10 12:17:09 well, list of addresses in memory 2022-04-10 12:17:41 Ok. Well, they may have - I'm not sure. Could be that what I was reading was a pro-Forth writeup, and failed to mention still earlier origins. 2022-04-10 12:17:59 It was something Jeff Fox wrote, but I don't recall which one. 2022-04-10 12:22:00 I have felt at times that Jeff will wax on and on about the advantageous stuff re: ideas, but doesn't really lay out the gotchas. 2022-04-10 12:22:19 He's definitely an evangelist. 2022-04-10 12:27:39 this is the religion part of it 2022-04-10 13:07:32 Indeed. 2022-04-10 13:09:32 Anyway, looks to me like for json processing you want a "token" recognizer, and token can be { or } or [ or ] or : or , or "a literal," where you get told what type the literal is as well as getting it separated out. Strings, integers, characters, floats, whatever. 2022-04-10 13:10:20 I think you could pretty easily then write code that acted on those tokens, and you'd store items on the stack as needed as you traversed the tree structure of the thing. 2022-04-10 13:10:42 Like I implied before - } and ) would do most of the actual "construction. 2022-04-10 13:10:46 " 2022-04-10 13:11:30 Some representation of your literals and their types would just get pushed to the stack, and { and [ would push markers, similar to how IF ... THEN gets handled now. 2022-04-10 13:12:31 I guess : would need to look ahead - the key is already on the stack, so it would parse the value out and create a key/value pair in memory smewhere, and push a typed pointer to it. 2022-04-10 13:13:22 You could make that a little simpler if you switched from : to : but then it wouldn't be JSON anymore. 2022-04-10 13:13:44 Maybe that would be RSON (RPN-SON). 2022-04-10 13:14:14 "RSON - Setting the Data World on Fire" 2022-04-10 13:18:30 If I needed to do this, and I didn't want to code the whole thing (i.e., I wanted to leverage the interpreter), I'd define a set of characters - in this case { } [ ] ( ) : , - and modify the interpreter so that anytime one of those characters was encountered it was a separate item. It would terminate pparsing of other characters, and would then be the next single-character item returned. 2022-04-10 13:18:49 With that in place you could then define those words suitably and you'd have a json parser. 2022-04-10 13:26:19 You could have such a feature installed in a Forth, and so long as you made that list of chars empty, it would just do regular Forth behavior. 2022-04-10 13:26:36 But yo could then "switch it on" anytime you wanted to for particular tasks. 2022-04-10 13:27:43 Just point it at a counted string comprised of the chosen chars. 2022-04-10 13:29:13 The neat thing you could do there is use other Forth words: 2022-04-10 13:29:30 { temp:ReadTemp } 2022-04-10 13:30:08 Since ReadTemp isn't in quotes, it would be that word that got presented to Forth, and that might go read a temperature sensor somewhere and pack the result into the JSON output. "Intelligent values." 2022-04-10 13:30:59 I better stop - I'm going to talk myself into it if I'm not careful. 2022-04-10 13:31:41 do one run inserting spaces into the json so it's valid forth 2022-04-10 13:31:55 then another run feeding it into the interpreter 2022-04-10 13:38:25 Yes - that's certainly an alternative. 2022-04-10 13:38:35 Avoids mucking about with your interpreter. 2022-04-10 13:38:56 But given how easily this could be turned on and off, I'm not sure it's mucking that bothers me too much. 2022-04-10 13:39:10 It does become another thing like BASE, though. 2022-04-10 13:39:26 Is its value right? Do you need to change it and restore it when you're done? Etc. 2022-04-10 13:39:43 In this case yes, you'd certainly need to do that. 2022-04-10 13:40:46 I've already had small hassles with BASE. For number input I don't use it or need it - I can specify the base as part of the number. 2022-04-10 13:41:08 But I wanted to be able to have output in various bases, and didn't want to have to always push that 10 before . 2022-04-10 13:41:12 So I added base. 2022-04-10 13:41:33 And it's fun watching what happens when I compile this editor code I'm working on while forgetting to put BASE back to 10. 2022-04-10 13:41:50 The ANSI sequences for setting the cursor position involve creating number strings. 2022-04-10 13:41:58 And they gotta be in base 10. 2022-04-10 13:44:00 I really wish they'd provided an embedded binary way to do that; it's kind of not great performance having to do two number string builds to move the cursor. 2022-04-10 13:44:40 They could have just taken two one-byte integers for the row and column. 2022-04-10 13:46:22 Oh, hey - I discovered last night that my system was taking like half a second to return an escape character from KEY. 2022-04-10 13:46:30 Everything else comes back instantly, but not that one. 2022-04-10 13:47:02 Turns out screen is doing that, and it defaults to a 500 ms pause after esc. 2022-04-10 13:47:07 I reset mine to 5 ms. 2022-04-10 13:47:45 I wrote a little code that hopped over to the alternate console screen (smcup) and waited for a keystroke to hop back. 2022-04-10 13:47:59 And it was very evident that it took a little longer if that keystroke happened to be esc. 2022-04-10 13:48:30 Apparently this is to let you map escape sequences to keys for handling in vim and things like that. 2022-04-10 13:50:16 I don't know why they decided to use an ASCII character that HAS A KEY ON THE KEYBOARD as the lead-off character for those CSI sequences. 2022-04-10 13:50:23 They could have chosen anything else. 2022-04-10 13:50:56 Why was it the case in the old days that they were only willing to use 7 bits of the byte for ASCII characters? 2022-04-10 13:51:35 Seems like it would have been great if they'd used, say, 128 or 255 as the CSI leadoff character. Something that you never ever see for any other purpose. 2022-04-10 13:52:16 That would make it tons simpler to write handlers for the input stream that dealt cleanly with those multi-byte sequences. 2022-04-10 13:58:03 It is interesting to see the evolution in Chuck's attitudes over the years. In that early book he seems to have attached some importance to showing that yes, you CAN make this system do things like infix and so on. 2022-04-10 13:58:23 Later he was more like " - you shouldn't even want that." :-) 2022-04-10 13:59:29 I guess that's a fairly common change that comes with aging, when you've been reasonably competent in the world. 2022-04-10 13:59:48 I also care a whole lot less about what others think than I used to. 2022-04-10 14:08:27 I guess when we're young we're legitimately concerned about "proving ourselves." 2022-04-10 14:09:45 I was watching a Jordan Peterson video once. I forget exactly what he was talking about, but it had to do with young people "establishing" themselves in the world, particularly young men. He said a bit, and then said "society values almost nothing more than a young woman." A few more words, and then "society values almost nothing LESS than a young man." 2022-04-10 14:10:03 Lot of pressure on the boys to PRODUCE. 2022-04-10 14:11:08 Not terribly politically correct, but his point was that it's true anyway. 2022-04-10 15:06:46 jordan peterson oh man 2022-04-10 15:06:58 hels thw dude who thinks lobsters 2022-04-10 15:12:15 Heh heh. Yes, he's actually a scientists. His point in that situation was that lobsters and humans share a particular bit of brain chemistry. But yeah - it's one of the things his critics like to straw man him with. 2022-04-10 15:12:43 I think he's a pretty smart guy. He has at least some worthwhile things to say. 2022-04-10 15:13:05 Or, at least, has said some - I wouldn't know if he has any more or not. Maybe he's tapped out. 2022-04-10 15:40:57 i dont like jordan peterson bcoa of his attitudes on women and trans people 2022-04-10 15:41:23 fron what i've heard he deserves the doors getting glued shut 2022-04-10 15:45:36 his stance on the proposition in canada to compel the usage of gender pronouns is what got him famous to begin with 2022-04-10 15:45:50 My perception was that he didn't express an attitude toward trans people - what he was objecting to was the general idea of government entities restricting how people are allowed to speak. It just happened to fall into that topical area, but (I hope) he would have similarly objected regardless of the domain at hand. That may be wrong - you may be right. But I haven't heard him give an opinion on trans 2022-04-10 15:45:53 people either way. My perception is that he's generally a fairly liberal person when it comes to basic attitudes (which made people trying to label him "alt right" rather ludicrous). 2022-04-10 15:46:54 His enemies distort that, to produce a way to attack him, but you need to be willing to look past the surface and judge him based on the true meaning of his words. 2022-04-10 15:47:55 he's said quite a lot about what he thinks about pronouns re trans people. his objection is that the government would compel you to say something as i understand it 2022-04-10 15:48:16 Now, if you want to say that it is more important to him that people be allowed to express themselves verbally in a free way than it is for trans people to have a world in which no one says anything they don't like - that would be true. Freedom of speech is a big deal to him - in some ways the *biggest* deal. 2022-04-10 15:48:26 It's the basis of our entire system of political discourse. 2022-04-10 15:48:46 Lose freedom of speech and you lose freedom. 2022-04-10 15:49:44 So you can accuse him of failing to put the trans issue at a higher priority than every other consideration. 2022-04-10 15:50:13 the thing he argues for is the lack of consequences for ones actions 2022-04-10 15:50:29 speech is an action that has consequences 2022-04-10 15:50:31 But hey - if you can actually point me to a quote in which he expresses antipathy toward trans people, then please do; I might have to upgrade my opinion of him. 2022-04-10 15:50:44 you insult someone, that has consequences ay? 2022-04-10 15:51:01 Or revise my opinion that is - it wouldn't be an "upgrade." Bad choice of word. 2022-04-10 15:51:12 if you called someone an idiot and insulted their parents would you not expect them to get 'offended'? 2022-04-10 15:51:36 Well, I grew up in a world that said "sticks and stones can break my bones, but words can never hurt me." We actually lived that way. 2022-04-10 15:51:49 i dont remember him ever saying there were no consequences or they shouldnt be offended. thats something different 2022-04-10 15:51:54 Part of being an adult is having at least a reasonably thick skin. 2022-04-10 15:52:13 MrMobius - agreed. 2022-04-10 15:52:24 The consequences are that people may have a low opinion of you. 2022-04-10 15:52:35 Going around insulting people isn't very nice. 2022-04-10 15:53:37 I don't even recall him saying that he would generically be unwilling to address people by whatever prounoun they wished - what he didn't want was the government coercion. 2022-04-10 15:54:18 Once it was made a political issue, he might have been less willing to then - as a matter of principle. But if it had never become political, I figure he tries to be a relatively polite guy. 2022-04-10 15:54:47 But we'll really never know now, because that world in which it didn't become a political issue never came into being. 2022-04-10 15:56:27 I do understand how the people involved feel - if somebody insisted on using female prounouns to refer to me, I'd be quite irate. 2022-04-10 15:57:25 But I do not expect the government to make it against the law for someone to do that. 2022-04-10 15:57:41 And we are rather badly off topic. :-( 2022-04-10 15:57:49 I'm sorry - it was my fault. 2022-04-10 16:01:27 KipIngram, do you ever still think about making a calculator? 2022-04-10 19:14:11 Haven't in a while, but I would say it's still on the ist. 2022-04-10 19:14:14 list 2022-04-10 19:14:32 I suspect I'll get a 3D printer at some point, which might make parts of it easier. 2022-04-10 19:53:39 If I do ever get that done, one of the things I want to include is support for arithmetic on finite fields. 2022-04-10 19:53:54 I think I've seen most everything else on a calculator, but not that. 2022-04-10 19:54:46 And I know I want to be able to ssh into it (hopefully over bluetooth) and access it directly via Forth. 2022-04-10 19:55:01 But it also has to have "keystroke programming" for stand-alone work. 2022-04-10 19:55:20 Of course that would also make Forth definitions, but the interface would just be different. 2022-04-10 22:10:30 Always worth sharing: 2022-04-10 22:10:32 https://cr.yp.to/2005-590/goldberg.pdf