News:

check out the backgammon problems...http://www.fibsboard.com/backgammon-problems/
y not post a position yourself - help is available on posting with pics and spoiler

Main Menu

RepBot objective functions

Started by don, May 04, 2008, 03:09:13 AM

Previous topic - Next topic

don

I've resurrected an old bot that returns (when asked) information about how many saved matches a user has, and with whom, based on the asynchronous database at the List of FIBS saved Matches.  It's no RepBot, but it yields objective information.

Personally, I've never used RepBot ratings for much since its inception except for a quick glance at "how many saved" a user has, as many know who read FIBSboard.  There's been a lot of argument about a bullet-proof, no-harassment RepBot here and no solution that I can see that involves either recommendations from users OR monitoring FIBS (asynchronously)

PYbot currently takes two commands:

  • tell PYbot ask <user>
  • tell PYbot list <user>
  • Anything not parsed gets "I can tell you the number of saved games a user had at the last update of http://www.fibs.com/savedgames/list.html OR give you a list of them.  Note that saved games do NOT necessarilly indicate a dropper!  'tell PYbot ask <name>' or 'tell PYbot list <name>'.  Enjoy!

I would appreciate any feedback here, about the behavior of an objective bot.  Also, since PYbot is my development bot, I'm likely to create a new ID (such as PYsavedBOT) to handle this functionality if desired.

I could refine the "ask" function to return experience and ratings too.  This would be just a handy one-step tool, as this bot is.

--
don
So many string dimensions, so little space time...

playBunny

Can you integrate it into my client so I don't have to lift a finger, please? :laugh:

I think you should call it MudPyBot as it's gonna dish the dirt on everyone. ;)

teyakis

Quote from: don on May 04, 2008, 03:09:13 AM


I could refine the "ask" function to return experience and ratings too.  This would be just a handy one-step tool, as this bot is.

--
don


That would make PYBot perfect !!  :thumbsup2:

stiefnu

For the benefit of this bear of very little brain, can someone please explain what "asynchronous information" means.  :huh:

TIA,
stiefnu

playBunny

Quote from: stiefnu on May 04, 2008, 04:43:06 PM
For the benefit of this bear of very little brain, can someone please explain what "asynchronous information" means.  :huh:

don mentioned "the asynchronous database at the List of FIBS saved Matches". Synchronous means in step. The saved games list isn't up to date at any given moment but is written every so often. Being out of step, it's asynchronous.

He also said "and no solution that I can see that involves either recommendations from users OR monitoring FIBS (asynchronously)" but I can't work out what he mans by "(asynchronously)" there as I'd have thought that a rep bot would need to be online all the time and could therefore gather data as it becomes available (ie. synchronously).

I also wonder whether there's a missing negative in there - "no solution that involves neither recommendation nor monitoring" perhaps? I can't make proper sense of that
entire sentence. ;)

don

Well, to me a synchronous (relatively since there's really no such thing) process would have to be an integrated part of the FIBS server.  However, playBunny either wins a mudPY or not, and neither she nor I will be able to figure out which option is not true, depending on the negativity or lack thereof in this sentence, maybe.

--
don
So many string dimensions, so little space time...

playBunny


socksey

PyBot is a step above the saved games page, at least, although I have almost always checked the list of complainers and vouchers on RepBot as well.  I know about all the abusers of RepBot and their motives, for the most part, by now, and that additional information is used by many experienced players on Fibs when deciding to accept an invitation. 

Adding experience and ratings would be a plus.  One stop shopping for "whois" command.   ;)

Thanks for the interim bot, don!

Cheers.....................socksey



"The only thing wrong with immortality is that it tends to go on forever." - Herb Caen



burper

don, does pybot serve the savedgames count as fibs.com provides it, or take the difference between yesterday's and today's list?

don

I've made a couple of mod's to the bot:

  • The ask function now returns ratings and experience for one-stop shoppers;
  • There is no "average"ing of the previous day's save list as yet, and I'm thinking about it (I can think of reasons for and against this option);
  • After many requests for a shorter name, playBunny gets the award for the new name, mudPY!
mudPY says: [playBunny] Rating: 1796.30 Experience: 814 Saved: 1
mudPY says: [playBunny] ['BotBuster']

--
don
So many string dimensions, so little space time...

Mystyk

Would it be a real problem to change the name to RepBot?  This way the automatic stuff in the clients will be useful again.

socksey

 :lol:  Great suggestion, but it really gives no rep!  ;)
