Files
davideisinger.com/static/archive/jan-miksovsky-com-muc8ja.txt
David Eisinger 3a7ad746a5 Add links
2024-12-01 23:20:33 -05:00

242 lines
11 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[1]Jan Miksovskys Blog • [2]Archive • [3]2024 [4]About • [5]RSS • [6]JSON •
[7]Contact [8]
MomBoard: E-ink display for a parent with amnesia
November 12, 2024
E-ink display on a bathroom counter showing birthday messages
Today marks two years since I first set up an e-ink display in my moms
apartment to help her live on her own with amnesia. The display has worked
extremely well during those two years, so Im sharing the basic set-up in case
others find it useful for similar situations.
Note: unless you have specific experience caring for someone who has amnesia
but not dementia, please do not offer care suggestions.
The patient
In June 2022 the side-effects of a long surgery left my mom with permanent
anterograde amnesia: she can no longer form new long-term memories. Memory
isnt just one neurological system, so very occasionally she will be able to
remember certain types of things. But for the most part, if she hears or sees
something, a few minutes later she will no longer remember it.
To medical professionals her condition looks a lot like dementia — amnesia is a
common symptom of dementia — but she doesnt have dementia. One difference is
that (as I understand it) dementia is a progressive disease, while this amnesia
is stable. There is no cure.
Someday I might post about the experience about caring for her, but for now
Ill just say that this type of amnesia is not something one should wish on
ones worst enemies.
Needs
My mom still lives on her own in an apartment. Because she cannot remember
things, she goes through each day in a state of low-grade anxiety about where
her grown children are and whether they are all right. She feels she hasnt
heard from any of us in a long time. This anxiety manifests as extremely
frequent attempts to call or text us.
Paper notes and other forms of reminders didnt seem to help, and would become
out of date even if they werent misplaced. My siblings and I would call to let
her know we were okay, but five minutes later shed be back to being worried.
She wasnt in the habit of scrolling back through text messages, so once shed
read a message, it was immediately forgotten and effectively lost.
I thought some sort of unobtrusive, always-on device installed in her apartment
might be able to show her notes written by my siblings and me.
Design goals
My goal was to find a display that:
1. Could stay on for months on end
2. Would let my siblings and I easily post short messages to it that would
remain visible until replaced
3. Was large enough and easy enough to read without glasses
4. Required no interaction to wake or read and was relatively foolproof
(touching it wouldnt disrupt it)
5. Was resilient to network failures
6. Didnt glow at nighttime
7. Didnt require hardware hackery (Im a software person)
8. Would boot directly into displaying messages (no interaction needed to
start an app)
9. Was not enshittified with a subscription service or proprietary app store
10. Was reasonably affordable
11. Would not look out of place in a home
Device
Given the above design goals, I searched for a tablet-size electronic ink
display with Wi-Fi connectivity and a decent web browser.
One device that seemed to fit my parameters was the [9]BOOX Note Air2 Series.
At the time it cost US$500, which is expensive but is still far cheaper than
screens intended for use as commercial retail displays. Its marketed as a
note-taking device and ebook reader, but it also has a capable web browser.
Its big enough to read from a few feet away.
A critical question I couldnt answer online was whether Id be able to have
the device automatically start its web browser and have that browser display a
designated start page. Happily, when the device arrived I was able to confirm
it could do both of those things.
The physical case of the Note Air2 looks reasonably nice and not particularly
tech-y. The e-ink display is clear and legible; it refreshes quickly enough to
not be distracting. By default the devices backlight was turned on but I could
turn it off.
I found a small metal stand to serve an easel for the display so that it felt
more like a picture frame.
Web software
Since the physical device was satisfactory, the next step was writing a simple
website that could drive the display. The site would have two pages:
1. A Board page showing the messages. The e-ink device would boot into showing
this page. This is the only page my mom needed to see.
2. A Compose page my siblings and I write messages and save them to be
displayed.
The device needed to run for months, and needed to be resilient in the case of
network and service failures. At the same time, I also needed to be able to
remotely update not only the messages being displayed, but the software
displaying those messages.
With that in mind, I factored the Board page into an outer frame and an inner
page:
1. The top-level outer frame acts as a thin shell around the inner page. At
top of every hour, the outer frame reloads the inner page to pick up
potential software changes. If the network is down and the inner page
doesnt reload, the frame just tries again an hour later. To maximize
reliability, the outer frame has very little logic and no external
dependencies.
2. The inner page actually displays the messages. Every 5 minutes it queries a
simple web service for message data and displays the messages. The inner
page contains a small amount of logic, but as few dependencies as possible.
Since its essentially impossible to debug anything that happens on the device,
I made as much use of vanilla HTML and CSS as possible. I used a small amount
of JavaScript but no framework or other libraries.
Compose form for posting a message to the display
The Compose page presents a simple web form my siblings and I can use to
compose and save a message. I designed the form to work well on a phone screen
so that we can write messages when were out and about. A small web app
manifest lets us save the Compose page to a phones home screen as an icon for
quick access.
The whole site is tiny, entails no build process, and with the exception of the
service (below) is just static files.
Visual design
I was concerned about the possibility of e-ink burn-in, so the Board page
randomly changes which message appears where. Other visual elements like the
date and time alternate from side to side, with the intention that no single
pixel is always on.
To style the note text I chose the free [10]Architects Daughter font for a
handwritten feel. This font works well on the e-ink display. Labels are
displayed in [11]Open Sans.
One small challenge was maximizing the size of the message text. Sometimes a
message is just a word or two; other times it might be several sentences. A
single font size cant accommodate such a wide range of text content. I
couldnt find a pure CSS way to automatically maximize font size so that a text
element with word wrapping would display without clipping.
I ended up writing a small JavaScript function to maximize font size: it makes
the text invisible (via CSS visibility: hidden), tries displaying the text at a
very large size, and then tries successively smaller font sizes until it finds
a size that lets all the text fit. It then makes the text visible again.
Service
Just a tiny amount of text data is necessary to drive the display, so I was
happy to find the minimalist [12]JsonStorage service that was perfect for this
project. A single JSON object stores the text and metadata for the current set
of messages. The Compose page can save to the service with a POST request, and
the Board page can retrieve the data with a GET.
The service has a free tier that I started with, but I liked the service so
much that I eventually paid for a $1/month basic tier. (It appears that tier is
now $5/month.)
Trial and installation
I spent a couple of weeks working on the software and letting it run for long
periods of time. I was pleasantly surprised that the Boox display worked as
well as it did and seemed to stay up indefinitely.
I brought the display over to my moms apartment on November 12, 2022, turned
it on, joined it to her Wi-Fi, and rebooted it to confirm everything worked in
the new environment.
I thought the bathroom counter might be a good place for it, but my mom thought
shed rather have it in her bedroom, so we found a home for it on a windowsill.
My mom was happy with the display right away.
Retrospective
Despite her amnesia, my mom came to remember that this display exists and what
its for. She looks forward to seeing updates from her children on it.
If we tell her about something thats coming up, she often asks whether weve
already put that event on the MomBoard. On the flip side, we have to be careful
to keep it up to date; if we fail to take down a message that no longer
applies, it confuses her.
Looking back, the display is essentially the only intervention of any kind
weve tried thats actually been successful at improving her quality of life
(and ours). One reason its worked so well is that it didnt require her to
learn anything new. Without the ability to remember new things, its virtually
impossible for her to learn a new skill or to form new habits.
The devices reliability has surpassed my expectations. There was one period
where the device seemed to stop working, but I traced the problem to a faulty
Wi-Fi hub; after that was replaced, its worked flawlessly since. For my part,
keeping the software as simple as possible and sticking to vanilla web
technologies surely helped avoid bugs.
The display still looks great, and it still displays messages day in and day
out.
If you want to try to set up something similar to what I describe here, Im
happy to answer technical questions or share advice.
Update: Ive published the [13]MomBoard source code on GitHub.
[14]Jan Miksovskys Blog • [15]Archive • [16]2024 [17]About • [18]RSS • [19]
JSON • [20]Contact
References:
[1] https://jan.miksovsky.com/
[2] https://jan.miksovsky.com/posts/
[3] https://jan.miksovsky.com/posts/2024/
[4] https://jan.miksovsky.com/about
[5] https://jan.miksovsky.com/rss.xml
[6] https://jan.miksovsky.com/feed.json
[7] https://jan.miksovsky.com/contact
[8] https://jan.miksovsky.com/posts/2024/11-12-momboard
[9] https://shop.boox.com/products/noteair2
[10] https://fonts.google.com/specimen/Architects+Daughter
[11] https://fonts.google.com/specimen/Open+Sans
[12] https://www.jsonstorage.net/
[13] https://github.com/JanMiksovsky/momboard
[14] https://jan.miksovsky.com/
[15] https://jan.miksovsky.com/posts/
[16] https://jan.miksovsky.com/posts/2024/
[17] https://jan.miksovsky.com/about
[18] https://jan.miksovsky.com/rss.xml
[19] https://jan.miksovsky.com/feed.json
[20] https://jan.miksovsky.com/contact