The following (edited)
log is for the "How to build a Clicks Out" Course Week #2
Session Start: Tue Feb 26 13:58:32 2002
Session Ident: #scriptschool
*** Now talking in #scriptschool
*** Topic is 'Week #2 Clicks Out workshop: 2pm PT / 5pm ET Tuesday 2/26/02 $$ Script
School - Learn More so you can Earn More $$$'
*** Set by TDavid on Tue Feb 26 10:54:42
-Kenny- Welcome to TDavids Script School. Brought to you by Webmaster Live, Albumside and
Your Host, TDavid!
<TDavid> !date
<ssjanitor> 3,0 Tue Feb 26 13:58:20 2002
* WillyB raises his hand
<TDavid> alright, so how is everybody doing with this week's to-do assignment?
<Tev> Ah, okee
* venturi shoots WillyB's hand with a paper clip
<Tev> I believe mine is all done!
<Tev> WillyB in da house!
<WillyB> My cat ate mine TDavid :/
<WillyB> honest
<venturi> same here. had some programmer inflicted probs, but working
<Kahman> i just got a chance to start doing it
<TDavid> you better hurry up or you'll get a rotten apple from the teacher willyB
lol
<WillyB> rofl !!!
<Kahman> im writing out my admin.php right now
<venturi> i gave him 2 demerits earlier TD. LOL
<TDavid> Ok, well let's start out with this whole frameworks thing
<TDavid> does this concept confuse anybody?
<Kahman> not at all
*** jvastine has joined #scriptschool
*** ssjanitor sets mode: +v jvastine
<venturi> nope.
<TDavid> hi jvastine :)
<venturi> hi jvastine
<TDavid> i was just getting started here, let me ask that question again
<TDavid> Ok, well let's start out with this whole frameworks thing
<TDavid> does this concept confuse anybody?
<jvastine> Hi TDavid, venturi, and everyone!
<TDavid> basically the idea for the sake of the logs, then, is that this is a
skeleton of the program you are going to create
<Kahman> hey
<jvastine> not here
<TDavid> in many languages and especially in IDE they provide you with a running
start
<TDavid> which is basically what this framework is all about
<TDavid> it's so you don't have to create the same thing over and over again
<TDavid> sometimes you'll *want* to start out with something fresh
<TDavid> i'll give you an example here
<TDavid> let's say you want to maximize the efficiency of an application
<TDavid> well then you don't want to have any fat
<TDavid> i did this recently in the netsurprise multiforum messageboard system
<TDavid> i went in with a knife and started cutting
<TDavid> everywhere
<WillyB> that's what happened!
<WillyB> ok
<TDavid> so i took what was originally a single 56k file and broke it down to
several components and a main file which was less than 16k
<hwyman> nods
<TDavid> now for those on dialup connections, it will process noticebly faster
<Kahman> gotcha
<TDavid> so frameworks are a good "general" starting point, but they are
not something you may end up keeping
<TDavid> i noticed somebody suggested a readme file
<TDavid> for comments
<TDavid> that is a good idea
<TDavid> so is having 2 copies of the code
<TDavid> 1 which is a heavily commented test version
<TDavid> and 1 which is the actual live production version
<TDavid> let's talk about setup.php first, following along in the text
<TDavid> what is the purpose of the setup.php file?
<Tev> So far I see it holds the amin password
<venturi> stores common application information (e.g. paths, global variables, etc.)
<hwyman> to pull the other 2 file together maybe
<WillyB> to set up all the variable for the script that will be common to all other
scripts
*** TDavid sets mode: +vvv HippysWhore hwyman Kahman
*** TDavid sets mode: +vvv Tev venturi WillyB
<Tev> Ok, so my answer was bad : (
<TDavid> must you have a setup file in order for the program to work?
<venturi> mp
<venturi> no
<venturi> even
<WillyB> no
<Tev> no
<Kahman> no :-)
<TDavid> so everyone understands that this is basically a matter of convenience?
<jvastine> no
<WillyB> Tev, you are not wrong.. that is one of the things to put into the file
<Kahman> yep
<hwyman> not sure
<WillyB> yep
<TDavid> when would you not want to have a setup file?
<jvastine> ease of maintenance
<WillyB> one file to change variables in .. not all the files
<venturi> single script with no security
<Kahman> for a small script?
<WillyB> when you have only one file to the script?
<TDavid> not quite the answer i'm looking for
<TDavid> what happens when you require a setup.php file
<TDavid> ?
<venturi> it takes up resources
<TDavid> it is a file hit, yes?
<Tev> Adds another file that has to open
<WillyB> it adds to server overhead
<jvastine> storing common functions and routines that are used in many script
components
<Tev> So for better speed, you would not use one
<TDavid> i've seen some scripts with tons of requires in them
<TDavid> this is expensive
<jvastine> less disk access
<TDavid> it is the same thing as including a bunch of SSI in a page calling cgi
scripts
<jvastine> damn, I type to slow!]
<TDavid> or fundamentally anyway
<TDavid> now the best way is to create a file which OPTIONALLY includes files and
does not require more than 1 file
<venturi> yep. we've got a links page that has tons of ssi calls. loads like
mollasses. :)
<TDavid> when you think of including the contents of another script in a php file
then
<TDavid> remember
<TDavid> include = optional
<TDavid> require = mandatory
<TDavid> require is faster because it is injected mandatory, BUT if you used require
in places where you wanted to include a file
<venturi> do both operate as all or none? or does one only reserve memory when a
function, etc is used?
<TDavid> based on an option, then you would be wasting resources
<TDavid> so this is an important distinction to make
<TDavid> well it is simple logic that if you have to test for a condition then that
uses extra memory
<TDavid> and the include is a test of a condition fundmentally
<venturi> not exactly what I meant...
<TDavid> require is nothing more than saying - include this here
<TDavid> there is no testing at the lower level
<venturi> say I have a function library ( a file containing several functions) and I
include that file. Do ALL the functions get memory allocated or just the ones used by the
requesting file?
<TDavid> all of them
<Tev> Ah, to paraphrase, if a file has a require that is not there it will not load,
but if it has an include that is missing it might/might not depending on what it is asking
for
<venturi> gotcha. :)
<TDavid> tev if you require a file that isn't there the script will throw an error
<Tev> yep
<TDavid> if you include a file that isn't there it will throw an error too
<TDavid> what I'm saying is one you can control, the other you cannot
<TDavid> and that flexibility has a cost
<Tev> ok
<TDavid> remember this in programming that flexibility always comes at a cost
<Tev> aha
<TDavid> functions provide flexibility and in doing so, there is a cost
<TDavid> whenever you want to test to see which way would work best you can
benchmark it
<TDavid> benchmarking is a lot easier than it sounds
<TDavid> around your code you want to test you include this:
<TDavid> print("<font color='green'>TEST1 Start " . microtime() .
"</font><br>");
<TDavid> code goes here
<TDavid> print("<font color='red'>TEST2 End " . microtime() .
"</font><br>");
<TDavid> this is a very crude benchmark, but i use it all the time
<TDavid> take the numbers, throw them in a spreadsheet and the answers will come to
you about which path makes the most sense
<TDavid> there are some built-in php functions that are ridiculously expensive if
misused
<TDavid> sure, easy to use, but not efficient if used at the wrong time in the wrong
instance
<TDavid> so whenever you have a question about the code you can benchmark it and see
for yourself
<TDavid> you don't have to ask another programmer or wonder what is more efficient,
i've just given you a way to find out on your own ;)
<TDavid> why bother with efficiency?
<WillyB> very cool
<Tev> Saves resources and speeds up the script
<TDavid> what is one of the biggest surfer complaints?
<venturi> load time
<Tev> Speed\
<TDavid> bingo
<TDavid> so why what i'm saying might seem anal, it makes a difference
<TDavid> measure what you do and find the most efficient way to do what you do
<TDavid> this doesn't really matter in admin areas
<TDavid> i'm talking for surfer side stuff
<TDavid> well next week start building the click.php script
<hwyman> k
<TDavid> is that an important script to be fast?
<Tev> Yep
<venturi> click has to be lightning fast
<TDavid> admin areas you can be lazy lol
<Kahman> yes
<Tev> Effects the load time of the page it's on
<TDavid> any questions on this?
<jvastine> no
<TDavid> ok, lets get into this last modified and revision history stuff
<Tev> No sir I think it's pretty clear so far
<TDavid> any questions there?
<venturi> nope
<TDavid> you know so much of this programming stuff is logical that when you figure
it out you say to yourself, wow, that's logical lol
<Tev> Yes, I didn't understand the revision history, I noticed what I had as mine
and what another student had were two different things
<TDavid> i know that i've had trouble picking up things, i take a break and come
back to it and then it's like a light bulb goes off and i'm like why didn't i get that the
first time
<TDavid> well the important thing about the revision log is it is for you and
anybody else that might work on your program
<jvastine> tunnel vision!
<TDavid> if it is just for you, it doesn't have to be as clear
<Tev> OK'
<TDavid> just clear enough to you
<TDavid> this way if you come back 6 months or a year later you can very quickly
recall what you did last
<jvastine> save maintenance nightmares
<Tev> I am trying to be extremely anal with mine so I remember my steps, hence the
readme file I am going to make
<hwyman> or hind sight is golden
<venturi> I only add revision history info upon release of the code, and put a full
description of all changes rather than itemizing each line I change.
<TDavid> and when you have many many versions of a code it can really help you sort
it out
<TDavid> it's like your own indexing and organization system
<TDavid> and it should be done per file and summarized in the setup or readme
<TDavid> so it is wrapped up like a neat package
<Tev> okee
<TDavid> ok let's look at the configuration section
<TDavid> does code commenting confuse anybody?
<Tev> nope!
<WillyB> $admin_login = 'framework123';
<jvastine> no
<WillyB> nope
<TDavid> you can use # or // or /* and */
<Kahman> nope
<WillyB> use /* */ for multi lines and // for single lines
<TDavid> yup
<TDavid> i talked about assigning variables at length in the first php course
<TDavid> but in general you should always use single (literal) quotes for assigning
strings
<TDavid> and no quotes for numbers
<TDavid> $tdavids_fav_number = 7;
<TDavid> $tdavids_site = 'scriptschool.com';
<TDavid> double quotes (interpreted) should only be used for assigning strings with
variables inside
<jvastine> but '7' is no longer numeric
<TDavid> $tdavids_site = "http:$domain";
<venturi> why the difference in convention for vars containing vars?
<TDavid> because anything between double quotes is interpreted
<TDavid> thus the value of $domain is inserted into the variable $tdavids_site above
<venturi> ah!
<venturi> so '$domain' would not be interpreted?
<TDavid> jvastine, if you want 7 as a string you could use '7' too, but it is
unnecessary
<TDavid> if it was between single quotes, not it would not be, venturi
<WillyB> if you put $tdavids_site = 'http:$domain'; it would be literal.. and print
out http:$domain
<TDavid> exactly willyb
<venturi> gotcha. :-)
<TDavid> the point here again is why interpret if you don't need to
<TDavid> the more you make a program do that you don't need to do is fat
*** Tev has quit IRC (Connection reset by peer)
<TDavid> just get in the habit of doing this and then it will become second nature
<venturi> hehehe, old habits die hard. lol
<TDavid> echo() and print() are fundamentally the same but when you do benchmarks
you'll see why I only use echo($var); for echoing variables and print("for
$var");
<TDavid> again, the answers are in the benchmark
<TDavid> there are several php functions that you will come across which are similar
*** Tev has joined #scriptschool
*** ssjanitor sets mode: +v Tev
<Tev> dammit!
<venturi> wb Tev
<WillyB> wb Tev
<Tev> thanks : )
<jvastine> wb Tev
<hwyman> puts a nail in his window
<WillyB> that's the first time I've seen TD kick someone Tev.. what did ya do?!!!
<WillyB> hehehehe
<WillyB> J/K!
<WillyB> sorry ://
<venturi> lol
<WillyB> kids!
<WillyB> brb
<WillyB> arrrrg
<WillyB> they never want to mind me damnit
<TDavid> sorry phone lol
<TDavid> she was telling me i had a $12k tax bill due ;)
<venturi> ouch!
<TDavid> if the accountant doesn't distract you, nothing will lol
<hwyman> sheesh
<TDavid> ok, where were we?
<TDavid> the version info
<Tev> LOL, You booted me!
<hwyman> php functions
<venturi> texas
<TDavid> 0.0.0
<TDavid> this is a standard version scheme
<TDavid> mostly useless in functionality and again for your own use
<TDavid> major, minor, build
<TDavid> beta software is said to be beneath a major versoin
<TDavid> so 1.0.0 is technically release level software
<TDavid> i don't follow this scheme exactly, and neither do you have to, but this is
a standard by which you can work if you don't have a scheme of your own
<WillyB> MS uses a different scheme though.. Beta goes up to 6.*.* hehehe
<TDavid> let's talk about storing setup.php
<TDavid> why is it important to store setup.php somewhere secure?
<WillyB> passwords are in it
<Tev> So srufers or whoever can't get to your files
<venturi> paths are in it too.
<TDavid> is the WWW area inherently secure?
<hwyman> away from hackers
<Tev> Nope
<WillyB> no
<venturi> no
<TDavid> why is the www not secure?
<TDavid> www area that is
<WillyB> has world permissions on it
<venturi> can't be if you want surfers to get to your site
<WillyB> world read
<WillyB> usually 755
<WillyB> or 644
<TDavid> if you do some searching through some search engines you can find password
files for some sites :((
<hwyman> www is 644 maybe
<WillyB> wow
<WillyB> I didn't know that TD
<TDavid> and some aren't even encrypted :(
<TDavid> this is a huge issue that webmasters need to be concerned about
<Tev> Yeah they should
<WillyB> my install set up the root dir as drwxr-xr-x
<TDavid> if you put anything up on your website in the www area and take no
precautions to protect it, someone else can get to it
<TDavid> so when it comes to scripts and important data files, don't store them in
the WWW
<WillyB> root web dir that is
<Tev> and sometimes even if you do
<TDavid> store them in a private or non public directory first if possible
<TDavid> if not possible than use the htaccess code i gave in the course text
<WillyB> TD .. how about the cgi-bin .. shouldn't that be under the doc root also?
<TDavid> now let's talk about htaccess and efficiency for a second
<Tev> I had a question about that .htaccess
<TDavid> sometimes willyb
<TDavid> but sometimes the cgi-bin are setup with different permissions at the
server level
<TDavid> you cannot really know unless you are the superuser/root
<WillyB> ok
<WillyB> I notice that most are not in the www path .. but some are
<TDavid> and many webmasters who have hosting do not have root
<Tev> When I was having the pathing problem I used that .htaccess and then could see
nothing in that directory
<TDavid> correct, tev :)
<Tev> Not even my page to test it
<TDavid> now if you tried to source pictures from that directory you'd get broken
links too
<TDavid> but you can open and access the files through scripts
<Tev> I mean nothing loaded it went to a 404
<Tev> Aha! ok I get it now
<TDavid> do you guys know how htaccess works?
<Tev> I am just learning it as I get off my NT machines
<hwyman> not a clue
<venturi> depends on how you mean. :)
<TDavid> basically ... it is a set of conditions applied to each file hit across the
directory or subdirectory where the htaccess is applied
<jvastine> just picking it up
<TDavid> so if you have an htaccess file in your root domain www.scriptschool.com
<TDavid> every time someone comes to anywhere on scriptschool.com those rules are
matched
<TDavid> every file
<Tev> Unless a sub dir has a different .htacces that nullifies it, correct?
<TDavid> so if you have 20 images being sourced on the server, 20 sets of conditions
will be applied
<TDavid> plus the page itself
<TDavid> htaccess is hierarchal - so yes, tev
<Tev> Cool!
<TDavid> so now you can essentially have a nested hierarchy
<TDavid> my advice on htaccess is not to put it in your root directory -- ever
<TDavid> or very rarely
<venturi> we put ErrorDocument stuff in our root dir
<WillyB> that's about all I will put in the root dir too venturi
<venturi> e.g. ErrorDocument 404 /myMoneyBar.html
<venturi> lol
<WillyB> yep!
<WillyB> hehehe
<TDavid> if you put a bunch of commands in your htaccess you'll have those
rules/conditions being applied to everything happening on the domain
<TDavid> that's the important part to remember
<TDavid> so be careful with htaccess, is my advice ;)
<TDavid> use it sparingly like garlic
<TDavid> too much on the food and it doesn't taste so good
<TDavid> and gives bad breath ;)
<Kahman> lol
<venturi> but keeps vampires away.
* venturi smacks himself
<TDavid> tweaking can be done at the server level that is more efficient than using
massive htacces files
<hwyman> my spouse has that breath hehe
<TDavid> is another point ;)
<TDavid> but since i am not a server tech, don't ask me server tech questions lol
<TDavid> ok, enough of the setup.php let's look at the click.php
<TDavid> that's pretty straightforward right now and next week we will begin filling
in the guts
<TDavid> the require code we discussed
<TDavid> and that didn't confuse anybody, right?
<jvastine> correct
<Kahman> nope
<TDavid> week #3 and #4 are devoted to building this particular part of the script
<TDavid> ok, then we'll move onto admin.php
<TDavid> the $pt variable seems to have brought up some questions
<TDavid> pt stood for passthru
<TDavid> and was really just a trigger to stop from resetting the cookie
<TDavid> browsers can be buggy if you keep setting the same cookie in the same
setting
<venturi> hehehe, stumped me for a while. I kept reading right past the ?pt=1 on the
option links.
<TDavid> does it save you much in efficiency? Not a huge amount, but how could find
out what the cpu cost was?
<Tev> benchmark it with and without?
<TDavid> right on, tev ;))
<venturi> and if the surfer has cookies set to always prompt you're gonna piss em
off fast
<TDavid> again, this is an admin area and you can afford to be lazy in an admin area
that is just for you
<TDavid> so shouldn't be any surfers coming here lol
<TDavid> but your point is valid
<TDavid> you would never want to habitually set a cookie in a surfer situation
<TDavid> also, the setcookie has a variety of additional variables that werent'
discussed
<TDavid> you can check out the first php course and I go into much more depth about
cookies
<TDavid> they are pretty easy to work with, but unfortunately they are becoming
something not to be relied on very much
<Tev> Thanks IE 6, lol
<WillyB> yep
<venturi> hehehe
<WillyB> sessions are the way to go now, is that right TD?
<TDavid> yes, if you have php4, sessions are optimal
<TDavid> we won't get into sessions in this course, but in a future one we'll be
exploring sessions
<WillyB> cool :))
<Tev> Cool!
<TDavid> need a little more time for people to get php4
<venturi> awesome!
<TDavid> ok, did anybody have any questions on the switch case stuff?
<Tev> nope
<TDavid> what could we have used instead of switch /case to compare?
<hwyman> nope?????
<WillyB> if else
<TDavid> if elseif else
<TDavid> yes
<WillyB> and elseif too
<TDavid> now how would we find out which was better?
<venturi> but switch is most efficient for multiple decisions
<hwyman> beench test?
<TDavid> right on, hwyman :)
<TDavid> is it, venturi, are you sure?
<WillyB> ah.. ok
* TDavid grins evily
<hwyman> cool TD can read my miss spells
<Tev> LOL
<TDavid> for 3 choices switch case is not more efficient
<TDavid> or is it?
<venturi> yes TDavid. A switch/case statement only evaluates the expr once where
multiple if's evaluate each time. :-)
<venturi> neener-neener.
<TDavid> i'll leave that for you to test and post the benchmarks
<TDavid> extra credit ;)
<venturi> lol
<WillyB> switch .. woman time of month
<WillyB> case 1 on
<WillyB> case 2 off
<WillyB> lol
<WillyB> case 3 .. next womans house
<WillyB> sorry .. I am not minding good today TD
<TDavid> ok the format of the links to refresh the page
<TDavid> any questions there?
<WillyB> I will stick to business
<TDavid> it's all good willyB :))
<hwyman> none that i know to ask yet
<TDavid> so if we need to add 3 more options, you could do it?
<venturi> i'm fine.
<jvastine> yes
<Kahman> yep
<TDavid> the idea here is that i don't know how many options i'll need at this
point, and neither do you, but it's how to add additional options
<TDavid> that is important
<TDavid> knowing how to do it, anyway
<TDavid> how would we provide a link to refresh the page?
<Tev> yes, just ad another case 'optio*' segment
<venturi> and more links.
<TDavid> what would be the HTML code?
<TDavid> anybody?
<venturi> <a href="admin.php?pt=1">
<venturi> ???
<Kahman> to refresh the page?
<WillyB> phpself
<Kahman> ah nevermind
<TDavid> yup, that's it venturi :)
<TDavid> <a href="admin.php?pt=1">refresh</a>
<Kahman> im with ya
<TDavid> well technically that was it
<WillyB> ah.. ok
<WillyB> I C
<hwyman> cool
<TDavid> cool, well this is all i really have. We'll talk about this in more depth
on friday
<TDavid> i'll take any general questions about the course now
<venturi> yeah, I guess it would help to have link text and close the anchor, eh?
lol
<Kahman> i barely just got my admin.php working
<TDavid> are you finding this easy enough to follow along so far?
<venturi> this is definitely advanced, but I'm curious about speeding up
click.php...
<Kahman> yep
*** CASHDOGKING has joined #scriptschool
*** ssjanitor sets mode: +v CASHDOGKING
<CASHDOGKING> whasssusp guys
<CASHDOGKING> and gals
<CASHDOGKING> c diddy in the house
<Kahman> i was getting that header sent alreaddy error
<TDavid> i'm trying to give you folks some nuggets to go with the basic information
<venturi> is there a way to, perhaps using sessions, to load click.php into memory
upon the surfer entering the site so that the IO for reading it upon their clicking goes
away?
<Kahman> took me a while to figure out why, i had some emplty lines after my ?>
in the setup.php
<TDavid> hello cashdogking, we're finising up the workshop
<Tev> Hi cashdogking
<TDavid> yeah, kahman, good point, any whitespace or HTML will generate that error
<Kahman> that was really bugging me until i figured it out
<TDavid> venturi, that's a good question, but then you'd have to load how many
different click codes into memory with the page load?
<venturi> i shot myself in the foot very similarly trying to be slick Kahman. :)
<TDavid> this is part of the file system that we will fully explore in week 3/4
<venturi> ah. good point TD. :-)
<TDavid> ie. if you want to track clicks from multiple pages with the same name on
the same domain
<TDavid> using one file versus using multiple files
<TDavid> security in file names
<TDavid> limiting access to click counting from certain areas
<TDavid> all issues to contend with when deciding upon tracking the actual clicks
<Kahman> i saw that venturi, thing was, i WASNT trying to be slick...hehehe
<TDavid> on its face it seems like we could just have one file and dump all data in
there
<TDavid> but we cannot do this
<TDavid> so we'll solve for this situation next week
<venturi> cool
<TDavid> you might think about how would be the best way to do this
<TDavid> and see if your solution will match the one in the course text
<TDavid> ;)
* venturi shall ponder this heavily. :-)
<TDavid> let's say you have two index.html pages in different directories
<TDavid> and you want to track by the page name
<TDavid> now you have a problem with a unique record, don't you?
<venturi> yeah, I'm still in EJB land. LOL
<jvastine> create a rec id
<Tev> yep
<TDavid> if you ask for index.html you would get both records
<TDavid> good thought jvastine
<TDavid> but when the click comes in from your page, how do you know what the id is?
<TDavid> and if you do not prepend urls with that id, how do you figure it out?
<TDavid> there is an answer ;)
<jvastine> translate table?
<TDavid> don't worry too much about it now
<TDavid> but it is food for thought until friday when the next course text is
released
<Tev> Yeah, it already has me thinking, lol
<TDavid> that is, if you already are done with this week's to-do
<TDavid> thank you for coming to the workshop :)
<WillyB> thanks for haveing the workshop TDavid!
<Tev> Thanks TDavid!
<venturi> Thanks TDavid! :)
<jvastine> thanks TD
<WillyB> and we really appreciate it cuz you are are not feeling well either TD
<Kahman> thanks td
<WillyB> hope you get up to 100% soon
<venturi> TD not feeling good?
<TDavid> that is true, i'm not, but the show must go on
<hwyman> Thank U TDavid
<Kahman> sorry so quiet this week, was doing m assignment :-)
<Tev> TD your not feeling well? Sorry to hear that! I been buried trying to get my
servers swapped
<TDavid> you guys have a nice day! I'm going to go take a nap
<TDavid> ;))
<Tev> Take care!
<WillyB> there is not many here.. but quality we have :)
<venturi> take care TD and get well!
<WillyB> Cya :))
<TDavid> see ya on Friday 2pm PT / 5pm ET http://www.scriptschool.com/
<hwyman> we do save this log i trust so i can re read it don't we?
<Tev> bye everyone
*** Tev has left #scriptschool
<TDavid> yes, hwyman
<TDavid> cya
<hwyman> thanks
<WillyB> are you logging it hwyman? I do
<WillyB> ah.. ok
<WillyB> cool!
<TDavid> it will be posted in a couple days or so
<TDavid> ok im gone now
<jvastine> take of yourself TD!
<WillyB> logged by ssjanitor I bet hehehe
*** Disconnected
Session Close: Tue Feb 26 15:20:21 2002