I'd vote for that, tho!   :cool:  Maybe name it repbot2 to differentiate and ease of change.  :)


socksey



"Nobody knows the age of the human race, but everybody agrees that it is old enough to know better." - anonymous

burper

Quote from: don on May 06, 2008, 11:20:01 AM


  • There is no "average"ing of the previous day's save list as yet, and I'm thinking about it (I can think of reasons for and against this option);


--
don


It's not, er, wasn't, an average. It was an intersection. The idea was, if burper and don started and completed a match "today", "tonight's" fibs.com/savedgames would list it. The only reason the match was "persisted", was to support the oldmoves command. If tomorrow nights' savedgames was intersected with it however, the result would not show it.

There are several complicating factors (see below) that might cause you to argue that performing this intersection starts you down the slippery slope, losing objectivity as you go, that I understand. Perhaps there is a way to address that by making this optional, or by providing both metrics, e.g.
mudPY says: [playBunny] Rating: 1796.30 Experience: 814 Saved: 13 (possibly completed today: 4)

Even simpler, why not resurrect the RepBot, with the complain and ask functions removed? It should be a trivial change.
No complaining means everyone gets a positive rep, and using friends rather than ask (may be better to route the ask command to the friends command) means there would be no motivation to create duplicate accounts to pump up your rep. This would be best if the existing RepBot database, with all complaints removed, could be used to seed things.

*Those complicating factors I mentioned above:

  • -if don and I played (to completion) 2 matches on consecutive days, the intersection would not remove the match from the savedgames list.
  • -"today", "tonight", etc... are all used very loosely. It all depends on what the first character of the filename is of your saved game. That is the lexicographically first (case sensitive, and including _) of the two names involved in the match, e.g. for don and burper, it would be "b". I don't have my notes in front of me at the moment, but you can tell when the match will be removed by watching the output of the 'stat' command.
  • -It also depends on when the savedgames web file is compiled, posted, and when you retrieve it. Judgin from some of the inconsistencies I've seen in the data, I believe Pattis' script compiles the page "live", rather than taking a locked snapshot. There may be no choice without interrupting fibs, and the result is "close enough", but there is the first slip down that slope mentioned above.

Perhaps Patti could confirm item 2 from the list above.

There are some other objective facts that could be derived from archiving the list of savegames over a period of time, such as a count (or rate) of saved games that were removed because they became too old (how many days is it?). If the match was there "yesterday", and its' not "today", and you know for sure at least one of the players were not logged in during that magic period of time, then bump the counter by 1. Its' an objective bit of data, leave the interpretation up to the user.

Even better, you should be able to count the number of times vegasvic and souptree play each other to completion (savedgames between them show up one day, gone the next, there again another day, gone the next, etc...). Leave the interpretation to the user, but if I didn't know souptree, but noted that many of the people I had marked as friends in my client had played multiple matches with him, I might feel more comfortable about accepting an invitation.

I'm glad you are attacking the issue don, there's hope for you yet!

don

First, RepBot is not what mudPY does, the name is taken, and I haven't duplicated RepBot's output so clients couldn't use it anyway.  (Also, IMO, RepBot with no complain/ask features is just a counter of saved games.  I've never used the friends function tho.)

