A Thinking Sam @ITP

economz: visualizing your carbon foodprint

When coming to ITP, one of the general themes I knew I wanted to explore was data visualization and how it can actually affect people’s day-to-day decision-making and behaviors. There’s so much information out there in the world, but structuring this glut of information in forms that can actually be useful in guiding decision-making is something we’ve barely scratched the surface of.

This general theme inspired the main project of my first semester at ITP: economz, a visualization project that helps people make sense of their carbon FOODprint. By creating meals using popular food items, economz shows the associated carbon footprint of the meal using a gauge we’re all familiar with: car miles traveled. The goal of the project is to raise awareness about how food choices have a great impact on one’s carbon footprint, to suggest greener meal alternatives, and to hopefully plant the seed of change in people’s minds.

The Short Version

The economz website hosts more information about the project. Please see it here (it will be moved to economz.herokuapp.com soon; as well, the featured visualization will be updated to a newer version).

View the code:

Now, onwards to each component of the project.

Creating the digital visualization in Processing (The Processing code)

 

 

A version of the visualization built with Processing and Processing.js is available here. From the very beginning, I knew I wanted the user to interact with the visualization by placing food items on a plate (creating a meal), and then seeing the associated carbon footprint of that meal in the form of a car travelling across the screen (because car travel is one of the main rubrics people think about for carbon emissions). One of the most fun parts of the project was creating the digital dashboard with menus, prompts and buttons. I wanted it to be a self-contained program that could live on the Web with splash screens, buttons, Tweet functionality and more. I am quite happy with how it turned out.

Future work (both planned and possible):

  • Ability for user to save the meal visualization they have created (done. pending next version)
  • Ability for user to tweet about the meal visualization they have created (done. pending next version)
  • Ability for user to toggle different attributes of their meals; for example, how big is the portion? do they eat it once a day? once a week?  is it organic? (this is possible, but not currently planned. there is something nice about the simple/straight-forward dashboard with limited options)

Creating the physical installation with Arduino, RFIDs, and Processing (The Arduino/Processing code)

The economz physical installation is powered by serial communication between Arduino and Processing. Physical “fake” food items (like this steak here!) are tagged with RFIDs and communicated to Processing via an NFC/RFID shield and Arduino. Processing is used for the digital visualization.

Here’s how it works:

  • The user approaches the economz physical installation and encounters 23 different fake food items (various veggies, meats, dairy items, starches, and snacks).
  • They select the food items they want to create a meal out of, and then scan each item across a grocery-store-style checkout system (and then place them on a plate). As the items go across the checkout counter, the RFID tag of that food item is detected by the RFID shield on the Arduino, and the screen in front of the user is updated to show the new food item on the plate. If they rescan the item, they can remove it from the plate.
  • When they are done creating the meal, they scan a toy hummer SUV to run the car animation and to see the carbon footprint of that meal. At the end, a splash screen appears on the monitor to give them more information about the meal they just created, and to suggest actions for a healthier carbon FOODprint.
Creating the physical installation required quite a bit of work with RFID tags. Originally, I wanted the user to just put items DIRECTLY on the plate (without having to scan them across a grocery-store-style checkout system). The idea was that the RFID reader would just detect all the tafs in range at any given time and communicate that to the Processing visual display. However, it turns out that RFID readers are not really designed to read MULTIPLE tags at the same time (they tend to read just the 1-2 closest ones to the reader). Thus, it would not be possible for the reader to detect multiple items on the plate at the same time. Instead, I changed the user interaction and introduced the checkout-style system where each item is scanned individually (and communicated to Processing one by one). This actually ended up working really well because people are used to scanning items in this way (so it was a really intuitive action). That said, there are some interesting strategies to look at for solving the RFID reader / multiple tags issue (some people have tried to deal with it by writing “anti-collision” methods in code, but there is no go-to solution yet). I plan to explore this more in future projects.
Displaying the physical installation at the ITP show was quite a bit of fun (and the project was very well-received!). Here are some lessons learned and future plans based on that experience (with hundreds of users testing it out!):
  • Kids love it! Creating meals “on screen” by using the fake food was a big hit among the kids. However, they didn’t really get or care about the environmental commentary of this project. Because of that, it would be interesting to teach kids other things about meals using this setup (for example, “creating a balanced meal”). The interaction with the fake good is great for getting kids involved — now I just need to figure out what “learning activities” actually work for them.
  • The physical installation works well and is fantastic for getting the environmental message across. I had several people in the business community express interest about this project being used in conjunction with eco-friendly brands and grocery stores (the idea being that these brands/stores could associate the installation with their product to raise awareness about the importance of eco-friendly food).
  • More information/context would be good. One component I could improve is to better contextualize the information people are getting. What is the very best meal? What is the very worst? What is the average? I know this personally (because I worked with the data so much), and so I was able to explain it to people on the spot. However, in the future, I’d like to built it into the installation itself.

