ALEXA PAPER
       
       I've become obsessed with domestic life and its structures. For some
       time I have been in pursuit of perfect days. I hold a belief that
       happiness can be made as a by-product of order: an organized home, a
       robust routine, a fulfilment of basic physical needs. This belief has
       been shaped out of need: a need to cope with parts of my life that
       have me unhappy. My thinking is that I can repair what's broken from a
       stable base of predictability. If enough of the errata of my day is
       predetermined then I will be able to focus on fixing emotions,
       relationships, and self-worth that is in disrepair.
       
       Alexa Paper is an attempt to add a small morning informational ritual
       into each day. In essence, it is something between a daily newspaper,
       an itinerary, and an agenda. Or as my friend put it: "a roadmap to the
       day with entertainment along the way." It is made of sticky shipping
       labels printed out of a Zebra ZP 450 printer and a Python program that
       typesets each label's contents. Each label is intended to contain a
       structure of self-similar daily markers (think: date, weather,
       appointments), as well as a concoction of timely or random widgets
       (think: crossword, sudoku, trivia, news headlines). Everything gets
       assembled and typeset each morning just before the label prints.
       
 (IMG) Iterations of crossword design
       
       I currently have a working prototype of Alexa Paper. The software is a
       rather uniquely programmed Python script that contains functions for
       building the three currently supported components: a short-term
       weather forecast, a datestamp, and a crossword. I struggled with
       conceiving a smart way about the program's structure and design. I
       avoided the OOP paradigm out of stubborness, instead landing in a
       freakish functional paradigm that looks like it belongs to a LISP. To
       further complicate my life, I thoroughly abused Python's available
       functional features and data structures so I could avoid ever having
       to modify an existing variable. Why? Because I have a knack for making
       life complicated.
       
       ,----
       | def make_forecast_zpl(attrs: PrintAttrs, forecast: Forecast, dimensions: Dimensions, origin: Origin) -> str:
       |     period_origin = Origin(x=0,
       |                            y=0, units=Units.MM, reference=origin)
       |     temp_origin = Origin(x=0,
       |                          y=1 + font_peri.dimensions.y, units=font_peri.dimensions.units, reference=origin)
       |     abbrev_origin = Origin(x=0,
       |                          y=1 + temp_origin.y + font_temp.dimensions.y, units=temp_origin.units, reference=origin)
       |     return "%s\n%s\n%s" % (compositor.make_text_zpl(attrs,
       |                                                     font_peri, period_origin, forecast.period),
       |                            compositor.make_text_zpl(attrs,
       |                                                     font_temp, temp_origin, forecast.temperature),
       |                            compositor.zpl_wrap_origin(attrs,
       |                                                       compositor.zpl_wrap_font(attrs,
       |                                                                                font_peri, compositor.zpl_field_block(attrs,
       |                                                                                                                      dimensions, font_peri, forecast.abbreviated)),
       |                                                       abbrev_origin))
       `----
       
       The printer is attached to a Raspberry Pi 5. A cronjob prints a label
       every morning. After a week of running off my prototype paper, I
       discovered flaws in my project. Largely, these have to do with the
       prototype's informational components. For one, the weather forecast is
       useless. It is much easier to check the weather using a phone app. For
       two, the crossword is easy, way too easy. I usually finish the puzzle
       in less than a minute. I was hoping the challenge would endure through
       the day. Finally, the datestamp is nice but it's not really that
       helpful. My watch has a date feature I'm already in the habit of
       using.
       
       I had dreams of adding more, better information to the paper. And
       maybe more, better information would lead to it feeling more
       consequential in my life. But I have struggled to come up with
       components that interest me enough to implement. Like, I could add
       trivia, sure. But is that something I would enjoy for more than a few
       days or weeks? The success of this project is predicated on the value
       of the information in the little format of a four-by-six sticky
       label. That's not a lot of space! Whatever is on there could be just
       as well shown on a phone, and I'm inclined to prefer that kind of
       format anyway.
       
 (IMG) Zebra ZP 450 printer
       
       As of the time of writing, I have stopped working on Alexa Paper. I am
       glad I made the prototype, which allowed me to learn more about the ZP
       450 printer (something I'd wanted to do for some time). I still am
       enticed by the aim of building a "daily" that I can read once each
       day. But I'm looking to other types of screens like LCD and e-ink
       displays (imagine: a daily-made EPUB that gets automatically loaded
       onto my Libra e-reader). There may yet be a place for this thermal
       printer in my life. The ZPL language is quite powerful. Perhaps it is
       better suited for art and illustration. Or maybe something so crazy as
       publishing? Oh, the ideas are percolating :)