
What It Means for Consumers and Brands That New York Is Becoming a ‘Smart City’

Free Wi-Fi Kiosks Were to Aid New Yorkers. An Unsavory Side Has Spurred a Retreat.

LinkNYC kiosks not a hit with everyone

NYC nixes kiosk browsers after homeless commandeer their use
With little fanfare or prior warning, they began bolting the LinkNYC kiosks to the sidewalks in early 2016. Greeted with little more than a New York shrug, these were blatant pedestrian-scale digital billboards. An upgrade from the static posters on bus stops and phone booths. The trade-off for tolerating these new advertising intrusions was the promise of new “world-class” free wifi (of which an email address was initially required) and an internet-enabled, built-in tablet. Instantly, certainly apocryphal stories of rampant homeless porn-watching quickly spread, though a quick look through the offending media images showed that the concern seemed more to do with less desirable folks congregating and watching youtube videos or making voip calls instead of “moving along”. It should also be noted that these kiosks are not evenly distributed throughout the city, but rather more heavily located uptown – either through the result of human decision-making or a black box ROI algorithm is unclear. Seven months after the initial roll-out, access to internet for all passersby was either completely shut off or severely curtailed, though the digital signs remained.
Our course at Columbia, Hacking the Urban Experience, is invested in architectural street interventions at a neighborhood scale. As it appears that the design and implementation of these is driven by public-private advertising concerns (LinkNYC’s parent company is Alphabet’s Google), rather than architects or city planners, the first assignment of the course looked at ways to both acknowledge that these things now exist on NYC streets and to non-invasively study ways that they can be adapted. In the same manner that steetlight poles can act as support posts for help wanted or missing person signs, how can the Link NYC kiosks adapt and provide actual value to the street?
Below are samples of prototypes that were constructed in one week, with the expressed goal of adapting and testing how simple acts and gestures can impact our relation to these structures and public space around us. These kiosks inadvertently provide a number of opportunities – the bright screen can illuminate objects, the usb ports are charged and can power a desk fan, and the invisible wifi signals can define an actual physical space. These interventions became the foundation of a framework to discuss who is public space for, and who can stop and enjoy listening to a song by Slipknot on the sidewalk without a resulting pearl-clutching article by the Times.









Final work from the class last year, the product of a collaboration between the Parks Department, The Columbus Amsterdam BID, and Lincoln Square. These modular, mobile, interactive wind harps were installed across the street from Lincoln Center and later during the 106th Street Family Days. The colorful wind harps were made from off-the-shelf roofing material and each produced a distinct tone when ambient wind from the street funneled down the Broadway/Amsterdam Junction passed through the apertures and reverberated through the hollow column, plucking the various string widths and producing sound of various, distinct pitch. The concept was adapted from the design of Aeolian Harps – passive wind instrument which many people “find alludes to higher realms”. These also worked as improvisational instruments, that could be played on the street by passersby. The bright colors created a welcoming sight which invited participation and the strings made the foreign-seeming objects instantly recognizable as a harp/guitar like stringed instrument.
]]>
BE THERE YALL!
Past course work:
http://hackingtheurbanexperience.tumblr.com/
I didn’t really cut anything from the presentation included below. So, yeah, there’s a lot of slides. It’s (almost) the entire final presentation. I left it pretty much intact because not only 1) I can never edit my own work, but 2) the project is conceived more as a sci-fi narrative of Beijing and it will hopefully make more sense if read in complete order. And you can always just scroll way down to the end for some sweet images. This was for Ed Keller’s SpeedTerritoryCommunication studio, Spring 2009.
quick project description:
Architecture is a system of control predicated on limitations. This project is a study of the existing control systems in Beijing and a projection of how architecture and technology will merge to change not only prisons, but also the urban environment, the social stratification of society. Also addressed are what confinement and freedom will mean in relation to our relationship with how we build our world.


