00:00:00 --- log: started forth/06.11.04 00:06:59 --- part: slava left #forth 00:23:49 --- part: forther left #forth 00:38:37 --- join: TreyB_ (n=trey@cpe-66-87-192-27.tx.sprintbbd.net) joined #forth 00:47:43 --- quit: TreyB (Read error: 110 (Connection timed out)) 01:11:12 --- join: Cheery (n=Cheery@a81-197-19-23.elisa-laajakaista.fi) joined #forth 01:27:34 --- quit: JasonWoof ("off to bed") 01:43:31 --- join: neceve (n=claudiu@unaffiliated/neceve) joined #forth 01:52:25 --- join: dibblego (n=nobody@dsl-202-173-178-172.qld.westnet.com.au) joined #forth 02:31:51 --- join: zpg (n=user@user-514d7663.l2.c2.dsl.pol.co.uk) joined #forth 02:39:50 morning 02:40:21 hello 02:40:30 hi dibblego 03:10:20 --- quit: dibblego (Remote closed the connection) 03:45:20 --- quit: zpg ("brb") 04:23:23 --- join: zpg (n=user@soup.linux.pwf.cam.ac.uk) joined #forth 04:30:11 --- quit: zpg ("ERC Version 5.0.4 $Revision: 1.726.2.19 $ (IRC client for Emacs)") 04:30:26 --- join: zpg (n=user@smaug.linux.pwf.cam.ac.uk) joined #forth 04:46:03 --- quit: azekeprofit (Read error: 104 (Connection reset by peer)) 04:57:29 --- join: azekeprofit (i=azekePro@82.200.251.36) joined #forth 04:59:53 --- quit: zpg (Remote closed the connection) 05:14:13 --- join: vatic (n=chatzill@pool-162-84-178-20.ny5030.east.verizon.net) joined #forth 06:00:04 --- join: erider (n=erider@unaffiliated/erider) joined #forth 06:39:55 --- join: BaracA (i=baraca@167.Red-81-40-190.staticIP.rima-tde.net) joined #forth 06:43:34 --- join: zpg (n=user@user-514d7663.l2.c2.dsl.pol.co.uk) joined #forth 06:48:09 --- quit: BaracA () 07:12:23 --- join: snoopy_1711 (i=snoopy_1@dslb-084-058-145-229.pools.arcor-ip.net) joined #forth 07:18:14 --- join: snowrichard (n=richard@12.18.108.162) joined #forth 07:18:44 hi 07:20:26 hi 07:20:38 --- quit: Snoopy42 (Read error: 145 (Connection timed out)) 07:20:45 --- nick: snoopy_1711 -> Snoopy42 07:24:13 got my coffee started 07:28:51 cool! 07:42:47 --- quit: vatic ("*poof*") 07:53:16 coffee found -- operator resumed 07:55:01 --- quit: snowrichard ("Leaving") 07:55:30 good morning all 08:07:38 hi all 08:17:41 --- join: Shine (n=Frank_Bu@xdsl-84-44-233-95.netcologne.de) joined #forth 08:20:00 hi zpg 08:24:53 hi erider 08:24:55 how's it going? 08:26:45 * erider is fighting himself with gforth and retro for which one he should spend most of his time learning 08:27:31 i'd say gforth, but that's just what i was inclined towards 08:28:05 an ans fanatic would say gforth 08:28:16 you've got more portability that way 08:28:21 between QF and gforth, for example. 08:28:58 --- join: snowrichard (n=richard@12.18.108.162) joined #forth 08:29:08 hey snowrichard 08:29:34 for the interested, here's my latest abstraction for the pig latin stuff 08:29:37 http://ezil.sourceforge.net/latest/slang.html 08:30:21 by the way, if a word is using "0 parse", is there something analguous to ['] if you wish to wrap it inside another method? 08:31:09 though factoring would be fine too. 08:47:52 --- quit: snowrichard ("Leaving") 08:52:15 --- join: jackokring (n=jackokri@static-195-248-105-144.adsl.hotchilli.net) joined #forth 08:56:24 hey 08:59:05 'ello 08:59:18 generator on 09:00:41 hi Quartus, jackokring 09:00:54 hi zpg. "wrap it inside another method"? 09:01:28 ah, let me clarify (can you see the example code?) 09:02:01 instead of ": slang: 0 parse string>slang list. cr ;" 09:02:17 we can have 09:02:18 ": >slang string>slang list. cr ;" 09:02:21 and then 09:02:35 ": slang: 0 parse >slang ;" 09:02:41 Ok. 09:03:07 that probably makes more sense than my desire to tell slang: where to read from if i call it from another word. 09:03:44 Oh, I see. Yes, factoring is the answer. 09:05:11 Instead of string>slang >slang slang: consider >slang (.slang) .slang 09:06:38 as in, ">slang" for "string>slang", "(.slang)" for ">slang" and ".slang" for "slang:" ? 09:07:12 Right. 09:07:19 yeah, that makes more sense. 09:07:39 i never refactor names :) 09:07:47 must remember to do that more. 09:07:51 Having a . in words that display output is intuitive. string>slang isn't horrible, but you might get in the habit of this>that for all your names, which is cumbersome and not really necessary. 09:08:24 I'd actually suggest >pig (.pig) .pig 09:09:16 * zpg nods 09:09:22 i tend to call it backslang, hence the odd naming 09:12:16 erider, retroforth really isn't that different from Standard Forth; I would suggest you learn Standard Forth, and then look at different variants from there. 09:13:17 yeah they are definitely very similar. 09:14:05 My retro ANS layer illustrates that. It's 40K, but most of that is additional definitions and comments. The stuff that brings the rf kernel into line with the Standard is pretty short. 09:16:16 well something don't work in retro but all the tutorial stuff that I have been reading works in gforth but I really like the syscall word 09:16:52 erider: 09:16:54 s" ls" system 09:16:55 in gforth 09:17:02 Words to interface directly to the system vary not only by dialect, but implementation. For instance, syscall isn't in the Windows version of rf. 09:17:33 Quartus: that's because there is no consistently accessible syscall function in Windows 09:17:43 Right. 09:17:54 erider: 's" date" system' prints 'Sat Nov 4 17:18:56 GMT 2006' here, etc. 09:18:41 zpg: that is not a system call, but rather a call to an external program via something like the C system() function 09:18:53 very true 09:18:59 for true system calls you could use fflib i guess 09:19:14 it depends what erider likes/needs about/from syscall 09:19:38 if you're doing direct system calls, you're writing a non-portable programme anyway. 09:19:46 yup 09:20:02 so in that sense variation is pretty arbitrary. all those lines would have to be at least partially re-written. 09:22:02 Yes. Good design says to wrap the non-portable stuff so you can port it later. 09:22:39 No reason you can't do syscall from gforth -- it's int 80h with a wrapper around it. I haven't checked to see if Gforth already has it in Linux and BSD, but there's an assembler, so... 09:23:05 well I have been using gforth 09:23:18 erider: what do you need syscall for? 09:25:04 * zpg goes to make some tea 09:25:18 well crc has a nice netlib done in syscalls to socket and read and write and well I think that is neat because to do the same thing that he did in forth would be a lot of code in C 09:25:41 There's an assembler in gforth, I mean, and you can also call shared-library functions from Gforth with fflib. 09:26:10 hmm 09:26:35 You should be able to replicate any particular functionality in either one. But none of that is specific to learning Forth as a language. 09:27:08 If you see value in starting with the common Standard dialect, as I do, then you could run rf with my ANS layer; syscall is still there. 09:32:38 well I think I will have to use gforth to work thru the tutorials :) 09:35:14 Learning how to Forth in a portable way can only work to your advantage. 09:36:18 but there are some really neat features that crc has made :) but Quartus you are right 09:36:23 when gforth would support it to hide all it's unnecessary words then it would be ok. 09:36:44 Gforth supports hiding any words you may wish to hide. 09:36:56 erider, what features are you speaking of? 09:37:35 the loc: loc; for one and I like the syscall word 09:37:47 * lukeparrish likes retro's readable source. but to be fair, I haven't tried reading gforth's. 09:38:36 We've talked about syscall. loc: ;loc is a wordlist trick for hiding definition names. You can do the equivalent in any Standard Forth with wordlist support (Gforth included). 09:39:01 Quartus: does gforth's wordlist work the same way as retro's? 09:39:08 * lukeparrish ought to try it out 09:39:23 rf has only one wordlist by default. My ANS layer adds multiple wordlist support. 09:39:35 cool! 09:39:47 Gforth has multiple wordlist support out of the boxl. 09:39:48 -l 09:40:26 Quartus well the documentation for gforth well is passing me toward gforth because of it being geared to novice like myself 09:40:42 With the ANS layer I also provide an implementation of module/public:/private:/end-module, which is the namespace-management mechanism I use everywhere. 09:41:15 It's loc: ;loc or section: expose ;section on steroids. You can switch back and forth between public: and private: within a module, and expose a module's private words later for access as required. 09:44:04 I wrote section: ;section while writing the ANS layer because loc: ;loc made me slightly insane; I don't like the business of making nameless definitions and 'throwing them over the ;loc wall' to aliases on the other side. Hard to read and annoying to maintain. With section: you don't have to... but there's only one exposed and non-exposed region in each section, and sections aren't named and can't be internally a 10:08:56 --- join: JasonWoof (n=jason@c-71-192-26-248.hsd1.ma.comcast.net) joined #forth 10:08:56 --- mode: ChanServ set +o JasonWoof 10:36:45 --- quit: nighty_ ("Leaving") 10:37:13 --- join: nighty_ (n=nighty@sushi.rural-networks.com) joined #forth 10:50:28 --- quit: virl (Remote closed the connection) 11:13:38 hey. 11:22:29 hi 11:31:01 interesting paper from 1962: http://www.cs.utexas.edu/users/EWD/transcriptions/EWD00xx/EWD28.html 11:40:27 --- quit: nighty_ ("Disappears in a puff of smoke") 11:40:56 --- join: nighty_ (n=nighty@sushi.rural-networks.com) joined #forth 11:45:14 --- join: guffer (n=0_o@2001:5c0:8fff:fffe:0:0:0:5ac9) joined #forth 11:46:32 --- quit: azekeprofit (Read error: 104 (Connection reset by peer)) 11:48:13 Quartus_: the paper looks a bit like a description of Forth, which is interesting, because Forth was invented 1969 11:49:06 well, that's when Moore invented it, at any rate. Looks like Dijkstra did the same thing, but earlier. 11:49:46 I wonder if Chuck Moore ever heard about Dijkstra's idea, or came up with his own independantly. 11:50:03 Some concepts are independently reinvented, like von Neuman architecture -- at least 3 others claim to have also come up with the idea. 11:50:11 true 11:50:43 I think they all know about ideas of the others, e.g. in the paper Dijkstra thanks J.McCarthy, the inventor of Lisp 11:50:45 Fox said Moore said he hadn't seen Dijkstra's paper. 11:50:50 some are probably unconsciously copied though 11:51:13 right, and Moore says he learned lisp from McCarthy. 11:53:27 interesting to me is that the 1962 paper describes a system more like modern Forth than Moore's early efforts were. Interesting that Forth eventually converged with Dijkstra's notions. 11:54:14 did Dijkstra comment on Forth at any point? 11:54:54 Forth had structured conditionals very early, too, and Moore claims to have been unaware of Dijkstra's work on the matter when he did them. 11:55:07 zpg, I don't know. 11:55:23 it would be interesting to see if he has. 11:56:35 I've never seen a quote from him specifically about Forth. 11:57:44 hmm, Fritz Bauer is still alive, apparently. 11:58:46 (invented the stack) 11:58:49 incidentally, on a sidenote -- imagine i concatenate two strings, and my concat word allots the appropriate number of characters. then i concat a suffix (such as our pig latin "ay") -- would it not be wise to free the intermediate form given that it won't be used, and is now occupying a never-to-be-used area of memory. 11:58:50 ? 11:58:56 oh neat, haven't come across Beauer 11:59:01 or Bauer for that matter. 11:59:52 zpg, if you know you'll be needing the space eventually, allocate what you need first, use that, rather than generating a bunch of intermediaries that get thrown away. 12:00:46 yes, sounds wiser. 12:01:08 also, if we're consing strings into a list, it would seem appropriate to free the string when the cell is freed. 12:01:10 you can't free an intermediary allot, anyway. Allots are linear. 12:01:23 what do you mean linear? 12:01:51 I mean they are in a line, one after the other. Allot, note, not allocate. 12:02:37 but what's problematic about that? i mean, assuming one was able to free allot'd space? 12:03:28 you can't, which is somewhat problematic. 12:03:41 yes i know that. hence 'assuming' 12:03:48 i don't see what linearity has to do with it though 12:04:08 what's problematic about walking to Europe? I mean, assuming one can walk on water? :) 12:04:22 yes, very good 12:04:37 but you made it sound like linearity was the reason allots are not free'able 12:04:52 you can only 'free' the last allot. The others, being linear, are constrained, and unfreeable. 12:04:55 meory allocation, a subject which should be based on memory organization 12:05:02 it is the reason why, yes. 12:05:06 --- join: azekeprofit (i=azekePro@82.200.251.36) joined #forth 12:05:12 parallel a -> a[] 12:06:06 zpg, consider create t 10 allot create s 15 allot create x 20 allot 12:06:28 how do you propose to free the allot after s, leaving t and x alone? 12:06:38 45 bump alots 12:07:11 i don't see the exact problem. 12:07:15 ignoring Sir Bump-A-Lots for the moment :) 12:07:30 assuming you know the starting address of x's allot, then you could surely free those 20 cells, no? 12:07:55 yes, allot allows negative arguments 12:08:16 no. They're just bits of the dataspace heap. They have no handle. They aren't ALLOCATEd. 12:08:40 if you wind HERE back to s, you lose x. 12:08:51 : CONCIOUS ( like vocabulary but somewhere else ) ... ; 12:09:02 hmm 12:09:16 but if i say : blee here 4 cells allot ; 12:09:24 then blee will return the address of the start of these 4 cells 12:09:30 right. 12:09:33 will the allot'd cells not be contiguous 12:09:35 ? 12:09:40 yes. 12:09:48 oh hang on 12:09:53 now where was that 7 state tag garbage collector with state 8 being not memory?? 12:10:07 say we save that address in variable blee-start 12:10:15 ok. 12:10:16 ohh i see 12:10:35 so linearity means that allot with here will be at the next available (here) bit of heapspace 12:10:43 right. 12:10:48 if we were to quasi-'free' the blee area, there are only 4 cells avaialable 12:11:00 works parallel too! 12:11:24 you can use those 4 cells for something else, but you're not returning them to the heap, you're not freeing them. 12:11:43 yes, i'm with you now -- thanks for talking through that with me. 12:11:52 :) 12:12:33 okay, followup question: what sort of flexibility do i have in a QF programme in terms of heap-space? i.e., how early do i need to worry "hell, i need to be using allocate"? 12:12:46 that's the distinction. Allocate/resize/free are the more general forms. Allot and friends just move a pointer back and forth in one preallocated block. 12:13:22 yes, i hadn't thought in terms of specifics, just in more general "allocate" for flexibility. 12:13:29 zpg, you have 32k or so of dataspace at HERE. If you need more, you may want to use allocate, or the palm os memory functions directly. 12:13:49 32k seems pretty substantial for the stuff i'm doing. 12:13:59 unless i'm mistaken, that's 16k cells, right? 12:14:16 bear in mind you can't allot at run-time with Quartus Forth. 12:14:25 yes, 16k cells. 12:14:41 er, 'at run-time' meaning in a stand-alone app. 12:14:50 indeed, i'm aware of the run-time allot issues 12:14:56 ran into them already :) 12:15:01 --- quit: guffer ("Changing server") 12:15:11 16k cells is pretty comfortable methinks 12:15:49 lots of room to breathe -- most of my programmes are little test scripts, sometimes more. but i demonstrated something to a colleague by simply including a memo rather than standalone. 12:16:11 sure. Just mentioning the limit. 12:16:17 no need to worry about generation yet. a similar issue to the "how to build a nice GUI" we were discussing recently. 12:16:38 right. 12:17:34 but in quartus you wouldn't want to dig yourself in, depending on a facility you can't easily turnkey. 12:18:06 like relying on run-time allot only to decide i want to generate a stand-alone? 12:18:47 you can work around that too, mind you; you can pre-allot dataspace, makePRC, and then de-allot at runtime, and then allot away madly. 12:19:33 all this to consider in the future. for now, i'm content to have a 32k playground for writing small prototypes 12:19:48 right, or relying on xts in dataspace, for instance. 12:21:13 yes, again something we've discussed. my code that relied on XTs was rather ugly 12:21:51 @@ and @! come in use for writing your own heap 12:23:02 simplifies the compaction move, but is slower if not much motion than the duplicate move and pointer chain modify approach. 12:23:26 I've been doing a bit of archeology. Having trouble finding out if IPL had recursion prior to IPL-V. 12:27:21 --- join: forther (n=forther@c-67-180-209-27.hsd1.ca.comcast.net) joined #forth 12:28:13 I did discover that car and cdr appeared in FLTL (think that's the name) before Lisp used them. 12:28:35 mobile right now, notes not with me. 12:29:05 --- part: azekeprofit left #forth 12:29:41 I've read car and cdr came from some assembler names for an ancient CPU 12:30:07 IIRC it was something with accessing address registers 12:30:16 --- join: nighty__ (n=nighty@sushi.rural-networks.com) joined #forth 12:30:38 they're ibm704 assembler macros. 12:31:40 alloted switch blocks could work, with var pointers returning or halting depending on how the memory switch block was set for use. 12:32:18 cADDRESSr cDATAr register ops 12:34:01 this makes sense, because CDR is the pointer to the next cell in Lisp and CAR is the data of the cell 12:34:14 car is contents of the address register, cdr is contents of the decrement register, both deriving from a particular instruction format of the ibm 704. 12:35:00 they're not exclusive to lisp, and as I said I've turned up their use in an earlier fortran-related thing. 12:35:46 in lisp they're used to access the left and right elements of a pair. 12:36:03 The names are a historical quirk. 12:36:56 why did lisp fail? cos hed and end made too much sense ;-) 12:37:28 lisp can hardly be said to have failed. 12:37:52 only jokin' 12:38:09 many languages did fail; some died at birth, others a short while later. Lisp didn't. 12:38:47 it was ok, but i would have remembered other things better than car/cdr 12:39:18 IPL-V was a very popular language for a few years, many implementations. Bit hard to find now though. 12:39:26 good cd in car promo subliminal though. 12:39:41 modern lisps have first and rest as aliases for car and cdr. 12:39:53 5+5 >6 12:40:23 5+4 also 12:40:32 why not 1st and lst? :P 12:40:45 one advantage to car and cdr is that you can form, for instance, cadr and caddr, and the names indicate the function. Firrst and firrrst, not so mich. 12:40:50 40% inefficiency? 12:41:29 --- quit: nighty_ (Read error: 110 (Connection timed out)) 12:41:33 luke, one reason is that 1st and lst are pretty freaking hard to distinguish! 12:41:47 :) 12:42:06 <# and #> and >>><># 12:42:12 two pixels difference on this gadget. 12:42:46 the 1st shall be lst and the lst shall be 1st! (after OCR, of course...) 12:42:58 <@ and @> 12:42:58 heh 12:43:54 what is >>><># supposed to be? 12:44:26 ># ># ># <# ># 12:44:37 --- join: azekeprofit (n=azekePro@82.200.251.36) joined #forth 12:44:41 ok... 12:44:55 tail of 4th element? 12:45:06 sweet 12:45:26 although # is chorded 12:45:37 and < > are too 12:45:43 Uh... Let's keep you away from mnemonic design decisions. :) 12:46:09 hence <@ and @> suggestion frpm MOVE style oredering and @ fuctional pointer usage 12:47:50 we can call the language "line-noise", with a .~[ extension for all source files. 12:48:22 btw: it's not difficult to build Lisp in Forth :-) http://forth.pastebin.ca/238011 12:48:25 : 2@ DUP @> SWAP <@ ; 12:48:55 instead of an obfuscation contest, the challenge will be to write code that can actually be read. Winner gets a partially-eaten Happy Meal. 12:50:16 http://humorix.org/articles/2000/09/unobfuscated/ 12:50:33 what sauce (pun intended) 12:50:57 shine: http://forth.pastebin.ca/233123 12:51:18 pun not comprehended, jacko. 12:51:31 happy meal with sorce? 12:51:44 ;-) 12:51:55 oh, does source and sauce rhyme for you? UK? 12:52:05 ya 12:52:08 is same 12:52:24 like their and there 12:53:41 and they're 12:54:37 Quartus_: your code looks good. And now with automatic GC 12:54:55 automatic gc? 12:55:28 garbage collection (ignore automatic) 12:56:21 you can free a list with that code. The atoms are untyped. I may build an extensible type system, I have an idea for one. 12:57:28 but you have to know where all lists are stored to implement a GC, which is difficult in Forth, if you mix it with "normal" Forth 12:58:09 if you're specifcally gc'ing list elements, it becomes easier. 12:58:34 I'm not sure it's worth doing, but maybe. 12:59:55 with a type system it should be doable, otherwise you don't know how to free car, e.g. it could be just some allocated memory or another list 13:00:16 right. 13:01:03 CFA in list item? 13:01:34 method table pointer in the cons. 13:01:42 better for binary trees 13:03:20 MFA = method field address? 13:03:54 method table address, if you like. I don't feel the need to make every acronym end in A. 13:04:04 --- join: jennyb (n=webmaste@figuk.plus.com) joined #forth 13:04:44 hi jennyb 13:05:08 AEA = A ENDING ACRONYM 13:05:49 the method table for a type would have xts for new, delete, display, etc. 13:05:51 AEA = ACRONYM ENDINGIN A 13:07:21 VIEW ACTION TASK ARRAY 13:07:35 with inheritance you'd have a list-based object system with minimal overhead. 13:08:31 sounds elegant 13:08:42 if fixed at 4 methods with overiding allowed, how does this control object method bloat? 13:08:46 yes, I plan to give it a try. 13:09:06 there would be some runtime overhead, if you don't specify the types of the words on stack and for locals 13:09:08 I have no plan to fix the number of methods. 13:09:37 IN OUT PROC MEM data processing interface 13:09:42 Hi 13:09:55 shine, locals are the devil's work. The runtime overhead is two memory fetches per method. 13:09:55 howdy 13:10:11 how's figuk today, jenny? 13:10:42 Quiet :-/ 13:11:00 so make some noise! :) maybe we should invite werty. 13:11:02 I like locales, but sometimes it's difficult to refactor when using it 13:11:35 locals are the antithesis of factoring. 13:12:20 Waybe he could tell us all about his wonderful new forth.. 13:12:52 yes, and that we're all FOOLS and LUDDITES !!!! 13:14:03 he's probably doing C++ right now 13:14:39 if c++ means 'wood alcohol', then maybe. 13:14:39 jackoring. why only four methods? 13:14:57 input process output and memory 13:15:29 Exomples? 13:15:32 where 'process' is a magical 'do what I mean' subroutine? 13:15:43 user input response method, processing method, view output method and persistance serialize store and document method. 13:16:56 even just restricting yourself to methods that all types need, there's more than 4. 13:17:55 Basic English, gets by with 8 verbs 13:18:15 action method get current time into A, view method display current time minus A, process method synchronize time with server atomic clock, memory method instanciate date time object in binary serializable format. 13:18:42 type factoring may take care of this 13:18:52 and a parcel of ancillary words, adjectives, adverbs, prepositions, participles that have contextual meaning. 13:20:02 --- quit: Snoopy42 (Read error: 145 (Connection timed out)) 13:21:10 Yes 13:21:38 Quartus_: I'm still learning Forth and maybe my code looks too much like C, how would you rewrite this without locals? http://forth.pastebin.ca/238089 13:21:49 otherwise you could use basic english only to specify eight actions on a noun, or eight actions by a noun, which would be pretty limiting. 13:22:08 (it stores the text in input buffer until ' in memory) 13:22:22 shine, I can glance at it but until about 11 eastern I'm mobile, so rewrites will be tricky. 13:22:44 type eg visible.square square side has dimension changing aspects, visible side has presance in clip box aspects 13:23:10 shine -- aaigh! My eyes! :) 13:23:34 yes, maybe a little bit too much code for such a simple task :-) 13:23:38 eyebleach time :) 13:23:45 composite typing 13:24:17 loooong definition, no factors, with locals, a loop inside a conditional, and unloop! All at once! If there was pick and roll I'd be in a seizure! :) 13:25:14 what is the word supposed to do? The stack diagram is perhaps inaccurate and is not enlightening, and the code is not clear. 13:26:18 the stack diagram is accurate. It is part of my assembler: first it stores a token, then copies the characters from input buffer to memory until ' 13:27:07 it can most assuredly be factored and written completely without locals. 13:27:34 and perhaps, then, the saints will stop crying :) 13:27:50 --- quit: neceve (No route to host) 13:28:39 re: 1st and lst, lst looks like list 13:28:47 in its way, I think C does more conceptual harm than BASIC. 13:29:23 also, i don't see the problem with car/cdr (or if you like, first/last) 13:29:28 compare to ! >r @ etc. 13:29:31 Would you like to post something about composite typing on our forum? 13:29:45 hi jennyb, i believe you're a FIG-UKer 13:30:09 heeey... Oh, I see what you're saying. :) 13:30:09 http://ccgi.figuk.plus.com/forum/ 13:31:11 ZPG, Yes been quiet for a long time, just trying to get things moving again 13:31:15 Quartus_: hmm, the stack diagram is not correct, I've refactored it some times ago :-) it is "( -- )". I'll try to rewrite it ... 13:31:40 jennyb: i'm currently situated in cambridge. i believe i missed the euroforth conference by a hair 13:32:04 shine, so it's also a word that has no stack activity, and deals entirely in side-effects, coupled only by global state? Oh dear oh dear. 13:32:23 Have you seen the papers? 13:32:32 (also, re: the earlier lisp discussion, if car and cdr are worrying you, and you're on an OLD system, it takes about a 3 atom-long list to define the aliases -- no biggy) 13:32:59 yes, but I think that's no problem, because it's part of the assembling process when the tokens are generated to memory 13:33:13 --> (defalias 'first 'car) <-- or something similar. 13:33:31 5 atoms if you're counting quote expansion. 13:33:48 jennyb: i took a look at the euroforth papers, some interesting stuff there. what's the status of figuk these days? 13:34:39 shine, it suggests to me that the overall factoring of the thing needs looking at. 13:35:01 Forthwrite in defunct ATW Chris J has a teaching job and no time for nditing 13:35:33 you should be able to say what the word does without conjunctions in the sentence -- it should do one thing. 13:35:35 i see. 13:36:25 Quartus_: what about abstractions, eg: : abstraction word-a word-b word-c ; 13:36:36 "abstraction calls word-a, word-b and word-c" -- surely that's ok. 13:37:06 that's just a re-phrasing of the source. What does the word do? 13:37:16 Quartus_: what's wrong with using "," and the input buffer? parse-string is part of the assembler, which is started with assemble-start and looks like this: http://forth.pastebin.ca/238134 13:37:40 Quartus_: oh i see your point. 13:41:41 At present I'm just trying to collect interesting stuff on the forum to see if it can be revived in some form 13:45:58 posted 13:48:49 Thanks 13:53:13 You suggest the dictionary, when it comes to a an unknown with a . in the middle, looks up the first part and then..? 13:54:41 multiple dictionaries for a start 13:57:11 as each composite has 4 methods then an allot 4, selecting which method, first an object composite class key has to be specified, and then one of 4 functions has to be called. 13:58:50 --- nick: TreyB_ -> TreyB 13:58:56 alarmevent datetime activate 13:58:56 ? 13:59:25 --- quit: nighty__ ("Leaving") 13:59:53 alarmevent datetime process/display/document 13:59:54 --- join: nighty_ (n=nighty@sushi.rural-networks.com) joined #forth 14:01:16 I'm beginning to see where you're going 14:01:25 kind of a model view controller persistance interface 14:02:18 --- quit: lukeparrish (Read error: 110 (Connection timed out)) 14:02:26 alarmevent sound activate ? 14:02:55 Bruce McFarling had somethig years ago he called the Go Show Tell interface 14:02:57 --- nick: arke_ -> arke 14:03:05 --- mode: ChanServ set +o arke 14:04:36 This is 'Go Show Tell Keep' 14:05:18 alarmevent sound go 14:05:47 input - process - output and memory 14:06:17 also 4 is easier 2^n 14:08:54 dictionary is stat code, variable space heap is stat data, stack is kinet data, return stack is kinet code, so 4 growing areas. 14:09:55 hence 4 reg model at http://indi.microfpga.com 14:10:13 --- join: lukeparrish (n=docl@74-36-211-202.dr01.hmdl.id.frontiernet.net) joined #forth 14:10:40 --- quit: Shine (Nick collision from services.) 14:11:53 I saw that on your profile, thanks. Must go soon. You"ve given me a lot to think about! 14:12:22 ok ;-) 14:13:15 must join the log burner myself 14:14:44 --- part: jennyb left #forth 14:19:56 --- join: Shine (n=Frank_Bu@xdsl-84-44-133-38.netcologne.de) joined #forth 14:34:52 --- quit: crest_ (Read error: 110 (Connection timed out)) 14:53:46 * erider reappears 14:58:33 --- join: virl (n=virl@chello062178085149.1.12.vie.surfer.at) joined #forth 15:00:04 --- join: Razor-X (n=user@user-11faaoj.dsl.mindspring.com) joined #forth 15:25:10 I've simplified my code at http://forth.pastebin.ca/238089 , now it looks like this: http://forth.pastebin.ca/238368 15:25:44 is it safe to use move first, and then to do an allot? 15:37:01 --- quit: Cheery ("Download Gaim: http://gaim.sourceforge.net/") 15:41:26 Shine: how does you code work? 15:43:40 counted-string-token is a constant and parse-string copies anything from input buffer to data space until the first tick (') 15:45:25 --- join: El_Karim (n=lucas@bas3-montreal28-1177918589.dsl.bell.ca) joined #forth 15:45:40 hi ppl 15:46:01 howdy 15:46:39 erider: ...and the number of characters, so "parse-string abc'" would be equal to "counted-string-token c, 3 c, 97 c, 98 c, 99 c," 15:47:04 i want to make a program for movement detector using my webcam with isforth 15:47:28 do you think that it is difficult? 15:48:27 shine that is interesting 15:48:38 why? 15:49:24 because I looking at how its parsing 15:49:28 ? 15:50:21 --- quit: jackokring (Read error: 110 (Connection timed out)) 15:51:57 Shine: how would you use the word in general for other programs or how would you factored it 15:52:36 do you mean parse-string? 15:52:45 yes 15:54:03 I'm using it from another word, parse-instructions, which builds a list of tokens for my assembler. If a tick is read, it is called to parse the rest of the input 15:54:25 --- part: El_Karim left #forth 15:54:51 cool! 15:55:02 how do you test the word Shine? 15:56:03 I'm testing it with the Win32Forth command line 16:03:25 cool! 16:25:51 Are there any Forth implementations on the Z80 based TI calculators? 16:29:28 erider: but using "parse" is too easy, so I've tried to write it by myself: http://forth.pastebin.ca/238492 16:29:50 Quartus_, do you think this looks more like Forth? 16:30:10 one sec 16:30:52 certainly more forth-like! 16:31:12 thanks :-) Any hints what I could improve? 16:31:51 I'll be better positioned to analyze it in a few hours. 16:33:53 ok. I'm not sure, if the usage of >r is a good idea, but with this trick I don't need a local or stack acrobatics 16:34:34 I'll give you a more detailed critique when I'm back at a real computer. 16:35:34 Moderate use of the return stack is fine. 16:38:10 I guess I'll attempt to write a Forth meself then. 16:38:22 Shine: how does >in works 16:38:53 it returns an address where the index into the input buffer is stored 16:39:04 razor, why not learn Forth instead? 16:39:13 I've learned some. 16:39:20 This is after I get better with Forth, duh. 16:39:26 erider: pointing to the position at which characters are not yet parsed 16:39:51 ah ok :) 16:40:02 Forth just seemed more fun/more powerful than C and a lot less cumbersome than ASM on the TI, so of course I want to learn Forth first. 16:40:07 Any repositories of example code? 16:40:49 razor, here and there. http://quartus.net/search 16:41:43 Thanks. 16:43:47 great quartus you got the Search thingy working 17:08:54 I did. 17:10:28 * zpg bursts back in 17:10:48 Quartus_: what are you using for IRC? 17:21:42 (can't find much on Dijkstra/Moore btw) 17:21:52 barring some structure programming citations by the latter. 17:23:50 mirc. 17:23:56 wifi? 17:24:03 oh, right now? Jirc. Blackberry. 17:24:16 * zpg nods 17:24:31 what does the blackberry run? its own OS, Palm? 17:24:47 Its own. Java-based. 17:24:51 eww 17:25:10 seems like overkill unless they're putting the VM in PROM i guess. 17:26:03 it's a java chipset, so I think the vm is pretty lean. 17:28:04 using >r and >in is really nice. I've written a function to call code on my Forth VM: http://forth.pastebin.ca/238592 but I'm not sure, for me the first line of eval looks like write-only code. Do I learn to read such code when I do more Forth or should I change my coding style? 17:29:43 change your coding style; that's hard to read. 17:29:49 more factoring would help 17:30:28 but writing was easy, maybe some more lines and comments? 17:31:41 fewer lines. More factors. 17:32:39 each factor should be so well-named and so short that it doesn't need comments. 17:32:54 so Quartus_, where's the blackberry qforth port ;) ? 17:33:26 you want a forth written in java that can't create stand-alone apps? 17:34:05 --- join: snowrichard (n=richard@12.18.108.162) joined #forth 17:35:58 what about this http://forth.pastebin.ca/238607 ? 17:36:33 Quartus_: i was only jibing, but one that produces java bytecode would probably be more apt. 17:37:04 i'm not sure whether one exists already. i believe the java vm is in postfix intermediate form 17:38:34 wouldn't work on-board. 17:39:09 shine, right direction. 17:40:24 I'm not sure if I should refactor "eval" even more, it would create many words which I'll never use again from other words 17:41:36 that's not the only reason to factor. 17:42:24 in fact it's not even top of the list. 17:43:04 maybe one factor in 40 turns out to have broader applicability. 17:43:22 --- join: Amanita_Virosa (n=jenni@adsl-69-154-191-166.dsl.hstntx.swbell.net) joined #forth 17:45:48 Quartus_: I think I've read somewhere about this: in the end the code should be like an english text (but in postfix notation) and every word is just one short sentence 17:46:52 That's the general idea. 17:47:19 --- quit: JasonWoof ("no power to our block") 17:50:20 --- quit: snowrichard ("Leaving") 17:51:45 ok, that's fun :-) How about this: http://forth.pastebin.ca/238635 17:52:43 (hmm, dump-stack must be moved to eval) 18:05:07 moving the right way. Read-unparsed-string needs work. 18:05:27 Quartus are the libraries in Quartus forth for palmOS really needed? 18:05:51 needed? Depends on whether you need what's in'em. 18:05:57 --- quit: virl ("Verlassend") 18:06:36 but core forth some be enough right? 18:07:15 yes, it's not minimal. 18:12:23 Quartus_: why can't one produce java bytecode on-board? 18:14:21 it could. It wouldn't run. Apps have to be externally signed. 18:17:15 Quartus_, do you mean like the following? Looks a bit too much factored for me 18:17:23 : unparsed-start ( -- addr ) source drop >in @ + ; 18:17:25 : unparsed-end ( -- addr ) source + ; 18:17:26 : unparsed-string ( -- addr u ) unparsed-start unparsed-end over - ; 18:17:28 : read-unparsed-string ( -- addr u ) unparsed-string dup skip-input ; 18:17:58 hey! Better. 18:19:00 but 4 lines instead of just "source drop >in @ + source + over - dup skip-input" 18:19:44 yes, four clear, well-named, testable lines. 18:20:43 I'm not saying your factoring is ideal, I'd have to analyze it, but it's much improved. 18:21:57 I have an 'unparsed-source ( -- c-addr u )' word. 18:23:56 Quartus_: ah ok, i didn't know about external signing. a shame. 18:24:14 btw, this is quite interesting: http://www.csclub.uwaterloo.ca/media/Eric%20LaForest:%20Next%20Generation%20Stack%20Computing.html 18:33:51 I'll have to wait to check that out. I think I recall it. 18:35:48 it's "Eric LaForest: Next Generation Stack Computing" 18:35:58 that was a good video 18:36:31 made it on /. a while ago and the people there (it's /. remember) were just incredulous "4k for a kernel? what a load." 18:36:50 well, 4k is a minimal kernel. 18:37:24 they were comparing the size of other OS kernels with it though in their post 18:38:55 4k would be a pretty minimal kernel whether on a stack machine, or not. 18:43:47 Quartus_: an unparsed-source: >in @ dup source rot - rot rot + swap But I assume you don't like it, because it uses rot :-) 18:48:20 I wonder if it is possible to write a program, which can simplify a given word to the smallest possible word by rearranging and substituting dup, rot, swap etc. 18:54:09 shine, that seems clumsy; I'll have to check mine when I'm back. 18:54:14 --- quit: Amanita_Virosa ("Womp!") 18:54:25 rot isn't evil. 18:54:29 roll is evil. 18:55:21 but anyway 'unparsed-source' is a good factor, doesn't need to be subfactored in my opinion. 18:55:52 I'm in transit now, so I can focus on the conversation if there is any :) 18:59:03 you are right, this is better (but uses more calls instead of maybe native instructions like rot) : 18:59:05 : unparsed-source ( -- addr u ) source drop >in @ + source + ; 19:01:33 urgs, this was wrong :-) Have to think again 19:06:16 --- quit: Quartus_ ("used jmIrc") 19:06:56 --- join: Quartus_ (n=Quartus_@209.167.5.2) joined #forth 19:06:56 --- mode: ChanServ set +o Quartus_ 19:07:13 incidentally, why are z"..." strings considered wasteful/inefficient? 19:07:15 I miss anything? :) 19:08:02 zero-delimited strings are inefficient because you have to wander through them to find the zero every time you need the length, or the end-point. 19:08:38 I missed anything after I said I am in transit, btw. 19:09:17 phone call. Wreaks havoc with the tcp/ip. 19:09:30 All you missed was: 19:09:31 (22:06:19) Shine: you are right, this is better (but uses more calls instead of maybe native instructions like rot) : 19:09:31 (22:06:20) Shine: : unparsed-source ( -- addr you ) source drop >in @ + source + ; 19:09:31 (22:08:49) Shine: urgs, this was wrong :-) Have to think again 19:10:04 Thanks :) 19:10:22 np 19:11:44 you also need to copy a zstring if you need a sub-zstring. 19:13:06 -- addr you, eh? 19:14:22 I've written "u", must be crc's IRC program 19:14:30 : unparsed-source ( -- c-addr u ) source >in @ /string ; maybe? 19:15:28 can't easily test from here -- the telnet program is a bear. 19:16:46 Quartus_: ah, i see (re: z" ...") 19:18:00 ok, I ssh'd and tried that definition under gforth. Looks good. 19:21:08 zpg, strlen is an O(n) operation, and one that has to be repeated a lot. 19:26:43 * zpg nods 19:27:10 the /string is nice, but I want to use only core (and maybe some core ext) words, because later I want to compile my VM assembler within the VM assembler and I don't want to implement too many words for it 19:27:15 that video was quite intriguing, though he went off on a few over-detailed tangents given the audience. that and describing 'over' as 'tuck'; the horror! 19:27:39 shine, so write /string in core words. It's real short. 19:28:25 but just ">in @ dup source rot - rot rot + swap" is shorter :-) and I don't think that I need it another time 19:29:12 I've tried it the other way around, but it will be a bit longer: "source >in @ dup rot swap - rot rot + swap" 19:29:39 factoring is really not primarily about re-use. 19:30:13 that sequence is horrible forth, and all but unreadable. 19:30:41 even factoring out /string, it's fewer symbols all told. 19:31:38 and more readable, more maintainable, and I'll warrant you find another use for /string. 19:32:48 and more than likely, another use for 'unparsed-source', too. 19:39:32 right, off to bed with me. night chaps. 19:39:32 --- quit: zpg ("ERC Version 5.1.3 (IRC client for Emacs)") 19:39:54 Quartus_: ok, maybe you are right, but then /string is just the same unreadable code: "dup rot swap - rot rot + swap" 19:43:24 --- quit: Quartus_ (Read error: 104 (Connection reset by peer)) 19:49:40 --- quit: erider ("I don't sleep because sleep is the cousin of death!") 20:19:15 --- join: Quartus_ (n=Quartus_@209.167.5.2) joined #forth 20:19:15 --- mode: ChanServ set +o Quartus_ 20:19:39 fun. Phone or data, pick one. 20:26:28 Shine, that's a craptastic /string -- try : /string tuck - >r + r> ; 20:27:11 if you lack tuck, it's : tuck swap over ; 20:29:14 yes, that's nice. But in my assembler maybe I have other possibilities, if I implement it in my VM assembler and not in Forth 20:29:34 Ok, but at least you're running out of arguments for not factoring :) 20:30:26 what do you think of an IRC interface for my upcoming Forth VM machine? Then there would be a user "forth" in this cannel and talking "forth: : squares 11 1 do i i * . loop ; squares" would result in "1 4 9 16 25 36 49 64 81 100 ok" (of course, cycles limited, memory checking and output size limited) 20:30:43 Fun. We could spend time crashing your bot. :) 20:31:34 it's a VM with a cycle counter, which stops at some limit and all memory accesses are checked, so no luck :-) 20:31:55 So no closed loops? no recursion overflow? no allotting all available memory? 20:33:27 yes, everything is checked. The VM itself is very small 20:34:31 if it's going to be a public bot in the channel, please make it a standard forth, at least. 20:35:22 that's the current VM code: http://forth.pastebin.ca/238950 (has to be refactored still a bit) 20:36:27 oh. So it's not a Forth. 20:37:43 it is Forth. Currently I'm writing the core in my VM assembler. "type", "evaluate", number parsing etc. are already working in parts 20:38:00 That paste isn't a Forth -- it's a VM for a stack-based assembler language. 20:39:01 right, this is the current kernel, which implements Forth by calling "evaluate-code" on the VM : http://forth.pastebin.ca/238953 20:40:33 but there are bugs in ":" and ";", loops and conditionals are missing and the code is a mess :-) 20:40:50 Ok. 20:45:01 Out of curiosity, why are you implementing a Forth? 20:45:35 --- quit: segher (Nick collision from services.) 20:45:36 it's fun and I want to use it for my FPGA 20:45:48 --- join: segher (n=segher@dslb-084-056-176-200.pools.arcor-ip.net) joined #forth 20:49:16 one of my projects is the one-wire protocol: http://www.frank-buss.de/vhdl/spartan3e.html but using VHDL for such high level tasks is cumbersome. Would be nice to have an interactive environment like Forth on the FPGA 20:51:51 I see. 20:52:14 maybe you can find a security hole in my VM? read/write-word/byte is safe 20:52:37 I don't know; I'm not familiar with what it's written in. 20:53:13 The assemblerish part, anyway. 20:54:33 the assemble part is irrelevant, as long as the VM is safe ( http://forth.pastebin.ca/238950 ) 20:55:12 I don't know that much useful security analysis can be done by eyeballing; you'll want to write and apply tests. 20:56:21 that's a good idea, too. Maybe filling the VM memory with random bytes and jumping to random locations and testing boundary cases 20:56:59 If you factor that code further, you'll have less to test. 20:58:36 yes, but the important things are the VM instructions and ": v-emit stack> emit ;" can't be factored very much :-) 20:58:52 stack> stack> >stack sure can. 20:59:58 You could also generalize the stack mechansims. 21:00:13 you mean e.g. by defining a word-defining word, which does a "stack>" first? 21:00:21 That's one option. 21:04:21 --- join: JasonWoof (n=jason@c-71-192-26-248.hsd1.ma.comcast.net) joined #forth 21:04:22 --- mode: ChanServ set +o JasonWoof 21:04:24 for my assembler I've used a table like this: 21:04:25 opcode-count++ ' one-argument-instruction ins lit 21:04:27 opcode-count++ ' no-argument-instruction ins @ 21:05:14 I'm afraid that has no meaning to me out of context. 21:05:26 I should rewrite the "ins" word to avoid duplicate code like "opcode-count++". Is it often used in Forth that you define words, which parses own syntax? 21:05:47 Um, not sure what you mean. 21:06:42 like the eval word, which reads the rest of the input buffer and passes it to another word, or like my assembler, which parses anything in it's own syntax until ".end" 21:07:03 That's not how most Forth assemblers work. 21:07:45 yes, I've read about "code" and the concept how to implement cross-compilers, but this was after I nearly finished my assembler :-) 21:08:51 Most simply define a set of mnemonic words and modifiers in an assembler wordlist. Using the assembler is then simply a matter of putting that wordlist in the search order. The subsequent Forth source takes the actions specified by the words in the assembler wordlist, until one of the words kicks the search-order back to what it was before. 21:09:56 but how do you implement forward references with this concept? 21:10:11 For structured conditionals? Same way you do it in Forth. 21:12:32 You can implement labels if you want them; I recommend against it, but it's not hard. 21:15:08 maybe the reason that I needed it was that my kernel is a bit like spagethi code. I guess one way to implement conditionals would be to push the address of the "if" branch address on stack and on "then" the address is filled 21:16:40 That's how it works in Forth. 21:17:04 Likewise with BEGIN/UNTIL, BEGIN/AGAIN, BEGIN/WHILE/REPEAT, IF/THEN/ELSE, etc. 21:17:28 The assembler versions usually work on the status flags, rather than on stack items. 21:18:06 my assembler is very simple, it doesn't have status flags, it's very close to Forth 21:18:37 If you've got jz, you're testing for something. 21:19:02 yes, jz loads top of the stack and jumps, if zero 21:19:16 Ok. So your conditionals will be pretty much exactly the same as in Forth. 21:19:31 yes, this was the idea 21:20:00 --- join: arke_ (n=Chris@pD9E06C92.dip.t-dialin.net) joined #forth 21:20:01 in hardware for the FPGA it could be optimized by storing top of the stack inside a VHDL register 21:20:47 http://www.walterzorn.com/jsgraphics/jsgraphics_e.htm 21:20:59 High Performance JavaScript Vector Graphics Library. 21:22:08 High Performance JavaScript is an oxymoron :-) 21:22:14 I was impressed 21:22:36 even in konqueror, which is generally slow as mud when it comes to javascript 21:23:15 What's the deal? Isn't SVG supposed to do this? 21:23:19 I've never seen line drawing in javascript before, let alone seen it done well. 21:23:37 Quartus: yes, but SVG does not have good browser support 21:23:55 the more you click on drawLine, the longer it needs 21:23:59 then why didn't this knucklehead work on that, instead of this? 21:24:21 he wanted something that would work on existing browsers? 21:24:23 he was bored? 21:24:25 dunno 21:25:07 I'm in the 'dunno' camp. You can only call this 'high-performance' if you don't compare it to anything else. 21:25:28 of course. and he says that 21:25:40 Yet he calls it 'high-performance'. Right there in the title. 21:26:04 However, don't compare the performance with Java or stand-alone applications! Making a browser create DIV elements is of course much slower than just colouring pixels. Even this JavaScript Vectorgraphics Library can't escape from this fundamental restriction - it just tries to squeeze out the maximum of what's possible. 21:26:16 So we should compare the performance to what? 21:26:35 what's your problem? you don't have to use it 21:26:52 some people might want to be able to draw lines, and have it actually work in all the major browsers 21:26:58 a nice application for drawing lines with JavaScript is this: http://www.recmath.org/contest/test.php E.g. try my best solution for length 7: "7 AbcCcBcaCBABbcaaabBCAAAAAAAAAAAACBbaaacbBABbCBcBCaC" 21:27:03 this is the only way I know of that would actually work on my computer 21:27:13 It takes anywhere up to 400 milliseconds just to draw a line. 21:27:14 I don't have flash, or java, or svg 21:28:26 sure, for a long one 21:28:32 there still isn't any other way to do it 21:28:39 as he said, it's not fast compared to other things 21:28:53 but (unlike other things) it does actually work in my browser 21:29:28 It's high-performance compared to mailing a crayon and a piece of paper to Tim Berners-Lee in a self-addressed-stamped envelope. 21:29:42 drawing short lines (eg 1/2") takes about 7ms for me 21:30:12 Quartus: for reasonable length lines, it's faster and more bandwidth effecient than sending images 21:30:17 try drawing 10 short lines, looks like it increases not linear 21:31:24 Shine: eh? I thought the timing was just for the last line you did? 21:31:56 not in my browser (Firefox) 21:33:41 and even 7 ms is not very fast, compared to 10 million filled triangles per second and more of standard graphics cards 21:33:53 riiight 21:33:59 compare javascript to 3d cards 21:34:07 I don't need 10 million filled triangles per second on my browser, but this is slow. 21:34:20 of course it's *(&@$@#$ slow 21:34:33 what impresses me is that it can be done at all. 21:34:53 You can write software in INTERCAL, too, but I don't recommend it. :) 21:35:44 it's doing raster graphics in a language/environment that does not allow you do draw at all 21:35:54 it can only output html 21:36:38 It's not really doing raster graphics. It's doing tiny divs in various colours. Those aren't necessarily as small as a vertical pixel. 21:36:39 --- quit: arke (Read error: 110 (Connection timed out)) 21:36:46 you can draw lines and images mixed faster in JavaScript, see e.g. http://www.google.com/apis/maps/documentation/polylineencoding.html , at least the scrolling is smooth in my browser 21:37:47 I've been wondering how google did that. reading... 21:38:01 Admittedly my computer isn't all that fast, but once I render the half-dozen shapes in the test box on that page, scrolling is very slow. 21:38:26 btw: the Google Maps API is really nice and easy to use in own projects 21:39:03 it encapsulates all the browser quircks in an prototype based API, with closures for all kind of events etc. 21:39:34 wait, what am I supposed to see? 21:39:37 We already have canvas> element for raster graphics in js. 21:39:40 I get a little google map. how does it work? 21:39:45 * 21:40:21 you can drag it with the mouse. See source code of the page to see the JavaScript how it works. It draws the poly lines on-the-fly on the map 21:41:13 (or the overview for more samples: http://www.google.com/apis/maps/documentation/ ) 21:41:26 does in draw the lines on the server or the client? 21:41:38 I think on the client 21:41:40 View the source. 21:41:49 like with the markers 21:43:22 e.g. you can download a XML file from your server with a Google Maps function, and display all marker in it on the card. I'm using this in a commercial project currently, but embedded in Flash 21:44:18 --- quit: Razor-X (Read error: 110 (Connection timed out)) 21:44:36 see http://www.flashearth.com/ for an example what's possible in combination with Flash 21:44:43 I assume server side, I'm looking it up 21:45:01 The lines are drawn in the client, I think. 21:45:05 when I click "hybrid" I get a grid of boxes with the broken/loading image icon in them, which makes me think it's server side 21:47:27 this line makes me think it's server-side: "This algorithm is needed if you wish to calculate encoded polylines on the fly via a server process, for example." 21:47:56 the implied alternative is do polylines with pre-determined coordinates 21:48:13 in which case you can calculate the parameters on their website 21:48:28 oh, the quote is from: http://www.google.com/apis/maps/documentation/#Encoded_Polylines 21:48:54 I think that's the encoding of the polylines that's optionally done on the server side, not the drawing. 21:51:18 Quartus: did you read the paragraph? 21:51:44 No, I read the sentence you pasted. The source shows the polyline is encoded in a special format. 21:52:39 right. the parameters to the poly-line thing are encoded 21:53:10 Also I can actually see it redrawing the path on the map. 21:53:34 that sentence is a bit out of context, but the meaning I got from the paragraph, was that if you don't know the coordinates until runtime, then you'll need to implement their algorithm to encode the parameters 21:54:10 the "via a server process" seems unnessesary for this meaning, but is thrown in there 21:54:15 You'd need to encode them somehow. 21:54:55 I think the lines on the map are PNG images, or some such 21:55:38 I don't think that they are generated by the server. But trying to decode the source at http://maps.google.com/mapfiles/maps2.66.api.js is a little bit difficult :-) 21:59:59 sheesh 22:00:01 that's been scrambled 22:05:21 the images are cached, e.g. http://kh3.google.com/kh?n=404&v=11&t=tqstqrqrrqsrqqrr , which is without lines. So as long as they don't send an extra image for the lines (and I can't find it in the cache), they are drawn on client side 22:07:30 I can see it draw the line, as I think I mentioned. :) 22:08:23 looks like my computer is too fast or my eyes are too slow to see it :-) 22:08:39 My computer is busy doing something else, so it's low on cycles. Helps. 22:09:41 It flashes white bounding lines while it draws. 22:09:49 That's under Opera. 22:17:27 Maybe I'm being somehow deceived by all this exciting javascript action? 22:18:34 say it ain't so! :) 22:28:37 would be nice to have Forth as a scripting language, like Microsoft has started with this very limited sample project: http://groups.google.de/group/comp.lang.forth/msg/fc59aacc148f3835 22:29:36 it should be possible to compile it on-the-fly, which will result in really high-performance, like with Java applets, but without the startup-delay 22:30:49 That is some afternoon hack by a guy who knows next to nothing about Forth, unfortunately. 22:32:09 but the skeleton for building your own scripting language could be re-used and filled with a real Forth 22:32:27 (if you are working on Windows) 22:33:27 If the skeleton is by the same guy who wrote that he 'heard Forth had a standard' without bothering to google for it, then I'll just say no, thanks. 22:33:44 :-) 22:34:59 I'm grateful to so-called professionals who reveal their complete bumbling incompetence early; it saves a lot of grief. 22:50:42 bbl 22:50:44 --- quit: Shine ("Chatzilla 0.9.75 [Firefox 1.5.0.7/2006090918]") 22:51:36 --- join: Razor-X (n=user@user-11faaoj.dsl.mindspring.com) joined #forth 22:52:06 --- quit: forther (Read error: 104 (Connection reset by peer)) 23:03:16 --- join: forther (n=forther@c-67-180-209-27.hsd1.ca.comcast.net) joined #forth 23:46:33 --- quit: forther (Read error: 110 (Connection timed out)) 23:59:59 --- log: ended forth/06.11.04