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 :)