Creating the economz website with Ruby/Sinatra (The Ruby/Sinatra code)

 

 

The economz website is viewable here (soon to be moved to economz.herokuapp.com). It is built with Ruby/Sinatra, and houses the main Processing.js visualization, information about the project and the physical installation, and a gallery of food items with more information about each item’s carbon impact. The gallery of meals is particularly important to the website. It allows visitors to learn more about each food item’s carbon footprint and to view, submit, and exchange recipes for those that are “economz-friendly” items. The gallery also has a bit of slick JQuery interactions and a nice color-oriented visual display.

The main future work planned for the website is allow users to save the meal visualization they have created directly to the economz Web gallery of meals. Currently, the user can save the meal visualization locally (to their own computer), but saving it the economz server is a tricky task. Code needs to be written to generate an image from the Processing.js canvas, send it to the economz application server, and then read the image and save it to the database at the application. It turns out generating an image from the canvas and sending it to the application is easy (using html5 and JQuery/AJAX), but actually reading, encoding and saving the image on the application side is much trickier (code needs to be written so that the application can properly encode the image at its end).

Conclusion

economz was a really fun and important project to work on. Special thanks go to my wonderful ITP professors for their support and guidance: Daniel Shiffman (for ICM/Processing), Benedetta Piantella (for Physical Computing/Arduino/RFIDs), and Zevensuy Rodriguez (for Web/Ruby/Sinatra). Also a special thanks goes out to all my ITP colleagues who helped out: Esteban Cordova, Maria Paula Saba, Jess Jung, Caroline Sinders, Wajma Mohseni, and all the other classmates who gave great feedback.

economz: your carbon foodprint

For my final projects in ICM, Pcomp and Web, I’m creating one big project around how food choices influence one’s carbon footprint.

The project is called economz (for now), and the website for it can be found here: http://economz.tumblr.com/

About economz

Everyday, multiple times a day, you make a key choice that will determine your personal carbon footprint. It’s not necessarily the car you drive or even the fuel you burn (although these are important sources as well) — rather, it is the food you choose to consume.

When it comes to your personal carbon footprint, your food choices matter – a lot. Some studies peg food choices as contributing as much as 30% of one’s overall carbon footprint.

economz is a visualization project that helps people make sense of their carbon foodprint. By creating meals using popular and standard food items, economz shows the associated carbon footprint using a gauge we’re all familiar with: car miles traveled.

There are two ways to use economz:

  1. On the Web — create meals, learn about your carbon foodprint, and share!
  2. Physical Installation — located at NYU’s Interactive Telecommunications Program, you can also create meals using our physical installation of mock food items

