09:54:54 You're a real time control system. 09:54:57 You can be talking on the phone or whatever and then you press a button and goes, and then a few of these real simple kind of filling devices for them. 09:55:09 Let's say. Lately, I've been working on. Let's find this other window will stop this one, and find the other one. 09:55:24 And it is 09:55:27 ok I got involved in lot of CMC work this DIY C and C. 09:55:36 And there is a gaming Bart, who has been doing CNC. 09:55:50 You know, low cost CNC controllers, based on the open source verbal firmware. He did a port of variable to sp 32, so you can control it over Wi Fi. 09:56:06 And the microprocessor. 09:56:09 Let me. I didn't get that shared, you say that CNC controller. 09:56:13 Yeah. Okay, so this microprocessor the sp 13 microprocessor doesn't quite have enough GPU to control a multi axis system. So he was always having to do new board variants for different kinds of usage scenarios or different numbers of axes, or different 09:56:37 spindle controls and stuff like that. And I helped him develop a hardware expansion solution that can expand the IO control the IO system with very very high speed low latency low jitter. 09:56:55 io. 09:56:57 And so based on that we co developed this new controller that can have up to six axes with on board drivers, and with awkward drivers you could go up to 12 axes if you know what to do with them. 09:57:15 Plus it has modular input and output board so that you can just plug and chug different kinds of sensing devices or different kinds of spindle controllers like lasers or plasma torches, or Vf the motor controllers or PDOVM spindle controllers, you name 09:57:38 it, it's expandable with these just plugin modules, but super flexible and there's actually a little bit of earthiness in this and that, in order to support this height spend ability. 09:57:53 I re architected the configuration system for this firmware, based upon forth words. 09:58:03 And what I mean by that is I created a c++ class. 09:58:09 That is called Word, and it's the basis for a name equals value configuration system that blew right through the limitations of variables. number parameter configuration system. 09:58:28 With that highly flexible name equals value configuration system, we were able to add hundreds of new configuration variables that are able to support this very wide variety of 09:58:47 new IO capabilities. 09:58:51 So we're having fun with this and we're going to make it fully runtime configurable, and the near future so that users don't have to re compile it all and just get one version of the firmware, and then load a markup file into it, they will fully configure 09:59:08 it. 09:59:10 So let's say, I'm sure that 09:59:15 and show you what I've been working on the last two weeks. 09:59:21 So, do the coven. 09:59:25 My, my daughter started moving back home. 09:59:29 And we didn't really have space for them all. 09:59:34 So, 09:59:38 we had this farm structure that was basically an open frame share with a Corrugated Roof, and we had used it for various things like workshop for, you know, fixing the mowers and stuff or, it was a dog kennel for a while and it was a junk storage area 10:00:00 for a while. And so we're building it out as an apartment for my daughter, my one of my daughters. 10:00:07 And this is the sketch up. 10:00:11 Designed for it. I have a friend who is a builder, and he had some time between jobs and so he came over and over the last 10 days we've turned this thing from a candle into an apartment that we're pretty close to finishing that. 10:00:31 But one interesting design thing is you see this this Murphy bed here. 10:00:37 I didn't like the Murphy bed mechanism they cost about $300 and they're kind of goofy with springs and stuff like that. 10:00:45 So I designed a better Murphy bed, and I'll show you the design for that stuff this year here and go back to fusion if I can find it. 10:00:59 Fusion share screen 10:01:05 there. 10:01:07 Share. 10:01:11 Where is it. 10:01:33 who have to go back to a different here. 10:01:50 We're going to go back to a different here. 10:02:09 Well, I can't find it okay I'm just going to describe it. So instead of having a mechanical arrangement of springs to counterweight the bed so that you can know lift a heavy bed. 10:02:22 I realized that if you put big disks on the side of the bed near the place where it tilts up. 10:02:34 You could just roll the thing up on the disks, but you've got a problem that it's too heavy. So, I realized that you could attach bricks to the back of the bed to move the center of mass of the whole system closer to the rolling point. 10:02:55 And with about 100 pounds worth of bricks, which is something like $130 worth of bricks. 10:03:06 You could move the center of mass close enough to the rolling point that the effective way at the leverage point where you're lifting is about 15 pounds. 10:03:21 So I'm looking forward to building a tilt up Murphy bed with no moving parts for the apartment. 10:03:30 So that's 10:03:34 a you know synopsis of the kind of stuff that I've been working on last thing I'll do is I'll just show you some of the physical artifacts here. 10:03:43 So this is the CNC controller, one of them. 10:03:49 This is the, it's hard to see this. this is the 10:03:55 keg of the bottle filler you can't really see it. 10:03:59 See if I can put something behind there. 10:04:06 Yeah, so this is the 10:04:10 bottle filling mission name. 10:04:13 There is a king. That wouldn't be Philip converter but it's actually for water just for testing. There's a co2. 10:04:26 There is it, there is a co2 cylinder. 10:04:30 And, oh here's an interesting thing with my 10:04:37 coffee hauler. I have these this power supply that drives the motor. 10:04:47 And I was getting these from China for like $10. 10:04:51 And then all of a sudden it stopped working. The power supply did not have enough power to drive the motor. 10:05:00 And when I found out was this model, JDT 001 which I had been using had been switched out to this model KLY. 10:05:13 And they have identical specifications at a maximum of 25 volts and three amps, but they behave very very differently. And so I did you know some vi curve calculate or measurements and found that the JV teasers are one model that I have been getting ahead, 10:05:38 very, very different overload characteristics, when you try to drive more current than the rating on the JT teasers are one, it just drops the voltage that continues to pump out current so it's almost like a constant power overload characteristic and 10:05:57 it's very very good for motors. 10:06:01 Because when they're starting they need a lot more current and under load, they need a lot more current, whereas the new one is very very hard currently a minute three amps, regardless of the voltage. 10:06:15 So, when the motor starts to want more current especially during starting. 10:06:21 It just won't supply it. And so, this the new model, just doesn't work. And I'm not sure I can get the old model anymore I haven't managed to find a source so we have to redesign the power supply architecture. 10:06:38 So that's kind of all I have to say they may want to ask any questions. 10:06:49 Yes. 10:06:51 You mentioned using ESP 32 to communicate with this board for controlling a CMC system, yes I'm presuming you download the, the G code to the board, and then run it from this control board that, so you don't have any latency problem, because with the 10:07:09 wireless you can't be assured that you're going to get your data flow going at full speed all the time. 10:07:17 So there's a couple of different solutions, the traditional way of doing this verbal controller is that it has a serial interface, and the serial interface. 10:07:33 Feeds g code into a queue. And the controller pre processes the G code into emotion plan. And hopefully, the serial interface is keeping the queue full, so that you don't have any stuttering. 10:07:52 And in general, that's the case because under most scenarios, the serial is way faster than the motion. 10:08:07 You know, typically a motion segment will be many milliseconds long, whereas it takes less than a millisecond to send a line of code. 10:08:11 So that's the scenario scenario. 10:08:15 The Wi Fi scenario is even better, you could send g code over Wi Fi and stay ahead of the motion quite easily. 10:08:29 But in this particular controller. We also have an SD card. So, you can just upload the G code program to a file on the SD card, and the controller will process the G code from that file, and over the wireless interface, you just tell it, you know, to 10:08:50 run the file, and the wireless will collect telemetry and show you progress. 10:09:03 I don't hear you. 10:09:07 I need to unmute peace muted. Okay, well, you have a problem with machine shop where you've got all this machinery that really isn't electrically friendly, and so I would hate to use the system and a real machine shop like that and trust the Wi Fi. 10:09:24 Yes. 10:09:26 We also have problems with interference from spindles. So one of the things we've done with this controller board is we felt a bulletproof IO. That's optically isolated every you know six ways from Sunday. 10:09:43 I would not recommend using this in a production machine shop. 10:09:52 It for nothing, no other reason that the. 10:09:58 There's the Harding problem is you say that there's also latency issues that are very difficult to solve with the separate controller and separate display. 10:10:09 And I think you know for for production use, and on a big machine. You really want to have very tight integration of everything for it for no other reason for safety. 10:10:48 always curious about. 10:10:50 Like on your various little specialized machines, what the customer gets. 10:10:59 And, you know, essentially, you know, there's a longevity problem of some of these things. A lot of these guys expect these things to run for 1520 years. 10:11:10 But in 15 or 20 years technology's changed. You won't be able to get those little micro processors anymore, stuff like that. What, what, what, what do you give the customer so that they said they have a way of dealing with, with the, with the future of 10:11:30 the machine or First of all, only a very small number of these are products. 10:11:38 The coffee hauler is a product but I'm really only dealing with, you know, the boutique market. So now I have a very small number of customers and I just give them that sir, so anything breaks down, you know, a lot of them are local so I just go, you 10:11:56 know, pick it up and fix it back on. And in order to keep myself sane and mostly doing non mission critical stuff. 10:12:07 So, if you know breaks down. 10:12:12 Well, instead of mine, you know, the $300 thing from me they're gonna have to go by, you know, a $10,000 thing from a reputable supplier and. Thank you very much. 10:12:27 Now, the commercial customer. 10:12:32 Basically, I just trade, trade. 10:12:34 You know automation for Miuccia. 10:12:39 In order to keep myself, you know, enjoying this. I'm not doing too much, customer service. 10:12:49 If you, if you want it. Good. If you don't want it. We'll see you later. 10:12:58 And I know I don't have anything against customer service but that's real work, and I'm retired, I'm having fun. 10:13:12 Let's make that the last question, and move the show on I'm reminded with your comment about customer service as to why fourth incorporated prices were always so high. 10:13:24 They said, Gee, if we have to support this will have to charge money enough to pay the support guy and unfortunately, other companies like, for example, well let's not site any examples other companies decided well we're going to publish software and 10:13:43 charge what we charge for it and not support it. 10:13:46 And it's much cheaper. 10:13:49 Yeah, all right on that cheerful note. Thank you so much, Mitch, I guess. 10:13:56 Everybody can click their thumbs up button or their way, or, you know, thanks, or twinkle yes let's all twinkle. 10:14:05 Anyway thanks thanks so much Mitch, and it's, we're so honored to have you here is, is one of the very great so the Fourth World. 10:14:15 So next we'll move on to Brad, who has started screen sharing and speakers, introduce yourself if you think that there's something I should have said about you. 10:14:27 Please say it, or message me at all, I'll say it for you, or something. 10:14:34 And on with the show. 10:14:38 All right. Can you hear me. 10:14:41 Yes, we can hear you five by five. Okay. 10:14:46 All right, well I'm gonna give a Brian Nelson, I'm 10:14:53 interested in various aspects of forth and various domains, it can be applied in. 10:14:59 I, I'm going to talk about two separate things. One of them is a, a topic that I keep bumping which is I been for the last several talks that I've given it SP fake done something a little unusual with the slides and I wanted to sort of do a little aside 10:15:16 and this this this card is not strictly for us and then the other thing is to talk about our ongoing efforts with a version of for free SB 32 through Arduino and sort of adding to that feature set and sort of what's up what's up with that so what's up 10:15:37 with the slides. Um, so I've been using a different presentation tool for the last while for a long time for those of you who've seen some of my prior talks. 10:15:46 I for quite some time have been using a thing called reveal JS which is this JavaScript tool that lets you make a slide deck sort of with HTML tags and it's you know you put in your text and you. 10:16:01 You still have to know various sort of tags and wrap things around it and it has quite a lot of flexibility you can, you know, sort of do do arbitrary things with it, but recently I found myself realizing I was sort of spending a lot of time fiddling 10:16:15 with slides and not particularly concerned about the content. 10:16:19 And I came across this tool. For those of you unfamiliar with, there's this this group called suck lists that have a variety of tools that are that are not written for us like most of them are written in C. 10:16:31 But they're sort of focused on sort of start minimalism and they try to write the tools sort of with minimal dependencies and minimal size and things of this sort today have one of the more prominent things is that they have a window manager written in 10:16:46 a small number of wines and see where they are. So the way that you can figure it as you go change the source code. 10:16:54 And in this mix of tools they had a tool called sent, which presumably short for pre present, and it uses the style that they refer to as the Takahashi method, after this particular fellow decided he needed to give some presentations and didn't have anything 10:17:12 cool to put on the slide so he just made the words really big. 10:17:16 And the style is just that you you have sort of a minimal set of things you don't. 10:17:22 You really just focus on the words and and to a limited extent maybe you use some Unicode emojis. 10:17:29 And so, I create the one problem with this, having previously done slide presentations, even generated and forth in various forms that if you can't put something on the web, it sort of doesn't stick around you can't point people at it and so I wanted 10:17:44 a version of this thing that operated on the web. 10:17:48 The tool is 200 lines of JavaScript code, and I when I tried to do is sort of stay semi compatible with the descent utility, and I'll show you in a second what this looks like. 10:17:58 But basically, the idea is that you have a little header on the top few lines. 10:18:04 Maybe setting up some things, some basic customization. 10:18:08 And then everything else is just Unicode text, and if you skip if you skip, you know, two lines in a row. 10:18:13 That's it. That's a slide boundary, and so it allows you to just sort of crank out slides as fast as you please. And it just stretches them to fill up the screen is as fully as it can. 10:18:24 There is a syntax to embed images, the sort of caveat on that is that if you use images, it fills the entire screen and that's it. 10:18:34 The. So why the focus is on content is made it really nice to sort of cut and paste source code one thing that I used to spend a lot of time fiddling with in various forms, especially for various reasons before source code with reveal JSE sort of making 10:18:50 it happy embedded in in JavaScript. 10:18:54 This tool is able to let me just, sort of, literally, you know, cut and paste from from source code and display it and not think too hard on things spent I don't have to worry about like oh is this slide too big or whatever. 10:19:07 And if I do happen to embellish something with an image. I just, you know, go search the internet for, you know, an emoji have a certain type and paste it right in. 10:19:16 So this this is literally what the input looks like in it like in a source source code editor I can just, you know, put in words and skip a line, and if I happen to cut and paste tech you know an image or not an image but rather write a Unicode character. 10:19:32 Then, then that will show up and so something like this, these these three sections, turn into slides, like that. 10:19:40 If you put an ad sign and the name of a file then it will embed an image on, I, I added one sort of weird constraint to myself, which is that I wanted these to be viewable on it sort of a dumb browser that doesn't have JavaScript enabled and so I sort 10:19:57 of. 10:20:09 When insisted that whenever I do one of these add signs which I do very rarely also include an image tag and so if you open one of these presentations and turn off, JavaScript, you don't get the nice slideshow operation but you you get. 10:20:12 You can sort of see everything in line. 10:20:14 The way you interact with it, there's just keys to move left and right. 10:20:19 If you're, you're outside it'll show a slide number up above and so as I move forward and backward if you notice up in the URL is that you can link inside individual slides. 10:20:31 And then this is this is an example of, you know, an image. 10:20:37 And, yeah, I mean the code. The code itself is is not very much and not not a ton. It's possible to reference it. 10:20:49 You know, 10:20:49 that's that's it. 10:20:51 So just to the bare bare minimum I, it's a little bigger than it would be just because I made it have enough plumbing to be able to to work on the phone with touch events and things of that sort. 10:21:03 But for example, this present this is the, the text of this presentation and so, you know, literally, I'm just, I've got this little header with a little bit of magic and sort of what would be the first slide. 10:21:17 And then, and then just put in some text, type it type it in, and that's that's your presentation. 10:21:23 It runs. 10:21:32 Having. 10:21:35 Well, something is unhappy with that probably all the zoom things ignore. 10:21:41 Ignore the head of the man behind the curtain there for whatever. Anyways, they work in the sent tool under normal circumstances and enough about that let's get on to the, the main topic of the presentation. 10:21:54 Um, so, we've recently rebranded what I was last time I presented here calling Micro Four as ESP 32 for the reason for the rebranding is to target the audience sets for the fourth 2020 group. 10:22:11 Peter, there has been promoting, sort of, instead of ESP version the fourth that you can put on a DSP 32 fairly easily if your setup with the Arduino tool to reduce sort of branding confusion we've rebranded micro fourth as this and and Thanks Dr. 10:22:30 King for flexibility around the sort of naming and all of that. 10:22:36 Hopefully this will translate into folks being able to use fourth and Peter has been trying to reach out to, to abroad, international audience. 10:22:43 There's also now a website. We put up to sort of document the system and, sort of, you know, actual attempted describing what it has and where we get the latest version, and all that sort of thing. 10:23:01 The oak, very briefly cover a couple of the new things that have shown up since, since like last presented to this group is a little bit of overlap in this presentation on that one that I did it the fourth 2020 group one big thing is that we've added 10:23:18 The primary motivation for this is that there were there is now enough functionality, especially in the Arduino version. 10:23:25 or ESP 32 point O version where there was, it was getting quite large if you type the words and listed everything out you got way too much stuff. 10:23:34 And so now, each of the different categories of bindings to different things like serial port and Wi Fi and whatnot are all broken out into their own vocabulary. 10:23:47 The. It's. 10:23:49 There's a general facility for vocabularies it's a relatively standard words with with one sort of subtle little quirk. 10:23:56 It uses sort of a hybrid between for 79 style vocabularies and forth at three style. 10:24:04 Basically the it's it largely behaves like forth at three with the, with it sort of the added thing that it's still changed in the way that for 79 style vocabularies work so if you for example have a, you know, there's an internal vocabulary that's built 10:24:20 in that was is defined inside of the fourth vocabulary. When you have activated the internals vocabulary, you can. If a word is not found in that vocabulary. 10:24:31 It cascades over and you will scan the fourth vocabulary and so on. 10:24:37 So, sort of all the typical standard words for definitions. I. 10:24:45 If anybody has sort of any historical precedent I can claim to I ended up having the list, list only the current vocabulary and words, sort of follow the chain of listing all the vocabularies that are visible, which is kind of can't handle occasionally 10:24:59 One issue with the way that the system is brought up because it's been 32 for sort of tries to kind of is absolutely little C code and in the sort of core of it as possible. 10:25:15 sort of just see the current world list if there's something convention I would love to hear from folks. 10:25:18 The initial force that comes up doesn't have sort of quite enough rope for vocabularies to work correctly. And so it starts out with a lot of the words actually in the fourth vocabulary so I've added this word transfer to move a word into the current 10:25:31 vocabulary, and that lets me sort of yank the words out of the fourth vocabulary that I don't want to be making things up. There's the. There's also a stack of word lists and these work as well, and are still often useful, even with the sort of 479 style 10:25:51 changing. 10:25:54 The only a slightly non standard it doesn't, it actually does not strip away everything down to a to an only vocabulary it sort of just does. 10:26:05 It brings you back to the fourth vocabulary and then progresses from there. 10:26:09 If you really want the fourth maybe freestyle vocabularies, I've got to work with sealed that will chop off the chaining and in the current vocabulary. 10:26:20 We added a block and under. 10:26:22 Just because I was, I was about to try to add a sort of a source code editor and found that, you know, it's easier to write a blog editor so. 10:26:30 So I started there, and added blocks in the process of sort of all the usual words. Um, it's, it's sort of my own. It's a line editor of my own sort of devising very, very simple, straightforward so just single character, you know, lift the current line 10:26:47 and the line and then you enter text by, you know, having a line number and an R, or a to insert and so on. And I'll show that off a second. 10:27:00 I'll sort of double up to the demo by demoing. Another thing. 10:27:20 There is a versions of the thing that can can operate on both Linux and and Windows. I'm going to use a, a terminal. Whoops. 10:27:39 Remember the path to it. I'm going to use a terminal to talk to the serial books it to actually plug in my plugin the board. 10:27:31 So, so this is, I'm not talking to just the local Linux system but I'm going to run terminal. And now I'm going to be talking to this ESP 32 board. 10:27:44 So, 10:27:47 so there's, you know, now this if you done, words, words that we listed on the system previously would have previously seen a whole bunch of 10:28:00 things that were sort of polluting the namespace. And now, for example, you know, if you go into the cereal vocabulary there's, oops, I can type in the words for cereal Porter isolated off on their own and, and, you know, you can, there's, you know, individual 10:28:17 words for their individual vocabulary so say for camera support and things of that sort. 10:28:24 So a little bit less cluttered. 10:28:28 The. 10:28:30 Oh yeah, I was going to demo the line it so that you do. 10:28:35 There's an editor vocabulary, sort of, typical thing, you can you know do NP to move forward and backward, you can load a lot of block and have it run into a thing. 10:28:45 So, and it persists on the, the SPI flash storage and the device. 10:28:51 Let's go back to the slides. 10:28:55 That made me ask you a question. Yes, please. 10:29:00 Hey, how you add a new block. 10:29:02 You are, that's a good, good. That's a great question. Um, so, because the, depending on how you've touched stores the block editor, the blocks can end up initialized zeros. 10:29:14 So, if you're if you're say on a block like this. 10:29:25 Which, if you go in and say for example to end to go to the next block. The problem is that you'll see that they're all filled with Knowles, there's the word white, which will blank it and fill it with with spaces, and then you can sort of go to town 10:29:32 and say okay you know here. 10:29:36 My new block and something of that sort, and then. 10:29:41 Yeah. So, and if you. So, as you you know if you wanted to jump ahead you could, you know, jump to block 20 and listed it okay block 20 is empty and see white bed and then, and so on, but. 10:29:56 So you're, you're sort of able to enter enter things, you know, And each block and 10:30:06 block, it does it does that cover what you wanted to. 10:30:12 Alright, so, 10:30:16 um, one other thing that I've documented. that's worth flagging the folks I tried to make it really easy for folks, especially in Arduino to add additional words to the sort of see core of the thing on on the Linux version. 10:30:30 It's. It uses dynamic linking to pull everything into that literally it's only pulling in like deal sim and I think one other one one other word is the only other sort of dependency on on the lesson and everything gets sort of pulled in dynamically, but 10:30:44 on Arduino because everything static Lee linked folks need to be able to add their own stuff I've used x macros extensively. And so it's a little bit of sea magic but but the net result is that if you want to add a new word. 10:30:58 It's as easy as this you add a single line like this in the particular place and rebuild the executable and and your, your word will show up and forth. 10:31:09 Of course this assumes a word that does nothing and has no no parameters. 10:31:13 If you, if you happen to have a word that has characters that are not valid in a see identifier, you need to do something like this, where you have the sort of the three elements that have noticed that the x versus the Y. 10:31:27 There's a push word if you have a value that wants to return a single element and put it on the stack. 10:31:32 There are some names that you can use from see to refer to the various elements in the stack either as integers or pointers to character or bites, or avoid and so on, and so for example if you had a C function like this that you wanted to pull in, you 10:31:50 could do something like this, where you described the you know the name here this one was done with an ex because the dash is not a valid character and a C identifier, you have to make up a name I should mention in this x form you need to make up a name, 10:32:05 and it just needs to be some arbitrary unique identifier, it doesn't actually matter what it is it's just being used by the C compiler as a name for it. 10:32:27 And then you need to balance the stack at the end and there's a word drop for there's a macro for that. 10:32:19 You can, there's a set word if you just want to replace what's on the top of the stack. 10:32:25 And you're another sort of style that you can do these images you can declare variables in here you'll notice that there needs to be a trailing backslash because these are all getting glued together into a giant macro list. 10:32:38 So, pulling in a, an outside module, sort of is straightforward, you just sort of each of the words that you want to reference you can expose them. This the web server is a good example if you have something that has an object that you need to, to create 10:32:53 and there's a. It's also a good example if you happen to need to do a call back, I plan to paper this over with a little bit nicer pattern for what you have to do if you want to have a call back from see into fourth. 10:33:07 One thing I added just the other day is dictionary pickling. 10:33:10 The idea being that you might want to save and restore this, the state of the dictionary to an image on disk. It actually only captures that of the high water mark after the system boots. 10:33:21 I've tried to make some very basic attempts to keep the system compatible. But I, by no means it. So in theory you can refresh the, the Arduino, the IO part of the system and your images may stay stable. 10:33:37 I wouldn't I wouldn't bet on it long term and we may put some work into making this work better but this is a sort of more like a thing you could do to to keep state within a given version. 10:33:48 There's a stream form of these within that there's a word for specifying the boot word, and now there's two additional words remember which will snapshot. 10:34:01 The state of the system to a to a file on disk and startup which will specify what actually saved it will do the same thing as remember, plus it will specify a word to do on boot. 10:34:15 So, let me actually I will let me roll into the next topic. 10:34:20 So, let me actually I will let me roll into the next topic. Um, I didn't tell Matt Damon tell Matt, for those of you unfamiliar with it. It's going to be talking protocols, it's, it's the most basic sort of interaction protocol you could have. 10:34:33 There's a listens on port 23, and then you're able to connect to it and interact with the devices so this is sort of yet another option. There's also Bluetooth which I demo demo last time and there's a web interface as well. 10:34:48 Oh, yeah, so I'll use this as an excuse to go back into the system here. So, actually I can't even remember we're on, I go back to the fourth vocabulary, and we're Yeah, we're actually on the right, so we're on the ESP 32 here. 10:35:04 So imagine that we wanted to do tell that one, what I can do here is, I've got my password saved over a block 18 I'm not going to show it to you all because I had to reset my password last time for my Wi Fi network so that will initialize the Wi Fi network, 10:35:21 the way you would do that yourself is you could specify your network name, and then your, your password and, and then you can do login and it will log you into your local Wi Fi network. 10:35:34 And so, that being in blockade team is great but what I actually want to do is maybe I want to set up this device to be available over, over tell that in the future. 10:35:45 So let's say I define that word, boots and maybe I'll have it load my password and get on the Wi Fi network. And I have my tell Matt Damon, and I will. 10:35:56 I'm actually I'm actually forgetting whether it's. Let's see. 10:36:01 I need to look at stuff server so I need to do. 10:36:05 So I'll have my, my boo, I'll my boot up process will be I will get on the Wi Fi network, and then I'll run this. 10:36:14 This town that Damon server. And so then if I do start up calling boot, I'm able to store that out to a, an image on disk. So now if I do if I do bye bye will reboot the board, and you'll see all the junk from it. 10:36:34 There's a three second pause that we've added as good idea from folks, and if you hit any key during over the serial port during that time, it will, it will reset it will, it will skip over any any start up logics you can, if you if you hold yourself 10:36:50 that's a good way to get out of that. 10:36:54 If I can successfully find the window here. 10:36:57 For those of you who are interacting with terminals and whatnot and they're sad for the days of hyper terminal and all that. I recommend putty it's, it's got all kinds of capabilities, it can be a tell that terminal. 10:37:11 It can also be a serial terminal. In fact, um, but I'm going to use it for this purpose, as a 10:37:18 as a as a tell that terminal. And I'm actually I put it for various reasons, including my home network I put the tone that port actually on not on port 23 but on 1080 or an 8080. 10:37:33 As it happens, 23, you know tell it is just, just for context obviously it's not encrypted So historically it's been a source of vulnerabilities. But in any event, we can now run it connect to it, and if we're lucky. 10:37:47 Oh no. 10:37:49 Demo fail. This is good. There we go. There it goes. 10:37:53 It was yep and now we're connected over, over tell Matt to the, to the device, if we, if we do. 10:38:05 We could do see boot, and we should be able to see. 10:38:08 Good. 10:38:11 Now we can see are. 10:38:13 We can see our that word that we defined and stored in the Buddha 14. If I want to prevent the boot up from. If I want to clear away that that Buddha protein I can do reset and now on a reboot it will no longer bring up the, the Damon, and that is the 10:38:33 end of my presentation. 10:38:35 Are there any questions. 10:38:47 stunned silence. 10:38:50 But as you go so fast I am sick I am still thinking what you say, 10:38:57 perhaps too fast or perhaps I tried to cram too much in, where it was a lot, a lot of stuff here, lot of new of new interesting features. 10:39:08 So, this is Christian, Brad. 10:39:12 Did I get it right, we now have a new version of the sp 32 for that has new features as well. 10:39:21 Yes, these are this is so we were trying to keep it sort of evergreen and send out if you at any time go to ESP 32 four spot.com. 10:39:34 It's really just that. We have the latest version available if you want to actually build it. So, this one has a site has a sort of a pickled up version that's all in one. 10:39:44 I know file sort of ready to be loaded. If you want to sort of follow along as to how I develop it there's a little bit of an interaction and how I prepare it because I want to build multiple different versions for different systems. 10:39:58 So yeah it's it's there and ready for ready for folks to try it out we generally tried to, to keep it evergreen but to give you a sense like here's the, you know, it's still on ESP 30 211 gigantic file. 10:40:15 Little bit of C macro magic to give you the basic vocabulary those those new shortcuts, all the bindings for all the words that get pulled in from see for 10:40:29 for the tiny little bit of C code to boot the system, and then the vast bulk of the system is just a bunch of pork code that runs at startup that's embedded in a string, including the web server and a bunch of this stuff and then this is one little bit 10:40:43 of additional binding for the, for the web server. By the way, one of the reasons I was playing around with Tesla is as a warm up. 10:40:51 One of the things I'm planning to do is the web server that's embedded in their users in our an Arduino library for web server. And in that library has a number of performance and sort of stability limitations and so I'm what I'm planning to swap out 10:41:27 that library for an equivalent thing, written in fourth which will change the balance even further to their being more for 10:41:17 Christian again. Yes. Most of my previous experience with Ford was with flash for. 10:41:26 And in there I really had contact with the hardware. 10:41:31 I get the feeling that now. If I don't go through See, I have no contact with the hardware. 10:41:40 Is that true. Um, yes or no. So I think that the, the one one avenue that I've been meaning to sort of pursue with this version of things is that to get things going. 10:41:54 We have dependent pretty heavily on see but some of the different functionality is readily accessible by virtue of the fact that you know in this fourth you have you have access to, to raw memory and so for example all of the GPO is, there's no particular 10:42:11 reason that that couldn't be something that's defined in terms of in terms of fourth words it happened to be slightly easier to bring this system up that way but I think it to rely on on the seat bindings. 10:42:23 On the other hand, when you're talking about something like Bluetooth The reality is that the stack that you would have to write to support Bluetooth is both large in and sort of has all kinds of semi proprietary facets least in terms of how it works 10:42:37 in the sp 32 so it's a it's a mixed bag I would say that for very basic things in the chip I kind of do aspire to. 10:42:47 Getting it getting down to directly accessing them and sort of dropping more of libraries that that wrap the thing. 10:42:55 But when it comes to the Wi Fi stack or the Bluetooth stack there's there's enough complexity there that having that library to those libraries to follow fall back on is seemingly necessary. 10:43:09 Christian again I realized that the ESP 32 is a very unusual memory model. 10:43:19 I, because I tried to go to the hardware level, and I realized that we, we have to be very careful when we do it, because we'll get all kinds of error messages. 10:43:33 Yes. What. 10:43:35 One of the things that I talked about it one one change versus dr Kinsey for that I made that I'm still a little on the fence about whether it was a good idea is that he had a. 10:43:46 He had sort of a virtual 64 k space in which the memory operated and you had to explicitly use a peek in and poke word to reach outside to that larger memory space and one mild advantage of that approach is that it saves you the danger of you know if 10:44:03 you, if you access the wrong location everything comes crashing down. And unfortunately, the sp 32 as far as I can tell, it's not possible to have a handler for certain types of out of bounds accesses and so you're, you know you touch the wrong location, 10:44:20 it reboots the board so there's a kernel panic at that point yeah I do realize that I simply try to do a dump of memory starting at the zero for 256 bike, and I got the legal memory access. 10:44:36 Yeah. 10:44:38 The. 10:44:40 It is something where I thought about, you know, the memory map is, is, is sort of tedious in various ways but is constrained in terms of where, so there's, there's a bunch of banks of the memory, where some, some of them are actually repeats of each 10:44:57 other and some of them are sort of the version of things that you have to, to. You have to sort of bank switch in different pieces, and it might be possible to pretty easily like have a wrapper around load in store that keep you from accidentally touching 10:45:10 something bad, the trouble of course of such things is that then you're spending the cost of bounds checking and all of that. So, I am tempted though for user and activity to maybe put some guard rails around what you hit that that said, honestly, you 10:45:23 know, sort of was 2020 hindsight, there's some virtue to Dr. King's approach of just sort of thing well we'll have this memory space for for fun. And, and then if you really want to reach out and touch something outside then use these explicit words to 10:45:35 know when you know what you're doing because the, the only thing that got me sort of not doing that was that was the inconvenience of if you're calling into a bunch of the, the Arduino words that expect a pointer from the system, it, it's sort of annoying 10:45:50 to then then you'd have to have a conversion word to convert back and forth from internal and external addresses, but just one common. Yeah. 10:46:01 A congratulation for understanding this processor used in the ESP guarantee. I won't, I won't, I won't report to understand it until I have aspirations of doing the native forth for the thing but, so I won't I won't sort of claim to understand it until 10:46:19 I got there, but uh, the, I've been reading up on the extended instruction set and all of that. So I think I'm going to work up the courage and play around with that direction as well, that that said one other advantage that the Peter Peter will and others 10:46:33 will test two areas that with going through the Arduino tool and doing it and see is that provides a simpler way for us to distribute something that that for the hobbyist community and it's used to those tools, they're comfortable with and so it's a foot 10:46:47 in the door, if you will, or you want to share, I want to share my screen here One moment. 10:46:56 Let me see. 10:47:00 I think we need to move on Christian Can you communicate with Brad, either in the chat or but by email them I know that I'm asking a lot of questions so I leave some room for the others. 10:47:15 All right, let's, let's move on. Thank you so much, Brad. This is a remarkable set of things you communicated to us. 10:47:26 So I've remarked upon them. 10:47:29 Next, of course, is, is Dr Tang who assures us he's ready to go. 10:47:49 Can you want to unmute. 10:48:08 Well, Craig is getting ready to go. I wanted to say that he posted a link on the meetup page for for his stuff, so I recommend that to you. 10:48:34 You are muted. 10:48:43 Oh, am I okay. 10:48:48 All right. 10:48:55 Okay. me, 10:48:55 So the. 10:49:15 The first thing I want to show you is g force, six point third King. 10:49:04 And, and the source code is about 20 k bytes. 10:49:09 And he defines 213 words in our of these 200 some words. Only 109 system, words. And if you just to keep these system words, the source code that is only 18 kilobytes. 10:49:31 And to compare it with the original at 86 equals 1.01. 10:49:40 In its source code was 47 kilobytes. And it defines 232 system words. So this system is much simpler than the original equals model. 10:49:56 And as Einstein said things should be as simple as possible, but not simpler. 10:50:05 And I think the G force is at this, not simpler state. 10:50:11 And I would like to call it. Eat we do support complexity. 10:50:16 And this is a quail we can reduce forth to its bare minimum. 10:50:23 So JavaScript is a very interesting. 10:50:28 And this is the first project I, I, I did with JavaScript. So I'm pretty new to this thing. 10:50:37 But I have the impression that the JavaScript is really just to see with a very flexible objects. 10:50:47 And these objects can be anything for them but here she is a list of variables are defined in G force. So, We have the familia IP and WP and W variables, these are just pointers and the stack. 10:51:08 The data stack is a point is an object returned a stack is an object, tell me no input buffer is an object with some pointers. 10:51:30 And the most interesting thing is that the whole dictionary, which I call the words. 10:51:36 Is that object. 10:51:38 And this object contains all the words, which are objects. 10:51:46 So, I need to make it clear in the temp in in my terminology words I a word which is used in too many contexts. So here, I would define words as objects, which has Name field, which had Code field, and which had data for you. 10:52:15 And that dictionary is an array of all objects, all word objects and tokens are the index of word objects in dictionary. 10:52:30 And so I wanted specific specifically. 10:52:35 Use this term. It is, which means character strings in a thought file, which gets parsed out and idioms, maybe words numbers or strings. 10:52:51 So here is, indeed, ju fourth at word object, have five fields, and the Name field. The Code field which I called XT and that parameter field for the token list. 10:53:14 And Qf. 10:53:15 That's the data field, which is next to the PF right. 10:53:22 And then there is an immediate field which has a flag, indicating whether this word is a immediate word or not. So the word that will have at least two feet or two fields. 10:53:40 Name field and the code field, and it has optional three other optional fields. 10:53:48 So, the defining words in this system, we have, colon, we all know about, and love it. 10:53:56 And we have constant. We have variable. And we have also array, which can be created by create. 10:54:05 So these are the system, defining words, all the, all primitives. 10:54:12 In the je forth are primitives, and they are written in JavaScript. 10:54:20 In all the words which you load later on the Conan words. 10:54:29 And here I just found a very nice way to create a new defining words with the create the us construct. 10:54:42 So we actually have four types of words in the system. 10:54:56 Permit difference, which has only two fields, the Name field, and the code field with some execute execution functions. 10:55:00 And we have colon words, which has Name field, and the code field, just points to nest. This is the inner interpreter. 10:55:11 And then we have the parameter field which, as a token list and Thompson's variables and erase, they all have data in the Rqf field, and the words you define later by defining words. 10:55:50 You have Code field, you have a Qf for data, and you have pf for the colon word list token list. 10:55:52 OK, so the interpreters we have altered interpreter or text interpreter. 10:55:59 This is the adjusted the routine. We usually called quit, which is beginning parse, evaluate, and again, so it is parts and evaluate doing over and over again. 10:56:16 And we have a bunch of inner interpreters and the inter inter interpreters are just the routing, which sits in the code field. 10:56:28 So for Conan words we have nest for constants, we have to calm and four variables and arrays, we have to VA and for all the custom defining Where are the, all the words that was defined by custom defining words, they also have the nest in their code field, 10:56:52 and all the primitive words, the code field just contains Dale primitive function. 10:57:03 So in the outer interpreter. We have parse evaluate and again. So pause pauses out the next eating in the input stream. 10:57:16 And then this idiom is given to evaluate to evaluate and evaluate can find whether this idiom is a word. Why number one none of above. 10:57:33 and it can deal with these situations, automatically. 10:57:41 So, actually, I would say, nest is the inner interpreter, because all the words were defined in in the system. 10:57:56 After you boot up the system or the new words are Conan words and Conan words or have the nest, as it's in the interpreter. 10:58:09 And this nasty, is that just that infinite loop, which just go through the token list from the beginning to the end. Actually this is an infinite infinite loop. 10:58:25 So it really does not know where it ends. and it is the function x exit. 10:58:34 In the token this widget, just said IP to minus one and IP to minus one will cause the nest to exit is infinite loop. 10:58:49 So this is the most important in interpreter. And I would say get the inner interpreter. If we don't want to talk about the other type of words. 10:59:04 So let me just 10:59:09 restate that the primitive word as a function, it's called field. 10:59:17 And the Conan word have nest in yet Code field, and it has a token list in yet pf field, and Constance has had its value in the Qf field in the code field he does do come in the variables and array as their data in the Qf four variables. 10:59:46 The q amp has only one item. 10:59:49 one item. And for a race. DQF has an array of many many items. 10:59:57 But they all share the same in the interpreter do VA is cold field and new words which are defined by defining word, well have nest. 11:00:12 It's cold field. 11:00:14 And it has its interpreter. 11:00:19 In high level in the field. As a token based in the data it needed or store in the Qf field. 11:00:33 So constant. Here is an example of constant, you have to chi in the code field, and you have a number in the QFK and variable has to buy in, it's called field, and in the Qf field, it's initialize zero, but this value can be changed by fetch and store. 11:00:57 So create has the same do ye Coldfield, and in ingots QFQ field. It has a list of 11:01:11 items. 11:01:14 And this will you will have to initialize them by yourself. 11:01:20 Worse, defined by defining words would have nest in its Code field, because it's interpreter is written in high level as a code this asset token list. 11:01:34 And if you need parameters, they are asked or in the Qf field. 11:01:43 So this is the one thing I want to emphasize that to the. 11:01:51 It is very important to show the stack picture. So this is the part of the output. Output Screen. 11:02:02 And if I type 1234567. 11:02:07 And the numbers will be dumped out every time the okay is shown. So if you type returns, you will always see all the numbers on the data stack. And I think it should be a standard for all four system. 11:02:33 I would hope that Silicon Valley fourth interest group will only recognize fourth implementations, which would dump the stack pictures. 11:02:48 Okay, this is a very interesting implementation of all the stack words UCM we have cube over to dupe and the swap and to swap to over all different kinds are implemented with to JavaScript function. 11:03:11 Slice or splice. Okay. 11:03:15 All the stack work where the, the original stack is preserved in implemented with a slice, which is copy out as part of the stack and push it back on top of the stack. 11:03:29 And if the stack and needs to be modified. 11:03:34 It is implemented with splice. Okay. And here you can see, pick and roll, is that the granddaddy of the or the stag words are also implemented in slice and splice. 11:03:50 So I'm very, very pleased with this implementation because the stack, or the stag words are basically the same. Using the splice function or slice funding of JavaScript. 11:04:13 Okay. Here we are in this implementation. We really don't have the concept of memory. Okay. 11:04:22 That does no dictionary. Okay, the dictionary is the collection of all fourth words, so there is no place for you to store your thing, except when you define constant variable, or you do the Create. 11:04:45 But if you create a new word, you can put as many things into this array as you please. So instead of fixed and separate memory area. 11:05:01 You have to create your own memory area, if you do need them. But this this system is very flexible so that you can create a race at well, and to a race created without allocating and the icons, and you have to allocate them explicitly. 11:05:28 So here, if you create that record xxx, you have to initialize the items with one comma two comma and three comma. 11:05:41 And in the, in the men in the system. The x x x will have two violins Ian's Caufield and EQ field. It will have 123. 11:05:57 If you create a ray and allocate the number of items in this array, for example used to use six, a lot. And you have the yyy with the and Dubai is called field, and you have six zeros in its queue of field, and the 11:06:24 Let me see, I think, okay, yeah. 11:06:29 So faction store. 11:06:31 Now, fetches or store our variables constants, and the first element of an array. 11:06:41 Okay, in the form of four variables. It gives you back the token of this array. And from this token, you can fetch or store that constant just give you the count constancy Don't you have no way to access it. 11:07:00 And that the array has many element but fetch and store, just get the first element, and to access other elements in the array you use array fetch and erased all and array fetch and restore needs to address pointers. 11:07:21 One is the token of the array, and then index. 11:07:28 So you can access elements inside this array. 11:07:34 And the defining words in needs to access each array interpreter and uses Qf and indexed to access, however many items you put into the defining word. 11:07:55 So here is a word to to allows you to change the value of a constant, but to has to be used in a cold colon definition. 11:08:10 So, in the, in the example we in the Haiku example. 11:08:16 We use the. 11:08:20 We set up two loops for the, for the horizontal axis, and for the vertical axis, and our fetch the index is put into x, and our fetch is put into why. 11:08:37 So in the photo. 11:08:39 In this code, you can use at X and the Y axis, the image. 11:08:51 And is that word in the, in the, ju for six or three. 11:08:59 It's called the vector. 11:09:02 But, I think, in the, in the fourth 2020 session. I just came out Kim saw this is, well, wow, that's what it should be. So is a word with that allow you to change the behavior of work. 11:09:29 So here, I, I define the Switzerland tool to paint a one pixel in the canvas. And so, tick Switzerland is protocol. So, this Switzerland this word is, you will be used in the high cool function, but it's taking the place of production. 11:09:59 So the high cool would do, Switzerland, is that after the 11:10:06 Libya flat. Okay. The same is there for smile is protocol, and then do the high cool. 11:10:14 So, is it is it is changing your kick out word. And then, is put into it into another word to change protocol executing switch. 11:10:29 So that's it, but there is a cannot be used inside that column definition. It has to be used in interpreter. 11:10:42 So I did that very, very nice word dump. 11:10:48 And this dump just after you run the system you compile. 11:10:54 Define, lots of Conan work, and you've got that huge dictionary. So dump would dump the entire dictionary, in a form that can be copied back to the source code file, g forth, and make all the Conan words, available at one time. 11:11:14 So this is kind of a turnkey system that. 11:11:21 I don't know if it is useful at this point, but at least it is a way that you can save the compiled dictionary. 11:11:38 She allows you to de compile a Conan work and have this see is very simple, because of the token list up quite simple. 11:11:53 And this see is very simple, because of the token list, quite simple. And in the token list or the token. If it has a word. 11:11:59 If it is a word, it will just go into that word by the token and print out the name of the, of the word. 11:12:11 And there are six literal words. 11:12:14 And these literal words has, has literal following this word, so you have to treat the liberals different differently than a token. 11:12:29 So, there are only six liberals in je fourth. Okay, so we have a number literal, which is 11:12:43 a quick uses doodle it to put a following number on the stack. 11:12:51 And then we have three edges liberals branch to address zero branch also branch to address. If the top of stack is zero, and do next, of course, terminates for next loop. 11:13:09 And if it's a looping it will jump to the edge is falling into next. And if the index is below zero. 11:13:28 It will act it. 11:13:27 And so, I'm sorry. 11:13:32 Besides number literal and agis literal. We also have a string literal do stream and the stream downstream, implement, quote, to stream, implement stream quote. 11:13:48 So these will have their stream literal forum. 11:13:56 And the very interesting thing in JavaScript is that the, the little. 11:14:27 The string liberals only occupies one token space. So no matter how long it is. So, this system is a very simple, very, very beautiful, or the deuce, or the stream live rose, just have the following code can 11:14:25 stream different, and the just like Julian has a number and the branch has an address after. 11:14:33 And the just like Julian has a number and the branch has an address after. So the, the compiler is very simple, very straightforward. 11:14:41 And this is a comment. 11:14:48 for next loop needs only one primitive. 11:14:52 Next. 11:14:53 Okay, so implement all the loops, you only need the one primitive word, but do loop require a host of primitive words to support it. So it's a very very complicated. 11:15:18 This is the reason why I never wanted to put up. But mainly why I implement or the bok, 11:15:25 bok organ compositions, all the code were written with F 83. 11:15:38 And if it is three has blocks and has to lose. So I have have to convert all the two loops to for next. 11:15:49 But it is very straightforward. You just globally replace loop by next globally replays zero do by one minus four, and all the loops are converted. 11:16:07 So, of course, there are some. 11:16:10 And if you use more sophisticated to looks like. Plus, or slack. 11:16:21 And this doesn't work. So for these special loop command, you have to go to them individually and try to convert. 11:16:31 But if you get a symbol zero do lose. 11:16:36 This method works perfect. 11:16:40 And this is another comment 11:16:45 brats block editor. 11:16:51 I would awesome in 10 blocks, not essential to for 11:16:59 what's essential to fourth colon is essential to for anything else, and not essential. 11:17:10 And actually blocks prevented a widespread use of force, because they are not compatible with other operating system. 11:17:21 And the text file. 11:17:23 better media, of what programming for data storage and information sharing. 11:17:29 So, I'm. 11:17:34 I don't like blocks. And I would, I'm sad to see that Brett. Put the block editors back into the ESP 32. 11:17:46 You don't need it. 11:17:49 Okay, audio contacts. 11:17:52 I don't want this is just how you implement the 11:18:00 voice, or the music 11:18:06 that my conclusions. 11:18:09 my conclusions JavaScript is very expressive and Sam Chen coded or, he fought word in Java, JavaScript, as primitives. And I think this a wonderful job, or application words that you loaded afterwards, a compiled as colon words. 11:18:33 And I'm also very happy to build that the Create and does, which would define new defining words. 11:18:45 And this is, this is, this is made possible because I added the Qf field on top of the PF field 11:19:02 in HTML, allows je fourth. 11:19:07 I should say is 613 now. 11:19:09 And the Java and Java, JavaScript bar. 11:19:15 Today, design very friendly user interface for fourth and the input box, and the output box, and the text boxes in this interface can accept very large text files in the day can be very useful for us to develop significant programs. 11:19:41 And, you know, I think that the files are the better interface between human being, and the computer, and the blocks. I just an artificial 11:19:56 way to implement the files. 11:20:01 So, the JU 4613, the system code has only 177 lines and 18 kilobytes of text, and it defines 109 words, it is by far the smallest. 11:20:22 The simplest and the prettiest fourth. I have ever produced. 11:20:32 And as loud said for knowledge, learn one thing every day for wisdom, forget one thing every day. 11:20:42 When you have nothing you can do everything. 11:20:49 Have we forgotten it seems enough. 11:20:55 Okay, here is the, the link to the late to the latest 11:21:01 to the latest jF was 613. I will put the link in the chat, so you can download it. 11:21:13 Thank you very much. 11:21:17 Let me just go stop sharing. Okay. 11:21:23 All right. 11:21:24 Any questions 11:21:30 in your programming. 11:21:33 You had a field for basically the name, and then you had something for the function. 11:21:39 And then not, none of those functions actually sort of took arguments then you had another variable called I guess XT for the data that the function would operate on in standard Java scripting practice JavaScript is basically a hash of key value stores 11:21:58 the key being the name, and the value in your case is always a function. 11:22:03 And I'm thinking that rather than breaking this into a thing where everything has a name you should just use that name as the key to the thing, and therefore your dictionary is just an object and everything in your dictionary is a function. 11:22:23 And then if you have a special property to the function. 11:22:27 Modern Java scripting practices, most people, because everything's an object and JavaScript. 11:22:35 The special properties for your certain words would just be a property of the function. And I don't know, Brad can probably answer this, but a lot of the funny things people do if he has six and the fancy stuff for syntax, makes it harder when you, when 11:22:52 you get to actually implementing things down at the hardware level. So there may be a reason why you did things the way you did. But I think if you use some of the ways people use JavaScript today. 11:23:07 You could actually simplify your code but I'll let Brad weigh in on that. 11:23:12 No I don't think so. 11:23:14 I think that the, the, the way the fourth works. Okay. Fourth, This is an implementation of fourth Java is just happened to be the virtual machine underneath it. 11:23:32 Force requires. 11:23:34 Okay, and then field, a code field, and for the convention of the fourth a parameter field. 11:23:43 But here, I think, just a one parameter field is not enough. What we do in fourth is, we use the in the parameter field to store a token list. If it is a colon word, and we use the premier field to store data, when they are defined as constant variable 11:24:07 or race. But here, I think we have to separate this two different data types in two different fields. So the PF field will only contain token list. 11:24:27 And if this data, put them in the Q field. Okay, so if you separate these two fields, separate this two different data into two different fields, fourth becomes very simple, when you want to define new defining words. 11:24:47 Ok. 11:24:48 Ok. 11:24:50 I will I will say also if the suggestion of using the dictionary dictionary directly to driver inside ever We're ready. An object that the downside would be that you would lose the chain of the same word redefined. 11:25:06 So you would, it would be faster from look up It would also have the downside that you wouldn't have the sort of chain of them sitting sitting there on the stack which would violate some some properties of the system. 11:25:18 I would like to say on the, on the block thing. 11:25:21 I thoroughly agree with the sentiment that blocks are not intrinsic to fourth. 11:25:26 But I think that blocks are an interesting idea in their own right, is there, their conflation with forth I agree has been problematic in terms of its adoption it's it's a lovely idea if you're on a system and you're too lazy to write. 11:25:40 If you have to write your own text editor from scratch and you have to, you know, bring up your own file system from scratch. I think it's a it's a lovely concept. 11:25:51 The trouble is of course that the, the ZSB 32 boards were already relying on the being a file system there so it's rather silly in one sense to have to have a block editor and I will say in my defense I only did it because I started down the road and 11:26:01 trying to write a text editor and thought, Boy, this is hard, let me start with a block editor and his. 11:26:08 Yeah, you don't have a file. 11:26:12 If you cannot enter text files blog is the, the very reasonable alternative. But if you already have the mechanism to handle text files. There's no need of the blocks. 11:26:28 Well, I will say the bottom, it's not just the lack of the file system it's it's it's the need to write a text editor if you want to text editor that runs on the device. 11:26:43 Now you've got a, it's a harder problem to write a text editor for general general code or general text event as opposed to two blocks that's sort of. 11:26:46 That's right. 11:26:48 Thank you. 11:26:54 Not to say I'm not going to give it give it a try at some point, this is on my list. 11:27:00 We niche the block editor. 11:27:06 Ok, 11:27:13 ok, ok I tried tried to find all my unmute solid wants. 11:27:19 Thank you so much thing, I, I have thought a little bit about what honorifics to use when I speak of people like Brad, or king or Dave Jaffe. 11:27:36 You can fill in in your mind whatever language you use 11:27:44 when you're describing such people but the, the word that comes to mind is teacher, and whether you use sense he said sigh a rabbi, or any of the other honorifics that go with that. 11:27:58 Dave objects to Professor because it has specific context. 11:28:02 So, pick one that you don't object to add Phil added in your mind with the most weight you could give it. 11:28:10 So thank you for your presentation. And thank you the rest of the presenters, unless anybody else has something specific 11:28:24 topic that they care to, to talk to us about for. 11:28:32 I have maybe one more question now that I've succeeded to double unmute. 11:28:40 Go. 11:28:51 Dr. King. 11:28:41 Probably a simple question. What would show up on the, on the stack, after I caught a variable. 11:28:51 Is it the index in the dictionary of the, of the variable of the word. 11:28:56 Yes, yes, it's the token. If you execute a variable, you get a token. Okay. And from that token you can use fetch and store. Okay. In the fly constant you just get to the number, you don't get the token. 11:29:14 But if you pick a variable, you get the token. 11:29:19 Okay. And from that token, you can use the fetch and store to change a variable. 11:29:26 Okay, so it's a very productive. 11:29:29 It's very flexible in that. The once you get a token. You can do anything with that token. 11:29:41 But, but you you don't have 11:29:47 a dictionary in the, in the conventional for citizen, that you can freely. 11:29:53 You know, fetch and store, you can only purchase a store, two variables, constant or array. 11:30:14 Alright. 11:30:16 I was thinking that it would be nice to talk about programming challenges, if anybody has one that they'd like to recommend to bill now might be a good chance. 11:30:33 Bill is here so we can't talk about the mind his backyard. 11:30:38 But, it, it might be something that we can talk about and amplify and discuss amongst ourselves. 11:31:00 Right, so nobody stuck there. 11:31:03 Those is it. 11:31:05 Bill it unmuted. 11:31:11 okay to say more new challenges are totally Welcome. 11:31:33 My email address is bill at Bill ragsdale.cc, or bill at bill Rangel calm and send them in wait for them come tumbling in bill at bill right jail. com. 11:31:29 Okay. I was thinking about interfaces. 11:31:41 And the most common way to talk to stuff these days is is USB. 11:31:48 It's kind of a broad problem to talk about in a programming challenge though. 11:31:56 If we may be limited to a USB thermometer, and maybe I'll pick one out that's inexpensive. 11:32:09 And the challenge would be to read a USB thermometer from a fourth program running under Windows. 11:32:23 Let me tell you the madness to my method or the method to my madness I guess it is. 11:32:28 Just kidding. 11:32:31 I was thinking that it would be nice to write a fourth program that would measure the temperature of a cup of coffee to reasonable accuracy. It would not have to be accurate, it would just have to be precise. 11:32:49 If you know the meaning of those two words and measurement metrology since. 11:32:57 The reason I want to do this is if I can get this into a table or Excel spreadsheet or a Open Office spreadsheet, is that I can measure, cup of coffee. 11:33:17 Over time, and say okay it's cooling this fast, and it starts at temperature x, and it reaches temperature why there's an old puzzle. 11:33:28 Okay, so you have an 11:33:38 intern that you said, coffee, and you tell them okay it has to arrive at my desk at the highest possible temperature available. 11:33:45 And the, the meeting, it. 11:33:53 The person goes to the Bible, by I gotta go, gotta go. 11:34:02 The person goes to the Starbucks and 11:34:07 gets the coffee and is asked okay do you want the cream on the side or added. 11:34:16 And it turns out counter intuitively that if you add the cream. 11:34:21 It reduces the temperature of the coffee and arrives at the desk at a higher temperature than if you had had it, you know in a separate container. 11:34:33 There's a thing with the schooling law I won't, I won't bore you but it strikes me that this is a great science experiment for kids in grade school. 11:34:44 If they can measure the temperature with their computer, and they can have a fourth program that spits the numbers out over time. 11:34:56 They can prove to themselves that if it starts at a lower temperature, it'll arrive at a higher temperature. 11:35:03 Go figure. 11:35:06 Yeah, that's good, that's good. 11:35:12 And if we get all these kids with a these three things on their desk, you know they have the thermometer they have the first piece of lab equipment that they'll ever come in contact with. 11:35:28 They have a well maybe a yardstick or something might be. 11:35:34 Maybe we'll bludgeon them with yardstick I don't. 11:35:38 The. 11:35:40 They'll have a computer, and they'll have a fourth program. 11:35:44 And what's the first thing you do when you have a fourth program. 11:35:48 I don't know about you. 11:35:50 I change it. 11:35:53 So, we'll get them fiddling around with this piece of source code that they'll have at their fingertips and you know they'll say, Oh well my measurements come in twice as fast as your measurements or my measurements fit in a smaller space or something, 11:36:08 you know, optimizing for their own criteria that they will supply. 11:36:15 And maybe, just maybe will will suck them into this. 11:36:22 Now, I need some input and you are welcome to either speak up now or maybe talk to me later. 11:36:32 How you do this all this stuff. 11:36:38 If I were doing it I might think about maybe talking to an Arduino with a thermometer. 11:36:48 Because the Arduino is might be an easier way to get sort of real world stuff into the hands of these guys. 11:36:58 It may. 11:37:01 It may be that. 11:37:04 You know I see Dudley says copy and chat is disabled I didn't know that was a thing. 11:37:09 Maybe it's always disabled. 11:37:14 Is it something that Dave Jaffe could turn on and allow us to copy from chat. 11:37:32 No, this is a this is a issue and zoom. 11:37:27 We can we are saving the chat for later but you can't copy text from a chat typically on a PC sometimes you can do a Mac. So the thing to do is this somebody puts a link on there, you know, click on it and it will open it up in your browser, and then 11:37:49 copy and paste the link from your browser into, you know, a text file or something. Ah, Dave is so smart. 11:37:57 I, I used Zelig there it's a brute force I just took a screenshot said I'd worry about it later. 11:38:05 But I said it to myself. 11:38:09 So anyway, all these thoughts running around in my mind, I think I've tried to communicate them pretty well about about this temperature taking experiment. 11:38:25 The. 11:38:28 The advantage in in having a thermometer that's hooked up to your Arduino is that, at that point, not only do you have a thermometer, but you have an Arduino, which has add converter. 11:38:47 As far as I know. 11:38:50 And you can plug into your Arduino this super zoom me. 11:38:58 James Bowman Dazzler video card at speaking of the death card. How many of you have bought it show of hands. 11:39:10 And speaking of the death card. How many of you have bought it show of hands. Okay. 11:39:19 Cool, cool thing, and I recommend it to you. And it may be one of the only products aside things you buy from Mitch, Bradley, that actually has forth it. 11:39:34 I think that there's some water sprinkler controllers from Lego that might have fourth in them. We'd have to ask maybe, Leon when he joins us at some future date. 11:39:41 Leon is scheduled for March, I'm looking forward to hearing him. 11:39:50 And it. 11:39:55 I guess will be a video that we will show that Lydia, Leon has made since he is unable to join us in real time. 11:40:10 So, any buddy else any further questions any other exciting challenges that you'd like to take as I said, I think, I think, you know, we know is a great idea. 11:40:25 Okay. But I think that the better idea is that Arduino, the ESP 32 would just accomplish. 11:40:40 Like you fight you find you want. 11:40:43 If you have a temperature sensor that can be hooked on to the Add ping of ESP 32. 11:40:55 Okay. 11:41:04 You know that chip also has a six HD channels. 11:41:12 And I think, I think if you just a figure out one way to cook a temperature sensor to one of these. Add pins. And you, you can measure temperatures. And then your your your quota 11:41:31 light sensor led to one of these pins. And you can measure light. 11:41:38 Okay. 11:41:41 So I think all this is interesting experiments we can do. But, you know, temperature sensor. I know several chips. 11:41:53 That's very good in temperature sensing, but they have bail. Why else sticking out. So you need 11:42:15 The other things. HPD pen What's that, and you're going to have to decide whether you want add, which is difficult with temperature centers because they move a lot. 11:42:31 They have a lot of noise on them, or a i squared c one, which is the more common way to get temperature into embedded systems. 11:42:45 You mentioned USB USB on Windows is an exceedingly complex stack. 11:43:00 Are you want to go to Arduino. 11:43:13 It will be correct. If you go to Arduino, then you, then you do have the capability of i squared c or add on. there is, there is trade offs with both, but I prefer the I squared c. 11:43:41 the ESP 32 as building ice well see interface. Yeah. Yeah, I agree with you, the, the, the ESP 32 is a wonderful chip arm, all sorts of different ways that you can get one. 11:44:00 See, Pat has unmuted and is raising his hand and stuff can we, 11:44:07 I went ahead. I went ahead and bought the demonic little scam computer that was was demonstrated in. 11:44:16 In December, and after I'm still trying to figure out some ways to have it talk properly by a terminal but one of the things I've discovered is it comes with a temperature sensor on board. 11:44:36 And I have to say, I mean it's not. I'm moving over my heater and it properly gets me about where I've got the heater set and I take it away and bring into the ambient temperature of the room. It's actually doing a reasonable job was not very precise, but it's kind of a fun and it's I wasn't expecting that to be there, and it has a huge number of features that I have not yet 11:44:45 has a huge number of features that I have not yet been able to plumb because I'm bringing myself back up to speed, after many years of not doing much with him, but it was $19 with about $19 of shipping from, from Australia, but funny thing. 11:45:02 Many things do have temperature sensors on them, because it is a critical factor in many embedded systems. 11:45:10 You've got to know temperature. If you've got a battery, you've got to know temperature, because it changes the battery. 11:45:17 So, yes, that, that also, if you if you specify which board they have to buy. That's the other problem with ESP 32 is the number, the number of possible packages is infinite. 11:45:40 There are so many different packages for ESP 32. It's all over the place. And so you have a pen out problem there, and even. 11:45:57 I was just I was just going to say jokingly, you could last, ask lady ADA, she's done this several different ways, probably, if you don't know lady ADA, you should look at@adafruit.com. 11:46:06 Yeah, yeah, I yeah I have I have another suggestion, which is, which you can use the Arduino interface to work with, but using a blue pills are, are the dirt cheapest way to do anything. 11:46:23 The processor cost on the little board cost around $2 each. 11:46:29 They can be used through the Arduino, I don't use them that way but you could. 11:46:36 They are, as far as temperature sensors, you can get a one of the little clock chips, and they come with a temperature sensor in them. Also you know you get those on the on the little law. 11:46:48 I guess they're connected to spy. I think they're, they're connected to spy but you can run those pretty easily. 11:46:55 I've used those myself that really easy to talk to it either. I don't know whether what bus he uses whether it's fine or not but but the the blue pill can support all of those different things. 11:47:09 The, but like I said as a $2 processor it's probably the cheapest way to go. It's, you know, comes on the board has a has a USB interface. 11:47:21 The only disadvantage for the blue pill is is that you like, like a, a blank art Arduino setup right you have to use their, their downloader, which is why I don't use it. 11:47:39 But, you know, and that has to be done through a serial port, but that you know if you have like a, like a classroom or something like that. All you need is one USB to serial right to to program a whole pile of them right with with loaders once the loaders 11:47:55 in them, they can run on the, on the Arduino interface and and it isn't much to, they have quite a bit of libraries and stuff in there available for them. 11:48:07 So, so they're, they're, like I said, just about the cheapest way they take to get any of these little micro processors. There, the blue pills are not. 11:48:19 They don't have an enormous amount of memory they don't have an enormous amount of stuff but but I run forth on them all the time so you know it's it's a pretty straightforward. 11:48:31 I'm using a AE forth that I got from Dr. King, a long time ago and that that seems to work fine. 11:48:39 I, I can talk to spy I can talk to. 11:48:45 I use a spy usually to talk to. 11:48:56 Little SD SD cards, which, which I store stuff on usually what I do is I take the SD card and I use block still myself and on that. But what I do is I as I create a file on the, on the Windows machine it's going to be big enough to hold all of the, the 11:49:11 screen to expect and put in it. And then, then I have those blocks, available. I can still read them on the PC, or I can add stuff to them or whatever I want on the PC or I can access them from the, from the, from the, from the blue pill, but I don't 11:49:33 All I all I use the file system for that's on there is just to locate the data. And then I can read write the data directly to the, to the, to the SD card without having to know anything specific about the file system use just the location of the data 11:49:51 is all you need. 11:49:53 But, but that's, that's like I said the blue chill pills are really cheap there. 11:50:01 You can, you know, add, add other little boards to them you can add the, like I said they have the 11:50:13 little clock clock devices that you can get. And the only problem with that again, it still has the problem of dunking it no matter what you do, you have the problem dunking it in the, in the coffee. 11:50:27 And somebody would export to the pie Pico. Yeah, expand your members and done, and lower the average age in this group. 11:50:39 Yeah, it has been done. They just haven't really been done yeah I just saw last few days. 11:51:00 or if you've if you've got a Raspberry Pi 400, you've got everything. 11:51:07 Yeah. 11:51:09 Yeah, you got a computer, a supercomputer at this stage. 11:51:18 I bought a couple of these seed 11:51:25 Arduino boards, everything is wired together right there. 11:51:30 Plug it in USB into a PC. Probably Mac, and it's got temperature, humidity, what's on their accelerometer air pressure light sound box button led buzzard oh that display, it's a pretty cool thing to get kids playing with right out of the box. 11:51:52 Yep. Yes See, I love cc does real good. They, they are, how to China, and they have a lot of intellectual property, and they're doing AI on onboard. 11:52:08 They've got a lot of stuff going 11:52:15 much do they cost. 11:52:16 Where do you get them. 11:52:18 I don't remember, I believe I did it through Kickstarter, or one of the organization just google sed 11:52:31 pie Pico costs as much as $4. 11:52:34 Right. 11:52:36 This is a little bit more expensive, I believe, needs to be but it wasn't very much. 11:52:46 Are you looking at up Dennis. Yeah, I've got it here in a moment. Let me get something to copy and hit me get there we go. 11:52:56 Where are you guys, there you are. 11:52:58 Someplace over here, type a message need to do. 11:53:04 Yeah, yeah, I've got one of their AI boards and look for the grove beginner kit. 11:53:17 Chrome starter kit 11:53:26 you how our one reason why I was attracted to ESP is the Wi Fi. Okay, now we don't have to have have physical connection. 11:53:43 And you see I think we should be having just having a program on the PC, which looks around 11:54:00 on the Wi Fi, and the mocha look around for all the instruments that can talk Wi Fi. 11:54:10 So you know, I think that if we want a coffee. 11:54:14 Coffee temperature measurement thing. 11:54:18 We could have it could have it, India, for example, yesterday 32, and have the sensor which is just a send out Wi Fi signals, telling us what the temperature is all the time. 11:54:38 And if you have a computer we can read those Wi Fi signals, then you have a temperature sensor that that the might be able, you might you might be able to put in your coffee cup. 11:54:57 And the send out the measurement on the Wi Fi. 11:55:05 Peter sent me a message you want me to share, share your screen with me or with everybody Peter, I want to share this screen but 11:55:15 I'm doing it right now let's find you, your name in the list here. Hold on. 11:55:37 While he's doing that I was thinking Can everybody hear me, may I may I share my screen in, Kevin. Yes, he's working on it Peter hang on just a minute. 11:55:47 While he's doing that. Go ahead. 11:55:50 Can you hear me. 11:55:51 Yes. Okay. 11:55:54 So I was thinking of proposing a challenge you said is to just draw a block diagram, and tell me what kind of device you plan to use and what your interfaces and what kind of forth with talk to it is that a reasonable finite programming challenge for 11:56:13 one month's work. 11:56:16 You'll get a lot of variation but yes, that would be the way to start. 11:56:22 Well, 11:56:26 if it's if it seems like it's a worthwhile thing for folks to do, and it points us in the direction of the goal and it's finite enough for one month. It might be a reasonable thing to do it that way. 11:56:41 And like a lot of variation. 11:57:02 Went to have a hardware platform that we can talk forth on that we can talk about. We, it's a problem we've had throughout the years of having something that we can work with. 11:57:07 Now Don's doing some of that with the ESP and Brad are doing and thing is doing that with the ESP 32. 11:57:17 And that is a place, we've got already. 11:57:22 If we've got other things to go to. But, yeah, we've got to have some platform that we can all use 11:57:35 the little scamp computer that I got from from Australia that guy demonstrated here is easy to get running, and it has all kinds of input output capabilities and it's good learning look good learning I'm teaching myself a lot, as I go. 11:57:58 So maybe if you're done with Dawn's computer using it as a thermometer, you can go on to use it as a robot. 11:57:59 Yeah, yeah. 11:58:03 So, that, that is certainly a good challenge for this group is let's come up with the platform. Yeah. 11:58:15 Now Peter. 11:58:19 Sorry, I was muted. 11:58:23 Okay. Are you here to share your screen now. Yes, yes. 11:58:29 The solution. 11:58:32 tsp 32. 11:58:50 Yes DC said themselves sensor, DHD 22, the ESP. 11:58:45 And the solution. 11:58:51 This is what Brad is doing ESP 72 from Dr thing. 11:58:57 and it works perfect. 11:58:59 Generally, and again, and that's what Dan is doing that, this is what Brad is working on is he's working with Don and Ting, and they're all working on this platform they've been working on it for a while. 11:59:17 And it looks like a decent platform to me I haven't bought one yet but 11:59:22 one of the advantages of this platform is that you can buy it everywhere. 11:59:29 Yes, Yes, ESP 32 is everywhere right now. 11:59:44 Well I would say that for the purpose of a, of a challenge Kevin, I think, the fewer constraints you place on it, the more interesting the things you'll get out of it, but I think there's, you know, certainly the sp 32 has been something where it's been 11:59:59 fun to have a little consensus on devices to tinker with but but I think in terms of these challenges that we've been doing I've been fascinated every time we do one where folks come back with surprising things and so in some ways, setting a general goal 12:00:13 and then seeing what you get is, is half the fun stuff. 12:00:27 Although I'm sitting here wondering if anyone sells a food safe. Bluetooth thermometer because then, you know, then you can talk to it from the sp 32 but not have to tackle the problem of making the food sick. 12:00:43 That's true because you've also got Bluetooth on there, it's put on love about that chip is the Wi Fi that that's why it's become so popular. 12:00:51 I think one of the things you have to tell the kids in the class is you don't need to use coffee at all by the way. 12:01:06 You can't put whatever it is you do this with in your mouth, do not drink it. Please, cuz it that you know even, even if you stick a dirty thermometer in your stuff. 12:01:17 It gets you out of a lot of world of hurt. It reminds me of the, the 12:01:27 Penn and Teller magic book where they included a prank. 12:01:34 this tie backs sugar packet. 12:01:39 And for some reason the publisher decided they needed to put something toxic. In this tie back sugar packet. And I think teller petulant went to the original guy who invented this prank, and said well you know they want to do this. 12:01:58 What do you think about that, the guy said, I don't know it seems kind of stupid to me and he asked, Well, you know what did you put in it. 12:02:10 And the guy said well sugar, of course. 12:02:14 So even if you open it with your pocket knife. 12:02:23 It always gives me a hoot. 12:02:27 To see kids around to show up for meeting without a pen or who are working their way through a laboratory, or other setting, without a pocket knife. 12:02:40 You know, it just seems to be amazing that they get out the door with their pets on these days. 12:02:48 Yes. Those kids. 12:02:58 Yeah, I had to turn my meeting God so I could you could see me shaking my fist you can't get off my lawn. 12:03:08 We are all stroking your beard. 12:03:13 We have a few of them in this virtual. 12:03:21 All right.