The Size/Speed Paradox
This is slightly off-topic but I thought it may be of interest to the list. I wrote a program that automatically solves Freecell games. For those who are not familiar with it, Freecell is a card game, in which there are several stacks which should be moved to the decks with the aid of freecells, which are cells that can hold one card each. In any case, the program operates by keeping record of the states for which it checked whether they are solveable, so if the same state is reached twice, it will only be checked once. (and thus also, it makes sure there are no infinite loops). I wrote two versions of the program, one which uses states where the representitive integers have widthes of ints and shorts. And the second the integers are chars, and semi-chars. (I use shifts and bit masks to get the card deck and card number). I noticed that the program that uses the chars representation runs much faster than the int/short based program. For 100 given initial boards, it finished them in 11 minutes and 12 seconds. The wider program took more than 19 minutes when it was terminated in the middle of board No. 62, which is a complex board that takes 42,940 checked states to solution. The question is why the wide-integer based program is slower because obviously my Pentium 166 MHz processor takes less time for 32-bit or 16-bit integer computations and memory access than for 8-bit ones. My best guess so far is that the majority of the time is spent storing and searching for states, and because the char storage occupies less space, that it is considerably faster. What do you think? You can download Freecell Solver and take a look at the source code from the following URL: http://t2.technion.ac.il/~shlomif/fcs/ This is not going to be its permanent homepage, but I resorted to putting it there because vipe.technion.ac.il has a momentary problem of hosting the users' homepages. I discovered a few other insights while working on Freecell Solver. For instance, I realized that one should not use qsort to insert a sort margin into a sorted array, because it's quite slow. Instead, a binary-search based merging function should be used. Another curious thing is that the program runs differently on Windows NT than it does on i386 Linux and SPARC Solaris. On IRIX 64-bit it runs differnetly than both of the above. I still don't know what's the cause of this behaviour but I'm investigating it. Best regards, Shlomi Fish -- Shlomi Fish[EMAIL PROTECTED] Home Page: http://t2.technion.ac.il/~shlomif/ Home E-mail: [EMAIL PROTECTED] The prefix "God Said" has the extraordinary logical property of converting any statement that follows it into a true one. = To unsubscribe, send mail to [EMAIL PROTECTED] with the word "unsubscribe" in the message body, e.g., run the command echo unsubscribe | mail [EMAIL PROTECTED]
Re: The Size/Speed Paradox
On Sat, 15 Apr 2000, Shlomi Fish wrote: > The question is why the wide-integer based program is slower because > obviously my Pentium 166 MHz processor takes less time for 32-bit or > 16-bit integer computations and memory access than for 8-bit > ones. My best guess so far is that the majority of the time is spent > storing and searching for states, and because the char storage occupies > less space, that it is considerably faster. The Pentium's cache is 8 bits wide (IIRC)... does everything make sense now? ;) -- crisk ._ [EMAIL PROTECTED] ._/-==\\\ _ |_.-`---^-._ The biggest lies: 11. I never inhaled. = To unsubscribe, send mail to [EMAIL PROTECTED] with the word "unsubscribe" in the message body, e.g., run the command echo unsubscribe | mail [EMAIL PROTECTED]
Re: Xkb hebrew mappings
Beside the man pages where can I find info on the xkb*? In particular, is there any tutorial on these tools? What about an explanation about the syntax of the config files? > --jRHKVT23PllUwdXP > Content-Type: text/plain; charset=US-ASCII > Content-Transfer-Encoding: 7bit > > First of all, here's an proper (X-compilant?) xkb mappings > where characters are represented in real X "semi-unicode" > values, rather than > > This would make Netscape (and probalby other X apps) > not accept those as characters at all (try running "xev" to > see what I mean) unless they have a LOCALE which will has > a character map to translate those into regular ASCII. > (an X-to-ISO8859-8 table) > > The mapping was stripped of the: > 1. include "en" >A hebrew mapping should not impose an english mapping (Xkb group) >too. If you want English, just use: > >XkbSymbols "us(pc104)+he ... > > 2. Mode locking keys >Those should also belong to a separate symbol file, group. >I have updated the group file to support MSWin-style >switching (R/L Alt-Shift) > >XkbSymbols "us(pc104)+he+shift(shift_alt_toggle)" > > -- > Best regards, > Ilya Konstantinov a.k.a Toastie > [http://toast.demon.co.il] > > eGroups eLerts > It's Easy. It's Fun. Best of All, it's Free! > http://click.egroups.com/1/3079/5/_/284445/_/955798222/ > > > To Post a message, send it to: [EMAIL PROTECTED] > > To Unsubscribe, send a blank message to: [EMAIL PROTECTED] > > --jRHKVT23PllUwdXP > Content-Type: text/plain; charset=us-ascii > Content-Disposition: attachment; filename=he > > // Layout based on the XConsortium: us (US/ASCII) layout. > > partial default alphanumeric_keys > xkb_symbols "basic" { > > name[Group1]= "Hebrew"; > key { [ q,Q ], > [ slash, Q] }; > key { [ w,W ], > [ quoteright, W ] }; > key { [ e,E ], > [ hebrew_qoph,E ] }; > key { [ r,R ], > [ hebrew_resh,R ] }; > key { [ t,T ], > [ hebrew_aleph, T ] }; > key { [ y,Y ], > [ hebrew_tet, Y ] }; > key { [ u,U ], > [ hebrew_waw, U ] }; > key { [ i,I ], > [ hebrew_finalnun,I ] }; > key { [ o,O ], > [ hebrew_finalmem,O ] }; > key { [ p,P ], > [ hebrew_pe, P ] }; > key { [ a,A ], > [ hebrew_shin,A ] }; > key { [ s,S ], > [ hebrew_dalet, S ] }; > key { [ d,D ], > [ hebrew_gimel, D ] }; > key { [ f,F ], > [ hebrew_kaph,F ] }; > key { [ g,G ], > [ hebrew_ayin,G ] }; > key { [ h,H ], > [ hebrew_yod, H ] }; > key { [ j,J ], > [ hebrew_chet,J ] }; > key { [ k,K ], > [ hebrew_lamed, K ] }; > key { [ l,L ], > [ hebrew_finalkaph, L ] }; > key { [ semicolon,colon ], > [ hebrew_finalpe, colon ] }; > key { [ quoteright, quotedbl], > [ comma, quotedbl] }; > > key { [ z,Z ], > [ hebrew_zain,Z ] }; > key { [ x,X ], > [ hebrew_samech, X ]
Re: Hebrew Workshop Summary
> Shalom. > > ... > > Therefore it is of the highest priority to package the LD_PRELOAD hack for > Dov's gtkbiditext widget, which allows using logical Hebrew in most GTK > applications. The following people volunteered for the taskforce that will > handle this: Ilya, Shaul, Tzafrir, Yonni, Adi. > Package the LD_PRELOAD hack for LD_PRELOAD hack for Dov's gtkbiditext widget? Didn't Dov created a lib of his own? Why we need the LD_PRELOAD for in the first place? Is there a problem with putting Dov's lib in the usual places? Let me present a study case: The case of the dante-clients (socksify) package. The problem: For machines behind a firewall there might be a need to wrap the networking-related system calls for some programs (like ftp). Follows is what this package has to say about replacing one lib with another (README.usage) and then its solution to the LD_PRELOAD problem (README.socksify + $(which socksify)). [22:02:06 dante-client]$ cat README.usage $Id: README.usage,v 1.5 1999/12/22 09:29:17 karls Exp $ The socks package can be used in two ways. Dynamically The simplest way to add socks support to an already (dynamically) complied application is to use the LD_PRELOAD facility to replace the standard library functions with socksified ones. The libdsocksd library is provided for this purpose. See the README.socksify file for more information. This will probably only work with non-setuid applications since LD_PRELOAD is usually ignored otherwise. If setting LD_PRELOAD is not possible, compilation is another possibility. If the application can be compiled dynamically socks support can be added explicitly by linking with libdsocksd (usually done by adding '-ldsocksd'). This will automagically give the application socks support without making any code changes. Static Compilation If the source code for an application is available it can be changed to use socks, even if it is not linked dynamically. Several systemcalls must be changed to use the socksified versions instead of the standard ones. The application is then linked with the libsocksd library in the distribution (-lsocksd, not -ldsocksd). These system calls can be found in the socks library: Rconnect Rbind Rgetsockname Rgetpeername Raccept Rrresvport Rbindresvport Rgethostbyname Rgethostbyname2 Rsendto Rrecvfrom Rrecvfrom Rwrite Rwritev Rsend Rsendmsg Rread Rreadv Rrecv Rrecvmsg These calls currently does nothing and are only provided for compatibility with programs which use them. Rlisten Rselect SOCKSinit The source can either be modified directly, or by using defines to change the source during compilation. Either add this line to the command line: -Dconnect=Rconnect -Dbind=Rbind -Dgetsockname=Rgetsockname -Dgetpeername=Rgetpeername -Daccept=Raccept -Drresvport=Rrresvport -Dbindresvport=Rbindresvport -Dgethostbyname=Rgethostbyname -Dgethostbyname2=Rgethostbyname2 -Dsendto=Rsendto -Drecvfrom=Rrecvfrom -Drecvfrom=Rrecvfrom -Dwrite=Rwrite -Dwritev=Rwritev -Dsend=Rsend -Dsendmsg=Rsendmsg -Dread=Rread -Dreadv=Rreadv -Drecv=Rrecv -Drecvmsg=Rrecvmsg or add "#include " to all relevant source files. Libraries In total there are three libraries distributed with this package: libsocksd.so - standard shared library, contains Rfoo type functions. libsocksd.a - static version of the above. libdsocksd.so - shared library which does socksification through the runtime linker. Contains wrappers for standard I/O calls. [22:02:13 dante-client]$ [21:36:44 dante-client]$ cat README.socksify $Id: README.socksify,v 1.4 1999/04/26 13:52:33 michaels Exp $ The shell script socksify in the bin directory is meant to aid in using socks with already compiled dynamic binaries. This works by setting the LD_PRELOAD environment variable to libdsocksd. It will then wrap all networking-related system calls. When used the script can socksify a program by simply giving it as a parameter to socksify: socksify ftp A more permanent solution would be to add the LD_PRELOAD environment value to the shell startup files. Then all non-set[ug]id applications that are linked dynamically would be socksified. [21:37:01 dante-client]$ [21:37:45 /tmp]$ cat $(which socksify) #!/bin/sh - # # Copyright (c) 1997, 1998 # Inferno Nettverk A/S, Norway. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. The above copyright notice, this list of conditions and the following #disclaimer must appear in all copies of the software, derivative works #or modified versions, and any portions thereof, aswell as in all #supporting documentation. # 2. All advertising materials mentioning features or use of this software #must display the following acknowledgement: # This product includes software developed by # Inferno
Re: [iglu] Re: Hebrew Workshop Summary
Shalom. On Sat, Apr 15, 2000 at 10:11:13PM +0300, Shaul Karl wrote: > > > > Therefore it is of the highest priority to package the LD_PRELOAD hack for > > Dov's gtkbiditext widget, which allows using logical Hebrew in most GTK > > applications. The following people volunteered for the taskforce that will > > handle this: Ilya, Shaul, Tzafrir, Yonni, Adi. > > > > Package the LD_PRELOAD hack for LD_PRELOAD hack for Dov's gtkbiditext widget? > > > Didn't Dov created a lib of his own? Why we need the LD_PRELOAD for in the > first place? Is there a problem with putting Dov's lib in the usual > places? > Dov's gtkbiditext is a replacement to GTK's gtktext widget. You use the LD_PRELOAD hack so that applications which normally use the regular gtktext would use instead gtkbiditext and thus support bidirectionality. -- Lehitraot, Roi. = To unsubscribe, send mail to [EMAIL PROTECTED] with the word "unsubscribe" in the message body, e.g., run the command echo unsubscribe | mail [EMAIL PROTECTED]
Re: The Size/Speed Paradox
Well, I was curious enough to click on your source code site and here is wahat I got: Forbidden You don't have permission to access /~shlomif/fcs/ on this server. Ho hum. Dan Feiglin Shlomi Fish wrote: > This is slightly off-topic but I thought it may be of interest to the > list. > > I wrote a program that automatically solves Freecell games. For those > who are not familiar with it, Freecell is a card game, in which there > are several stacks which should be moved to the decks with the aid of > freecells, which are cells that can hold one card each. > > In any case, the program operates by keeping record of the states for > which it checked whether they are solveable, so if the same state is > reached twice, it will only be checked once. (and thus also, it makes > sure there are no infinite loops). I wrote two versions of the program, > one which uses states where the representitive integers have widthes of > ints and shorts. And the second the integers are chars, and semi-chars. > (I use shifts and bit masks to get the card deck and card number). > > I noticed that the program that uses the chars representation runs much > faster than the int/short based program. For 100 given initial boards, > it finished them in 11 minutes and 12 seconds. The wider program took > more than 19 minutes when it was terminated in the middle of board No. > 62, which is a complex board that takes 42,940 checked states to > solution. > > The question is why the wide-integer based program is slower because > obviously my Pentium 166 MHz processor takes less time for 32-bit or > 16-bit integer computations and memory access than for 8-bit > ones. My best guess so far is that the majority of the time is spent > storing and searching for states, and because the char storage occupies > less space, that it is considerably faster. > > What do you think? > > You can download Freecell Solver and take a look at the source code > from the following URL: > > http://t2.technion.ac.il/~shlomif/fcs/ > > This is not going to be its permanent homepage, but I resorted to > putting it there because vipe.technion.ac.il has a momentary problem of > hosting the users' homepages. > > I discovered a few other insights while working on Freecell Solver. For > instance, I realized that one should not use qsort to insert a sort > margin into a sorted array, because it's quite slow. Instead, a > binary-search based merging function should be used. > > Another curious thing is that the program runs differently on Windows > NT than it does on i386 Linux and SPARC Solaris. On IRIX 64-bit it runs > differnetly than both of the above. I still don't know what's the cause > of this behaviour but I'm investigating it. > > Best regards, > > Shlomi Fish > > -- > Shlomi Fish[EMAIL PROTECTED] > Home Page: http://t2.technion.ac.il/~shlomif/ > Home E-mail: [EMAIL PROTECTED] > > The prefix "God Said" has the extraordinary logical property of > converting any statement that follows it into a true one. > > = > To unsubscribe, send mail to [EMAIL PROTECTED] with > the word "unsubscribe" in the message body, e.g., run the command > echo unsubscribe | mail [EMAIL PROTECTED] begin:vcard n:Feiglin;Daniel tel;cell:972 53 869986 tel;fax:972 9 862 1052 tel;home:972 9 832 0939 tel;work:972 9 861 6204 x-mozilla-html:FALSE org:Dilog Computers Ltd. adr:;;POB 36;Shavei Shomron, Mobile Post;;44858;ISRAEL version:2.1 email;internet:[EMAIL PROTECTED] title:CC & BW note:cc: to [EMAIL PROTECTED] x-mozilla-cpt:;-7424 fn:Daniel Feiglin end:vcard
Re: Should I ask Sivan Toledo for a classr oomon Thursday, May 4th?
On Fri, Apr 14, 2000 at 07:09:08PM +0200, Moshe Zadka wrote: > > > > > And btw, I think its too easy to fake at the poll. Check the IP or > > something... > > Please don't give half-baked suggestion for pseudo-security. > > > Or make that each one of the voters will have to enter his email, and > > check it with the list of subscribed people. > > Ditto > > Any secure system is too big a burden on people. If someone really feels > he should vote 10 times so I'll talk about something else...well, it seems > unlikely. Anyhow, how about some good ol' RMS-like trust in people? Actually - right now I log IP's. I checked my logs and yes, many sequential voted from the same IP. We can do few things: 1) place an IP limit - only one vote from same IP per hour. This way it'll hurt less people going through same proxy/firewall and it should make vote faking less fun. 2) we can also assume that if someone voted 15 times for meeting at friday he must really care about this issue and therefore we should count his opinion 15 times 3) we can just be grown-ups and stop faking votes. Thanks, Chen. -- Chen ShapiraWeb Developer and Linux Activist The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time. = To unsubscribe, send mail to [EMAIL PROTECTED] with the word "unsubscribe" in the message body, e.g., run the command echo unsubscribe | mail [EMAIL PROTECTED]
Re: Should I ask Sivan Toledo for a classroomon Thursday, May 4th?
On Fri, Apr 14, 2000 at 11:32:27PM +0300, David Tabachnikov (NetHunter) wrote: > > > Trust in people? there are 25 for thursday, and 29 for friday last time > I checked. Last time I checked, there was less then 60 members in IGLU, > and I bet not everybody voted already. > Linux-il is 500 people. www.linux.org.il gets more than 100 visitors a day. all of them are allowed to vote. What is the problem? The large count of votes (out of which only 7 are repetitive IPs) show the improtance of the issue, and how voting through our website is better than going to egroups. -- Chen ShapiraWeb Developer and Linux Activist The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time. = To unsubscribe, send mail to [EMAIL PROTECTED] with the word "unsubscribe" in the message body, e.g., run the command echo unsubscribe | mail [EMAIL PROTECTED]
Re: console ftp client
On Fri, 14 Apr 2000, Ben-Nes Michael wrote: > Hi > > What is the best ftp client for console ? > (need time wait before trying to reconnect & retry connect if connection > cut in the middle) There is an automounter map which lets you access anon-ftp as part of your file system (just like /net or /hosts for NFS). > > -- > -- > Canaan Surfing Ltd. > Internet Service Providers > Ben-Nes Michael - Manager > Tel: 972-6-6925757 > Fax: 972-6-6925858 > http://www.canaan.co.il > -- > > > > = > To unsubscribe, send mail to [EMAIL PROTECTED] with > the word "unsubscribe" inthe message body, e.g., run the command > echo unsubscribe | mail [EMAIL PROTECTED] > > -- Yaron. = To unsubscribe, send mail to [EMAIL PROTECTED] with the word "unsubscribe" in the message body, e.g., run the command echo unsubscribe | mail [EMAIL PROTECTED]
RAS
hi all I want to estabilish TCP/IP connection between 2 machines.. the client has unknow OS (it can be or linux with ppp dialer or muztdie with dial up) and the server is mine machine with mandrake 7 (installed for normail use, not as server) now i want client to phone (modem) call my modem. and estabilish TCP/IP connection just between our boxes.. (wanna give him some files) how do i do it? thanx Pavel = To unsubscribe, send mail to [EMAIL PROTECTED] with the word "unsubscribe" in the message body, e.g., run the command echo unsubscribe | mail [EMAIL PROTECTED]
Re: Should I ask Sivan Toledo for a classr oomon Thursday, May 4th?
It is not fair; we have many employees who want to come, and we all use one IP ! > 1) place an IP limit - only one vote from same IP per hour. This way it'll hurt > less people going through same proxy/firewall and it should make vote faking > less fun. > 2) we can also assume that if someone voted 15 times for meeting at friday he > must really care about this issue and therefore we should count his opinion 15 > times > 3) we can just be grown-ups and stop faking votes. > > Thanks, > Chen. > > -- > Chen Shapira Web Developer and Linux Activist > The first 90% of the code accounts for the first 90% of the development time. > The remaining 10% of the code accounts for the other 90% of the development > time. > > = > To unsubscribe, send mail to [EMAIL PROTECTED] with > the word "unsubscribe" in the message body, e.g., run the command > echo unsubscribe | mail [EMAIL PROTECTED] > = To unsubscribe, send mail to [EMAIL PROTECTED] with the word "unsubscribe" in the message body, e.g., run the command echo unsubscribe | mail [EMAIL PROTECTED]
Re: Should I ask Sivan Toledo for a classroomon Thursday, May 4th?
On Sun, 16 Apr 2000, Ury Segal wrote: > It is not fair; we have many employees who want to > come, and we all use one IP ! Exactly why I said we should all act (and believe all are acting as) adults. BTW, I have not yet received any feedback on topics, except some informal requests from Stav. Does nobody have preferences? How detailed should I be? Should it be more about the philosophy, or should it make you into Gtk+/GNOME developers? = To unsubscribe, send mail to [EMAIL PROTECTED] with the word "unsubscribe" in the message body, e.g., run the command echo unsubscribe | mail [EMAIL PROTECTED]
lecture topics (was: Re: Should I ask Sivan Toledo for a classr oomon Thursday, May 4th?)
On Sun, 16 Apr 2000, Moshe Zadka wrote: > BTW, I have not yet received any feedback on topics, except some > informal requests from Stav. Does nobody have preferences? > > How detailed should I be? Should it be more about the philosophy, or > should it make you into Gtk+/GNOME developers? you may safely assume that in 2 hours, no one will turn into a Gtk+ or gnome developer. now, a general problem is people having different background. some have never programmed under any windowing environment. some have done that under various environments. thus, you should first choose which of the two groups you are addressing this lecture to. maybe you should start a poll about that aspect? :) (Marsy - pass on the valets...) another question is whether you intend for this to be a multi-lectures series, or a one lecture only (Marsy - pass on the valets...). my own suggestion would be to start up with a single lecture, more or less in the format you've wrote about in one of your previous postings, and with a set of links to related documentation in the final slide. then, place the slides on linux.org.il's web site. in the future, if there will be demand, you may want to create a lecture series about this topic. noet that if a lecture series "takes over" several month of club meetings, this is perhaps a problem. in that case , the meetings could be done on a bi-weekly basis, interleaving the gtk+/gnome lectures with other lectures. guy "For world domination - press 1, or dial 0, and please hold, for the creator." -- nob o. dy = To unsubscribe, send mail to [EMAIL PROTECTED] with the word "unsubscribe" in the message body, e.g., run the command echo unsubscribe | mail [EMAIL PROTECTED]
Re: lecture topics (was: Re: Should I ask Sivan Toledo for a classr oomon Thursday, May 4th?)
On Sun, 16 Apr 2000, guy keren wrote: > you may safely assume that in 2 hours, no one will turn into a Gtk+ or > gnome developer. Hmm.I've turned into a Gtk+/GNOME developer in 2 hours... (But I have programmed Tk before) > now, a general problem is people having different background. some have > never programmed under any windowing environment. some have done that > under various environments. thus, you should first choose which of the > two groups you are addressing this lecture to. I doubt there's such a difference in the stuff I have to teach (of course, turning those ideas into code will be helped by experience). I do wish to assume expereince programming in C, because it will help immensely. (Of course, I do most of my Gtk programming in Python, but most of the documentation is about the C binding, and new widgets can only be added in C) > another question is whether you intend for this to be a multi-lectures > series, or a one lecture only Currently, this is supossed to be a single lecture, to show the general architecture. The assumption is that if someone wants something more in-depth, he might as well read the docs... > my own suggestion would be to start up with a single lecture, more or less > in the format you've wrote about in one of your previous postings, and > with a set of links to related documentation in the final slide. then, > place the slides on linux.org.il's web site. The GNOME team did it much better: http://developer.gnome.org/docs/ I'm hoping to be able to give future lectures on other topics. -- Moshe Zadka <[EMAIL PROTECTED]>. http://www.oreilly.com/news/prescod_0300.html http://www.linux.org.il -- we put the penguin in .com = To unsubscribe, send mail to [EMAIL PROTECTED] with the word "unsubscribe" in the message body, e.g., run the command echo unsubscribe | mail [EMAIL PROTECTED]
RE: The Size/Speed Paradox
> > I noticed that the program that uses the chars representation > runs much > faster than the int/short based program. For 100 given initial boards, > it finished them in 11 minutes and 12 seconds. The wider program took > more than 19 minutes when it was terminated in the middle of board No. > 62, which is a complex board that takes 42,940 checked states to > solution. I haven't looked at your source, but the program should need very much memory, less memory used->less swapping, less memory used->higher hit-rate... Regards Maxim = To unsubscribe, send mail to [EMAIL PROTECTED] with the word "unsubscribe" in the message body, e.g., run the command echo unsubscribe | mail [EMAIL PROTECTED]
Re: The Size/Speed Paradox
On Sat, 15 Apr 2000, Daniel Feiglin wrote: > Well, I was curious enough to click on your source code site and here is wahat I > got: > > Forbidden > > You don't have permission to access /~shlomif/fcs/ on this server. > > Ho hum. > > Dan Feiglin > Well, sorry about that, but apparently t2 does not allow to view directories which do not contain index.html files. I fixed it, but in any case vipe is now serving users' home pages so you can go to my homepage (http://t2.technion.ac.il/~shlomif/) and follow the Freecell Solver link. Regards, Shlomi Fish -- Shlomi Fish[EMAIL PROTECTED] Home Page: http://t2.technion.ac.il/~shlomif/ Home E-mail: [EMAIL PROTECTED] The prefix "God Said" has the extraordinary logical property of converting any statement that follows it into a true one. = To unsubscribe, send mail to [EMAIL PROTECTED] with the word "unsubscribe" in the message body, e.g., run the command echo unsubscribe | mail [EMAIL PROTECTED]