Tama Art University Library

The Tama Art University Library is located in Tokyo, Japan and designed by Toyo Ito. The building's foundation is a series of simple yet elegant arches that form an "emergent grid" of curved, intersecting lines. I modeled this building in Rhino and Rendered it in 3ds Max. At some point I'll upload the animation "walk-through". 

Read more about the building's design ethos and context.

 

Selfie or Cezanne?

Lately, I've been thinking about how today's selfies can be interpreted as a modern day oil painting, think self-portraits by Van Gogh, Rembrandt, or Frida Kahlo. This of course is not an idea of my own making, I first heard mention of this concept from Amir Baradaran in reference to his VR work on the Mona Lisa and most recently in a podcast about the new Museum of Selfies scheduled to open in Glendale CA, Winter 2018.

Instagram account of the Museum of Selfies

Instagram account of the Museum of Selfies

I'm a long-time follower of the instagram account of one of my favorite photographers, Jamie Beck of Ann Street Studio. For over a year now, she has been living in Provence and creating the most amazing self portrait and still life series reminiscent of the Dutch masters.

Abraham Breughel, Fruit Still Life (1670s), oil on canvas

Abraham Breughel, Fruit Still Life (1670s), oil on canvas

Diego Vel√°zquez, The Lady with a Fan (1635), oil on canvas

Diego Vel√°zquez, The Lady with a Fan (1635), oil on canvas

"Instagram Goes Vermeer," Food & Wine, January 2018.

"Instagram Goes Vermeer," Food & Wine, January 2018.

The Rise of Selfie Museums

Design and Architecture talks about immersive experiences, 29Rooms and the Museum of Selfies. It's no secret that people are increasingly moving away from retail and towards experiences. Now, brands are working with influencers to get the word out and attract people with a similar aesthetic

Museums are benefiting from this trend as well. Last year, the Jewish Museum partnered with Refinery29 and invited instagram influencers to an early morning private viewing of the Florine Stettheimer: Painting Poetry exhibition. 

When Architecture and Film Collide

James Wines' BEST Products Indeterminate Fa√ßade building reminds me of the scene in World War Z where the zombies are crawling over each other to scale the walls of Jerusalem. 

Left Image: James Wines, BEST Products Indeterminate Façade building (1974); Houston, Texas. Courtesy Sculpture In The Environment (SITE). Right Image: Marc Forster, World War Z (2013); Courtesy Paramount Pictures.

Left Image: James Wines, BEST Products Indeterminate Façade building (1974); Houston, Texas. Courtesy Sculpture In The Environment (SITE). Right Image: Marc Forster, World War Z (2013); Courtesy Paramount Pictures.

The Photography of René Burri

René Burri was a Swiss photographer known for his photos of cultural events. He proposed to photograph the inauguration of the Swiss architect's chapel at Ronchamp for the Zurich-based magazine Weltwoche (1).

René Burri. Inauguration of the Chapel of Notre Dame du Haut, built by Le Corbusier, Ronchamp, France 1955. Photograph, gelatin silver print on paper. Image: 346 x 524 mm

Ren√© Burri. Inauguration of the Chapel of Notre Dame du Haut, built by Le Corbusier, Ronchamp, France 1955. Photograph, gelatin silver print on paper. Image: 346 x 524 mm

(1) Daniel Maudlin, Marcel Vellinga. Consuming Architecture: On the occupation, appropriation and interpretation of buildings, 2014. Routledge.

When the House is the Art

The City of Detroit and its real estate landscape has proven to be a unique environment for 'Architecture as Art' and 'Artists as Developers'. This counters an argument made last year by Lance Posey in the Huffington Post that "the concept of architecture as a form of art is not only misleading to the public, but also potentially damaging to society."

Cleaning Twitter JSON data in Processing

I won't go into the method of collecting tweets using python; but instead direct you to this article that uses the Tweet Search script to mine for tweets and save them to a JSON file. This article launches right into the process of opening the saved JSON file. 

import json

tweetLocations = []
with open('../slippy_map_test/festival_2017-09-25.json') as f:
    for row in f:
        data = json.loads(row)
        geo = data['geo']

