Dissecting the Hello, Flower Project

Hello, Flower: flower, code, SMS interaction

In mid-2015 I co-founded the SteelCode Collective with my friend, Bryan Robinson. We make creative projects that combine Bryan’s handmade physical objects with my code and writing.

SteelCode exists because Bryan approached me with a project idea; he had created a large steel flower based on a design by his daughter Gracie. He wanted to put the flowers in public spaces and have them deliver poetry or literature to people. He asked if I was interested in collaborating on it with him. Of course I was.

In a nutshell, we planned to put 2-3 steel flowers in public places. Each flower would be affixed with simple instructions to send a text message to the phone number on it. In return, the the flower would text back short messages and poems/stories.

With that goal in mind, Bryan started gathering steel and I started figuring out how to program the project. Within two weeks, Bryan had constructed three flowers, I had written version 1.0 of the code, and the project was named Hello, Flower.

The Hello, Flower project ran from August 1 – September 30, 2015, and featured one flower planted in four cities: Seattle, WA; Spokane, WA; Pocatello, ID; and Van Buren, MI.

The Flowers

Three large, steel flowers lying parallel on concrete.Bryan made all four of the flowers. The petals and leaves were made from scrap steel he cut and shaped. The stems were made of three pieces of rebar that he braided. He welded the flower and petals to the rebar stem.

A steel plate was welded to the stem of each flower, on which we placed a waterproof vinyl sticker with the phone number and instructions. On the back of the steel plate welded to the stem, Bryan wrote Mind Your Karma as a subtle deterrent to anyone who might have contemplated stealing the flowers.

The stickers were designed to be clear and simple, with large lettering to help it be more noticeable. I purposefully chose not to add the URL of my site where I was hosting Hello, Flower. Instead, we chose to add a line that read: A project by the SteelCode Collective. We wanted to be cryptic, but not so much that people wouldn’t Google us or the name of the project.

How Hello, Flower Worked

We wanted Hello, Flower to be semi-interactive, but we wanted it to be as simple as possible. The text message interaction went through several iterations, with the final version below.


Visitor:
Hello, Flower

Flower:
Hello! Thanks for visiting me! I'm not sure where I've been planted. What city are we in? (Not the state, just the city.)

Visitor:
Seattle

Flower:
Hi, my name is Steve! I have poems and stories to share with you. Would you like to read one? (Text: Yes or No)

Visitor:
Yes

Flower:
My poem
by leslie stewart

Roses are red, violets are blue.
I'm not a poet, so this ends awkwardly...

Website: aacfilms.com
Twitter: @imediaseattle
----------
Want to read more? Text: Yes

If the visitor texted Yes, they received another poem/story from the database. If they texted No, they received a text that read: Next time, perhaps. Come visit me again if you’d like to read some poems and stories!

All responses from the flowers were programmed, meaning people were interacting with a bot. This restricted the level of interaction the flowers could engage in. The flowers could only understand and respond to the following set of texts:

  • Hello, Flower (multiple variations on this phrase were programmed)
  • Seattle, Spokane, Pocatello, or Van Buren (multiple variations of each)
  • Yes (2 variations)
  • No (2 variations)

If someone sent a text to the flowers that deviated from the four responses, the flower sent the following response: I understand poetry and stories, but not much else. Please text: Hello, Flower to begin.

The variations noted above included allowing for both capitalization and lowercase letters. For example, the project had to work whether people typed Hello, Flower, Hello, flower, or hello flower. The variations even allowed for a real, but inconsistent issue that occurred when someone sent a text that included a single space after their message. This issue didn’t seem to be specific to any type of phone or person. Sometimes it happened, sometimes it didn’t, but I solved the problem programmatically to ensure visitors could play along without getting the error message.

For a variety of reasons, the code changed several times throughout the project. I did play testing prior to launch to help refine the interaction. Having someone who knows nothing about the project interact with the flowers unassisted, provided valuable feedback about what types of interactions were natural or not. I made changes to the code and language used in the interactions based on play testing feedback.

Technical Overview

