figbert.com-website

[ACTIVE] the website and home of figbert on the clearnet
git clone git://git.figbert.com/figbert.com-website.git
Log | Files | Refs | README | LICENSE

index.md (6645B)


      1 +++
      2 title = "Roll Call"
      3 description = "An experiment in replacing the phone in your morning routine."
      4 date = 2024-12-17T14:52:00-08:00
      5 +++
      6 
      7 Roll Call is a jury-rigged receipt printer that sits on my desk and
      8 dictates my morning routine. Every morning, it prints out a briefing
      9 of all the critical information I need to catapult me into the day that
     10 awaits. Phones are great—but I don't like checking mine when I wake up.
     11 I want my brain fresh and undistracted.
     12 
     13 ![Sexy advertisement for Roll Call](poster.png)
     14 
     15 I first ideated what would become Roll Call on a post-it note on the
     16 wall of my dorm. When the final project of [DESIGN11] rolled around and
     17 they asked us to "fix a bug in our lives," I knew I had to take
     18 advantage of the opportunity.
     19 
     20 After a flurry of on-paper ideation, I began with the software. It's all
     21 open-source: the bulk is [a couple hundred lines] of bespoke Python,
     22 supported by an iMessage library [I customized] to allow me to determine
     23 if a message was unread. I call out to a few [startlingly] [good]
     24 libraries to fetch the data that will go on the receipt: the day of the
     25 week, the weather, my Oura Ring stats from the night before, unread
     26 iMessages, my todo list, and my calendar events for the day. When that
     27 was done, I called every single possible retailer in the Bay Area who
     28 might sell me a receipt printer—no dice. I even asked a couple
     29 restaurants that I was eating at if I could pawn theirs, which was
     30 similarly unsuccessful. So I ordered one on Amazon (guided in my
     31 purchase by [this blog post]), married it to my code, and have been
     32 using it every morning since.
     33 
     34 ![Early ideation of Roll Call in my notebook](notebook.png)
     35 
     36 Roll Call is one experiment in my long crusade to replace the phone. Our
     37 current era of mobile computing has brought benefits that are difficult
     38 to fully comprehend. But they have come along with deep ills. The
     39 combination of hardware and software in Roll Call has allowed me to
     40 entirely eliminate my phone from this component of my daily routine. In
     41 this slice of my life, I experience all the benefits of technology with
     42 none of its downsides. However, this only works because I can still rely
     43 on my phone during the rest of the day. I can replace my phone with a
     44 receipt in the morning and feel better because of it, but later in the
     45 day I still need to fall back to the harsh light of the screen to
     46 respond to message, mark todos as complete, and more.
     47 
     48 What the Roll Call experiment allows us to do is free our minds to
     49 imagine what removing the phone might look like from the rest of the
     50 day. This part? It's already taken care of. We've solved for this use
     51 case, one that is normally solved with our phones. How can we solve for
     52 the rest? We have an alternative way to read data, how can we rethink
     53 writing? How do we redesign the rest of our phone-based experiences to
     54 avoid falling into Instagram and a hundred other things that melt away
     55 all the presence and the possiblity of our beautiful lives? This part of
     56 the pressure is gone, now let's deal with the rest.
     57 
     58 <details>
     59   <summary>
     60     <i>A theoretical, optional pitch that loses people but I think is
     61     conceptually neat and cool</i>
     62   </summary>
     63     Roll Call is paper, with a digital brain. Every morning I look at a
     64     slip of paper—for all intents and purposes the same piece of
     65     paper—and instead of remaining static it autonomosly reflects the
     66     changing state of the world around me. The state of the world exists
     67     in a Platonic ideal somewhere in conceptspace. Nowadays we represent
     68     all that information about our lives, that typically is just held in
     69     our heads, in various databases. That information is displayed back
     70     to us in our calendar apps, and todo lists, and all the rest. Those
     71     apps transform the database's zeroes and ones, which are themselves
     72     representations of ideas, into a form that we view on our phones all
     73     the time. Roll Call's receipts are equally valid transformations of
     74     those zeroes and ones.
     75 </details>
     76 
     77 ![An example Roll Call receipt from December 17, 2024](receipt.jpg)
     78 
     79 The current implementation of Roll Call does have some gaps, which I
     80 would love to address in hypothetical future versions. The most
     81 prominent is its deep reliance on macOS: it reads iMessage's `chat.db`
     82 directly from disk and searches `Contacts.app` to associate phone
     83 numbers with names. Beyond that, Roll Call also doesn't trigger
     84 automatically. Instead, I manually run the script on my laptop, which is
     85 significantly less sexy. The device itself is pretty large and bulky,
     86 and relies on some gross cabling (USB A, B, *and* C). It doesn't print
     87 out my gym day. Some imagined diagnoses:
     88 
     89 1. A Matrix-iMessage bridge, a-la Beeper, would make developing for the
     90    messaging platform less hellish. I could also skip the middleman and
     91    set up a direct API call from a Raspberry Pi to a macOS host in the
     92    cloud.
     93 2. Developing a good CardDAV library in Python, which I shockingly
     94    couldn't find, seems like a simple replacement for the `Contacts.app`
     95    AppleScript-in-Python monstrosity I cooked up.
     96 3. Ideally, the script would run as soon as I wake up. I wear an Oura
     97    Ring every night; it would be super cool to connect the printer to a
     98    webhook that gets called when the ring detects that I'm awake. That
     99    endpoint doesn't exist at the moment, and probably would be very
    100    difficult to create given Oura's current periodic-sync-over-Bluetooth
    101    technology. I'll keep my eye out though!
    102 4. Barring the above, I would love to hook up the whole thing to a smart
    103    button (no screen!) that I can just smack and have the whole thing
    104    print.
    105 5. Making the code asynchronous where it makes sense. Initially, I had
    106    the script fetch the data and then print it all out really fast. Then
    107    I introduced some styling that I had to weave throughout and couldn't
    108    do before printing: I miss the smooth all-at-once feeling. I think
    109    some smart code jockey-ing could bring this back.
    110 6. Put the gym day in my calendar?
    111 
    112 As a last component of my time in DESIGN11, we made little
    113 advertisements. You can check out mine [here on YouTube]! Remind me
    114 never to film when I have a stuffy nose ever again.
    115 
    116 [DESIGN11]: https://explorecourses.stanford.edu/search?q=DESIGN11
    117 [a couple hundred lines]: https://git.sr.ht/~figbert/morning-receipt
    118 [I customized]: https://github.com/figbert/imessage_reader
    119 [startlingly]: https://github.com/hedgertronic/oura-ring
    120 [good]: https://github.com/thingsapi/things.py
    121 [this blog post]: https://aschmelyun.com/blog/i-built-a-receipt-printer-for-github-issues/
    122 [here on YouTube]: https://www.youtube.com/watch?v=rNGusG71qD8