Second, were I to use multi-day versions of the saved list, I would simply use the intersection (It's the easiest and most obvious and most useful IMO).  Hey, this is just a tool!

--
don
So many string dimensions, so little space time...

burper

Quote from: don on May 07, 2008, 12:35:40 AM
Also, IMO, RepBot with no complain/ask features is just a counter of saved games.

--
don

I think you missed my point. Note that the vouch command would not be removed.
Basically, it becomes a referral service.

I've heard people whine about the popularity contest too, but if the friends query gives everyone a personalized metric rather than one static one, that point is moot too.

The down-side of friends has always been the lack of information to work with, but with a way to "auto-vouch", by counting the rate at which A plays B, that problem is solved as well.

don

All very well and good for those who want a subjective reputation bot, which I don't.  I'm not interested in bothering to deal with the likes of  aristoF, CantBuyAThrill, nutcracker, or thefog.  (These are just a few of the nicks of a user who has much to say about what RepBot should be while demonstrating how to abuse such a bot.)

--
don
So many string dimensions, so little space time...

PersianLord

Quote from: don on May 07, 2008, 12:35:40 AM

Also, IMO, RepBot with no complain/ask features is just a counter of saved games.  I've never used the friends function tho.)


--
don

No, RepBot was more that that. The best feature of RepBot, IMO, was it's 'alarming' feature. If told RepBot 'alarm on', then it would alarm you when one of your saved matches opponents logs in. This way people could have finished their saved matches with ease. Now we should rely on 'waitfor' command, which is not as impressive and easy.

Thus, it might be good to see mudPY having this useful feature.

Regards
The leftist's feelings of inferiority run so deep that he cannot tolerate any classification of some things as successful or superior and other things as failed or inferior. This also underlies the rejection by many leftists of the concept of mental illness and of the utility of IQ tests.  - T.K

don

Quote from: PersianLord on May 09, 2008, 09:43:26 AM
.... The best feature of RepBot, IMO, was it's 'alarming' feature. If told RepBot 'alarm on', then it would alarm you when one of your saved matches opponents logs in. This way people could have finished their saved matches with ease. Now we should rely on 'waitfor' command, which is not as impressive and easy.
Although not as easy, the 'waitfor' command is more impressive.

First you do a show saved, getting a list of your saved matches which is, unlike information from the saved games list, completely accurate.  Then you just issue a:
     waitfor playerone playertwo ...
This isn't all that difficult.

The impressive part is that, on login of, say, playerone in your waitfor queue:

  • You get "** FINALLY!!! playerone logs in."
  • playerone gets "** YourName is waiting for you to log in."
So, unlike RepBot (unless both players have the alarm on), both players get notified.  Far superior IMO.

--
don
So many string dimensions, so little space time...

PersianLord

Quote from: don on May 10, 2008, 07:30:31 PM
Although not as easy, the 'waitfor' command is more impressive.

First you do a show saved, getting a list of your saved matches which is, unlike information from the saved games list, completely accurate.  Then you just issue a:
     waitfor playerone playertwo ...
This isn't all that difficult.

The impressive part is that, on login of, say, playerone in your waitfor queue:

  • You get "** FINALLY!!! playerone logs in."
  • playerone gets "** YourName is waiting for you to log in."
So, unlike RepBot (unless both players have the alarm on), both players get notified.  Far superior IMO.

--
don

IMO, RepBot's alarming was better, cuz with waitfor command, you've got to type it whenever you log in, but with RepBot you could do it once.

Regards
The leftist's feelings of inferiority run so deep that he cannot tolerate any classification of some things as successful or superior and other things as failed or inferior. This also underlies the rejection by many leftists of the concept of mental illness and of the utility of IQ tests.  - T.K

webrunner

Quote from: PersianLord on May 10, 2008, 09:25:20 PM
IMO, RepBot's alarming was better, cuz with waitfor command, you've got to type it whenever you log in, but with RepBot you could do it once.

Regards

Then it should be an option in a client ;)
"There is a difference between knowing the path and walking the path."
Bruce Lee
===================================
Orion Pax |

don

#20
I was curious how hard it might be to satisfy all of Patti's requirements for RepBot so I spent a couple of evenings modifying mudPY to become a true reputation bot, capable of accepting vouches and complaints.  Though still being tested, it seems to do a decent job.

*** Commands: 
                        'tell rePYbot ask <user>' ;
                        'tell rePYbot list <user>' ;
                        'tell rePYbot vouch <user>' ;
                        'tell rePYbot complain <user> ' ;
                        'tell rePYbot withdraw <user>' ;
                        'tell rePYbot repList <user>' ;
                        'tell rePYbot help' ;
                        'tell rePYbot about' ;
                        'tell rePYbot random' ***

They seem straightforward to me, though I'm thinking of adding a 'tell rePYbot grok'.

For general info:

  • A vouch or complaint carries the weight of the user making it of int(log(Experience)).  I never much cared for the hundreds of thousands of ratings points users could rack up, +/-, with RepBot;
  • You can use vouch and complain on a user you've played in the last 24 hours, or with whom you have a saved game, or who has vouched or complained about you;
  • Because my ISP nukes all background processes at 1 AM, it's not online 24/7;
  • I had problems with synchronicity and had to rewrite some code which waits for information from FIBS, but may be able to speed its response time a bit.

I hope people find it useful, for as long as it lasts.  And remember, rePYbot is my bot, and I am the person you should bug about it, not Patti!

--
don
So many string dimensions, so little space time...

adrian

 :cool:  :yes:

