MoMENT (II) Concept

Sunday, October 24th, 2010

Time to get specific. My lovely group decided to meet outside the studio from now on — to get inspired, to have fun with the project, and to really make a killer app. I am sure this decision was a very good one. Here we are at the Karloff café in Cobble Hill; brainstorming, sketching, trying to reach consensus on what the very best idea would be:


We ended up with this flowchart roughly describing the flow of our app:

And even though this model came about a bit later, I believe we all had this understanding of how our concept fits with the research we had done:

The app mainly addresses the learning, documentation and sharing aspects of the museum experience, while hopefully at the same time minimizing confusion, and increasing the sense of fulfillment.

In plain words, this is what our app is about:

MoMENT
Remember and share your MoMA experience

Our concept is about remembering and sharing moments in a museum. Sensors will locate which artwork you are closest to, and automatically give information about it to through the Art View. With the click of a button, you can add pieces of art to your own art list (My MoMA), and add a comment if you like. All visitor actions will be aggregated and visualized in the Our MoMA view to make each visitor feel like they’re part of a larger whole, and give them a sense of community.

Next (and last) project phase: MoMENT (III) Prototype

MoMENT (I) Analysis

Sunday, October 24th, 2010

OBSERVATION
So we went to the MoMA to observe what people were doing, while keeping an open mind, but at the same time looking for opportunities where a smart phone application could be utilized. I feel you only get so much from observing people, and that you need to talk to them to understand why they behave as they do, what their goals are, what they’re going to do next and so on. When I observed museum visitors taking notes and photos of the art, I had to ask them questions as well, to understand better their reasons, and how they probably would use the photos when they got out of the museum. I am glad I did that, as documenting art to remember for later research turned out to become the core of our app concept.

KJ ANALYSIS

My group met up to gather all our observations from the museum, and to structure them by using a method called KJ analysis. In general I felt that our observations were kind of …eh… lame. That people are sitting and reading a brochure, or that people view art from different distances is not in any way interesting. I would like to see what we could have done with this analysis method if we added visitor’s goals, motivations, desires, frustrations, reflections their experience with art and so on. But at the same time, the grouping and labeling of different observations made us talk about our view of how a museum experience can be divided and categorized, which I guess is a good thing. The fact that talking while doing this exercise is a no-no according to the method instructions — that we’re supposed to just let patterns emerge while silently moving post-its around just feels weird to me, as the talking part seemed like the most valuable thing we got out of it. We also made a conceptual model visualizing my group’s understanding of what’s going on in the museum:

This was actually used quite a lot when we got into the next steps of the process; as an aid in discussions, to make sure we didn’t lose sight of the big picture, and to help us when deciding which parts of the museum experience we wanted to address with our app.

PERSONAS
We made up some “friends” who would represent different types of MoMA visitors that we could have in mind when developing our concept. This is an extract of these friends of ours (called personas):

Considering this earlier mentioned fact; that we never talked to the visitors at the museum, I felt we lacked some of the input to create their personalities, their main goals and so on. At the same time, as students in an art school, we probably understand the art museum domain better than many other domains, so hopefully our personas weren’t that far off.

I have worked a lot with personas before. Sometimes it works, sometimes it just don’t. This time I felt like my team all knew the personas very well, and we referred to them during the next phases of our projects.

Next project phase: MoMENT (II) Concept

MoMENT: Concept development through research

Sunday, October 24th, 2010

The Research Methods class has come to an end — with the final output being four different concepts for a smart phone app for the Museum of Modern Art. The four student teams presented the concepts to each other, as well as to representatives from the MoMA. However, we needed quite a lot of input to get to the point where we could present something worth the MoMA representative’s time… This is where our 6 week process with testing out various research methods comes in. I’ll take you through my team’s journey until we got to the presentation of our smart phone application called MoMENT.

Because the journey was long, I have divided it into three phases:

MoMENT (I) Analysis
Museum observations, analysis of our observations, developing personas

MoMENT (II) Concept
Brainstorming, sketching, choosing the very best idea

MoMENT (III) Prototype
Low-fi paper prototype, usability testing, refining prototype

Click on the phases to explore each of them further, to get the visuals and all that.

