this is aaronland

the status of truth

(Dog-Eared) Airport Cities

Untitled #102

On the morning I left New York City to go to Philadelphia, last month, I went for coffee with some friends. At one point we were talking about how email itself seemed to be going the way of letter writing. That is: no one really wrote much email anymore, at least not if you excluded the one or two line grunts that we pass one another as part of the daily grind. This is the usually the point where someone says something about a new media supplanting an old one — these days it is still microblogging but I'm sure the webinar people are warming the brand-porn cannon as I write this, right Myles? — but I think it might be something else.

I think it might be the expectation that sooner or later those conversations we used to have in written form will just happen face to face. And it's the sooner or later part that's important. It's true that things like Twitter make it possible to be just dimly aware enough of what's going on in someone's life that it helps to chip away at the first 20 minutes of awful awkwardness that you always experience when you see someone after a long absence and wonder if you're ever going to be friends again but that's just the grease, so to speak, and not the wheel. What's interesting is the idea that we no longer consider it exceptional to travel across continents, or oceans, in a day or less (save for the physics involved which are doubly involved if you happen to be afraid of flying) and we have started to take for granted levels of intimacies with people far far away normally reserved for those in the same city.

There's no shortage of privilege and questionable sustainability in those last two paragraphs and in many ways is not unlike the generally repellant boosterism of futurists and airline executives. What seems different, maybe sorta kinda, is that it's an idea which is manifesting itself in a quieter way than the lifestyle adventures we've been sold in the past. I don't think I am alone in joking that San Francisco and New York have, effectively, become neighbourhoods to one another. This is especially true if you take a red-eye between the two cities and manage to sleep during the flight only to wake up on the subway inbound to Manhattan. Given how awful the buses are in San Francisco it feels easier, conceptually (or emotionally) at least, to leave the Mission and go for breakfast in Brooklyn than it does to travel to the Marina for dinner.

Like I said: A lot of privilege and deferred realities but it is a luxury that is becoming available to more and more people and it is the manner of nurturing relationships that airplanes seem to afford which fascinates me.

I don't have a good answer for why I still faff around making maps instead of finding a proper alternative to jet fuel when I came to the conclusion that, on measure and despite all its environmental short comings, plane travel is a genuinely Good Thing. If you subscribe to a particular crunchy worldview that advocates bringing people together, bridging cultural differences and fostering empathy across geography then it's hard to find anything that's done a better job of that than the airplane. I have hope, for most of the reasons I've described above, that the unquestionable homogeniety across places that plane travel has encouraged is really just a passing phase and a growing pain in the same way that I have hope (read: hand-waving) that we will figure out a viable alternative to jet fuel.

(Also, who the fuck let the hippies back in to New York with all their woolen coffee sleeves?)

In the 80s we realized that refridgerators were almost single-handedly poking irreperable holes in the ozone layer so we made better fridges. No one even deigned to suggest that we get rid of fridges because, well, yeah... just try to imagine what life would be like without a fridge. Given the choice between fridges and plane travel I would choose the former but I want to live in a world where airplanes are a good idea that still need to be done properly.

So, that's the setup for two things that happened within a day or two of one another: I made a new slippy map called Airport City and started reading Greg Lindsay's Aerotropolis.

There isn't much to say about Airport City that the about page doesn't already say: It's a slippy map made of nothing but things tagged aeroway or whose highway tag is a kind of on or off ramp in OpenStreetMap. Which is to say:

I became fascinated with the on and off ramps, in OSM, during and still following the creation of prettymaps in 2010. To see them in isolation is to see the gravitation push and pull (the wind patterns and dance moves) of the cities they make possible.

Airports seem like a natural pairing for on/off ramps since they occupy a similar function to on/off ramps despite their mechanical differences. Particularly the runways which are either overlooked entirely or forgotten in the rush of leaping in to the sky or the anticipation of returning to solid ground.

I like to look at them, rendered in isolation, and imagine them lumbering across the landscape like tankers or cargo ships at sea. Or as new pieces in a very large and very slow-moving chess game that is still looking for its arc.

Airport City is a(n ongoing) good example of how not to render map tiles. Airport City consists of two separate, layered, tilesets that span zoom levels 3 to 13. The first layer consists of the airports and highways; the second has the corresponding airport codes that are lain underneath. The rule of thumb when rendering map tiles (on your own) is: zoom levels 1-9 are easy; zoom level 10 is where things start to become hard; zoom level 16 is where things start to become impossible.

