Yesterday I wrote a program that lets me and Lily (7y) send messages back and forth:
The laptop is an eeepc 700. It was the first mass produced netbook and I liked it a lot. By 2010 I wasn't using it anymore, and it ended up in the basement. Recently I found it, I noticed that while it is still a ridiculously tiny computer, it is a good size for a child:
It still booted, and was apparently running Debian 7. I'm not
sure where that came from; I had thought it had been in a box since
before Debian 7 came out in 2013, but I guess not. I wasn't entirely
sure what I wanted to do with it, but started by upgrading it to
something recent. It was too old for
on its own, but by putting first 8, then 9, then 10 in
/etc/apt/sources.list I was able to get it up to date
apt-get update && apt-get upgrade.
Thinking more about what to do with it, I thought Lily would be excited to have something her size, which might get her more interested in typing and writing. After over a year of remote school (and a bit of parental lessons) she could use the practice!
I started by writing a simple
chat TUI in python with
curses. It has a section at the bottom for input, and the rest is
for the conversation so far. I added
simplechat/client.py to the end of her
it starts automatically when she logs in.
I initially wanted to make it send texts, but everything seems to cost at least $1/m for a phone number. Thinking over the chat apps already on my computer/phone, Slack would work well: they prioritize making it easy to integrate with.
Posting to Slack directly from the client was straightforward, but there wasn't a great way to receive messages. I decided to write an intermediate server to receive messages with Slack's Events API, and have the client poll it. I didn't use any of their libraries; it was simple enough to send and receive JSON.
Our house Slack now has a
#kids channel, and any of us who join it can talk to
Lily. I could potentially add external guests, but I'd want to teach
@-ing people first. I could also potentially
build support for other kids to join; perhaps her cousins when they're
She's pretty happy with it, though I am curious how much she ends up using it.
(The code is on github.)