davideisinger.com

My personal website
Log | Files | Refs | README

jan-miksovsky-com-muc8ja.txt (10983B)


      1 [1]Jan Miksovsky’s Blog • [2]Archive • [3]2024 [4]About • [5]RSS • [6]JSON • 
      2 [7]Contact [8]
      3 
      4 MomBoard: E-ink display for a parent with amnesia
      5 
      6 November 12, 2024
      7 
      8 E-ink display on a bathroom counter showing birthday messages
      9 
     10 Today marks two years since I first set up an e-ink display in my mom’s
     11 apartment to help her live on her own with amnesia. The display has worked
     12 extremely well during those two years, so I’m sharing the basic set-up in case
     13 others find it useful for similar situations.
     14 
     15 Note: unless you have specific experience caring for someone who has amnesia
     16 but not dementia, please do not offer care suggestions.
     17 
     18 The patient
     19 
     20 In June 2022 the side-effects of a long surgery left my mom with permanent
     21 anterograde amnesia: she can no longer form new long-term memories. Memory
     22 isn’t just one neurological system, so very occasionally she will be able to
     23 remember certain types of things. But for the most part, if she hears or sees
     24 something, a few minutes later she will no longer remember it.
     25 
     26 To medical professionals her condition looks a lot like dementia — amnesia is a
     27 common symptom of dementia — but she doesn’t have dementia. One difference is
     28 that (as I understand it) dementia is a progressive disease, while this amnesia
     29 is stable. There is no cure.
     30 
     31 Someday I might post about the experience about caring for her, but for now
     32 I’ll just say that this type of amnesia is not something one should wish on
     33 one’s worst enemies.
     34 
     35 Needs
     36 
     37 My mom still lives on her own in an apartment. Because she cannot remember
     38 things, she goes through each day in a state of low-grade anxiety about where
     39 her grown children are and whether they are all right. She feels she hasn’t
     40 heard from any of us in a long time. This anxiety manifests as extremely
     41 frequent attempts to call or text us.
     42 
     43 Paper notes and other forms of reminders didn’t seem to help, and would become
     44 out of date even if they weren’t misplaced. My siblings and I would call to let
     45 her know we were okay, but five minutes later she’d be back to being worried.
     46 She wasn’t in the habit of scrolling back through text messages, so once she’d
     47 read a message, it was immediately forgotten and effectively lost.
     48 
     49 I thought some sort of unobtrusive, always-on device installed in her apartment
     50 might be able to show her notes written by my siblings and me.
     51 
     52 Design goals
     53 
     54 My goal was to find a display that:
     55 
     56  1. Could stay on for months on end
     57  2. Would let my siblings and I easily post short messages to it that would
     58     remain visible until replaced
     59  3. Was large enough and easy enough to read without glasses
     60  4. Required no interaction to wake or read and was relatively foolproof
     61     (touching it wouldn’t disrupt it)
     62  5. Was resilient to network failures
     63  6. Didn’t glow at nighttime
     64  7. Didn’t require hardware hackery (I’m a software person)
     65  8. Would boot directly into displaying messages (no interaction needed to
     66     start an app)
     67  9. Was not enshittified with a subscription service or proprietary app store
     68 10. Was reasonably affordable
     69 11. Would not look out of place in a home
     70 
     71 Device
     72 
     73 Given the above design goals, I searched for a tablet-size electronic ink
     74 display with Wi-Fi connectivity and a decent web browser.
     75 
     76 One device that seemed to fit my parameters was the [9]BOOX Note Air2 Series.
     77 At the time it cost US$500, which is expensive but is still far cheaper than
     78 screens intended for use as commercial retail displays. It’s marketed as a
     79 note-taking device and ebook reader, but it also has a capable web browser.
     80 It’s big enough to read from a few feet away.
     81 
     82 A critical question I couldn’t answer online was whether I’d be able to have
     83 the device automatically start its web browser and have that browser display a
     84 designated start page. Happily, when the device arrived I was able to confirm
     85 it could do both of those things.
     86 
     87 The physical case of the Note Air2 looks reasonably nice and not particularly
     88 tech-y. The e-ink display is clear and legible; it refreshes quickly enough to
     89 not be distracting. By default the device’s backlight was turned on but I could
     90 turn it off.
     91 
     92 I found a small metal stand to serve an easel for the display so that it felt
     93 more like a picture frame.
     94 
     95 Web software
     96 
     97 Since the physical device was satisfactory, the next step was writing a simple
     98 website that could drive the display. The site would have two pages:
     99 
    100  1. A Board page showing the messages. The e-ink device would boot into showing
    101     this page. This is the only page my mom needed to see.
    102  2. A Compose page my siblings and I write messages and save them to be
    103     displayed.
    104 
    105 The device needed to run for months, and needed to be resilient in the case of
    106 network and service failures. At the same time, I also needed to be able to
    107 remotely update not only the messages being displayed, but the software
    108 displaying those messages.
    109 
    110 With that in mind, I factored the Board page into an outer frame and an inner
    111 page:
    112 
    113  1. The top-level outer frame acts as a thin shell around the inner page. At
    114     top of every hour, the outer frame reloads the inner page to pick up
    115     potential software changes. If the network is down and the inner page
    116     doesn’t reload, the frame just tries again an hour later. To maximize
    117     reliability, the outer frame has very little logic and no external
    118     dependencies.
    119  2. The inner page actually displays the messages. Every 5 minutes it queries a
    120     simple web service for message data and displays the messages. The inner
    121     page contains a small amount of logic, but as few dependencies as possible.
    122 
    123 Since it’s essentially impossible to debug anything that happens on the device,
    124 I made as much use of vanilla HTML and CSS as possible. I used a small amount
    125 of JavaScript but no framework or other libraries.
    126 
    127 Compose form for posting a message to the display
    128 
    129 The Compose page presents a simple web form my siblings and I can use to
    130 compose and save a message. I designed the form to work well on a phone screen
    131 so that we can write messages when we’re out and about. A small web app
    132 manifest lets us save the Compose page to a phone’s home screen as an icon for
    133 quick access.
    134 
    135 The whole site is tiny, entails no build process, and with the exception of the
    136 service (below) is just static files.
    137 
    138 Visual design
    139 
    140 I was concerned about the possibility of e-ink burn-in, so the Board page
    141 randomly changes which message appears where. Other visual elements like the
    142 date and time alternate from side to side, with the intention that no single
    143 pixel is always on.
    144 
    145 To style the note text I chose the free [10]Architect’s Daughter font for a
    146 handwritten feel. This font works well on the e-ink display. Labels are
    147 displayed in [11]Open Sans.
    148 
    149 One small challenge was maximizing the size of the message text. Sometimes a
    150 message is just a word or two; other times it might be several sentences. A
    151 single font size can’t accommodate such a wide range of text content. I
    152 couldn’t find a pure CSS way to automatically maximize font size so that a text
    153 element with word wrapping would display without clipping.
    154 
    155 I ended up writing a small JavaScript function to maximize font size: it makes
    156 the text invisible (via CSS visibility: hidden), tries displaying the text at a
    157 very large size, and then tries successively smaller font sizes until it finds
    158 a size that lets all the text fit. It then makes the text visible again.
    159 
    160 Service
    161 
    162 Just a tiny amount of text data is necessary to drive the display, so I was
    163 happy to find the minimalist [12]JsonStorage service that was perfect for this
    164 project. A single JSON object stores the text and metadata for the current set
    165 of messages. The Compose page can save to the service with a POST request, and
    166 the Board page can retrieve the data with a GET.
    167 
    168 The service has a free tier that I started with, but I liked the service so
    169 much that I eventually paid for a $1/month basic tier. (It appears that tier is
    170 now $5/month.)
    171 
    172 Trial and installation
    173 
    174 I spent a couple of weeks working on the software and letting it run for long
    175 periods of time. I was pleasantly surprised that the Boox display worked as
    176 well as it did and seemed to stay up indefinitely.
    177 
    178 I brought the display over to my mom’s apartment on November 12, 2022, turned
    179 it on, joined it to her Wi-Fi, and rebooted it to confirm everything worked in
    180 the new environment.
    181 
    182 I thought the bathroom counter might be a good place for it, but my mom thought
    183 she’d rather have it in her bedroom, so we found a home for it on a windowsill.
    184 
    185 My mom was happy with the display right away.
    186 
    187 Retrospective
    188 
    189 Despite her amnesia, my mom came to remember that this display exists and what
    190 it’s for. She looks forward to seeing updates from her children on it.
    191 
    192 If we tell her about something that’s coming up, she often asks whether we’ve
    193 already put that event on the MomBoard. On the flip side, we have to be careful
    194 to keep it up to date; if we fail to take down a message that no longer
    195 applies, it confuses her.
    196 
    197 Looking back, the display is essentially the only intervention of any kind
    198 we’ve tried that’s actually been successful at improving her quality of life
    199 (and ours). One reason it’s worked so well is that it didn’t require her to
    200 learn anything new. Without the ability to remember new things, it’s virtually
    201 impossible for her to learn a new skill or to form new habits.
    202 
    203 The device’s reliability has surpassed my expectations. There was one period
    204 where the device seemed to stop working, but I traced the problem to a faulty
    205 Wi-Fi hub; after that was replaced, it’s worked flawlessly since. For my part,
    206 keeping the software as simple as possible and sticking to vanilla web
    207 technologies surely helped avoid bugs.
    208 
    209 The display still looks great, and it still displays messages day in and day
    210 out.
    211 
    212 If you want to try to set up something similar to what I describe here, I’m
    213 happy to answer technical questions or share advice.
    214 
    215 Update: I’ve published the [13]MomBoard source code on GitHub.
    216 
    217 [14]Jan Miksovsky’s Blog • [15]Archive • [16]2024 [17]About • [18]RSS • [19]
    218 JSON • [20]Contact
    219 
    220 References:
    221 
    222 [1] https://jan.miksovsky.com/
    223 [2] https://jan.miksovsky.com/posts/
    224 [3] https://jan.miksovsky.com/posts/2024/
    225 [4] https://jan.miksovsky.com/about
    226 [5] https://jan.miksovsky.com/rss.xml
    227 [6] https://jan.miksovsky.com/feed.json
    228 [7] https://jan.miksovsky.com/contact
    229 [8] https://jan.miksovsky.com/posts/2024/11-12-momboard
    230 [9] https://shop.boox.com/products/noteair2
    231 [10] https://fonts.google.com/specimen/Architects+Daughter
    232 [11] https://fonts.google.com/specimen/Open+Sans
    233 [12] https://www.jsonstorage.net/
    234 [13] https://github.com/JanMiksovsky/momboard
    235 [14] https://jan.miksovsky.com/
    236 [15] https://jan.miksovsky.com/posts/
    237 [16] https://jan.miksovsky.com/posts/2024/
    238 [17] https://jan.miksovsky.com/about
    239 [18] https://jan.miksovsky.com/rss.xml
    240 [19] https://jan.miksovsky.com/feed.json
    241 [20] https://jan.miksovsky.com/contact