The first line: import json, loads Python‚Äôs library that handles JSON files. The following line, opens the JSON file (in this case it's Twitter data with the festival hashtag) and saves it to a variable, in this case it's called f (for file). Then, loop though each row of JSON objects in the file. The load() method parses (just like in Javascript) each row of tweets into a Python data structure and assigns it to a variable, called data. Each row has a key:value pair (in this case it's geo) that will be used to render the markers to the map.

If quite a few rows have null values, it's best to filter out these empty values before appending to an empty array. In this example, the coordinates had a significant number of empty values. Print geo (similar to console.log in Javascript) to verify in the Processing console that you've cleaned the correct data.

if geo is not None:
    tweetLocations.append(geo)
    print geo

Whose [Digital] Public Space is this?

Recently, I had the pleasure of hearing performance and new media artist Amir Baradaran of Columbia's Computer Graphics and User interface Lab talk about one his personal projects, Frenchising Mona Lisa. In 2011, Baradaran installed a 52-second performance streaming live over Leonardo da Vinci's Mona Lisa using an Augmented Reality (AR) Smartphone application where she unfurls her hair and wraps a French flag around herself in the form of a hijab. Baradaran brought to light a contradiction in French society that seems to tolerates the scarf around Mona Lisa's head (or, say, those made by Herm√®s and worn by women along the Rue Saint-Honor√©) with the banning of the hijab in public schools.

This project at the Louvre Museum caught my attention because it was less about gaming, less an educational tool and more about social commentary. Even though this project is six years old, a couple issues seem ever prescient: the use of VR/AR as a viable medium for artists; and the ownership of physical digital locations.

Recently, Snapchat launched ART, a new Lens inside the multimedia platform that places digital artwork and sculptures of artists into geo-tagged physical spaces in the public realm. Their first partnership with Jeff Koons places his artworks in various cities around the world including Champ de Mars, Paris; Hyde Park, London and Copacabana, Rio de Janeiro Brazil. A day later, artist Sebastian Errazuriz uses augmented reality to "vandalize" Koons' Balloon Dog by placing a 3D digital recreation on top of a photo of the same geo-tagged location.

Errazuriz is asking some interesting questions about how our digital public space should/could be managed: should AR experiences be governed by similar rules to those renting out physical spaces (public or private)? should corporations be allowed to place whatever content they choose over our digital public space? should they be able to do this for free while bombarding us with their advertising or whatever? should we be able to choose or approve what can or cannot be geo-tagged to our own digital public space?

Last summer Pokémon Go, a location-based augmented reality mobile game took the country by storm and had a major impact on the public realm. For now, let's forgo the apps ability to track your location, access your phone’s camera and all of your personal information. Urban planners rejoiced at the millions of people who flocked to the streets, shopping malls and landmarks looking for monsters and Pokéstops, breathing life into underutilized public spaces and proving that people will walk for the right incentives.

Within weeks, sensitive locations like Arlington Cemetery and the Holocaust Memorial Museum asked players to avoid "hunting for monsters" on their sites and issued statements via social media:

Niantic, the company responsible for Pokemon Go removed the PokéStops and gyms from the Holocaust Memorial Museum in Washington DC at the museum's request, even though they had no legal obligation to do so and set up a process for removing them from unwanted locations.

Pokemon Go request form for removing PokéStops

Pokemon Go request form for removing PokéStops

This again begs Errazuriz's question regarding our (public or private property owners/managers and the users of these spaces) ability to choose or approve how our digital public space is used and the current protocol for displaying art (or whatever these monsters are categorized as). Can similar processes be appropriated from urban planners and policy makers to help inform future digital public space management?

Pokemon Go | PokéStop near the North Pool at the 9/11 Memorial (Source: New York Daily News)

Pokemon Go | PokéStop near the North Pool at the 9/11 Memorial (Source: New York Daily News)

Currently, the protocol for displaying art in the public realm requires consultation with the owner, manager or government agency responsible for the public or city-owned space. For example, projects in privately owned buildings (such as museums, opera houses, shopping malls) must obtain permission from the building owner; while projects on the street must obtain a street activities permit from the police department.

Visualizing Data {Earthquakes}

Using USGS data, I visualize the magnitude and location of earthquakes that have occurred on a particular day. Disclaimer: This data includes ‚Äėquarry blasts‚Äô and ‚Äėexplosions‚Äô that can be easily filtered out.

All Earthquakes from one day | 09.27.2017

All Earthquakes from one day | 09.27.2017

The first steps in this process are: create a new Processing sketch; download and clean the data; then import the cleaned data into the sketch. Pretty straightforward.

CREATE A NEW PROCESSING SKETCH

The main sketch starts with two functions: setup and draw. The setup() block runs once and is used for initializing the sketch by setting the screen size (this must be the first function inside the setup block), or applying color to the background. The draw() block runs repeatedly and is used for animation. Save the sketch as earthquake_viz.

def setup():
    size(1200, 600);

def draw():
    background(44, 62, 80)

DOWNLOAD AND CLEAN THE DATA

Download ‚ÄúAll Earthquakes‚ÄĚ from the ‚ÄúPast Day‚ÄĚ on the USGS Earthquake Hazard Program website. It will be in csv format. Create a data folder inside the earthquake_viz sketch and save the csv as earthquakes.csv. Create a new Google Sheet and open the earthquakes.csv file. Freeze the header row and delete any rows that have empty cells in the 'mag' (earthquake magnitude) column.

IMPORT CLEANED DATA INTO SKETCH

Using Python's core library for handling csv files, include the import statement at the very top of the sketch file. Add the following with block to open the csv file.

with open("earthquakes.csv") as f:
    reader = csv.reader(f)
    header = reader.next() # Skip the header row.
        
    print header

Google Knowledge Graph Search

Recently, I built out a quick search widget using the Google Knowledge Graph Search Widget. The widget is a Javascript module that allows you to add topics to your input fields (I've limited mine to People) such as Movies, Places, etc. When a user starts typing, the widget finds a relevant match and it's rendered to the DOM.

artist-search-widget.gif

In this project, I called the KGSearchWidget() passed in a configuration object, limiting the language, type (here I chose Person) and event handler for selecting an item. In the config variable, I limit the number of results in the dropdown, the language searched, the entity type I want returned and the maximum number of characters in the description of each entity. 

var config = {
  'limit': 10,
  'languages': ['en'],
  'types': ['Person'],
  'maxDescChars': 100,
};

config['selectHandler'] = function(e) {
  console.log(e.row);

  artObject = {
    name: e.row.name,
    desc: e.row.description,
    content: e.row.json.detailedDescription.articleBody,
    url: e.row.json.detailedDescription.url,
    image: e.row.json.image.contentUrl
  }
}

KGSearchWidget(KG_API, document.getElementById("myInput"), config);