Our final 20 minute presentation went well, and it was great to get the MoMA’s perspective on our concept. It was very interesting to hear that they already had thought of many of the ideas that the groups presented, but because of other constraints (budget, technology, the architecture of the building etc.) developing such apps is not necessarily feasible just like that.

It’s wonderful being a student and just come up with ideas without having to think about all these constraints. At the same time, I would definitely researched the business and technology aspects further before prototyping too much, if I were to develop such a concept in “real life”. I agree with the MoMA panel that a concept involving some new, innovative technology has to work well – it can’t let the user down. Ever. Which means that our sensor idea definitely would have to be tested further to be sure it would be helpful rather than frustrating for the app user.

As mentioned in the Analysis-post, I did feel that some of the methods were a bit “forced”. Just observing and not ever talking to the visitors felt very wrong to me. I definitely would have spent some time conducting qualitative interviews with some of the visitors, as well as staff at the MoMA, if the time allowed it. Not talking while doing the grouping in the KJ analysis also felt very weird, and I am not sure I got why we had to be silent.

I’m generally in favor of researching before concept development, and don’t think the kind of research we conducted hindered the creative process in any way. If I were to do this process over again, the analysis part is probably where I would consider adjusting our approach a bit.

Lab #6 Analog output

Wednesday, October 20th, 2010

Friday afternoon. I was so ready to go home from the studio, considering that I spent the night before singing karaoke with some of my classmates until 4AM. However, when I realized that four eager students were about to start this week’s lab, I figured my hangover would just have to be put on hold while joining them. This lab is about music in the same way karaoke is about music. It’s “music”. So stay with me while I redefine the concept of music. Or just let me ramble on without any readers.


Some of my very eager classmates in the process of inventing a musical instrument!

Parts we used: Arduino, potentiometer wired for breadboard connections, servo motor, variable resistor(s) of your own choosing, fixed resistors as needed to create voltage divider circuits, small speaker (Radio Shack model 273-092 or similar), wire stripper, multimeter, breadboard, hook up wire.

SERVO MOTOR

We connected the power from Arduino to the breadboard, and hooked up the servo motor and potentiometer to it like this:

This was the code we used to control the servo with the potentiometer:

// Controlling a servo position using a potentiometer (variable resistor)

#include

Servo myservo; // create servo object to control a servo

int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin

void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}

void loop()
{
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 179); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
}

By changing the mapping from this:

val = map(val, 0, 1023, 0, 179); // scale it to use it with the servo (value between 0 and 179)

to this:

val = map(val, 0, 1023, 0, 90); // scale it to use it with the servo (value between 0 and 90)

we’re able to make the potentiometer only control movement between 0 and 90 degrees instead of 180 degrees for the servo motor.

SPEAKER SETUP AND NOISE

We removed the servo motor, and connected the speaker to ground and to digital pin 8. Adding a 1K resistor kept us from overdriving the speaker. We downloaded the Tone library and installed it in our ~/Documents/Arduino/libraries folder, restarted the program, and then loaded this code onto our Arduino:

#include
Tone mytone; // declare a tone name

void setup() {
// initialize the tone
mytone.begin(8);
}

void loop() {
// read the analog input
int inVar = analogRead(0);
// map the input to a frequency range between 200 and 2000 Hz
int note = map(inVar, 0, 1023, 200, 2000);
// play the note
mytone.play(note);
}

Now we were able to control a tone (or noise, if you like) with the potentiometer. This is how it sounds. And looks. Yeah, it’s a video. 10 seconds of your precious time. I’m not sure it’s worth it, though. Just saying.

CREATE SOMETHING UNIQUE

By using a force sensor we can change the tone that the speaker is playing just by pressing the sensor in different ways. We combined code from our Analog input lab with the code we just used to get this to work:

#include
Tone mytone; // declare a tone name
int forcePin = 3; // force sensor connected to analog pin 3

void setup() {
mytone.begin(8); // initialize the tone
}

void loop() {
int inVar = analogRead(forcePin); // read forcePin
int note = map(inVar, 1, 1023, 200, 2000);
// map the input to a frequency range between 200 and 2000 Hz
mytone.play(note); // play the note
}