The Facts

  • What you eat is much more important than where it came from. The distance that food travels is only around 11% of the average American household’s carbon foodprint.
  • Food production is what matters. More than 90 per cent of beef’s emissions, 69 per cent of pork’s and 72 per cent of farmed salmon’s emissions come in the production phase.
  • Certain foods are associated with much higher carbon emissions, due to the production systems it takes to produce these foods — from the pesticides and fertilizer used to grow animal feed all the way through the grazing, animal raising, processing, transportation, cooking and, finally, disposal of unused food.
  • Meat and cheese are the worst culprits: Lamb, beef, cheese, pork and farmed salmon generate the most greenhouse gases.
  • The typical American consumes around 127 pounds of meat per year – on average, that’s 40 percent more than other developed countries
  • If everyone in the US ate no meat or cheese just ONE day a week, that would be like not driving 91 billion miles, or taking 7.6 million cars off the road
  • The positive side: Changing food habits offers a very real way to change your personal carbon footprint! Changing transportation and electricity choices can be tough in the short term, but food consumption can be changed pretty much whenever you put your mind to it.

The Project

economz will be a Web-based visualization project with an accompanying physical installation.

The To-Dos

  • Visualization project in Processing
  • Physical installation (fabricate various food items and hook them up to sensors that can identify which food item is which and communicate that info to the Processing sketch; the food registers when it is placed on a physical plate).
  • Website in Ruby/Sinatra (1. embedded visualization; 2. ability to save and tweet your meal visualization; 3. browsable gallery of featured meals and their “score”; 4. video of physical installation)
  • Branding / Visual Design

The Questions

Processing

  • Show food items and drag over OR show menu and “click” on text items?
  • How many output options (if you ate this meal once a week for a year? if you ate this meal once a day for a year? more?)
  • I want people to be able to tweet their visualization, which people can then view at a specific URL. I need to save the frame, save to the database of my ruby app, and then post to twitter with that URL. “Food choices matter for the environment – a lot. See my carbon foodprint example at ~~uniqueURL~~ by @economz”

Pcomp

  • Best way to fabricate fake food? Laser cutter (but with what material?)? 3d printer? Hand-made (but with what material)? Real food??
  • Best sensor / identifiers?

The Outreach

  • Meatless Mondays
  • Eco and Environmental groups and publications
  • Eco and Environmental writers/bloggers

Collectabite: An Experiment in Shared Nutrition

For our physical computing midterm project, my team (which included the wonderful Wajma Mohseni and Wang Yang) developed a fun installation to track and encourage healthy eating in a shared kitchen or break room.

Check out the project website here. The code for this project is available on Github.

And now on to the details.

Collectabite was an idea borne from our belief in:

  •  HEALTH, particularly nutrition
  •  COMMUNITIES influencing eating habits
  • SOCIAL ACTIVITIES that are fun and that can positively influence healthy eating!

How does it work?

Collectabite is a shared nutrition system that tracks how often people are eating fruits and vegetables, and highlights the positive habits of individuals and the group.

A day in the life of a Collectabiter:

Solange is a busy techie at a startup firm. She eats an apple at 11am instead of grabbing her usual danish. Feeling happy with herself, she high fives Lil’ Collectabite in the kitchen to register her apple consumption. “You go girl!” it yells out in encouragement. It takes a photo of her from a camera which is projected onto a public screen for everyone to see: “Solange the Healthy Superstar” using a cool picture format. The eat-o-meter goes up by one on the screen, getting closer to the company’s combined goal for the day. Now everyone will know Solange is eating healthy and contributing to the community goal.

The collectabite information is fed into a website, where pictures of healthy eaters are stored, the meter is monitored, and discussion forum + social media feeds are streamed.

Once the community goal is reached, Lil’ Collectabite shouts out and cheers. The information will be fed into a tweet or website so all members of Collectabite are notified (and if companies or organizations wish, rewards can even be provided!). The meter is refreshed for a new week of healthy eating. If the goal is not reached, it will be recorded and tracked.

Technical Overview

The code for this project is available on Github.

Collectabite is built using serial communication between an Arduino micro-controller and the Processing development environment. The user registers a healthy eating action by high fiving our apple figure (aka “Lil’ Collectabite”). Using force-sensing resistors that we calibrate, we are able to determine exactly when a high five has been registered by the system.