Hello, Flower used the following:

  • Twilio toll-free phone number for SMS services
  • MySQL database to store the poems and stories
  • PHP to connect Twilio XML to MySQL database

The base code I used was taken from Twilio’s Quickstart tutorials. I modified their code to suit our needs, which included randomly pulling a poem/story from the database to send to visitors interacting with the flowers. Unlike Twilio’s tutorial example, we did not store visitor’s phone numbers in our database.

To be clear, Twilio logged all incoming and outgoing SMS messages, along with the associated phone numbers. Those logs were stored on Twilio’s servers, but were not stored on my server or in the database I used for the project. I could see the SMS logs in my Twilio account, but the only information I was interested in is the following:

  • Errors that may have occurred with receiving or delivering messages
  • The total number of times all the flowers were interacted with
  • The total number of times each specific city flower was interacted with
  • How many times each poem/story was delivered

We had no need for, nor interest in the phone numbers themselves. Had we chosen to make Hello, Flower a more interactive project, we would have had to store phone number in the database, and we didn’t want to do that.

Pushing the Boundaries

The first hurdle in making Hello, Flower work was Twilio. Twilio provides phone numbers that allow both calling and SMS, however SMS was not intended to deliver long messages. We send really long messages all the time, but SMS stands for short message service, which was meant for 160 characters or fewer.

Twilio is capable of sending more than 160 character messages but has a hard limit of 1600 characters. If a single message exceeds 160 characters, Twilio breaks it into several smaller messages, then combines them into one larger message that gets sent, just like phone carriers do. However, the higher the character count, the more potential trouble Twilio and different phone carriers have with correctly reassembling the multiple messages into one longer message.

I initially set a 1400 character limit for submissions which allowed me space to add URLs, social media handles, and a short prompt for visitors to receive additional poems/stories. I had problems with a submission that was just under the 1400 character limit. The story was being delivered in multiple messages that were in the wrong order. After a week of troubleshooting with Twilio (who provided excellent customer support), and being able to reproduce the problem on three different carriers and phones in three different cities, the problem was determined to be the length of the story being delivered. Before Hello, Flower launched, I lowered the submission limit twice: from 1400 characters, to 1200, to the final limit of 1000 characters. I removed a couple of the longest submissions from the project because of delivery issues, but the bulk of submissions were under 1000 characters, and delivered correctly.

Hello, Flower wasn’t the first project to use SMS messaging in an unintended way, and won’t be the last, but we still pushed the boundaries of what SMS was intended to do. We paid for it in some ways, but we think it was fun.

Open Source Code?

During the production of the project, a friend suggested I release the code I was using under a GPL license to make it open source. Doing so would allow anyone to replicate and build on my code.

Nothing I wrote in the code is proprietary. As noted above, the base code was taken directly from Twilio’s tutorial pages. I added a database to store the poems/stories, but that’s all. I’m certain a more skilled programmer could do a much better and more efficient job.

This is a stripped down version of the code I wrote. I removed specific database table and row names, and removed the variations I mention above. I don’t own this code, so feel free to take it and do whatever you want with it. It has always been open source, even if I don’t post it on GitHub or the like.


<?php

require('path_to_db_connection_script.php');

$dbc = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);

$query = "SELECT * FROM table_name ORDER BY rand() limit 0,1";

$result = mysqli_query($dbc,$query);

while($row = mysqli_fetch_array($result)) {

$poems = $row['poem_row_name'];

}

$message = array(

"Hello, Flower"=>"Hello! Thanks for visiting me!\n\nI'm not sure where I've been planted. What city are we in?",
"Spokane"=>"Hi, my name is Edith! I have poems and stories to share with you.\n\nWould you like to read one? (Text: Yes or No)",
"Yes"=>$poems,
"No"=>"Next time, perhaps. Come visit me again if you'd like to read some poems and stories!",

);

if(!$reply = $message[$_REQUEST['Body']]) {
$reply = "I understand poetry and stories, but not much else. Please text: Hello, Flower to begin.";
}

header("content-type: text/xml");

echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";

?>

