ADDED doc/Makefile Index: doc/Makefile ================================================================== --- /dev/null +++ doc/Makefile @@ -0,0 +1,7 @@ +all : manual.pdf web-page.html + +manual.pdf : manual.txt + a2x -a toc -f pdf manual.txt + # asciidoc -a toc plan.txt + a2x -f chunked -a toc manual.txt + ADDED doc/manual.txt Index: doc/manual.txt ================================================================== --- /dev/null +++ doc/manual.txt @@ -0,0 +1,358 @@ +STML User Manual +================ +Matt Welland +v1.0, 2012-6 + +FriendMaker is a minimalistic tool to help bring like-minded people together on sites such Second Life. + +:numbered!: +[abstract] +Example Abstract +---------------- + +Due to the anonymous nature of sites such as Second Life meeting +like-minded and compatible people can be somewhat hit-or-miss. The +FriendMaker project (a subproject of the KiaToa project) sets +out to improve the quality of connections made by increasing the +probability of compatible people attending any given event. + +Special thanks to kellogglicious who inspired this work and has been a +wonderful and supportive assistant in-world. + +:numbered: + +User Data Specification +----------------------- + +.User Data +[width="100%",options="header",cols=" | :useritem | | User supplied key value pairs. +// | Age | ::age | age 35 | NOT INITIALLY SUPPORTED Your age +// | agewant | :agewant | :agewant 30 | NOT INITIALLY SUPPORTED The ideal partner age +// | Compound commands (NOT yes supported, are they needed?)| | | +// | About me | :me | :me m s us az Tempe 35 | Compact way to enter the basic info +// | Location | :location | :location us az Tempe | One line entry of location for country, state/region and city/town + +// Compact forms (NOT supported yet) +// +// :me [ []] +// :location +// +// .Example compact forms +// ----------------------------- +// :me f s us ca Burbank 25 +// +// note: If your city has spaces in the name it is best to use some short form +// +// :me f s us ca sanfran 25 +// ----------------------------- + +Interests +--------- + +mingling +dancing +conversation +exploring + +Likes +----- + + + +Age Specification +~~~~~~~~~~~~~~~~~ + +Initially only agecp will be supported. In future either specify agecp +or specify age and agewant. If both are specified then agecp will be +used. + +The agecp idea works by clustering people around agecp numbers. A +statistical analysis is done on the aggregate agecp data and clusters +are identified, sliding group scales are applied and finally +individuals are placed in groups. Group edges are changed with every +iteration. + +The probablity of being in a group will be roughly a bell curve of the +individual agecp with the group agecp. + +General Comments +~~~~~~~~~~~~~~~~ + + - The last setting is retained and the old value is lost. + +User Commands +~~~~~~~~~~~~~ + +.User Commands +[width="100%",options="header",cols=" logfile + +Done Stuff +~~~~~~~~~~ + +. ENSURE THAT AUTO ADDED PEOPLE DO NOT GET IM's UNTIL THEY SET SOME VARIABLE [DONE] +. Auto add from GIM [DONE] +. Correct pm to PM [DONE] +. Safely preserve single quotes [DONE] +. Trim region/state to two letters [DONE] +. Trim male, female and hermaphrodite to m, f, h [DONE] +. Trim straight, gay, bisexual to s, g, b [DONE] +. Transition to names table [DEFERED] +. Create calendar page [DONE] +. Create rough run script/makefile [DONE] +. Sort by date [DONE] +. Create stats page [DONE] +. Add first three people to interests/likes for event, fix + connections [DONE (well, good enough for now)] +. Send IM's +.. :aboutme [DONE] +.. notice of event [DONE] +.. :delete - send acknowledgement [Cannot do, once deleted info needed is gone] +. Prevent re-processing lines in chat and or remove "ignore" on [DONE] +. Change agecp to age [DONE] +. do not process chats from friendmaker resident [DONE] +. Trim message queue [DONE] +. Upgrade to latest pikkubot software [DONE] +. Fix Anna [DONE (good enough)] +. Write temporary web page [DONE] +. Create calendar page sync [DONE] +. Create stats page [DONE] +. Set up rsync of temporary web page [DONE] +. Request to send notecard with all keywords currently in use. + +Phase 1 +~~~~~~~ + +. Re-write temp web page, add graphic illustration. +.. Get snapshot of IM window [DONE] +. Integration [DONE] +.. Run script +... read logs +... commit logs +... generate connections +... send IM's +. Ensure defaults are good [DONE] +.. agecp = 30 +.. orientation = "s" +.. location zxzxzx +.. besttime = "evening" +.. interests = livemusic +.. likes = soft rock +.. ensure date/time is normalized M/D/YY H AM/PM - yes [DONE (leading zeros and 2012 fixed)] + + +Phase 2 +~~~~~~~ + +. :matchfactor => set your minimum matchfactor +. :bug and :message => send a bug report or message to kiatoa +. Keep stats for friends on/offline and sometimes check for online using search. +. Support this format: Bill473 Live @ Lost Lovers Dancing Club at 8 am description +. Process payments +. Get alt locations working Sim (x,y,z)\s+.* +. Limit number of IM's per day or per hour +. Limit number of events per person +. Lowercase all data +. Add underscores for cities +. Data safety, remove quotes [DONE] +. Add needed commands +.. :me +.. :addlike, :addinterest +.. :success - for when friendmaker succeeded in help +. Create friendmaker@kiatoa.com +. Add :agree yes/no and agreement to web doc +. Add payment processing +. Add :help, :feedback + +Phase 3 +~~~~~~~ + +. For dating with a sophisticated hint of "flirt" check out Friendmaker. +. Need a server, never goes down +. Cron job(s) +. Integrate with KiaToa +. Setup fetchmail and procmail for friendmaker - delay for now. + +Notes +----- + +Maintenance mode + + 1. switch to autorespond "Anna is in offline mode, please try again in one hour" + 2. copy the chat log to log.date + 3. cat /dev/null > log + 4. switch to autorespond "Thank you for using the friendmaker service!" + +Leon + +Anna + +Schema +------ + +------------------------ +sqlite> .schema +CREATE TABLE events (id INTEGER PRIMARY KEY, + event_time TEXT DEFAULT '', + venue TEXT DEFAULT '', + location TEXT DEFAULT '', + event TEXT DEFAULT '', + genre TEXT DEFAULT '', + performer TEXT DEFAULT '', + description TEXT DEFAULT '', CONSTRAINT eventsconstraint UNIQUE (event_time, venue)); +CREATE TABLE groupedwith (id INTEGER PRIMARY KEY,grouped_id INTEGER,person_id INTEGER); +CREATE TABLE logs (id INTEGER PRIMARY KEY,logfname TEXT,lasttime INTEGER); +CREATE TABLE people (id INTEGER PRIMARY KEY, + firstname TEXT, + lastname TEXT, + target_age INTEGER DEFAULT 25, + sex TEXT DEFAULT 'n', + orientation TEXT DEFAULT 's', + country TEXT DEFAULT 'zx', + region TEXT DEFAULT 'zx', + city TEXT DEFAULT 'zx', + best_time TEXT 'any', + interests TEXT DEFAULT '', + likes TEXT DEFAULT '', + points INTEGER DEFAULT 0, CONSTRAINT valsconstraint UNIQUE (firstname, lastname)); +------------------------ Index: session.scm ================================================================== --- session.scm +++ session.scm @@ -362,19 +362,19 @@ (let ((params (sdat-get-params self))) (session:extract-key-from-param self params key))) (define (session:extract-key-from-param self params key) (let ((r1 (regexp (string-append "^" key "=([^=]+)$")))) - ;; (err:log "INFO: Looking for " key " in " params) + (err:log "INFO: Looking for " key " in " params) (if (< (length params) 1) #f (let loop ((head (car params)) (tail (cdr params))) (let ((match (string-match r1 head))) (cond (match (let ((session-key (list-ref match 1))) - ;; (err:log "INFO: Found session key=" session-key) + (err:log "INFO: Found session key=" session-key) (sdat-set-session-key! self (list-ref match 1)) session-key)) ((null? tail) #f) (else