Once the system has been triggered, Processing takes over. Each High Five produces the following action:

  • An encouraging sound or song is played (using the Processing minim library). For example, “You Go Girl!” or a series of cheering.
  • A series of photos are taken to document who just registered the healthy action and at what level the meter is currently. An animated .gif is created (using the gifAnimation library in Processing), shown on the public screen for everyone to see in person, and uploaded to a website that everyone in the group has access to. The website allows for even more public recognition of the healthy individuals as well as a tracking system of the meter.
  • The meter goes up by 1.
  • If the goal has not yet been reached, the system remains open and someone else can high five Lil’ Collectabite.
  • If the goal has been reached, a final “winning” song is played and the system resets.

Video on the User Interaction

Visual Display of the digital system:

Image of the physical installation:

Video on the making of Collectabite

Collectabites, a playtest

Pictured here is our playtest set-up in the ITP kitchen area. People were asked to either “High Five for Health” or “Throw Ball Through the Mouth” whenever they ate a fruit or vegetable. We need more incentives and interaction.

Collectabite: A Pcomp Project in Shared Nutrition

For our Pcomp midterm project, we have created a concept around improving the shared nutrition of a group. The working title is “Collectabite,” and it seeks to make a community more aware of healthy eating habits and shared nutritional intake. Ultimately, the goal is to encourage a community to eat better. We will publicly display the group’s fruit and vegetable consumption in a shared community space. The process will be fun. We will use a visual display and a series of sounds to encourage an interactive process.

Read more about it in the concept brief.

Preliminary Bill of Materials:

  • Wood (for carnival idea)
  • Paint (for carnival idea)
  • Balls Material (felt, fake fruit, etc. for carnival idea)
  • Cylinder (for carnival idea)
  • Buttons (for button idea)
  • Giant Stuffed Fruit (for high five idea)
  • LEDs (for physical meter idea)
  • Screen (for digital meter idea)
  • Sensors
  • Speaker (for sound interaction)

Timeline

  • Oct 22nd – Present Concept
  • Oct 29th – Playtest user interaction
  • Nov 5th – Build input system, begin mapping to meter
  • Nov 12th – Finish input system, finish meter system

Week 3 Labs: TukTuk Hydraulics

For my Week3 PCOMP lab, I ran a servo motor with my Arduino.

After getting the basic lab working, I decided to “supe” up my Indian auto-rickshaw with some hydraulics (no joke, during my time living in India, it always felt like the rickshaws had hydraulics anyways, and not in a good way).

This was my inspiration:

This was my attempt (the motor came free near the end):

Funny Note.

I wrote the below before realizing my circuit wasn’t connected to ground on the micro-controller. An hour of my time lost, but a learning experience :)

—————-
Sam’s Silly (incorrect) Note:

I had an issue where the mapping was very irregular (it would give a different value each time).

The block of code that I fiddled with was:

int analogValue = analogRead(A0); // read the analog input
Serial.println(analogValue); // print it

// if your sensor’s range is less than 0 to 1023, you’ll need to
// modify the map() function to use the values you discovered:
int servoAngle = map(analogValue, 0, 1023, 0, 179);

The issue I faced was that, sometimes it would print 1023, but after I added the servoMotor code, it would change to 735 (but nothing changed about analog input).
——————-
Actually, it just wasn’t connected to ground on the microcontroller.

Physical Computing All Stars (& Needs)

As I read through Tom Igoe’s Physical Computing’s Greatest Hits (and misses), I was struck by just how much one can innovate on existing ideas. While I had come across almost all of these project types before, each one of the projects presented by Tom was a decidedly unique take in its own right. Human creativity is decidedly wonderful.

I’m always most intrigued by the projects that cause a double-take: the seemingly random object that mirrors your movement as you walk by; the  ”fake” flowers that sway in the wind with your movement; the video-game that you’re part of without knowing it. I think random day-to-day delight and whimsy is something humans thrive on, but don’t get to experience nearly enough. It’s certainly a concept I would love to explore more closely.

