00:00:00 --- log: started forth/06.09.27 00:07:53 --- join: Cheery (n=Cheery@a81-197-19-23.elisa-laajakaista.fi) joined #forth 00:07:58 Does anyone know good block environment? Preferrably with 00:08:00 TECO-like command-mode editor. 00:08:22 Good morning, Cheery. 00:09:23 hi ASau 00:15:13 --- join: snowrichard (n=richard@12.18.108.162) joined #forth 00:15:23 --- quit: N-Dex (Read error: 104 (Connection reset by peer)) 00:38:22 --- quit: snowrichard ("Leaving") 00:43:08 --- quit: I440r (Excess Flood) 00:44:35 --- join: I440r (n=mark4@12.197.217.242) joined #forth 00:54:25 --- join: snowrichard (n=richard@12.18.108.162) joined #forth 01:01:33 --- quit: I440r ("Leaving") 01:06:18 --- quit: snowrichard ("Leaving") 01:31:34 --- quit: _ugly (Read error: 110 (Connection timed out)) 01:50:55 --- join: EdLin (n=chacha@as5300-6.216-194-21-245.nyc.ny.metconnect.net) joined #forth 01:53:21 --- join: ASau` (n=user@195.98.180.3) joined #forth 01:53:22 --- quit: ASau (Read error: 104 (Connection reset by peer)) 01:53:36 --- nick: ASau` -> ASau 02:35:21 --- join: snowrichard (n=richard@12.18.108.162) joined #forth 02:35:33 hello 02:36:25 --- quit: snowrichard (Client Quit) 02:37:27 Interesting joke. 02:37:33 Funny. 02:44:47 --- quit: JasonWoof ("off to bed") 03:32:20 --- join: segher (n=segher@dslb-084-056-145-071.pools.arcor-ip.net) joined #forth 03:43:36 --- quit: segher_ (Read error: 110 (Connection timed out)) 03:47:11 --- join: PoppaVic (n=pete@0-3pool158-39.nas24.chicago4.il.us.da.qwest.net) joined #forth 04:10:14 --- join: snowrichard (n=richard@12.18.108.162) joined #forth 04:10:28 hi 04:10:55 ho 04:11:36 how's it going? 04:11:40 you doing any coding? 04:11:53 very little.. Thinking about returning to bed. 04:12:05 I haven't been yet and its almost dawn 04:16:13 --- quit: snowrichard ("Leaving") 04:42:56 --- quit: ASau (Read error: 104 (Connection reset by peer)) 04:46:44 --- join: ASau (n=user@195.98.180.3) joined #forth 04:51:06 --- join: virl (n=virl@62.178.85.149) joined #forth 05:54:48 --- join: PoppaVic (n=pete@0-1pool46-195.nas30.chicago4.il.us.da.qwest.net) joined #forth 06:14:47 --- join: Ray_work (n=Raystm2@199.227.227.26) joined #forth 06:27:44 --- nick: Raystm2 -> nanstm 06:53:25 * TreyB orders one of these: http://www.pepper.com/products/pepper_pad3.html 07:02:48 for some reason I was expecting something spicy 07:11:48 It should make for an interesting device to hack on. 07:30:34 --- quit: LoganCapaldo () 07:31:56 --- join: Teratogen (i=leontopo@slashsnot.org) joined #forth 07:32:05 hello! 07:32:19 Howdy. 07:51:39 --- quit: PoppaVic ("Pulls the pin...") 07:59:50 open $bar 08:11:50 Teratogen: That's off topic. 08:12:04 You should write "bar open" here. 08:12:32 . \_/ poor me one from the "bar open" evaluate. 08:12:48 pour even. 08:12:59 Freudian there. 08:13:58 ( What's there? ) 08:14:01 see there 08:14:29 I can't see "there", I see here. 08:15:58 BTW, we have many forthes written in C, but only few 08:15:59 self-hosted metacompilers. 08:16:03 there is tippically the here in a meta-compiled system, the other here. 08:16:20 Especially for modern platforms. 08:17:25 This is rather strange. C folks has "gcc", "lcc" etc. 08:17:44 We have eforth only. 08:18:07 :) 08:18:29 what more do we need? besides, you'll most likely roll-yer-own anyway... 08:18:54 I don't count SP-Forth (it's for WinNT & Linux only), DragonForth (PalmOS only). 08:19:28 I have a friend, who could be forther. 08:20:46 Maybe not as good as myself, but he definitly can't live 08:20:47 *** without enough code base. It is tiresome to roll-yer-own always. 08:24:09 All these folks, who complain forth lacks libraries do have the point. 08:24:13 Really. 08:41:20 TreyB, what's the batter9 The loom busters. 10:23:23 They protested and attacked installations of said looms, believing automation would run everybody out of a job. 10:23:25 The Loom revolution. What early 1700's? 10:23:44 Late 16's. 10:23:51 Early 1800s. 10:23:55 ok. 10:24:06 Industrial Revolution then; 10:28:38 That's the modern characterization of Luddites, anyway. Their motivation was likely economic rather than based on any hatred of technology. 10:30:43 Sure. you know, I don't remember the typing pools of the world revolting over the word processor. 10:31:27 Or calculator pools revolting over the introduction of the electro-mechanical computers. 10:31:45 You know, there was considerable unrest in the typing pools, but many of them were able to transition by typing on word processors for awhile, so it was diffused. 10:32:33 And there were people who worked as computers who were displaced by equipment, but it wasn't too tough to transition to other (and probably more pleasant) work. 10:33:24 There was a huge push-back against automation that replaced jobs. As a result, we have labour law in Canada to adequately recompense people thus affected. 10:33:38 "Constructive dismissal" law. 10:40:51 When is someone gonna invent a way to grind off the kingpin on these 32 casters i'm building so that they will act like casters and stop acting like feet. :) okay , gotta go back into the warehouse and grind kingpins, bbl. 11:12:47 --- join: ASau (n=user@195.98.180.3) joined #forth 11:13:04 Good evening! 11:20:32 --- join: JasonWoof (n=jason@c-71-192-33-206.hsd1.ma.comcast.net) joined #forth 11:20:32 --- mode: ChanServ set +o JasonWoof 11:27:18 Yeah! 11:27:28 I've got it working! 11:28:17 I've debugged "unix/socket.fs" from Gforth. 11:29:17 --- nick: nanstm -> tina 11:31:00 ooh! 11:31:04 ASau: can I see and use? 11:31:44 gpl compatible? 11:32:08 I haven't done networking in forth yet 11:32:27 I've done a few servers, but always under tcpserver 11:32:48 Well, the main question for now is: 11:33:06 a) report it as it is now, or 11:33:28 b) clean up some more. 11:33:32 ? 11:33:42 for now I'm just curious and want to look 11:33:46 fine if it doesn't work 11:34:43 It is 98 lines (3KB) long, should I paste it here? 11:34:49 nah 11:34:53 Use the pastebin. 11:35:14 http://retroforth.net/paste/ 11:35:39 Or the one in the topic: http://forth.pastebin.ca/ 11:35:44 But please don't paste 98 lines into the channel. 11:36:29 Ehh? 11:36:38 Which one should I use?? 11:36:45 ASau: doesn't matter in the least 11:36:48 That's one of those personal-choice things. 11:40:15 Canadian server does not respond me. 11:40:36 http://retroforth.net/paste/?id=196 11:42:17 Also, I should probably report bugs, caused by "libc.so.6" reference. 11:42:28 This *does not* work in BSDs. 11:42:43 Neither in FreeBSD, nor in NetBSD. 11:43:04 It should be "libc.so". 11:44:26 Also NetBSD and Cygwin does not have "/etc/mime.types", 11:44:27 required by Gforth httpd.fs 11:44:52 I'll think later, how to fix it. 11:45:36 no ffi is going to be universal. 11:46:03 I can't recall exactly, it seems I found work around that feature. 11:46:15 Quartus__: Of course. 11:47:02 so it's not a bug when it isn't. 11:47:30 But I should say, that even in Gforth 0.6.1 the only change 11:47:30 I needed to make the stuff work in FreeBSD was 'sed "s/libc.so.6/libc.so/"'. 11:49:47 I can't say it is not bug, the code messes sockaddr 11:49:47 structure, because of byte order and too long integers. 11:51:54 Anyway, here's the code. 11:52:10 I connected to SMTP server and got response. 11:57:24 ASau: cool stuff 11:58:46 JasonWoof: I wouldn't say so. 11:59:04 It's a *real* mess. 11:59:07 I mean cool that you're making a networking api for gforth 11:59:36 And I can't imagine, how can I clean it. 11:59:45 that's just a cygwin version of the one that ships with gforth, isn't it? 11:59:59 No. 12:00:12 I haven't figured out how I want to do a networking API 12:00:24 I was thinking of writing a small library in C, and using ffi to interface with that 12:00:40 As opposed to just using libc? 12:00:46 unless ffi does syscalls, in which case I'd consider doing it that way 12:00:52 There was bug: int% was defined to be 4 octets long, but 12:00:52 there're only 2 of them. 12:01:19 so it's a cygwin version of the gforth code, with one bug fix. 12:02:17 It seems, there were problems with octet order. 12:02:32 TreyB: yeah, I feel the networking API is both nasty and quite C-centric 12:02:33 I inserted several hton*/ntoh* 12:02:35 Hi TreyB. 12:02:55 Ah! 12:02:55 TreyB: all those recursively defined constants that are different on different platforms and such 12:03:18 --- join: jcw (n=jcw@adsl-074-238-180-251.sip.asm.bellsouth.net) joined #forth 12:03:27 And I've splitted one BIG definition of "open-socket" into 12:03:27 smaller ones. 12:03:32 Afternoon. 12:03:40 Evening. 12:03:42 hi jcw 12:03:48 What's the preferred idiot for creating an array of pointers to strings? 12:03:51 er... 12:03:53 IDIOM 12:04:02 I'm the preferred idiot. 12:04:05 --- join: snoopy_1711 (i=snoopy_1@dslb-084-058-102-179.pools.arcor-ip.net) joined #forth 12:04:06 the usual cell array. 12:04:33 lol 12:04:48 Creating the strings with which word? 12:04:53 : array create cells allot does> swap cells + ; 12:05:20 JasonWoof: I guess. I've coded in Posix/C for so long it doesn't really matter to me. 12:05:35 Oh, you mean the whole shebang for establishing a series of static strings at compile-time? 12:05:45 yah 12:06:13 TreyB: huh? what doesn't matter to you? 12:06:38 Depends, jcw. I usually define a word. The retro ans layer sets up an array of exception strings, for instance, that way. 12:06:49 Ah, I can look there then. 12:06:50 The historic posix socket API works well enough that I wouldn't work too hard at changing it. 12:07:27 I don't like idioms, socket API imposes. 12:07:58 ...forces to me. 12:08:09 How is it in English? 12:08:23 TreyB: ahh, what I was getting at is that the API works consistantly in C, but if you write it in forth, you have to hardcode the constant values, which are not the same accross platforms 12:08:42 TreyB: if I code the API in C, it will work, whatever the constant values, because I can address the constants by name 12:08:59 TreyB: from forth (if I write directly with libc) I have no access to the constants by name 12:09:19 i've accessed C constants from a dll 12:09:21 JasonWoof: We can steal these constants the way v.d.Horst does. 12:09:25 Ah. 12:09:36 i've also accessed variables 12:09:40 wait 12:09:41 Yeah, a library that just provides the constants seems appropriate here. 12:09:42 maybe not the constants 12:09:54 i'd have to get abck to you on that 12:10:08 why dont you just focus on the single most important platform 12:10:15 and use the constants that are relevant there 12:10:21 Linux? 12:10:27 are you asking me? 12:10:37 rabbitwhite: You mean NetBSD? 12:10:51 TreyB: while I'm at it, I'd make a simple function in the lib to tell me if a socket is readable 12:11:07 TreyB: and other things that are complex for no reason 12:11:21 The SWIG approach. 12:11:47 --- quit: Snoopy42 (Read error: 145 (Connection timed out)) 12:11:52 --- nick: snoopy_1711 -> Snoopy42 12:11:58 BTW, does anyone know a *simple* network library in C? 12:12:15 That provides what? 12:12:20 The stack, or an interface to a stack? 12:12:21 jasonwoof, i have an interesting suggestion if you'd be willing to hear it 12:12:28 The interface. 12:12:38 Oh. No. 12:12:43 rabbitwhite: I'm all ears 12:12:50 well, I'm a little distracted, but I'll listen : 12:12:51 ) 12:12:52 If you want a stack, I'll mention Adam Dunkels uip. 12:13:10 --- nick: tina -> tiff 12:13:22 libio 12:13:33 libgnet 12:13:43 you could create a set of constant files yourself. if you minimize the number of constants you use it shuoldn't be hard to extract them from the C sources of the platforms you want to multi-dev for 12:13:46 tiff is now known as png 12:13:47 probably something by kde guys 12:14:39 plus that can be deferred. develop one version with one set of constants, and then make the others later. 12:14:45 oh, to be more clear about my reasoning for doing the networking api in C is that the memory structures that you are to pass to the networking functions are not defined on a byte level 12:14:47 It seems we have many libraries for C++ & stuff, but they 12:14:47 are no way simpler to use than socket layer itself. 12:15:07 they are defined as C classes, which arange their bytes differently depending on your platform/compiler 12:15:34 i see 12:16:06 rabbitwhite: I could do that. I even have a tool for very easily finding the values of C constants 12:16:13 warpzero: I took a look at Gnet recently. 12:16:15 rabbitwhite: but what's the advantage? 12:16:25 well, I guess Forth would be the advantage 12:16:31 rabbitwhite: I guess one advantage is that they don't need a C compiler if we have their platform supported already. 12:16:45 warpzero: Sorry, I couldn't stand it longer than a minute. 12:16:59 but they wouldn't need a C compiler if we shipped a binary of the lib for their platform either 12:17:00 I've never tried it, personally. 12:17:04 thats a very good point jw, in fact i reason that it does not help to require a C compiler 12:17:10 I just use the normal libc calls to do networking stuff. 12:17:24 but forth is so much more flexible 12:17:36 it makes it possible to write better programs 12:17:49 i wrote a better program in forth once 12:17:51 i consider it a given that in any case where you can use forth, that it should be taken advantage of 12:17:56 I'm not quite understanding how exception: works, Quartus__. The stack diagram says the text is on the stack, but that shouldn't be so, since lnparse gets the rest of the to feed to place, . So what's it swapping? 12:17:56 maybe instead of a C lib, I could write a small C program that would spit out forth code 12:18:08 constant values and details about the memory alignments in the structures and such 12:18:29 thing that bugs me though, is that we have to link libc in anyway 12:18:40 heh. i guess you haven't heard of 1x. 12:18:49 well, I guess the nice thing about libc is that it's available on non-unix platforms 12:19:52 JasonWoof: IIRC, socket is an API. 12:20:07 I mean, kernel API. 12:20:18 "socket"? 12:20:23 Nevermind, align wasn't working the way I read it as. 12:20:36 socket(2). 12:20:47 Let me see. 12:21:02 ASau: is there some way to access syscalls with ffcall? 12:22:06 rabbitwhite: the trouble with 1x is that I'm writing a forth program with a few people, and we have the following types of computers/OSes: ppc linux, x86 linux, winblows 12:22:17 JasonWoof: Sorry, I use ffcall as black box for now. 12:22:19 so this stuff has to be pretty portable 12:22:50 ASau: my assumption is that ffcall only does libs, not syscalls 12:22:51 JasonWoof: I can't learn everything instantly. 12:22:56 ! 12:22:57 Why not? 12:23:16 http://www.google.com/search?q=answer+to+life%2C+the+universe+and+everything 12:23:40 jasonwoof: that sounds like a real problem 12:24:09 it also sounds like a horrible prospect for developing softwrae 12:24:14 youre just multiplying your problems 12:24:47 Is there some reason you can't write a native word to use syscall? 12:26:26 jcw: It is not needed in case of BSD's. 12:26:28 warpzero: easy one. 42 12:26:40 i love how they put it into google though 12:26:41 The interface is the same as libc one. 12:26:47 nerds 12:26:48 oh hehe. :) ya 12:27:02 jcw, sorry, had the gadget holstered. Have you figured it out? 12:27:12 I figured out how it works. I don't like it. 12:28:17 I think ya'll are gonna catch me "White and Nerdy" -- Weird AYankovic 12:30:33 any bright light at the horizont for forth? 12:32:19 For my current work project, yes. In general? I wouldn't ever expect to see it as popular as C, Python, Perl, or Ruby. I don't let that bother me, though. 12:32:31 virl: i think that that's a good application for the DIY approach :) 12:32:57 The answer to this is very simple. It was a joke. It had to be a number, an ordinary, smallish number, and I chose that 12:33:00 one. Binary representations, base thirteen, Tibetan monks are all complete nonsense. I sat at my desk, stared into the 12:33:03 garden and thought '42 will do' I typed it out. End of story. 12:33:47 rabbitwhite: I don't think it'll be that bad. it's just a matter of keeping the platform-specific crap out of the main sources 12:34:07 rabbitwhite: eg by putting it in a seperate C file. All platforms support this stuff in a fairly portable way in C 12:35:08 JasonWoof: grep socket /usr/include/sys/syscall.h 12:35:08 /* syscall: "socket" ret: "int" args: "int" "int" "int" */ 12:35:08 #define SYS_socket 97 12:35:08 /* syscall: "socketpair" ret: "int" args: "int" "int" "int" "int *" */ 12:35:12 #define SYS_socketpair 135 12:35:16 to each his own. but i'll always maintain my skepticism about the value of C. 12:36:06 rabbitwhite: the value of C is that it's what all the major operating systems are written in 12:36:11 You can access all these with syscall(2) by number. 12:36:37 rabbitwhite: and is therefor usefull for accessing those systems 12:37:02 as far as I know, I can access the syscalls on my computer with ppc asm, or C 12:37:14 the asm api is cleaner 12:37:23 but works on almost nobody elses computer 12:37:36 (there's precious few people running linux on a mac) 12:38:13 I really like forth 12:38:20 but forth doesn't have much access to the system 12:38:29 generally 12:39:00 one way to keep the forth code clean, is to have a standard API that it can use to access system functionality 12:39:03 (such as networking) 12:39:05 We have only several common systems. 12:39:32 Enough to be coded manually, if you find the right way to go. 12:39:40 if you just want to run in linux, windoze and mac, it would seem reasonable to me to write that API in C 12:39:54 since C can access that functionality in all those systems with the same source code 12:40:15 We have: 3 BSDs, Linux, WinNT, MacOS. 12:40:56 Mainly, x386 and PPC. 12:41:00 another factor I must admit is that I have access to few of those systems, so feel better about doing something that is likely to work (or easy to make work) on the systems I don't have access to 12:41:26 ASau: so about 10 systems... 12:41:57 Less than 10 ones. 12:42:31 7 or 8 systems, at most. 12:42:44 x86 mac, ppc mac, windoze, x86 linux, ppc linux, 3 x86 BSDs and at least one ppc BSD 12:43:00 not to meantion arm 12:43:25 Where did you find ARM? 12:43:31 amd64 12:43:35 there are other weird platforms 12:43:46 ia64 mips 12:43:54 sparc 12:44:16 I've said not a word about PalmOS/ARM+68K. 12:44:31 Let's count accessible systems. 12:44:46 The systems this community can access. 12:45:00 I gave my list of target systems 12:45:07 ppc linux, x86 linux, windoze, mac 12:45:34 hmmm... and freebsd at some point 12:45:57 x86 WinNT, x86 NetBSD, PalmOS/ARM+68K. 12:46:06 x86 FreeBSD. 12:47:06 I'm not willing to write the network api 5 times 12:47:15 and I don't have all those systems anyway 12:47:18 If you don't count PalmOS, all systems are POSIX-like. 12:47:52 BSD network API is common to 3 BSDs and, AFAIK, Linux. 12:47:53 but I do have 3 of them, and I'd like my software to work on all three (ppc linux (primary), x86 linux (laptop), and FreeBSD (server)) 12:48:04 I hope to have a FreeBSD box in the house at some point 12:48:28 there are differences between the networking apis on linux and bsds 12:48:40 I don't know details, but I know it's different 12:48:53 I think more than just the constants being different, but I could be wrong 12:48:58 I have no direct experience with this 12:49:20 So we have 4 systems: BSD, Linuces (PPC & x386), WinNT/x386. 12:49:42 If I did write a networking API in C and accessed that from gforth via ffcall it would make transitioning to something like palm much easier 12:50:20 because you can just implement that same API (which would be way simpler than the C or POSIX ones) on the palm 12:50:26 in whatever language is easiest 12:50:38 Maybe, maybe not. 12:50:56 note that I'm also going to want a graphics api... 12:51:12 Palm is quite different platform. 12:52:05 If you want graphics, you will get troubles with Palm. 12:52:25 my current feeling about accessing system crap (in something that I want to be able to run on different OSes) is to get clear on the functionality I want from the system, code a layer that provides that, and use that API in my code 12:52:51 that way if I want to get my code to run on a dissimilar system, I just have to recode that layer that gives me the API I like 12:53:01 Let us fix on one task. 12:53:08 I propose sockets. 12:53:40 I suggest sockets. 12:53:41 yeah, I don't need to discuss graphics, I just wanted the idea out there that there are other ways in which I'll need system functions besides networking 12:55:09 Probably, SMTP or POP3 is good for start. 12:55:27 jcw, that's one approach that works in a lot of application-specific contexts. 12:55:27 It is useful, it is easy enough. 12:55:49 --- quit: rabbitwhite () 12:56:01 And it's probably portable, too. But basically it's a linked list. 12:56:33 I'd rather have a table I can directly index to for the pointer to the string. 12:56:35 yes. That was my choice. It could have easily been an array of pointers. 12:56:46 JasonWoof: We already have working example: acSMTP or acPOP3. 12:56:55 Of course, your array may have holes in the exception numbers, so that works well. 12:57:00 Mine will be contiguous. 12:57:28 jcw, in which case I'd recommend allocating the space for each string and placing each pointer and length in a cell array. 12:57:37 JasonWoof: It is WinNT-only solution, so what about BSDs & Linuces? 12:57:48 sure, contiguous is actually simpler. 12:58:39 my requirements were for a sparse array, unbounded. 12:59:11 I'm wondering if I want to create the string into a headless word that returns its address at compile time. 12:59:45 you could, but I can't imagine why you would. Just allocate the space. 13:00:12 ASau: huh? 13:00:19 Perhaps this is what I'm missing. Are you suggesting preallocating the space for the table? 13:00:28 Or allocating the string somewhere else? 13:00:39 Yes. 13:00:58 No boolean answers! 13:01:03 allot the array of pointers and lengths, allocate each string. 13:01:28 I do that all the time. Someone asks a "or" question, and I reply yes. 13:01:41 JasonWoof: I mean, we can try port (e.g.) acSMTP to Linux & BSD. 13:01:55 I was answering the first question, but you asked another while I was doing it. This gadget is slow. 13:02:33 JasonWoof: We'll get (E?)SMTP server written in Forth for all major platforms. 13:02:44 --- quit: uiuiuiu (Remote closed the connection) 13:02:53 JasonWoof: And, of course, clean up the original source. 13:03:03 ASau, what is the project? 13:03:18 http://acsmtp.sf.net/ IIRC. 13:05:40 Ahh! 13:05:59 I've forgotten, that POP3 and IMAP are part of it. 13:09:05 warpzero: Is it this http://www.monkey.org/~provos/libio/ you speak about? 13:09:16 yah 13:09:19 murdera 13:18:57 ASau: ok, what's the point? 13:19:25 qmail works just fine for me 13:20:40 jcw: something akin to 20 array names s" John Smith" save-mem 0 names 2! s" Jane Doe" save-mem 2 names 2! 13:20:59 with wrappers appropriate to your app, of course. That's just the exposed wiring of it. 13:22:52 JasonWoof: qmail does not work on NT. 13:23:03 JasonWoof: qmail is written in C. 13:23:23 JasonWoof: qmail is SMTP only (well, QMQP). 13:23:59 None of those appear to be limiting factors in its success. 13:24:24 Quartus: there're $! $@ $+! etc. 13:24:37 huh? 13:24:51 Maybe, it's better to use them. 13:25:12 oh, yes, many newbies feel a strong urge to write a raft of string-handling words. 13:25:13 --- quit: Cheery ("Download Gaim: http://gaim.sourceforge.net/") 13:25:15 s" John Smith" 0 names $! 13:25:38 It's far preferable to write what your application actually needs. 13:26:11 These words are pretty old, it seems. 13:26:35 I think they come from F83 or even from FIG-Forth era. 13:26:38 Not all old ideas are good ideas. 13:27:30 I don't think they're bad. 13:28:03 It is better learn what others have done, rather than 13:28:05 reinventing the same wheels. 13:28:24 does anything not use smtp for mail these days 13:28:35 This from the guy who wants to replace qmail. 13:28:52 warpzero: qmail :) 13:28:59 what 13:29:33 qmail has QMQP in addition to usual ESMTP. 13:30:07 what the hell does qmqp do 13:30:37 I don't remeber, go to http://cr.yp.to/ and read on. 13:32:40 I don't see why anybody in their right mind would run a mail server on windoze 13:33:05 I know reasons. 13:33:13 Secret reasons. 13:33:16 As an example. 13:33:39 Some people use NT as development platform. 13:34:05 And therefore they have to run it as a mail server, too? 13:34:10 The most simple way to distribute patches in darcs is mail. 13:35:46 Not all machines are accessible 24/7, there's need to push 13:35:48 patches to non-local repository. 13:36:38 and this justifies NT how? 13:37:10 NT is given as principle. 13:37:38 That makes no sense. 13:37:39 It is forced by non-technicians to slightly educated programmers. 13:39:42 Oh. So stupid people run NT as a mail server. 13:39:57 That makes sense. 13:39:59 They are not stupid. 13:40:24 Oh? Some other word that means 'not very smart', then. Take your pick. 13:40:33 NT is hard to administer even to system administrators, for 13:40:35 programmers it is even harder. 13:41:10 Right, I mean "not very smart". 13:41:24 NT is not hard to administer, I did it for years, alongside a variety of Unix systems. 13:42:19 I doubt it is not. 13:43:07 I can't say, that there's any task simpler than in *IX. 13:43:26 Perhaps you lack the experience to adequately assess the matter. I don't. I administered NT from its earliest incarnations all the way through to Advanced Server 2003 running AD. 13:44:05 And I have not met enough good NT sysadms. 13:44:17 It was not only never hard, it got progressively easier with each new version. There was a lot of initial conversion work to AD, consoldiating older domains, but after that it ran very smoothly. 13:44:38 oxymoron == good AD sysadmin. 13:45:15 Anyway there's no line connecting "NT is hard to adminster" and "NT should be used as a mailserver". 13:46:36 I say, there're or may be reasons to use NT. 13:46:54 Supporting two different platforms is more difficult. 13:47:23 Hence the need to run mail server on NT. 13:47:45 If you find it hard to manage a separate box running qmail, you shouldn't be managing your own mailserver at all. 13:48:06 Well, I know one man, who administered NT 5 or 7 years ago. 13:48:14 He is FreeBSD commiter now. 13:48:56 Programming and administering are different. 13:49:28 Running qmail means you have to administer *NIX box. 13:51:49 That means, you need hire a man, who knows *NIX, and small 13:51:50 company cannot afford this. 13:52:15 So host your mail externally. 13:53:20 Just try to explain this to manager. 13:53:39 And this chain of specious reasoning leads you to want to re-code qmail in Forth so you can run it under NT? 13:54:01 --- quit: jcw (Read error: 110 (Connection timed out)) 13:54:15 I don't want recode qmail! There is acSMTP already! 13:54:28 Ok, that's it for me. 13:56:11 qmail is essentially pipe-oriented, it forces to use shell 13:56:13 or other way to bind severall parts together. I doubt it is good 13:56:13 enough in NT environment. 14:14:13 administering a machine with qmail is a piece of cake 14:14:22 qmail doesn't have security problems 14:14:29 no, JasonWoof, apparently it's really hard. 14:15:19 man, I never went and got food 14:15:21 bbiab 14:15:56 JasonWoof: You're mistaken, it is hard. 14:16:11 see? 14:16:34 Tuning qmail is not easy. 14:16:51 tuning? 14:17:08 It's the left-hand dial. The other one is volume. 14:17:17 You can't just take configurational file and make it run. 14:18:00 qmail requires programming in shell *at least*. 14:18:05 all I did to the default qmail configuration that freebsd installed for me was set the default hostname 14:18:25 --- join: AJC (n=AJC@chello213047059068.25.11.vie.surfer.at) joined #forth 14:19:12 Updating from 5.2.1 to 5.3 has broken my qmail configuration. 14:19:42 hey. i'm curious about parameters in forth. since there's no way to name parameters when passing them in to 'words', is this somehow more prone to errors? 14:20:15 AJC: Try use less parameters. 14:20:41 AJC, not in my experience, no. There is in fact a way to name parameters (locals), in many Forths, but with good factoring it's not often used. 14:20:47 I could not suppose FreeBSD will run my scripts not the way 14:20:50 they intended to be run. 14:21:04 ASau: less parameters, more work done in the 'child' words passed in? 14:21:22 Yes. 14:21:31 Write shorter definitions. 14:21:32 i see. 14:21:40 more functional/meta programming 14:21:57 It is clearer, when you write short. 14:22:14 It's neither more function nor 'meta', it's just factoring. Shorter words that do one thing each. 14:22:14 Read "Thinking Forth". Take it from SourceForge. 14:24:19 ok, thanks guys! 14:26:28 --- quit: Ray_work ("User pushed the X - because it's Xtra, baby") 14:29:59 AJC: the pramater passing scheme (on the stack) makes it so you can write very very short definitions 14:30:13 and not have half your code be defining the api of your definitions 14:30:21 and passing crap around 14:30:32 the stack is implicit 14:30:48 I find all kinds of benifits from writing short definitions: 14:30:52 1) readability 14:31:06 2) less code duplication (thus makeing changes and fixes easier) 14:31:20 3) much much easier to read a definition to determine if it is correct 14:31:27 4) much easier to test code to see if it works 14:31:38 (since you can test it in small peices (definitions) 14:31:40 ) 14:32:23 the net result of these and more is that I can get a whole heck of a lot of programming done in a short time in forth, and it's less buggy than I'm used to (from C programming for years) 14:33:36 --- quit: ASau (Remote closed the connection) 14:34:43 JasonWoof: i see, so the order of the things on the stack is like the formal API so to speak 14:36:50 AJC: yaeh, if I understand you correctly 14:36:54 AJC: do you know C? 14:36:59 sure 14:37:27 C: int foo (x, y) { return x + 2*y; } 14:37:44 forth: : foo 2 * + ; 14:37:56 although it's good practice to include a comment 14:38:13 including/especially a "stack comment" 14:38:31 eg: : foo ( x y -- x ) 2 * + ; 14:38:35 oops 14:38:40 eg: : foo ( x y -- z ) 2 * + ; 14:38:57 to show that foo takes to operands and returns one 14:39:07 i think that makes sense now :P 14:39:09 thanks 14:40:05 a difference between C and forth is that in C you are unlikely to define something like this 14:40:54 as it's usually no harder to stick the expression "x + 2*y" in your code, than "foo(x, y)" 14:41:23 but in forth you can just put "foo" in your code, not "foo(x, y);" 14:41:45 yes, everything ties together implicitly 14:41:47 hmm, it's worse actually 14:42:00 in C it will likely have to be: "z = foo(x, y);" 14:42:40 : harray@ ( array index -- ) foo h@ ; 14:42:54 (h being my shorthand fol half-word (ie 2 bytes)) 14:42:59 @ means fetch from memory 14:44:35 C version: short harray_fetch(char* array, int index) { return *(array + 2*index); } 14:44:59 C version: short harray_fetch(char* array, int index) { return *(short*)(array + 2*index); } 14:45:26 or you could use foo: short harray_fetch(char* array, int index) { return *(short*)(foo(array, index)); } 14:46:01 maybe not a great example, since C has array accesser syntax, but we'll pretend it doesn't :-P 14:46:59 moreover, C has data types, Forth doesn't 14:47:26 yep 14:47:31 not the greatest example 14:48:35 I was just thinking "when have I done '2 * +'?" and thought of calculating the memory address of an element in an array of half-words 14:48:42 which I've done recently 14:49:08 in fronds I store words of source as 16-bit tokens 14:49:28 which reference their meta-data such as name, CFA, comment, etc 14:51:10 i'm not sure i follow that last bit, but thanks for your explanation though! 14:52:51 AJC: do you see how these are equivalent: 14:52:55 C: short harray_fetch(char* array, int index) { return *(short*)(foo(array, index)); } 14:53:03 forth: : harray@ ( array index -- ) foo h@ ; 14:53:15 and how half the forth one is a comment :) 14:53:25 oops, the comment is wrong though 14:53:31 forth: : harray@ ( array index -- half-word ) foo h@ ; 14:53:53 ok, I gotta run 14:53:54 ttyl 14:55:16 ciao! 15:00:59 --- join: AI_coder (n=AI@ip-209-124-242-76.dynamic.eatel.net) joined #forth 15:39:33 --- part: EdLin left #forth 15:44:39 http://swm.pp.se/ethernet_memo.jpg 15:44:41 lol :) 15:53:49 --- quit: AJC ("Leaving") 16:08:51 --- quit: neceve ("Leaving") 16:38:41 --- join: uiuiuiu_ (i=ian@dslb-084-057-244-204.pools.arcor-ip.net) joined #forth 16:43:45 --- quit: uiuiuiu_ (Remote closed the connection) 17:11:58 --- quit: segher (Nick collision from services.) 17:12:09 --- join: segher (n=segher@dslb-084-056-188-234.pools.arcor-ip.net) joined #forth 17:28:17 --- join: erider (n=erider@unaffiliated/erider) joined #forth 17:38:36 --- quit: Snoopy42 (niven.freenode.net irc.freenode.net) 17:38:36 --- quit: JasonWoof (niven.freenode.net irc.freenode.net) 17:38:36 --- quit: TreyB (niven.freenode.net irc.freenode.net) 17:38:36 --- quit: Quiznos (niven.freenode.net irc.freenode.net) 17:38:50 --- join: Quiznos (i=1000@69-168-231-199.bflony.adelphia.net) joined #forth 17:39:56 --- join: Snoopy42 (i=snoopy_1@dslb-084-058-102-179.pools.arcor-ip.net) joined #forth 17:43:45 --- join: TreyB (n=trey@cpe-66-87-192-27.tx.sprintbbd.net) joined #forth 17:43:46 --- join: JasonWoof (n=jason@unaffiliated/herkamire) joined #forth 17:43:46 --- mode: ChanServ set +o JasonWoof 18:29:20 --- join: uiuiuiu_ (i=ian@dslb-084-057-244-204.pools.arcor-ip.net) joined #forth 18:34:25 --- quit: uiuiuiu_ (Remote closed the connection) 19:41:36 --- nick: tiff -> Raystm2 20:00:14 --- join: nighty_ (n=nighty@H123.C72.B0.tor.eicat.ca) joined #forth 20:11:23 --- quit: erider ("I don't sleep because sleep is the cousin of death!") 20:16:51 --- join: snowrichard (n=richard@12.18.108.162) joined #forth 20:18:59 glop! 20:19:09 ZZzzzz... 20:19:59 --- quit: virl (Remote closed the connection) 21:50:39 --- join: slava (n=slava@CPE0080ad77a020-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 21:50:39 --- mode: ChanServ set +o slava 22:17:26 --- quit: nighty_ ("Disappears in a puff of smoke") 22:31:54 --- quit: slava () 22:58:38 --- join: Cheery (n=Cheery@a81-197-19-23.elisa-laajakaista.fi) joined #forth 23:30:19 --- quit: virsys (Read error: 54 (Connection reset by peer)) 23:38:54 --- join: ASau (n=user@195.98.180.3) joined #forth 23:38:55 --- join: virsys (n=virsys@or-71-53-74-48.dhcp.embarqhsd.net) joined #forth 23:39:25 Good morning! 23:40:13 re 23:59:59 --- log: ended forth/06.09.27