<Response>
<Message><?php echo $reply; ?></Message>
</Response>

Keeping the Stupid Out of Submissions

While I was hammering out the code for the project, I populated the database with short poems by Pablo Neruda, Maya Angelou, ee cummings, Oscar Wilde, and more, but I wanted submissions from non-famous writers.

Our submission process was simple, and I posted clear guidelines on a submission form page. I wasn’t interested in playing the role of editor, so no submissions were altered unless I happened to find a typo while adding them to the database.

Those who submitted to the project found out about it in a variety of ways, mostly via Bryan or myself. I specifically asked one person for permission to include two of their poems in the project. I asked singer/rapper/writer, Dessa for permission to include two of her poems, Dear Sir or Madam, and The Bullet Rosette in Hello, Flower. Both poems can be found in her chapbook A Pound of Steam.

Besides the character limit, we didn’t have any restrictions on the type or subject(s) of work submitted. When you have that type of open submission process, there’s a potential for stupid to slip in. To preempt the stupid, I posted that no racist, sexist, homophobic, or transphobic submissions would be accepted. No one violated those guidelines, but one submission read as potentially homophobic. I had someone else read it and they got the same vibe from it that I did. As a result, I chose not to include it.

Making a Playful Project

Each of the flowers had a name, so I wrote the interactions to give the flowers a little personality. I should have guessed that those two things would make people want to interact with them more deeply than they were able to. I regret that I didn’t.

The flowers were named Edith (Spokane), Steve (Seattle), Carlos (Pocatello), and Sadie (Van Buren). With the exception of Edith, who was named after Bryan’s late grandmother, all of the other flower names were randomly chosen.

In addition to giving the flowers a bit of personality, the names served a larger purpose in that they allowed me to see which flowers were active. Initially, all of the flowers were going to serve the same poems and stories, but I decided to divide the submissions among the flowers, allowing each city to serve a different set of poems/stories. The plan was to rotate the content through the four cities during the project run, but in the end, I decided against it and returned to the original plan of serving all of the submissions to each city.

The Human Factor: The Positive Edition

I coded Hello, Flower to be as simple as possible, but we humans either aren’t used to interacting with inanimate objects, or we’re used to interacting with AI like Siri or Cortana, that understand far more than four commands. Hello, Flower was never intended to have more than a basic level of interaction; it was meant to be a playful way to deliver short poems.

After analyzing the logs from the project, two things are clear to me:

  • Most people who came across the flower weren’t curious enough to interact with it more than once, if at all
  • Of the people who did interact with the flowers, about 10% attempted to have a conversation with them

Why people who encountered the flowers didn’t interact with them, isn’t a question I can answer. It’s likely most people didn’t notice them. When planted, the flowers were between 15″-2′ tall, so depending on their location, they might not have been obvious. In the case of the Van Buren, MI flower, she was a little too obvious. More information on that follows.

To the people who tried to have a conversation with the flowers, thank you! I really wish it had been possible for you to tell the flowers more than your city name and ‘yes’, but trying to anticipate what possible interactions visitors might have wanted to have would have been very complicated, taken a lot more time, and made Hello, Flower much more complex for both SteelCode, and visitors.

I really like that people tried to interact with the flowers. Perhaps a future SteelCode project can explore more in-depth interaction with objects.

The Human Factor: The Negative Edition

Only two of the flowers remained in public spaces until the September 30 project end: Spokane, WA and Pocatello, ID. The Van Buren, MI flower was planted in a public park, but the Van Buren Parks Service removed her about 5 days after she’d been planted. They felt her location was a potential safety hazard, and removed her. They were kind enough to reach out to Bryan via the project’s Facebook page to let him know. For a brief period of time there was a bit of hope that the Van Buren Parks Service would plant the flower in a different location because they didn’t like being, in their words “a flower downer,” but that never happened. We think they discarded her.

The Seattle flower had a much more frustrating journey. I planted him in a public space in a sodded area on the sidewalk between Tap Root Theatre and Stage Door Cafe. I had the permission of Tap Root Theatre, who were excited to have the flower there. Within 48 hours of being planted, someone decided he needed to be planted somewhere else, and stole him.