I’m also quite drawn to physical computing projects that explore alternative forms of energy. For example, the Solar Sinter project (in the above video) utilizes sunlight and sand as the raw energy and material to produce glass objects using a 3D printing process (and Arduino is the micro-processor!). While it’s still experimental, it is a new take on how to use abundant energy supplies. More physical computing projects should explore this area.

Another project type I find to be compelling (and the most meaningful) are those projects that equip a certain group of people with capabilities they lacked before. In particular, projects that allow people with disabilities or paralysis to better explore, interact with their world, and express themselves via a new form of physical computing. Some examples include:

  • The Neater Eater – Allows people with disabilities to easily program and customize their own feeding mechanism. While it’s something most people take for granted, the ability to feed yourself (rather than rely on someone to hand feed you) is incredibly empowering.
  • Eyegaze Edge – Quadriplegics or others who can’t use a standard keyboard and mouse can control a computer simply by moving an eye (the device uses a high-speed infrared camera mounted under the system’s monitor and a small external processing unit to translate eye motion into on-screen action).
  • Jouse2: A computer is controlled with mouth movements and gentle puffs of air. The person manipulates the stick with her mouth to move the cursor and can click on an item by blowing into the straw.

However, there is one major issue I have with almost every physical computing project. It tends to be designed for a certain privileged sect of the world population (generally, the “richer” countries and populations). Physical computing and interactive art projects are not yet designed for use in the majority of the world. I think that’s a real shame. While there is still a digital divide in access to technology in these places, I wonder how we as technologists can start bridging this gap and coming up with simple devices and interactive physical projects that can be used by people all over the world. How can we bring delight, whimsy, and fun projects to people who are just now discovering computers? How can physical computation empower more people to live more meaningful lives in all corners of the world?

These aren’t easy questions, and it certainly will be a challenge — but one I feel is critically important to the field. This is especially true as physical projects become more and more ubiquitous with the rise of 3D printers and other similar technologies.

Week 2 Labs: Having fun with Analog/Digital and my new friend Arduino

Week 2 PCOMP labs were not only a lot of fun, but they allowed me to start my (hopefully long-term) relationship with my new friend Arduino.

Here’s what I did:

Digital Input and My Very Own Switch!

Using Arduino and a switch, I programmed a basic digital input/output that controls the 2 LEDs. When the switch is open, one light is on; when the switch is closed, the other comes on. The switch is the digital input, and the LEDs are the digital output.

I then had some fun with it! This past weekend, I escaped the city and went on an excursion to upstate New York. On our trip, we stopped at a thrift store that had all sorts of weird/fun items, including some old-school games!

I bought the classic game “Operation,” and it proved to be perfect for my very own switch. When I touch the metal part of the game (when performing the “operation”), not only does the patient’s nose light up, but so do my LEDs!

The set-up:

Operation Switch

Analog In with an Arduino and the Coffee Luv-o-Meter

In the next lab, I used Arduino to explore Analog input. As a somewhat silly way of playing with analog inputs, I attached a force-sensing resistor to a coffee cup. The harder you squeeze the cup, the brighter an LED shines. The brighter your light, the greater your love for coffee (or something like that :) …)

Apologies for ridiculous midnight commentary.

Thoughts and questions that came up:

  • I wanted to make it a bit more difficult to get the light to shine bright when you squeezed it (i.e. I wanted the person to have to squeeze really hard to get it bright; as-is, you don’t have to squeeze too hard to get it from “no light” to “bright”). I fiddled with my Arduino code, but that didn’t do the trick. Maybe something physically on the breadboard would help?
  • Also, umm, I really need to learn Arduino code!

In-Store Displays Suck

When I was young, I used to love going to big electronic stores, mainly because it meant I could demo the video game systems I didn’t have at home. But I always remembered being disappointed and somewhat confused by the whole set-up.

I wanted to see why this was (and if it was even still the case), so I set out to observe how in-store electronic displays are designed and how people interact with them.

tl;dr: In-Store Displays Suck!

