ROBOT9000 and #xkcd-signal: Attacking Noise in Chat

January 14th, 2008

Edit 2: Oh God Oh God 4chan has Robot9000. soup /r9k/. Have fun with the bot and do one last barrel roll for me.

Edit: As expected, with the huge flood of new traffic after this post went up, the channel is full of new folks coming in and playing with the bot. This is unavoidable and expected for these first few days, and ROBOT9000 is actually controlling the noise pretty well. Still, #xkcd-signal is a social channel — if you just want to play games with the moderator/concept, please use #moderator-sandbox. Thanks!

#xkcd has had about 250 chatters these days. Large communities suck. This problem is hard to solve, but we’ve come up with a fun attack on it — enforced originality (in a very narrow sense). My friend zigdon and I have put together an auto-moderation system in an experimental channel, #xkcd-signal, and it seems to work well, so we invite you all to take part.

When social communities grow past a certain point (Dunbar’s Number?), they start to suck. Be they sororities or IRC channels, there’s a point where they get big enough that nobody knows everybody anymore. The community becomes overwhelmed with noise from various small cliques and floods of obnoxious people and the signal-to-noise ratio eventually drops to near-zero — no signal, just noise. This has happened to every channel I’ve been on that started small and slowly got big.

There are a couple of standard ways to deal with this, and each one has problems. Here’s an outline of the major approaches (skip down if you just want to read about ROBOT9000):

  • Strict entry requirements: This is the secret club/sorority approach. You can vet every new person before they’re allowed to speak. This sucks. It reminds me of Feynman’s comment on resigning the National Academy of Sciences — he said that he saw no point in belonging to an organization that spent most of its time deciding who to let in. The problems are apparent during sorority rush week on college campuses. Not only is the question of who does the vetting (and how) difficult, but the drama reaches horrifying levels as bitter counter-cliques rise up and do battle.
  • Moderators: This is the approach IRC channels and forums usually take. You designate a few ‘good’ people who can deal with noise as it happens, by muting, kicking, banning, or editing content as need be. There are a couple problems here — the circle of moderators has to grow with the community. It eventually becomes fairly large, with complicated dynamics of its own, and the process of choosing moderators leads to sorority/NSF-esque drama and general obnoxiousness. I don’t like the elitism that inevitably develops, and prefer more egalitarian systems.
  • Running peer-moderation: When it’s possible, this is a good approach. It’s used to great effect on comment threads, with Slashdot pioneering the whole thing and sites like reddit stripping it down to an effective core. But it doesn’t work very well for live time-dependent things like IRC channels.
  • Splinter communities: This has happened on most IRC channels I’ve been on — small invite-only side channels sprout up with particular focuses. Often, the older core members of the community go off to create their own high-signal channel, which is generally kept quiet. But this is limited — it lacks the open mixing of the internet that often makes online communities work.

I was trying to decide what made a channel consistently enjoyable. A common factor in my favorite hangouts seemed to be a focus on original and unpredictable content on each line. It didn’t necessarily need to be useful, just interesting. I started trying to think of ways to encourage this.

And then I had an idea — what if you were only allowed to say sentences that had never been said before, ever? A bot with access to the full channel logs could kick you out when you repeated something that had already been said. There would be no “all your base are belong to us”, no “lol”, no “asl”, no “there are no girls on the internet”. No “I know rite”, no “hi everyone”, no “morning sucks.” Just thoughtful, full sentences.

There are a few obvious questions/objections, and I think each of them has been answered by experiment:

Q: Can’t you just tack a random set of letters on the end to ensure your line is unique (or misspell things, add in gibberish, etc)?

A: Of course. The moderator has plenty of holes if you’re acting in bad faith. But if you’re doing that, why are you in the channel at all? Folks who persist in doing this anyway earn (like any spammers) a prompt manual ban.

Q: Won’t it get harder and harder to chat as lines get “used up”?