The words Mind Your Karma written in white ink on a rectangular piece of steel.About two weeks after the Seattle flower went missing, someone found him and contacted Bryan via the project’s Facebook page to tell him about the flower’s new location. For reasons known only to the person who did it, the flower was moved five blocks north of where I originally planted him. The flower went from a prominent location on a main street with lots of foot traffic, to a completely residential area, that had little foot traffic and low visibility.

The following day, Bryan’s mother went to visit and interact with the flower, but he was gone. We suspected that whoever originally stole the flower moved it around to different locations. Why? Only that person knows. Curiously, in the two weeks between the flower’s initial disappearance and discovery, no one interacted with him, not even the person who stole him.

After the flower disappeared from the new location, I changed the responses in the Seattle code in case anyone found the flower and tried to interact with him. The outgoing message informed people that the flower had been stolen from its original location and included a request to contact me with his location. To make that easy, a direct link to the contact form on the aac projects site was included in the text message.

Two more weeks passed before someone found the flower again and tried to interact with him. That person contacted me as the outgoing message requested, telling me the flower was back in the area he had been after his first disappearance. The following morning, I went to the location and retrieved the flower before he could be moved again. We only had 10 days left in the project run, so I chose not to replant him.

By the Numbers

I could tally the number of visitors the Hello, Flower project had in all four cities and post them here, but frankly the numbers are fairly low, and not very interesting, especially given the project launched with four flowers, but was reduced to two within 5 days. I’ve provided the top three most sent poems/stories:

  1. Spring (poem) by Gracie
  2. Walking Across the Atlantic (poem) by Billy Collins
  3. Dear Sir or Madam, (poem) by Dessa

Given all poems and stories were randomly pulled from the database, it’s fitting that Gracie’s poem was the most sent as Hello, Flower wouldn’t exist without her.

Almost all of the poem/story contributors were from Washington state, but we also had submissions from the United Kingdom, Africa, and Australia.

Thank You!

Bryan and I would like to thank everyone who submitted poems and stories, adopted a flower, visited and interacted with the flowers, found the stolen Seattle flower, play tested the interactions, and were cheerleaders throughout the Hello, Flower project.

Poem and story contributors:
Gracie, Amanda Mann Jones, Kay West, Jennifer Sharp, Adam C. Sharpe, Miranda Leigh, Bryan Robinson, Leslie Hunt, Christian Jacobsen, Patrick McCuller, Kojo Bafoe, Anne, Brendan O’Brien, David Fox, and Mark Hudson.

Special Thanks:
Dessa for allowing us to use two of her poems in the project.

Flower adopters and hosts:
The Shop on South Perry in Spokane, WA for allowing Bryan to plant Edith on their property.
Taproot Theatre in Seattle, WA for allowing me to plant Steve on their property.
Andie Kern of Pegasus Bookstore in Pocatello, ID for adopting and planting Carlos.
Chris Todd in Detroit, MI for adopting and planting Sadie.

Stolen Flower Finders:
Michael and Sandra who each located the stolen Seattle flower at different times.

In Conclusion

Hello, Flower was the first non-professional collaboration Bryan and I worked on, and as SteelCode, we’re working on our next project. We would have liked Hello, Flower to have reached more people, but we’re happy it reached those it did. We had no idea what we were doing but we did it anyway, and we’re proud of what we created. We hope the flowers brightened your day, if only for a few moments.

In October 2015, I meet Dessa in Minneapolis and got to thank her in person for allowing us to include her poems in Hello, Flower. Her note to me served to validate that Hello, Flower was a great start for SteelCode. We have more dope things planned for 2016.

Note: The comma at the end of the title of Dessa’s poem Dear Sir or Madam, is part of the actual title and not a typo.

Photo credits:
Steve the flower by Bryan Robinson
Code & SMS by leslie stewart
Steve, Carlos, and Edith (3 flowers) by Bryan Robinson
“Mind Your Karma” by leslie stewart
Dessa inscription by leslie stewart