TY don ! Avi's silence regarding RepBot is deafening me. Why did he abandoned the "job" of hosting and  maintaining/upgrading/whatever/..  the software, or why didn't he passed it to someone willing to continue it ??  :(
Why doesn't he speak up here, as Patti does?
Helping people is tricky. Give help to anyone and he will remember it only when he is in need again.

mradica

Great work don! I already change programmable buttons in JavaFIBS and put rePYbot instead RepBot. Make all six functions. Start to vouch for people. Great. I think have to make some announcement.

playBunny

Ah, super job, don. Now if you can add one thing it'll be supurb. Comments!

I don't just want a score, I'd like to know why a complaint was made. Was it because a game was dropped, rudeness in shouts, a sad or angry loser, etc. It may even be that the complainee played so slowly that all desire to live drained out of the complainer. Even someone using the comment to be insulting would be useful - as a recommendation against the commenter!

Comments on positives would be good too. My comments for half of the players that I've vouched for would be "Know them and like them from DailyGammon". Incidentally a requirement to play someone before vouching could get in the way of that kind of vouch. I haven't played any of my friends from Dailygammon so far, lol, but I still value them. ;-) In other words, I reckon that a play-first requirement should be for complaints only.

teyakis

Quote from: mradica on May 23, 2008, 10:38:07 PM
Great work don! I already change programmable buttons in JavaFIBS and put rePYbot instead RepBot. Make all six functions. Start to vouch for people. Great. I think have to make some announcement.

I have done the same and I am finally a happy camper !!  B)

thx don  :cool:

webrunner

what are the hosting requiremewnts don, maybe i can  help :blush:
"There is a difference between knowing the path and walking the path."
Bruce Lee
===================================
Orion Pax |

don

Hey Webby.

When I get it running smoothly (right now I'm modifying the way it stores vouches and complaints), the hosting requirements would be having a copy of Python.  rePYbot (and mudPY) run on Python 1.5, a very old version, but it's the one my ISP has.  It runs just fine on 2.5 (the one I normally use).  Actually, modifying code for the old Python is the biggest hassle, but kinda interesting.  For example:
     for x in repDict:  ##  this doesn't work in 1.5 on a dictionary {}
     no True or False
          so I use (1==1) and (1==0) tho (1) and (0) would do..
     various string methods don't exist...
     x += 1  ## has to be x = x + 1

I keep discovering little things, and also have some major work to do.  Currently exploring how 1.5 differs in file bashing (that's the saved vouch/complaint issue mentioned above).  LOL, Python 1.5 is (c) 1991-1995.  Oh well.

And playBunny, how about 'help comments' which yields "go to www.fibsboard.com and comment yer little heart out!".  Seriously, such a function would be rife for abuse.

--
don
So many string dimensions, so little space time...

socksey

So happy to hear this, don!  I'm away now, but as soon as I'm back, I'll reprogram my JavaFibs buttons too!  ;)))

Hey, playBunny!  If you use JavaFibs, you can put anyone on your friends list, friend or foe, and color code them.  I use red for those I won't play again.  The comments feature would be best for sure! :)  I use another system for that.  I have a word pad that I keep comments about fibbers in.  I keep it filed in my Fibs file for making notes and for reference when I want it.   :happy:

socksey



"A government which robs Peter to pay Paul can always depend on the support of Paul. - George Bernard Shaw





playBunny

Hmmm, I'm a 3D-Fibs guy at the moment but in any case the thing about comments is not that I want to read mine but others'. Can I have a peep at your scrapbook, please socksey?! Actually i bet it's a damn good read! ;) 

Trawling through a fibsboard forum wouldn't be quite the thing either, there's a big difference between someone doing that and having a bot tell them. On the commenting side, people need to register here in order to posts and some, maybe many, will shy off at that hurdle. Others would be happy to give a comment to the bot but not post in a forum.

While I agree that it would be open to abuse, I think experimentation is the only way to know just how open it is and whether that negativity outweighs the usefulness. If so, the comments could be coded out and the code could be commented out.;)  But if it's tried in a year or three and found useful, there's no way to put in the comments that were missed.

don

Lemme get rePYbot functioning correctly, playBunny.  It turns out I need to insert a couple of timers.  When I do, I will certainly (probably  not) address your comment.  I'd need more convincing.

--
don
So many string dimensions, so little space time...

socksey

QuoteCan I have a peep at your scrapbook, please socksey?! Actually i bet it's a damn good read!

It's for my eyes only, bunny.  Sorry.   :dry:  Yes, it's interesting,sometimes hot,read!    


socksey





"A liberal is someone who feels a great debt to his fellow man, which debt he proposes to pay off with your money." - G. Gordon Liddy


don

I think I have the bugs ironed out of rePYbot now, and I apologize to those of you who used it before I clobbered the datafile (please try to reenter your vouches and complaints if clobbered), as well as those who received spam due to my misplacement of a list[index].  Since I know I'm capable of making just about any mistake possible, I encourage people to try rePYbot and send me bug reports (not Patti!).  Please leave Patti messages of what a wonderful bot rePYbot is!

I'm still looking for a host who has Python 1.5.2 or better, to make rePYbot 24/7, and will, in a couple of days, post the source code.  (I'd like to iron out the bugs I can first.)

