00:00:00 --- log: started forth/19.11.03 00:08:39 --- quit: f-a (Quit: leaving) 00:37:46 --- join: f-a joined #forth 01:58:09 --- quit: nonlinear (Quit: ZNC 1.7.4+deb0+bionic0 - https://znc.in) 01:58:25 --- join: nonlinear joined #forth 01:01:41 --- quit: jackdaniel (Ping timeout: 245 seconds) 01:02:29 --- join: jackdaniel joined #forth 03:41:39 --- quit: proteus-guy (Ping timeout: 240 seconds) 03:51:28 --- quit: f-a (Read error: Connection reset by peer) 04:08:22 --- join: f-a joined #forth 04:18:28 --- quit: f-a (Read error: Connection reset by peer) 04:18:53 --- join: f-a joined #forth 04:31:03 --- join: programmingpte joined #forth 04:33:29 --- quit: programmingpte (Remote host closed the connection) 04:52:13 --- quit: iyzsong (Quit: ZNC 1.7.1 - https://znc.in) 05:12:49 --- join: dddddd joined #forth 05:30:25 --- quit: f-a (Ping timeout: 240 seconds) 05:32:39 --- join: f-a joined #forth 06:12:14 --- quit: dave0 (Quit: dave's not here) 06:55:44 --- join: proteus-guy joined #forth 07:10:01 --- join: TonySidaway joined #forth 07:14:17 Now remembering what I love about console-based emacs on Unix-like systems. 07:16:57 I just park an emacs process in my shell session, using ^Z to stop it and go off to do other stuff. It has a natural feel to it. Just about any shell worth using supports job control. It's quite the 07:18:01 quite similar to the way I used EVE editor on VAX/VMS. Workflow feels very natural. 07:23:37 Emacs being Emacs, there are also at least two ways to run the shell session in an Emacs buffer, but I prefer to have Emacs inside the shell session most of the time. 07:29:15 Emacs in 2019 is almost identical in user experience to Emacs in 1999, by default. There are lots of bells and whistles to play with, but the same sensible default behaviour still applies. 07:34:09 I still love vi, but actual vi is very scarce outside the BSDs. Vim has taken over the Gnu world. Great editor but the policy of switching on all kinds of extras instead of letting the user decide is not one I relish. 07:35:39 Getting a reliable way to make vim act like vi has consistently defeated me. There should be some kind of master switch, but if such a switch exists I haven't ever found it. 07:38:01 So when I go back to Emacs I instantly feel at home. The user interface acts the same as always, and the key bindings are all still there. No nasty surprises. 07:47:12 Just install vi. 07:49:02 Either there's a package available or you can compile it yourself. 07:49:03 john_cephalopoda, not an option if I'm using a free shell account, which is how I do a lot of my coding. Rather than cart my laptop around I access the shell from my phone. So I have to handle whatever is available. 07:50:17 I could build a native vi from, say, OpenBSD. That's tedious, though. It's easier for me to just work with what's available. 07:50:44 Then just compile it locally, make DESTDIR=~/pkg install, and export PATH=$PATH:~/pkg 07:52:05 I'm equally at home in vi and Emacs, it's just vim extensions that get in my way. 07:52:46 Emacs takes a bit longer to start though :P 07:53:29 john_cephalopoda, that's where having emacs in background as I described comes in useful. 07:53:40 Heh 07:54:47 There is also a native emacs approach, called emacs-server. But overall using my shell's job control features works just as well. 07:55:10 And of course there's always screen or tmux. 07:59:17 I used to use a Raspberry Pi Zero as a root shell server, but I haven't found time to get together a keyboard and monitor to fix that system's configuration to match my current WiFi router setup. 08:00:14 It runs FreeBSD, and when I was using it out was like having FreeBSD installed on my phone. 08:07:33 Phone keyboards are usually horrible though. 08:09:05 It just occurred to me that, for my current purposes, there are various ways to run GNU stuff on Android. They're very fiddly though. Free shell accounts are easier to use. 08:09:59 john_cephalopoda, I find working with a phone is something I can adapt to. The advantage of ubiquity is a great incentive. 08:12:31 I'm retired so I have lots of down time, and most of my work is done in my head anyway. By the time I get to typing it in, I've been writing on it in my head (and in Evernote) for days. 08:15:08 I'm writing this on my phone. It's my main computing device nowadays by far. That was true even before my laptop went missing. 08:15:58 Living that wearable lifestyle. 08:19:58 I am currently usin weechat on a RasPi server into which I am ssh'd with my phone. 08:21:24 Yeah, mine is an Android IRC client called qicr. Same deal, though. 08:23:18 Gboard keyboard is usable, and the ssh client I use has good support for Ctrl/Alt/Esc and so on. 08:29:38 Touch keyboards are unusable for me. 08:29:50 How long before there's an interface that you can use by eye movements on a HUD? That might be nice, but meanwhile my fingers will do. 08:35:29 Maybe the Google glass people are working on that HUD. Voice recognition gets a lot of kudos, but I'm not about to start dictating shell and editor commands to my phone in public. 08:36:17 People in my neighbourhood already think I'm weird. 08:39:25 Eye interfaces are slow. 08:40:06 I just want a proper keyboard with feedback when I hit a key. 08:40:27 And so big that I can blind-type. 08:40:57 In the film Children of Men, there's an example of somebody using an air keyboard. It's a device mounted on each wrist, with sprung linkages to each digit. The user touch types, perhaps in conjunction with a HUD. 08:41:41 I don't need such a complex solution. 08:44:19 I don't see why eye interfaces should be slow. Swype input works well for me on a touch keyboard and, in conjunction with a HUD keyboard display, a similar method based on gaze tracking other to work well. 08:46:28 A neat side benefit of eye tracking is that the visual processor can save a lot of work by only updating the part of the display you're actually seeing. 08:48:03 The game developers will probably be all over that. It can potentially vastly reduce the realtime rendering costs of their complex 3D worlds. 08:48:10 I can close my eyes while typing. I can type while half asleep or in complete darkness. 08:48:49 Moving my eyes gets tiring quickly and I need to focus on the screen constantly. 08:50:10 Even keeping track of the phone keyboard is so much more tiring than typing out blindly. 08:51:03 I agree there. Touch typing is great. I wish I had learned it when I was young. 08:52:40 I learned it in elementary school. 08:56:54 Hmm, chord keyboards used to be quite popular for hobbyists. Sensor tech has improved a lot so it's probably possible to track quite small voluntary muscle movements in the hand and the digits. So I can imagine an egg-like object, with a surface not unlike a squash ball, but larger. It has a surface membrane packed with pressure sensors, and the inner core contains a microcontroller, Bluetooth chip and batteries. 08:58:02 It can learn your movements. Use two if you want to literally mimic touch typing, but one will do with appropriate techniques. 08:58:53 It can probably even dispense with the batteries if it's able to store the kinetic energy from your gentle squeezing. 09:00:09 It would probably make more sense to just stick with the simple "buttons with caps on them" stuff. It's robust, no bluetooth or battery stuff. It gives a good feedback response (even rubber dome). 09:00:15 So instead of maybe 20 switches, this is a large array of pressure sensors. And you can train it like a neural net. 09:02:55 I'm taking wearability as a major part of my design brief. So my strategy is to exploit existing muscle memory as used in touch typing but without requiring a physically large surface. 09:04:52 It should be able to detect any of my digits moving to press a virtual key on a suitable keyboard such as qwerty. But my fingers don't need to move, it's just detecting my voluntary muscle twitches. 09:07:08 When I think of typing I can cause my fingers to begin the process of reaching out to type each key, extending by so much, skewing left or right as required, and so on. 09:08:01 These are the kind of movement I would hope to capture. 09:08:02 It would make more sense to grab the wanted operations directly from the brain. 09:08:43 I don't think sticking electrodes into ones head is ever going to be the input device of choice. 09:10:27 You can measure a lot externally. 09:10:42 Just as you can do with the fingers. 09:12:11 Yes, but the fingers are there. They're the logical place to start (unless the user has a disability that interferes with transmission of voluntary muscle twitches.) 09:13:24 If brain impulses were so easy to read, the porn industry would be recording and selling such stuff for consumption. 09:14:45 Anyway it seems we've wandered a long way from the arguably germaine topic of editors. 09:15:53 Real coders use butterflies. 09:22:16 https://tools.ietf.org/html/rfc2549 09:23:24 One major benefit to using Avian Carriers is that this is the only networking technology that earns frequent flyer miles, plus the Concorde and First classes of service earn 50% bonus miles per packet. Ostriches are an alternate carrier that have much greater bulk transfer capability but provide slower delivery, and require the use of bridges between domains. 09:26:39 I did actually sometimes use a manual card punch in the seventies and early eighties. https://americanhistory.si.edu/collections/search/object/nmah_694437 09:29:17 All good operators in those days were capable of entering a basic boot loader into their system using the handkeys on the front panel. You needed to do this if, for instance, the magnetic core memory overheated and the boot loader became corrupted. 09:30:20 Once you got the paper tape reader running you used that to load a proper exec that knew how to read magnetic tape or disc. 09:31:46 --- quit: ryke (Ping timeout: 276 seconds) 09:33:39 Obligatory Forth reference: Sun servers had (have?) a Forth-based bootloader. More recently FreeBSD has had one based on FICL Forth. 09:36:05 --- join: TonySidaway_ joined #forth 09:37:27 --- quit: cartwright (Ping timeout: 260 seconds) 09:38:55 --- join: ryke joined #forth 09:39:05 --- quit: TonySidaway_ (Client Quit) 09:39:22 --- join: TonySidaway_ joined #forth 09:39:26 --- quit: TonySidaway_ (Client Quit) 09:40:29 --- join: TonySidaway_ joined #forth 09:40:52 --- quit: TonySidaway (Ping timeout: 276 seconds) 09:41:16 --- join: cartwright joined #forth 09:44:03 --- quit: ryke (Ping timeout: 265 seconds) 09:44:41 --- join: ryke joined #forth 09:48:48 Yes, just checked and FICL Forth is still in the main bootloader for FreeBSD. 09:53:13 --- quit: gravicappa (Ping timeout: 240 seconds) 09:53:42 --- quit: ryke (Ping timeout: 268 seconds) 10:41:37 --- quit: TonySidaway_ (Quit: TonySidaway_) 11:19:58 --- quit: tabemann (Remote host closed the connection) 11:30:31 --- quit: f-a (Ping timeout: 268 seconds) 11:31:56 --- join: f-a joined #forth 12:21:10 --- join: dys joined #forth 12:45:20 --- join: TonySidaway joined #forth 13:22:55 --- join: karswell joined #forth 13:27:16 --- join: dave0 joined #forth 13:49:12 --- quit: pointfree (*.net *.split) 13:54:32 --- join: pointfree joined #forth 14:01:47 --- join: tpbsd joined #forth 14:02:14 --- quit: tp (Remote host closed the connection) 14:03:03 --- nick: tpbsd -> tp 14:09:46 --- join: tabemann joined #forth 14:41:36 --- join: Jookia joined #forth 15:17:25 --- quit: TonySidaway (Quit: TonySidaway) 15:26:04 --- join: TonySidaway joined #forth 15:31:08 --- join: rdrop-exit joined #forth 15:54:10 hey 15:54:23 * tabemann found out yesterday what they did to rms 15:54:38 fuckers 15:55:35 Which of these? https://en.m.wikipedia.org/wiki/RMS 15:55:52 richard m stallman, of course 15:55:56 Or maybe a person with those initials? 15:56:17 tabemann, oh yes. 15:57:38 TonySidaway, yes, FreeBSD still uses FICL, but talk is afoot to change to something else as there are no Forth people in the FreeBSD core group apparently 15:57:59 essentially they forced him out of MIT and the FSF for making some comments that were true but a bit tone-deaf about Minsky and Epstein 15:58:06 TonySidaway, I believe they are looking at elua 15:58:31 tp, yes, I think they basically went with the idea of Forth as a scripting language a long time ago but it hasn't really worked out. 15:59:03 TonySidaway, I think it worked out great, but they just dont have any Forth people to maintain it 15:59:18 Forth is ideal as a bootloader I think 16:00:11 TonySidaway, all the kids are into whatever is latest and greatest, they dont care for old and proven 16:01:31 tabemann, thats probably the end of the FSF now ? 16:14:56 i'm writing my own forth now 16:15:47 Jookia, cool, whats it going to run on ? 16:16:02 boring armv7/generic linux 16:16:13 maybe arduino too 16:16:17 nice! 16:16:45 i've just been so annoyed at most languages for doing systems programming 16:17:00 Jookia, everybody who ever learned Forth had written at least one Forth system, I think. Welcome, as Kurt Vonnegut said, to the Monkey House. 16:17:43 C is really difficult, python KIND OF worked but its standard library betrayed me 16:17:57 how so 16:18:04 (betrayal) 16:18:09 (ciao everyone) 16:18:19 it's subprocess library automatically waits for processes 16:18:33 which opens up a nasty race condition if you're trying to manage a set of processes and wait for them yourself 16:18:43 i had the bug reported but the devs were like 'wontfix' 16:18:56 Good choice of targets. Embedded systems are great for Forth 16:19:31 TonySidaway: well, ARMv7/linux is actually my regular day to day desktop so i'm hoping i can make some kind of scripting language too 16:19:54 i like shell scripting but it has some fatal flaws that make it unsuitable for robust data processing 16:20:19 like being unable to store output of shell commands in variables properly when it begins/ends with newlines 16:22:05 Jookia, C is really complex, in the language and in the support. The more Forth I learn the more C seems like a monster to me 16:22:20 yeah, which is why i'm torn since i'm going to need to do C FFI 16:23:33 i figure the simple 'let forth call a C function that exposes its stack for editing' will be good enough 16:23:44 Yeah, C is great if you understand it well but it's far more complex than any low level language needs to be. 16:24:05 alternatively, i have an inner interpreter written in C that i might just use in that case 16:25:24 i also eventually plan to write a GUI IDE 16:27:32 Jookia, definitely recommend that you look at Chicken Scheme. It's a Scheme system that compiles the source to C, so you can easily link any C library, even dynamic libraries at runtime. 16:27:56 nice 16:27:59 Most likely will run on a suitable ArmV7 system. 16:28:19 Yeah but it's Scheme which hits another issue 16:28:50 https://www.call-cc.org/ 16:29:17 infix/prefix notation is a headache 16:30:45 it's a cognitive burden that i really don't want to deal with 16:31:30 what about postfix 16:31:42 doesn't seem that different from prefix 16:31:47 well, parentheses 16:32:43 Fair enough, Jookia. Absolutely amazing language of you can overcome the burden of parentheses, though. 16:33:03 TonySidaway: oh definitely, i've used scheme before and it was originally what i wanted to write before i found forth 16:33:25 I love forth but some arithmetical expressions are saner on scheme 16:33:28 f-a: i think the main difference is that postfix notation doesn't require look-ahead when it comes to figuring out what the code is doing 16:34:33 it's subtle but it comes to be a major issue if you can't easily move around the code 16:34:42 or understand its nesting 16:36:53 I've used Emacs to edit Scheme. It's fine. Emacs understand parentheses very well. 16:37:22 Jookia: indeed true 16:37:42 TonySidaway, I have a message for you from jackdaniel: Tonysidaway: it is called "Cheney's Trick" 16:38:04 arguably delimited-continuations are all you need and they are *much* easier to implement 16:38:12 tp, yes indeed. 16:38:26 TonySidaway: yeah, so i have a really specific issue to hit here 16:38:59 i have a friend that can't really handle infix/prefix notation and gets confused by it 16:39:09 but they can get gforth 16:39:12 it's a few days old, but you'd gone when he replied to your " I am annoyed with C because it doesn't support first class continuations." 16:39:38 but gforth has a lot of problems :\ 16:39:52 and its source code is giant and unwieldy for me to address them 16:40:08 tp, indeed the S-expression representation was originally only suggested as an intermediate notation for Lisp. 16:40:13 doesn't have a decent C ffi 16:40:49 i think gforth 1.0 might have a better FFI, but that's not released yet. also it has a ton of terminal IO trouble 16:41:19 f@x60s:/tmp$ gforth --version 16:41:19 gforth 0.7.3 16:41:36 it has its own line editor which can't be turned off 16:42:32 tp, thanks for letting me know. He's right. My comment about C was really a rhetorical retort. I forget the details but I'm not seriously worried about continuation sorry 16:42:52 support in C. 16:44:18 (the line editor being a problem with terminal-based screen readers on linux) 16:44:33 As I pointed out, Chicken Scheme is an excellent ripost to the notion that C can't support first class continuations. It compiles to C and it's an excellent implementation of Scheme. 16:46:23 Only trouble is that no human being could program in C in the style that Chicken produces. At least they couldn't remain sane while doing so. 16:46:52 c[] 16:47:06 so i just have extremely specific needs and forth seems to be a good idea :P so far i've been writing the compiler. i have buffered input/output, word splitting, hex number printing, so i'm just left with hex number parsing and adding a dictionary + traversal 16:47:49 It's a maze of C functions that never return, and it has a garbage collector that quietly rearranges your return stack. This isn't your mother's C. 16:48:04 --- quit: john_cephalopoda (Ping timeout: 246 seconds) 16:48:08 TonySidaway: yikes at the rearraging return stack 16:48:37 but i've written some nasty code like that in C for an obfuscated contest 16:49:10 Jookia, yeah, it's amazing that this is done in standard C and doesn't break an rules, as such. 16:51:37 does standard C let you modify the return stack? 16:52:09 It doesn't say you can't! 16:52:52 back 16:52:55 hey guys 16:55:22 tp, I think the name Cheney rings a bell. Chicken is based on a famous paper that referred to some ideas by Cheney. 16:55:28 http://home.pipeline.com/~hbaker1/CheneyMTA.html 16:56:05 for some reason I'm implemeting an object system for hashforth 16:56:19 Hi tabemann 16:56:28 inspired by that for ficl 16:57:10 even though I'm implementing it very differently from ficl's OO system 16:57:32 to the programmer it will be much more like CLOS 16:57:42 what's hashforth 16:57:51 my forth, named after #forth 16:58:31 ah. what's it written in? 16:58:52 the core is in C, the rest is in either hashforth asm or forth 16:59:46 hashforth asm? 17:00:04 the assembly language for the hashforth virtual machine 17:00:25 oh, what kind of VM is it 17:00:54 it's a TTC forth for POSIX, but it could be easy ported to just about any system 17:00:57 I like the idea of CLOS. Never been sure I actually need that much weird stuff, but I guess it's okay. 17:01:31 ah 17:01:36 --- join: john_cephalopoda joined #forth 17:02:24 TonySidaway: how I'm designing my OO for hashforth is that each object takes up two cells (like ficl), but one declares global methods and then assigns implementations for them to classes 17:27:58 --- join: f-a_ joined #forth 17:30:19 --- quit: f-a (Ping timeout: 240 seconds) 17:32:19 i'm going to add a scratch register to my forth because there's way too many things on my stack used for loops 17:37:28 --- quit: dave0 (Quit: dave's not here) 18:07:47 back 18:08:15 Jookia: isn't that the return stack is used for for loops? 18:09:13 you mean stashing variables? 18:11:38 yeah the return stack is used for loops 18:12:19 then in some forths there's a locals stack, but that's not something we talk about here 18:12:36 and as a 'local variable' stash, but >r and r> must be balanced or it's crashtime 18:13:10 Data put on the return stack must be taken back within the same word. 18:13:11 Data put on the return stack outside a ?DO (DO) … LOOP (+LOOP) cannot be accessed within the loop. 18:13:11 Data put on the return stack within a ?DO (DO) … LOOP (+LOOP) must be taken back before leaving the loop. 18:13:11 Data cannot be on the return stack when executing I or J in a loop. 18:13:51 I make use of the return stack as a local variable but I'm very wary of do loops 18:15:35 what's up with DO LOOPs? 18:17:04 I don't use DO loops 18:17:22 only that the loop returns reside on the return stack 18:17:34 tabemann, I do, all the time 18:17:49 I rather do BEGIN UNTIL and BEGIN WHILE REPEAT loops with my own manually maintained counter 18:18:05 *use 18:18:07 well not *all* the time, just 99% of the time :) 18:18:26 I use those as well 18:18:34 part of it is that I testetd it with my forth, and DO loops are much slower than BEGIN WHILE REPEAT loops with counters 18:18:56 as a Forth user the efficiency of the code is usually my last concern 18:19:27 yeah i only have BEGIN/WHILE/REPEAT/UNTIL are currently the only loops i have 18:19:37 the readability of the code is my first priority, does it help my solution etc ? 18:19:41 --- quit: f-a_ (Quit: Reconnecting) 18:19:55 --- join: f-a joined #forth 18:20:10 where my need for speed is paramount I wont use Forth anyway, I'll use inlined assembly 18:20:49 usually my loops aren't even counted per se 18:21:05 but rather are based on a condition that is tested at each iteration 18:21:06 tabemann, yeah do loops are incredibly inefficient, but sometimes I want that 18:21:19 why are they inefficient? 18:21:55 because they have to juggle the return stack 18:22:11 Jookia, because they generate more code than human made assembly 18:22:34 atm i'm trying to figure out how to write a good memcpy in forth 18:22:59 it's going to be a fun juggle 18:23:40 Loops are okay. Good Forth language design can make them as efficient as assembly's code. 18:23:42 here's how I implemented MOVE (not in Forth, but in my Forth's VM assembly: 18:23:56 \ Copy data from lowest to highest addresses 18:23:56 define-word cmove ( c-addr1 c-addr2 bytes -- ) 18:23:56 +begin dup 0 lit u> +while 18:23:56 2 lit pick c@ 2 lit pick c! 1 lit - rot 1 lit + rot 1 lit + rot 18:23:56 +repeat 18:23:56 2drop drop 18:23:56 end-word 18:23:57 \ Copy data from highest to lowest addresses 18:23:58 define-word cmove> ( c-addr1 c-addr2 bytes -- ) 18:23:58 +begin dup 0 lit u> +while 18:23:58 1 lit - 2 lit pick over + c@ 2 lit pick 2 lit pick + c! 18:23:59 +repeat 18:24:14 They don't have to juggle the return stack unless you implement them in high level Forth 18:24:22 oh, sorry for the wall of code 18:24:54 pick ??? 18:25:23 I know you hate pick, rdrop-exit 18:26:04 In compilation you record the address of the start of the loop. At the end you code a jump to the address you saved at the start. 18:26:08 --- part: f-a left #forth 18:27:03 rdrop-exit: well it looks like you kind of have to. you have 3 vars during the loop: src, dest, src_end and you want to loop with both a duplicate src and dest at the top so you can do things (get memory at src, save to dst), then you have to increment both pointers (1 add swap 1 add), then you have to pick 3 or something to get the end so you can compare it 18:27:21 TonySidway, that's one way, the other is to push the address on the return stack 18:28:18 During compilation you mean? Yes, that's how I would record it. 18:28:35 Jookia, you can use streaming store operators to store and advance the pointer 18:28:35 so having a scratch register for the comparison value means i don't have to pick 18:29:20 rdrop-exit: it's not the advancement that's the issue, it's the comparison being stuck under the stack 18:29:57 --- quit: karswell (Remote host closed the connection) 18:29:57 how I implemented LEAVE is : leave r> 2r> 2drop >r ; 18:30:39 TonySidaway, I dunno what kind of Forth you use, but the one I use is about 2x less efficient than my inlined machine code for a delay 18:31:00 essentially I implemented an indirect jump by popping the destination (the end of the loop) off the stack along with the loop counters and like, and then putting it back in the place of LEAVE's original return address 18:31:33 TonySidaway, the Forth version is 42 bytes, the inlined machine code is 20 bytes for exactly the same thing. The inlined version is also a lot faster enabling smaller delays 18:31:59 rdrop-exit, g'day Zen Forth Master! 18:32:11 Hello Master Technician! 18:32:18 lol 18:32:23 tp, I consider a factor of 2 to be trivial. 18:32:44 i might just use some variables instead of handling the stack here 18:32:54 aka a 'memory_end' variable 18:32:58 nothing is every going to outdo good hand-written assembly, for certain levels of "good" 18:33:00 TonySidaway, as a hardware tech, a factor of 2 is massive 18:33:06 There are times when it matters, and then I would hand code. 18:33:47 tp: by that standard, all code should be written in either C or FORTRAN 18:33:54 I'm speaking of timing that makes the difference between a peripheral working, or not working, 100ns or 50 ns etc 18:34:02 But if I wanted to hand code everything in assembler I wouldn't be here. 18:34:21 unless it is written in assembly 18:34:52 tp, that's when I would resort to S 18:34:56 I'm not advocating writing everything in assembler, only where speed is critical 18:35:01 S? 18:35:23 assembler. I think of it as "time to jump out of the car and push." 18:35:38 The runtimes of looping words are normally primitives 18:35:53 Im perfectly happy with writing my embedded code in Forth, especially as Forth allows inline machine code to be easily made 18:36:27 tp, I honestly believe you and I are on the same page here. 18:36:33 rdrop-exit: well yes, BRANCH and 0BRANCH 18:36:48 TonySidaway, I'm sure we are, I rarely disagree with any Forth people 18:36:56 tabeman: not necessarily 18:37:21 tp: yeah a factor of 2 is a giant issue if you're doing timing-related stuff 18:37:40 rdrop-exit, agreed, but a do loop normally has 2x as many primitives as my hand written inlined machine code delays ;-) 18:37:52 rdrop-exit: as in like implementing +loop as a primitive as a whole? 18:38:13 Jookia, absolutely 18:38:29 tp, as it should be :) 18:38:47 tabemann: the runtime portion of it 18:38:55 that's what I mean 18:39:14 I remember buying a $12,000 digital storage scope in 1997 just to be able to decrease a timing problem by 10 nanoseconds 18:39:37 In embedded assembler for example I might code a loop using 8-bit registers. That's hard to beat with Forth. 18:39:46 When you're branching backwards you can use the return stack 18:40:48 rdrop-exit, two branches forwards, three branches back ? 18:40:52 ;-) 18:40:58 lol 18:41:22 --- join: TonySidaway_ joined #forth 18:41:24 rdrop-exit, I have investigated using push/ret on AVR. It's very slow. 18:42:18 todays words of wisdom from the techs bench, avoid cortex-M3, especially stm32f1xx if at all possible, it's old and horrible to deal with! 18:42:53 TonySidaway, as all things the tradeoffs depend on the target platform 18:44:32 Since I'm compiling the code I just store the loop return address on the return stack and pop it when I need to code the loop repeat. 18:45:13 --- quit: TonySidaway (Ping timeout: 240 seconds) 18:45:16 You don't need to pop it, just jump through it, you pop it when you're done with the loop 18:46:04 rdrop-exit, I think we're taking to cross purposes. My apologies. 18:46:27 np 18:47:11 Agree with you that these things are very platform dependent. 18:47:51 We can walk throught the most bare-bones example of an endless loop. 18:48:06 begin x y z again 18:48:33 The comon way compiles: 18:49:08 | x | y | z | jmp to addr of x| 18:49:15 oops 18:49:25 --- quit: TonySidaway_ (Quit: TonySidaway_) 18:49:44 | x | y | z | BRANCH| address | 18:50:04 Another way is: 18:51:34 | ip>r | x | y | x | jump through TOR to x address | 18:53:56 You can estrapolate for the other types of loops 18:54:03 * extrapolate 18:55:02 The second one usually takes less code space, whether faster or not depends 18:56:27 wow that's really cool 18:57:32 If you're on a bytecoded VM with 32-bit addresses, the first example is 20 bytes, the second 17 bytes 18:59:18 are bytecoded VMs better for portability compared to just using C or assembler? 18:59:35 back 19:00:22 Yes, but they add overhead 19:00:55 the problem with the second is you give up the usage of the rstack for other things 19:01:20 it kills me inside a little knowing that i'm using a full word for every ITC instruction/address/data which on 64bit systems seems a little wasteful 19:01:42 Yes there's a tradeoff between dynamic use of the return stack and code space 19:01:54 Jookia: I'm using a TTC implementation that is configured to use 16 bit tokens by default, even though my system is 64-bit 19:02:29 tabemann: so do you have a lookup table for tokens? 19:02:32 it does switch to 32-bit tokens if it runs out of, well, 15-bit tokens, but I've never needed more than 32767 tokens 19:02:38 Jookia: yes 19:02:38 Neither approach is always superior, it's a tradeoff, which is better depends on your needs 19:03:19 that sounds a little annoying with that indirection/memory use 19:03:37 it's not the fastest implementation, to be entirely honest 19:03:54 if I wanted to make it faster I could make it only use 16-bit tokens 19:04:03 with no fallback to 32-bit tokens 19:04:19 i'm happy to waste 64-bit words though since chances are if you have a 64bit system, you're okay with double size 19:04:31 I can also make it use only 32-bit tokens 19:04:50 --- join: TonySidaway joined #forth 19:04:59 at least on 32bit linux it works ok 19:05:02 or on the other hand, it has a mode to use 8-bit (well... 7-bit) tokens with a fallback to 16-bit tokens 19:05:11 that's pretty cool 19:05:16 but I'd only use that on an MCU 19:05:39 7m 19:05:48 i wish x32 caught on 19:06:34 though tbh i'm not used to systems where ints, longs and pointers aren't equal sizes 19:06:45 the problem with x32 is that, at my work, I regularly see Chrome balloon to > 4 GB 19:07:50 Chrome can run amd64 then if it wants to use more than 4gb per process 19:07:54 On PC I use 32 bit addresses and 64-bit cells 19:08:48 I have address words such as a! a@ a, which are just synonyms for 32! 32@ 32, etc... 19:08:49 though maybe i'm just not experienced enough with memory-hungry applications 19:09:12 i only have 4gb RAM 19:09:26 I 19:09:46 only have 512 bytes of RAM. 19:09:57 cool 19:09:58 really 19:10:47 in my day job I hack on a web application that is the most memory-hungry piece of code I've ever seen in my life 19:10:55 Embedded systems are like that. The code is about 8KB of dildo e 19:11:19 flash (not dildo). 19:11:34 I hope so 19:11:51 Don't flash your dildo 19:12:40 tabemann: yeah i don't understand why that's what we've decided as an industry 19:13:35 Actually if I had an entire dildo of space I'd probably just install a Unix-like OS. But here we're talking in terms of microdildoes. 19:15:07 Jookia: we have a legacy app written in Delphi - performs perfectly - but they decided they needed a web app because the web is all the range these days - and it performs poorly while using up massive amounts of resources 19:15:15 Tethered is the way to go with 512 bytes of RAM 19:15:25 and they wonder why it is slow 19:15:25 tabemann: i guess the problem is finding delphi developers 19:15:51 the thing is we *have* a Delphi guy already 19:16:40 rdrop-exit, I think yes, largely. I'm still aiming at a usable Forth for demo purposes. 19:16:57 TonySidaway: 2600? 19:16:57 rdrop-exit, haahh 19:17:26 I have 8KB of ram in my lowly stm32f051 @ $0.56 ea 19:19:44 Jookia, the chip is an Atmel ATtiny85. AVR family, 8-bit RISC microcontroller. 19:20:00 at $0.56 a pop for an ARM, I wonder if anyone still uses PIC and like, aside from PIC32 (?) 19:20:51 tabemann, it's more fun if the constraints are tight. 19:21:36 Going back to my example, I should have specified, it's 20 bytes and 17 bytes if those are calls to X,Y,Z if X,Y,Z are bytecodes then it's 8 bytes vs 5 bytes. 19:22:36 tabemann, they do because of that infernal "arduino" 19:23:30 tabemann, I purchased 10x stm32l053 recently for $0.40 each in 64pin BGA 19:23:44 I can run an ATtiny85 for years on a battery. Dunno how ARM chips compare. 19:24:30 TonySidaway, theyre not that different, it all comes down to clock speed, RTC facilities, interrupts, the ability to turn off peripherals 19:24:56 there is no super dooper special low power mos 19:25:52 TonySidaway, ultimately the ability to run for years isnt controlled by the MCU, all things being equal ... it's the cleanliness, lack of moisture and sealing of the pcb 19:25:55 tp, definitely must learn ARM. Meanwhile there's lots of fun to be had on 8-bit chips. 19:25:58 fucking arduino mod is a twat: https://forum.arduino.cc/index.php?topic=466166.5;wap 19:27:01 I searched for "infernal arduino" and that is the first thing I get, some arduino mod being a jackass 19:27:03 tabemann, I call Arduino users "C Cargo Cultists" 19:28:01 tabemann, theyre all waiting for the next free device library because most of them don't know C very well, and arent prepared to read the MCU or the device datasheets 19:28:19 bbl 19:28:29 because they "don't have the time" 19:29:00 Yeah. You know what? I don't even know it care if those people exist. 19:29:26 and oddly, they all really HATE Forth, even the mention of it drives them into apoplexy 19:29:43 Same reason I gave up on social media. 19:30:00 well Forth is like the unholy love child of C and Lisp :D 19:30:01 is that really being a jackass? 19:30:13 TonySidaway, I dont either, but theyre everywhere, one cant suggest Forth on any forum without being drowned out by Arduino acolytes 19:31:15 the mod seems reasonable in that thread 19:31:21 tabemann, ?? no way, Forth is like the holy love child of assembler and a stack ;-) 19:32:05 i tell people, "want to learn assembler ?" learn Forth and it will teach you assembler 19:32:42 Jookia: maybe things like locking files in an IDE to keep noobs from breaking things bothers me 19:33:15 and then apologizing for this is the part that to me seems like being a jackass 19:33:20 tp, well this and #retro are the only remotely social forums I use. It's okay. Nobody is yelling about politics (I have strong political views but they don't belong on these channels). I can never fun and I don't feel like screaming all the time. Forth as therapy. 19:33:29 --- quit: DKordic (Quit: ERC Version 5.3 (IRC client for Emacs)) 19:33:41 *can have fun 19:33:42 when learning assembler one had to whack ones head with a bat after every mnemonic, but with Forth a whack every 10 mnemonics will do ;-) 19:35:05 TonySidaway, agreed, this is a very low noise and polite channel, I guess everyone is armed, I know I am :) 19:35:18 I love assembler, really fell in love when computers when I learned PDP-11. 19:35:40 me too, I fell in love with motorola 6800 assembly 19:35:58 Forth is like Lego for assembler. 19:36:10 too right 19:36:14 tabemann: seems like a fine design decision to me 19:36:35 --- join: xek_ joined #forth 19:36:55 her is my minimum microsecond delay in Forth 19:37:07 the only assembly I've really liked is MIPS assembly which I learned in college 19:37:30 : ms ( u -- ) \ millisecond blocking delay for Cortex-m0 with 8MHz rc clock (mecrisp-stellaris default) 19:37:30 [ 19:37:30 $20EF h, 19:37:31 $00C0 h, 19:37:31 $3001 h, 19:37:31 $3801 h, 19:37:33 $D1FD h, 19:37:35 $3E01 h, 19:37:37 $D1F8 h, 19:37:39 ] drop 19:37:41 ; 19:37:42 tp, I used Amiga because it had the closest to VAX software architecture. 19:37:43 isnt that just beautiful ;-) 19:38:00 68K was so lovely. 19:38:44 TonySidaway, sadly arm assembly is ok, but nothing like 6900 ISA, tho MSP430 is really nice, but 16 bit 19:38:53 6800 isa I mean 19:39:11 --- quit: xek_ (Remote host closed the connection) 19:39:36 --- join: xek_ joined #forth 19:39:56 I remember the 6502 ISA when I was a kid, but I could never keep straight which instructions had which addressing modes, and furthermore I didn't have a proper assembler but rather just the Apple //e's in-ROM miniassembler 19:40:22 in most cases tho, Forth is plenty fast enuf for my programs, it's only the odd timing that needs hand assembly 19:40:39 tabemann, the 6502 sucked imho 19:41:06 tabemann, sure, some legondary hackers made the 6502 sing, but I couldnt 19:41:15 Ashamed to say I can't fathom x86 assembler or anything related to it. I was spoiled by PDP-11. Even 6502 was a shock. 19:41:16 risc-v is looking decent 19:41:45 my pet hate was the 8 bit index register of the 6502, which necessitated "paging" to reach the full address space 19:42:01 Apple chose the 6502 because it was the cheapest processor available in the late 70's 19:42:03 Jookia, so it is, I'm waiting on a Gigadevices board atm 19:42:12 tp: I hated that too 19:42:33 tabemann, thats right, the 6502 was $15, but the 6800 was initially $175 then dropped to $80 19:43:23 tabemann, and ARM Thumb is similar, one can only jump 1024 #immediate 19:43:44 which is really annoying, but ... tradeoff! 19:43:52 TonySidaway: x86 is like 'what if we only had special purpose registers and a lot of instructions to avoid using registers' 19:43:57 thats one of the problems with 32 bits 19:44:38 it's like the inverse of a load/store architecture 19:45:07 TonySidaway, X86 assembly is like all Intel assembly, discordant and unpleasant 19:45:55 * tp has never been fond of any Intel assembly 19:47:33 interestingly Intel has really bombed in embedded, they failed badly and crashed and burned 19:47:55 in the end Intel couldnt GIVE their edison embedded junk away 19:48:09 tp well at least AVR is reasonable. Very generous number of 8-bit registers, symmetrical instruction set, three index registers. 19:48:19 --- quit: xek_ (Ping timeout: 240 seconds) 19:48:20 they were dropping boxes of them off at maker clubs in Ireland but no one wanted them 19:48:51 TonySidaway, yeah, AVR was a breath of fresh air for C users 19:49:20 TonySidaway, 40 years ago ;-) 19:49:51 It took me a while to catch up with AVR. 19:50:10 * tp wrestles with &*(*&^% stm32F103 interrupt config! 19:50:14 The Arduino kit is lovely. 19:50:44 TonySidaway, it is, just like a Meccanno kit 19:51:32 I need to learn how to use my DISCOVERY board, and get a working toolchain for it, so I can port hashforth to it 19:51:35 TonySidaway, I bought 5 arduino kits, one for myself, 4 for my kids, no one has used them and I pinched the bits out of mine to use with otehr things 19:52:00 tabemann, nothing to it, a diso board is the easiest thing to get going ever! 19:52:30 tabemann, you only need a linux pc with a usb port, a usb cable and youre in biz 19:52:36 tp: when I've tried to find datasheets on the STM website, I couldn't find ones that are complete enough 19:52:56 I've got a robot vehicle somewhere with a huge Arduino Mega 256 board installed to control it. Put a Raspberry Pi on top with a camera and you have instant Skynet. 19:53:06 and by toolchains I mean like a working gcc toolsheet 19:53:12 *toolchain 19:53:27 tabemann, one initially gets lost in volumes of docs a bit like the hidden library in film "The name of the Rose" 19:53:42 tabemann, whats your discovery board ? 19:54:07 STM32L476DISCOVERY 19:54:49 tp, ah, I think you'll find the data sheet you want is marked Finis Africae. 19:55:14 I expect the transition to be relatively easy, because I really just have to rip out the POSIX stuff in hashforth, and replace it with ARM interrupt handling 19:55:18 (I just read the novel) 19:55:41 TonySidaway, the film is really well done I thought, a Connery clasic 19:57:34 I enjoyed it too. I hope they'll put it on the BBC again soon, or I'll stream it somewhere. It's a fantastic film, given the amount of material in the novel. This was as close as you could get in about two houses t 19:57:47 *hours. 19:57:54 TonySidaway, absolutely 19:58:11 tabemann, thats a full on chip 19:59:23 --- quit: dddddd (Remote host closed the connection) 20:00:35 well it has a meg of flash :D 20:01:03 one thing I'm gonna hafta figure out is how to handle token lookup in both flash and RAM 20:01:58 what I'm thinking of doing is having two lookup tables for tokens, where it first checks the flash table, and if an entry is empty in it, it then checks the RAM table 20:02:29 The novel is much more obvious in its Sherlock Holmes references. Adso is the narrator, as in the film, but most of the narration of about Friar William's philosophy (he's a follower of Roger Bacon and a contemporary of Williamson of Occam.) 20:02:44 tabemann, that meg is awesome, I have a F407 with the same resources 20:03:41 And there are lots of Watsonian observations about William's acute reasoning skills. 20:04:22 TonySidaway, it's one of my favorite films 20:07:23 One of Connery's best roles. 20:09:22 TonySidaway, absolutely 20:09:43 tabemann, whats the full part number of the MCU in your diso board ? 20:11:13 I have an audio of the novel which renders William with a Northumbrian accent. It fits the scant information about William provided in the novel. Connery's Scots accent is just as appropriate. Adso says William is "from between Northumbria and Hibernia (usually means Ireland) so he's in the same ball park. 20:12:06 He's referring to William's red hair. 20:31:47 back 20:32:34 STM32L476VG I think 20:35:55 --- quit: proteus-guy (Ping timeout: 246 seconds) 20:37:33 tabemann, reference manual: https://www.st.com/resource/en/reference_manual/dm00083560.pdf 20:38:04 programming manual: https://www.st.com/resource/en/programming_manual/dm00046982.pdf 20:38:31 errata: https://www.st.com/resource/en/errata_sheet/dm00111498.pdf 20:39:05 page for all this stuff https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-ultra-low-power-mcus/stm32l4-series/stm32l4x6/stm32l476vg.html# 20:41:55 thank you 20:42:27 * tabemann is currently working on OO crap so he can avoid doing real work like porting hashforth to ARM 20:42:51 same reason why I implemented math routines for hashforth 20:43:20 hahah 20:43:44 well the other reason why I've implemented these things is that I want them 20:43:55 me is working on a forth temperature sensor to avoid configuring a wifi network for a client 20:44:13 --- quit: TonySidaway (Quit: TonySidaway) 20:44:16 back 20:44:23 wb rdrop-exit 20:44:33 welcome back! Zen Forth Master! 20:44:44 thanks guys! 20:45:38 * tp just soldered a wire on a Olimex P103 board USR pushbutton to be able to test various interrupt lines 20:46:16 cortex-m interrupts are very configurable an'd confusing 20:51:12 --- join: ryke joined #forth 20:53:51 --- join: X-Scale` joined #forth 20:54:25 --- quit: X-Scale (Ping timeout: 240 seconds) 20:54:28 --- nick: X-Scale` -> X-Scale 21:02:04 okay, I'm gonna head off to bed now 21:02:07 g'night guys 21:02:13 cya tabemann 21:02:25 goodnight tabemann 21:03:26 --- quit: pareidolia (Ping timeout: 264 seconds) 21:08:12 rdrop-exit, I made another small step forward last night 21:09:20 rdrop-exit, I use gnu screen as a serial terminal because it has a number of very useful features that no other application I've yet looked at also ha 21:09:23 has 21:09:54 one is the ability to tee the client TX stream to a sub program 21:10:32 Ive been using it with SED to search for error and warnings from the on chip Forth compiler and beep the terminal bell 21:11:38 last night I realised I could also add a nice underlined "ERR" msg in red as well, so now I get a beep, and a RED error msg next to any compiler errors :) 21:12:30 this is important because I want to see the first error, and as the terminal speed is 1/2mbits/s it's too fast to read 21:12:42 Sounds like you're having fun 21:13:27 it's more productive mow 21:13:44 you know how it is, one typo can produce a 100 errors 21:14:51 I stop compiling on the first error 21:15:10 this error system alleviates the need to hack the Forth source and do it on chip, which Ive also done, but means I need to apply/create patches for each new release 21:15:46 I hate it when compilers try to keep going after an error 21:15:50 I used to also, using RTS/CTS handshaking but I find the colors and beeps are enuf 21:16:28 continuing after a error is the Mecrisp-Stellaris default, even tho it prints the error message 21:16:55 unusual for a Forth 21:17:08 really ? 21:17:17 the author is a fort traditionalist 21:17:50 but then he has his own ways also 21:20:35 Perhaps you can override the default, it would save you having to deal with all the superfluous output 21:20:38 I hate that even in batch languages such as C 21:21:08 no, there is no option for 'stop on error' 21:21:49 it sure would have saved me a LOT of time initially when learning forth, but then one has a choice ? 21:21:59 1) start easy, finish hard ? 21:22:07 2) start hard, finish easy ? 21:22:46 The compiler doesn't raise an exception when it encounters the first error that you could catch? 21:23:49 even now, that code is beyond me 21:24:17 it doesnt raise a mcu exception if thats what you mean ? 21:25:08 I hacked the source to raise a pin level on any error and used that as a hardware handshake to stop the upload 21:25:16 No, I mean a Forth exception 21:26:06 how are you detecting the "any error" 21:27:03 as default errors are printed on the terminal by the compiler 21:27:24 ah, you're parsing the output? 21:28:06 my current method does yes, and rings the bell and adds "ERR" in red into the receive stream from the compiler 21:28:32 this way it works with all the various mcu's in the Mecrisp-Stellaris collection 21:29:15 more than likely screen has a method to stop the upload that could be added to my parsing program 21:29:35 I would assume that there's a more direct "upstream" way than parsing 21:29:36 but I dont think I need it 21:30:03 doing it inside the on chip Forth you mean ? 21:30:31 Ive done that before and it worked fine but needs mods from one chip type to another 21:30:42 so too hard in the long run 21:31:54 Shouldn't be chip dependent, just some option setting on the on-board Forth to stop compiling as soon as an error is encountered. 21:32:52 not that I know off, but I'll ask the author, perhaps it's been there all along! 21:33:06 Weird situation to have to work-around 21:35:35 Worth finding out. 21:36:18 emailed :) 21:36:57 it never occurred to me that this feature may already be present but not active ! 21:41:15 It shouldn't even be necessary, I hate overzealous tools :) 21:42:16 well, when it comes to cortex-m, there is only Mecrisp-Stellaris in free and open Forth 21:42:53 it's that or nothing, and Mecrisp-Stellaris has been 100% reliable and bug free for me over the last 5 years 21:43:09 really? I did not know that. 21:43:49 plus the author is friendly and helpful, but won't change anything just because a user thinks it's a good idea ;-) 21:43:59 I would have thought with the popularity of ARM there would be plenty of Forths targeting them. 21:44:02 carson ? 21:44:19 just a sec 21:44:31 no, none apart from proprietary ones, mostly made for windows 21:45:09 isn't 8th a thing? 21:45:21 not for cortex-m 21:45:43 o dpm 21:45:45 oops 21:45:51 i don't quite understand 8th because it's proprietary 21:46:08 there is nothing open well tested for cortex-m 21:46:13 apart from Mecrisp-Stellaris 21:46:37 same, but Im not into different forths, I'm a tech not a programmer 21:46:56 I'm only interested in developing on my favorite hardware 21:47:31 different forths? 21:47:59 Johnny Carson was the long-time host of the Tonight Show, "I did not know that." was a catchphrase he often used. 21:48:20 well every Forth is different 21:48:42 rdrop-exit, ahh, Ive never seen him 21:49:29 but it's a moot point because there is only one well developed opencortex-m Forth 21:49:35 He was the king of US late night TV for decades 21:49:46 https://www.youtube.com/watch?v=jgYbogp1Ha0 21:49:59 I've heard the name but I live in Australia and I never watch television 21:53:10 haha 21:53:12 i live in australia too 21:53:25 Jookia, what state ? Im in NSW 21:53:30 NSW too! 21:53:42 northern NSW tho 21:53:44 ha, Nothern Rivers for me 21:54:02 A town named Casino 21:54:28 uh i don't want to dox myself, but that's fairly close to where i am 21:54:29 a very hot town! 21:55:03 35C at the Casino airport right now 21:55:14 Jookia, not Lismore! ? 21:55:17 it's like 25 atm 21:55:43 nah, not lismore 21:55:58 around 1h30m away 21:55:59 that puts you on the coast I guess, LUCKY DUCK! 21:56:10 nope, inland 21:56:14 0 water here 21:56:25 Jookia, youd be the closest Forth user Ive ever met in that case! 21:56:40 yeah that's scary 21:56:50 closest irc user i've ever met 21:57:02 Im actually from WA, but I came to Lismore in 2001 21:57:25 ill be outa here in 12 - 24 months as I retire in 12 months 21:57:31 congrats 21:57:38 move to somewhere watery 21:57:39 ill be 66 then 21:57:55 yeah, Im thinking Antartica would be nice 21:57:58 ;-) 21:58:06 Im so sick of the heat 21:58:14 =8-O 21:58:18 i'm only 24, so i'm probably part of the weird future forth generation 21:58:31 wierd ? how ? 21:58:40 how can anyone change Forth ? 21:59:05 oh, not forth changed 21:59:16 Jookia, congrats on being interested in Forth anyway, it's unusual for someone so young 21:59:22 but rather not having used it on tightly embedded machines 21:59:48 i've always used preemptive 32bit machines that can connect to the internet and compile C 22:00:12 thats fairly common thesedays 22:00:26 yeah, but forth hasn't really spread to that 22:00:29 since the mid 80's I guess 22:00:46 true, the Forth heyday was long ago 22:01:27 from what i can find online it looks like forth was super popular in the era where resources were very slim, then once machines got more powerful people were able to switch to bigger languages 22:02:54 the current 'cutting edge' languages are node/rust/go which just eat so much resources 22:03:39 Jookia, youre right 22:03:53 Jookia, rdrop-exit is not far from us, just up the road 22:04:00 ... in the Philipines 22:04:04 nice 22:04:06 yup 22:04:10 a quick drive over 22:04:14 hehe 22:04:23 a quick plane trip 22:04:26 hop skip and jump 22:05:10 rdrop-exit, 36C 16% rh here atm 22:05:10 My last trip to Australia was Perth, for a DEC conference 22:05:22 thats my home town 22:05:29 what year was that rdrop-exit ? 22:06:54 70's ? 22:09:13 Sometime in the late 90s IIRC, it was before Compaq bought them up 22:09:13 According to Wikipedia Compaq acquired them in 98, so before that 22:11:00 Id have still been in Perth back then, 87 - 97 were the most awesome years of my life 22:13:36 --- quit: rdrop-exit (Read error: Connection reset by peer) 22:13:48 --- join: rdrop-exit joined #forth 22:14:59 tonight I tested my formula for fault finding why a cortex-m interrupt doesnt work and Im happy to say that the basic part works 22:15:42 nice 22:16:27 kudos tp 22:17:13 but Im not quite there yet, it's like a murder mystery book atm, I can see the killers shoe, but thats all 22:17:35 is it heresay to have a forth that runs on an OS and FFIs with C? 22:18:58 I've no idea 22:20:57 --- quit: rdrop-exit (Ping timeout: 265 seconds) 22:23:42 --- join: rdrop-exit joined #forth 22:23:42 --- quit: rdrop-exit (Client Quit) 22:27:53 --- join: rdrop-exit joined #forth 22:28:02 got bumped off 22:28:17 probably the humidity ? 22:28:32 :) 22:28:39 jookia asked : is it heresay to have a forth that runs on an OS and FFIs with C? 22:29:05 and that sounds like a Zen Master question to me 22:30:57 --- quit: rdrop-exit (Read error: Connection reset by peer) 22:34:43 --- join: rdrop-exit joined #forth 22:35:54 I keep getting bumped off 22:35:54 I don't think it's heresy 22:36:46 Depends on the direction you take it I guess 22:38:20 testing 1... 2... 3... 22:41:21 receiving loud n clear 22:43:20 thanks, my IRC lag times were over a minute 22:44:42 thank god darpa made the Internet reliable and self healing! 22:45:26 time now is 14:45, I'm checking how long this takes to get through 22:45:43 seems ok now 22:46:34 seems ok, tho there is a 3 hour delay to here 22:46:43 lol 22:46:46 ;-) 22:46:58 accurat to the minute tho 22:52:42 Some of the approaches PC Forths take don't seem very Forth-like 22:55:07 there must be more forths in the world than any other language I rekon 22:55:22 they have been made for everything in every possible way 22:55:25 --- join: X-Scale` joined #forth 22:55:35 I have a Forth here written in shell, one in Perl 22:56:00 i wonder if one has been written in brainfuck ? 22:56:10 Probably 22:56:22 my thoughts too 22:56:39 one using relays ? 22:57:08 then there is the Chinese Forthacus 22:57:29 --- quit: X-Scale (Ping timeout: 268 seconds) 22:57:29 --- nick: X-Scale` -> X-Scale 22:57:47 Metacompilation is getting lost in the shuffle 22:59:25 Between the vendors reserving it for their own use, and the standard deemphasizing it. 23:01:23 The result is fat Forths that try to do everything you might ever want. 23:02:31 Bloat is never the Forth way 23:04:53 yeah, bloat is everywhere now 23:05:38 People are so used to it, they can't even conceive solutions that don't demand more bloat. 23:06:34 so true 23:08:08 it's amazing what lifeforms will accept and become used to, the wider implication is a bit concerning 23:09:07 when I was a child, my family was on a holiday in the remote north of WA. My parents stopped for another of their insufferable 'cup of tea breaks' near a 'cattle grid' 23:09:13 Garbage collection, object-oriented this-and-that, functional this-and-that, bloated and buggy libraries. 23:09:42 ok 23:10:01 I looked between the bars of the cattle grid into the concrete hollow below and there was a cat in it 23:10:11 ok 23:10:41 it had fallen in and couldn't get out, it was emaciated and nearly dead I guess 23:10:52 :-( 23:12:23 my mother, never one to see a dumb animal suffer lowered a hessian bag into the area and the cat tried to attack it and subsequently entangled it's claws, at which point my mother whipped the cat up, grabbed it and tossed it into the bush away from the grid 23:12:43 cool 23:13:15 as we stood there amased at my mothers quick actions and bleeding arm (cat scratches) the cat came racing out of the bush and tried to jump back down the hole 23:13:18 amazed 23:13:28 =8-O 23:13:59 at that point I realised that no matter how terrible life may be, we can get used to it and desire it, even unto death 23:14:18 just like that cat 23:14:51 "I still believe in abstraction, but now I know that one ends with 23:14:52 abstraction, not starts with it. I learned that one has to adapt 23:14:54 abstractions to reality and not the other way around." 23:15:01 -- A. Stepanov 23:16:49 "Well there's a difference between, and I don't think this is understood very well by everybody, there's a difference between simplifying and making a higher level of abstraction, we say that's simplifying, but it's actually making things more complicated most of the time because there's more stuff underneath right, and that's what we have not acknowledged as a programming community" 23:16:55 -- J. Blow 23:16:59 many of the arduino/C users who are quick to disparage Forth think they know all about it, it is 'obsolete', 'write only' etc according to them. They praise their C or C++ based language, hate datasheets, have little or no debugging. Their system is dead slow and without libraries, they are soon stuck and cant finish their project 23:17:38 a Stepanov and J blow are so right 23:18:32 to me, their arduino/c systems are so horrible Id never use them, but to them, their systems are the pinnacle of high tech 23:19:44 Forth is so different that Ive actually seen one Arduino user with a 'john cleese' look of utter blankness on his face as he watched my system working 23:19:56 I've never seen that before! 23:21:19 That's why Forth will never have mass appeal, it doesn't cater to obliviousness 23:21:35 lol 23:22:55 if Forth had 'mass appeal' Im pretty sure I wouldnt be interested in it 23:23:45 Me neither 23:25:33 to me Forth is almost unknowable, yet every few days or a week, I find I know something more, something real, something useful 23:26:44 I never experienced that with C, C was always so complex and confusing including the compiler, I felt like a snail before the tsunami 23:29:23 --- join: proteus-guy joined #forth 23:29:50 C can be simple, epsicially if you use explicit bitwidths, e.g. uint64_t etc... it's the libraries that are often problematic. 23:30:31 using it can be very simple, ignorance is bliss and I was very blissful 23:30:37 Forth is still the simplest solution to go from nothing to a conversational system. 23:31:16 yeah Forth at it's most complex, is far from simple as I see it right now 23:32:02 but then I still have much to learn about forth, and I proceed as the snail 23:32:50 --- quit: dys (Ping timeout: 264 seconds) 23:34:16 A Forth solution comprises a platform, a real or virtual Forth machine, an instruction set, a inner interpreter threading strategy, an outer interpreter, words and blocks, alternating between using, refining, and metacompiling new versions as needed. 23:36:03 I get that now, 12 months ago I wouldnt have 23:36:13 Best of all it can all fit in your head. 23:37:50 I think C is the language I hate the least 23:38:03 Mainly because it does what you tell it to 23:40:05 And the original C standard (C89 / C90) was not very large. The only C standard developed and blessed by Dennis Ritchie: http://paulfertser.info/files/ansiCstandard/ANSI-C%201990%20Standard%20-%20ANSI_ISO%209899-1990%20(R1997).pdf 23:40:15 --- join: gravicappa joined #forth 23:40:25 C99 standard was much larger and butchered the language somehow. 23:40:26 yeah you have to remember that they were compiling C on a PDP-11 23:40:41 Indeed 23:41:09 unix was also very small and slim 23:42:28 i would probably say the problem isn't inherently to do with languages but just with the whole 'wow, more resources? let's do more things' attitude 23:43:54 it's typical to want more 23:44:05 I don't consider Forth a language, more of an architectural stack. 23:45:45 i think a lot of the complexity and bloat in software comes with stable interfaces 23:46:21 I agree 23:47:00 but stable interfaces can be a good thing? like you want the features you care about to stay there 23:47:31 Some interfaces are necessary to the solution you're building, some are arbitrary. 23:48:06 The arbitrary ones are bloat. 23:48:20 essential complexity vs just complexity 23:48:39 essential vs arbitrary complexity, yes 23:49:56 i wonder if a 'good' solution to this is to just fork your project and clean it out for major releases. remove features, but still support the legacy project 23:51:11 "Compatibility means deliberately repeating other people's mistakes." -- David J. Wheeler 23:51:26 that's a good way to look at it 23:51:32 it is! 23:51:47 maybe the main issue is that we just can't refactor entire systems when we change things 23:52:44 though macOS is dropping support for 32bit applications 23:52:45 The standards that matter are the ones your solution must interface with, not the ones you impose on yourself. 23:53:07 that's a clever way of saying 'implement half the standard' ;) 23:54:01 That's why I don't feel concerned with the ANS Forth Standard, I don't see Forth as a programming language. 23:54:42 these are problems not specific to programming, which i think would explain why forth can be a bit alienating 23:56:24 it feels less like a solution and more like an outlook on how to make programs with little manpower 23:56:47 Forth was alienating back when most programmers knew the machine and knew the assembly of their machine, now it's way out of line with the expecations of modern programmers. 23:57:37 the 'i need tools that fit me so i can get shit done' approach to programming perhaps 23:59:59 --- log: ended forth/19.11.03