If you look at this unique invention and define it as a musical instrument, then that’s good. To be completely honest with you — I’d rather go play my organ.

Tomato soup

Thursday, October 14th, 2010


All the leaves are brown, the sky is gray, and it’s time to make this easy and cheap, delicious and chunky tomato soup. Nothing fancy. Just a very good soup.

1. Chop up two cloves of garlic. Using garlic salt is simply not acceptable. So. The real thing, please?

2. Take 1/2 of a large onion. Or a whole smaller one. You get the picture. Now chop, chop, chop!

3. Add one good sip of olive oil into a large pan. Heat it up and put in the garlic first, and then shortly after the chopped onions as well. Brown the mix for 5 minutes or so.

4. Open a large can of diced tomatoes. Or two normal sized cans. Add it to the pan. Fill the can 3/4 full of water, and add that too.

5. Bring the soup to boil, and let it simmer over low heat for about 30 minutes while you spice it up with some pepper, salt, and about two tea spoons of sugar. How much sugar depends on how sweet the tomatoes are, though.

6. This could be when you would put the soup into a blender to make it smooth. You’re not going to do that. Why? Well, it’s messy. You might not even have a blender (like me). Most importantly; no one will believe you when you say it’s homemade soup. It will simply look too fancy. That it tastes fancy is something we’ll just have to live with. So let’s leave the soup nice and chunky, shall we?

7. Some minutes before the soup is ready to serve, you can chop up some fresh basil to sprinkle over it. Dry basil is OK too.

If you like, you could add some chopped up red chili to make the soup hot and spicy, or add cream or milk to make it creamier, a bit richer and with less tomato taste. Or do a little bit of both. In the soup I just made for myself, I added some balsamic vinegar and a bit of yogurt when serving. There are no rules here. Just soup. Now go make your own version!

If you need some visual aid, this could be helpful, though:


This little poster is something I made as an assignment for class to get to know InDesign a bit better. I considered the target audience for this to be my mother, but am thinking it might work for others as well. You see, my Mom is the one who always asks me about this recipe. However, it’s been a while since the last time she asked, and I’m not sure whether it is because she forgot that this is a part of her kitchen repertoire, or if she actually has learned the recipe by heart now. By printing and hanging this pdf on the fridge, however, both Mom and I will remember to make this soup more often. Which is a good thing, because every time I make it, it’s just so much better than I imagined it to be. Yum.

Lab #5 Programming with Processing

Wednesday, October 13th, 2010

Time to learn programming in a new language. Why? Because you can do cool stuff. Like copying art work that famous artists have made:


This is my copy of an artwork called Growth and Youth, and is originally made by Josef Albers.

But before I could make that art work, I had to learn some basic stuff about creating shapes and playing with colors.

BASIC STRUCTURE

void setup()
{
size(640, 480); //Setting width, height
background(0); //Background color black
println(“Oh, what a JOYFUL message this is!”); //Printing message
}

FIRST SKETCH

Learning how to draw different shapes.

