00:00:00 --- log: started forth/09.12.23 00:19:28 --- join: qFox (n=C00K13S@5356B263.cable.casema.nl) joined #forth 00:45:50 --- quit: ASau (Remote closed the connection) 00:46:21 --- join: ASau (n=user@83.69.227.32) joined #forth 01:14:38 --- quit: qFox (Read error: 104 (Connection reset by peer)) 01:20:29 --- join: qFox (n=C00K13S@5356B263.cable.casema.nl) joined #forth 01:27:48 --- join: GeDaMo (n=gedamo@dyn-62-56-89-110.dslaccess.co.uk) joined #forth 01:29:10 --- quit: ygrek (Remote closed the connection) 01:30:45 --- quit: mathrick ("HULK ANGRY! HULK DISCONNECT!") 01:31:12 --- join: mathrick (n=mathrick@83.1.168.198) joined #forth 01:54:36 --- join: nighty^ (n=nighty@tin51-1-82-226-147-104.fbx.proxad.net) joined #forth 03:01:37 --- join: xpololz (n=xpololz@90.80-203-124.nextgentel.com) joined #forth 04:27:30 --- quit: GeDaMo ("Leaving.") 04:36:09 --- part: trijezdci left #forth 05:23:15 --- quit: rotty (farmer.freenode.net irc.freenode.net) 05:23:15 --- quit: yiyus (farmer.freenode.net irc.freenode.net) 05:24:30 --- join: yiyus (i=12427124@je.je.je) joined #forth 05:24:30 --- join: rotty (n=rotty@nncmain.nicenamecrew.com) joined #forth 06:07:52 --- quit: nottwo (Client Quit) 06:13:38 --- join: nottwo (n=trannie@designvox-gw.iserv.net) joined #forth 06:16:59 --- quit: nottwo (Client Quit) 06:30:16 --- quit: dandersen ("leaving") 06:41:50 --- join: lowki (n=lowki@206-248-163-87.dsl.teksavvy.com) joined #forth 06:46:23 --- join: PoppaVic (n=pops@adsl-99-35-29-238.dsl.sfldmi.sbcglobal.net) joined #forth 06:47:11 how to make word that takes string input and returns it surrounded by square brackets? 06:47:37 i.e input s" eax", ouput s" [eax]" 06:51:11 : test bl parse [char] [ emit type [char] ] emit ; 06:52:29 hmmm didn't work 06:52:35 just emited [] 06:52:43 didn't make a new string 06:52:53 test here [here] ok 06:53:46 i'm confused, i thought forth arguments came before the word 06:53:55 still it emits, but does not make a string 06:54:08 on the stack 06:55:19 --- join: nottwo (n=trannie@designvox-gw.iserv.net) joined #forth 07:09:28 lowki: you don't create strings on a stack 07:10:31 well, you could - I don't believe that's what he means/wants 07:15:52 I thought there was a word called s" in some forths that leaves the address and count of a string on the stack. 07:16:04 I just updated my OS and don't have pforth reinstalled yet. 07:16:08 So I can't try it. 07:16:33 see s" 07:16:33 noname : 07:16:33 34 parse save-mem ; 07:16:33 latestxt 07:16:33 noname : 07:16:34 34 parse POSTPONE SLiteral ; 07:16:36 latestxt 07:16:38 interpret/compile: S" 07:16:43 In that case, though, it would just be : test ." [" type ." ]" ; rith? 07:17:04 yes, but it would save it into the dictionary - not stack. 07:17:45 As said: I don't believe he asked what he means. 07:18:09 well it's for a compiler 07:18:17 which is just string manipulation 07:18:25 I'd agree. I suspect he expects strings to exist as some kind of built-in type like they do for Python, Ruby, Perl, etc. 07:18:28 if forth can't do it, 07:18:30 well i can't use it 07:19:07 use it or not, you still ain't asked a real question. I suspect you want a proprocessor. 07:19:09 Forth *can* do it, but most forths don't have any notion of garbage-collection or built-in types. 07:19:30 i know 07:19:43 i mean relatively easily 07:19:56 * PoppaVic sighs 07:20:07 First, what kind of string do you expect to pass this word? A counted string or a lengh/address pair? 07:20:07 how to append strings? 07:20:28 i don't really care which 07:20:50 You have to care, because you have to do the low-level memory management yourself. 07:22:08 i'm implementing a language, with memory management and garbage collection 07:22:26 * PoppaVic chuckles 07:22:37 so i guess it'll be easier 07:24:21 * ASau` thinks that language implementors must understand such easy things without external help. 07:28:36 i understand how to do it in haskell 07:28:53 and assembly 07:28:55 but forth? 07:29:35 Treat it like assembly: allocate a buffer, concatenate the bytes. 07:34:20 okay, i've allocated buffer 07:34:28 how to move bytes to there? 07:34:35 cmove 07:34:45 lowki: read some tutorial 07:35:02 That, too :-) 07:35:03 if you cared about learning haskell, this is easy 07:36:19 --- join: GeDaMo (n=gedamo@dyn-62-56-89-110.dslaccess.co.uk) joined #forth 07:37:10 --- quit: xjrn (Read error: 110 (Connection timed out)) 07:41:10 it's a really different paradigm 07:41:20 the arguments keep disappearing 07:41:34 so much duping and swaping 07:43:35 what is different paradigm? 07:45:51 lowki: Do you understand how "strings" work in forth? 07:58:06 --- quit: ASau` ("off") 08:05:45 --- join: Quartus` (n=Quartus`@74.198.8.103) joined #forth 08:45:10 lowki: http://forth.pastebin.ca/1724995 08:49:05 --- join: ygrek (i=user@gateway/gpg-tor/key-0x708D5A0C) joined #forth 08:59:35 --- join: Maki (n=Maki@dynamic-109-121-73-52.adsl.eunet.rs) joined #forth 09:04:53 lowki: oh, I see - you aren't talking about *printing* a string with brackets around it - you want to replace the string in memory with a bracketed one. 09:05:08 TreyB is right - you have to do all the memory management yourself in Forth. 09:06:10 You'll wind up with something involving a bunch of C!'s and CMOVE's. And that's *after* you've figured out a way to make sure you have room for what you're doing, don't have memory leaks, etc. 09:08:30 Yeah, I don't know where all the discussion about printing strings came from. :) 09:09:29 lowki: also, depending on the Forth you are using, there are a bunch of different string libraries. 09:11:32 see string.fs in gforth, or the FFL (Forth Foundation Library), or David N. Williams has a couple of dynamic string libraries, I think. 09:13:00 http://code.google.com/p/ffl/ 09:13:02 http://www-personal.umich.edu/~williams/archive/forth/forth.html 09:13:37 http://forthfreak.net/index.cgi?StringStack 09:13:41 etc. etc. :) 09:18:26 --- join: nighty__ (n=nighty@tin51-1-82-226-147-104.fbx.proxad.net) joined #forth 09:19:38 --- quit: nighty^ (Read error: 113 (No route to host)) 10:01:51 --- join: GoNoGo (n=GoNoGo@cro34-3-82-236-93-215.fbx.proxad.net) joined #forth 11:06:37 --- join: addled (n=adl@cpc2-sgyl9-0-0-cust1291.sgyl.cable.virginmedia.com) joined #forth 11:14:08 --- join: pgas (n=user@pdpc/supporter/active/pgas) joined #forth 12:10:12 --- quit: ASau ("reboot") 12:11:28 --- quit: GoNoGo (Client Quit) 12:22:35 --- join: ASau (n=user@83.69.227.32) joined #forth 12:33:23 --- quit: ASau ("ERC Version 5.3 (IRC client for Emacs)") 12:37:49 --- join: ASau (n=user@83.69.227.32) joined #forth 12:38:35 * madgarden is away: Ohio... 13:13:09 --- quit: pgas ("/quit") 13:33:36 --- quit: nighty__ (Client Quit) 13:36:16 --- join: nighty^ (n=nighty@tin51-1-82-226-147-104.fbx.proxad.net) joined #forth 14:03:25 --- join: JFLF (n=JF@150.203.5.213) joined #forth 14:18:18 --- quit: ygrek (Remote closed the connection) 14:18:31 --- quit: Maki ("Leaving") 14:28:58 --- quit: GeDaMo ("Leaving.") 14:55:30 --- quit: nighty^ (Read error: 60 (Operation timed out)) 14:55:50 --- join: nighty^ (n=nighty@tin51-1-82-226-147-104.fbx.proxad.net) joined #forth 15:14:06 --- quit: qFox ("Time for cookies!") 15:16:55 --- join: lampliter (n=chatzill@173-9-4-145-New-England.hfc.comcastbusiness.net) joined #forth 15:17:51 a long time since I've used forth but non-thinking about using it or something very much like a for a disability accessibility project 15:18:08 the problem is how you make it possible for someone with limited hand use independent of speech recognition to write code 15:18:42 what I'm thinking about is writing a translator that takes a English word-based input and generate code as output 15:19:08 the question is what syntax to use for the input. Infix/traditional notation has a lot of problems which is why I'm thinking of the forth world 15:19:58 word-recog/speech-recog will be the buggaboo 15:20:33 well, I've been living with speech recognition for 15 years and I know its limitations 15:20:46 believe me, it will have challenges but for me it's the least difficult part of the problem 15:21:02 for example, I'm using NaturallySpeaking right now and haven't had to make any corrections 15:21:12 for the past four or five lines 15:21:39 granted, if you adopt a nonstandard grammar, the from IE not English), your model will degrade 15:21:51 Never heard of it, but ok.. I can hilight strings and osX will "speak" them, as well - but recog got turned off, (it's terrible) 15:22:34 that's text-to-speech. This is I say, it listens, it gets it mostly correct 15:23:25 Yeah.. osX has both capabilities, but she's a terrible listener, and speaks well enough for me ;-) 15:24:18 here you can get the package for OS X but, in my world, it's not a real good match either in terms of usability or applicability 15:24:48 anyway, very few disabled programmers will be using speech or permission on the mac because the macro environment doesn't run there 15:25:33 I suspect if you want to have something hear speech to encode/write forth.. I'd work hard on defining one-two syllable words.. including "blank" or "space".. And, afaik, the forth specs are about the only on the planet that include "what-we-call-this-symbol" 15:26:24 I wrote a multipass compiler for fourth once that let you use the same syntax both for in the environment and for meta- compiler 15:26:33 I think I have a fair understanding of the environment and the language 15:27:38 what ever I do with the speech recognition interface, it must be with complete English words. I'm not going to force anyone to build a specialized vocabulary or crippled words with tortures pronunciation. I most certainly not going to allow them to speak the keyboard (long words for single characters) 15:27:57 the goal is to minimize the vocal load as much as possible so that they don't ruin their voice the same way they ruin their hands 15:28:09 because you can cope with bad hands but you can't cope with society without being able to speak 15:28:34 oddly, I see it the other way - whatever. 15:29:12 I've interesting hearing why. 15:32:05 What sort of programming are you thinking of doing with it? 15:32:55 lampliter: I code and I cook.. I need my hands and eyes - the rest I can likely live w/o 15:33:14 doesn't really matter. I need to prove out the general principle. I make the assumption that every target language will have a structure for its source language 15:33:23 Ah. 15:33:29 for example, what you say generate Python code will be different from what you say to generate Java 15:33:46 I'm not looking for an abstract language to generate all others. That's a fools errand. 15:33:55 ahh 15:34:41 If you going to do that, you need to do very abstract math in which I no longer have the mind for (i.e. math that can only be understood by someone less than 25 years old) 15:35:22 So you're thinking of starting with something like Forth (since it doesn't have the infix math), and then go on to other languages later? 15:36:01 I'm thinking of starting with something like forth as the generative language to produce the target language 15:36:14 Oh. Now I see, I think. 15:36:39 but I won't really be forth... maybe 15:36:46 Sure. 15:37:04 in theory, if it was forth, if you execute it, Python will come out the backend 15:37:13 --- part: JFLF left #forth 15:37:24 --- quit: lampliter (Remote closed the connection) 15:37:36 sounds like forth-the-editor for 15:38:25 --- join: lampliter (n=chatzill@173-9-4-145-New-England.hfc.comcastbusiness.net) joined #forth 15:38:32 sorry. 15:38:52 There's a bug in the latest NaturallySpeaking that triggers Firefox menu items at random. It's driving me insane 15:39:12 :( 15:39:35 as I was saying, I want to build a system which goes forth(like) -> python -> forth(like) 15:39:44 Oh, both ways. Hmm. 15:40:16 idempotent transform 15:40:21 what's python got to do with the price of tea in Siam? 15:40:23 Right. 15:40:32 Python is my initial target language 15:40:33 Interesting project. 15:40:44 Java would be the second 15:41:02 JavaScript the third 15:43:50 anyway, I need to figure out a good, simple forth environment to play around with generators 15:43:54 So were you looking for help/ideas, or just wanted to talk about it? 15:44:10 yeah. Talk at first and if help is possible, that would be great to 15:44:29 remember, bad hands = slow code generation 15:46:12 I generally stick to gforth. There are simpler systems, but many of them are more buggy or broken. 15:46:28 But if you want something you can modify to suit your needs... 15:47:09 maybe pforth? 15:48:09 my expectation is that we'll build something that's just a rough model and the code gets stuffed into the appropriate before trial 15:48:23 so if it's a full desktop system, that's fine by me. 15:48:45 There may be some things we need to do that violate forth principles as well that may mean reimplementation of a smaller but more focused system 15:49:14 for example, at one of the things that is really difficult when using speech recognition is to place yourself between matched items like quotes or parentheses 15:49:30 Yeah, I can see that. 15:49:52 by the way to solve that might be to declare "put me between" and then reduce the scope of the editor to just inside the quotes or brackets whatever 15:50:10 That was my next question. :) 15:50:11 this is another thing that people haven't done speech recognition. They typically disambiguate commands by making them longer or more "distinctive" 15:50:23 "insert" vs "overwrite" 15:50:25 it may be that a better way to solve some of these problems is to disambiguate by reducing scope of the context 15:54:50 Interesting. Or even nested contexts -- only look in a larger context if nothing matches in the current one. 15:54:55 You need a special "language" to generate Language-Specific text ;-) 15:55:18 tathi: you're the first person to volunteer that concept without any prompting 15:55:41 I sometimes describe it as a series of nested contexts that help you disambiguate a name as to what you're doing 15:55:53 Vocabularies ;-) 15:56:02 and yes PoppaVic, I definitely a special language. :-) 15:56:52 I have fundamental problems with public categories were expressed. I preferred a more "modular" approach as a way of expressing abstract data types 15:57:03 sorry, that's really whacked 15:57:14 well, bear in mind.. The only successful handwriting-recog tools use a special shorthand that forces the humans to semi-adapt ;-) 15:57:15 I had a fundamental problem with how vocabularies were expressed/defined 15:57:42 yup palm pilot. And yet, it did not achieve significant acceptance because of that special shorthand 15:58:16 what I want is a system that the user trains 95% of the way and then the system trains the rest of the way 15:58:30 No choice - I've seen their stuff, and I've suffered handwriting forever. Only thing I can read is typed or drafting print. 15:58:31 lampliter: I can't take much credit for that; your comment about reducing scope made me think of something Jef Raskin talked about in _The Humane Interface_. :) 15:58:58 but still, only person... 15:59:14 Weird. Seems obvious to me... 15:59:54 yea, sometimes the most obvious things are the least obvious 16:00:09 Or obvious only once you've already seen them somewhere. 16:00:15 "I could have thought of that!" 16:00:36 anyway, I'm going home. I've gotten almost nothing done today because of the stupid migraine.. I'll check in later 16:00:48 Nice talking to you 16:01:01 1 hr billable in 5 hours on site 16:01:17 should have stayed home 16:01:21 :-) 16:01:49 looking forward to future conversations 16:02:02 --- quit: lampliter ("ChatZilla 0.9.86 [Firefox 3.5.6/20091201220228]") 16:13:09 --- quit: Al2O3 (Read error: 60 (Operation timed out)) 16:13:26 --- join: Al2O3 (n=Al2O3@c-75-70-11-191.hsd1.co.comcast.net) joined #forth 16:20:36 Newbie need some help :s in English... How would you read this? : foo 0= if 14 else 0 endif ; 16:21:53 Getting confused by flags and comparisons in Forth :/ 16:24:54 why? 16:25:31 0= ( D:n - ? ) where ? := n==0 16:29:52 It removes the top number from the stack: if it's 0, it pushes 14 on the stack, otherwise it pushes 0. 16:29:59 --- quit: garfield_ (Read error: 60 (Operation timed out)) 16:30:01 10 0= . 0 0= . cr 0 -1 16:30:05 Does that help? 16:30:32 0= consumes a number, replacing it with a flag. 16:30:59 `if` consumes a value (flag), skipping to `then` or `else` if the value is 0 (false). 16:31:07 It's interactive - how far wrong can you go? 16:38:45 Thanks guys :) 16:44:47 --- join: garfield_ (n=uwekloss@p54867865.dip.t-dialin.net) joined #forth 16:49:03 Cleared up a bit, Control flow in Forth seems pretty different to C which i'm used to, is that correct? 16:49:26 the structures are slightly different. 16:50:00 in forth, the if/else/then is more like a C ?:; 16:50:06 easy-peasy 16:51:03 "C ?:;" ? 16:51:38 when you write ":;" i think colon definition 16:52:11 Then stick to forth. it's safer. 16:52:55 if/else/then in forth seemed weird :D 16:53:13 --- quit: addled (Read error: 60 (Operation timed out)) 17:06:49 Yeah, they're a bit different. 17:07:20 conditional and unconditional branches ;-) 17:07:45 They probably make the most sense when compared with assembly language. 17:07:54 yup 17:09:14 I wrote this a few weeks back: http://groups.google.com/group/comp.lang.forth/msg/95a654c08515914b 17:09:25 Dunno if that's helpful: it's more about how they work than how you use them... 17:11:39 if he uses 'see' he'll get more out of it - and a book or ten ;-) 17:17:25 I dunno about SEE, but books, yeah. 17:17:52 xpololz: have you looked at Stephen Pelc's book _Programming Forth_? He has a nice section on control-flow structures. 17:18:21 well, it's nice to 'see' during yer sojorn thru forth. And, of course, my books are all ancient ;-) 17:19:23 I prefer the actual source to the output of `see`, generally. 17:19:25 I'm having a look at the Thinking-Forth book at the moment 17:20:23 i haven't got any experience with assembly language either 17:20:49 that explains yet more. 17:21:36 I'm not really an experienced programmer at all. Just learned basics of C and now i moved on to Forth 17:21:58 which seems way more interesting, even it kinda confuses me 17:22:15 :) 17:23:01 but i'm getting a little used to working on a stack and RPN at least :) 17:23:18 Yeah, that takes the most practice. 17:25:36 i'll have a look at that link you posted, also if you have nice books to recommend i appreciate that, i'll probably order some from amazon soon. 17:26:18 Stephen Pelc's book is available online from mpeforth.com; it's well worth a read. 17:26:35 If you're ordering physical books, I hear Forth, Inc.'s introductory text is very good. 17:27:24 Starting Forth? Or is there - hmm.. Yes, I do seem to recall something more akin to Stevens than Brody 17:27:51 _Forth Application Techniques_, that is. 17:27:55 ahh 17:27:56 I prefer physical books :) 17:28:39 http://www.mpeforth.com/books.htm 17:29:42 Physical books are nice. :) 17:29:59 You just can't thumb through a pdf. 17:30:14 yeah 17:30:37 Online books is probably nice if you have 2 screens 17:31:23 Bathroom reading.. Soaking in the tub with texts ;-) 17:31:42 Hehe :) 17:32:47 Anyways, i'll write down these books and have a look on them later on! 17:38:26 --- join: xjrn (n=jim@astound-69-42-10-25.ca.astound.net) joined #forth 17:39:07 By the way, what do you guys think about Forth for newbies? (like myself), i just switched over from C because i want to build a good foundation, learn about the stack paradigm and hopefully get a feeling of what happens under the curtain. 17:39:26 And it's a more disciplined language? 17:40:02 --- join: Al2O3_ (n=Al2O3@c-75-70-11-191.hsd1.co.comcast.net) joined #forth 17:40:53 --- quit: Al2O3 (Read error: 60 (Operation timed out)) 17:40:56 --- nick: Al2O3_ -> Al2O3 17:44:20 Most programming languages work like a box of Lego bricks: you open them up and start building things with them. 17:45:25 With Forth, you open the box and get a machine for making bricks. If you get lucky they throw in a couple of sample bricks to show you what you might make with it. 17:45:38 :) 17:54:48 --- join: lawlessmcnutty (n=lawlessm@85.189.31.174) joined #forth 17:55:59 Well that sounds just great! 17:58:43 --- join: Al2O3_ (n=Al2O3@c-75-70-11-191.hsd1.co.comcast.net) joined #forth 18:03:24 --- quit: maht (Read error: 110 (Connection timed out)) 18:05:15 --- quit: nighty^ (Read error: 113 (No route to host)) 18:05:37 --- join: nighty^ (n=nighty@tin51-1-82-226-147-104.fbx.proxad.net) joined #forth 18:10:45 --- quit: Al2O3 (Read error: 60 (Operation timed out)) 18:10:45 --- nick: Al2O3_ -> Al2O3 18:14:09 --- quit: lawlessmcnutty (Read error: 110 (Connection timed out)) 18:14:15 --- join: lawlessmcnutty (n=lawlessm@85.189.31.174.proweb.managedbroadband.co.uk) joined #forth 18:15:23 --- quit: nighty^ (Read error: 60 (Operation timed out)) 18:16:31 --- join: nighty^ (n=nighty@tin51-1-82-226-147-104.fbx.proxad.net) joined #forth 18:23:05 --- quit: nighty^ (Read error: 60 (Operation timed out)) 18:23:33 --- join: nighty^ (n=nighty@tin51-1-82-226-147-104.fbx.proxad.net) joined #forth 18:27:28 --- join: Al2O3_ (n=Al2O3@c-75-70-11-191.hsd1.co.comcast.net) joined #forth 18:28:18 --- quit: Al2O3 (Read error: 60 (Operation timed out)) 18:28:30 --- nick: Al2O3_ -> Al2O3 18:33:46 --- quit: Al2O3 (Read error: 60 (Operation timed out)) 18:45:29 Thanks for help guys, time for some sleep! 18:45:32 --- quit: xpololz ("Leaving") 18:55:22 --- quit: nighty^ (Read error: 60 (Operation timed out)) 18:59:29 --- join: nighty^ (n=nighty@tin51-1-82-226-147-104.fbx.proxad.net) joined #forth 19:13:38 --- quit: nighty^ (Read error: 60 (Operation timed out)) 19:22:29 --- join: nighty^ (n=nighty@tin51-1-82-226-147-104.fbx.proxad.net) joined #forth 19:30:10 --- quit: nighty^ (Read error: 60 (Operation timed out)) 19:31:33 --- join: nighty^ (n=nighty@tin51-1-82-226-147-104.fbx.proxad.net) joined #forth 19:36:14 --- join: gogonkt (n=info@59.38.231.7) joined #forth 19:36:18 --- quit: gogonkt_ (Read error: 60 (Operation timed out)) 19:36:56 --- join: TreyB_ (n=trey@adsl-76-254-113-201.dsl.hstntx.sbcglobal.net) joined #forth 19:43:59 --- quit: tathi ("leaving") 19:46:27 --- quit: TreyB (Read error: 110 (Connection timed out)) 20:14:07 --- quit: xjrn (Nick collision from services.) 20:14:32 --- join: xjrn (n=jim@astound-69-42-10-25.ca.astound.net) joined #forth 20:19:29 --- quit: proteusguy (Read error: 60 (Operation timed out)) 20:30:26 --- quit: proteusguy_ (Read error: 110 (Connection timed out)) 20:31:11 --- join: proteusguy_ (n=proteusg@zeppelin.proteus-tech.com) joined #forth 20:32:04 --- join: proteusguy (n=proteusg@zeppelin.proteus-tech.com) joined #forth 21:19:10 --- quit: nighty^ (Read error: 113 (No route to host)) 21:26:31 --- join: nighty^ (n=nighty@tin51-1-82-226-147-104.fbx.proxad.net) joined #forth 22:17:11 --- quit: nighty^ (No route to host) 22:20:28 --- join: nighty^ (n=nighty@tin51-1-82-226-147-104.fbx.proxad.net) joined #forth 22:32:22 --- part: nickcrafford left #forth 22:36:26 --- quit: segher ("This computer has gone to sleep") 22:42:22 --- quit: nighty^ (Read error: 60 (Operation timed out)) 22:43:44 --- join: nighty^ (n=nighty@tin51-1-82-226-147-104.fbx.proxad.net) joined #forth 23:02:13 --- quit: PoppaVic ("Reality, what a concept!") 23:34:25 --- quit: nighty^ (Read error: 60 (Operation timed out)) 23:35:52 --- join: nighty^ (n=nighty@tin51-1-82-226-147-104.fbx.proxad.net) joined #forth 23:59:59 --- log: ended forth/09.12.23