Friday, February 11, 2022

The Valentine's Gift a Year In The Making

Last Valentine's Day I gave my wife what every young lady dreams of: an over-engineered Love Note Display and Archival System. For the past year I've been feeding it messages for her to see, as well archive for later use. With Valentine's Day around the corner, it was time to put the stored content to use.

One thoughtful gift, I imagined, was to take messages I'd sent and format them into a poster. While I have no problem writing code that let's me post love notes from an Android device to an iPad, the thought of designing a poster left me overwhelmed. In fact, I considered outsourcing the job to someone on etsy. Still, in the name of love, I figured I should at least make an attempt.

A Little Gimp

I decided to start simple. I launched Gimp and made a new 4000x5000 pixel image. I chose this image size because it seemed both large, and has the same aspect ratio of an 8x10 photo.

One tricky aspect of this project is that some of the love notes contain emojis. While they looked good when rendered on the iPad and even stored properly in the Google Sheet, I had my doubts that they would format properly in Gimp. I selected all the notes from a Google sheet, copied them to my clipboard, and pasted them into a large text area in Gimp.

To my amazement, Gimp seamlessly rendered the text and emojis.

While the notes were all there, I didn't have anything resembling a pleasing poster.

A Little Shell Scripting

My next move was to reformat the text so that it was no longer one message per line. I made one massive stream of text using this quick shell script. I'm separating each note with \u2764 which is the heart emoji.


## take in an input stream of love notes and output formatted love notes.

while read line ; do
  echo -n "I Love $line"
  echo -e -n " \u2764 "

The screenshots below show another discovery: Like Gimp, Windows Terminal running Ubuntu on WSL 2 seamlessly handles emojis. I'm so leveraging this in the future by having my shell scripts print out emojis status messages. While I was at it, I installed emojify, an emacs package that let's you seamlessly use emjojis. I can't wait to start including emoji's in my git commit messages.

I copied the massive line of love-note text into a Gimp text area and told Gimp to justify it. It looked better. We were definitely getting somewhere.

A Little More Gimp

To polish this up, I headed to Google photos and found a meaningful picture I could use as the poster's background. I downloaded it and positioned it at the bottom of my creation.

I then faded the top part of the background image using a layer mask. This allows the photo to seamlessly flow into the background of the poster.

I then dialed down the opacity of the background pic so it would be more reader-friendly and picked a color other than white to use for the poster's background.

And that was it, in relatively short order, I had my completed poster.


My final move was to send the image off to CVS to have it printed. $4.00 later, I had my Valentine's gift in hand. I have to say, I was pretty floored by how well the project turned out.

Mind you, the poster is far from perfect. At 8x10, the text is far too small to casually read, and the background I selected was probably too dark. Still, from an art perspective, it sort of works. You look at this 8x10 picture and see a mess of text. It's only upon closer inspection that you realize what you're truly looking at. So yeah, let's call this abstract art and leave it at that.

No comments:

Post a Comment