Older blog entries for jrennie (starting at number 5)

codic

Hi codic. Hopefully you get a chance to read this. First I'll comment on the C/C++ thing :-) I'll be the first to admit that I know C better than I know C++, but I feel that I am a fairly competent C++ coder and am comfortable writing from a C++-mindset (as opposed to a C-mindset). Feel free to quiz me about C++. I'm actually in the middle of a C++ project (the xbattle stuff that I mention in my diary). I could send you code if you are interested...

Concerning the rating system, one of the points that I tried to get across in my diary entry is that I don't think that Advogato's rating system is set up to handle a negative rating. EBay can deal with a negative rating because of the way in which people are allowed to rate each other.

codic said:
I also feel that a rating system that allowed negative ratings would be most effective if everyone could rate users, but the weighting of a user's rating (I can't help but notice that that rhymes) should be proportional to their status (i.e., a rating coming from a Master should mean much more than a rating coming from an Outcast).

I would have to diagree. If I'm not mistaken, this was exactly the case when Advogato brought in the Dimwit rating. A Master could demote an Observer with one click, but a whole swarm of Observers couldn't touch a Master's rating.

By only allowing positive ratings, one encourages people to value their account---switching to a new account wouldn't do anything productive. If one wants to create a real "community," an important thing is to make people value their accounts. The "community" can become very artificial if people frequently change accounts to avoid negative ratings.

Does Observer status not allow one to reply to an article? I guess I have to relegate my comments to my diary...

So, I was just reading over the "Outcast" Certification patch: AIms and Assessement [sic] article. At first glance, the idea of having a negative rating to discourage spam might seem like a good one, but it is a flawed idea, particularly in the case of Advogato since 1) such negative ratings can be handed out freely and 2) it is trivial to sign up for an account without a negative rating associated with it. An "outcast" rating does nothing to restrict the efforts of a spammer. Advogato has implemented an effective way to reduce spam at the article level: only let people post who have the respect of some number of Advogato members. One way to reduce spam in the diary domain would be to set a minimum time window between advertising diary entries on the front page. One might have Master diary entries advertised up to once a day, Journey diary entries advertised up to once every two days, etc. As with the articles, members that have not achieved the respect of other members would not be allowed to advertise their views quite as frequently or as strongly.

There are systems that deal with negative ratings well. EBay is one of them. When you make a transaction with another person, you have the opportunity to rate him/her based on the interaction. Three ratings are offered: Positive, Neutral and Negative. People generally give Positive ratings unless they have something serious to complain about. The major advantage of this is that sellers are able to easily build a good reputation for themselves if they treat their buyers well. The system doesn't eliminate corruption; many sellers complain of bounced checks and often require a credit card or money order. It does, however, produce more reliable sellers. Those with a large number of sales seem to only rarely get a negative rating.

What can Advogato draw from EBay's rating system? One useful conclustion is that ratings work well when 1) ratings cannot be made on a whim and 2) ratings are based on equal-level, trust-based interactions. From the recent rash of namecalling that we saw on Advogato, one can infer that people are willing to give a negative rating based on a minimal amount of interaction; few are willing to give out a positive rating so quickly. Also, when a Master deems an Observer to be a Dimwit or an Outcast he/she has little worry of losing the Master rating as a result. The so-named Dimwit/Outcast doesn't have any flow to "fight" with. Since EBay allows everyone equal rating power, people are more careful about handing out negative ratings. I'm not suggesting that we switch to a rating system like EBay's---Advogato's system works well for restricting article posting. Rather, because Advogato does not have the qualities of EBay's system, Advogato's rating system cannot deal well with negative ratings.

Getting back to basics, there are certain Advogato "privileges" that one may want to restrict. As I see it, there are exactly two such privileges, posting diary entries and posting articles. I see no reason to restrict the posting of diary entries. One may want to restrict the way they are advertised on the front page: allow more advertisement for Master diaries, less for Observers. There is already asystem for restricting article posting. lkcl claims that we need a class that gives people no privileges. I don't see any reason for this. Everyone should be allowed some method of communication, however restricted it may be. lckl also wants many certification grades. Again, I don't see a point. Apprentice/Journeyer/Master divide up the spectrum pretty well. More classes will cause confusion without providing any benefit.

Anyway, that's all for now. If you write a reply in your diary and want me to hear about it, give me a rating (there's always Observer if you don't think me worth of Apprentice) and I'll take a look at your diary. It be nice if there were an easier way to reply...