A: You underestimate the number of possible sentences. We’ve been working off two years (2 million) lines of logs, and it’s not very hard at all — I expect the channel will be able to run for at least a decade before it becomes a problem, and probably long past that.

Q: What about common parts of conversation, like “yeah” and the like?

A: Surprisingly, it doesn’t seem to be a huge problem. In some cases, they can be done without entirely, and in others, you’re just forced to elaborate a little bit on what you’re agreeing with and why.

I talked it over with zigdon, a Perl guru, and he coded it up. We called the project ROBOT9000 (the most generic, unoriginal name for a bot that we could think of). Then we started a sister channel to #xkcd and put the bot in it. #xkcd-signal has been running for the last couple weeks (using the last two years of #xkcd logs) with about 60 reasonably active chatters, and it’s working beautifully — good, solid chat between relative strangers, with very little noise. (We’ll see how it handles the influx of people as we announce the experiment to the wider net.)

In zig’s implementation, the moderator bot mutes (-v) chatters for a period after every violation. The mute time starts at two seconds and quadruples with each subsequent violation, so you have five or six tries to get the hang of it. Your mute-time decays by half every six hours (we’re still tweaking the parameters). When looking for matches, the bot ignores punctuation, case, and nicks.

The big problem we ran into, actually, was meta-discussion overwhelming the channel. Every new person wanted to speculate about the rules and their effect, and every violation was followed by a long postmortem. At first, we had a scoreboard showing who was the best at talking without violation, but this quickly turned into a competition, destroying actual chat. When we took down the scoreboard and banished meta-discussion of the channel to #meta-discussion, everything worked out nicely. (And, of course, for discussion of the concept of #meta-discussion people had to go to #meta-meta-discussion, and for chat about how silly that whole idea was, we created #meta-meta-meta-discussion …)

You’re welcome to come hang out with us. The moderator bot is running in #xkcd-signal on Foonetic (irc.foonetic.net or irc.xkcd.com). But again, it’s a social channel; take discussion of the concept to #meta-discussion.

If you’d like to run this bot in your own channel, zig has published an initial version of the code here:

http://media.peeron.com/tmp/ROBOT9000.html (Perl bot, SQL skeleton)

Ghost

December 31st, 2007

Hello, all. The comic was posted a bit late last night. The comics are normally posted by the server automatically at midnight. However, I apparently typo’d when I last edited the queue, and I’m on vacation away from the net so davean had to fix it manually. My bad.

Moving on:

I’ve solved Ghost. I’m not the first person to do this, according to Wikipedia, but I think I’m the first to solve it on an airplane. The result: using the wordlist that ships with Ubuntu, it’s a win for the first player, but only if he plays H, J, M, or Z. The other letters are all wins for the second player (I hear if you use the Scrabble wordlist, it’s always a win for the second player).

Ghost is a word game that my brother and I learned as kids from the show Ghostwriter. It’s unusual in that it’s the only nontrivial, non-physical game I know how to play without any game pieces, paper, or anything else — all you need is communication (I never got the hang of blindfold chess — somehow the board always ends up with the wrong number of squares and I find mysef with three bishops). We’d play Ghost, whispering letters back and forth, when we had to sit quietly at formal events.

To play Ghost, you alternate saying letters. The first person to either (a) spell a word, or (b) create a string that cannot be the start of a word, loses. So you alternate building a word, and you have to always be working toward a word, but you can’t be the one to end it. Sample games, with players one and two alternating letters:

G-A-M-E — Player 1 loses by spelling “Game”

A-B-S-O-R-B — Player 2 loses by spelling “ABSORB”

B-Z-”Challenge” — Player 1, seeing “Z”, says “Challenge.” meaning “I think you’re not building toward a word. Name a word that starts with ‘BZ’ and prove you’re not just making stuff up.” Player 2 can’t, and loses. If he could, he’d win.

