00:00:00 --- log: started forth/07.01.10 00:13:52 --- join: ecraven (n=nex@eutyche.swe.uni-linz.ac.at) joined #forth 00:46:23 --- join: Cheery (n=Cheery@a81-197-54-146.elisa-laajakaista.fi) joined #forth 01:30:41 --- join: crest_ (n=crest@p5489517C.dip.t-dialin.net) joined #forth 01:42:32 --- quit: Crest (Read error: 110 (Connection timed out)) 04:23:34 --- log: started forth/07.01.10 04:23:34 --- join: clog (n=nef@bespin.org) joined #forth 04:23:34 --- topic: 'Welcome to #forth. We discuss the Forth programming language and a variety of technical subjects. Introduction: http://tinyurl.com/kvawv | Starting Forth: http://tinyurl.com/rm7pq | Thinking Forth: http://tinyurl.com/nsy4j | Gforth compiler: http://tinyurl.com/s8uho | ANS/ISO Forth Standard doc: http://tinyurl.com/nx7dx | http://quartus.net/search | Paste: http://forth.pastebin.ca' 04:23:34 --- topic: set by Quartus on [Sat Nov 25 22:45:21 2006] 04:23:34 --- names: list (clog arke_ crest_ Cheery ecraven I440r__ grub_booter X-Scale timlarson Snoopy42 virsys Zarutian Shain Baughn @crc nighty Raystm2 absentia ayrnieu madwork @Quartus @Quartus_ @slava TreyB madgarden warpzero cmeme ccfg) 04:55:55 --- nick: arke_ -> arke 04:56:02 --- mode: ChanServ set +o arke 05:38:44 --- join: zpg (n=user@81-179-127-214.dsl.pipex.com) joined #forth 05:56:03 --- join: timlarson_ (n=timlarso@65.116.199.19) joined #forth 06:05:27 --- join: Ray_work (n=Raystm2@199.227.227.26) joined #forth 06:05:36 Afternoon (morning), Ray 06:08:22 Good morning. :) 06:08:53 What's going on this fine day? 06:09:33 Not too much, though you're spot on about the weather. 06:09:52 Excellent. Love a pretty day. 06:10:14 Nice here too. Starting out a bit nippy, gonna be great. 06:11:13 :) 06:15:53 --- quit: X-Scale () 06:22:01 --- nick: Raystm2 -> nanstm 06:22:22 there's my sweetie. :) 06:23:34 heh. 06:58:57 --- quit: ecraven ("bbl") 07:24:37 --- quit: I440r__ () 07:29:51 --- join: JasonWoof (n=jason@c-71-192-26-248.hsd1.ma.comcast.net) joined #forth 07:29:51 --- mode: ChanServ set +o JasonWoof 07:31:58 hi Jason. 07:46:29 hi JasonWoof. 07:46:40 Hey. 07:46:57 busy morning already here at wheels-r-us. 07:47:01 Hey Quartus :) 07:47:54 Q 07:48:36 Quartus: are you the Q from StarTrek NG? 07:48:50 I hope not. 07:49:03 Who's that? Perhaps it's telling, but "Q" in that context is David Llewelyn for me. 07:49:17 Wait, so it is. :) 07:49:28 Now it's Cleese. 07:49:46 *Desmond Llewelyn, even. 07:49:52 sure. :) 07:49:57 hi zpg, Ray_work 07:51:01 howdy. 07:51:13 breakfast accomplished! 07:51:48 Well done sir! 07:51:57 zpg, John Delancie playing a semi-omnipotent fop. 07:52:53 And that's not you? /me ducks for cover. :) 07:53:04 Hope your in a teaseable mood. 07:53:09 07:53:09 Quartus: ah okay, his face looks vaguely familiar. 07:53:22 I hope not. :) 07:53:52 Quartus: thanks again for the late morning conversation, interesting stuff. 07:54:44 Sure, no problem. 07:59:37 Big plans for the day, gentilemen? 07:59:45 Calling me a gentile? 07:59:53 My rabbi will be contacting you shortly. 08:00:29 cool. I always wanted physical contact with a rabbi, these Catholic preists have no imagination. 08:00:58 I don't know, Catholicism seems to be pretty trippy in a Lovecraftian sort of way. 08:01:15 trippy is right. 08:01:39 I take it you're from a Catholic background then? 08:01:49 --- quit: ayrnieu (Connection timed out) 08:01:53 * Ray_work 's last name is St. Marie. 08:02:08 That's a fair point :) 08:03:24 I found out this summer that Dad droped the e from Ste. 08:04:03 I don't know why he did, but I have to assume that the army fatigues stencil came back incorrect and he just kept it from there. 08:04:44 heh. 08:05:24 on a similar note, Larson was Larsson before the boat trip to the US. 08:06:56 timlarson when did your people come over? 08:07:04 from TUNES -- 'We foresee a "grand unified theory of programming languages" which will show how they're all the same underneath... Or in other words, we foresee a time when there'll be nothing new to discover regarding programming languages, and all this nonsense will finally come to an end...' -- anyone follow that hype? 08:07:13 my grandparents came over 08:07:40 zpg, they just didn't know werty yet 08:07:42 some to the US others to Canada 08:08:30 Quartus: :) I'm trying to ascertain whether there's anything actually going on with TUNES. 08:08:57 zpg, based on that sentence, no. 08:09:09 Thanks timlarson, much like my own family. 08:09:38 To me it looks like a specification for vapo(u)rware, but I haven't delved into the project. 08:09:55 Quartus TUNES, that's crc's friend that started retroforth, isn't it. 08:09:58 * Ray_work checks. 08:10:04 is it? I don't know. 08:10:37 Yes.. 08:10:47 Retro was started as a TUNES Forth project. 08:11:05 I'm wrong. 08:11:17 Oh it was. okay hmm. 08:11:36 'Tom Novelli's original "Retro" was a Forth-based OS and a prototype low-level infrastructure for the TUNES project.' ==> http://tunes.org/wiki/Retro 08:11:52 we've discussed his conclusions before. 08:12:16 how grand that description. I'm not knocking RetroForth, but it's just a straightforward Forth implementation. :) 08:13:08 Quartus: sure, again there seems to be a bit of hot air enveloping TUNES. but to be fair i think the term "prototype" clarifies the nature of early retro. 08:13:28 To my way of thinking, a prototype is for something different and new. 08:13:51 ya, thanks zpg, I recall now. 08:13:58 I get the impression with hobbyist projects that "different and new" means "different and new for me" 08:14:00 TUNES has some cool ideas 08:14:05 but I doubt they will be implemented 08:14:24 And "different and new for me" is 100% relevant for learning. Depends what you're trying to do of course. 08:14:45 zpg, relevance to the individual notwithstanding, that's a grand description. 08:14:48 JasonWoof: I read through some of the bullet points, reads quite nicely. Much like early Smalltalk etc., everything-as-object, no such thing as an application, etc. 08:15:12 the retroforth direction has changed a few times since Tom had it. 08:15:49 yes, it has converged on accepted practice. 08:16:12 * zpg nods 08:16:51 It would be interesting to take a look at the retro words and see how everything's named. 08:17:04 (for me, obviously) 08:17:12 You can get a good sense of what's renamed by reading my standard layer. 08:17:21 Indeed, that's what I had in mind. 08:17:35 I think I have retro sitting on a ssh linux box. 08:17:51 Does it generate standalones by the way? 08:17:58 I'll msg you the short list. 08:18:04 Neat. 08:18:18 zpg: I don't think so 08:18:34 zpg, I think under Linux you can clone off the whole system under another name. 08:18:34 Ok. 08:18:49 Ah, combine interpreter and currently compiled code into a new binary? 08:19:14 Just dump the entire process into an elf binary. I haven't tried it. 08:19:23 Okay, presumably with an entry point. 08:20:59 RetroForth words that have different names in Standard Forth: | r :: RetroForth words that use a Standard name for another purpose: # >number \ exit find forth i repeat ? 08:21:11 >number and find are just slightly different. 08:21:44 That's pretty much it. 08:22:08 what's R? 08:22:12 R is R@ 08:22:18 ahh 08:22:20 Why all this kaffufle over ANS versus non-ANS then? 08:22:30 zpg, I sincerely don't know. 08:22:39 Largely virl-generated. 08:22:43 heh. 08:23:04 oh, add ;; to the first list. That's what retroforth calls exit 08:23:15 at first glance it seems to matter, because ans-compatibility means you can run a bunch of existing code 08:23:35 but then you realize that it wouldn't be that hard to write an ans-compatibility layer 08:23:59 oh, if that's what you mean -- compliance means code-sharing. So it's a good thing. But virl's dreamy maunderings about how pretty rf is, and how ugly the standard by contrast, I fail to see. 08:24:34 JasonWoof, it's possible to write a forth dialect wherein a standard layer would be painfully difficult. 08:24:42 RetroForth isn't such a dialect. 08:25:04 As Marcel demonstrated though, you can implement your own dialect on top of ANS rather than instead of it. 08:25:35 So if you really wanted, you could write a set of macros etc. to make ANS look more like rf, then just take that set of definitions to any ANS you want. 08:25:36 yes, and though I absolutely hate the arbitrary renamings of words that he does, it's obviously the lesser of the two evils. 08:25:49 Agreed. 08:26:09 zpg, there's a bit more to it. I had to change a couple of other things about rf, like not making names visible until after ; 08:26:40 Yeah, I can imagine it's not a straightforward and simple task. 08:26:46 My point is q. a general one though. 08:27:23 I guess so. Though I wouldn't hunt around for justifications for arbitrary word renamings; it might encourage them. They drive me nuts. 08:28:15 Well, a shared language is obviously more conducive to collective understanding and development. 08:28:28 pacman 08:28:31 If you're going for the original Moore-method of rewriting everything from scratch each time. 08:28:38 ... then I guess it's arbitrary. 08:28:56 tetris ok 08:29:07 quick game 08:29:43 I have to be extremely motivated to try and read Marcel's code; the arbitrary renamings are a hard obstacle. 08:32:39 sometimes it's hard not to make standard word names do something different 08:33:16 oh, wait for/next aren't in the ans spec are they? 08:33:45 No. Those are common-usage words that implement (usually a countdown) loop in the most efficient fashion. 08:33:55 right 08:34:06 but there's no way in hell I'm going to loop the wrong number of times like gforth does 08:34:07 There are about 4 variants. 08:34:43 --- join: tathi (n=josh@pdpc/supporter/bronze/tathi) joined #forth 08:34:43 --- mode: ChanServ set +o tathi 08:35:46 : foo 1 for ." this gets printed twice in gforth. " next ; foo 08:36:08 Right, it's zero-indexed. 08:37:11 hi tathi. 08:37:18 hi Ray 08:37:18 what? 08:37:37 1 - 0 = 1 loop 08:37:44 The loop. It counts down to 0. 08:37:51 0 is the first number, 1 is the second. the first number is called the index. 08:37:56 right. and how could it not get to 0 after one loop? 08:38:05 It does. It terminates after the 0 . 08:38:07 is it checking for -1? 08:38:19 It's checking for crossing the boundary between 0 and -1. 08:38:33 so it's checking for -1 08:38:38 I think it should check for 0 08:38:44 Some implementations do. 08:39:05 I do this to fix gforth, and make "unloop" work: 08:39:07 : for 0 postpone literal postpone ?do ; immediate ( x -- ) loop x times (handles case where x=0) 08:39:11 : next postpone loop ; immediate 08:39:16 presumably it's just using +loop, which the standard defines to check that way 08:39:21 but it does read like crap 08:39:23 Some count from limit-1 to 0. Some count from limit to 1. Some count from limit-1 to 1. Some allow access to the index via I; some don't. Some count upward instead of downward. 08:39:59 Though I know why for/next isn't standardized, this does underscore the value of standardization. :) 08:40:01 I understand the effeciency of counting down 08:40:26 and also, some permit unloop/leave, some don't. 08:40:41 you could just add something like ": for postpone 1- postpone for ; immediate" in gforth 08:40:54 Quartus: because there were already conflicting FOR/NEXTs in existence, and implementors wouldn't agree to change theirs? 08:41:08 zpg: yeah, I did it with do/loop so I could use "unloop exit" 08:41:24 i see. 08:41:25 tathi, in this specific case, not so much that as that for/next is supposed to be the 'fast' loop, so it's implemented whatever way makes it go zoom on a given platform. 08:41:47 ah 08:42:07 so what platform was gforth implemented for? 08:42:18 The C abstract machine. 08:42:55 I have a hard time imagining that it's easier to check for -1 than 0 in C 08:43:23 enough easier that it's worth breaking readability 08:43:25 I didn't write it, but I'd guess they cast about looking at other for/next implementations, and found most of them went to 0. They do, for whatever reasons. 08:43:43 you mean -1 08:44:03 No, I mean they go to zero. Zero is one of the values the loop includes. 08:44:11 Stops after that. 08:44:37 so the problem is it's decrementing after the check instead of before 08:44:47 looks like it's because they just reused the condition checker from LOOP and +LOOP 08:45:10 Maybe. Most of the historical implementations do go to 0. 08:45:18 So 5 for i . next counts 5 4 3 2 1 0 08:45:25 (that's where you're even allowed to use i) 08:45:52 The practical upshot is that for/next is not a portable structure. The portable loop structure is do/loop and friends. 08:46:33 JasonWoof, I'd guess that most of ye olde implementations checked for overflow in the loop register. 08:46:39 er, underflow, I mean. 08:46:51 funny that there are so many differences. 08:47:08 every processor I've used has a decrement-count-register-and-branch-if-nonzero instructon 08:48:41 http://groups.google.com/group/comp.lang.forth/msg/110193257c606ca1 08:49:02 and most (every?) language I've learned has a loop (usually called FOR) which loops x times, not x+1 times 08:49:57 in some languages you can loop x+1 just as easily 08:49:59 Standard Forth doesn't have for/next at all. What languages are you thinking of? The ones that come to mind for me have a start and a limit. 08:50:08 C, BASIC, Pascal. 08:50:21 Forth has do/loop, again start and limit. 08:50:52 C, perl, php, python 08:50:58 ppc asm 08:51:12 C? 08:51:16 I think lisp, though I don't know it well 08:51:25 while(x--) 08:51:32 Looping in Lisp is a whole 'nother subject. 08:51:42 heh. 08:51:50 Oh. I don't think of while as a counting loop. 08:52:06 In that case you have the equivalent in Standard Forth -- begin/until or begin/while/repeat 08:52:15 well, that's the easiest way if you've got the count in a variable 08:52:30 sure, different animal to my eyes though. 08:53:16 you can do the standard, verbose thing: for(x = 0; x < 3; x++) 08:53:34 Right. Which terminates on whatever condition you please. 08:53:56 to me these are somewhat analagus to for/next vs do/loop in forth 08:54:12 while(x--) is like "x for ... next" 08:54:12 Somewhat. So is begin/while/repeat. 08:54:34 while do/loop/begin/while/repeat get you the functionality you get with for() in C 08:54:55 You can replicate while() with begin/while/repeat or begin/until 08:55:56 If you look at the thread from the link I posted, you can see our very own ASau being a considerable knob. :) 08:58:38 He refused to accept that for/next was implemented differently in different Forths. 08:58:52 In some kind of bizarre way that involved changing his argument with each reply. 09:02:40 Man, that's really annoying just to re-read. I'd forgotten what a complete tool he is. 09:02:47 Coffee time. :) 09:04:25 oh yes, that's the other minor distinction -- some rely on a short-branch displacement, thus limiting the size of the code inside the loop. 09:16:32 woh 09:16:36 optomization is tricky 09:17:58 "optimizing code" is a never ending battle that is ultimately futile. 09:18:12 Soak in that PV wisdom. :) 09:18:21 Having a pleasant conversation with PoppaVic is a never ending battle that is ultimately futile. 09:18:38 I think PoppaVic is never-ending and ultimately futile. 09:18:44 * zpg smiles 09:18:57 On the other hand, I hear he has a lovely smile. 09:19:03 ew. 09:19:24 "optimizing" is almost 100% mechanical - or it's conceptual - WORK WITH IT. 09:19:42 JasonWoof, is this helping? :) 09:22:36 stop pretending to "optimize" - write the API and then write the apropos asm for the apropos platforms for the apropos linking. 09:22:44 I can keep going, these are all verbatim. :) 09:22:57 Feel free to show mercy at any time. 09:23:02 hehe 09:23:45 well, umm... at a certain level and approach, that's description of optimisation is more or less true... 09:24:51 there's only so much you want to do at the code level itself - it's a trade off between readability/maintainability and performance... 09:25:14 grub_booter, PoppaVic is a font of... what's the word that means 'the opposite of wisdom'? 09:25:24 heh 09:25:29 i know him of old 09:27:32 but wrt the comment above, i think he's not far off the money - at least, the bits of the code you would want to optimise should be 'trivial' and hence 'mechanical' because to do it any other way would be madness - you don't want to write complex code at that level 09:27:34 and I have absolutely no clue what that blither about 'mechanical or conceptual' is supposed to mean. I like the WORK WITH IT though. Makes me think of werty. 09:28:00 THINK !!! 09:28:47 well, as regards C (##c is where those brilliant quotes come from), some people try to write code that they think will translate into better machine instructions, which is both silly and difficult. 09:29:02 yup 09:30:19 which is why optimisation isn't something you focus on - you focus on breaking things down into discrete components, profile, find slow components, and refine - optimise small things first (and last) 09:30:29 Right. JasonWoof is writing an optimizer, though. 09:30:41 ah 09:30:45 automated? 09:30:55 Anyway optimization can be taken up a level; a better algorithm is the best optimization. 09:31:10 JasonWoof is optimizing generated code in his forth-like dealie, I believe. 09:32:07 well, if it's profiling and pinpointing small things which need attention and providing a replacement... that'd be cool if it would work... 09:32:46 Forth optimization is usually pinhole based, eliminating/replacing instruction sequences. 09:32:54 yup 09:33:05 Some systems go further. 09:33:49 well, automating it involves making the process mechanical... 09:34:14 so i think perhaps pv was pointing out something jw had already seen? 09:36:59 I copied those quotes in from somewhere else. Humour only. 09:37:07 I haven't decided how I want to do optomization in fronds 09:37:09 dunno - mebbe jw wasn't seeing that and pv was telling him (would explain the 'work with it' comment?) 09:37:33 yeah - np - just found them curious 09:37:44 I have a bunch of stuff I want to play with 09:38:23 ah - k 09:38:26 including a sort of profiler that automatically marks things as being appropriate for inlining 09:38:47 that'd be cool... 09:38:54 have you used the intel profiler at all? 09:39:02 it does an amazing job... 09:39:50 doesn't provide replacements, but it really shows where most of the time is spent within an execution of the app 09:39:50 grub_booter, those were things poppavic said to other people at other times in another channel 09:39:57 ah :-) 09:40:12 i was wondering if i picked up the wrong end of the stick there :-) 09:40:36 but like i said, regardless of who it was to, it wasn't all wrong.. 09:40:51 If it seemed right at all, I suspect it was accidental. :) 09:41:00 heh 09:42:33 well, i've released my command line/scriptable forth inspired video editor today 09:44:06 (just as an easter egg - i don't think it'll catch on ;-)) 09:46:02 (well, not as a command line thing...) 09:49:37 hi grub_booter -- good stuff. 09:49:45 hey zpg 09:50:22 thanks (it's just on linux for now though - have asked another guy to look at os/x - don't care about windows) 09:50:31 link? 09:51:10 have a build and installer for ubuntu... that's all at the moment though 09:51:51 the tar ball source code hasn't been made available, though the code is.. it's all in cvs 09:52:04 www.sf.net/projects/openlibraries 09:52:53 the ubuntu link is: http://repo.jahshaka.org/ubuntu/jah-dapper-install.sh 09:53:29 it's a kinda 'unofficial'/beta release - final for the end of the of the week 09:53:40 ok. 09:55:34 most useful command is: jbatch rpn.oml ~/Desktop/*.mpg quad (plays out 4 vids at once) 09:56:35 or: jbatch rpn.oml ~/Desktop/*.mpg quad a ! quad b ! quad c ! quad d ! a b c d quad (plays out 16 :-)) 09:57:46 good stuff. 10:13:28 http://users.pandora.be/acp/jbatch/16.jpg 10:14:23 pornxxx and pamela anderson were both fakes btw :-) 10:14:53 (you'll find them all on google video - not may good ones though) 10:15:32 looks neat! 10:16:06 should see the function def at the top there... 10:17:48 colon definitions working nicely then? 10:18:14 yeah - that one worries me though - worked first time, so there's bound to be a bug in there... 10:18:30 :) 10:19:46 hmm - i wonder... 10:20:26 damn - was going to try encoding a flash (append: 'op:file.flv store' to the command line...)... 10:20:40 but no diskspace left on my web site 10:20:42 sigh 10:21:30 perhaps abandon the fake porn? 10:21:40 free up some space. 10:21:46 heh 10:22:06 you sound curiously unconvinced :) 10:22:29 i'd put it up on the company repo server, but that might get me into trouble :-) 10:23:01 there's a chance. 10:23:27 $ ls -l output.flv 10:23:27 -rw-r--r-- 1 charlie charlie 1860180 2007-01-10 19:18 output.flv 10:24:10 not a bad size - looks a bit grainy though [low quality by default] 10:24:31 * zpg nods 10:24:34 lasts 34 seconds 10:25:17 .. could reduce the frame rate i guess.. 10:25:24 and res 10:40:31 http://users.pandora.be/acp/jbatch/output.flv - it's slightly distorted cos i didn't correct the aspect ratio (sar should be 1:1 for flash - this vid is 59:54) 10:40:48 just curious if it works... 10:41:03 hmm firefox doesn't like FLVs it seems 10:41:42 hmm - checking 10:42:37 found a quote I like: "I think imagination is rare, despite its alleged ubiquity." -- Maggie Balistreri 10:43:17 zpg: yeah - getting the same - trying to download it... 10:45:34 flv windows IE7 doesn't like it either... 10:45:59 i wonder if i'm hitting the same issue i had with the ftp the other day... 10:46:15 given that i can play videos in youtube, i gather there ought to be a plugin for flv's kicking around? 10:46:15 iyr, i couldn't upload the doc... 10:46:19 ooh, this one's better: "We keep our insignificant blemishes so that we can blame them for our larger defects." -- Stephen Fry 10:46:33 heh, to wit. 10:47:45 I always wondered why they let me come back to work here, and thanks to Fry, I know. 10:48:06 * zpg chuckles 10:48:18 heh 10:53:38 For kicks: http://www.cabel.name/images-post/2007/01/atari-forth.jpg 10:54:48 TreyB: You draw that? 10:55:19 Nope. A friend pointed me at it. I asked if the Forth came with the girl ;-) 10:55:31 --- join: jackokring (n=jackokri@static-195-248-105-144.adsl.hotchilli.net) joined #forth 10:56:45 I have that book. 10:56:53 Hehe, You don't wanna start a relation ship with a cartoon girl that is minus atleast on dimention. Please, take advice from someone who was hurt by WonderWoman. 10:58:54 Ray_work: huh? 10:59:10 2d? 10:59:28 Hehe, You don't wanna start a relationship with a cartoon girl that is minus at least one dimention. Please, take advice from someone who was hurt by WonderWoman. 10:59:33 there I think that's better. 10:59:59 here you mean WonderWoman literally 11:00:02 I'm catching up 11:00:20 Jason, I've known some one dimentional women. :) 11:00:28 Maybe we all do. 11:02:02 I've never met anybody that shalow :) 11:02:20 everybody's got some depth 11:02:55 Don't go into men's clubs much, do you. :) 11:03:06 * Ray_work neither do I honey 11:03:14 Damn I know shes logging. 11:03:59 no 11:06:17 I suppose the shallowness of a woman at work in a place like that is totally reciprical to the amount of money she can earn. 11:07:05 you think the shallow ones make more or less? 11:07:31 Definately more! 11:07:40 the poor drawing on that book cover can't even afford a whole shirt. 11:09:19 Ya, and the girl can't either. 11:09:35 tragic! 11:09:43 clearly fantacy. check out the shlong too 11:10:35 I don't think shallowness is really my thing, so I don't think I'd be drawn to it so much 11:10:44 but I'm probably not the typical clientelle at a strip club 11:11:00 ya. 11:15:58 An old boss went to a strip club one evening and his wife (who didn't have a problem with it) asked if came back drunk and horny. He replied "I am NOT drunk.". 11:19:28 If Nan minds, she's never made a big deal about it. 11:20:21 just so long as you keep paying her. :) 11:22:43 Geez, tough room 11:23:28 :-) 11:24:54 hahahah. 11:25:00 expensive is not the word. 11:29:40 I should send you guys my wireless bill, I mean, this is comedy gold I'm laying down here. :) 11:29:50 This is the A material. :) 11:30:36 --- quit: Quartus_ ("used jmIrc") 11:32:30 From ##c: velco: you know? in all these years? I've never really seen "erotic talk" online, and even less in a bedroom.. Weird. 11:32:32 Oh, what we're missing. 11:32:54 man. hehe 11:33:35 makes a big hairy man like you wanna /join ##c and whisper sweet nothings. 11:33:54 Whisper? SCREAM! 11:38:29 I wonder if you can get pv to shut up irl 11:38:52 that's generally a prerequisite to hearing any kind of talk 11:38:52 I'd settle for online. 11:39:21 on irc there's /ban, irl there's pointy sticks :) 11:39:30 heh 11:39:41 irl? 11:39:45 In Real Life 11:42:33 ah. 11:49:30 zpg: http://users.pandora.be/acp/jbatch/output.swf - any better? 11:50:29 (sorry about the sound - will fix up later..) 11:50:54 (it will resample and mix, but you have to tell it to do so...) 11:51:18 dude, what are you, the Man Who Fell To Earth? :) 11:52:11 heh 11:53:29 grub_booter: yep, that works here . 11:53:45 cool 11:53:46 is it in some way useful to play 16 video clips at the same time? 11:53:49 thanks :-) 11:54:01 Quartus: dunno - the beeb asked me for 4 11:54:07 if i can do 4, i can do 16 11:54:11 ;-) 11:54:22 I guess if it's one of those commercials where you briefly show a whack of screens all playing bits of different programs. 11:54:45 --- join: arke_ (n=chris@pD9E04C29.dip.t-dialin.net) joined #forth 11:54:47 yeah - or one of those mosaic channels on sat - pulling in live feeds from lots of channels 11:55:06 there's also elements of 24 in there... 11:55:27 (the show that is) - though obviously, they don't tend to hit 16... 11:55:45 max out at about 3 or 4 11:56:11 anyway - talking of which - i'm going back to the couch to watch some more of series 5 - ttyl 11:56:47 and thanks for the tests :-) 12:11:51 --- quit: arke (Connection timed out) 12:13:23 --- quit: Shain (Remote closed the connection) 12:16:46 don't forget the Brady Bunch opening sequence 12:18:11 Quartus: FFT is 14 lines of factor code 12:18:45 what? No FFT primative in the factor kernel? :) 12:19:19 any thing that can be written in 14 lines can be writen in 13. THINK!!! 12:19:33 YOU ARE ALL FOOLS !!! 12:19:44 I AM ALL FOOLS!!! 12:22:49 what's fft again? 12:22:56 something like finite feline transform? 12:23:12 fast fourier transform 12:23:19 right! 12:23:21 I was close 12:23:23 http://en.wikipedia.org/wiki/Fast_Fourier_transform 12:23:36 * JasonWoof goggles 12:25:08 there are four methods shown here as part of the FSL: http://www.taygeta.com/fsl/library/dfourier.seq 12:25:11 I suspect they can be factored better. 12:26:21 What method are you using in Factor, slava? 12:26:29 it was contributed 12:26:32 i know nothing about fft 12:26:37 http://factorcode.org/repos/Factor/demos/fft.factor 12:26:59 notice how it has no loops, its all vector math, apl style :) 12:27:23 it's a natural for vectors 12:28:04 That 14-line block of code would need at least 14 comments for me to follow it. 12:28:28 or knowing what the words do 12:28:45 Even then. No information about the method used, how the output is ordered, any limitations, etc. 12:29:24 what are [ and ] in factor, slava? 12:29:31 code blocks which are pushed on the stack 12:29:45 [ 2 2 + ] call is like 2 2 + 12:29:53 and you can pass code blocks to other words which implement iteration, etc 12:30:03 ...an example of use, little things that I look for like that :) 12:30:06 same syntax as smalltalk's blocks then? 12:30:12 ifTrue: [ ... ] ifFalse: [ ... ] 12:33:00 except backwards 12:33:17 oh sure, i'm just talking about the concept 12:33:55 just syntax markers denoting 'here a block begins' and 'there it ends'. 12:34:09 Kind of embedded :noname definitions 12:34:31 retroforth has something akin to it, [[ and ]] 12:34:58 so : foo 42 . [[ 17 3 * ]] execute . ; foo -> 42 51 12:36:01 that's a nifty feature 12:36:18 In Forth, I think it runs counter to factoring, so I'm not sure I like it. I don't know about Factor, perhaps it's necessary there. 12:36:53 yeah... I'm not sure if I'd want that feature, or if I'd rather just define the thing and pass the xt 12:37:13 It facilitates unnamed embedded factors. I'm not sure that's good. 12:37:45 eg: : inner-bit 17 3 * ; : foo 42 . ['] inner-bit execute . ; foo -> 42 51 12:38:20 they're not like xt's 12:38:46 slava: no? 12:38:49 Right. rf has t/f also, so : foo [[ 42 . ]] [[ 23 . ]] t/f ; true foo -> 42 false foo -> 23 12:39:04 JasonWoof: they're actually just lists 12:39:11 you can take two code blocks, append them together, pass the result to a word 12:39:23 also, i don't think you'd want to factor out each branch of a conditional, like this 12:39:28 ['] foo ['] bar if 12:39:33 you'd write [ ... ] [ ... ] if 12:39:40 no 12:39:43 of cousre if each bbranch is long it can be factored but that should be up to the programmer 12:39:45 if that's the only way to express a conditional. As I say, it may make more sense in Factor. 12:39:51 I'd write: : foo .. if bar exit then baz ; 12:39:52 that's the only way, yes 12:39:56 sure 12:40:02 so in forth you might not need code blocks like this 12:40:16 that's akin to the t/f thing in rf, which I personally find hideous. 12:40:18 another thing is that you can pass a literal in a code block, like [ 123 ] 12:40:19 slava: exactly 12:40:23 you can't get an 'xt' of a literal 12:40:35 well, you can. 42 constant x ' x 12:40:44 or :noname 23 ; 12:40:45 sure you can 12:41:02 oh, I guess you can't do ' 23 12:41:06 no. 12:41:21 you can in my latest forth-likes though 12:41:39 I mean, you could extend ' so that if it can't find the name, it wraps it in a noname and sends that back. Why you'd want to I don't know. 12:41:45 in fronds there's no difference between a constant and a literal 12:41:58 i sometimes have conditionals where one branch just pushes a literal 12:42:17 there might be a dictionary flag or something that says how it was created, I forget. If so I don't check it anywhere 12:42:43 I'm picky about syntax 12:42:51 I don't like: [ ... ] [ ... ] if 12:43:10 'if' is no more special than 'each', 'map', etc in factor 12:43:16 its just another word 12:43:23 I know 12:43:31 well, its a primitive, and the compiler turns it into an efficient branch, but that's detail 12:43:35 it's special in my forths :) 12:43:50 i don't use syntax for control structures because code blocks allow more flexibility 12:44:08 also in factor the parser doesn't compile code 12:44:11 it builds a tree 12:44:11 sure, but I still don't like them :) 12:44:25 [ ... ] [ ... ] if parses as an array with 3 elements 12:44:57 yeah, I'm my "compiler/parser" thing goes from an array, to vm instructions 12:45:35 factor code can be manipulated and analyzed with array words 12:45:37 slava: right. you compile it later? 12:46:06 i code after parsing in most cases, however keeping the syntax tree around makes 'see' possible to implement 12:46:12 and things like 'usages' 12:46:29 you code after parsing? what's that mean? 12:46:36 compile after parsing, sorry 12:46:40 ahh 12:46:45 the compiler takes a syntax tree and produces machine code, basically 12:46:55 immediately after? or you wait until someone wants to execute it? 12:47:05 right 12:47:22 eg, after a source file is loaded, all new definitions are compiled 12:47:29 I guess mine does too 12:47:42 my fronds sources are essentially a tree 12:48:00 later i'll have a tree editor instead of a text editor 12:48:01 it's just that each node is a definition 12:48:04 using text for import/export 12:48:07 you cannot define more than one node on a line 12:48:17 that's where I'm headed 12:48:21 editor is unfinished though 12:48:36 you can browse and delete, but not insert 12:48:44 heh, same here 12:48:51 :) 12:48:54 ok, so in Gforth: : ' >in @ ['] ' catch if >in ! :noname parse-word evaluate postpone ; else nip then ; 12:49:01 So you can ' 23 execute . -> 23 12:49:06 not sure what good it is :) 12:49:26 Quartus: the thing is that in factor [ ... ] is literal syntax for a data structure 12:49:33 Quartus: nice :) 12:49:35 [ 1 2 3 ] [ 2 2 2 ] v+ . 12:49:38 [ 3 4 5 ] 12:49:41 slava, sure. 12:50:08 [ 2 ] [ 2 + ] append call . 12:50:08 4 12:50:19 of course, ' 23 . ' 23 . -> 418108224 418108248 different xt each time. 12:50:22 Minor detail. :) 12:50:45 slava, I see. 12:50:45 Quartus: that's because you did :noname instead of : 12:51:07 JasonWoof, right. 12:51:27 I have initial uneasy feelings about making named words for each integer. 12:51:52 :) 12:52:01 don't many forths do that for low numbers? 12:52:10 ie 0 constant 0 1 constant 1 2 constant 2 etc 12:52:15 0 and 1, sometimes. The code representations for them are smaller than the literal sequence. 12:52:23 oh 12:52:36 I thought it was so the parser didn't have to search whe entire dictionary for them 12:52:50 Well, I suppose in a really crude implementation that might be a factor too 12:53:10 cf, say. 12:53:12 :) 12:53:14 in fronds all numbers are in the dictionary 12:53:21 they don't have definitions though, just values 12:53:39 constants can have definitions, but obviously numbers like 23 don't need them 12:53:41 well, in Standard Forth all numbers are in the dictionary, too, in the broadest sense. 12:54:05 how's that? 12:54:16 Numbers are acceptable input. 12:54:32 I don't look at it that way 12:54:36 They are parsed and something happens when they're encountered. So in that sense they're tacitly in there. 12:54:40 input can be a word or a number 12:54:53 that's how I describe the interpreter 12:55:00 Sure, that's also a valid description. 12:55:25 I drew up a BNF for Forth -- specifically for a Forth with no words in its dictionary. 12:55:29 It parses three kinds of numbers. 12:55:36 And identifies non-numeric sequences. 12:55:59 can it deal with creating words? 12:56:13 The BNF is for a Forth with no words at all in its dictionary. 12:56:24 No : no CREATE no CONSTANT no :nonane no nuttin'. 12:56:37 Adding words to Forth changes its parser. 12:57:55 Re your interpreter description, something like : 23 42 ; throws a spanner in the works. 12:58:13 heh 12:58:29 suppose that's ok though, since that would screw up humans too 12:58:32 Now you have to say input can be names, numbers, or numbers that are actually names. 12:58:47 Well, also : 23 23 ; 2 base ! 23 . -> 23 12:59:08 no... 12:59:22 prints 10111 12:59:44 right, sorry. The value is accepted as input, however. It wouldn't be if it weren't defined as a named word. 12:59:57 right 13:00:24 So it gets a little on the harder-to-completely-describe side. 13:01:43 for that matter, it's not just when the value is invalid in the given base. decimal : 23 23 ; hex 23 . -> 17 13:01:55 er. only if you insist on using "describe" in a BNF sort of way 13:02:08 No, even if you're just saying that input is 'names or numbers'. 13:02:18 Names can be numeric. 13:02:41 Numbers can be alphanumeric. How you name words affects it. What base you're in affects it. 13:02:48 right 13:02:57 I don't see that that invalidates the description though 13:03:14 It doesn't invalidate it, it's just that there are a series of sub-paragraphs if you want to fully explain the action of the thing. 13:03:50 oh. sure. 13:04:08 The BNF I wrote covers a dictionary with no words, because as soon as you add, say, a parsing word to the dictionary, the BNF description of the system changes. 13:06:10 I wrote it to ascertain exactly what behaviour the parsing of various numbers would have in different bases, and if there were any differences in such when relaxing the minimum Standard parsing requirements. 13:06:58 Rather than just messing with Gforth and assuming their implementation was canonical, which it slightly isn't. 13:08:05 non-canonical as in having extra functionality? 13:08:42 --- join: ramserver (n=gschuett@4.38.41.141) joined #forth 13:08:42 --- mode: ChanServ set +b *!*@4.38.41.* 13:08:42 --- part: ramserver left #forth 13:08:49 IT WORKS! YAY! 13:08:51 That was gavino! 13:09:04 hehe 13:09:04 :) 13:09:29 where was I. As in Gforth-specific relaxings of the rules. My notes on the differences are on another system slightly inaccessible at this moment, let me see if I can fiddle around and remember where the differences were. 13:09:52 boy, that ban dealie pleases me no end. 13:10:27 just curious 13:10:46 Well, one minor point, Gforth accepts floats while in bases other than decimal, but only if they have an embedded sign in the exponent value. 13:10:54 There are other variances. 13:11:03 ah 13:11:41 Nothing radical. But little things that could change the strict interpretation of numbers in some conditions. So I wanted a canonical model to compare against. 13:12:18 single-cell vs. double-cell vs. float in varying bases. 13:13:20 icky sticky 13:15:00 Stuff you'd probably never run into, and if you were worried you'd just follow the strict rules. Good to know, though. 13:17:37 --- join: Jules_ (i=Jules@cp550544-a.landg1.lb.home.nl) joined #forth 13:20:06 Hi Jules_. 13:20:17 hi 13:21:16 New to #forth? 13:21:20 yes 13:21:29 Thought perhaps. 13:21:34 welcome Jules_ 13:21:46 thanks 13:30:08 http://users.pandora.be/acp/jbatch/output.swf - final for now (family vids - no audio, but man, flash scales poorly... playing that with ffmpeg based stuff is much better) 13:30:31 it was in such lo-res last time I think it was family-safe then too :) 13:30:36 --- join: timlarson__ (n=timlarso@65.116.199.19) joined #forth 13:30:36 heh. 13:30:39 hi tim. 13:31:04 heh - probably :-) 13:31:56 think you've got a ground-loop somewhere :) 13:32:17 blame the monkey behind the cam :-) 13:32:31 unless it's part of the artistic effect to make me feel like I'm sitting too close to the projector 13:32:41 heh 13:32:43 the audio, I mean 13:33:14 --- quit: timlarson__ (Client Quit) 13:33:15 oh - umm - there's not supposed to be any audio (thought you were meaning the wobbly cam work..) 13:33:19 Quartus: you know? in all these years? I've never really seen "erotic talk" online, and even less in a bedroom.. Weird. 13:33:41 He went on to explain how familiar he was with penises, and how detailed pictures of hairy arms appeal to him. 13:33:42 Aieee! 13:33:48 lol 13:33:54 TreyB, that's PoppaVic from ##c, today. 13:34:02 is he married today? 13:34:06 Yeah, I know. Then slava quoted it back. 13:34:06 I don't ask. 13:34:22 and Jules_ looks perplexed. 13:34:34 (one would assume) 13:34:39 just as well PoppaVic doesn't come here anymore. 13:34:53 Yes. 13:35:53 slava, I see you have your own personal antagonist over on reddit. 13:35:54 gwenhwyfaer 13:36:07 no, you mean grauenwulf 13:36:21 oh. Something inanely Norse like that. 13:36:34 he's not my personal antagonist. he posts trash in every single thread 13:36:49 Well, they seldom stay focused on only one thread. 13:38:04 in a lisp thread, he lamented that lisp programmers don't innovate like microsoft does by adding direct literal XML syntax to the language. 13:38:09 or something like that. 13:38:33 At least he was talking about programming languages. He's not in PoppaVic's league. :) 13:38:37 in vb you can write crap like x = 13:38:49 and x becomes a dom node 13:41:03 oh god 13:43:37 that's curious. What's the benefit? 13:43:54 easier to write code that spits out lots of xml, i guess 13:44:03 you can interpolate variable values in the xml literal 13:44:08 horrible thing to hard-code in your language, though 13:44:11 Yes. 13:44:22 sun is thinking of doing the same in java 13:44:40 Well, that's unfortunate. 13:46:57 Does anyone know how to temporarily disable one CPU on a dual-core WinXP machine? 13:47:09 i've been thinking about xml a bit.. instead of having many nested levels of elements, just have a completely flat document which requires an rpn type of deserialisation process :-) 13:47:27 what's the point of that? 13:48:17 point? none.. i just find it.. interesting :-) 13:48:25 its been dnoe 13:48:43 ah - so not just me then :) 13:50:13 --- quit: timlarson_ (Connection timed out) 13:52:37 i guess the main advantage is that the objects being reconstructed are forced to be simpler - they take 'inner' objects from the stack as the deserialisation occurs - don't think it restricts anything (... at least, not in my domain..) 13:54:18 recursive descent parsers are not that hard 13:54:26 That's true. 13:55:14 true - but it's not just deserialise - during a serialise, each object just push their inner objects on to the serialising stack and then dump their own state... 13:55:33 recursive descent printers are not hard either :) 13:55:37 heh 13:55:46 but neither is this :-) 13:55:57 but its not human readaable 13:56:16 heh - why not? 14:02:05 i don't see any reason why it wouldn't be considered human readable - at least, no more so than an n-th degree nested xml doc.. the only advantage with the nesting is the collapsible nature of the deep nested element (in a gui editor type of way) 14:04:17 what are you talking about? instead of ... you'd do...? 14:04:28 ... 3 foo 14:04:34 where 3 is the number of items in ... 14:04:50 i'd simply prefer (foo ... ) 14:05:08 a lisp parser is only a dozen or so lines of code in factor 14:05:20 Which is syntactically similar to ... 14:05:21 or you can use factor's own parser, but that's somewhat unsafe because your data could execute arbitrary code at parse time 14:05:32 --- quit: zpg ("back in a bit") 14:05:34 --- quit: Jules_ ("Ik ga weg") 14:05:42 well, depends on the objects being serialised - i was thinking about video filter graphs.. so each element would be either a video or a filter 14:06:48 then you would have: