00:00:00 --- log: started forth/06.10.20 02:09:18 --- join: Cheery (n=Cheery@a81-197-19-23.elisa-laajakaista.fi) joined #forth 03:05:23 --- quit: Anbidian () 03:25:18 --- quit: arke (Read error: 104 (Connection reset by peer)) 03:29:12 --- join: arke (n=Chris@pD9E059C7.dip.t-dialin.net) joined #forth 03:29:12 --- mode: ChanServ set +o arke 03:42:32 hi 03:43:24 Hi. 04:01:44 Hi 04:03:43 Hey. 04:12:59 Whats up? 04:16:13 tuning up my pattern-matching stuff. 04:18:57 hehe, that one you show me last time? 04:19:15 Boiled it down to two public words, pattern-search and pattern-match. 04:19:28 It handles escaped wildcards now. 04:19:29 Could you show the source code at some point? I'd like to see what kind of solution you have. 04:20:03 Yes, I will. I'll need to post the prerequisite code as well, some common-usage words like skip and scan and split. 04:20:41 You seem to use the *?\ -matching syntax, right? 04:21:22 s" Now is the time for all good men" s" t*d" pattern-search . type -> -1 the time for all good 04:21:25 Right. 04:22:33 Likewise, s" Now is the time for all good men" s" *o*t*d*n" pattern-match . -> -1 04:23:37 s" Now is the time for all good men" s" *ow???the*" pattern-match . -> -1 04:24:45 and with escapes, s" Cheery?" s" ?ry\?" pattern-search . type -> -1 ery? 04:29:38 cool 04:32:24 s" Now is the time for all good men" s" N*n" pattern-match . -> -1 too, but I imagine you figured that. :) 04:40:34 I could cut it down to pattern-search only, and require something like s" ^N*n$" to do whole-string matching, but it seems to me thus far that it's a convenience to have pattern-match. 04:57:28 I wouldn't add ^ or $ unless you decided to go for full-up regular expression matching. 04:57:55 Well, the ? and * do double-duty as well, depending on what variant of pattern-matching you're using. 04:59:07 It occurs to me it might be useful to be able to pattern-match with start and/or end markers, so a string-find tool could do either a partial or a full-line match, without having to decide whether to call pattern-search or pattern-match. 05:00:39 * TreyB bails to take his car in for minor repairs. 05:16:44 --- join: zpg (n=user@user-5440eceb.wfd80a.dsl.pol.co.uk) joined #forth 05:18:20 salut 05:21:26 --- join: virl (n=virl@chello062178085149.1.12.vie.surfer.at) joined #forth 05:34:11 --- join: timlarson_ (n=timlarso@65.116.199.19) joined #forth 06:06:35 --- join: arke_ (n=Chris@pD9E054F6.dip.t-dialin.net) joined #forth 06:07:34 --- join: Ray_work (n=Raystm2@199.227.227.26) joined #forth 06:18:54 Good morning. 06:23:01 Quartus, does OS 3 or OS 4 on the Palm have a TCP/IP stack built in? I haven't figured out the relationship between the modem capability and the applications yet. 06:24:22 --- quit: arke (Read error: 110 (Connection timed out)) 06:50:38 --- quit: madwork (Read error: 104 (Connection reset by peer)) 06:51:14 --- join: vatic (n=chatzill@ool-45740b1c.dyn.optonline.net) joined #forth 07:32:17 hey, ho, hey, ho. 07:32:43 * Ray_work can hear hip-hop eminating from the warehouse. 07:34:48 Time to go on a killing spree 07:36:57 Ray_work: I'm sending your Palm Vx out in just a few minutes... :-) 07:41:24 --- join: madwork (n=foo@204.138.110.15) joined #forth 07:52:05 oh vatic. Man! I'm in your debt. Thank you so much!. :) 07:52:21 I'm gonna be a real forther thanks to you. :) 07:55:57 Ray_work: don't mention it! No color tho... :-( 07:56:11 --- nick: vatic -> vatic_away 07:56:44 I'll get over no color :) 07:58:16 --- join: snowrichard (n=richard@12.18.108.162) joined #forth 08:36:47 Vx? which forth was that? 08:38:41 vx is a palm model 08:48:17 --- join: erider (n=erider@unaffiliated/erider) joined #forth 08:48:23 hi all 08:51:47 in what way is ray_work not already a real forther ? 08:51:54 you ARE in this channel arent you ??? :P 08:53:33 hi I440r 08:53:39 :) 08:53:49 whats the word of the day :) 08:54:31 what is ? 08:54:44 "what" is the word of the day 08:54:45 heh 08:55:07 Isn't it usually "legs"? 08:56:55 ya lost me :) 08:57:06 You know. "Help spread the word." 08:57:19 Oldest teenage joke in the book. 08:57:23 --- nick: vatic_away -> vatic 08:57:32 rite 08:58:02 Ray_work: package out to you! 09:00:24 wb vatic. 09:00:38 :) /me a tear! :) 09:01:16 Ray_work: have fun with it. Also, be sure to get the xtra stylus out of the package. ;-) 09:03:43 ooh okay, thanks for the heads up. 09:04:20 legs is the word hehe 09:05:46 cool, spread the word. 09:08:21 vatic, I've been trying to figure out what i'll 'pay-forward' in return of your deed. 09:11:26 Ray_work: no hurry. Make sure everything works for you... 09:16:12 will do. 09:29:05 gotta go! 09:29:20 --- quit: vatic ("*poof*") 09:35:54 ok, what would be a good name for a word thats swapped the contents of two memory addresses ? 09:36:10 most likely variables 09:41:38 @swap! 09:41:56 @ get it swap it and then ! store it 09:44:07 well no. that only moves one variable contents to another variable 09:44:42 it's your word.. 09:48:35 I440r: new word name that swaps two mem addresses = dyslexic. 09:48:48 no 09:48:54 swaps the contents of two memory addresses 09:49:11 varswap? 09:50:10 memswap? 09:50:15 memsw 09:50:19 memswp 09:50:20 vswap ? 09:50:24 iu dunno 09:50:27 cant decide lol 09:50:35 it's not a variable that your swaping, is it. 09:51:10 it will most likely be two varibles but is not restricted to them 09:52:11 some sort of rename. cus that's what' really happening. 09:52:47 ? 09:55:43 When you swap those mem addresses your calling the contents of one memory the name of the other and versa vice. 09:55:53 no 09:56:14 x @ y @ x ! y ! 09:56:29 the contents of the memory addresses are exchanged 09:56:36 the addresses remain the same, so what ever calls those addresses will now contain the oposite contents, you are in effect swaping names. 09:56:44 no im not 09:57:00 ok an example 09:57:13 You are, but I refuse to argue, I'm too bz. :) 09:57:21 you have a compiler that compiles code to HERE 09:57:37 but yoiu want to make it compile to over-there for a short while 09:57:52 you need to maintain two here's in parallel 09:58:29 you can flip between target addresses simply by exchanging the contents of the two here's 09:58:38 your not swapping any names 09:58:47 you have one compiler and it compiles to HERE 09:59:12 but you have two different buffers that could be compiled into 10:24:19 I 10:24:36 concede. 10:25:44 <-> ? 10:30:12 hmm 10:30:24 i think other people might have used that one already for something else 10:30:25 maybe 10:42:49 10:43:06 --- quit: snowrichard ("Leaving") 10:43:07 OR >ADDR< 10:45:16 that suggests a single address tho 10:45:26 ya. 10:45:33 a> heh 10:45:40 hmm. 10:45:44 i dont think i like that one lol 10:47:07 mswap, memswap, vswap are the most likely candidates so far 10:47:19 exchange ? 10:47:36 vswap 10:47:39 xch ? (ick) 10:47:59 v<->v 10:50:08 well i think if you use symbolism you should restrict it to one/two characters only myself 10:50:38 tho i prefer to use symbolic names when i can 10:51:10 i LIKE @ as fetch (it was originally called AT) get the contents of the memory AT address 10:51:12 Ray_work, if you choose to upgrade that Vx to OS 4.1, the files are out in the Yahoo Palm V series group files section. 10:51:19 subsequently renamed to fetch 10:51:46 Or, I can put them out on my webserver for you. 11:05:13 --- quit: I440r ("Leaving") 11:15:31 hi 11:46:49 --- quit: crc (Read error: 110 (Connection timed out)) 11:52:24 hmm, the Hendrix NNetwork stuff requires modules from iForth, but I have no desire to buy iForth as it doesn't run on mac. anyone tinkered with his backprop.4th? 12:24:48 k4jcw: message received, thank you very much. 12:25:35 hi ray 12:29:30 --- quit: virl (Read error: 104 (Connection reset by peer)) 12:29:59 --- join: virl (n=virl@chello062178085149.1.12.vie.surfer.at) joined #forth 12:40:34 I440r -- exchange. 12:56:32 I440r__ FROM as in from here to there. 12:57:37 EXCHANGE has a bit of history to it. variable y variable x y x exchange 12:59:36 I like exchange as well, but you had already mentioned it, and I think it was mentioned above and shot down. 13:00:08 Mentioned but without comment. It does have some common usage to back it. 13:00:25 I'm certain you are correct. 13:00:48 FROM would suggest unidirectional movement to me. y x from would suggest y moving to x. 13:00:55 or x moving to y, not sure. :) 13:01:17 --- join: I440r (n=mark4@67.135.84.40) joined #forth 13:10:00 --- join: Shine (n=Frank_Bu@xdsl-81-173-254-172.netcologne.de) joined #forth 13:17:17 k4jcw, for an add-on modem, you'll be using whatever stack it provides. Likely the provided software and any 3rd-party stuff. 13:20:00 There was TCP/IP available going way back to the Professional, I think, but how applicable it was to a 3rd party modem I don't know. I didn't do much with it. 13:20:23 er, add-on modem, I mean. 13:25:25 --- mode: ChanServ set +o I440r 13:27:46 --- quit: timlarson_ ("Leaving") 13:31:07 Quartus: that's why I considered FROM cuz it was always gonna swap on every execution. 13:32:53 Quartus, after a little research, it appears the added TCP/IP in OS 3.5. What I want to be able to do is establish a PPP connection to a device. 13:33:00 And it looks like I can do this. 13:33:24 It's entirely possible. Probably the modem is just a serial device. 13:33:34 Assuming I get motivated enough, I'm going to modify the embedded Linux stuff I wrote to be a data aggregator. 13:34:03 It'll collect from the onboard GPS, OBD-II, wheeltick sensor, and possibly another serial device. 13:34:20 Crazy, man, crazy. :) 13:34:22 Rather than transmitting text with the data, I'll establish a PPP link and move it over a socket connection. 13:34:42 Actually, I may establish a socket connection for each data type. 13:34:51 s/type/device/ 13:36:02 And... if I can swing keeping my development SIM card for the GPRS phone, maybe add internet access. So the Palm becomes a display device for the aforementioned devices, along with weather data, and the latest lotto jackpot. 13:36:25 That seems like overkill to me. I'd probably have the Palm log into the Linux and retrieve the data it wanted. But perhaps PPP is better in some way. 13:37:05 Log into the Linux box and retrieve it how? What's the data transport mechanism? 13:37:30 ttyS0. getty. Make the Palm a client. 13:37:51 ttyS0 is the old way - wouldnt it be /dev/tts/0 now ? 13:37:57 I'm old. 13:37:59 or is THAT the old way 13:38:43 When the Palm logged in, it would have to kick off a client of some kind to start spewing data. Seems like opening a socket connection is just as easy, and has all the advantages of being error free. 13:39:11 As I say, perhaps it's better. 13:42:09 I think PPP is better. Having separate socket connections eliminates the issue of having to interleave data, adds an error-free protocol layer, and means the Palm application could actually work over a wireless connection, etc, should I ever attempt to do that. 13:42:18 And I did upgrade the V to 4.1 without bricking it. 13:42:38 Very good! :) 13:46:55 Bricking it. /me adds a new term to his lexicon. :) 14:43:23 --- nick: arke_ -> arke 14:43:47 --- mode: ChanServ set +o arke 14:58:42 --- quit: Ray_work (Read error: 104 (Connection reset by peer)) 15:08:59 --- quit: segher (Nick collision from services.) 15:09:05 --- join: Topaz (n=top@sown-86.ecs.soton.ac.uk) joined #forth 15:09:13 --- join: segher (n=segher@dslb-084-056-136-138.pools.arcor-ip.net) joined #forth 15:13:06 --- quit: Topaz (Client Quit) 15:32:05 --- join: aym3ric (n=aym3ric@royalrabbit.goto10.org) joined #forth 15:36:04 --- part: aym3ric left #forth 16:03:20 --- join: madgarden (n=madgarde@London-HSE-ppp3546145.sympatico.ca) joined #forth 16:07:29 --- join: Quartus_ (n=Quartus_@209.167.5.1) joined #forth 16:07:29 --- mode: ChanServ set +o Quartus_ 16:07:48 hey 16:10:34 --- quit: Cheery ("Download Gaim: http://gaim.sourceforge.net/") 16:13:03 --- quit: neceve (Read error: 104 (Connection reset by peer)) 16:18:10 --- join: neceve (n=claudiu@unaffiliated/neceve) joined #forth 16:24:33 suspiciously quiet out there. What's up? 16:28:10 doing c coding bleh lol 16:29:46 there is a certain satisfaction in finally succeeding in silencing all C compiler warnings. 16:35:33 ya 16:35:49 err... but not by turning off all warnings lol 16:36:01 -wall -werr should be required 16:36:09 they shouldnt even exist as options 16:36:40 tho this is a classic case of the compiler being mommy 16:36:45 for the advanced user: try to fix all warnings for e.g. GCC and Visual C++ :-) 16:37:07 shine theres no such thing as a warning that cant be removed 16:37:34 it can be done, and gives you a deceptively warm feeling that your code is good, which of course it has no bearing on whatsoever. :) 16:37:50 heh 16:38:00 it doesnt tell you its good. it tells others its not "bad" 16:38:51 it tells others it is absent of certain conditions, but offers no information on whether the code works at all -- just whether it compiles without warnings. 16:39:31 give me any warning free source, I'll return an equally warning-free version that doesn't work. 16:40:20 true but give me some source code that generates copious amounts of warnings and ill simply not trust it to work right 16:40:36 that accounts for 99% of all linux applications 16:41:00 that's the deceptive warm glow. You think the lack of warnings indicates some measure of trustworthyness. 16:41:08 it doesn't. 16:41:22 no 16:41:30 i think the presense indicates something that cant be trusted 16:41:39 not the same thing 16:42:15 if the absence of the warnings doesn't indicate trustworthiness, how does the presence of warnings indicate the opposite? 16:42:17 --- quit: Snoopy42 (Read error: 145 (Connection timed out)) 16:42:38 --- quit: madgarden (Read error: 104 (Connection reset by peer)) 16:42:43 it sort of parallels the "its better to keep your moth shut and thought a fool than to open it and remove all doubt" 16:42:56 any source can be tuned to remove warnings. It's a pedantic exercise, not difficult. 16:43:09 and it shows an attention to detail 16:43:17 not present in most linux coders 16:44:00 it shows, perhaps, a belief that warning-free code is more trustworthy than code with warnings. But there's nothing behind that illusion. 16:44:21 ok you see the hole ill see the donut 16:44:26 I don't like C, the turnaround time for compiling and testing is too long, which may be a reason for bad code. Fortunately there is Forth. 16:44:33 no code is 100% bug free 16:44:48 shoe me code written by someone who shows an attention to detail and ill trust it more 16:44:51 simple as that 16:45:02 nowhere did i say warning free code is always 100%^ bug free 16:45:13 so twist my words as you will 16:45:47 then you think the avoidance of warnings shows that a coder pays more attention to detail. Perhaps instead he simply likes the same deceptive warm glow. 16:46:04 whatever 16:46:31 its one metric for "good coder" not THE metric 16:46:49 I can understand that, as I say I still feel it. I know it's groundless, but somehow there it is. 16:46:57 sources that look like an unmade bed are also an indication of a bad coder 16:47:06 not an indication of bad code. 16:47:46 i would say 1 in 1000000 billion sources are in the "Well kept" catagory 16:47:48 or less 16:48:01 code needs to be tested. It needs to have tests written, boundary cases checked, etc. Code without any tests worries me a lot more than code with warnings. 16:48:22 avoiding warnings has the positive side effect that you see important warnings, like uninitialized variables (if your compiler detects this), which you don't see if you have hundreds of it 16:48:54 tada!!!!! 16:48:58 shine, maybe. There are levels of warning reports for gcc, and -pedantic and -ansi also. 16:50:09 still, warnings, no warnings, neither show that the code works at all. Tests do. It's clumsy to write tests in C; it needs scaffolding, so it's not done often. 16:50:34 not often enough, perhaps. 16:50:36 well test code needs test code to test it :P 16:51:03 little bugs have smaller bugs upon their backs to bite em..... 16:51:10 sure. My tester module has its own tests. 16:51:27 does your tester modules test module have its own tester module ? 16:51:41 for C++ and Java I'm using CppUnit and JUnit 16:52:04 At some point the tests repeat each other, and the fleas are small enough. 16:52:36 quartus dont read me wrong - im not saying "dont use test code" 16:53:15 yea but they still ad-infiniutm :) 16:53:50 inline tests, and assertions. I certainly don't advocate not testing based on some notion that testing words also need to work properly. At some depth you run out of things that can be tested. 16:54:08 this is why i really like C#'s debug and trace stuff. 16:54:30 it works very well 16:54:38 thats why i define it then test it interactivly 16:54:40 for release logging, you use trace statements 16:54:48 for debug logging, you use debug statements 16:54:57 both can be used like assertions or conditional logging as well 16:55:17 I wrote an optimized alder32 a while ago. To test that, I ran it against a naïve alder32 to confirm that the more complex code worked. 16:55:33 alder32? 16:55:45 a checksumming algorithm. 16:56:12 sorry, adler. Tiny keyboard. 16:56:36 Ah 16:57:37 the naïve routine is really simple, and there are test vectors. The optimized routine runs an order of magnitude faster, but is much less simple. 16:59:16 so I didn't want to simply trust that the handful of vectors worked. 17:00:02 --- quit: segher (Read error: 110 (Connection timed out)) 17:00:37 Quartus_: why did you wrote an optimized Adler implementation? If it is a modern computer, the difference would be barely noticeable 17:00:45 --- join: segher (n=segher@dslb-084-056-137-120.pools.arcor-ip.net) joined #forth 17:01:05 probably because he does stuff for smaller devices :D 17:01:31 in fact no matter the computer, the optimized algorithm is considerably faster, as it works in chunks and moves operations outside of the loop. 17:02:09 yes, but it doesn't matter if you have to wait 1 ms or 2 ms 17:02:18 and yes, I often work in battery-driven environments. 17:02:28 ok, then mod may be costly 17:02:44 --- quit: erider (Read error: 110 (Connection timed out)) 17:02:58 shine, it matters if you're doing the thing a million times, as that's 1000 seconds vs. 2000 seconds. 17:03:11 --- join: erider (n=erider@unaffiliated/erider) joined #forth 17:03:42 no, it doesn't matter if it is a constant factor and not quadrativ vs linear 17:04:05 it's linear, in this case. 17:06:11 and when you're on battery, an algorithm that takes 1/10th the time takes 1/10th the juice. 17:08:06 yes, it's important if you have enough data to run your algorithm some seconds on it :-) 17:09:18 I'll take a 90% power savings wherever I can find it. That it's also faster is not a negative. 17:10:26 I doubt that the Adler checksum runs for more than some percent compared to the rest of your program, so it's not worth to optimize it 17:10:35 but, of course, a more complex algorithm is trickier, hence the dual implementation and testing. I throw blocks of random numbers at 'em and ensure that they agree. And yes, i440r, I use more than one PRNG. :) 17:11:25 shine, adler might be used as a network packet checksum, in which case it might run a very large number of times. 17:12:19 AFAIK ethernet uses CRC32 on the raw packets and one-complement modulo on TCP/IP 17:12:37 s/one-complement modulo/one-complement add 17:12:48 so you'd want an optimized crc32, for that circumstance. 17:13:06 same deal, different algorithm. 17:13:36 CRC32 is really simple to implement within an FPGA 17:14:19 right, but I'm working on algorithms iin software, not hardware design. 17:16:30 I've done this with direct encoding CRC32 from the 4 bit MII interface: http://forth.pastebin.ca/212681 17:18:00 an interesting idea I've found on the internet was the residue concept for CRC32: you can check the CRC32 for a constant value, if you include the checksum in the checksum generation process 17:19:22 --- join: saon (i=1000@c-24-129-41-88.hsd1.fl.comcast.net) joined #forth 17:22:07 --- quit: erider (Read error: 110 (Connection timed out)) 17:22:24 --- join: erider (n=erider@unaffiliated/erider) joined #forth 17:25:09 isn't the crc checksum always involved in the crc checksum process? 17:27:09 yes, if you calculate the new checksum. But if you test a packet, just do the checksum for the checksum bytes at the end, too, and the resulting checksum is a constant for every input data 17:27:47 ah. 17:28:40 this is important for FPGAs, because comparing with a dynamic number and before the end of the packet needs more gates than just comparing with a fixed number at the end of the transfer 17:29:14 makes sense. 17:35:17 in software, adler has the added advantage that it needs no lookup table. Smaller. 17:38:56 you could do CRC32 in software with no lookup table, too, with a lot of shifts, xors and ors 17:40:08 yes, if you were sufficiently masochistic :) far better to generate the table once. 17:42:00 I've done this some time ago for the AES/EBU CRC code, but this was 8 bits :-) 17:42:41 sounds painful. 17:44:29 I've found my code: http://forth.pastebin.ca/212707 17:45:44 --- join: madgarden (n=madgarde@London-HSE-ppp3546145.sympatico.ca) joined #forth 17:46:02 not too lengthy. 17:46:58 yes, and it was suprisingly fast on the ARM PXA, not much slower than with a table 17:47:47 maybe because accessing a 256 bytes table is slower than executing some code in instruction cache 17:48:23 Similar ratio of power consumption, or did that not matter enough to measure in that case? 17:49:56 it was not battery powered, so no problem, and the algorithm runs only about 50 times per second 17:50:46 ok. 17:57:42 --- quit: saon (Read error: 110 (Connection timed out)) 18:12:17 hi 18:12:53 hey 18:13:10 hi Quartus_ 18:21:24 hi guys, i was having a conversation tonight with a friend and we got onto the topic of modelling cognition (a central interest of mine) in terms of parallel and associative processes. now, i've come across a ridiculously concise (4 line?) example of coop mulitasking in forth before, the code being moore's i believe. 18:22:07 does anyone here have experience writing parallel or threaded code in forth (i don't know anything about threading in the forth interpreter, so to clarify: by threading i mean, concurrent processes that are written in forth code and called from within a programme.) 18:22:46 concurrent? With a multitasker? Cooperative or preemptive? 18:25:02 okay, i'm thinking of writing a programme that might contain words A and B. rather than having the operating system preemptively switch between two forth instances, say, I'm thinking in terms of having a similar effect within the forth programme. i'm unclear on details -- this is the general area of interest -- open to suggestions, links, pointers, criticisms, etfc. 18:25:04 *etc. 18:25:42 i.e., coop or preemptive is undecided. this is a more conceptual 'what's been done?' 'what's possible' query. 18:25:46 gforth has a cooperative multitasker in it; you could play with that one. 18:26:12 oh, neat. thanks for the pointer. 18:26:39 Quartus_: have you written anything that makes use of multitasking? 18:27:30 on occasion, more often with the host OS facilities than with a Forth's cooperative facility. 18:30:07 --- quit: madgarden (Read error: 104 (Connection reset by peer)) 18:30:51 zpg: Win32Forth has support for creating native threads, which would be useful, if you want to use multiple CPUs, if you need more power for your cognition model 18:33:09 Shine: that sounds interesting. unfortunately, the main development platform is OSX at the moment. 18:33:47 win32forth is unfortunately a very slow Forth. I heard they're doing a native-code version though. 18:34:20 --- join: madgarden (n=madgarde@bas2-kitchener06-1096620860.dsl.bell.ca) joined #forth 18:35:43 do you have some benchmarks? From the source it looks like most words are translated to native assembler, but of course it is not an optimzing compiler 18:36:31 yes, I benched it last month. It is significantly slower than Gforth. It's not a native-code compiler, not the one I have here anyway. 18:38:19 incidentally, does the name 3dup imply ( a b c -- a b c a b c) to you all? 18:38:46 zpg, yes. 18:38:57 good good 18:39:13 factoring seemed far more obvious when i looked at this code again :) 18:39:27 http://forth.com/swiftforth/index.html zpg 18:39:47 helps to come back to it, for sure. 18:40:00 Argh, $400 for SwiftForth. Ouch. 18:40:52 ARM Pro Version $1700. Seriously ouch. 18:41:26 k4jcw: why are you showing me swift? 18:41:47 They have an eval version. Swift is supposed to be fast and pretty complete. 18:42:00 k4, they often sell SwiftForth for about $99. 18:42:11 I have an older version I think I paid $99 for. I wonder if it's eligible for the upgrade. 18:42:17 swift is native-code, performs pretty well. 18:42:39 And it's got Elizabeth's Seal of Approval on i. 18:42:40 it. 18:42:52 heh 18:45:02 Quartus_: there are lots of native assembler in Win32Forth, like http://tinyurl.com/y6j4hh , but of course this doesn't mean that own words are compile to fast code 18:45:59 Right. Win32Forth is a threaded implementation, not native-code, and it's not speedy. 18:48:10 maybe it's not a good idea to use a threaded concept without optimizations like the Java hot spot on X86'er 18:49:08 even with threaded peephole optimzation, native-code will run circles around threaded implementations. 18:49:11 Anything that uses Java is not a good idea. 18:51:19 in theory Java could be faster than pre-compiled code, because it can compile optimized code for the current platform where the code runs (I've debugged some time ago Java assembler, where it used some SSE assembler commands etc.) 18:54:54 yet in practice it runs like molasses on a January morning, and eats memory. 18:55:24 in practice it's only about 20 to 80 percent slower than C or Forth: http://dada.perl.it/shootout/craps.html 18:56:07 don't mixup slow Java GUIs and slow startup time with the speed of Java programs itself 18:56:07 Any idea what HandEra.PDB is? 18:56:36 k4, a handera-specific pdb of some kind. 18:57:00 Oh, I wonder if that's the big keyboard driver. 18:59:30 Depends on whose benchmarks you look at. http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=java&lang2=gcc 19:01:25 You can compare bigForth from that same screen. 19:02:19 bigForth looks worse than Java 19:02:55 For which benchmark? 19:04:06 this works pretty neatly, with no bugs (so far). one specifies "myvar @ m: harhar over ! ;m" for example. this definition is then accessible as "myvar @ method: harhar" 19:04:19 bigForth beats it on a bunch of 'em. Gcc makes it look silly. 19:04:20 the whole fetch syntax is a little ugly, but the basic lookup is there. 19:04:43 zpg, all I can say is harhar. 19:06:04 :) 19:07:11 incidentally, we discussed making fetch the first word of some of the list definitions. if you have a variable pointing to a list, all is fine. if however you have operations where a variable points to a list, but then operates on a sublist (only referenced by actual address, having fetch within some of the definitions is unworkable) 19:07:29 Quartus_: bigForth is better than Java for 6 programs out of the 18 programs listed 19:07:40 sure. You may want versions that work on nodes as factors. 19:08:21 okay, so you're saying abstract the nodes. then what? where do we place our '@' s? 19:09:28 you can compare Java and bigForth in one diagram: http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=bigforth&lang2=java But only speed is better, memory usage is not so good :-) 19:11:17 --- join: arke_ (n=Chris@pD9E054F6.dip.t-dialin.net) joined #forth 19:11:34 --- quit: arke (Read error: 54 (Connection reset by peer)) 19:12:06 bigforth is faster on 8, jdk server on 9. Bigforth's faster numbers sum to 51 vs jdk's 29, meaning when bigforth is faster, it's much faster. Re memory usage, bigforth has a clean sweep, from 1.5 to 35 times less memory used. 19:13:07 I 19:13:14 I've ommited the 1.0 and startup 19:13:45 zpg, a word that works on nodes might be delete-node ( node1 -- node2 ); one that works on lists might be : delete-first-node ( list -- ) dup @ delete-node swap ! ; 19:14:05 the startup is huge. -32. 19:14:32 and startup is applicable to all apps. 19:15:00 yes. There were some ideas to start the Java VM on booting and then executing the programs in it, but I don't know if Sun is still working on this concept 19:16:04 ignoring startup, you could call it even for bigforth and the hotspot server, if you also ignore the jdk's memory binging. 19:18:00 memory is cheap these days, would be more interesting to compare programmer productivity, maintainability and source code length 19:18:03 jdk loses by about a factor of 2 on speed (again ignoring the -95 startup!), and by a factor of 20 on memory. 19:18:10 to gcc, that is. 19:18:46 and if it is slower, buy the next generation CPU :-) 19:19:07 the source-code length is benched by the gzip bytes reduced benchmark. It loses to gcc and to bigforth. 19:19:33 The next generation cpu runs the competition faster, too. 19:22:58 yes, but what I mean: E.g. if you write a big web application, then it doesn't matter if you have to buy a new computer, but time-to-market is important, and I assume with Forth you'll need longer 19:23:01 Quartus_: that's very interesting. i never considered that. in lisp parlance, as we've discussed, 'pushing' means consing to a list and setting the list pointer to target the new head. so, consing in my current code-base doesn't make sense, since it permanently affects the list... if i were to write a 'push' on the other hand, better called add-node i guess, it would have to expect a point, so fetch would be implicit. interesting 19:23:01 indeed! 19:23:52 Shine: do you write Forth? 19:24:36 shine, if you want to branch out and consider some imaginary case-study, I'm sure one could be imagined where forth was the better choice, one where the jdk was. 19:24:45 zpg: yes 19:26:02 * k4jcw tries to imagine the twisted non-Euclidean non-real world where Java would be a better choice 19:26:36 All I can come up with is a masochism based universe. 19:26:52 k4. You've got an underpaid and overworked group of pimply college grads who only know java, and not well, and you can't afford to outsource. :) 19:27:21 India? 19:27:27 I like Forth, but it's nice to have something like Tomcat, if you want to write a web application, instead of starting to write a web server 19:27:49 Perl or PHP, thank you. 19:28:05 k4, disallowed because of sox404 foreign transaction regulations. 19:28:21 It's an imaginary case study, so assume I can constrain it arbitrarily. 19:29:03 Java: Because you're not smart enough to use Visual Basic 19:29:19 k4jcw: eww. 19:40:39 night all 19:40:40 --- quit: zpg ("ERC Version 5.1.3 (IRC client for Emacs)") 19:41:49 --- quit: arke_ (Read error: 110 (Connection timed out)) 19:46:27 --- join: crc (n=crc@pool-70-110-179-85.phil.east.verizon.net) joined #forth 19:46:31 join #dexos 19:46:55 what if I don't want to join #dexos? :) 19:47:51 --- quit: nighty__ ("Leaving") 19:53:50 What does one use for a web browser on the Palm? 19:54:18 depends on the palm. Does the modem come with one? 19:55:19 I don't have a modem. I want to use a serial PPP connection. 19:56:24 I thought you bought a modem. Must be misremembering. I'd check the big palm software archives, see what's around that supports 4.1. 19:56:47 No, I got a GPS with the Vx, and two keyboards. I have no modem. Yet. 19:57:53 --- quit: Shine ("Chatzilla 0.9.75 [Firefox 1.5.0.7/2006090918]") 20:04:50 --- join: nighty_ (n=nighty@sushi.rural-networks.com) joined #forth 20:11:49 --- quit: I440r__ (": sleep bed go tuck light off ; immediate") 20:14:39 He defined it, but he never invoked it. 20:15:05 Any experience with AvantGo products? Other than a really crappy website? 20:15:47 AvantGo used to be a going-concern. Documents updated at hotsync time from various sources. It was a for-pay service, at least that was one option, and then they expanded the for-free part, and then I heard they were eaten by bears. Is it still available? 20:16:25 I can't tell. After creating an account, it tells me it's busy backing crap up for "a better user experience". So far, I'm not impressed. 20:16:47 I don't know. You're kind of on a Professor Kitzle way-back trip, as you've got an old device. 20:17:46 I don't know all the "in" palm source places. My Googling has revealed little. Opera Mini looked promising, but apparently you have to register as a developer at Opera, download some massive .jar file, extract something from it, paste it all back together, hotsync, pray like hell, etc, etc. 20:17:54 Lots of current software is OS5 and up only, though there's plenty of older software, if there was back-end infrastructure required to keep it up, then it might not be there anymore. 20:18:07 palmgear.com handango.com palm.com all have software catalogs. 20:20:16 Luckily for you Quartus Forth runs all the way back to OS3.something and will generate standalone apps that run even on the very first USR Pilot (Palm OS 1). :D 20:27:05 Indeed. But I don't want to to write my own web browser. 20:36:18 I can't believe you said that. 20:36:21 GET TO IT! :) 20:38:15 whats wrong with blazer 20:38:42 Older versions needed a proxy service. 20:38:44 Not sure how old, though. 20:41:19 ah 20:42:01 Since you'd have to tether a Vx to get onto the web, I didn't see it as a useful browsing device. 20:42:08 --- join: Anbidian (i=never@S0106000fb09cff56.ed.shawcable.net) joined #forth 21:05:53 --- quit: madgarden (Read error: 104 (Connection reset by peer)) 22:13:03 --- quit: erider (orwell.freenode.net irc.freenode.net) 22:13:05 --- quit: juri_ (orwell.freenode.net irc.freenode.net) 22:13:05 --- quit: lukeparrish (orwell.freenode.net irc.freenode.net) 22:14:05 --- join: arke (n=Chris@pD9E05B31.dip.t-dialin.net) joined #forth 22:14:05 --- join: erider (n=erider@unaffiliated/erider) joined #forth 22:14:05 --- join: juri_ (i=[m2B9D8H@volumehost.com) joined #forth 22:14:05 --- join: lukeparrish (n=docl@74-36-211-202.dr01.hmdl.id.frontiernet.net) joined #forth 22:32:36 hi lukeparrish 22:32:50 Hey, juri_. I thought you were always here. :) 22:34:48 Ah, a netsplit. I should have scrolled back. 22:44:28 You're up late Quartus 22:44:39 It's 1:44am here. Not too bad. 22:44:45 I keep odd hours. 22:45:07 Ah, I see. Did you ever consider making a Quartus Forth for the Windows PDA? 22:45:52 Anbidian, I have looked at it. They're extremely unpleasant to develop for, and there's very little demand. 22:46:26 I see. I'm suprised it's unpleasent to develop for -- I would have guessed it would have been in there best interest to make it as easy as possible to develop for? 22:46:36 You'd think so, but here we are. 22:47:33 I wonder how big the SEAforth processor is. It seems like it would make a good processer for a PDA. 22:47:48 The 3rd-party developer Windows PDA community isn't nearly as large as the one for Palm, and it's mostly populated by commercial apps. 22:48:22 Anbidian, I don't know. So far it's vapour, and poorly-documented vapour at that. The ARM chips fit the bill quite nicely for portable devices. 22:48:48 Evaluation products are schedule for Q1 2007. 22:48:52 *+d 22:49:31 It is a moot point though I have not the $ to fund such an endavour. 22:50:01 There's really nothing you could want to do with a PDA processor that you couldn't do on the current offerings. I don't know what motivation there would be to switch, especially to a new and unproven chip. 22:51:15 Well, the reasons I can think of are a) higher processing power, maybe magnitudes more than ARM (I don't know?), b) lower power usage, c) simplicity of the chip 22:52:21 I don't know. The chip manufacturers now are pressed up against maximum performance per watt. If seaforth improves that without the typical issues of increased power use and heat generation, it might find some use. 22:52:38 The ARM is not a particularly complex chip. 22:54:06 The list of people who bought into Moore's patents via Alliacense is interesting, AMD, Intel, Sony, Nikon, Olympus, Kenwood, etc. I wonder what they are planning to use it for. What embedded devices I guess... 22:54:31 Sometimes it's like optioning a novel for a movie; nothing ever comes of it. 22:54:59 That is possible. 22:55:52 Sometimes it's a follow-the-leader; somebody big buys in, so the others do too just in case. 22:56:26 Other times it's legitimate R&D, but a lot of that never sees daylight. 22:57:29 Time will tell. 22:59:12 Perhaps it will. 23:00:59 I was impressed by your animated demo of creating a program in Quartus. 23:01:24 Thanks! I wanted to make it clear how simple the process is. 23:03:11 Have you ever benchmarked Quartus againt other development platforms/languages for the Palm? 23:04:51 It's been done by someone else, although not with the newest revision. http://goanna.cs.rmit.edu.au/~winikoff/palm/dev.html#bench 23:05:12 His benchmark is questionable. I wrote a short article that he also provides showing how it should be properly done in Forth. 23:05:33 Quartus Forth is a native-code generator, so it competes very well against the competition; even better in 2.0.1. 23:09:26 you still did really well on the benchmark though, it seems 23:09:36 it took me a sec to find it 23:10:37 He links to another benchmark page, Bench2, with another set of numbers. 23:11:27 It does well there too, though unfortunately the benchmark code for Quartus Forth is again, not well written. 23:13:16 I see. Still great results. 23:14:09 Thanks. It seems a shame to go to the trouble of optimization and to then have somone code s @ i + s ! instead of i s +! just for one example, but what can you do? :) 23:14:39 They didn't allow submission of code for each IDE? 23:14:54 I'm sure it was solicited at some point, but I never heard of it. 23:16:05 In fact the more I look at the Forth source for that benchmark, the more my head hurts. 23:18:36 what % difference do you think an optmized version of Quartus Forth code would have on the benchmark? 23:19:02 Hard to say. Could be substantial. 23:19:17 I'll run a comparison in the next couple of days if time permits. 23:25:50 --- quit: nighty_ (Read error: 110 (Connection timed out)) 23:27:51 bbiab, making some food 23:28:19 k 23:37:55 --- join: nighty_ (n=nighty@sushi.rural-networks.com) joined #forth 23:59:59 --- log: ended forth/06.10.20