Note: We don’t count proper nouns or words under three letters.

I’ve often thought about how easy it would be to solve Ghost. We already knew a few simple winning plays — if the first player plays L, you can reply with another L, forcing them to spell “LLAMA”. On a plane trip with my family this week I decided to work out the full solution. I only had an hour or two of battery life left, and I’m still new to Python, so it was a race against the clock. It’s not too bad a problem in itself, but I wanted an optimal solution with only a few things to memorize, which meant pruning the tree carefully. My battery meter read “0% charge” as I scribbled the winning wordlist onto a sheet of paper.

Here are the words you can spell towards to force a win:

First player:

[hazard, haze, hazily, hazy, heterosexual, hiatus, hock, huckster, hybrid]
[jazz, jest, jilt, jowl, just]
[maverick, meow, mizzen, mnemonic, mozzarella, muzzle, muzzling, myth]
[zaniness, zany, zenith, zigzag, zombie, zucchini, zwieback, zygote]

Second player responses:

a :: [aorta]
b :: [black, blemish, blimp, bloat, blubber]
c :: [craft, crepe, crept, crick, crozier, crucial, cry]
d :: [dwarf, dwarves, dweeb, dwindle, dwindling]
e :: [ewe]
f :: [fjord]
g :: [ghastliness, ghastly, gherkin, ghost]
h :: There are no winning responses.
i :: [ilk, ill]
j :: There are no winning responses.
k :: [khaki]
l :: [llama]
m :: There are no winning responses.
n :: [nylon, nymph]
o :: [ozone]
p :: [pneumonia]
q :: [quaff, quest, quibble, quibbling, quondam]
r :: [rye]
s :: [squeamish, squeeze, squeezing, squelch]
t :: [twang, tweak, twice, two]
u :: [uvula]
v :: [vulva]
w :: [whack, where, whiff, who, why]
x :: [xylem]
y :: [yield, yip]
z :: There are no winning responses.

It’s satisfying to have the tree, but my brother is sad because I ruined our game. Wikipedia suggests a few variants on Ghost. Can anyone suggest any other replacement games playable by voice and memory only?

Growing Up

November 19th, 2007

I was thinking of getting a couch or something for my room, somewhere for guests to lounge around.

Fuck new couches. I now have a ball pit in my room.

