Street Mountain

Friday June 19, 17.24.46

Seen here while enjoying a cooling gelato (mix of mango, pear and passion fruit) with friends in the West Village after a successful day of Urban Scout Adventures.

A curious urban mountain or boulder of some sort. I think there’s a story behind this concrete lump, but I’m not 100% sure. It could be some sort of street furniture, or perhaps an accident that occurred while concrete was being poured and no one cleaned it up?

Street Furniture

Wednesday June 17, 15.04.24

Times Square beach, complete with tourists (as any beach should), found here.

Friday June 19, 12.10.57

Urban Lounge found near Madison Square, New York City.

This is probably old hat for current New Yorkers certainly, and something that makes visits home really interesting, these street furnishings and people zones are incredible interventions and nice experiments about alternative urban landscaping. When arriving in Times Square with my brother for a quick screech through of High POV shots, we managed to get one of these curious middle-of-the-avenue parking spots so you basically park right smack in the middle of Times Square. Which is good because you cannot drive through the square itself, only around it, because of these pedestrian urban “beaches”, complete with lawn chairs. According to one of the local business improvement district rangers or whatever they are, tourists quite like it. I wonder if locals find these useful or an annoyance to their conveyance around the city.

Tuesday June 16, 10.28.00

Saturday April 25, 10.07.27

Not quite the same, but in a different category of street furniture — the dispensed with sort.

Why do I blog this? A fascinating example of a reconfiguration of the canonical gridded city. Turning pavement into a more human, habitable space that evokes other leisures is a fantastic way to create new opportunities and to think about new sorts of design practices for urban space. This is an area that many people are curious about of course, and it is something that has attracted the attention of the laboratory quite a bit recently. For some reason, we have been thinking about new kinds of principles, rituals and scouting toolkits for finding new ways to look at the city, using these to think about new kinds of interactive urbanscapes…and not interactive in the “UX” sort of digital-y way. Playful interactions, thoughtful interactions — new rules of occupancy; new social interaction rituals.

GPX to DXF – Drawing GPS Tracks

Sunday March 29, 13.25.20

Lines and arrows and splines point the way. Taken in a parking lot near the beaches at Santa Monica.

It has not been a quiet couple of days here in the Laboratory. Lots of gear and glassware about. Goggles, bunsen burners and all that sort of thing. And the report draft was just finished with Nicolas Nova, which occupied many early mornings. We almost spilled an organic, but toxic material on the draft which cause a collective gasp, but it was pulled out of the way, just in time before irrevocable damage was done. We’re writing with ink and pen these days, which feels so much more angelic and respectful, but are, through incidents like this, reminded that such may have nostalgic integrity, but it is also quite delicate and precious.

In the midst of all that was the need to translate a GPS track from GPX format to DXF. This was harder than I thought it would be, at least after poking around the Google. There are some tools that’ll do format conversions and so forth, but they were way more expensive than I thought was reasonable, seeing as we’re not making precious objects. It’s basically a translation of one connected graph format to another.

Okay, so — it was time to think about making our own tools, which took 10 times less time than the original set of Google searches, mostly because of the recently discovered ancient treasure of a Java library our buddy Tom Carden wrote back in the Precambian of the Age of the Network — somewhere’s around 1996 or some such…

