Recent blog entries for sw

Thinking about that voting system for articles I proposed in my last post, it might be simpler if people could only transfer their vote to articles, not to other people; but they could do so based on the (public or not) advice of other people. This way there is much less of a privacy issue, and votes can be completely anonymous. No one but the owner of the vote will know which articles are supported by his or her vote. If a person wants to give his or her power of voting to another person, a group or a combination of others, they can use a system which automatically votes based on the published recommendations of these others.

I wonder if this will all sound like nonsense to me by the light of day? I wouldn't be surprised!

It does seem a bit troublesome that in order to assign a vote to a new article, one will have to subtract some vote from other articles. I guess this could be done automatically (and evenly) by default, that wouldn't be too bad.

In general it would probably not be a good idea to support too many different articles, perhaps 10 per person would be a sensible number at any one time.

Withdrawing support from an article need not necessarily mean that you don't think it's important; just that it's no longer a focal point of current importance. For example, once a decision has been made, the proposed options are no longer news.

The system could remember the time-profile of articles' rankings (at least approximately, perhaps every 30min or denser near the present), this could be historically interesting, and people could choose to read `older news', or look for the all-time peaks of importance, etc. People would not be forced to use the ranking system. Alternative ordering systems would be encouraged.

Even on matters of importance, I suggest that people should not be -required- to vote - but a one-time vote for a particular other person or party who publishes their voting recommendations would not be difficult for any person. I think ordinary people would likely be less disaffected and apathetic with a voting system where they could make more difference - and even submit articles themselves that other people could vote for.

ok, must get sleep!

Hey, long time no advogato!

I now have a livejournal diary too: http://livejournal.com/~samwatkins

It seems a bit silly having two diaries, kind of like having different bookmarks files (and formats) in two different browsers.

I'm going to work on http://cards.sf.net/ to make it really good, some time soon, incorporating some cool new stuff to encourage adoption of the `core' ideas there (that we should help eachother for free in real life, just like hackers do in the free software world).

I have at least one other developer interested in making this happen, and he's much more practical than me (wouldn't be hard), so maybe this might get off the ground.

We want to support images, e.g. portrait, and possibly sound-bites, for a more obvious personals functionality, cards for different classes of thing, not just people and groups of people, but any old piece of junk you might wanted to give away or want to obtain (or buy or sell I guess, although my hatred for money is going to be hard to swallow.)

The cards will be based on a nice clean data-structure syntax, quite like a combination of HMTL headers and DOM. The raw cards will be available for download, and there will be a raw interface to all functionality so that people won't have to screen scrape in order to write programs that use the site. (hopefully this won't cause problems - there could be issues with spam or abuse).

We want to take the best ideas from other sites such as orkut, advogato, livejournal, ... and implement them. Also, we want to implement a distributed backend.

