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 apt-get dist-upgrade
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
with 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 exec python3
simplechat/client.py to the end of her .bashrc, so
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
her about @-ing people first. I could also potentially
build support for other kids to join; perhaps her cousins when they're
literate?
She's pretty happy with it, though I am curious how much she ends up
using it.
Telegram was a much better choice for this purpose. Their APIs are completely open (supporting alternative third-party clients and bots has been one of their priorities since years ago), and there are fantastic wrapper libraries available. Their clients are also native, not the Electron crap. There was already (at least) one Telegram [TUI](https://github.com/zevlg/telega.el), too.
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
apt-get dist-upgradeon its own, but by putting first 8, then 9, then 10 in/etc/apt/sources.listI was able to get it up to date withapt-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
exec python3 simplechat/client.pyto the end of her.bashrc, so 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
#kidschannel, and any of us who join it can talk to Lily. I could potentially add external guests, but I'd want to teach her about@-ingpeople first. I could also potentially build support for other kids to join; perhaps her cousins when they're literate?She's pretty happy with it, though I am curious how much she ends up using it.
(The code is on github.)