I talked a little bit to Mike Machenry, who built a ball pit last year after reading my comic about it. The big problem with ball pits is that they’re expensive. Filling a room costs on the order of $4000, give or take. You can use this calculator (set up by relsqui of #xkcd) to find the cost for a given room. I’d use 64% for the packing efficiency — that’s about what I’ve found.

So given the expense, I didn’t fill my whole room — just an area the size of the bed, to a depth of a couple feet — and even that cost as much as a reasonable couch. The cost was as high as it was largely because Mike strongly recommended crush-proof balls, which allows for a lot more roughhousing but cost about twice as much as regular ones on eBay.

But it was totally worth it. After seeing how much fun it is to lounge around in it, we’ve decided to get together and build a larger one in the living room and throw parties there (though we want to solve the cleaning problem first in a scalable way). The day we put it up, we spent probably twelve hours, on and off, lounging around throwing plastic balls at each other. It’s totally worth it, and everyone’s excited about expanding it. It’s wonderful to be able to wake up and roll sideways, blanket and all, into a ball pit, and sink slowly down to the bottom. I’ve padded it with pillows and blankets to make it more fun to, uhh, wallow, or whatever the appropriate verb is for ball pits.

And before you jump to comment — over the last 24 hours we’ve completely exhausted all the balls-related innuendo, so you needn’t bother.

Here are some more pictures:

Abby, on the left, descends slowly into the balls. We never did find her again.

As Mike discovered, you can sort the balls pretty quickly by throwing only certain colors away from yourself.

Everyone I know seems to use Fujitsu Lifebooks. <3 ultraportables.

To the above situation, we can only say:

1337

November 19th, 2007

Last week’s story arc was a lot of fun for me. I hope you enjoyed it! A few notes for the more pedantic readers:

  • In Part 2, Elaine and Dr. Knuth are not competing to calculate the time-complexity of a known algorithm. They’re each trying to develop an algorithm to solve a particular problem. His “lower bound” comment is referring to his lower bound on how fast the problem can be solved (akin to saying “the lower bound on comparison sorts is n log n”), and she proves him wrong with her counterexample.
  • In the interest of time-continuity, panel #2 in the same strip is a montage showing the two children at different times. Bobby is quite a bit younger than Elaine (although he doesn’t strictly have to be — “drop table” has been in the SQL standard since at least the start of the 90’s).
  • Nick Oliver writes in to suggest that Elaine should have played in the band Perl Jam.
  • By 2002, Richard Stallman had grown frustrated with the direction of the blogosphere’s construction. He detached his airship and took it to parts unknown.
  • Upside-Down-Ternet is here. It seems to me that you could do an awful lot of pranks with it — turning everything upside down is just the beginning.

If you want to order a shirt for Christmas, you may want to do it soon. We can guarantee Christmas delivery to the US if you order by December 7th (and probably for the week after that) but we may go out of stock in some shirts/sizes before that.

WetRiffs.com

October 10th, 2007

WetRiffs.com now has pictures up. Thank you to everyone who submitted — it turned out great! See the page and gallery for my comments.

Embarassing Typo

October 8th, 2007

Confession: The mispelling (now fixed) in today’s comic got there acciddentaly; it wasn’t another little joke, just hubris striking. “Foreign” is one of those words I mispelled unknowingly for years. I’ve corrected it — on principal I usualy don’t edit comics after the first few minutes they’ve been up, but most of the time I’m around when they do. Due to my weird schedual I was out of touch for the last 14 hours, and came back to find I’d recieved something like 150 “I don’t know if you meant to do this, but …” emails. Oh, well. Its a lession in humillity.

Wikipedia: Blogs

October 6th, 2007

Wikipedia’s entry on blogs, with everything that is not the word ‘blog’ (or a derivative thereof) removed:

Blog Blog blog Blog Blog blog Blog blog blogs blog blogs blogs blogs photoblog sketchblog blog blog blogging blogging blogs blog blogs blogging Blogging blogging blogging blog blog blog blog blog blog blog blogging bloggers blog blogging bloggers blog blog weblog blog weblogs blogs blogging Blogs blog blog blog weblog blog weblog blog blog blog weblog weblog blogging Blog blog blog blog blog blog Blogging blog weblog bloggers blogs blogging blogs blogging blogging blogging blogging blogs blogs bloggers blogs Blogging blogs bloggers blogs blogs bloggers Blogging blogs blog blogs blog bloggers blog Blogs warblogs Blogging bloggers Bloggers blogging blogging blog liveblogging blogs blog blogging blogging blogs blogging blog blogging bloggers blogs blogs blog bloggers Blogs Bloggers bloggers blogs bloggers bloggers blog blogs blogs blogs weblog bloggers Blog moblog moblog blogs blog sketchblog photoblog Blogs blog blog Blogs blog moblog blogs blogs blogs blogs blogs blogs blogs blog blogging blog Blogs blogs Blog blog blog blog blog blog Blogging blogs bloggers bloggers Blog MyBlog blogs Blog blogs blog blogs blog blog blog blog blogs blog blog blogs blog Blogs blog blog blogging bloggers bloggers blog blog blogs bloggers blogging bloggers Bloggers blogs blog weblog Blogs blogs blogging bloggers blogs Blog blog blogs blog Blogging blogging bloggers blogging blogging bloggers bloggers weblog weblog weblog bloggers bloggers bloggers blog blog blog bloggers blogs blog blog blog blog blog blog blogging blog blog blog blog blog blog blog bloggers blogging blog bloggers blog Blogging weblogs blog blog blog blog blog blog weblog blogging blog blog blog blog blog blog Blog Blog Blogs blog blog blog blog Edublog blogging Blog blog blogging blogs blog blog Sideblog Blogs Blogs Blog Blog blogs blog blog Weblogs blog blogs photoblog Photoblogs Blogging weblog blog NewsBlog blog blogging blogs blogs bloggers bloggers Blog Blog Blog blogging Blog blog Blog Blog blog Blogs blog blog bloggers Blog Blog blog blogging blogs bloggers Blog Blog Blogs Blogging Blog Blog Blog Blog Photoblog Sketchblog blog blog blogging Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blogging Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog blog Blog Blog blog blog Warblog Blog blog Blog Blog Moblog Sketchblog Photoblog Blog Moblog Blog blog blog blog blog blog blog blog Blog Blog Blog MyBlog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog blogs Blog Blog Blog Blog blogs Blog Blog blogs Blog Blog Blog Blog Blog Blog Blog Blog Blogs blog blog blog Edublog blogging Blog blogging blog blog Sideblog Blog Blog Blog Blog blog Blog Blog Blog Blog Blog Blog weblog Blog blog Blog Blog Blog Blog photoblogs Photoblog Blog Blog Blog Blog Blog blogs Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog blogs Blog Blog Blog blog Blog Blog blog Blog blog Blog Blog Blog blog Blog Blog Blog Blog blog Blog Blog Blog Blog Blog Blog Blog Blog blog blog blogging bloggers imblogging Blog Blogs Blogging Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Blog Weblog Blog Blog Blog Blog Blog Blog Weblog Blog Weblog Blog Blog Blog Weblog Weblog Blog Blog Weblog Blog Blog Blog Blog Blog Blog Blog Moblog

Bunny, Showers

October 5th, 2007

Lem’s Bunny asks the natural follow-up question to today’s comic.

For those of you who have been waiting patiently: the submissions to WetRiffs.com will be going up soon — we’re just handling some final influxes of sexy. If any of you have any guitar-shower pictures you want to submit, now’s the time!

The Meetup

October 1st, 2007

xkcd readers successfully overran a park in Cambridge a week ago, and it’s taken me this long to fully recover. But boy, was it fun. Here’s a wrap-up:

Back in the spring, when I lived in Virginia, I drew this comic. The date was in the future, the coordinates were a park in Cambridge. When the date came last weekend, hundreds of people showed up.

How it went:

People were camped out there starting the night before. Without any obvious organization, they brought altered signs for the park, raptor costumes, signs, red spiders, and a tent full of xkcd-related memorabilia. They climbed the octahedral structure in the middle of the park and did their best to collapse it. Afterward, at the nearby Danahey Park, there was a trebouchet.

I had made a point of staying quiet about my plans for the coordinates. I just directed people back to the comic, which suggested that no one showed up. And, indeed, when I have dreams like that and go to the place or look for the person, there’s no one there. Dreams don’t work like that. So if they’re just your own desires whispering to you, of what use are they? As Haroun would ask, what’s the use of stories that aren’t even true? The answer was obvious. Dreams are where messages start, not where they arrive.

I realized roughly what would happen if I drew up the coordinates in a comic. And people came. It couldn’t happen exactly like it did in the comic, obviously, but it was a gathering of lovely people all brought together by their shared interest in adventure, puzzles, and people, and dreams. And it was a wonderful party.

I hung out nearby, with some friends and relatives, and put together my contribution to the gathering. Since the comic had created a counter to its own conclusion, clearly it needed to be corrected. I got 40 feet of whiteboard in 4×8 segments. I drew up the Dream Girl comic on the first one, but left out the concluding line. Instead, I left the next 35 feet for people to fill in what had happened.

I said a few words explaining this, passed out Sharpies, and then was swept to the center of a crowd of autograph-seekers. For a couple hours, I signed every blank surface anyone showed to me. This included playpen balls, shirts, breasts, a mattress, a picture of two monkeys having sex, and, at one point, the side of a Mobius strip. Afterward, we went to a trebouchet demonstration, had food, and (in a complicated string of events) reenacted the couch affair from Dirk Gently. After hanging out with some folks from Kansas and having a lovely hour-long conversation about the Animorphs, I fell asleep at 6:00 AM and slept for a full day — 25 hours — waking up briefly to eat.

Here’s an article in the Phoenix about the meetup.

Click here for a page with high-res images of all five whiteboards:

A few selections:

There were far too many pictures taken for me to wade through them all, but here are a few I pulled from the Flickr pool:

Goodness, there were a lot of people.

All the park signs were helpfully rewritten.

There were several gallant protesters insisting that all assertions be fully backed-up.

There are no words that can improve this picture.

I have not forgotten about the red spiders, by the way. The final two episodes will appear eventually.

There’s a giant structure in the middle of the park — an octahedron with a network of ropes inside. It was covered with people for the entire day, and — for no clear reason — they crowd-surfed a mattress to the top.

The structure, enveloped in people.

Isn’t CD Cambodia?

There was a mighty trebouchet.

Buckles were swashed.

Love was sought.

And thank you to all the people who picked up trash.

This was fun. Let’s do it again next year. Keep an eye out for coordinates.

Footomobiles

September 5th, 2007

I was recently reading through newspapers from around 1898 to 1901. In a collection of articles from midwestern papers predicting what life would be like in the year 2000, I found this cartoon:


(Brown County Democrat, December 28, 1900.)

The label on the device reads ‘footomobile’. Words fail me.

Now, I have ridden a Segway (or, as I guess I have to start saying, ‘Footomobile’), and it’s actually tremendously fun. But of course they’re too expensive to be practical. Instead, I’ve found an alternative: electric skateboards.

They’re like Segways, but without all that silly safety stuff. I bought two cheap ones off eBay for about $40 each and tried them out. They were fun and worked well for getting around campus, so when I moved to Boston and got rid of my car, I bought a nice one from Exkate for $330 — the Raptor 3.0 model (I swear I didn’t pick it because of the name. They’re just everywhere!). It has a 10-mile range, travels pretty fast (10-15 mph), and recharges quickly. There are other longboard models with longer ranges and top speeds of 20 mph. Zero to twenty in four seconds. Yes.

The boards are heavy — mine is 28 lbs, and it’s the lightest they have. They still use lead-acid batteries because they can’t find cheap-enough lithium-ion packs. If they could switch to lithium-ion batteries, they could cut the battery weight in half and up the range to 60 miles. Sixty miles. Man. (Side note: if anyone has lithium-ion packs sitting around and wants a cool project, if you document it well, Exkate might be willing to send you some boards at cost to play with.) Their website isn’t the best, but if you have any questions, give them a call. The guys there have been really helpful, and they’ll give you any additional specs you’re looking for. You can also visit their shop in southern Orange County.

Now, the bad stuff: my board has suffered from various mechanical failures, and eventually I had to send it in for repairs. They said it’d take 2-3 days and it’s ended up being a month. I’m still waiting, in fact, but I think it’s finally on the way. Also, I’m a little disappointed the boards don’t hover like the ones in Back to the Future. But I’ve looked at some other companies and Exkate seemed like the best.

So, electric skateboards are magical. They’re practical for getting around cities or campuses, and they’re just plain fun to swoop around on. There’s nothing like carving up a hill. I hear Ryan North of Dinosaur Comics rides longboards and might be interested in getting one like mine, so maybe we can start a webcomic-author electric skateboard club. Practically everyone I know has a crush on Ryan, so it’d be interesting to see which was a more effective accessory for picking up girls — the skateboard or Ryan North.