void setup()
{
size(400, 400); //Setting width, height
background(#ffffff); //Background color white
}

void draw ()
{
point(30,30); // x, y
line(30,50, 80,50); //x1, y1, x2, y2
triangle(30,70, 80,70, 55,100); //x1, y1, x2, y2, x3, y3
quad(30,120, 80,120, 80,150, 30,150); //x1, y1, x2, y2, x3, y3, x4, y4
rect(30,160, 30,60); //x1, y1, width, height
ellipse(50,280, 40,80); // x, y, width, height
}

FULL COLOR

Adding color to the equation.

void setup()
{
size(400, 400); //Setting width, height
background(#e8e8e8); //Background color
}

void draw ()
{
//POINT
stroke(#000000);
point(30,30); // x, y

//LINE
stroke(#000000);
line(30,50, 80,50); //x1, y1, x2, y2

//TRIANGLE
stroke(#00a666);
fill(#bdefdc);
triangle(30,70, 80,70, 55,100); //x1, y1, x2, y2, x3, y3

//QUAD
stroke(#a60046);
fill(#f5cfdf);
quad(30,120, 80,120, 80,150, 30,150); //x1, y1, x2, y2, x3, y3, x4, y4

//RECT
stroke(#fc9c06);
fill(#f8e7cb);
rect(30,160, 30,60); //x1, y1, width, height

//ELLIPSE
stroke(#2e06fc);
fill(#dfd9fc);
ellipse(50,280, 40,80); // x, y, width, height
}

Now I was ready to copy the great artists (mainly the great artists that play with basic shapes, though):

ALBERS

// Growth and Youth by Josef Albers

void setup()
{
size(480, 480); //Setting width, height
background(#9badaf); //Background color gray
}

void draw ()
{
//1st rect
stroke(#c6d7de);
fill(#d4a00d);
rect(23,23, 433,433); //x1, y1, width, height

//2nd rect
noStroke(); //No stroke for this and the next rectangles
fill(#ddb834);
rect(68,88, 343,343); //x1, y1, width, height

//3rd rect
fill(#dec83e);
rect(112,142, 257,257); //x1, y1, width, height

//4th rect
fill(#d7d05e);
rect(155,195, 170,170); //x1, y1, width, height
}

CREATING A PAINT PROGRAM

Time to make a basic paint program. In my final program you can do some fabulous painting with my specialized yellow dot paintbrush, like this:

You can also clear the screen by clicking the white button. Try my paint program! This is how I started out:

void setup()
{
size(480, 600); //Setting width, height
background(#9badaf); //Background color
}

void draw()
{
//MAIN CIRCLES WHERE MOUSE POINTER IS

//Large circle
fill(#d4a00d); //Fill color
noStroke();
ellipse(mouseX,mouseY,50,50);

//Smaller circle
fill(#ddb834);
ellipse(mouseX,mouseY,35,35);

//Smallest circle
fill(#dec83e);
ellipse(mouseX,mouseY,15,15);

//SMALL DOTS OUTSIDE OF MOUSE POINTER

fill(#dec83e);
ellipse(mouseX+30,mouseY+30, 15,15);

fill(#dec83e);
ellipse(mouseX-30,mouseY-30, 10,10);

fill(#dec83e);
ellipse(mouseX-50,mouseY, 5,5);

fill(#dec83e);
ellipse(mouseX,mouseY-50, 10,10);

fill(#dec83e);
ellipse(mouseX+30,mouseY-20, 15,15);

fill(#dec83e);
ellipse(mouseX+50,mouseY, 5,5);
}

PAINTING WITHIN A CERTAIN AREA

void setup()
{
size(480, 600); //Setting width, height
background(#9badaf); //Background color
stroke(#ffffff);
noFill();
rect(30,30, 300,300); //Area to draw in
}

void draw()
{
//CHECKING IF MOUSE PRESSED AND INSIDE RIGHT AREA
if ((mousePressed == true) && (mouseX>82) && (mouseX<278) && (mouseY>85) && (mouseY<293)) {

//MAIN CIRCLES WHERE MOUSE POINTER IS

//Large circle
fill(#d4a00d); //Fill color
noStroke();
ellipse(mouseX,mouseY,50,50);

//Smaller circle
fill(#ddb834);
ellipse(mouseX,mouseY,35,35);

//Smallest circle
fill(#dec83e);
ellipse(mouseX,mouseY,15,15);

//SMALL DOTS OUTSIDE OF MOUSE POINTER

fill(#dec83e);
ellipse(mouseX+30,mouseY+30, 15,15);

fill(#dec83e);
ellipse(mouseX-30,mouseY-30, 10,10);

fill(#dec83e);
ellipse(mouseX-50,mouseY, 5,5);

fill(#dec83e);
ellipse(mouseX,mouseY-50, 10,10);

fill(#dec83e);
ellipse(mouseX+30,mouseY-20, 15,15);

fill(#dec83e);
ellipse(mouseX+50,mouseY, 5,5);
}
}

ADDING BUTTON TO CLEAR AREA

void setup()
{
size(480, 600); //Setting width, height
background(#9badaf); //Background color
}

void draw() {

//AREA TO DRAW IN
stroke(#ffffff);
noFill();
rect(30,30, 300,300);

//BUTTON
stroke(#ffffff);
fill(#ffffff);
rect(30,350, 100,30);

//CHECKING IF MOUSE PRESSED AND INSIDE RIGHT AREA

if ((mousePressed == true) && (mouseX>82) && (mouseX<278) && (mouseY>85) && (mouseY<293)) {

//MAIN CIRCLES WHERE MOUSE POINTER IS

//Large circle
fill(#d4a00d);
noStroke();
ellipse(mouseX,mouseY,50,50);

//Smaller circle
fill(#ddb834);
ellipse(mouseX,mouseY,35,35);

//Smallest circle
fill(#dec83e);
ellipse(mouseX,mouseY,15,15);

//SMALL DOTS OUTSIDE OF MOUSE POINTER

fill(#dec83e);
ellipse(mouseX+30,mouseY+30, 15,15);

fill(#dec83e);
ellipse(mouseX-30,mouseY-30, 10,10);

fill(#dec83e);
ellipse(mouseX-50,mouseY, 5,5);

fill(#dec83e);
ellipse(mouseX,mouseY-50, 10,10);

fill(#dec83e);
ellipse(mouseX+30,mouseY-20, 15,15);

fill(#dec83e);
ellipse(mouseX+50,mouseY, 5,5);

}

//CLEARING AREA WHEN BUTTON PRESSED

if ((mousePressed == true) && (mouseX>29) && (mouseX<131) && (mouseY>349) && (mouseY<380)){

//Make button gray when pressed
stroke(#ffffff);
fill(#cccccc);
rect(30,350, 100,30);

//Redraw area to draw in - clearing area
stroke(#ffffff);
fill(#9badaf);
rect(30,30, 300,300);
}
}

Remembering Oslo

Tuesday, October 12th, 2010


I have been in New York City for almost two months now — and I don’t miss Oslo at all, even though I miss the people that I left behind there. When looking at some photos from the days before I left Norway, I stumbled upon this small project that I have been meaning to share with you earlier. It was made for a friend of mine, Ida, and her fiance, Tamam, who both just left Oslo to stay two years in Abidjan at the Ivory Coast(!). We made this memory map to remind them of what they were leaving behind, but it was a good thought exercise for me too. View the whole map in large — if you would like to get an overview of me and my friends highlights and whereabouts during the last 15 years.

The actual creation of the map makes up another great memory of a more recent date; Veronica and I were at my family’s summer house while connecting pins and strings to map and memories while sharing a bottle of port wine, some delicious cheese and crackers, struggling to stay awake, part laughing, part trying to not drive each other crazy as we realized this project would take us about 10 times as long to finish as we first thought. It was raining a lot the days we were there, but if you wear garbage bags over your rain coats like my family usually(?) does, there’s no need to complain:

Anyways. I wish Ida and Tamam will have a wonderful time in Africa, that all my other friends enjoy their time in Norway even though the darkness (a.k.a. winter) is sneaking upon them, and I’ll try to make the best out of my time here in America! Maybe it’s time to visit this cafe today?

Lab #4 Analog input

Tuesday, October 5th, 2010

It’s time for Analog Input lab. Lab partner Erin and I are very excited. We love staying in the studio past midnight to play with our Arduino boards.

Parts we used:
Breadboard, hook up wire, wire stripper, multimeter, Arduino, LEDs, potentiometer, 330 Ohm resistors (or similar), 10K Ohm resistors (or similar), 1K Ohm resistors (or similar), variable resistor (we used the force resistor), glass of water

POTENTIOMETER SETUP

ADD AN LED FOR PWM OUTPUT

LOAD A PROGRAM TO CONTROL THE ARDUINO
We pasted in this code to our Arduino program:

int ledPin = 9; // LED connected to digital pin 9
int analogPin = 3; // potentiometer connected to analog pin 3
int val = 0; // variable to store the read value

void setup()
{
pinMode(ledPin, OUTPUT); // sets the pin as output
Serial.begin(9600);
}

void loop()
{
val = analogRead(analogPin); // read the input pin
analogWrite(ledPin, val / 4); // analogRead values go from 0 to 1023, analogWrite values from 0 to 255
Serial.println(val, DEC);
}

As we adjusted the potentiometer the output numbers changed. This is what we saw on our screen, using the Arduino program:

TRY OTHER VARIABLE RESISTORS
We tried a force sensing resistor like this:

With the multimeter and a 10K resistor – the more pressure we put on the variable resistor, the lower the voltage. The voltage was up to 4.8 volts, and as low as 1 volt. With a 1K resistor, the result was the same.

INVENTION
By the time we had done all this work, we became very thirsty. We could not believe that we had forgotten to drink this whole time. That’s why we invented a device that encourages forgetful drinkers to hydrate more often. We coded Arduino to give different messages depending on how full the water glass is:

  • GLASS FULL: Drink, or you’ll get dehydrated!
  • GLASS HALF FULL: Is your glass half full or half empty?
  • GLASS EMPTY: Thirsty? Fill her up!
  • GLASS LIFTED: Good job, isn’t that water tasty? :D

On the screen, the messages looked like this:

And Erin, our forgetful drinker, just kept filling the glass up, and drinking over and over again in an eternal loop, as we forgot (yeah, we tend to forget a lot of things) to program a message letting her know when enough is enough:

This was our code leaving the forgetful drinker to drink forever and ever:

int ledPin = 9; // LED connected to digital pin 9
int analogPin = 3; // potentiometer connected to analog pin 3
int val = 0; // variable to store the read value

void setup()
{
pinMode(ledPin, OUTPUT); // sets the pin as output
Serial.begin(300);
}

void loop()
{
val = analogRead(analogPin); // read the input pin
analogWrite(ledPin, val / 4); // analogRead values go from 0 to 1023, analogWrite values from 0 to 255
if (val<=100) {
Serial.println("Good job, isn't that water tasty? :D ");
}
else if ((val>100) && (val<=275)) {
Serial.println("Thirsty? Fill her up!");
}
else if ((val>275) && (val<=340)) {
Serial.println("Is your glass half full or half empty?");
}
else if (val>340) {
Serial.println(“Drink, or you’ll get dehydrated!”);
}
}

Next time we’ll turn water into wine.

The Social Network

Sunday, October 3rd, 2010


I decided to go see The Social Network on it’s premiere day here in the US, October 1st — a rainy Friday perfect for trying out the American movie theater experience. Jesse Eisenberg plays the role of Mark Zuckerberg in a way that makes you like him even though he acts like an asshole at times, because you understand his brilliance. It’s interesting to see how the fact that Zuckerberg was the geek — and in many ways just the observer of the main social scene at Harvard — made him understand the social mechanisms better than he probably would have if he was in the middle of it all. Facebook could never have been created by the Harvard social elite (as we also see in the movie) because they would not have the ability to dissect the social interaction and the social codes between humans in the same way. I believe that not understanding a domain fully probably is the best way of creating innovations, because you can more easily question what others take for granted. I enjoyed the movie a lot, and found myself being torn between feeling sorry for Zuckerberg, and just extremely impressed by his intelligence, his vision, his courage, and his hilarious, dry comments.

Imagined physical computing system

Wednesday, September 29th, 2010

Let’s invent something. Right. So that was the assignment. I decided to fix a quite trivial problem; my disorganized mornings, and more specifically create a device that would make sure that my purse contains everything it should contain when I go out the door. Like my keys:

By adding RFID-tags to my keys, phone, wallet etcetera, and have sensors by the door opening, I could get information about whether the items are in my purse or not. My very simple presentation, Call My Keys, might explain the rest. How this idea could be realized is not the important thing in this assignment. But if you’re eager to get one of these gadgets – it actually already exists if you’re willing to spend $160. So much for my creativity and innovation. Still, I feel my idea is a bit different then the Loc8tor I linked to… My device has its place on the wall by the door, but the Loc8tor could just as easily get misplaced as any of the items it’s programmed to locate. I can imagine the frustration people would have when they would need to locate the Loc8tor without having another Loc8tor to locate it!

Blog

Racing Heart

In January 2010 I attended a concert with Mathias Tjønn in Oslo. It was one of those excellent concerts that I even blogged about! And as it turned out, Mathias is a nice guy too. We both live in the same hood in Brooklyn now, and I have attended quite a few more shows with [...]

Search the blog

...or browse through the archives.