Zoom level 13, it turns out, is where things start to feel impossible. Zoom level 13 is 67 million tiles or 128GB of disk space (not to mention inodes which are the other dirty little secret of rendering map tiles). Because most of the planet is actually water I decided to use the most Flickr shapefiles, which are conveniently separated by place type, as a kind of mask when rendering tiles which really just meant generating a shell script with a call to for each bounding box.


Even then I made a series of naively optimistic mistakes despite knowing better:

But somehow it is up and running and a few days after pushing it live Tom Carden was kind enough to implement smooth panning and zooming for Polymaps and now Airport City can be set to run automatically jumping from one airport to another every 20 seconds or so. Sadly, this sort of thing still demands too much today's tablets so I'll have to buy a cheap iMac, or maybe a plug computer and a broke-ass display, in order to run it on the wall in my living room.

And since then I've been reading Greg Lindsay's (and John Kasarda's) Aerotropolis which I would recommend and which I will surely read again and to which I am generally predisposed to agree with except for the part where it presupposes a particularly grim meathook Darwinianism that I have a lot of trouble with. There is merit to the both the analysis and the arguments the book makes but it comes wrapped in no shortage of resistance is futile style inevitabilities whose core assumption is that left unchecked we are all assholes and that globalization belongs to the fastest assholes around.

I don't normally do dog-eared blog posts but since all my notes only exist (if you can call it that) somewhere inside Amazon's hive-mind and I don't trust them to have any longevity there I am including them here for posterity. There's a whole blog post about how insanely annoying Amazon makes the process of doing anything with your notes, not least of which is a working version of the Kindle for the web so that I might include sane links to passages (unlike the ones I've included below) but that's a story for another day. Anyway, all the usual caveats apply:


Now I am reading a book about seeing the world from airplanes whose first few chapters document the work of the photographer Micheal Light, whose work popped up on 20x200 recently, which is nice because the two people I went for coffee with at the beginning of this blog post are Sara and David who both work at 20x200!

(Authority Records, Future Computers and Other) Unfinished Histories

There was a time when this blog was being powered by some very brittle mod_perl code that read from a database which meant that most of time it only ever served up a HTTP 500 Server Error page. For a while I just started publishing my blog posts to that one static page, by hand. Once again I am IN THE MOTHERFUCKING SKY as I write this and starting to think that maybe I will only write blog posts from airplanes from now on. If I do I will rename my blogging tools Zeppelin in honour of Myles.

So, here I am heading home after another year at Museums and the Web. I've always felt it is a great privilege that the amazing people who attend MW tolerate (even encourage, sometimes) my swooping out of the sky every year to come and wave my arms around before dashing off again to leave them to the truly hard work of getting shit done day in and day out. This year was a lot like the first time I spoke at Museums and the Web because I was presenting an argument for which I don't have a ready solution. More specifically, there is no one solution but when you look at the landscape today and expand it out a few years out it's hard not to think that museums (which is just a short-hand for anyone working in cultural heritage or the digital humanties) are facing a problem that needs to be addressed sooner and before there is no later.

As always, being given the opportunity to speak at Museums and the Web means writing a paper first and this one was the most difficult in the four years I've spoken at MW. It was difficult because it is one of those subjects that can quickly turn in to a noodle-y shit-storm of creeping ideas and, worse, become ranty and shrill without anyone noticing. One good thing about a subject that is vexing you is the opportunity to talk to a lot of people about if only to be forced to work out what you're thinking. The need of the MW conference organizers to put together a proper website and publish selected papers in advance of the event meant that (even though I continue to be given outrageous amounts of grace time) some of my thinking didn't make it in to the final capital-P paper which was already a bit harried to start with. I am grateful to Jennifer and David that they continue to keep taking the leap of faith and letting me speak as the years go by.

I wrote my talk thinking I had a little less time to speak than I did and so I narrowed the examples down to OpenStreetMap because it's such a powerful and trumpet-blaring demonstration of what communities can get up to on their own. On the last day of the conference Fiona Romeo knocked it out of the park with her presentation on citizen scientists and historians and if I ever do this particular talk again I will be all over the stuff she talked about. Even if you don't bother reading the rest of this blog post, just go read Fiona's paper.

This is what I said:

Hi, my name is Aaron. I am from the Internet. These days I work with Stamen Design, in San Francisco. We are a design and technology studio and so my official title is Design Technologist. It’s not a title that I’ve ever really warmed up to but it just means that we value working code and real live data over mock up and high-minded concept pieces. Before that I spent five years helping to nurture the 800-pound baby most people know as Flickr. I am also on the advisory board for the Built Works Registry, which is an IMLS funded project to create a registry of architectural works that plays nicely with both scholars and the Internet at large.

Most importantly though, I am the co-director of revolution technologies, along with Seb Chan, for the Spinny Bar Historical Society! The Society was born at Museums and the Web in 2009 or 2010 depending on how you’re counting. This year, we have stickers!

This is a session about linked data which is, by and large, a technical subject. I am not going to talk about the technical parts even though I could spend hours doing so. I’m here for the whole conference so please come find me if you’d like to talk about the plumbing.

Instead I’d like to approach the subject from a bit of a sideways angle and start with something I said at last year’s Museums and the Web. I was doing a talk about the Galleries project at Flickr and the larger trend which could be described as a nascent curatorial muscle that more and more people, across all walks of life, were discovering.

At the time it seemed like a bit of a funny-ha-ha throwaway comment but it’s stuck with me ever since. What I said was this:

If you, as curators and archivists and generally anyone involved in the preservation of promotion of cultural heritage, think that the authority record is the pinnacle of your careers – that is, the most important thing you will leave behind – then you are about to be eaten by robots.

A year later I would still say the same thing but differently. What I will say instead is that the single most important – and most interesting – question facing anyone who self identifies with the humanities or the arts is what to do about communities of amateurs and enthusiasts.

What does that mean?

The good news is that it means you have a lot of people who are eager to help you in the process of recording and classifying and describing the works, whether it’s a painting or a building or an idea, that make up the histories we tell ourselves.

The bad news, if you look at that way, is that it means they’re going to help you whether or not you want them to.

In the absence of any other means to participate people can and will just do it themselves.

They will self-organize. This is what the Internet has taught us. That it is the fastest cheapest bridge we’ve ever seen for collapsing the barriers of collecting, vetting and redistributing data.

Eventually, if a project gets off the ground (not all do) it will exist not just as an alternative to yours but in opposition to it. Once that happens any mistakes they make will be treated as badges of honour. And they will make mistakes, many of them the same mistakes you’ve made over the years and wouldn’t wish on your worst enemies. But they will also fix them. And in fixing them they will celebrate their resilience and their ability to nurture a collaborative project that can survive those mistakes.

Normally, the poster child for the argument I am making is Wikipedia but I’d like to look at the OpenStreetMap, or OSM, project instead. OSM was born of not quite the frustrations I’ve been describing but they are still a good example of what I’m talking about.

Six, maybe seven, years ago OSM did not exist. At the time the only comprehensive geographic data available in the UK was what the Ordinance Survey had collected but then re- licensed under prohibitive terms despite being a crown, or public, corporation.

OSM started with the premise that if I mapped my neighbourhood and you mapped your neighbourhood and we combined our efforts then we would each have a better map. Not only that but they settled on what seems like the single most absurd way of collecting metadata: Simple, free-form key-value tag pairs governed only by consensus.

If you’re shaking your head over that idea, it’s okay. Everyone did. But now, six years later OSM has a map whose quality matches and exceeds those same maps produced by the Ordinance Survey.

In addition OSM now produces the authoritative maps for parts of the world that have otherwise been neglected because there was neither the time nor the financial incentive to map them. Haiti is the most recent example and OSM is responsible for producing the maps of the country that both the UN and World Bank use on a daily basis.

I mentioned that I am on the advisory board for the Built Works Registry. We had our first meeting last January in New York City. I was asked to do a short presentation about what’s going on in geo on the Internet and so, at 06H45 that morning, I added the ARTstor offices, where we were meeting, to OSM.

I did this partly for dramatic effect but also to show that OSM was just one of many parallel registries – of authoritative, linked data – that already existed.

When I showed this slide, James Shulman who is the president of ARTstor said: ...[W]hat seems like a fairly bland, renovated townhouse on the upper east side, now housing ARTstor and another non-profit was originally her townhouse, and the best legend about the house that I've heard was that she commissioned Jackson Pollock to create a mural for the 4th floor. But when he finished it, it was a foot too long to fit on the wall and so she ended up giving it away ( I can't testify to whether this is true or not, but it's a good story about the place...

I have yet to tell that story to a single person who hasn’t thought that was reason enough for the building to be included in a built works registry. That’s just one building in a city where most of its history has happened behind the walls of equally uninteresting buildings.

Did you know that there are 26 million buildings listed in OpenStreetMap, alone?

This is not one of those buildings, by the way. I had hoped to have a browsable index of all those buildings and all their metadata but life and time got in the way. This is a similar index I made, last year, of the 5 million Where On Earth IDs that make up the Yahoo! GeoPlanet database.

26 million authority records for buildings all over the entire world. Many of those records are probably incomplete but at the very least they all have accurate geolocation information. Some of those records that do have names and other attributes may be incorrect but I’d argue that the principle reason this is the case is because people don’t have good ways to fix them. It's more a question of tools than of motivation.

The OSM community knows full well that the tools that have gotten them this far need help in order for the project to grow but this is the challenge. I’m not here trying to sell you a box package solution. I’m not here to get any of you to sign a contract. I am here to suggest that this the work we need to face in the years to come because the unit of measure for whether or not something is important is no longer dictated by the cost of inclusion.

And to prove that point, here’s the very bad news. It’s not just communities of amateurs that are nipping at your heels. It’s Google and Facebook. The only question in my mind is when, not if, other companies like Amazon start to get involved too.

I should start by saying that I don’t know anyone at Facebook and so what I’m going to propose is a kind of speculative fiction but I think it’s a useful, if only as a warning sign, to stop and consider their OpenGraph initiative as a low-intensity long-term battle with Wikipedia to build a better a dictionary and to become the arbiter of truth for ideas.

The OpenGraph initiative is essentially a re-introduction of <meta> tags for authors to self- describe the content in their webpages. What’s ingenious about the OpenGraph initiative is that it is paired with the even more ubiquitous Like button which means that Facebook has, for all intents and purposes, built social page-rank. When anyone actually clicks on a Like button Facebook knows not only what page is being liked – along with all the metadata in the page – but they also know *who* is pressing the button. When you combine that information with their insanely terrifying but thorough social graph you're essentially turning every webpage on the Internet in to an authority record.

And it’s probably not a mistake that it looks and feels like Google’s page-rank algorithm. If Facebook is just being quiet and deliberate and creepy about the process, Google has in the last year or so pointed its laser-eyes squarely at the digital humanities.

Google has never wavered from their goal of being an information retrieval company because “information retrieval” is just a benign way of saying “everything”. If every natural language researcher on the planet uses Wikipedia as its training set Google was clever enough to realize that they could do what Facebook is trying to do by building a suite of tools – often very good tools – and treat the entire Internet as their training set for teaching robots how to interpret meaning and assign value.

Which sounds pretty awful, doesn't it?

This is more or less what I’ve been describing and, lest you get the wrong idea, it’s not a scenario that I’m particularly happy about.

There’s no guarantee that it will happen this way. It requires not only that you, collectively, stumble but that these other communities actively succeed. But there are enough signs rumbling down the horizon that it’s not simply crazy-talk. It’s something to consider.

What I am suggesting though is that you turn some of those relationships around in a way that benefits everyone.

Your best defense against being over-run by the likes of Google, or whoever comes after them, is to embrace all those people who are out there waiting to help you. It may seem as though I am suggesting you adopt the tyranny of the commons as a strategy but this kind of (hopefully) mass participation is no longer where the flattening of meaning and importance will happen.

This is a screenshot of Microsoft's Streetside Photos application integrated with Flickr photos.

The common way of reading this image is that the foreground image celebrates the little person and their contribution to meaning in the face of common and pedestrian understanding represented by single unbroken view point of the background image.

This may be true but what if we turn this idea on its head and say: This is actually your opportunity.

Remember when I said no more complicated than a catalog listing ? Intuitively I think we all know that it is more complicated than that. That there is nuance and disagreement to the works we collect and study. So instead of being the background that photo there in the center represents your work and years of study and your ideas and most importantly your disputes.

Dispute is notoriously difficult to codify, especially in a database, but one of its most important functions is to shine a light on two or more opposing views so that might better see the context in which those ideas exist. I am not suggesting that we do away with structured metadata but this is not necessarily where all of your time is most needed today. You have the gift of magic that no robot will ever have: We call it language and story-telling and these are the things that you are good at.

So, if you are the center photograph what about the background? The background are the communities of enthusiasts and this is what has changed: They are never going away again.

The days of the proverbial white walls of the gallery that your photo (the one in the center) used to hang on in glorious isolation are over. This is the new world or more likely it's the world that always existed but has finally found a way to give itself a form that can not be ignored.

I also don’t want to leave you with the idea that you add to your already too busy lives by saying that every single new authority record created by an enthusiast need be vetted by you or your colleagues.

I am saying that by encouraging documentary efforts outside the scope of the contemporary zeitgeist we create a zone of safekeeping for historical records and their stories for a time when we are ready to reconsider them.

I am saying that all those works not yet deemed worthy of a scholar’s attention still have value to people and their inclusion within a larger body of work is an important and powerful gesture for encouraging participation. Consider the authority record as a kind of gateway drug to scholarship.

Equally, a registry made of many voices offers a history of the effort that went in to creating those records. It can serve as a forum that promotes consensus around a work but also tracks the ebb and flow of the debate. This process of documenting and moderating that debate, and of crafting tools that can be used by experts and amateurs alike, is what Wikipedia’s history offers.

This is a piece that was part of the New Museum’s New Show, in New York City. I found much of the show problematic and this piece especially so.

It’s a ten-foot tall green screen. Green screens – or more accurately chroma key screens – are used in the film and television. The blurb on the wall was some pretty breathless text talking about deconstructed realities and and questions of authenticity but what really floored me was when I discovered that they had printed the piece out on an ink-jet printer.

Who knew you could print green screens in an ink jet printer? You could do this at home. You could do this at home and go out and paste them around the city. Imagine the fun you could have if you lined 5th Avenue, in New York, with green screens and told people.

Besides being a kind of playful tool for exploration wouldn’t that also be a more interesting way to talk about the issues raised by chroma keys?

This is hardly a direct analog to what I’ve been talking about today but I want to leave you with the story so that you think about what the equivalent ink-jet printer is for authority records.

Authority records aren't going away, nor should they, but out of necessity they squeeze most of the life out of the stories and the context that surround that which is being classified.

So what I am suggesting is that you start to investigate ways to use the authority record as a means for inviting communities of enthusiasts in to your process.

Not only would this create an avenue for participation but it can open up the space for you to better use your knowledge and understanding to provide a kind of "bias knob" for those works you do consider important and to breath life back in to them using the magic of language and story-telling. To help situate them in the wildflower garden of history.

Thanks for listening. This is a difficult subject to talk about without either getting ranty or painting everything with an even broader brush than I already have and there are lots of influences and rabbit holes that I chased while preparing for this presentation that were left out for one reason or another.

If you’re curious, I’ve been keeping a list of bookmarks over here and I would encourage you to take a look.

Thanks again!


So, all but a year ago I went to Museums and the Web and did a workshop about machine tags. In the working code part of things I spent a lot of time describing how Flickr shoe-horned support for complex machine tag queries in to Vespa, the internal document index at Yahoo. Vespa looks and feels a lot like Solr so I outlined how you'd go about implementing it there. I also spent time explaining how we (finally) managed to implement machine tag hierarchies but noted that we had to go back to using MySQL because there was no way to support both complex queries and hierarchies in the same index.

As I write this I am sitting on red-eye, full of people farting and doing yoga in the aisles, heading back to Museums and the Web and poking at the newly released Solr 3.1. Looking over the sample schema file I discovered the addition of a path hierarchy tokenizer field type and idly wondered...what if.

The answer is yes!

From - Sat Apr 02 01:51:22 2011
Date: Sat, 02 Apr 2011 01:51:18 -0700
From: Aaron Straup Cope
MIME-Version: 1.0
To: [redacted]
Subject: ask and you shall receive
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

So, it's a ways from being done and a long way from being complete but:

47 ->curl 'http://localhost:8985/solr/flickr/select?q=*:*&indent=on'

<?xml version="1.0" encoding="UTF-8"?>
<result name="response" numFound="2" start="0">
     <int name="accuracy">16</int>
     <str name="details">{"farm": 6, "secret": "c88b65daab", "server":
"5289", "ownername": "Drewber66", "title": ""}</str>
     <int name="license">0</int>
     <str name="location">43.643822,-79.51661</str>
     <long name="photo_id">5310424703</long>
     <str name="photo_owner">48825531@N03</str>
     <str name="place">Canada/CA/ON/Etobicoke/Sunnylea</str>
     <arr name="tags"><str/></arr>
     <str name="timezone">America/Toronto</str>
     <arr name="woeids"><int>55855779</int><int>479</int><int>2344922</int>
     <int name="accuracy">13</int>
     <str name="details">{"farm": 6, "secret": "575a3b5fe9", "server":
"5202", "ownername": "MtHoodMeadows", "title": "Sunny Day"}</str>
     <int name="license">0</int>
     <str name="location">45.367313,-121.697745</str>
     <long name="photo_id">5310415361</long>
     <str name="photo_owner">37366645@N02</str>
     <str name="place">United States/Oregon/Hood River County</str>
     <arr name="tags"><str>snow</str><str>ski</str><str>oregon</str>
     <str name="timezone">America/Los_Angeles</str>
     <arr name="woeids"><int>2347596</int><int>23424977</int></arr>


What's interesting is the "place" field, tokenized as a path hierarchy (so is
timezone) which is a new thing in Solr 3.1:

Which means you can suddenly do shit like this:

50 ->curl 'http://localhost:8985/solr/flickr/select?q=place:*Etobicoke&indent=on'

<?xml version="1.0" encoding="UTF-8"?>
<result name="response" numFound="1" start="0">
     <int name="accuracy">16</int>
     <str name="details">{"farm": 6, "secret": "c88b65daab", "server":
"5289", "ownername": "Drewber66", "title": ""}</str>
     <int name="license">0</int>
     <str name="location">43.643822,-79.51661</str>
     <long name="photo_id">5310424703</long>
     <str name="photo_owner">48825531@N03</str>
     <str name="place">Canada/CA/ON/Etobicoke/Sunnylea</str>
     <arr name="tags"><str/></arr>
     <str name="timezone">America/Toronto</str>
     <arr name="woeids"><int>55855779</int><int>479</int><int>2344922</int>


Which means — I'm pretty sure — you can suddenly do *both* machine tags and machine tag 
hierachies in Solr:

54 ->curl 'http://localhost:8985/solr/flickr/select?q=*:*&indent=on&facet=on&facet.field=place&rows=0'

<?xml version="1.0" encoding="UTF-8"?>
<result name="response" numFound="2" start="0"/>
<lst name="facet_counts">
   <lst name="facet_queries"/>
   <lst name="facet_fields">
     <lst name="place">
       <int name="Canada">1</int>
       <int name="Canada/CA">1</int>
       <int name="Canada/CA/ON">1</int>
       <int name="Canada/CA/ON/Etobicoke">1</int>
       <int name="Canada/CA/ON/Etobicoke/Sunnylea">1</int>
       <int name="United States">1</int>
       <int name="United States/Oregon">1</int>
       <int name="United States/Oregon/Hood River County">1</int>
   <lst name="facet_dates"/>
   <lst name="facet_ranges"/>


And yes, it works with more than two records:

66 ->curl 'http://localhost:8985/solr/flickr/select?q=*:*&indent=on&facet=on&facet.field=place&rows=0'

<?xml version="1.0" encoding="UTF-8"?>

<result name="response" numFound="100" start="0"/>
<lst name="facet_counts">
   <lst name="facet_queries"/>
   <lst name="facet_fields">
     <lst name="place">
       <int name="United States">73</int>
       <int name="United States/US">24</int>
       <int name="United States/Texas">17</int>
       <int name="United States/Texas/Plano">17</int>
       <int name="United States/Oregon">10</int>
       <int name="United States/Oregon/Hood River County">10</int>
       <int name="United States/Indiana">7</int>
       <int name="Canada">5</int>
       <int name="United States/US/MA">5</int>
       <int name="United States/Indiana/Indianapolis">4</int>
       <int name="United States/Pennsylvania">4</int>
       <int name="United States/Pennsylvania/Philadelphia">4</int>
       <!-- and so on -->

Which is kind of god damn hot. Also, I AM IN THE MOTHERFUCKING SKY.