00:00:00 --- log: started forth/06.07.20 01:09:36 --- quit: LOOP-HOG ("Leaving") 01:10:14 I440r's clock is somewhat screwed up. 01:10:35 The latest isForth tarball was created ... 4 days from now. 01:21:35 --- join: Quiznos (i=1000@69-168-231-199.bflony.adelphia.net) joined #forth 01:34:46 --- quit: Quiznos ("BitchX Lite I said!") 02:20:18 --- join: virl (n=blah@vie-086-059-017-056.dsl.sil.at) joined #forth 02:20:59 Hi 03:07:04 --- join: Jim7J1AJH (n=jim@221x115x224x2.ap221.ftth.ucom.ne.jp) joined #forth 03:09:49 --- part: Jim7J1AJH left #forth 04:02:46 --- quit: virsys (Remote closed the connection) 04:03:43 --- join: virsys (n=virsys@or-71-53-74-48.dhcp.embarqhsd.net) joined #forth 04:20:52 --- join: docl_ (n=docl@74.36.210.133) joined #forth 04:32:02 --- quit: docl (Read error: 113 (No route to host)) 04:35:54 --- join: PoppaVic (n=pete@0-1pool46-226.nas30.chicago4.il.us.da.qwest.net) joined #forth 05:51:14 --- join: tathi (n=josh@pdpc/supporter/bronze/tathi) joined #forth 05:56:02 --- join: timlarson_ (n=timlarso@65.116.199.19) joined #forth 06:01:24 --- nick: docl_ -> docl 06:04:13 --- join: madwork (n=foo@derby.metrics.com) joined #forth 06:07:04 --- quit: madwork (SendQ exceeded) 06:07:35 --- join: madwork (n=foo@derby.metrics.com) joined #forth 06:32:36 --- join: nighty_ (n=nighty@66-163-28-100.ip.tor.radiant.net) joined #forth 07:27:43 --- quit: Quartus (Read error: 104 (Connection reset by peer)) 07:35:12 --- quit: virl ("Leaving") 07:52:42 --- quit: PoppaVic ("Pulls the pin...") 07:54:21 --- join: PoppaVic (n=pete@0-1pool47-191.nas30.chicago4.il.us.da.qwest.net) joined #forth 08:49:19 In Factor, how do you convert a 0 to a t/f to make if/when/unless happy? 08:54:38 I didn't realize you had to 08:54:55 Well, 0 [ "this" print ] when prints "this" 08:55:22 Whereas f [ "this" print ] when does not. 08:55:25 As I would expect. 08:56:02 oh, so it does 09:00:33 well, you could use "0 =" and then the opposite combinator 09:02:42 you're probably better off asking in #concatenative though 09:03:14 that's mostly where the Factor folks hang out 09:10:55 --- quit: docl (Read error: 104 (Connection reset by peer)) 09:11:31 --- join: docl (n=docl@74.36.210.133) joined #forth 09:11:56 --- quit: nighty ("Disappears in a puff of smoke") 09:13:03 --- join: nighty (n=nighty@66-163-28-100.ip.tor.radiant.net) joined #forth 09:42:26 --- join: Quartus (n=trailer@CPE0001023f6e4f-CM013349902843.cpe.net.cable.rogers.com) joined #forth 09:56:40 What am I missing here? I do this from the listener, it works. I put it in a file and "s" run-file, and I get an error. 09:56:42 SYMBOL: mysym 09:56:42 10 mysym set 09:56:53 10 mysym set 09:56:53 ^ 09:56:53 "Not a number" 09:57:03 The last 3 lines are from the run-file 10:00:57 --- join: virl (n=blah@vie-086-059-017-056.dsl.sil.at) joined #forth 10:01:14 k4jcw, is that Factor or something? 10:01:19 Yes, Factor. 10:01:53 No clue. I do know it's still in alpha. 10:02:11 Yea, but that's *very* basic. I'm pretty sure it's something I'm not understanding. 10:03:43 well, I come to late so may I ask you what you are talking about? 10:04:01 Getting an error that I don't understand the reason behind. 10:04:23 and it's an error with factor? 10:04:49 factor is throwing the error. I suspect it's a loose nut behind the keyboard :) 10:04:58 I'll repeat (it's short) 10:05:11 From the listener, I type 10:05:15 SYMBOL: mysym 10:05:19 10 mysym set 10:05:22 Works great. 10:05:43 Put it in a file (called 's'), and type "s" run-file, it throw an error after the 'set' "Not a number" 10:07:18 Has the earmarks of a bug. 10:07:27 ehm, lol. 10:08:35 well, for me it seems too to be a bug in factor 10:10:25 It's bloody frustrating, trying to find a Forth language that's actually stable under Linux and has the facilities I (think I) need. 10:10:48 isforth is fast, but lacks external library support, and has no support for sockets. 10:11:04 gforth has no support for sockets to speak of either, and lacks support for select(). 10:11:59 welcome to the "World Of THe Real" 10:12:04 Time to fire up your favourite editor and start coding. 10:12:52 I'm doing a test fixture for a product, and for the end user, I want something that amounts to a scripting language. Forth, in theory, is ideal for this. 10:13:00 *Finding* a forth to do it in seems to be another matter. 10:13:24 I'd hate to end up writing it in C, and faking it by implementing an incomplete stack language. 10:14:57 hehehehe 10:15:10 k4jcw: keep dreaming. I live in C 10:15:58 I've been pushing Forth for 15 years. And writing everything in C. You know how hard it is to find a contract where they want anything but? 10:16:32 k4jcw: not really, I've never been paid to program - but.. Respect, yeah. 10:19:17 k4jcw: insert a standard disclaimer about pushing your own product.. but for product testing at my workplace, we use tintin++. its a mud-scripting language, that i rigged to run against telnet servers. you can telnet to localhost, ssh out... its a very nice framework. 10:19:31 i use it to automate product rollouts across the wal-mart network. 10:19:46 Interesting. URL? 10:20:01 walmart can blowme 10:20:17 tintin.sourceforge.net 10:20:33 Oddly, yer still talking about ASCII text and interpreters 10:20:42 walmart is truely the great satan. but, if i dont make 7 grand posthaste, my tooth infection is going to kill me. 10:21:01 What does 'mud' mean? 10:21:21 multi-user-dungeon. technically, its a game scripting engine. i've used it since early 96. ;) 10:21:47 i dont like to switch tools lightly. build a better mousetrap, and all that. 10:22:05 It's TCP connections with interpreters on either end. 10:22:30 text in the middle 10:23:12 Interesting only in what is done or why.. Portability is usually not an issue, in this case 10:23:15 tintin's language is unique. instead of running from "top to bottom", most commands become resident in the interpreter. i like to think of it running from "left to right". you have to write sequence code in, its not "natural". 10:24:17 Like a lot of shit, the "protocol" is the issue (that folks want to ignore) 10:24:45 k4jcw, you could add sockets and select() to gforth easily I think. 10:25:41 I dunno about "easily". But to be honest, I'm more interested in writing the application than the infrastructure. 10:26:04 Sometimes you need to do a little of both. 10:26:14 gforth has ffi, too. 10:28:40 Ah. Here's the problem. Apparently I needed a "USING: namespaces" for 'set' to be happy. 10:29:59 --- quit: madwork ("?OUT OF DATA ERROR") 10:30:42 ah, ok, then it's not a bug I think 10:30:47 --- join: madwork (n=foo@derby.metrics.com) joined #forth 10:33:45 --- quit: PoppaVic ("Pulls the pin...") 10:39:27 --- quit: madwork ("?OUT OF DATA ERROR") 10:39:45 --- join: madwork (n=foo@derby.metrics.com) joined #forth 11:23:57 --- quit: virsys (Remote closed the connection) 11:40:03 k4jcw - gforth has decent FFI, plenty enough to support networking software that I've started on. FICL probably has the same. Both are stable. Probably both will require you to build up from C-style networking, which is like anything at least less annoying with Forth. 11:42:18 k4jcw - my MUD client reads from the server in a tight loop in its own task, with a mitigating task that waits on a poll() of stdin and a given fd, using a structure built partially at 'compile-time' and then finished when the mitigating task is started. The only cleverness lies in toggling PAUSE-on-type/emit 11:44:20 PoppaVic - yeah, MUDs are challenging in some ways simply because they've no protocol (and, e.g., networking libraries that want to pretend that sockets are the same as files, these fail on MUDs -- and on echo servers, and probably on a lot that I haven't had the misfortune to try them on). 12:15:44 --- quit: virl (Read error: 104 (Connection reset by peer)) 12:29:56 --- join: virl (n=blah@vie-086-059-017-040.dsl.sil.at) joined #forth 13:30:03 as far as I'm conserned the problem with doing MUDs with just direct telnet is that there's no way to know what is a prompt 13:30:19 you can guess 13:30:25 that's not important, though. 13:30:28 but chances are you'll be wrong sometimes 13:30:36 it bothers me 13:31:08 sometimes I totally miss things because the client thought part of it was a prompt, then replaced it with the real prompt that came later 13:31:22 it bothers you because you've a particular idea about how to handle what the MUD gives you. My own idea, to ignore that prompts even exist and instead to focus on making comfortable input, gives me no worries. 13:31:50 I don't think that's accurate 13:31:56 probably I can think this way because I've had experience with e.g. Emacs MUD clients that have mud-output and mud-input in seperate buffers. 13:32:07 it bothers me because the output of the game looks messed up sometimes, and I'm afraid I'll miss something important 13:32:40 have you ever written a mud client? 13:33:17 it'll only look messed up in two cases: one, that the mud assumes that your own input will provide the carriage return needed, and that it can therefore just send new text along without it (but then how does it handle giving you updates on normal things that will happen before you can give any commands anyway?). Two, that you go by what I just said about having a 'particular idea'. 13:34:07 Yes, I've written several. I remember worrying about the prompt, and I remember that my worry was in trying to handle it, to maintain it across input, to update it as new prompts came, and so on. My current strategy is to ignore it. 13:35:19 The user is quite capable of seeing the input as it passes by. Data-mining mud clients can do more than worry all the time about constantly prepending a particular string to the user's input display. 13:35:28 seeing the prompt, rather. 13:36:29 'sides, with vi-like input you don't have prompts anyway. 13:37:14 client-side prompts, rather. 13:50:07 I don't think we're talkinga bout the same thing 13:50:11 I use a client with a seperate input buffer 13:50:31 the problem is that there is no way for the client to tell what is a prompt, and what is the begining of a line from the server 13:50:41 it must guess based on _timing_ 13:50:57 and of course timing gets messed up if there's inconsistant lag on the connection 13:51:03 which seems to happen to me a lot 13:51:15 you don't seem to understand that I realize this, and that I repeatedly explain that I understand this, and that I repeatedly point out that this 'problem' stems from a seperate desire, and that there are multiple possible desires, and that you're choosing to have this particular problematic desire. 13:51:44 what's my problematic desire? 13:52:46 I won't answer that question. 13:53:48 oh come on, you've told me what I want/think a couple times already 13:54:04 why stop now when I might actually understand it? 13:54:28 I haven't stopped because I've a psychic determination that you've only now approached understanding. 14:07:27 I'm having trouble here. Why haven't you not stopped? :) 14:10:04 I won't answer that question >_< 14:10:29 it's disambiguated by my /stopping/, after all :-) 14:15:16 There's still plenty of ambigufication available. 14:16:06 I've faith in you. 14:16:46 Charming, but I don't see the relevance. 14:17:19 OK. 14:17:47 I expect this is one of those conversations I'd have to be either drunk, or a lot more European to appreciate. 14:18:21 heh 14:18:57 it's deep respect for questions, see, that leads me to not casually manufacture them where they aren't asked, and that leads me to explicitly refuse to answer them when I don't want to. 14:20:24 People probably think I'm rude to do so. People have too dim a view of harmless honest rudeness, I think. 14:20:28 "deep respect for questions". This is humour? 14:20:36 No. 14:21:20 So you're concerned with bolstering the self-esteem of questions? Do you also hold the door for grammar? Do you send flowers upon the death of a metaphor? 14:22:14 it's not a metaphor. 14:22:22 I didn't say it was. 14:23:00 I was just casually inquiring if you extend courtesies to any other broad concepts, or inanimate objects. 14:23:01 --- join: vatic (n=charlest@pool-162-83-254-201.ny5030.east.verizon.net) joined #forth 14:23:01 You did, with your question about self-esteem. Questions don't have 'self-esteem'. 14:23:32 They don't? But you can extend them 'deep respect'? 14:23:56 yes. I said so a minute ago, with "it's deep respect for questions, see, that leads me to --" 14:24:36 So 'casually manufacturing' questions would somehow be disrespectful to -- questions? 14:24:43 and -- to your restated 'casual inquiry' -- yes. Although my saying so probably doesn't help you understand what I mean about respect and questions. 14:25:33 I can guarantee that it doesn't. I'm sure if you just address all your questions with the appropriate honorific -- "sir", or "madam", appropriately, they'll understand that you respect them and be happy to carry on being questions regardless. 14:26:42 Now, if you'll excuse me, I have to go extend my gratitude to a punctuation mark. 14:27:06 Quartus - you know, argument to absurdity only suggests that a flaw exists somewhere -- it doesn't tell you by itself that the flaw exists in borrowed rhetoric vice your own. 14:28:04 The absurdity isn't in the argument. 14:33:09 --- quit: timlarson_ ("Leaving") 14:45:11 --- join: madgarden (n=madgarde@Toronto-HSE-ppp3708723.sympatico.ca) joined #forth 14:59:01 --- join: I440r (n=mark4@24-177-235-246.dhcp.gnvl.sc.charter.com) joined #forth 15:33:57 just released a bug vix version of isforth :) 15:45:36 --- quit: virl ("Leaving") 16:07:59 --- join: virsys (n=virsys@or-71-53-74-48.dhcp.embarqhsd.net) joined #forth 16:28:45 I440r, hi. 16:28:58 hi 16:29:08 err is it you thats the gentoo developer here ? 16:29:15 i cant remember who the heck it is lol 16:29:20 Heh, no. 16:29:35 I'm one of the Forth-in-C people. 16:29:36 dang whoisit ! 16:29:44 oh yea. heretic ! 16:29:45 lol 16:29:57 no wait.. thats me! 16:30:36 Heh, how did you become a heretic? 16:30:44 I thought all Forthers were heretics by nature. ;) 16:31:39 im a heretic because i write non trivial applications for linux using assembler or forth and NOT C 16:31:46 and i shun libc 16:32:07 Huh. 16:33:52 I was just reading John Doty on comp.lang.forth proclaiming the bleak future and subsequent death of Forth. It's entertaining; it echoes similar messages from 1987. Sure is taking its time dying. :) 16:34:43 We'll see who's dying with my FORTHBOTS conquer the galaxy! 16:34:54 lol 16:35:11 clf has a very poor signal to noise ratio lol 16:35:21 Only if you don't ignore a small handful of posters. 16:35:44 The most fatuous are often the most vocal. 16:39:23 There are three regular posters who do nothing but push the same button over and over (for years), and they get quite a few responses from people who haven't realized that they're shouting into the wind. Disregard all that cruft, and what remains is pretty good. 16:40:33 ER has some nice posts sometimes but usually they are just advertisements for swiftx 16:41:33 ER? 16:41:35 it's silly to sneer at her for answering questions, I440r, when she does exactly what people in here have done. 16:41:38 Elizabeth Rather. 16:41:38 eliz rather 16:41:41 Oh, right. 16:41:59 ayrnieu, no you misunderstand. i have nothing but respect for that lady 16:42:16 and i dont critisize her for plugging her companies products either lol 16:42:34 oh, sorry. 16:42:34 i wish she had been in here when CM was in here 16:42:38 Rather doesn't bring up her products often, but she's entirely justified in so doing. 16:42:58 what he said lol 16:44:01 I've read everything she's ever posted on c.l.f. Very little of it is advertising Forth, Inc. product . Some discusses historical versions of Forth, Inc. products, but there was a time when Forth was only from Forth, Inc. so that makes sense. 16:45:08 ive seen very little that isnt a plug myself 16:45:16 but like you said she is definatly entitled lol 16:45:32 It's all archived if you're interested in seeing what's actually there. 16:45:58 wheres futhin ? 17:00:38 --- join: crc (n=crc@pdpc/supporter/active/crc) joined #forth 17:00:38 --- mode: ChanServ set +o crc 17:13:46 I440r: futhin hangs out in #retro more than anywhere else, I think. 17:13:54 don't recall seeing him here for quite a while 17:14:02 so, someone in ##C wants to change provided floating-point operations to operations that use a fixed-point representation of the numbers -- internally, without changing any of the (game) software that uses floating points, to compile them for an embedded, FPU-less system. What would be a relatively simple matter in Forth of changing some low-level FP words and then loading the game source, testing them for still-workingness, adapt them some m 17:15:02 "omg you want to change a C type? That's crazy talk! Crazy!" -- meanwhile the person is explaining how this should be transparent and painless, by way of recompiling parts of libgcc. 17:17:17 you know, i almost like being in an out-of-place like this. where else can i hear sacrelige, and watch everyone nod their heads? :) 17:17:33 sacrelige? 17:17:55 i'm a C programmer. the whole idea of what you're talking about... makes my skin crawl. ;) 17:18:26 lol 17:18:28 *shrug*, the person doing this is also a C programmer. 17:19:15 fpuless systems are neat, but i prefer ones with FPU ops you can trap and emulate, instead of writing it into the compiler. YMMV, however. a C compiler that can compile FPU-emulation code sounds neat. 17:19:39 well, that's what software floating point is. 17:20:00 * juri_ shudders. 17:20:01 but this person doesn't like the provided emulation, and wants to write her own with fixed-point. 17:21:00 to what purpose? the ability to change the precision arbitrarily? 17:21:22 no. Just to make these games work a bit faster. 17:21:28 juri_, why are you still here? :P 17:21:42 anyone is welcome 17:21:57 specially c cvoders... we need tro convert them 17:22:03 ot: i like seeing a different viewpoint on things. i've actually been facinated with forth, from a far far distance. :) 17:22:03 not alienate :P 17:22:21 I440r, juri is my friend actually :) 17:22:26 :) 17:23:09 OT isnt the only of my friends whos been sucked into forth. and the forth people i've known are all pretty smart, so i'm here to 'bask in the glow'. ;) 17:23:12 juri_, forth has most of those cutting edge compute science things everyone wants, but it is in the most minimal design. 17:23:40 juri_, btw, nothing is off topic here 17:23:56 i find it amusing that you can do closures and lambdas in a language that has no type checking. (no typing what-so-ever, just implicit that the programmer gets to keep track of) 17:24:32 I4: i'll try to stay on topic anyways. i'm a guest, after all. :) 17:24:42 no you not 17:24:47 plus, this way i get to bug OT. :P 17:24:56 i mean it. everyone is welcome here 17:25:03 yea. we like fresh blood 17:25:14 * OrngeTide sucks juri's blood 17:25:34 when i started this channel my prime directive whas rm -rf anal retention 17:25:40 I'd expect C programmers to have a little more confidence about certain aspects of forths, anyway. 17:25:55 nobody OWNS this channel - its community property 17:26:11 ("what, gforth doesn't have a networking library?!") 17:26:17 i own the community. so indirectly i own this channel. 17:26:36 OrngeTide - you've that backwards, I'm pretty sure. 17:26:39 ehhe 17:26:45 * crc notes that futhin owns the channel from freenode's perspective.... 17:26:45 oh, and i got to do a little pushing of my own tools earlier. i like doing that. :P 17:27:02 that one guy made a cute wiki/cgi in gforth... 17:27:17 who? futhin? 17:27:18 juri_, you should write a forth. 17:27:21 i forget. 17:27:48 the easiest way for someone to learn forth is to write thier own compiler. it really is fairly easy to write a basic forth. 17:28:04 you can usually write a compiler for forth before even understanding CREATE DOES> 17:28:13 OT: maybe later in my carreer. i'm still working on turning tintin++ into a unique language. :) 17:28:22 juri - a la Pike? 17:28:33 Pike? whats that? 17:28:47 i like expect better than tintin. but i'm a horrible mud cheater. 17:29:05 i've never delt with a non-sequential language, other than VHDL. 17:29:16 juri - http://en.wikipedia.org/wiki/Pike_programming_language 17:29:39 OT: but.. but.. but.. tintin works against the wal-mart network. i'm getting paid to write tintin script as we speak. 17:29:59 expect is simple, but it is so easy to create ambigious programs in it 17:30:12 juri_, that's neat! 17:31:29 earlier versions of tintin seperated commands with semicolons. if you ended every line with a semicolon, the engine would send a carriage return to the remote end. try debugging that. :) 17:31:42 expect as in query/expect ? 17:32:29 expect as that tcl thing. "expect" and "send" are the main commands. 17:32:32 I440r - http://en.wikipedia.org/wiki/Expect 17:33:11 there is a library for perl to do the same thing. you could probably implement some framework ontop of gforth or isforth to do it too. 17:33:20 OT: i so much like tintin better t han expect. expect is sequential. you have to write sequentialism into tintin explicitly. 17:34:11 well expect is good if you need to pass through a large complicated system in a specific way. where as tintin you can basically use it to make text-based protocols. 17:34:20 like it's not hard to write an HTTP client in tintin 17:34:34 but doing that in expect means you'll be writing a bunch of loop statements and junk 17:35:26 i don't get scripting in irssi. you should port tintin to irssi 17:35:49 I disagree that writing a Forth is a good way to learn Forth. Good way to understand how a Forth compiler works, maybe, but it won't make you a better Forth programmer. 17:35:50 i was actually thinking of porting tintin to its own dedicated serial hardware. 17:36:01 juri_, did i show you daimonin.net ? 17:36:21 Quartus, it helps you understand what the dictionary actually is. 17:36:46 Sure. Helps you understand the components of a Forth, which is not the same thing as teaching you to write good Forth. 17:37:04 i think it compliments a forth education. 17:37:26 Any moderately-competent programmer can write a Forth compiler. It takes a lot more than that to write good Forth. 17:37:35 exactly. 17:37:43 that's why it's a good step for newbies. 17:37:52 you understand how backwards that sounds. 17:37:56 i write terrible forth code. but i don't care. 17:38:03 It's an irrelevant step for newbies. You can learn Forth without ever implementing a compiler. 17:38:18 sure you can learn c++ without ever learning c too. 17:38:27 Quartus, not very many ppl can produce good code in ANY language 17:38:32 Apples and oranges. You can certainly learn C++ without writing a C or C++ compiler. 17:38:34 but again i'd recommend it as a rewarding exercise. 17:38:44 i wonder if i can impliment a C compiler in tintin... 17:38:56 yes. nobody would recommend writing a c compielr to learn c. it's just too complex. 17:39:17 Complex or not, writing one would not teach you how to write good C. 17:39:30 but a poorly implement forth compiler takes a weekend to do. and it forces you to read some basic specs and have a basic understanding of the forth components. 17:39:48 it helps make concepts in forth click in easier later when you actually go and implement real code. 17:40:04 It may be the way you yourself approached Forth, but as you admit, you're not proud of your Forth code. 17:40:07 well writing a c compiler did teach me how to write better c code... 17:40:27 Quartus, i'm not proud of any code i write. i think elegance is overrated. 17:40:38 infact elegance is subjective. 17:40:51 my code is elegant because it does not attempt to be elegant. 17:40:58 Whether or not you think learning to code better is worth doing, if you rate yourself as a poor coder, then perhaps the approach you suggest isn't optimal, even for you. 17:41:02 the the complexity of a C compiler really depends on the underlying machine. writing 8 bit C compilers isnt that hard. getting them to self host.. that takes a bit more work. 17:41:29 not coding optimal is the best technique for coding though. 17:42:05 I'm not talking about optimal coding, despite using the word 'optimal' and 'coder' in the same sentence. 17:42:11 juri_, yea. the parser is a bit of work though, unless you've written a dozen parsers before 17:42:34 Quartus, well i don't understand what you are refering to then. and it's likely you don't understand me either. 17:43:24 The approach you suggest -- writing a Forth to learn Forth -- didn't work so well for you, by your own admission. 17:43:33 i never said that. 17:43:54 Perhaps I misunderstood you when you said "i write terrible forth code." 17:44:10 now this is why i'm here. i've never seen OT get served before. :D 17:45:09 I think implementing a Forth before learning the language is in fact harmful to a newbie. Makes him think that Forth works in one implementation-specific way. 17:45:28 Quartus, yes. i said I write terrible code. but i don't care. 17:45:37 Yes, you did. 17:46:42 and why would you assume that the approach i took is why i write terrible code, if i already stated that i intentionally write terrible code? 17:47:28 Where to start. Are you suggesting that writing terrible code should be the end-goal of somebody who wants to learn Forth? 17:47:47 if you subscribe to my philosophy then you already write terrible code in other languages. 17:48:17 i pretty much program like Rob Pike. our styles are almost identical. 17:48:22 Ok. So when you're able to define 'terrible code', let me know what special meaning you've assigned the phrase and we can discuss it further. 17:48:56 well the word 'terrible' is nearly always subjective. (perhaps it is always subjective, I'm not certain). 17:49:22 Yes, most people would associate it with 'bad', 'amateurish', and 'incompetent'. 17:49:49 it means that i find that most people find my programming techniques 'terrible', but I obviously find them satisfactory else I would not continue doing it this way. 17:50:14 yes. all those words have been used to describe both me and rob pike. 17:50:33 they are obviously wrong about rob pike. and they may or may not be correct about me. 17:51:07 point being, if you have confidence in your profession/hobby then how others judge you is irrellevant. 17:52:56 sometimes my forth words are a little too long. and sometimes i don't leverage the dictionary when i could have. but if i can still dust if off and change the program around after a few years then apparently it is still a good program, despite how others may judge it. 17:54:46 also i like StrongForth which is another reason my opinions probably don't count much here :) 17:55:00 Your private terminology notwithstanding, I've known quite a few folks who've implemented their own Forths yet have no idea how to use it effectively. Knowing how the internals work isn't required for learning how to write effective Forth. Writing a Forth compiler means you learn how to write a Forth compiler; that's it. 17:56:20 i heard something from a friend of mine about forth being a language idealy designed for a 'dual stack' machine. would anyone like to talk about this, instead of OT's coding style? ;) 17:57:18 not exactly private terminolgy. it's english, and the terms were used precisely enough for a normal person to understand. 17:57:26 Forth has two stacks, but it wasn't designed for a two-stack machine. Moore's early Forths had one stack, he added a second one later. 17:58:42 Quartus, i agree that knowing how to write a forth system won't teach you forth. you still need to learn forth after writing your compiler. but hopefully you can learn some lessons from your experience that will help you ask the right questions when you are learning the language. 17:58:45 I'd have to check my notes, but I seem to recall the earliest incarnation having a one-deep single stack. 17:59:31 in the end you could be a great forth programmer, but never dug into the forth compiler. i suspect some day every great forth coder digs into the internals, eventually. 17:59:38 OrngeTide, it may raise some questions, but it'll also confuse a beginner about what's internal and what's external, and what can be relied on to be in every Forth, and what can't. 18:00:09 well nothing can be relied on to be in every forth. i certainly don't use ANS forths. 18:00:30 heck i don't even have PICK 18:01:23 It would be a strange beginner who wanted to learn only one specific, peculiar implementation of Forth, and even supposing there are such people, they'd be studying that one Forth, and not writing their own different one. 18:01:45 oh i just wrote my own different one. (several actually) 18:01:53 i guess i'm a strange beginner. GPL zealot. so probably gforth. :) 18:02:10 A license isn't a Forth. 18:02:15 gforth is impure, but it is a reasonable compromise. 18:02:41 externally it behaves like forth. so that is probably all that matters. 18:02:51 and gforth is easy to install, another mark in it's favor. 18:03:31 and gforth has traditional multitasking, some useful and some inspiring libraries, and decent FFI. 18:04:45 bigForth is probably more inspiring, it has opengl bindings iirc. but it's not easy to install 18:05:37 I don't know what you mean by impure, though. It's ANS; I do what I want!, at least in the internals that I guess you mean. I've still implemented recurse; &c in it, although this is pretty easy -- easier than the implementation-specific way I used. 18:06:30 bigForth had graphical bindings that worked on Windows and unix. Tk, maybe. 18:06:32 Doesn't it come with RECURSE? 18:06:44 well gforth is written in C instead of native. and gforth can only be compiled in gcc. 18:06:54 RECURSE; -- optimizingly tail-recursive 18:07:16 so right off, gforth is written in gcc. If you look a bit closer, it's written in /bizarre/. 18:07:26 Oh. I'd call that tail-recurse instead of just adding a subtle punctuation. Ok. 18:07:26 ahha. true 18:07:55 i'd call it RECURSE; because it's a word to use instead of ; 18:08:37 Quartus - I actually called it RECUR; , IIRC. It seems a bit of a loss to name my neat potentially low-level Forth' words something that's much longer than other basic words. 18:09:16 I judge names by clarity and distinctiveness, not length. 18:09:24 I haven't cared about the functionality recently, though. Probably I'd just override RECURSE 18:09:41 : dist ( x y -- ) dup * swap dup * + isqrt RECURSE; or am I completely off 18:09:53 I like the rule-of-thumb that names should be able to be read over a telephone and still be understood. 18:09:56 none of : ; + - * / = <> are clear, but they're distinct, short, and familiar. 18:10:28 well ANS had names defined for all these. 18:10:56 By clear and distinct, I mean that RECURSE; could easily be confused for 'RECURSE ;', even accidentally entered as such. 18:11:01 OrngeTide - : dist ( x y -- ) square swap square + isqrt recurse ; -- but I don't know what that's supposed to do. 18:11:47 Quartus - agreed. Somehow, I never actually used the word very much. I was just pleased with it. 18:11:48 ayrnieu, well i don't thing SQUARE is in ANS. but sure. 18:12:13 OrngeTide - who cares? It's obvious, and you can say : square dup * ; right before if you must. It certainly makes for a clearer definition. 18:12:28 ayrnieu, isn't what i did the hypotenuse ? 18:12:32 --- join: Quiznos (i=1000@69-168-231-199.bflony.adelphia.net) joined #forth 18:12:42 I don't know what ISQRT is 18:12:53 integer square root 18:12:54 guess 18:13:18 int isqrt( n) 18:13:57 What is 'dist' supposed to do? It appears to recurse into itself after converting two inputs into one output, which means it'll loop until it consumes all stack elements and then crash. 18:15:02 : hypotenuse ( rx ry -- r ) fsquare fswap fsquare f+ fsqrt ; f\ ffffffff 18:15:41 : sqrt-nearer 2dup / over - 2 / ; : sqrt-again sqrt-nearer dup 0= if drop rdrop then + recurse; : isqrt ( n -- n ) 1 isqrt-again nip ; .. or something like that. 18:16:06 Quartus, i didn't mean to put recurse in there. 18:16:20 * juri_ stares. 18:16:24 i mean to put it in the defintion for isqrt 18:16:24 nip it; nip it in the bud! 18:16:57 actually i was thinking recurse would just be tail call, rather than recurse into itself. 18:17:14 since it's recurse into itself then i'd prefer tail-recurse instead of recurse; 18:17:29 so i agree with Quartus for a change 18:17:53 ayrnieu, see i didn't call it hypotenuse since i cannot reliable spell that :) 18:18:05 i'm happy with dist or distance :) 18:18:06 Why don't you just 0= ABORT" in SQRT-AGAIN ? 18:19:03 ayrnieu, because i didn't want to abort 18:20:43 although i think i do like abort" better. 18:20:52 hrm.. 18:21:28 i just have to test it before i do a sqrt so i can handle the special case. no big deal. 18:21:38 if you make it clear where the exceptional case gets tested, you can easily change it depending on upper-echelon needs 18:21:58 well it was apparently obvious to you. 18:22:45 floating point sqrts are more fun anyways. ehhe 18:24:57 but you might get better resolution with normal numerator and denominator 18:25:04 as whole numbers 18:25:15 liek 22/7 for PI 18:25:35 i've forgotten the next pair for PI that has better resolution 18:25:47 355/113 18:25:51 yea that's it 18:25:54 ty' 18:26:16 it's all related to continued fractions 18:26:38 and it's simple enough anyway to start from a known fractional value and generate a corresponding fraction. 18:26:49 yep 18:26:57 multiply by ten, then divide by ten, and then simplify :-) 18:27:08 amaazing. 18:27:12 10 is too small to be "productive" :) 18:27:22 beneficial 18:42:43 What happend to the floor show? 18:43:04 What happend to all the "... but I ment this..." 18:43:33 I'm bound to be up a few more hours, I need entertainment people! :) 18:43:47 wrong channel :) join ##Linux 18:44:03 ah 18:44:18 there's a show now if you hurry 18:44:24 Shall we discuss the benifits of... 18:44:28 dup swap drop. 18:44:31 http://bash.org/?9322 18:44:34 lol 18:44:42 cycle wastage 18:44:45 THE MOST HILARIOUS EVER 18:45:10 : waste dup swap drop ; : decompose rot rot rot ; : confuse swap swap swap swap swap swap swap swap swap swap swap ; 18:45:56 waste is not a waste, its keeping the copy and droping the original. Happens all the time in the real world. 18:46:11 well, I suppose the real world is a waste. 18:47:23 : confuser ( n "name" -- ) >R : R> 0 ?do postpone swap loop postpone ; ; 1000 rand confuser confuse 18:47:59 : optimized-confuser 1 and confuser ; 18:48:11 lol 18:56:09 heh 19:02:43 --- quit: uiuiuiu (Remote closed the connection) 19:02:46 --- join: uiuiuiu (i=ian@dslb-084-056-232-222.pools.arcor-ip.net) joined #forth 19:03:00 /ui/{3} 19:23:41 --- quit: I440r ("Leaving") 19:29:32 --- join: richard_ (n=richard@adsl-69-155-177-154.dsl.lgvwtx.swbell.net) joined #forth 19:30:09 --- nick: richard_ -> snowrichard 19:30:37 --- quit: snowrichard (Client Quit) 19:33:04 --- join: snoopy_1711 (i=snoopy_1@dslb-084-058-142-192.pools.arcor-ip.net) joined #forth 19:40:21 --- join: snowrichard (n=richard@adsl-69-155-177-154.dsl.lgvwtx.swbell.net) joined #forth 19:40:53 --- quit: Snoopy42 (Read error: 145 (Connection timed out)) 19:40:57 --- nick: snoopy_1711 -> Snoopy42 19:43:49 hi snoopy42 19:45:30 --- quit: snowrichard (Remote closed the connection) 20:01:35 --- join: newbcoder (n=newbcode@unaffiliated/slowcode) joined #forth 20:01:38 how does forth and scheme compare? 20:02:34 Forth is probably a bit more low-level. 20:02:34 --- join: snowrichard (n=richard@adsl-69-155-177-154.dsl.lgvwtx.swbell.net) joined #forth 20:02:41 Anything specific you're thinking about? 20:03:33 what book is the equivalent of structure & interpretation of computer programs for forth? 20:04:22 I'm not sure if there is any single one. There were some Forth books in the 80s, can't remember the names of the most famous ones. 20:04:50 But I'm not sure if that matters - Forth has a habit of avoiding standards. 20:05:22 You could learn the basics from any tutorial, and then specialise in whichever Forth system you're using. 20:05:48 newbcoder - none. But try Starting Forth, and Thinking Forth. 20:06:42 The former you can find online in a manner. The second you can find online. I also like Forth.com's two books 20:08:43 --- quit: vatic ("Chatzilla 0.9.71 [Firefox 1.5.0.4/2006050817]") 20:09:31 hi Robert 20:11:00 Hi, snowrichard 20:12:54 hey 20:14:31 can you test xmms stream at http://rssnow.is-a-geek.net (just changed hostname) 20:14:46 sorry port 8000 20:15:25 newbcoder: just piping in here an idea. You might need a "structures" or "Design Patterns" book for languages like Scheme, Lisp, or an equiv for C type languages, but the forth source would be the only thing that would describe how that particular forth does things. 20:15:50 snowrichard: It works 20:16:01 thanks 20:16:20 I'm moving soon and needed to set up dynamic IP address 20:16:22 from what I've read 20:16:32 (all the claims that forth doesn't need OSes) 20:16:37 it should be possible to write OS level code in forth? 20:16:45 (this appears to be something I haven't seen done yet in scheme) 20:16:57 Yes. 20:16:59 newbcoder: I liken it to the difference between Collage Computer Sci and honest production code. 20:17:48 production code needs to be profitable, more bang for the buck. CompSCI can afford to be lofty. 20:17:48 my college classes were ages ago on IBM mainframe (cobol, fortran, PL/I, RPG, assembler) 20:18:19 I've got a simulated mainframe on this linux system :) 20:18:43 snowrichard: you do? :) that's cool. 20:18:52 run mvs38J 20:20:34 You can also install simh, and be an IBM 1401, PDP-11, PDP-8, Altair 8080, and a host of others. http://simh.trailing-edge.com/ 20:20:47 i've got simh for vax 20:20:50 yes 20:20:50 AH I got it. Maybe "Threaded Interpretive Languages" might be our design patterns. 20:20:59 I read that 20:21:06 its based on Z80 20:21:14 from Byte Books 20:21:41 ya but it's the same concepts across most chips. 20:22:40 I could probably code one for the 370 on the emulator ;) 20:22:48 Oh and what was the name of that old Forth magazine... 20:22:56 :) 20:22:58 Forth Dimensions 20:23:00 ya 20:23:03 I have a stack of those here. 20:23:08 cool. 20:23:24 I wish someone would give me an F21 board to play with. 20:24:11 snowrichard: Are you emuloting a vax, or running simh on one? 20:24:21 on occasion, this chat serves as our Structures and Design patterns for those brave enough to put there "brilliance" up for all to pick the snot out of. 20:24:24 linux emulating vax with simh 20:25:01 Ah... 20:25:05 I have the hobbyist VMS disk 20:25:08 I got a packet yesterday :) 20:25:26 With a Commodore datasette, some floppies with C64 programs and code, and a 512kB RAM unit. 20:25:27 Was it from localhost? 20:25:42 k4jcw: No, down from .de 20:25:58 Using avian carrier. 20:26:15 I've got a C64 on eBay I'm trying to dump. Along with a MW-something printer interface, and a 1541 drive. Alas, no video seems to come from the C64. 20:26:26 Starting bid is only $0.99! 20:26:39 Too bad you're not in Hamburg. 20:26:42 Yah 20:26:51 Or I know someone who'd be happy to help you. 20:27:02 newbcoder: I might suggest http://www.colorforth.com/HOPL.html if you havn't read it already, for the early years of how and why forth came to be 20:27:13 I've got a RCA Cosmac VIP-711 up there, too. It's gone through the ceiling. 20:27:32 k4jcw: Hmm... Using an 1802? 20:27:38 Yep. 20:27:48 And a 1802 CPU board. CDP18S603A. 20:27:48 k4jcw: I got a tube of those on a flea market last year :) 20:27:53 Sweet! 20:28:02 Which flavor? 20:29:09 CDP1802E 20:29:50 Don't see those too often. 20:29:52 Haven't done anything with them, but they seem sweet. And I've always been a fan of the Voyager probes. ;) 20:30:01 CDP1802D, CDP1802CE, and CDP1802ACE's are pretty common. 20:30:05 Well, I think they've been obsolete since before I was born. 20:30:16 You'd be surprised. 20:30:22 Intersil still makes them. 20:30:33 Hehe, cool. Even the huge DIPs? 20:30:37 I picked up some parts as samples. "Retail" is around $80/ea. 20:30:41 Yep. 20:30:57 There's a Forth for the 1802, also. 20:31:01 Yeah, I saw that. 20:31:08 $80 for a 70s microprocessor? 20:31:43 http://cosmacelf.com/ This is a good site, with lots of docs. 20:31:58 http://www.elf-emulation.com/ And this. 20:32:08 Mike Riley has written a complete little OS for the 1802. 20:32:19 Cool, I should build a system with one of these some day. 20:32:32 http://www.sparetimegizmos.com/Hardware/Elf2K.htm I've got two of these. 20:33:28 You can use any SRAMs you like, but if you want to go purist, I have several tubes of CDP1822CE parts. 20:33:44 I saw there were video chips for them as well. 20:33:52 I have a few of those, also. 20:34:06 CDP1861s are the most common. And then the CDP1871 (NTSC or PAL) 20:34:22 sry, '69's and 70's. 20:34:22 I'm not much of a purist, I'm afraid. I'd happily attach a blue LED just to cross-breed the centuries. ;) 20:34:47 I have a nixie clock here I built that's 1802 based. 20:35:09 Hmm... how complex is the memory interface circuitry? 20:35:20 Cool. Got some nixie tubes here. 20:35:34 http://tinymicros.com/gallery/1802Nixie 20:35:43 And I'm resting my feet on 250 vacuum tubes. ;) 20:35:44 It's pretty straight forward stuff. 20:36:05 Take a look at this: http://jcwren.com/media/cdp18s603a.pdf 20:38:01 Thanks, looks interesting. 20:38:02 You can get by with a couple simple gate packages. But to be honest, I usually just program a PAL22V10. I've got tubes of those, and it's a lot easier to fix a PAL than rewire. 20:38:28 --- quit: snowrichard ("Leaving") 20:38:35 I got some GAL chips, but I haven't bothered making a programmer. Same goes for all these (E)EPROMs. 20:39:38 The 1802 datasheets on cosmacelf.com also have some pretty basic clock and decoding circuits in there. All depends if you want to single step/load/store or just run out of ROM. My clock is very simplistic, and I think has only an address decoder. Something with load/store/examine and single step has a dozen or so gates. 20:40:31 But I'll tell you this: Forth on a 1802 is not fast. 2mhz clock to start with, an architecture that's nifty but quirky, and no native stack instructions. Not fast. 20:41:10 I don't think any 1802 users in 2006 are after speed. 20:41:29 Not quite sure what I'd do with it... unfortunately I'm a better junk collector than engineer. :) 20:41:30 Not really. 20:41:38 I hear ya. 20:42:37 sm0ysr, btw. 20:43:23 ah, cool. 20:43:30 HF capable? 20:43:39 Yep. 20:43:52 CW on 80m only, currently. 20:44:02 100W on 80 through 10, although 10's a little iffy on that antenna. 20:44:20 I've never been any good at CW :( 20:44:30 --- part: newbcoder left #forth 20:44:58 I'm not that good either, but I like it somehow. The simplicity of it. 20:45:23 "carrier chopping", as a local SSB fan keeps refering to it. 20:46:25 I like the idea of it. I'm not for removing from licensing, and I learned enough to pass. But I'm just not any good at it. I also don't spend enough time at it. 20:47:09 I haven't done so either, the last couple of years. 20:48:12 Hm, got an EEPROM programmer cheap ($1) a while ago, but it never powered up (surprise...). Should try to investigate that. 20:51:38 --- join: snowrichard (n=richard@adsl-69-155-177-154.dsl.lgvwtx.swbell.net) joined #forth 20:51:55 * Robert finds a 6802 while looking for the programmer. 20:52:29 Another fun part. 20:52:51 Never actually used any. How similar is it to the 6502? 20:53:14 Everything but pin-compatible? 20:53:33 Actually, I think they are pin compatible, except for reset or something. 20:54:03 They very similiar, but the 6800 has 2 16 bit registers, X & Y, whereas those are 8 bits on the 6502. 20:54:29 The 6800 has a full 16 bit stack pointer, and two accumulators, while the 6502 has an 8 bit stack pointer and one accumulator. 20:54:47 What's the difference between the 6800 and the 6802? 20:54:50 But the zero page modes and basic arithmetics and booleans are all the same. 20:55:06 6802 has a better clock circuit. Requires less external components, IIRC. 20:55:12 Ah. 20:55:13 It may have 128 bytes of RAM on-chip, too. 20:55:18 Interesting. 20:55:27 Lots of toys here. :) 20:55:31 --- quit: snowrichard (Client Quit) 20:57:59 Yea. The 6802 has 128 bytes of on-chip RAM. Not sure about the improved clocking circuitry. 21:01:53 --- quit: tathi ("leaving") 21:01:57 The fun one is a 6809. I actually bought a bunch of 68B09s and 68xx parts to build a few systems. 21:02:18 And some 6502 and 65xx family parts. And like a great many of projects, languish away in tubes in the basement. 21:03:36 bcc is a tiny C compiler for 6809. 21:03:42 its fun to hack on. 21:04:00 k4jcw: Ah.. 21:04:07 * Robert found the programmer, and attempts to check it out. 21:04:12 I wanted to build a system with 1MB of memory, a CF disk, and run OS/9. 21:04:38 I haven't messed with bcc, juri_. How tiny is it? 21:05:25 Hm, seems to be a NiCd pack in there... what's their normal life span? 21:05:37 (i.e. is it a good idea to attempt charging them...) 21:05:41 Can't hurt. 21:05:57 I'd rather not have a mouthfull of boiling cadmium, but OK. 21:06:01 It's liable to not charge, but it shouldn't damage anything. 21:06:21 Why does it have a battery? Portable? 21:07:59 Yeah. 21:08:01 Cadmium melts at something in excess of 300 degrees C, so I think you're pretty safe. :) 21:08:08 But don't hold it in your mouth. 21:08:23 Quartus: I don't trust myself not to accidentally heat thing to 300C. 21:08:32 In case someone wants to burn an EPROM in the woods, or something. 21:08:39 I'd like to see the power supply that can push enough current through it to heat it to 300C. 21:08:44 Well, charge it, don't set it on fire. 21:09:17 I'm not being entirely serious there. ;) Was mostly worried about damage to surrounding systems. 21:09:26 Seems to be charging now. 21:09:33 * Robert hopes this works. 21:09:34 It's a NiCd. Your worst case is that it won't hold the charge. 21:10:09 To be honest, it's probably shot. Old chemixtry nicads don't like to be deep discharged, and will form whiskers internally. 21:10:12 I have dozens of EEPROMs and microprocessors just waiting to be experimented with. 21:10:31 Sometimes you can blow the whiskers out by charging at a high current for a very short time. But generally it's just easier to replace the pack. 21:10:49 I'll see what happens. 21:11:06 Worst case: I wasted a dollar. 21:11:18 Best case: I got some $100 tool for $1. :) 21:11:39 Nah. I imagine it's got a ZIF socket on it, and that's worth a dollar, easy. 21:11:51 Yeah. 21:12:05 And some good connectors, etc. 21:12:08 Which reminds me. I've got a bag of ZIF sockets I need to put on eBay. I wonder where they went... 21:12:09 Metal case. 21:12:16 Oh, neat. 21:17:29 Hm, current loop interface. How modern. 21:17:38 heh 21:18:08 (talking about that board you linked me to, not the programmer :) 21:19:33 Well, 1986. 20ma was used for a long time in industrial equipment. 21:19:54 I read so in the history books, yeah. 21:44:25 3 (int) libc MD5Data MD5Data ( c-addr u buf -- z-addr ) MD5_DIGEST_STRING_LENGTH constant #:md5 create :md5 #:md5 allot : md5 ( c-addr1 u1 -- c-addr2 u2 ) :md5 MD5Data #:md5 ; 21:46:43 cadmium melts at 321.07 degC. Not bad. 21:47:37 * Robert checks the temperature. 21:47:59 Ah, just about 250C... so I guess it'll be fine. 21:50:51 Well, foo. The cheesecake didn't crack, but the blueberry puree didn't properly marbleize in. It's more like chunks of puree on top. 22:09:44 What's the MD5 code under, ayrnieu? Linux? 22:10:29 OpenBSD. 22:11:46 That's some funky naming, with the : and #: prefixes. 22:11:54 Quite difficult to read. 22:12:36 :buffer comes from Thinking Forth , #:buffer-length occured to me. 22:12:48 Thinking Forth has advice that bad in it? 22:13:02 It has a list of naming conventions. 22:14:31 I don't remember that one. I'll have to look at the list. 22:14:59 Oh there it is. name of buffer :name 22:15:03 Yuck! 22:16:23 As to the second one, you' 22:16:40 you've already got MD5_DIGEST_STRING_LENGTH as a constant from libc. Why alias it to another name? 22:17:22 better nomenclature, should I need to repeat it :-) 22:18:28 Since you return u2 from md5 on every call, you should never need to repeat it. 23:13:45 Those ugly one-character-prefix naming ideas must stem from the old 3-char&len name restrictions. 23:59:59 --- log: ended forth/06.07.20