Detail from my final studio presentation of one symbiotic cell. See also a sankey diagram of the flows of energy through this system here.
]]>
The lights within the elevator respond to the mood of the user. For instance, if a student texted “happy #livarch” the space within the elevator would begin to slowly pulse with a greenish/blue hue. However, if another student sent “angry #livarch” the first light will quickly flash a bright red. There are twelve lights total and show the collective mood of the twelve most recent users.
In this way, the elevator becomes a living representation of the collective mood of the building, but it is also hoped that a feedback loop can be created, a loop that actually influences the mood of those that ride the elevator. The emotion felt in the lobby will be altered by the time you reach the sixth floor. And that new emotion becomes what gets texted back to the elevator.
Lastly, future installations will be physically located away from the target user. For instance, Avery’s mood will be projected to the elevator in Uris Hall and vice versa. In this manner, we can both create a new form of pen-pal with distant locations, but also hope that our mood, whether angry, sad, happy or nervous, will both manifest itself in a new form of architecture, but also have an effect on the greater world around us.
The project team also included Talya Jacobs and Guanghong Ou.
See more for video and code:
Super-Long Source Code:
The main thing to remember is in arduino to load the ‘standard firmata’ library and in processing to use the EEML language d.getStringValue(0); to make sure the value of stream id 0 is a word, or string, rather than a numeric value.
import processing.serial.*;
import cc.arduino.*;
import eeml.*;
Serial port; //Create object from Serial class
Arduino arduino;
String myValue;
String Led1Status;
String Led2Status;
String Led3Status;
String Led4Status;
String Led5Status;
String Led6Status;
String turnAngry = “angry”;
String turnAngryLiv = “angry_#livarch”;
String turnCalm = “calm”;
String turnCalmLiv = “calm_#livarch”;
String turnRelaxed = “relaxed”;
String turnRelaxedLiv = “relaxed_#livarch”;
String turnNervous = “nervous”;
String turnNervousLiv = “nervous_#livarch”;
String turnHappy = “happy”;
String turnHappyLiv = “happy_#livarch”;
String turnSad = “sad”;
String turnSadLiv = “sad_#livarch”;
DataIn dIn;
int value = 0;
int x = 0;
//int waitTime= 30; // 10ms delay
int Led1Red = 13;
int Led1Green = 2;
int Led1Blue = 3;
int Led2Red = 4;
int Led2Green = 5;
int Led2Blue = 6;
int Led3Red = 7;
int Led3Green = 8;
int Led3Blue = 9;
int Led4Red = 10;
int Led4Green = 11;
int Led4Blue = 12;
int Led5Red = 14;
int Led5Green = 15;
int Led5Blue = 16;
int Led6Red = 17;
int Led6Green = 18;
int Led6Blue = 19;
void setup()
{
frameRate(200);
println(Arduino.list());
arduino = new Arduino(this, Arduino.list()[0], 115200);
dIn = new DataIn(this, “http://www.pachube.com/api/1499.xml”, “fe2ac5cde083af08a353b9862a8d65b4d62caf94a40bfa5e6ea90f82f244f0ac”, 50000);
println(Serial.list());
arduino.pinMode(Led6Red, Arduino.OUTPUT);
arduino.pinMode(Led6Green, Arduino.OUTPUT);
arduino.pinMode(Led6Blue, Arduino.OUTPUT);
}
void draw(){
x += 1;
if (x>2){ //Set Time Here
x = 0;
x+= 1;
}
println(x);
if (x == 2) {
//if (Led1Status != myValue){
Led6Status = Led5Status;
Led5Status = Led4Status;
Led4Status = Led3Status;
Led3Status = Led2Status;
Led2Status = Led1Status;
Led1Status = myValue;
//}
}
println(“led2Status: ” + Led1Status);
println(“led2Status: ” + Led2Status);
println(“led3Status: ” + Led3Status);
println(“led4Status: ” + Led4Status);
println(“led5Status: ” + Led4Status);
println(“led6Status: ” + Led4Status);
//——————–IF/THEN-LED5————————————————————-
if((turnAngry.equals(Led5Status)) || (turnAngryLiv.equals(Led5Status))){
angry5();
}
else
if((turnCalm.equals(Led5Status)) || (turnCalmLiv.equals(Led5Status))){
calm5();
}
else
if((turnNervous.equals(Led5Status)) || (turnNervousLiv.equals(Led5Status))){
nervous5();
}
else
if((turnHappy.equals(Led5Status)) || (turnHappyLiv.equals(Led5Status))){
happy5();
}
else
if((turnSad.equals(Led5Status)) || (turnSadLiv.equals(Led5Status))){
sad5();
}
//——————–IF/THEN-LED4————————————————————-
if((turnAngry.equals(Led4Status)) || (turnAngryLiv.equals(Led4Status))){
angry4();
}
else
if((turnCalm.equals(Led4Status)) || (turnCalmLiv.equals(Led4Status))){
calm4();
}
else
if((turnNervous.equals(Led4Status)) || (turnNervousLiv.equals(Led4Status))){
nervous4();
}
else
if((turnHappy.equals(Led4Status)) || (turnHappyLiv.equals(Led4Status))){
happy4();
}
else
if((turnSad.equals(Led4Status)) || (turnSadLiv.equals(Led4Status))){
sad4();
}
//——————–IF/THEN-LED3————————————————————-
if((turnAngry.equals(Led3Status)) || (turnAngryLiv.equals(Led3Status))){
angry3();
}
else
if((turnCalm.equals(Led3Status)) || (turnCalmLiv.equals(Led3Status))){
calm3();
}
else
if((turnNervous.equals(Led3Status)) || (turnNervousLiv.equals(Led3Status))){
nervous3();
}
else
if((turnHappy.equals(Led3Status)) || (turnHappyLiv.equals(Led3Status))){
happy3();
}
else
if((turnSad.equals(Led3Status)) || (turnSadLiv.equals(Led3Status))){
sad3();
}
//——————–IF/THEN-LED2————————————————————-
if((turnAngry.equals(Led2Status)) || (turnAngryLiv.equals(Led2Status))){
angry2();
}
else
if((turnCalm.equals(Led2Status)) || (turnCalmLiv.equals(Led2Status))){
calm2();
}
else
if((turnNervous.equals(Led2Status)) || (turnNervousLiv.equals(Led2Status))){
nervous2();
}
else
if((turnHappy.equals(Led2Status)) || (turnHappyLiv.equals(Led2Status))){
happy2();
}
else
if((turnSad.equals(Led2Status)) || (turnSadLiv.equals(Led2Status))){
sad2();
}
//——————–IF/THEN-LED1————————————————————-
if((turnAngry.equals(Led1Status)) || (turnAngryLiv.equals(Led1Status))){
angry1();
}
else
if((turnCalm.equals(Led1Status)) || (turnCalmLiv.equals(Led1Status))){
calm1();
}
else
if((turnNervous.equals(Led1Status)) || (turnNervousLiv.equals(Led1Status))){
nervous1();
}
else
if((turnHappy.equals(Led1Status)) || (turnHappyLiv.equals(Led1Status))){
happy1();
}
else
if((turnSad.equals(Led1Status)) || (turnSadLiv.equals(Led1Status))){
sad1();
}
//——————–IF/THEN-LED6————————————————————-
if((turnAngry.equals(Led6Status)) || (turnAngryLiv.equals(Led6Status))){
angry6();
}
else
if((turnCalm.equals(Led6Status)) || (turnCalmLiv.equals(Led6Status))){
calm6();
}
else
if((turnNervous.equals(Led6Status)) || (turnNervousLiv.equals(Led6Status))){
nervous6();
}
else
if((turnHappy.equals(Led6Status)) || (turnHappyLiv.equals(Led6Status))){
happy6();
}
else
if((turnSad.equals(Led6Status)) || (turnSadLiv.equals(Led6Status))){
sad6();
}
}
//——————–CALM——–CALM————————————————————–
void calm1(){
for(value = 0; value<=255; value++){
arduino.analogWrite(Led1Blue, value);
arduino.analogWrite(Led1Green, 130);
arduino.analogWrite(Led1Red, 0);
delay(25);
}
for(value = 255; value >=0; value –)
{
arduino.analogWrite(Led1Blue, value);
arduino.analogWrite(Led1Green, 130);
arduino.analogWrite(Led1Red, 0);
delay(25);
}
}
void calm2(){
for(value = 0; value<=255; value++){
arduino.analogWrite(Led2Blue, value);
arduino.analogWrite(Led2Green, 130);
arduino.analogWrite(Led2Red, 0);
delay(25);
}
for(value = 255; value >=0; value –)
{
arduino.analogWrite(Led2Blue, value);
arduino.analogWrite(Led2Green, 130);
arduino.analogWrite(Led2Red, 0);
delay(25);
}
}
void calm3(){
for(value = 0; value<=255; value++){
arduino.analogWrite(Led3Blue, value);
arduino.analogWrite(Led3Green, 130);
arduino.analogWrite(Led3Red, 0);
delay(25);
}
for(value = 255; value >=0; value –)
{
arduino.analogWrite(Led3Blue, value);
arduino.analogWrite(Led3Green, 130);
arduino.analogWrite(Led3Red, 0);
delay(25);
}
}
void calm4(){
for(value = 0; value<=255; value++){
arduino.analogWrite(Led4Blue, value);
arduino.analogWrite(Led4Green, 130);
arduino.analogWrite(Led4Red, 0);
delay(25);
}
for(value = 255; value >=0; value –)
{
arduino.analogWrite(Led4Blue, value);
arduino.analogWrite(Led4Green, 130);
arduino.analogWrite(Led4Red, 0);
delay(25);
}
}
void calm5(){
for(value = 0; value<=255; value++){
arduino.analogWrite(Led5Blue, value);
arduino.analogWrite(Led5Green, 130);
arduino.analogWrite(Led5Red, 0);
delay(25);
}
for(value = 255; value >=0; value –)
{
arduino.analogWrite(Led5Blue, value);
arduino.analogWrite(Led5Green, 130);
arduino.analogWrite(Led5Red, 0);
delay(25);
}
}
void calm6(){
for(value = 0; value<=255; value++){
arduino.analogWrite(Led6Blue, value);
arduino.analogWrite(Led6Green, 130);
arduino.analogWrite(Led6Red, 0);
delay(25);
}
for(value = 255; value >=0; value –)
{
arduino.analogWrite(Led6Blue, value);
arduino.analogWrite(Led6Green, 130);
arduino.analogWrite(Led6Red, 0);
delay(25);
}
}
//——————–ANGRY——–ANGRY————————————————————–
void angry1(){
arduino.analogWrite(Led1Red,255);
//arduino.analgoWrite(Led1Green, 0);
arduino.analogWrite(Led1Blue, 0);
delay(10);
arduino.analogWrite(Led1Red,0);
//arduino.analgoWrite(Led1Green, 0);
arduino.analogWrite(Led1Blue, 0);
delay(10);
}
void angry2(){
arduino.analogWrite(Led2Red,255);
//arduino.analgoWrite(Led2Green, 0);
arduino.analogWrite(Led2Blue, 0);
delay(10);
arduino.analogWrite(Led2Red,0);
//arduino.analgoWrite(Led2Green, 0);
arduino.analogWrite(Led2Blue, 0);
delay(10);
}
void angry3(){
arduino.analogWrite(Led3Red,255);
//arduino.analgoWrite(Led3Green, 0);
arduino.analogWrite(Led3Blue, 0);
delay(10);
arduino.analogWrite(Led3Red,0);
//arduino.analgoWrite(Led3Green, 0);
arduino.analogWrite(Led3Blue, 0);
delay(10);
}
void angry4(){
arduino.analogWrite(Led4Red,255);
//arduino.analgoWrite(Led4Green, 0);
arduino.analogWrite(Led4Blue, 0);
delay(10);
arduino.analogWrite(Led4Red,0);
//arduino.analgoWrite(Led4Green, 0);
arduino.analogWrite(Led4Blue, 0);
delay(10);
}
void angry5(){
arduino.analogWrite(Led5Red,255);
//arduino.analgoWrite(Led5Green, 0);
arduino.analogWrite(Led5Blue, 0);
delay(10);
arduino.analogWrite(Led5Red,0);
//arduino.analgoWrite(Led5Green, 0);
arduino.analogWrite(Led5Blue, 0);
delay(10);
}
void angry6(){
arduino.analogWrite(Led6Red,255);
//arduino.analgoWrite(Led6Green, 0);
arduino.analogWrite(Led6Blue, 0);
delay(10);
arduino.analogWrite(Led6Red,0);
//arduino.analgoWrite(Led6Green, 0);
arduino.analogWrite(Led6Blue, 0);
delay(10);
}
//——————–Nervous——–Nervous————————————————————–
void nervous1(){
arduino.analogWrite(Led1Green,255);
arduino.analogWrite(Led1Red, 120);
arduino.analogWrite(Led1Blue, 0);
delay(300);
arduino.analogWrite(Led1Green,0);
arduino.analogWrite(Led1Red,120);
arduino.analogWrite(Led1Blue, 0);
delay(300);
}
void nervous2(){
arduino.analogWrite(Led2Green,255);
arduino.analogWrite(Led2Red, 120);
arduino.analogWrite(Led2Blue, 0);
delay(300);
arduino.analogWrite(Led2Green,0);
arduino.analogWrite(Led2Red,120);
arduino.analogWrite(Led2Blue, 0);
delay(300);
}
void nervous3(){
arduino.analogWrite(Led3Green,255);
arduino.analogWrite(Led3Red, 120);
arduino.analogWrite(Led3Blue, 0);
delay(300);
arduino.analogWrite(Led3Green,0);
arduino.analogWrite(Led3Red,120);
arduino.analogWrite(Led3Blue, 0);
delay(300);
}
void nervous4(){
arduino.analogWrite(Led4Green,255);
arduino.analogWrite(Led4Red, 120);
arduino.analogWrite(Led4Blue, 0);
delay(300);
arduino.analogWrite(Led4Green,0);
arduino.analogWrite(Led4Red,120);
arduino.analogWrite(Led4Blue, 0);
delay(300);
}
void nervous5(){
arduino.analogWrite(Led5Green,255);
arduino.analogWrite(Led5Red, 120);
arduino.analogWrite(Led5Blue, 0);
delay(300);
arduino.analogWrite(Led5Green,0);
arduino.analogWrite(Led5Red,120);
arduino.analogWrite(Led5Blue, 0);
delay(300);
}
void nervous6(){
arduino.analogWrite(Led6Green,255);
arduino.analogWrite(Led6Red, 120);
arduino.analogWrite(Led6Blue, 0);
delay(300);
arduino.analogWrite(Led6Green,0);
arduino.analogWrite(Led6Red,120);
arduino.analogWrite(Led6Blue, 0);
delay(300);
}
//——————–Happy——–Happy————————————————————–
void happy1(){
for(value = 0; value<=255; value++){
arduino.analogWrite(Led1Blue, value);
arduino.analogWrite(Led1Green, 255-value);
arduino.analogWrite(Led1Red, 0);
delay(25);
}
for(value = 255; value >=0; value -=15)
{
arduino.analogWrite(Led1Blue, value);
arduino.analogWrite(Led1Green, 255-value);
arduino.analogWrite(Led1Red, 0);
delay(25);
}
}
void happy2(){
for(value = 0; value<=255; value++){
arduino.analogWrite(Led2Blue, value);
arduino.analogWrite(Led2Green, 255-value);
arduino.analogWrite(Led2Red, 0);
delay(25);
}
for(value = 255; value >=0; value -=15)
{
arduino.analogWrite(Led2Blue, value);
arduino.analogWrite(Led2Green, 255-value);
arduino.analogWrite(Led2Red, 0);
delay(25);
}
}
void happy3(){
for(value = 0; value<=255; value++){
arduino.analogWrite(Led3Blue, value);
arduino.analogWrite(Led3Green, 255-value);
arduino.analogWrite(Led3Red, 0);
delay(25);
}
for(value = 255; value >=0; value -=15)
{
arduino.analogWrite(Led3Blue, value);
arduino.analogWrite(Led3Green, 255-value);
arduino.analogWrite(Led3Red, 0);
delay(25);
}
}
void happy4(){
for(value = 0; value<=255; value++){
arduino.analogWrite(Led4Blue, value);
arduino.analogWrite(Led4Green, 255-value);
arduino.analogWrite(Led4Red,0);
delay(25);
}
for(value = 255; value >=0; value -=15)
{
arduino.analogWrite(Led4Blue, value);
arduino.analogWrite(Led4Green, 255-value);
arduino.analogWrite(Led4Red, 0);
delay(25);
}
}
void happy5(){
for(value = 0; value<=255; value++){
arduino.analogWrite(Led5Blue, value);
arduino.analogWrite(Led5Green,255-value);
arduino.analogWrite(Led5Red, 0);
delay(25);
}
for(value = 255; value >=0; value -=15)
{
arduino.analogWrite(Led5Blue, value);
arduino.analogWrite(Led5Green, 255-value);
arduino.analogWrite(Led5Red, 0);
delay(25);
}
}
void happy6(){
for(value = 0; value<=255; value++){
arduino.analogWrite(Led6Blue, value);
arduino.analogWrite(Led6Green, 255-value);
arduino.analogWrite(Led6Red, 0);
delay(25);
}
for(value = 255; value >=0; value -=15)
{
arduino.analogWrite(Led6Blue, value);
arduino.analogWrite(Led6Green, 255-value);
arduino.analogWrite(Led6Red, 0);
delay(25);
}
}
//——————–Sad——–Sad————————————————————–
void sad1(){
for(value = 0; value<=255; value+=5){
arduino.analogWrite(Led1Blue, value);
arduino.analogWrite(Led1Green, 0);
arduino.analogWrite(Led1Red, 0);
delay(10);
}
for(value = 255; value >=0; value -=5)
{
arduino.analogWrite(Led1Blue, 255);
arduino.analogWrite(Led1Green, value);
arduino.analogWrite(Led1Red, 0);
delay(10);
}
for(value = 0; value<=255; value+=5){
arduino.analogWrite(Led1Blue, 255-value);
arduino.analogWrite(Led1Green, 255);
arduino.analogWrite(Led1Red, 0);
delay(10);
}
for(value = 255; value >=0; value -=5)
{
arduino.analogWrite(Led1Blue, 120);
arduino.analogWrite(Led1Green, 255-value);
arduino.analogWrite(Led1Red, 0);
delay(10);
}
}
void sad2(){
for(value = 0; value<=255; value+=5){
arduino.analogWrite(Led2Blue, value);
arduino.analogWrite(Led2Green, 0);
arduino.analogWrite(Led2Red, 0);
delay(10);
}
for(value = 255; value >=0; value -=5)
{
arduino.analogWrite(Led2Blue, 255);
arduino.analogWrite(Led2Green, value);
arduino.analogWrite(Led2Red, 0);
delay(10);
}
for(value = 0; value<=255; value+=5){
arduino.analogWrite(Led2Blue, 255-value);
arduino.analogWrite(Led2Green, 255);
arduino.analogWrite(Led2Red, 0);
delay(10);
}
for(value = 255; value >=0; value -=5)
{
arduino.analogWrite(Led2Blue, 120);
arduino.analogWrite(Led2Green, 255-value);
arduino.analogWrite(Led2Red, 0);
delay(10);
}
}
void sad3(){
for(value = 0; value<=255; value+=5){
arduino.analogWrite(Led3Blue, value);
arduino.analogWrite(Led3Green, 0);
arduino.analogWrite(Led3Red, 0);
delay(10);
}
for(value = 255; value >=0; value -=5)
{
arduino.analogWrite(Led3Blue, 255);
arduino.analogWrite(Led3Green, value);
arduino.analogWrite(Led3Red, 0);
delay(10);
}
for(value = 0; value<=255; value+=5){
arduino.analogWrite(Led3Blue, 255-value);
arduino.analogWrite(Led3Green, 255);
arduino.analogWrite(Led3Red, 0);
delay(10);
}
for(value = 255; value >=0; value -=5)
{
arduino.analogWrite(Led3Blue, 120 );
arduino.analogWrite(Led3Green, 255-value);
arduino.analogWrite(Led3Red, 0);
delay(10);
}
}
void sad4(){
for(value = 0; value<=255; value+=5){
arduino.analogWrite(Led4Blue, value);
arduino.analogWrite(Led4Green, 0);
arduino.analogWrite(Led4Red, 0);
delay(10);
}
for(value = 255; value >=0; value -=5)
{
arduino.analogWrite(Led4Blue, 255);
arduino.analogWrite(Led4Green, value);
arduino.analogWrite(Led4Red, 0);
delay(10);
}
for(value = 0; value<=255; value+=5){
arduino.analogWrite(Led4Blue, 255-value);
arduino.analogWrite(Led4Green, 255);
arduino.analogWrite(Led4Red, 0);
delay(10);
}
for(value = 255; value >=0; value -=5)
{
arduino.analogWrite(Led4Blue, 120);
arduino.analogWrite(Led4Green, 255-value);
arduino.analogWrite(Led4Red, 0);
delay(10);
}
}
void sad5(){
for(value = 0; value<=255; value+=5){
arduino.analogWrite(Led5Blue, value);
arduino.analogWrite(Led5Green, 0);
arduino.analogWrite(Led5Red, 0);
delay(10);
}
for(value = 255; value >=0; value -=5)
{
arduino.analogWrite(Led5Blue, 255);
arduino.analogWrite(Led5Green, value);
arduino.analogWrite(Led5Red, 0);
delay(10);
}
for(value = 0; value<=255; value+=5){
arduino.analogWrite(Led5Blue, 255-value);
arduino.analogWrite(Led5Green, 255);
arduino.analogWrite(Led5Red, 0);
delay(10);
}
for(value = 255; value >=0; value -=5)
{
arduino.analogWrite(Led5Blue, 120 );
arduino.analogWrite(Led5Green, 255-value);
arduino.analogWrite(Led5Red, 0);
delay(10);
}
}
void sad6(){
for(value = 0; value<=255; value+=5){
arduino.analogWrite(Led6Blue, value);
arduino.analogWrite(Led6Green, 0);
arduino.analogWrite(Led6Red, 0);
delay(10);
}
for(value = 255; value >=0; value -=5)
{
arduino.analogWrite(Led6Blue, 255);
arduino.analogWrite(Led6Green, value);
arduino.analogWrite(Led6Red, 0);
delay(10);
}
for(value = 0; value<=255; value+=5){
arduino.analogWrite(Led6Blue, 255-value);
arduino.analogWrite(Led6Green, 255);
arduino.analogWrite(Led6Red, 0);
delay(10);
}
for(value = 255; value >=0; value -=5)
{
arduino.analogWrite(Led6Blue, 120 );
arduino.analogWrite(Led6Green, 255-value);
arduino.analogWrite(Led6Red, 0);
delay(10);
}
}
void onReceiveEEML(DataIn d){
//set the value of remoteValue to equal the value of stream id 0 of the feed notated by d
String remoteValue = d.getStringValue(0);
myValue = (remoteValue);
}
]]>
The bureaucratic, welfare-state housing policy approaches from the mid-twentieth century have unquestionably failed, but what comes next? The urbanization of the developing world has lent this question a desperate sense of urgency, and while central planners slowly test solutions, it is squatters—lacking developer or nation-state support—who have created a living laboratory of multiple failures and successes. Where the experiments become truly interesting is along the nearly 2,000-mile-length border of Mexico and the United States—the most asymmetrical border in the world. A nomadic, aterritorial space that is neither American nor Mexican, symbiotic in nature, and, while arbitrarily physically split, maintains a cultural porosity. Here is where the aspirations of a whole class of people wash up against an increasingly inward-looking first world barrier. What are the delicate political systems of control that allow this ecosystem to experience unparalleled growth? How does the built environment respond to these systems? What hidden systems can be extracted from a firsthand look at vast informal settlements, which in turn provide a framework for precise applications in architecture, technology and urbanism? Most importantly, this proposal is not merely about the collection of research data, but rather the formulation of a constructed argument regarding alternative future potentials of the built environment based on uncovered models existing within the border region.
The research will be completed through three mutually supportive phases. The first involves an intensive, first-hand documentation of the urban development in the two largest transnational border areas in the Western Hemisphere: El Paso/Juarez and San Diego/Tijuana. The research will be supported by an investigative journalist, a political science professor and the Juarez Department of Urban Planning. Secondly, a self-guided road trip will be taken through the southwestern desert to document historically how, without architects, ecologically sustainable structures have survived through the ages. This notion will be further developed by exploring responses ranging from artists Donald Judd and Robert Smithson to the self-sustaining Anasazi cliff dwellings at Mesa Verde and the U.S. missile testing ground at White Sands, New Mexico. Lastly, guided by a local Mexico City Architect, I will explore the “Tijuana-ification” of Latin America, with a study of the successes and failures of implementing an informal urban growth model, free of infrastructural support, into a metro area of 22 million people.
Final portfolio from my time at Columbia University’s GSAPP. “Arguments” seemed like an apropos title after the discussion provoked during my final final review. And, yeah, I always default to that yellow.
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()

Single Parametric Cell from John Locke on Vimeo.
Multiple Cell Network from John Locke on Vimeo.
]]>