Wednesday, November 17, 2010

Controlling logging (and FAQs)

To enable commands such as /undo and the search-and-replace feature, Partychat keeps a small log of recent messages said in the room (up to 10 for each member). However, we realize that not everyone wants even this form of limited logging, so we've added a preference on the room's web page (accessible at<room name>) that lets you turn off logging:

Partychat settings

You can also enable and disable logging by using the /togglelogging command in the room itself.

We also added an FAQ about what gets logged (not just by Partychat, but by Gmail and your chat client). We didn't actually have an FAQ until now, so we took this opportunity to also write up some of Partychat's more esoteric features, like the PlusPlusBot. If there's anything else that you find confusing about Partychat, feel free to get in touch (how to do that is...wait for it...also in the FAQ).

Monday, November 08, 2010

Fun with aliases

We've recently loosened up restrictions for aliases, so now nearly any Unicode character can be used in them, even a snowman:.

What you type: /alias ☃
What the room sees: 'frosty' is now known as '☃'

Combined with existing support for Unicode support in messages, this can lead to silliness:

What you type: /me <3s ❄
What the room sees: s ❄

And if you ever wonder who's hiding behind an overly clever alias, you can use the /who command.

What you type: /who ☃
What you get back: ☃ ( (online)

P.S. More usefully, this means that non-Latin alphabet speakers can now use aliases with their preferred character set.

Wednesday, July 21, 2010

Partychat turns 5k!

Short version: Partychat hit 5,000 active users today! We're super excited - it's a special number for us (see below for why) and a big thanks goes out to Mihai & Neil for their work improving Partychat over the last year!

Long version: Back in April 2007, Mihai and Michael made a bet - the first to build a product, in their spare time, with 5,000 users won. At the time, Mihai was about to launch plusplusbot and Michael was working on something called "statusfest" (sorta like Google Buzz - it tracked your Google Talk status, had a "like" operator, and promoted popular statuses). In our words back then:
["mihai"] just to be clear, the site is still not ready for public consumption
["mihai"] so I haven't beaten yet
["ihavemisplacedmypants"] there's still a lot of time until tomorrow...
["mihai"] first one to be posted about on or bolin changeblog respectively wins
["mihai"] first one to not suck too
["ihavemisplacedmypants"] i think the second criterion is more important
["alkie"] first one to 1K users?
["ihavemisplacedmypants"] that seems like a more fair metric of not sucking
["mihai"] sure
["ihavemisplacedmypants"] though can we choose a number that's bigger than's readership
["dbentley"] Hahaha.
["ihavemisplacedmypants"] 5K?
["ak"] mihai++ for roping bolin into a contest to get statusfest done
woot! mihai->20 (for roping bolin into a contest to get statusfest done)
["ihavemisplacedmypants"] mihai-- for roping bolin into a contest to get statusfest done
ouch! mihai->19 (for roping bolin into a contest to get statusfest done)
["ak"] hey now
["ihavemisplacedmypants"] let's settle on a number of users, though, that defines the goal/winner
["dbentley"] Define user?
["mihai"] for, user that has done an increment/decrement
["mihai"] for, user that has his/her status monitored
["mihai"] fair?
["ihavemisplacedmypants"] fair
["ihavemisplacedmypants"] 5K?
["mihai"] sure
["ihavemisplacedmypants"] ok, it's on
["mihai"] what's the prize?
["ihavemisplacedmypants"] eternal glory?
["bitchlaplap"] can it involve cross-dressing
ak would try to join the contest, but is skeptical that partychat could ever get to 5k
plusplusbot eventually reached 1k users, but the 5k user goal was more elusive than we thought.

Over the last year, Mihai and Neil put a lot of work into improving Partychat, taking it from an XMPP bot running out of my apartment to a properly hosted, distributed system (thanks to Google App Engine) with many more features (and, subsequently, more users).

We started with a pretty loose definition of "user" - if we count every person to ever say something in Partychat, Partychat reached 5k users back in February 2008. "People who ever said something" is a pretty lame measurement though. A better metric of usage is 7-day active users - people who've said something in Partychat in the last week. Back in February 2008 we still had fewer than a thousand 7-day active users. Today we can proudly say that Partychat has 5k 7-day active users.

Below you can see how Partychat usage has grown spectacularly in 2010. If you squint, you can see that we've also hit 2.5k 1-day users, which, you know, is pretty awesome. Thanks to all you users for your continued bug reports, feature requests, and additions! We had a couple of beers last night to celebrate, we encourage you to do the same =). See you at 10k!

Tuesday, June 22, 2010

Fun with web hooks

As alluded to on Twitter by Kushal, Partychat-hooks is a nerdyfun companion to Partychat that lets you send and receive data from Partychat rooms via WebHooks.

To give a sample use case, here's how to add a "commitbot" that notifies a room whenever there's a commit made on a project (Jehiah provides samples for other project hosting sites).

  1. Add a hook bot to the room that you wish to send messages to. It'll get assigned a hook ID of the form
  2. If the room is invite-only, invite the hook bot to the room (by using /invite
  3. (Optional) give the hook bot a nicer alias by using the appropriate form on its edit page
  4. Create a new post hook
  5. Copy its HTTP endpoint URL (of the form into the WebHook field of the "Source" page of the "Administer" tab on your project
  6. Use this format to parse the commit data into a message that will be sent to the room (this page explains more about the JSON format):
    {% for r in json_decode(request.body).get("revisions") %}
      {{r.get('author')}} committed: {{r.get('message')}}{{
    {% end %}

Then, a few seconds after the commit, you'll get a notification:

commitbot in action

Wednesday, May 19, 2010

Friendlier web interface, /share is back, and more

Here's some recent changes that I've made to Partychat:

  • Make the homepage friendlier (and slightly prettier), especially the room creation form.
  • Improve web-based room management (building on what David started), so that you can join, leave, or request an invitation from the room's web page (here's a sample room for the current developers).
  • Prettify the plusplusbot display in the web UI.
  • Add a /share command that makes it easy to share URLs and give some context.
  • Clean up some data layer issues and fix some inconsistencies.
  • And of course, quite a few bug fixes (nothing like scanning the AppEngine logs looking for NPEs).

/share command

There's also been some recent production issues that have kept me busy. For example, yesterday a user invited room A as a member of room B, and vice-versa. As an unintentional side-effect of a change that I made to make the setup process more user-friendly, it became very easy to set off an infinite loop of messages. By the time I realized what was going on, we'd run out of App Engine bandwidth quota. Thankfully after some budget rejiggering and a some quick code change all was well. Similarly, a couple of weeks ago we had CPU usage issues (though optimizing that away was still fun).

It seems like chat is gaining in trendyness, with HipChat launching recently (presumably to challenge the incumbent Campfire) and Brizzly/Thing Labs's Picnics happening. Partychat will probably remain a hobby/fit-within-AppEngine-free-quota sort of project indefinitely, but it's been fun polishing it (and of coure, there's still quite a few things left to fix).

Semi-cross-posted from Mihai's blog.

Wednesday, February 24, 2010

Partychapp not responding to messages

Partychapp appears online, but is not responding to messages. We're not sure why, but we're assuming it's an issue with AppEngine. Will investigate

Update: Back to normal - issues were due to