--
don
So many string dimensions, so little space time...

playBunny

Quote from: socksey on May 25, 2008, 06:46:28 PM
It's for my eyes only, bunny.  Sorry.   :dry:  Yes, it's interesting,sometimes hot,read!    

Lol, How about I'll swap you some hot conversations from Across the board with playBunny. :laugh:

Luddite

Don -- I LIKE REPYBOT!!!   :thumbsup2: :thumbsup2:  Thank you so much for writing it! 

Is there any possibility that, after the bugs are ironed out, it can be renamed repbot, so the client software (I use 3dfibs) can continue on as if nothing happened?? 

Thanks again, 

Bones

don

Quote from: Luddite on May 27, 2008, 01:53:19 AM
Is there any possibility that, after the bugs are ironed out, it can be renamed repbot, so the client software (I use 3dfibs) can continue on as if nothing happened?? 
Hmmm... rePYbot is definitely not RepBot.  It has different functionality and differs in output.  Also, I don't own the name, RepBot.  I don't know 3dFIBS, but I wouldn't be surprised if you could find the name, "RepBot", in one of its files and change that to rePYbot.  There may be some pseudocode at the same spot, which can probably be figured out.  Get in contact with the 3dFIBS people (or post on the 3dFIBS forum here).

--
don
So many string dimensions, so little space time...

don

Although it's premature, to save some online hassles I'm posting the source for rePYbot here.  Be kind, people.  It's a work in progress written on a recent version of Python (2.5.2) and retrofitted to a 15 year old version because that's what's on my ISP.


enjoy!

--
don
So many string dimensions, so little space time...

PolyphonicBrie

Not had time to try it yet but from what I read here it sounds great.  Cheers Don!

Would anyone care to volunteer to embed this new bot into CocoaFIBS?  The developer seems to have abandoned it, but at least has published the code of SouceForge (or somewhere... I think).

I have checked the .app package, hoping to find perhaps a script or plist file with the RepBot commands in, but unfortunately the RepBot interaction seems to be embedded in the main binary.  I'm no programmer so that's beyond me I'm afraid.

(Actually what would be even better would be if the name of whatever "reputation bot" is flavour of the month could be specified from the application preferences).

Cheers
PB

PS: I know someone is bound to reply "just use JavaFIBS"... but I am rather partial to CocoaFIBS, as are plenty of others!

webrunner

Quote from: PolyphonicBrie on May 28, 2008, 09:11:07 PM
Not had time to try it yet but from what I read here it sounds great.  Cheers Don!

Would anyone care to volunteer to embed this new bot into CocoaFIBS?  The developer seems to have abandoned it, but at least has published the code of SouceForge (or somewhere... I think).

I have checked the .app package, hoping to find perhaps a script or plist file with the RepBot commands in, but unfortunately the RepBot interaction seems to be embedded in the main binary.  I'm no programmer so that's beyond me I'm afraid.

(Actually what would be even better would be if the name of whatever "reputation bot" is flavour of the month could be specified from the application preferences).

Cheers
PB

PS: I know someone is bound to reply "just use JavaFIBS"... but I am rather partial to CocoaFIBS, as are plenty of others!


If you are going to develop this, please read this!
"There is a difference between knowing the path and walking the path."
Bruce Lee
===================================
Orion Pax |

inim

Please note that I have taken over maintainance (inofficially, as long as avik is unresponsive) of the original RepBot code, see this thread /repbot/repbotng-t1964.0.html. This means it will be back 24/7 in week or two. It already is back for some hours per day as per now.
This space is available for rent by advertisers. Call 0900-INIMITE today, and see your sales skyrocketing in no time! New customers receive free Vl@9rĂ¥ and a penis enlargement set as a bonus! We support banners, flash banners, and scrollers. Discrete handling by our HQ on the Dutch Antilles.