What is the point of the dimwit rating? All it allows for is name-calling. Say I just got into programming and am really excited about the idea of OSS. I find advogato, sign up for an account and then begin posting diaries (and possibly stories) that others consider to be irrelevant. As a result, I get demoted to a dimwit. I either 1) feel hurt, leave advogato and never return, or 2) sign up for a different advogato account and again achieve the Observer level. Of course, these aren't the only possibilities, but the point is that the dimwit rating doesn't do any good. It can cause general bad feelings and it doesn't improve the community. Allowing only ratings that "improve" one's position in the Advogato community encourages judgements that are based on longer-term observations. Allowing a negative rating encourages snap judgements based on minimal information.

Looks like the dimwit rating has been done away with. Yeah! :-)

Advogato could use more navigational features.

  • Say I want to see who has given me ratings. AFAIK, I have to click the People link from the front page, wait for it to load and then find myself in the long list of people. So, I just realized that there is a link to my Advogato page from my "Account" page. One down, one to go :-)
  • I occasionally want to reply to someone's diary. I can write my own diary entry and hope they read it, or I can magically discover their e-mail address and send them e-mail. It would be nice to be able to reply directly (one could have replies show up as links rather than full text in the diary).

I didn't think much of it when I began writing my WordNet perl module last summer, but it looks like people are starting to recognize it as a useful thing.

I was given the task of doing some experimenting with query expansion using WordNet and hence needed code that would process WordNet queries quickly. I found the C code that comes with WordNet to be too slow for my purposes, so I wrote a perl module that loads the indexing tables into memory upon startup. Queries then consist of a few fseeks and small amounts of in-memory processing.

It makes me happy to see that it is being used to a real degree. Someone at UToronto recently sent me mail saying that he's using it for a 60-student class that he is teaching (!) :-)

Even though I should realize that "back then," K&R-style function declarations were the right way to go, nowadays, it pisses me off to not see nice, ANSI C-style declarations.

As you might guess, I've been hacking on some old C code; namely, the war game xbattle. Xbattle is a pretty fun game; you and your opponent begin with blobs of stuff (your troops) occupying various cells around the board. You move this stuff around the board intending to destroy any and all enemy blobs in sight. If you're lucky, you have the whole board covered with your blobs in a matter of 2-3 minutes. It's a fast-paced, real-time game that can be pretty exciting---it's multiplayer fun in the sense of Doom or Quake. The graphics don't quite compare, but it's still fun :-)

Anyway, I'm currently taking this "Embodied Intelligence" grad course where they expect us to complete a project by the course's end. Lucky for me, "evolving some sort of creature in some sort of world" is an acceptable project. Two of my friends and I jumped at the chance to "evolve" xbattle players.

Xbattle is a bit dated. If you visit the web page, you'll see written in large letters, "There has been no work done on xbattle since 9/1/96." A good chunk of the code is not ANSI C compliant, include files are somewhat numerous and run up to three levels deep and the make system is based on xmkmf. Ick, ick, and double ick.

Giving xbattle a decent make system was my first priority. I broke out the autoconf info pages and had a GNU-style make system up-and-running in a matter of an hour or two. Not long after that, I decided that it would be nice to bring in C++ classes in order to define a player module. Since I was going to change a good bit of the code anyway, I decided it was time to give in and bring xbattle's coding style up to speed. I ended up combining most of the .h files into one, xbattle.h, rewriting every function header in ANSI C style and compiling a list of function declarations in xbattle.h (declarating functions to avoid compiler warnings must have been an unpopular thing in the early 90s...).

So, now I can look at the code and not scream in horror. I still don't dare to try to fix all of the bits that g++ will complain about given the -Wall argument. It was painful enough to fix all of the function headers. What I find to be very cool about the code is that it is almost to the point that it could be released to allow others to write xbattle players. I'm thinking about running a small computer-player xbattle competition here at MIT. I also need to go talk to the original authors---see if they'd be interested in releasing ANSI C code rather than the K&R-style that they currently put out.

Even though I'm complaining about the xbattle code, I do have to say that I am greatly indebted to the authors. It's quite an impressive and versitile bit of code; things are well documented and it wasn't too hard to get in and add a wholly-autonomous computer player. Cheers go to Steve Lehar and Greg Lesher for writing the thing in the first place :-)

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!