XMPP for Children

When Jacob was just born, I wondered how I might introduce them to computing. I thought over various things, but that wasn’t really the most pressing thing right then.

I don’t suppose that I could have predicted installing an XMPP IM server (Prosody) for the boys. And I certainly couldn’t have predicted creating accounts named: jacob, oliver, butterfly, bear. Because, as Jacob pointed out to me, if (Jacob’s favorite toy) butterfly is typing with his wings, then he shouldn’t be logged in as Jacob. I admire my 5-year-old’s security consciousness…

Anyhow, as I mentioned yesterday, Jacob and Oliver enjoy “their” computer, which I recently put on the LAN. The firewall does not pass any of its traffic to the Internet, though, with very limited exceptions.

Jacob can read, and is starting to enjoy typing as well. So I thought he would enjoy sending IMs to me. As his computer has no GUI, I needed a text-mode client. Something with an IRC-like interface that could be scripted to open up a window with me directly sounded perfect. Initially I tried irssi’s XMPP plugin, but it proved to be too buggy (wanting to always latch on to a particular resource on the remote end, not having very predictable window behavior, etc.) So I switched to mcabber. With a couple of quick configuration bits to get him automatically logged in, remove superflous windows, and connect him directly to a chat with me, it was set. And well-loved. He sent me a mix of real words and random things he created by replacing letters in “Jacob” or by holding down keys.

In the mcabberrc, besides the obvious setting of username and password, there is:

set log_win_height = 1
set hook-post-connect = source ~/.mcabber/post-connect.rc

The hook is simply:

roster search Dad
roster hide

After awhile, Jacob wanted to switch computers. He wanted to use my laptop, and me use his computer. He refused to switch back. I asked him why. “Because on your computer, my name is red.” I should have known. I set it to bright white on his computer, but I think tomorrow we may need to upgrade him to the color monitor I’ve been saving for just such an occasion… It will be a whole new set of discoveries, I’m sure.

Update: I also tried out freetalk, which looked like it would meet my goals nicely. The problem was it didn’t have a dedicated “everything typed goes to this person” mode. It did have a mode where it put the person’s JID on the command line by default, but excessive use of backspace key by a 5-year-old could wipe that out and leave it in a state where he’d be confused.

9 thoughts on “XMPP for Children

  1. Anonymous says:

    Once he has a color monitor, you might seriously consider installing a GUI, for one simple reason: Pidgin or Empathy with voice/video chat. You already mentioned that he loves walkie-talkies.

    Cheese would also generate many hours of fun.

    Plus, you’d get to introduce him to some simple concepts like clicking on the “terminal” icon to get to a terminal. You might have the only preschooler who does what most hackers do in a GUI: get to a terminal as quickly as possible. :)

    1. John Goerzen says:

      Thanks for the tip on Cheese. I hadn’t known about that one.

      You are right about voice/video chat. Right now, I am holding off on that because he is having so much fun with his experimentation with reading and typing. He doesn’t really realize it, but it’s a good way for him to learn some reading and writing skills. As long as that’s fun and interesting to him, I’ll let it be.

      It should be fairly easy, though, to hack together some cli-based stuff to send sound across the network. Among other things, I already have an Asterisk installation in the house, and Asterisk can use soundcard audio. There are also packages like linphone-nox, etc. I haven’t tried them out but I may.

  2. Roland says:

    If you’re looking for an IRC-like interface for XMPP, why not simply use an IRC client, and use Bitlbee (or another IRC-to-XMPP gateway) as the server?

  3. Daniel says:

    Please continue with these posts. I am not near having children yet, but I find it a fascinating topic.

    I also came in to recommend BitlBee with irssi, but whatever works is of course sufficient.

    1. John Goerzen says:

      Thanks Daniel, I’m glad you’re finding it interesting.

      I did see BitlBee as an option, but thought I’d try the dedicated clients first, on the grounds that they would hopefully be simpler to set up and maintain.

  4. kevix says:

    I’m trying to understand what capabilities one needs to use this setup(What Jacob can do with his computer) and thus to recommend something.
    the OLPC project has some interesting tools.
    One is the XS (OLPC school server). It includes ejabberd and thus has an XMPP chat server. You can connect to this with XMPP clients like gajaim, pidgin and finch. I use finch as I like TUI/CLI mode. It might be like mcabber. You can setup ‘autoconnect’ chats. You can setup MUCs. But also, if your kids computer has the Sugar desktop (which is on a few distros), you can use the ‘Chat’ activity to talk to other users via the XS. (http://activities.sugarlabs.org/en-US/sugar/addon/4069) This activity is very easy to use. The Sugar desktop is also a child-focused desktop that is fun to explore. And it has 200+ activities.

  5. r0b0 says:

    Great blog! If you are looking for a one-to-one everything-typed-goes-to-other-one chat, try ytalk

  6. Trevor says:

    Great blog! I’m taking inspiration from your writing as I set up a computer for my 4-year-old.

    Not quite satisfied with mcabber, I adapted https://github.com/mattn/go-xmpp/blob/master/_example/example.go into a very simple IM program my daughter can use to chat with me: https://gist.github.com/trevordixon/79ad5a688c70551a8f2c134273a00f7f. Maybe future readers will find it useful.

    We use it like this:

    alias dad=”im -server=jabber.at -username=name@jabber.at -password=pw -recipient=me@jabber.at -recipient-name=Dad -notls”

    And a chat session ends up looking like this:

    $ dad
    Me: hi
    Dad: Hi!
    Me: luv
    Dad: Love!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.