One important thing: we want to implement effective discussion forums / media, where people can vote for a message, or pass their vote to another person or people who can then vote for messages on their behalf. Typically when people read the messages (globally, or in their particular domains of interested) the articles will be ordered according to how many voting points have been given them (and possibly, according to the user's choice, inversely according to the size of the article, or according to some other metric, for example articles written by friends might be favored).

Just say each person has 100 points to vote with. One person, Jane, decides to give 20 points to Geoff, a famous environmentalist she respects, 40 points to her brother Fred who she loves & trusts (he spends more time reading and ranking the news than she does), and she keeps 40 points herself to give to articles she likes.

Also, if Jane reads an article that she strongly disagrees with, she can uses some of her points -against- it, i.e. 20 of her points can count as -20 on that article.

If Jane sees an important article later, she can take back any of the points that are hers, including those she passed on the Fred and reassign them to the article. Or if Geoff does or says something Jane disapproves of, she can retract her support at any time (unlike in the present political systems!)

One major issue with the integrity of this system is that false identities might be created, it might be necessary to actually verify the identities of participants in some real-life way, perhaps by requiring a person to be `invited', and having a network of friends as orkut does - this is not foolproof, but seems quite strong. Or perhaps a powerful trust metric might be adopted.

So long as we don't have the `rank your friends' feature of orkut! Or at least, this should be an opt-in thing. (I say this because I don't like only being rated 5/10 in trustiness, 6/10 in coolness and 5/10 in sexiness or whatever the hearts stand for, I forget...! hey it might be true, but it's not nice to say so!!)

In the extreme, we could have legally binding certification of identities by other participants, with serious consequences (expulsion or perhaps more) in the case of fraud. This might sound scary, but it would be effective and not too difficult to implement or offputting for participants. We would also need a way to ensure uniqueness, otherwise different friends might be duped into certifying the same person under two identities. Perhaps we could use name, date-of-birth and place-of-birth for this (as in the original cards idea) or else something dependent on country, like social-security number or license number (but many people don't drive).

Another issue that might be a problem is the issue of anonymous voting. Do we want voting to be anonymous, as in the present political model, or not? To implement a secure anonymous voting system is apparently very difficult. We could implement a not-very-secure anonymous system, or forget about anonymity and assume that the age of employee- or peer-pressure to vote in a certain way is passing... doesn't sound very likely to me! unfortunately.

Another question - if voting is anonymous, can primary voters nevertheless see where secondary voters have put their vote? and which secondary voters have done so? I feel that a person should always be able to find out where his/her 100 points have gone.

A secondary voter should not know from whom the contributed points have come I'm sure this is doable if we don't worry too much about security from people who have access to the hardware.

I had an idea a while ago that redundant voting systems run by independent groups could be used to prevent cheating. Also, a friend suggested the technique of `two envelopes', based on real life voting practice - the outer envelope has the ID of the voter, so that they can be checked off the list; the inner envelope is unmarked, it is sent to the counting place, opened and the (anonymous) vote is counted. I'm pretty sure we can implement something like this with crypto quite simply. I don't understand the root of the perceived major problems with e-voting systems, I think it should be doable. Of course, we need not necessarily worry about this level of security for the first (prototype) system.

The technique of assigning voting points to articles can be used to make a decision in a public poll; anyone can contribute a proposed solution to the problem, and people can give points to the solutions they regard as best, or to other people they think are better able to make an informed decision on the issue.

Should each person have only 100 points overall, or should they have 100 points each day to use, or should they have 100 points in each different forum, or both?

I'm not sure, I'm inclined towards the 1st option because it seems the simplest, and simplest to implement. But it does seem a bit strange that someone has to take away their points from whatever articles / people they have been supporting if they want to be heard in a poll they think is important. Seems strange, but perhaps this is a good way; it means that people who don't really care don't have much power.

On the other hand, if the poll is limited in time, people can temporarily revoke their points and then put them back as soon as the poll is finished. Who then decides when a decision has been made?? Hopefully people can agree on somethings without infrastructure! I don't know, perhaps a stability metric might be applied.

Of course, the main point of this system would be to allow people to make decisions and communicate without resort to centralised or hierarchical systems of government, politics, media, etc. To implement `usemod', a moderated usenet, but not simply as a wiki!

There are other possibilites for ordering artciles, for example if people's opinions / votes were not anonymous, a person could conceivably order articles based on the opinions of his/her friends and other people, according to a (private) `respect for opinion' value associated with each friend. The importance of an article to a person would therefore be based on 1. his/her own opinion or 2. the weighted opinions of his/her nominated peers or 3. the weighted opinions of the peers' peers (who are not known to the 1st person) etc.

This I think is an interesting model, but very difficult and cpu-intensive to implement. In general, a calculation over the entire population of people would need to be made for each person X each new article, and revised each time anyone ranked that article! Too hard!

Perhaps we could compromise by having the global metric of voting with 100 points explained above, and also a person could value each article. This value could be used personally to change the order of reading, and possibly made available to friends if they would like to use it.

Making computed values (based on weighted values given by friends) available to other people causes another possible problem, it lets your friends know what you think of their opinion numerically. Some people might say it is good to be honest about these things, but I think it would only upset people whose opinion you don't value as highly as others'. Some things are best kept private!

Also, it would be good when computing such weighted sums to consider the subject or domain of the article, as ones opinions of ones friends' ability to judge the importance of an article might depend very much on the subject. For example, I would value an expert gardener's opinion highly within the domain of gardening but not the domain of computer science or art appreciation.

Anyway, we can make these two systems available, and other suggested systems, perhaps we could incorporate other dimensions of ranking, e.g. humour, not just simple importance or credit. (or perhaps articles could be linked into multiple domains, one serious, one humourous, and ranked separately in each domain.)

Another idea for posting articles is to include some sort of simple markup the indicates the appropriate audience or domain of different parts of the message, and also the importance of different parts (this could perhaps be indicated by indentation). This way one article which might have some generally interesting content, and some technical content within one or more domains might be automatically filtered depending on the preferences of the person reading it.

Also, we need a powerful system for linking articles together, and revising articles collaboratively (and storing the revisions efficiently). Branching and merging should definitely be supported, and grouping/clustering of revisions into groups.

If someone supports one particular revision of something, and then another revision is proposed, the latter revision will not be preferred until most people transfer their support to it. But everyone who views the old revision will be able to see that a newer revision has been proposed, and to examine the differences. This way, two or more conflicting alternatives may be proposed, and people can decide which if either is better than the original. Another person can create a merged combination of the two changes, and resolove any conflicts; people might then choose to support this.

When someone dies, their voting points vanish. Sorry! no inheritance.

People should have their voting points from birth. I don't see that adults are any better at making good decisions than children. Presumably a child won't be sufficiently expressive to be able to vote for a few years - Perhaps the parents should be allowed to use their points until the child is old enough to disagree!

I think these ideas could be implemented, and it's worthwhile to try to do so, because hopefully it might lead to an alternative to the current hierarchical political system of government which I think is responsible for a lot of trouble. It could also support other groups such as companies and open-source software groups, to work well without strict hierarchies.

The rest of the cards system is supposed to help us to live without using money, because using money is also, I think, responsible for a lot of trouble.

ok that's enough for one night!

Sitting in an internet cafe in Melbourne - no idea why as I have access at home! Perhaps I like the feel of other people around me while I am working. Well, not exactly working! I had a good look at the Chinese character etymology website 'zhongwen.com' today, started trying to read 'tao te ching'. I studied Chinese for four years at high school, but I don't remember very much of it - but that site has inspired me to pick it up again. Anyone who needs a convincing proof of the merits of hypertext should check it out - it's the most link-enabled site I've ever seen! I'll buy the book version, to ease my conscience, because I'm definitely going to try to obtain a personal mirror of this 'zhongwen' site.

I'm reading a book 'Practical Internet Groupware' from O'Reilly - it focuses on how the NNTP service can be used for collaboration. I've yet to really get into usenet, I need to find a 'visual programming research' newsgroup, as that's my main obsession for the last ten years or so.

I'm working on a system that applies a network model, i.e. interacting entities that 'select' on their 'sockets' from the application level right down to the low-level arithmetic / operator level. I want to integrate the logic/constraint programming paradigms with a visual representation (somewhat like petri-nets) and object- oriented ideas. It sounds like a buzz-word fest, but I'm starting to really get somewhere lately. Perl/Tk is helping, because I'm too lazy to prototype something as complex as this in C!

Anyone got any magic remedies for depression? It's a bit of a problem I have from time to time, I'd appreciate a non- pharmacological solution if you know of one. Internet as psychologist - I'd like to see that...

I skipped work today, and went to the botanical gardens in Melbourne instead, with my mother, who also skipped her work. (She does voluntary phone counselling for mental illness sufferers and carers.) It's a lovely place to go, if you're ever in Melbourne - and it's free to get in and out. We looked at all the statues of British monarchs (and I learned a little bit of history), and checked out the trees that they had planted, or patted in, on visits to the gardens. It's hard to imagine that the huge oak towering over us was a sapling in 1901, and that the Duke or Duchess of Somewhere was planting it with no idea how big it would be in 2000.

I love you guys, if you're crazy enough to read my diary...!

I'm working on an interesting library for Perl network programming. It's a high-level framework for writing multiplexed-connection state machines, such as chat servers, distributed filesystems, etc. It's part of a project for my work, Schoolsnet (Australia), but I think they'll let me open source it. A prototype is working, but I'm going to object-orientify it now so that there's some chance it will be maintainable.

This Advogato thing is great - I prob. would never bother to keep a diary otherwise, although I think it's very helpful even if personal, not private!

I'm looking for friends...! Mail me on 'sam@internal.schools.net.au' if you feel like it. No homepage yet - but I'm working on a good one...

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!