This library provides enough functionality to read a GPX track and draw it on screen. The Processing.org DXF library can spit that drawing from the screen out as a saved DXF. So, that basically solves the problem. The DXF files that come out are flat lines that can then be serviced by other software to do other things. (There also exists this Kabeja library for consuming DXF and creating DOM models, which we’ll save for another day.

My lead toward the Carden code was found here on the Processing.org forums, where I found enough of a simple code snippet to get me out and through the chiseled hole in the brick wall I had hit.

Also to note is the small comment in the small simple bit of code that can cobble together many separate GPX files (tracks from a GPS) into one larger one, which can be quite convenient.

Why do I blog this? Mostly for my own recollection and notes as to how things are done. It’s been enough time in the jungle of small, utility challenges that, when on another project inevitably in the future, some small task I need to perform smells familiar — but, why? One gets the feeling — I’ve had to do this before? What project was it? How did I do it? Playing in the geo/map-making/cartography space has all these little formats and translation steps that are a bit zany to wrangle. Jotting a post with a bit of a reminder helps. Te bigger “why do I blog this?” has to do with using real-world GPS tracks as a basis for constructing other things — the input is movement in the world, an effort to figure out how a map might look that inverted the assumptions about static geographies and fluid movement, so that the ground moved and the things that moved became static. *shrug*


import processing.dxf.*;

// Based on Tom Carden's code and GPX library available at
// http://www.processing.org/hacks/hacks:gpx
// Press "R" and your track gets saved as a DXF file which
// you can use in lots of other things..

import tomc.gpx.*;

GPX gpx;

GPXTrack track;
GPXTrackSeg trackSeg;
String trackName;

double minLat, maxLat;
double minLon, maxLon;
double minEle, maxEle;
boolean record = false;

final static int SEPARATOR = 200;
String filename, filepath;

// I collapse lots of individual GPX files into one larger file
// using the free gpsbabel.
// At the command prompt (the GUI editions don't have enough features
// to do this) you'll do something like this:

/************

/Applications/GPSBabel+-1.3.5/gpsbabel -i gpx -f 20090321.gpx 
-f 20090401.gpx -f 20090402.gpx -f 20090403.gpx 
  -x transform,wpt=trk,del 
  -x radius,distance=5,lat=34.0236,lon=-118.4319,nosort 
  -x transform,trk=wpt,del  
  -o gpx -F foo.gpx

The "-x" filters do a couple of things.
The first -x filter turns the tracks into waypoints to work around
an issue that gpsbabel has with the "radius" filter
The second -x filters the output only to points that are within a
5 mile radius of the specified lat/lon, which is useful if you want
to limit the range of data you draw.
The final -x filter turns the waypoints back into tracks, which is what we want
Finally, we output as GPX formatted data and
write the whole thing to the file called foo.gpx.dxf


*************/

void setup()
{
  // Yep, hardcoded path to the GPX file we'll process
  filepath = "/Users/julian/Desktop/GPS Tracks/foo.gpx";
  // We'll use the name of the file for our DXF output, with the ".dxf" extension added
  filename = (new File(filepath)).getName();
  size(800, 800, P2D);
  gpx = new GPX(this);

  // you can load a file or a URL evidently..
  gpx.parse(filepath);

  // Find scope of track file so we can scale our drawing
  minLat = 2000; minLon = 2000; minEle = 100000;
  maxLon = -1000; maxLat = -1000;

  println("track count "+gpx.getTrackCount());
  for(int j=0; j < gpx.getTrackCount(); j++) {
  track = gpx.getTrack(j);
  println("track size "+track.size());
  for(int k=0; k<track.size(); k++) {
     trackSeg = track.getTrackSeg(k);
     println("track seg size "+trackSeg.size());
  for (int i = 0; i < trackSeg.size(); i++)
  {

    GPXPoint pt = trackSeg.getPoint(i);
    if (pt.lat < minLat)
    {
      minLat = pt.lat;
    }
    if (pt.lon < minLon)
    {
      minLon = pt.lon;
    }
    if (pt.ele  maxLat)
    {
      maxLat = pt.lat;
    }
    if (pt.lon > maxLon)
    {
      maxLon = pt.lon;
    }
    if (pt.ele > maxEle)
    {
      maxEle = pt.ele;
    }
  }
  }
  }
println("Lat: " + minLat + " to " + maxLat);
println("Lon: " + minLon + " to " + maxLon);
println("Ele: " + minEle + " to " + maxEle);
}

boolean hasDrawn = false;

void draw()
{
  if(record == true) {
    beginRaw(DXF, filename+".dxf");
    hasDrawn = false;
  }
  if(hasDrawn == false) {
  background(255);
  //stroke(#FF0000);
  //line(0, SEPARATOR, width, SEPARATOR);

  double distance = 0;

 for(int j=0; j < gpx.getTrackCount(); j++) {
  track = gpx.getTrack(j);
  //println("track size "+track.size());
  for(int k=0; k<track.size(); k++) {
     trackSeg = track.getTrackSeg(k);
     //println("track seg size "+trackSeg.size());
       GPXPoint prevPt = trackSeg.getPoint(0);
      PVector prevPos = GetPosition(prevPt);
      for (int i = 1; i < trackSeg.size(); i++)
      {
       GPXPoint pt = trackSeg.getPoint(i);

    // Show track
    PVector pos = GetPosition(pt);
    stroke(#FF8800);
    line(prevPos.x, prevPos.y, pos.x, pos.y);
    prevPos = pos;
  }
  }
 }
  }
  if(record == true) {
    endRaw();
    record = false; // stop recording to the file
    println("done writing "+filename+".dxf");
  }
  hasDrawn = true;
}

void keyPressed() {
  if (key == 'R' || key == 'r') {
    record = true;
  }
}

PVector GetElevation(int n, GPXPoint pt)
{
  return new PVector(
      map(n, 0, trackSeg.size(), 10, width - 10),
      map((float) pt.ele, (float) minEle, (float) maxEle, SEPARATOR - 10, 10)
  );
}

PVector GetPosition(GPXPoint pt)
{
  return new PVector(
      map((float) pt.lon, (float) minLon, (float) maxLon, 10, width - 10),
      map((float) pt.lat, (float) minLat, (float) maxLat, SEPARATOR + 10, height - 10)
  );
}

Mobile Surveillance

A mobile surveillance box which Duncan spied on his ride to the studio. This area might be a gathering place for day laborers to meet prospective employers. So, the question then is has this been installed to discourage them from gathering here? Has there been crime of some sort, beyond something that this rather conservative, law-and-order part of the world would call an illegal gathering, or loitering, despite the fact that such workers would be the ones to mend one’s fence or till one’s rose garden? This object was found here.

I’m not an out-and-out anti-surveillance person. I enjoy observations, especially one’s involving image-making. When you can’t have a conversation with the man behind the curtain, or the observations are not easily accessible for review, comment, dispute, etc., something may be quite wrong, then.

There are things that should be watched closely to make the place more habitable. For example, refugee camps where rape, murder and all things horrible happen should be watched the same way citizen patriots watch the US-Mexican border..but they’re not. The politics of surveillance are often always authoritarian and about control through observation. Things can be turned about, as they often are in order to disrupt the despotic eyeball, observing through a passive, psychological influence.

This thing, a mobile surveillance platform affixed to a far corner of a 7-11 parking lot, is a preposterous, laughable evil eye. It looks almost retro and steampunk — a hand-made affair that drives the comedy of its pathetic influence. It talks to you, which adds to the carnival. It’s got a bunch of off-the-shelf motion detectors bolted to each side that, I’m guessing, detect motion, set off a timer and then belt out a canned, recorded announcement of warning…warning…you have been observed…the authorities have been notified, which sent me into tears of laughter. I felt like I was confronting a home-made RoboCop, built with whatever scraps could be found at the local Radio Shack. @kurt wondered whether you could pop on a set of tires and tow the thing off before anyone knew, which would be hysterical if only to imagine what the “home base” operator would see from their hatch-like monitoring station. Not that I’d do it, of course, but in my imagination — I’d even go through the trouble to gin up a power source so that the kit would keep running. Err…but maybe there’s a tiny man in the box, like the guys who live in small trailers at construction sites to watch over them?

Why do I blog this? A curious, irresistible assemblage of crappy DIY surveillance that just was begging to be taunted. I’m so happy it talks, I just may have to go back and interact with it/him again. It’s like an old, urban robot in this century, made of wood and with an axle for wheel-born mobility. Proto, or Neo RoboCop sort of stuff. Brilliant..it could be Interactive Art, even. Maybe a thesis project is lurking behind this, complete with a faux company website!
Continue reading Mobile Surveillance

Recto & Verso

Here a curious corner in a typical urban strip mall. First, the ubiquitous nail salon, this one in a roughly hewn, bumpy corner of Los Angeles. Immediately adjacent, not quite recto & verso, is the Live Scan “salon”, or shop of some sort for obtaining fingerprints. One side, the finger’s nails. The other side, the finger’s prints. Opportunity for synergies, herein, if not already established. Have your nails buffed & polished with a free fingerprinting? Or free nail buff with every fingerprinting? The combinations are extensive.

Why do I blog this? An observation on an urban scout mission. I find the strip mall disorienting to the Urban Scout in many ways. They’re all basically the same, with slight variations depending on where in the city you are. They all have a nail salon. Probably a donut guy. A kiosk floating in the parking lot for the locksmith. Often enough a Pay Day loan guy. Etc. Confusing places. Micro villages.
Adam Greenfield speaks more on the semantics of these things in the context of another kind of urban block, here.
Continue reading Recto & Verso