00:00:00 --- log: started forth/16.10.25 00:19:27 gosh thailand looks so great 00:21:22 It's really great to start to see internet content from lots of countries all over the world. Now chrome just translates everything 00:21:52 we are really connected now 00:23:33 I have never listened to Thai before. It is very different. 00:23:59 You really roll the tongue 00:24:27 I feel like alot of it is the annunciation 00:24:51 The syllables have a very specific meter and the pitch has a pattern of how it goes up and down kind of like hindi. 00:24:58 But the pattern is way different 00:25:13 And it sounds kind of close to vietnamese 00:25:18 very unlike japanese 00:28:30 The patterns in meter in pitch actually sound alot like vietnamese or Chinese. Only I can't remember whether or not I am thinking of cantonese or mandarin. 00:28:44 I can't find a video comparing people speaking in mandarin versus people speaking in cantonese 00:36:38 now I am typing words into google translate and then typing that into youtube 00:55:26 --- join: proteusguy (~proteusgu@180.183.132.197) joined #forth 00:55:26 --- mode: ChanServ set +v proteusguy 02:08:47 --- quit: mnemnion (Remote host closed the connection) 02:43:47 --- quit: proteusguy (Ping timeout: 260 seconds) 02:58:43 --- join: dys (~dys@x5f726f8c.dyn.telefonica.de) joined #forth 02:59:46 --- quit: nighty (Quit: Disappears in a puff of smoke) 03:12:45 --- join: true-grue (~true-grue@176.14.222.10) joined #forth 03:24:23 --- join: proteusguy (~proteusgu@14.207.100.196) joined #forth 03:24:23 --- mode: ChanServ set +v proteusguy 04:09:19 I think I sort of understand things better now 04:09:40 joy basically implements linked lists which can be nested 04:09:42 quoted linked lists 04:24:48 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:5d08:9da1:3258:db96) joined #forth 04:29:27 --- quit: mnemnion (Ping timeout: 260 seconds) 04:40:24 --- join: nighty (~nighty@s229123.ppp.asahi-net.or.jp) joined #forth 05:31:29 --- join: rixard (~rixard@h-155-4-135-251.na.cust.bahnhof.se) joined #forth 05:36:08 --- quit: Guest96135 (Quit: HydraIRC -> http://www.hydrairc.com <- \o/) 05:37:43 --- join: X-Scale (~ARM@2001:0:53aa:64c:0:fbf5:b176:2199) joined #forth 05:39:15 --- quit: rixard (Quit: Colloquy for iPhone - http://colloquy.mobi) 05:56:46 --- join: rixard (~rixard@h-155-4-135-251.na.cust.bahnhof.se) joined #forth 05:58:29 --- join: rgrinberg (~rgrinberg@blk-212-79-74.eastlink.ca) joined #forth 06:24:30 --- quit: rixard (Quit: Colloquy for iPhone - http://colloquy.mobi) 08:07:27 --- join: neceve (~ncv@86.125.241.206) joined #forth 08:07:28 --- quit: neceve (Changing host) 08:07:28 --- join: neceve (~ncv@unaffiliated/neceve) joined #forth 09:22:15 --- join: moby (~moby@187-127-179-194.user.veloxzone.com.br) joined #forth 09:53:36 --- join: ASau (~user@netbsd/developers/asau) joined #forth 09:58:38 --- quit: ASau (Remote host closed the connection) 09:59:29 --- join: ASau (~user@netbsd/developers/asau) joined #forth 10:14:03 --- quit: ASau (Remote host closed the connection) 10:14:38 --- join: ASau (~user@netbsd/developers/asau) joined #forth 10:30:43 --- quit: ASau (Remote host closed the connection) 10:33:05 --- join: ASau (~user@netbsd/developers/asau) joined #forth 11:04:53 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:798b:6d2a:956e:a1e7) joined #forth 11:05:16 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 11:08:39 --- quit: Zarutian (Remote host closed the connection) 11:11:10 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 11:11:44 --- quit: Zarutian (Remote host closed the connection) 11:15:09 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 11:26:00 --- quit: moby (Quit: Leaving) 11:40:04 --- quit: rgrinberg (Remote host closed the connection) 11:59:57 --- quit: X-Scale (Ping timeout: 256 seconds) 12:03:03 --- join: X-Scale (~ARM@2001:0:53aa:64c:0:fbf5:b176:2199) joined #forth 12:07:27 --- quit: X-Scale (Read error: Connection reset by peer) 12:13:44 --- quit: Zarutian (Remote host closed the connection) 12:14:15 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 12:14:21 what filename extension do you guys generally for forth code? 12:16:12 .fs here 12:20:40 I don't 12:20:49 I just write the blocks out to disk 12:21:01 why bother with anything as cumbersome as a filesystem? 12:26:53 As fun as I'm sure it would be to be running forth not-on-an-operating-system, I do like to talk to friends, browse the internet, listen to music, etc while programming. 12:27:45 how do you preserve your code without a filesystem? how do you track changes or port it to other devices? 12:28:27 zy]x[yz: since it's fairly specific to the device it's running on, porting it generally isn't an issue 12:28:52 it is if you ever fab a second one, right? 12:29:09 I'm not sure I understand the question 12:29:23 I've got a bunch of devices, that run code written in Forth 12:29:39 the code was really written on one of them, but they all boot the same code 12:29:59 okay, how do you achieve the "they all boot the same code" part? 12:30:03 there's no porting involved, the hardware platform is the same 12:30:13 uhm 12:30:20 by making copies of the boot media, how do you think? 12:30:38 how do you do that without a filesystem 12:30:52 how do you create a bootable USB stick for a PC? 12:31:04 the USB stick has no filesystem, right? 12:31:10 of course it does 12:31:14 the bootblock's not really a filesystem 12:31:26 you just copy the contents of one disk onto another 12:31:34 so you just copy the binary image and write it directly to other devices? 12:31:46 or, more likely, you download a sector-by-sector copy of a disk, and copy it onto a blank disk 12:32:04 what do you think a .iso file is? 12:32:25 it *contains* a filesystem, but it's a bytewise copy of each sector of the disk... 12:32:54 yes, I get that 12:33:16 in the case of the stuff I'm working on at the moment, I just make a sector-by-sector copy of the flash chip it's all on 12:33:20 I'm trying to understand your workflow by tracking your code only in this way 12:33:43 well, the environment is self-hosted, which helps 12:34:11 really the distributed boot media only contains the compiled binary, there's no real need for the Forth sources 12:34:23 no need for comments? 12:34:34 the comments are in the source 12:34:43 why would compiled firmware need comments? 12:35:00 because some day you might like to read your code again to make changes 12:35:06 but that's in the soruce 12:35:08 *source 12:35:14 yes, and you just said you don't preserve the source 12:35:18 why would I be reading the compiled binary 12:35:23 no, I don't *distribute* the source 12:35:32 20:33 < gordonjcp> really the distributed boot media only contains the compiled binary, there's no real need for the Forth sources 12:35:33 I feel like you are being intentionally obtuse 12:35:53 so there's a bit of kit I'm working on at the moment 12:35:53 where do you keep the source, then? 12:36:05 on whatever mass storage I'm using on the target device 12:36:10 there's a bit of kit I'm working on at the moment 12:36:17 it's fairly old and obscure 12:37:00 it uses a 3.5" 1.44MB floppy drive which can read either MS-DOS formatted disks, or its own not-really-a-filesystem disks 12:37:47 one of the big problems is that the manufacturer is gone and although the equipment is very well-described, comprehensive manuals and all, the boot media doesn't entirely work 12:38:03 I've got one of the computer bits of this sitting in my house 12:38:25 --- join: moby (~moby@187-127-179-194.user.veloxzone.com.br) joined #forth 12:38:44 I *could* go to all the bother of setting up a cross-compiler, and all sorts of 68000 toolchain faffery, or I could just whang a simple Forth onto it 12:38:51 run it natively on the target machine 12:39:23 I can boot any of the other machines off my Forth bootdisk, which also has an editor that I ported across from my Mirage Forth disk 12:39:42 however in operation they're not actually going to have anything except the compiled binary on the disk 12:40:35 that'll free up a bunch of space to store Forth code that calls the precompiled dictionary, which matches as closely as possible the one in the manual 12:41:15 as a sidenote, it's worth making sure that if anyone is ever clearing out a place where you rely on strange old machines, they don't throw out any boxes of disks even if they are so comically old-fashioned 12:41:22 so anyway, thanks reepca 12:41:26 because you might be within a bawhair of putting the company out of business 12:41:59 as it is, they've just got to pay a frankly breathtakingly expensive invoice to get the control software for their machines rewritten from the ground up 12:42:06 but hey, it keeps me in beer 12:45:10 zy]x[yz: but yeah, if I was doing it on a PC, .fs seems reasonable. Jonesforth uses just .f 12:45:53 I'm starting with jonesforth and noticed that my text editor thinks it's fortran. so that's why I asked. thanks 12:48:43 so you'll maybe notice that jonesforth doesn't actually read files 12:49:15 you can call the file whatever you damn well please, as long as you pipe the right thing into the jonesforth binary 12:50:53 yes, as I said: it's my text editor that's confused 12:52:27 out of curiosity, which text editor is it? I'm wondering what emacs expects fortran files to be now... 12:53:09 vim 13:15:36 o_O 13:15:48 zy]x[yz: you can specify the syntax colouring to use in the modeline 13:15:59 you may need to enable vim modelines in your .vimrc 13:16:14 I know that 13:17:45 and at the top of forth.vim " Filenames: *.fs,*.ft 13:18:37 oh my god please stop talking 13:19:02 oh for fuck's sake, fine 13:19:15 you asked why your editor was making an arse of it 13:19:19 go figure it out yourself 13:19:21 no, I didn't 13:21:46 I wonder if there's an opposite of the Obfuscated C Contest. Where the challenge is to take some complex problem and make it as simple and readable as possible. 13:22:40 --- quit: ASau (Remote host closed the connection) 13:22:43 --- join: X-Scale (~ARM@2001:0:53aa:64c:0:fbf5:b176:2199) joined #forth 13:23:32 reepca: "work" 13:24:28 --- join: ASau (~user@netbsd/developers/asau) joined #forth 13:24:28 Hmm... but is it a contest? 13:25:54 every day it's a contest 13:26:09 But do I get to see other's submissions? 13:27:03 today's contest was to see if I can teach a senior application developer how to handle the *one thing* that the on-call person needs to be able to do, which is switch over one set of ten numbers in the phone switch, to the other set of ten numbers in the phone switch 13:27:32 easy enough, but the difficult part is doing it without waving a fire axe 13:28:10 gordonjcp: the question is, for it to succeed without hitch, does the fire axe have to be in the view of the phone switch? 13:28:32 you'd think "take this list of numbers, log into this web page on the switch, type the numbers on the list in to replace the numbers already there, and hit Save" 13:28:54 Zarutian: nothing should be in view of the switch, especially not software devs 13:29:03 hell, I'm barely allowed to see the switch 13:29:21 oh, it is that kind of reliable hardware then ;-) 13:30:24 well it's reliable 13:30:45 it's more that it's not meant to be fiddled with except in very specific ways for very specific reasons 13:31:21 now if BT, our wonderful national telco infrastructure provider, could do something about the rusty old fence wire they hook our ISDN30s up with, everything would be reliable 13:32:53 --- quit: ASau (Remote host closed the connection) 13:32:59 they might not if those aforesaid fence wires run through any sites or buildings that cannot be disturbed for historical reasons. 13:33:11 --- join: ASau (~user@netbsd/developers/asau) joined #forth 13:33:13 it's supposed to be shiny new fibre 13:34:03 but since one is presented as DASS2 I have my suspicions 13:34:17 so it is more likely to beurocrazic ossification? 13:35:10 that and attrition as folk retire or move to other jobs because they're sick of public sector crap, and don't entirely document what they did 13:40:11 --- quit: ASau (Remote host closed the connection) 13:42:13 --- quit: neceve (Quit: Konversation terminated!) 13:54:11 --- quit: Zarutian (Quit: Zarutian) 14:03:11 --- join: ASau (~user@netbsd/developers/asau) joined #forth 14:34:35 --- join: rgrinberg (~rgrinberg@24.222.87.130) joined #forth 14:52:33 --- quit: moby (Quit: Leaving) 14:56:17 zy]x[yz: I use .4th and recommend others do the same. It's clear and not shared with other languages. 14:59:22 John[Lisbeth]: I've been doing some raster graphics in my terminal: https://www.reddit.com/r/Forth/comments/59drtc/forthsixel_sixel_raster_graphics_in_your_terminal/ Possibly interesting to you. 14:59:57 --- quit: rgrinberg (Remote host closed the connection) 15:20:10 --- join: mark4 (~mark4@99-164-75-34.lightspeed.rcsntx.sbcglobal.net) joined #forth 15:37:29 --- quit: true-grue (Read error: Connection reset by peer) 16:05:53 --- quit: X-Scale (Ping timeout: 256 seconds) 16:06:22 --- join: rgrinberg (~rgrinberg@24.222.87.130) joined #forth 16:19:04 --- quit: nighty (Quit: Disappears in a puff of smoke) 16:27:58 --- join: X-Scale (~ARM@2001:0:53aa:64c:0:d51c:b176:2199) joined #forth 16:46:00 --- quit: rgrinberg (Read error: Connection reset by peer) 16:55:53 --- join: systemsgotyou (~User@71.91.8.13) joined #forth 17:02:03 --- join: rgrinberg (~rgrinberg@blk-212-79-74.eastlink.ca) joined #forth 17:20:24 --- join: nighty (~nighty@d246113.ppp.asahi-net.or.jp) joined #forth 19:02:43 --- quit: rgrinberg (Remote host closed the connection) 19:22:00 --- join: neceve (~ncv@unaffiliated/neceve) joined #forth 19:31:24 I am thinking that really what I wanted was linked list programming like in lisp because in trying to bootstrap myself on forth I find myself wanting linked lists 19:32:00 reminder that traversing a linked list is just begin dup while @ repeat 19:32:29 This is an example of why from now on when I am thinking of the simplest way of doing things I will look for the forth way to do it 19:33:21 a linked list is really not so different from a pushdown stack 19:35:25 now that I sort of understand the basic concept I can manipulate linked lists in javascript or python and get similar kinds of syntactic advantage for little computational weight 19:38:55 I just cant get this marijuana into my system fast enough 19:56:13 well that explains a lot 19:58:53 he he 19:58:56 well it's legal in my state 19:59:06 in public school they taught us it is basically safer and better than alcohol 19:59:22 Like it was in the textbook in my health class 19:59:52 And I mean I'm college age so it shouldn't be really surprising I'm into pot at all 19:59:59 "safer and better than alcohol" doesn't say much. 20:00:09 Well I mean it's worse than soda pop 20:00:33 at least if you smoke it 20:02:21 --- join: the_count (~weston@172-1-66-81.lightspeed.frokca.sbcglobal.net) joined #forth 20:02:22 I just like the way it makes me feel and think. 20:02:59 When you are high you stop and slow down and take a look at what's around you and just think about it really slowly and carefully. You focus on one thing for a long time until you feel you've thought about it all the way through. 20:03:03 At least I do. 20:03:08 And that really helps me with programming 20:03:11 Hi, just beginning to learn Forth here, how do I delete words in gforth? 20:03:36 I think gfroth does not have forget. Or at lest I couldn't get it working 20:03:40 the_count: For reasons I don't know, gforth doesn't implement forget. 20:03:41 so there must be a different way 20:03:59 reepca: can they implement their own forget? 20:04:00 you can put a MARKER in front of the word, but that will delete all of the words defined after it 20:04:29 I was trying to use the MARKER, but it just duplicated the word 20:04:54 you can, of course, control the visibility of words by putting them in separate wordlists, but that doesn't help much after-the-fact 20:05:54 you use MARKER by defining a marker, then defining the stuff you later want to forget. When you execute the word defined with MARKER, it will remove all words defined after it. In case that wasn't clear 20:06:44 reepca: I just started the other day, so I am not entirely sure what you mean 20:07:09 suppose that I define : my+ + ; 20:07:17 then I say MARKER thing 20:07:29 then I define : my+ ." haha kidding" ; 20:07:44 if I run my+ now, it will say "haha kidding" 20:07:55 but if I run "thing" 20:08:00 and then I run my+ 20:08:10 it will add the top two numbers of the stack 20:08:45 MARKER is what's called a defining word, meaning that the name you put after it becomes the name of a new word that does its own thing (in this case, to get rid of all definitions put after it) 20:09:14 but why does thing combined with my+ add two things on teh top of the stack? 20:09:33 because that's what the only existing definition of my+ does after running thing 20:10:04 So, will MARKER word, remove the word from the dictionary? 20:11:01 I don't know if you've already seen it, but gforth actually has a pretty nice manual that can tell you a lot. If you compiled gforth from source you can see it with "info gforth", otherwise look here: http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/ 20:11:13 For me, it is just adding a new word with that name. 20:11:45 They have the most comprehensive word index I've seen so far here: http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/Word-Index.html#Word-Index 20:12:11 from there you can find this http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/Forgetting-words.html#Forgetting-words 20:12:20 This is what is in the manual, and I am not sure I understand it. https://www.complang.tuwien.ac.at/forth/gforth/Docs-html/Forgetting-words.html 20:12:40 okay, so MARKER just defines a new word 20:12:57 the name of the new word it defines is whatever you put after MARKER 20:13:41 Is there a way to implement forgetting words? 20:14:23 Or is there a better alternative to gforth? 20:14:28 I think I understand 20:14:36 gforth is pretty good, the_count 20:14:36 There probably is a way, but the gforth authors seem to think that it isn't worth the cost. How essential is forgetting words to what you're doing? 20:14:38 there is also factor 20:14:40 and 8th 20:14:44 those are the main forths out there 20:14:51 though I use the term "forth" loosely" 20:15:13 neither of them are ANS forths, and are quite different from the forth created by chuck moore 20:15:24 gforth is based on ans forth and made by the gnu project so you know that two big software establishments, The Free Software Foundation, and the ANSI committe have put alot of work into making sure it works well 20:15:43 the_count: could you explain why you need to forget words? 20:16:33 reepca, not essential, just when I am learning, I know I will create quite a few useless words which I don't want sitting there in the dictionary. Right now I have about 15 duplicate words from using MARKER. 20:16:56 gforth starts up in a couple milliseconds and compiles really fast, so during development it usually works just fine to just restart gforth every time you want to get rid of stuff 20:17:37 Generally what you want to go is to nano "$HOME"/.gforth-history and with a few clever keybinds or perhaps using your own favorite editor you can save the lines of code you've written for your session and refine them in a text document. 20:17:52 Then use that as a startup script 20:18:01 the repl is for playing around 20:18:20 ultimately you want to refine your words into scripts you can compile and run 20:18:39 bear in mind that forth is what some call "hyperstatic global scope". What this means is that even if I define : foo ." something stupid" ;, if I later define : foo ." something meaningful" ;, then anything after that that refers to "foo" will refer to the latest-defined one 20:19:34 reepca: I did know that, I got a copy of Starting Forth and have been working / picking through it. 20:19:35 It's so you can keep defining a word within it's self 20:19:42 like I can go 20:19:59 : stars ." *" ; 20:20:10 : stars 0 do stars loop ; 20:20:16 15 stars 20:20:28 it's a cheaty way you can get recursive-like features 20:20:42 you don't really have to worry about the older version hanging around in there - memory is cheap, it's not taking much space - so the only reason to bother about being able to forget words is if you accidentally overwrite one you wanted to use. 20:21:05 I see 20:21:27 In which case you should consider putting a MARKER before you overwrite something you might want to use later :~) 20:22:03 reepca: Do MARKER's just duplicate the word? 20:23:27 I'm not sure what you mean by duplicate - MARKER just reads a name from the input stream and defines a word with that name which, when run, will get rid of all words defined since it was defined. 20:23:33 So you are using a copy of it (later defined)? 20:24:38 think of MARKER as providing a sort of snapshot of your current code state (as far as definitions are concerned). When you run the word defined with MARKER, it will revert to that snapshot. 20:25:23 So it returns the stack / dictionary / etc to the state it was when the marker was created? 20:26:23 I get it now 20:26:44 I wasn't naming the word I created with the MARKER 20:26:46 sort of. Not the stack, sort of the dictionary. What I mean by that is that it most likely won't actually change values in memory, it'll just de-ALLOT everything past the marker 20:27:20 and probably break a link in the linked list that is used for looking up words 20:27:33 That makes sense then. 20:28:52 out of curiosity, are you using emacs or something similar, or just the REPL with some text editor? 20:29:59 Just bash on Ubuntu 20:31:20 alright, then I'd recommend taking a look at the technique used in this video (at the place it starts) to make the development process a lot easier for anyone using an external editor https://youtu.be/mvrE2ZGe-rs?t=17m38s 20:31:41 (I'd also recommend taking a look at the entire video, it's pretty cool) 20:32:03 His style of coding looks so natural 20:32:33 :D 20:48:00 maker blah : lots of forth definitions here ; blah 20:48:12 when you execute blah everything from blah down is forgotten 20:48:16 anotehr way to do it is to do 20:48:25 : blah ; 20:48:29 : lots of stuff ' 20:48:32 forget blah 20:48:38 --- join: karswell (~user@144.67.198.146.dyn.plus.net) joined #forth 20:48:41 gforth doesn't implement forget 20:48:43 or simply say "empty" to forget everything you defined 20:48:50 gforth is garbage 20:48:54 utter garbage 20:49:12 compared to...? 20:49:28 i dont use any forth except the ones i wrote 20:49:38 but gforth is garbage because its ANS and because its coded in c 20:50:08 forth is not coded in C. its coded in forth 20:50:50 C, while not necessarily easier to port to a platform, is quite likely available on more platforms than forth is. 20:51:14 if your defining a forth compiler for a platform you write it in forth and write the metacompiler 20:51:16 fixed 20:51:34 forth is available on any system you write a forth for 20:51:47 and anything coded in c is not forth no matter what it looks like on the outside 20:57:13 i think compilers like gforth are the single WORST compilers you can use to learn forth 20:57:29 its like C. you can code c for 24525424 years and not know a damned thing about how C works 20:57:40 with a real forth compiler you understand how forth works 20:58:13 you will never learn how to write a forth compiler using a emulated forth copmpiler written in c 21:16:40 --- quit: ASau (Remote host closed the connection) 21:28:50 mark4: Where do you suggest I get started with this, are there any DIP IC's in particular. I have been looking around with the intention of setting up Forth on one. 21:29:53 mark4: Is something like this what you are talking about? https://hackaday.com/2015/08/30/go-forth-on-a-breadboard/ 21:35:06 mark4: I do understand what you mean about not understanding how Forth works which is vital in working with Forth 21:36:29 do you code asm btw? 21:37:26 mark4: No, I am completely new to anything remotely embedded except Arduino :D But, I would like to learn 21:37:44 do you have a raspberry pi? 21:37:48 pi2 or 3 would be best 21:38:18 I don't. How about the PI Zero? 21:38:35 dont know anything about the zero 21:38:53 but my arm forth compiler written in arm assembler runs on the raspberry pi 1 and 2 21:39:17 It is a smaller version of the PI 3 I believe, they are relatively inexpensive 21:39:18 and the source files are fully commented 21:40:18 mark4: What time will you be around tomorrow, I have to get going, although I would love to stay and talk 21:40:38 ill probably be here all day 21:40:43 its my day off today and tomorrow 21:40:52 but i have a cold too 21:41:02 so im trying to kick that before i go back to work 21:41:17 All right, I'll catch you sometime then. 21:41:46 ya 21:41:58 my forths are not ans compliant but they are not that far off 21:42:37 do suggest getting a Pi3 tho :) 21:42:47 my pi2 uses an external SSD for / 21:43:41 --- quit: the_count (Quit: leaving) 21:56:16 --- quit: dys (Ping timeout: 252 seconds) 22:23:51 --- quit: neceve (Quit: Konversation terminated!) 23:16:07 --- quit: mnemnion (Remote host closed the connection) 23:42:36 --- quit: proteusguy (Ping timeout: 252 seconds) 23:59:59 --- log: ended forth/16.10.25