I was shocked by just how bad these set-ups are designed (true story: they are exactly the same as when I frequented them 15+ years ago!). What’s inexplicable is that these set-ups are presumably installed with the intention of selling more product — the fact that they are so terrible to interact with is an enoromous waste of an opportunity for these stores!

So what sucked? (note: I am mainly talking about the interaction with the display, not so much the electronic itself)

In his hilarious and informative book “The Design of Everyday Things,” cognitive scientist and usability engineer Donald Norman points out that a well-designed product has obvious visual cues and a clear and natural map of what does what. You can see exactly what you need to see, and it’s fairly obvious what each component will do. A big part of getting it right is designing for the context of your user.

The problem with in-store displays is that they completely miss the context of how the product will actually be used by an in-store customer. Instead, it’s basically just the product sitting there, waiting for someone to do random shit with it.

Sounds like that could be OK, but here’s what I found:

My Experience

I initially saw an open Wii across the room, and being the Nintendo fan that I am, I went over to see what it was all about. Here’s what I saw on the screen as I approached:

Wii Fail

Now, for many people, this would be an immediate deal-breaker on exploring the wonders of the Wii. There was no information about how to reset the system or any other helpful info or visual cue for the first-timer. However, me being the tech wiz I am, I grabbed the Wii remote and re-connected the device. Fantastic right? But were’s what I saw next:

Wii game

I came in on a game that was already in progress, with absolutely no instructions or prompts of what I could do. I was left fiddling with the controller, pressing random buttons, and ultimately just getting confused and frustrated by the game I couldn’t get to work.

And this is my problem with these displays.

They are there to show off the product and allow people to play around, maybe even moving them one step closer toward making a purchase. But there’s absolutely no customization of the display for the context of a user in the store. Games don’t reset after each user (instead, normally you have to start where the last person left off). There’s no clear “getting started” instructions. There’s no real visual cues to let you know what you should do, so you’re left pressing random buttons (they seem to assume people will already know how the product works, which is ironic given its goal of engaging new users).

It’s a frustrating process, even for those of us that have played lots of games in our lives.

A better in-store display would take into account the context of the user: someone browsing the store who may be very new to that technology. It would thus have a customized process to orient the new user to the system in the best possible way. For example:

  • A visual cue to let people know what they need to do first. Grab the controller? Press a button? Select a game or other program? This stuff isn’t always clear.
  • A specific demo version of a game that gives newcomers some initial instructions (that can be skipped by the expert), and then resets after each use. Coming in midway through someone else’s game is confusing.
  • A fun prompt after the end of the game to let the user know what they can do next.

My thoughts were backed up by some hilarious observations of other in-store users: whether the user was trying an Xbox, iPod, or PS3, the interaction with the display was rather uniform — they would initially look excited, grab the device or controller, press random buttons and try to figure out how the damn thing worked, get confused, and then put the thing down and leave after 2-3 minutes of not making much progress. If the goal was to have the user press random buttons to see how the device physically felt, then mission accomplished! If the goal was to get the user more engaged with the product, then it was a massive failure.

Again, the context matters.

A chair would be cool too.

No chair :(

The Quest for the Blinking Light: PComp Lab1 ?s

And then there was light! (video of my first blinking LED at ITP)

Working with my wonderful lab partners Caroline and Vanessa, we were able to set up our breadboards and get the LEDs to blink to our liking:

PCOMP Fun!

The set-up

2 lights!

3 lights!

However, we certainly ran into some difficulties (and had some questions):

  • Soldering. The instructions said to touch the soldering iron directly to the joint (not the wire), but the joint never actually got hot enough to melt the wire (so we had to touch the wire directly)
  • At first we thought we did not set up our 9-12V DC power supply correctly. Turns out we just didn’t understand how to use the meter properly. It worked fine (although we forgot to attach a battery for a bit!)
  • Specific ways of wiring to create proper circuit. We understand that the wires have to be connected/run in specific ways, in order for the circuit to work, but we’re still a bit unclear on the specifics.