tecznotes

Michal Migurski's notebook, listening post, and soapbox. Subscribe to this blog. Check out the rest of my site as well.

Apr 25, 2012 3:25pm

polygonize it

If you need to make a bag of polygons from a selection of OpenStreetMap data, you would think that simply running shapely.ops.polygonize on the selection of linestrings is enough. In fact, polygonize needs for the line endings to coincide, and may not work as you would expect with OSM data. I scratched my head over this a bit after successfully using polygonize to handle TIGER data, until it occurred to me that TIGER is built to have lots and lot of little lines.

The trick is to split each linestring input to polygonize() into all its constituent segments, and then let the function do the reassembly work for you. Creating the polygons of Amsterdam above from metropolitan extract roads took just a few seconds. Here’s the polygonize.py script that does it, expecting GeoJSON input and producing GeoJSON output.

Apr 15, 2012 10:54pm

hachures

Hachures are an old way of representing relief on a map. They usually look a bit like this, and they’re usually hand-drawn:

I’ve been playing some some simple algorithmic ways to generate hachure patterns with input elevation data.

They’re rather New Aesthetic, with the regular-spaced grid based this pattern that encodes slope and aspect together:

You can align the marks with the slope, or across it (as with contour lines). The latter results in some pretty blocky-looking hills; my feelings about these are mixed:

I especially enjoy the smooth appearance of hills in San Francisco using the orientation along the slope. Things get even more interesting when minimal labels are added on top:

Also, good things happen at relative-low zoom levels, where the relative size of hills and marks gives everything a spiny, written-on appearance:

Have a look through a collection of renders for more examples.

Apr 8, 2012 11:02pm

chicago-bound

Next weekend, I’m heading to Chicago to spend a week volunteering for the Obama 2012 campaign’s tech team. I’m very excited; it should be a fairly high pressure environment and I hope to have a number of opportunities to bring a bit of API design and basemap cartography love from San Francisco.

This election feels intuitively like the one that matters, the one where we prove that the past four years weren’t just a reactionary fluke. We had a round of flowers and sunshine last time around, but the President wasn’t running on much of a record. In 2012, he’s been in office for a full term, and a lot of people who were hoping to see a 180° turnaround from the Bush years were disappointed to discover that ours is a rough political landscape to navigate. Given the circumstances, I think Obama’s done a great job. Given the risk that supporters from 2008 might not be so excited this time around, I’m putting in extra energy to help assure that we can push this not-at-all-guaranteed election over the hump.

If you’re local to San Francisco and want to help, Catherine and Angus at the SF technology field office in SOMA are looking for your help.

Apr 3, 2012 11:11pm

maps.stamen.com

We launched a thing last week. It was fairly well-received by people on the internet. A few people at Stamen who don’t normally write on the company blog wrote on the company blog: Zach talked about the blur/noise process behind the watercolor tiles, Geraldine explained all the work that went into the textures, and Jeff showed off some of his work logging tile usage on the site. I recapped a lot of my background work on Terrain, and then Cups And Cakes Bakery went and made it into cupcakes.

Paul Smith, who taught me how to install Mapnik a long time ago, did an interview with me about maps while slacking off from his day job. In it, I wrote a bunch of things that I think are interesting about online maps, which is a good thing because today I didn’t feel well and bailed on my Where 2.0 talk. Sorry about that—you didn’t miss anything, I was really unhappy with the talk I had prepared, which probably contributed to my morning.

Here are pictures:

Mar 19, 2012 1:00am

tinkering with webgl

With some help from Ryan and Tom, I’ve been wrapping my pea-sized brain around WebGL. I’m doing my usual start-from-the-bottom thing so it’s been a great exercise in understanding a programming paradigm built around static lists and buffers. I’ve worked like this before, but not extensively and not with a render output this smoking fast.

It’s all simple stuff so far, but I’m chasing two ideas: using WebGL for simple 2D output with an added speed bump, and driving it from SVG or the HTML DOM. None of the examples below will work unless you’re using a current WebGL-compliant browser, which for me was Chrome 17.

The elephant is me figuring out the basics of viewport transformations that match pixel positions, image textures, and simple animation passed via vertex buffers:

The monkey is a test to see how many things I can throw around on a screen without sacrificing framerate, as well as some sanity checks on coding style. Turns out, the answer is “lots”. Interesting things happen with this one when you switch to and from its tab; I’m using a basic timeout-based mechanism for the little face particles, and it clearly falls into a regular rhythm.

The unicode patterns (borrowed from Sarah Nahm) are governed by an invisible D3 force layout, and are a test of synchronization between multiple “programs” and driving a visual effect from a geometric layout. Also additive blending for punchiness. Try dragging the boxes:

These are some of the resources I’ve been using to get up to speed:

I’m still not totally comfortable with the programming approach of maintaining collections of static lists in preference to objects and other data structures, and I’ve been avoiding three.js until I can get comfortable with how WebGL works for simple, two-dimensional graphics. No lighting effects or spinny statues quite yet.

Mar 11, 2012 11:39am

county papers

I’ve been playing with ways to represent U.S. OSM involvement at the county level. This is in part spurred by some of Thea Aldrich’s work since the last State Of The Map U.S. as well as by Martijn Van Exel’s Temperature of local OpenStreetMap Communities. The county-equivalent is a basic unit of administrative power, a common baseline for Census demographic statistics, often home to GIS professionals, and guaranteed to cover any given piece of land in the United States. It’s a great way to divide a dataset like OpenStreetMap, so I’ve started to experiment with useful print representations of counties for looking at map coverage.

(PDF download, 21MB)

The visual design is rather primitive so far, with just three maps on a single tabloid printout as a quick test. At top is a basic representation of OSM coverage, a sort of “what do we know” for streets. Next is a map of TIGER/Line status, highlighting streets which remain untouched since their initial import in 2007 and probably overdue for review. Finally, a map showing recently-edited streets, which looks a little more interesting the Austin, Texas render. Each is rendered using Mapnik and Cairo’s PDF output from a recent OSM Planet extract.

There are intentional echoes of Newspaper Club’s Data.gov.uk Newspaper here.

My afternoon test prints suggest a few things:

  • Printers have a very hard time with fine linework, so I’m switching to halftones for the smaller maps.
  • I need to get many more layers of information in there, including buildings, parks, points of interest, etc.
  • Maps will look better when printed large.
  • I should do a newspaper run like Grassroots Mapping did recently, the output looks great:

Code can be found in Github under CountyOSM. You are not expected to understand it.

Mar 9, 2012 9:16am

“nice problem to have”

A mail from OSM Board member Richard Fairhurst, to the OSM-Talk mailing list about Apple’s recent use of our data, with links added for posterity:

  • 3500 tiles per second. Seriously. In Grant’s words on Twitter: “Massive jump in #OpenStreetMap traffic due 2 Apple news: t.co/nB4ffgYy Fighting fires 2 keep systems up”

  • switch2osm.org fell over. Yep, so many people wanting to find out about switching to OpenStreetMap that WordPress crapped itself (ok, not the hardest target but hey ;) ).

  • More contributors. We’ve had people come into IRC saying “I want to fix this park name, how do I do it?”. Regular IRCers have been reporting a noticeably greater number of new editors in their areas. Or as someone just asked on IRC: “hmm did the apple fanbois drink the OSM koolaid and crash our servers with zealous mapping?”

  • I think we’ve had a higher peak of publicity today than we’ve ever had —higher than the Foursquare switch even, or the Google vandalism incident. We’ve been Slashdotted; we’re #6 on Hacker News. We’ve been on The Verge, Forbes, Wired, Ars, Gizmodo, and all the Mac sites—that’s taking OSM to people who’ve not heard of us before. We might not be the front page of the New York Times yet, but we’re getting there!

  • And one of the best things has been that people like how we’ve handled it. From Forbes: “OpenStreetMap itself has been much more polite about the whole thing. ‘It’s really positive for us,’ OSM founder Steve Coast told Talking Points Memo, ‘It’s great to see more people in the industry using OSM. We do have concerns that there wasn’t attribution.’.”

    From a comment at Hacker News: “While I think it’s quite messed up that a company as rich as Apple can’t abide putting credits for people who have put some really good work in (I’ve even made small updates to OSM in my time) I do think that this is a very classy move by the OSM people, no ranting blog post or ‘Apple stole our stuff’, welcoming people presents a much better image of the project.”

    Or The Verge: “Granted, OSM took this as an opportunity to get in the public eye by piggybacking on the iPad’s media fanfare; I applaud them for their maturity in their statement though. Many companies would’ve latched onto this and unleashed the lawyers threatening this and that, but they chose to be civil, point out the missing attributions, and say they are ‘we look forward to working with Apple to get that on there.’ A little civility goes a long way (in my book). I’m quite sick of the mudslinging in this space.”

  • Thanks to everyone who’s put the hours in today, to all the coders and sysadmins who sweat blood to not only keep OSM running but make it easier and faster... and to every single mapper making a map so amazing that everyone wants to use it.

cheers
Richard

Mar 5, 2012 11:49pm

2sleep1

I am kinda losing my mind over this hour-plus ambient audio/video construction by Goto80 and Raquel Meyers:

Press play, go fullscreen and lie down. 2SLEEP1 is a 66-minute playlist of audiovisual performances in text mode, designed to make you fall asleep. Made by Raquel Meyers and Goto80.

The first and fourth tracks are especially genius.

Mar 3, 2012 5:41pm

bandwidth

Webkit size profiles of a few sites I visit, ordered from smallest to largest.

Metafilter: 0.2MB

Metafilter’s front page is probably my most-visited and most-interesting thing. It’s a wall of solid text and not a lot of images. Still, the volume of actual content is smaller than the volume of javascript, which itself is about 80% jQuery (minified). It’s not immediately clear to me what jQuery is doing for Metafilter.

Google Homepage: 0.5MB

I don’t actually visit Google.com much and I typically have Javascript suppressed for the domain when I do, but the default experience looks like this: half a megabyte, 60% of which is a single .js file clocking in at 300KB.

OpenStreetMap: 0.64MB

The bulk of OSM’s Javascript use is taken up by OpenLayers, an epic bandwidth hog coming in at 437KB minified. You can build custom, minified versions of OpenLayers with just the features you want; I’ve never successfully gotten one below 250KB. Based on my experience with Modest Maps, I think it should be possible to get the core functionality of OpenLayers across in 100KB, tops. The next 100KB of Javascript on this site is a minified archive of Sizzle and jQuery. The remaining 16% of the bandwidth for this page is the visible map and all other content.

New York Times: 0.76MB

The Times is a toss-up depending on when you’re looking at it; I just reloaded and saw the overall size jump to 1.4MB, then reloaded again and saw it drop to 0.5MB. It’s the front page of a major paper, so the ratio of actual content (text and images) to code and stylesheets looks to be in the 2 or 3 to one range, which is decent.

Github, My User Page: 0.99MB

I spend an inordinate amount of time on Github these days. It’s balanced heavily toward code and stylesheets, with about a three-to-one ratio of framework to content. Github’s Kyle Neath has an excellent presentation on responsive web design where he shows how despite the heavy load of Javascript and CSS used in Github’s interface, the all-important “time to usable” metric is still pretty fast for them. He contrasts this to Twitter, which… ugh, more on them below.

My Home Page: 1.1MB

Here’s me; essentially 100% Actual Content, mostly images. I switched to big, stretchy images a little while back, and I’ve gotten more free with the sizes of things I post.

The Awl: 1.36MB

Page sizes take a sharp upward tick here. Most of The Awl is Javascript, though it appears to be largely custom with the usual slug of jQuery sitting in the middle. A majority comes from widgetserver.com and ytimg.com, so I’m going to guess it’s lightboxes and ad server junk.

The Verge: 7.4MB

Lots and lots of pictures. So many that after a minute or two, I wondered whether something had gone wrong with my network connectivity. Below all the images, there is 300KB of minified jQuery, thanks to the inclusion of jQuery UI. Also, 244KB of fonts which in Safari prevents any text from loading until this item is done.

A Single Tweet: 2.0MB

Twitter allows you send 140 characters in a tweet, which (when you add entities, hashtags, and all that) ends up in the 4KB range as represented in the JSON API. 140 is what you see, so I’m going to go out on a limb and suggest that a single tweet page on Twitter has about a 15,000-to-one ratio of garbage to content.

I get links to tweets by mail, etc. on a regular basis, and the aggressive anti-performance and apparent contempt for the web by Twitter’s designers is probably the thing that gets me most irrationally riled-up on a daily basis. How does this pass design review? Who looks at a page this massive, this typically broken and says “go with it”?

It’s mind-boggling to me that with the high overlap between web developers/designers and iPhone users on AT&T’s network, there isn’t more and smarter attention paid to the sizes of the things we’re slinging around the network. The worst sins of the Flash years are coming back with a vengeance, in the form of CSS Frameworks and the magic dollar sign. There has seriously got to be a better way to do this.

Feb 26, 2012 2:57pm

tile drawer: grist for the mill

Last week, I finished up my four-part class at GAFFTA on visualizing and mapping data. For day three, I chose Mapbox’s TileMill to teach basic cartographic techniques such as choropleths and managing data from OpenStreetMap. I’d never really used TileMill in anger, and teaching the class was an excellent opportunity to apply experience with Mapnik and Cascadenik to a tool built for normal humans to use. I can report that TileMill is a champ. It’s not often that advanced nerd tools are adapted for civilian use, and the group at Development Seed have done an amazing job of packaging the Mapnik experience into a credible desktop application for easy cartography.

Meanwhile, Tile Drawer is now over two years old, and the stars are aligning for a revisit. I’ve substantially updated and modified Tile Drawer for the end times, and I’ve been retooling the creation process to address two questions that TileMill raises: how do you get data from OpenStreetMap in to begin with, and then what do you do with your tiles when you’re done? MapBox answers the second question with their various hosting plans, but what if you want to serve maps for areas larger than a single MBTiles files can handle or you simply want to be ready for the kinds of futures envisioned by Maciej Cegłowski or Aaron Cope?

I’ve been slowly and quietly answering the first question by building up shapefile exports for my Metropolitan Extracts service, and I’m happy to announce that it now includes Imposm and Osm2pgsql shapefiles for every extracted area. Oliver Tonnhofer’s Imposm is particularly well-suited to use in Tilemill, with its thematic division of OSM data into thematic layers.

If you want to use OSM data in Tilemill, and you’re interested in one of the 130+ extended metropolitan areas I’ve been supporting in the Metro Extracts, then you should be good to go with the zip files available there.

Now, about that second question.

I’ve generated collections of data in specially-named shapefiles for four sample metro areas:

If you use these files with their names unchanged in TileMill and supply a zip file of your exported Mapnik 2.0 XML stylesheet to Tile Drawer, it will be able to figure out what PostGIS tables you might mean and render a map accordingly. If you want a map layer for all of Texas, it would probably take too long to render the entire set of tiles using TileMill and too long to upload it all to MapBox. Instead, you can start with a sample city above, create a custom cartographic treatment in TileMill, and then provide Tile Drawer with a bounding box for the entire state and a copy of your stylesheet. I’ll be documenting this process on the site soon for more information.

Looping back around, Tile Drawer is useful for TileMill even if you plan to use Mapbox for hosting. One of the last things that Tile Drawer does after importing a data extract is to generate the same collection of Osm2pgsql and Imposm shapefiles available in the sample selections above, so you can prepare data for your own use by setting up an instance of Tile Drawer, waiting for it to finish importing data from OpenStreetMap, and then downloading one of the osm-shapefiles zip files found in /usr/local/tiledrawer/progress.

Jan 8, 2012 9:27pm

take my class at gaffta next month

I’ll be teaching a four-day class at the Gray Area Foundation For The Arts next month, Visualizing and Mapping Data. It’ll be a four-parter, Tuesday and Thursday evenings at GAFFTA’s San Francisco space. I’ll be covering mapping from both a browser and server perspective, focusing the presentation of data.

Go sign up!

Here’s an early draft of my class notes; these will change but not substantially:

This four-day workshop will follow the lifecycle of data, from its raw collection to preparation and presentation for the web. We’ll explore where geographic data originates, how it’s transformed to work online, how to see it flow and move, and finally how to publish a view into that data to the web with simple browser-based tools. We’ll work with data from Twitter and OpenStreetMap, push it through filters and viewers, and publish it to the open web.

This class will cover both browser-side Javascript code and server-side Python code.

Week One: Foregrounds

Meeting 1: Getting dots on maps

We’ll be working with street-level data for the duration of the class, so we’ll start here with some introductory concepts like interactive slippy maps and image tiles. We’ll take Google Maps apart into its component pieces to see how they work, add a selection of point-based data to a map, and finish up with a working example using freely-available Javascript mapping tools.

Meeting 2: Where data comes from

Data can come from all kinds of sources, and frequently it needs to be processed, cleaned, and prepared for use on the web. Become self-sufficient in making location data useful to others. We’ll look at local data sources like 311 calls, addresses, and demographic information and run them through a variety of tools to make them ready for online publishing.

Week Two: Backgrounds

Meeting 3: Choosing your own background

Commonly-available road maps designed for displaying driving directions or finding business addresses don’t always work in combination with arbitrary or complex data. We’ll look at alternate sources of street-level cartography and talk about the ways each might be appropriate to different data sets. We’ll finish up with a dive into the OpenStreetMap data set and the process of designing your own custom cartography.

Meeting 4: Spatial data

Dots on maps are just one of many ways to display data. Heat maps, for example, can be used to show characteristics of large areas of data such as zip codes or census tracts using color. We’ll look at ways to prepare heat map layers and integrate them with our other maps, and finish up with advanced topics like aerial photographs and raster data.

Jan 8, 2012 1:08am

new webgl nokia maps: progress

I’ve been kicking some files from the new Nokia 3D WebGL maps back and forth with Ryan Alexander, and my attempts to pick out the geometry are starting to get some results.

Nokia’s texture files:

My points in those same files—a visual match!

Dumping a bunch of X, Y, Z’s into Mac OS X Grapher.app:

Ryan pushing the whole thing into Blender:

This model is actually two meshes, corresponding to two separate textures:

The first one looks a bit like a post-Tornado city. Now to figure out the mipmaps in the height lookup tables.

Jan 5, 2012 4:25pm

new webgl nokia maps

Nokia’s new 3D WebGL maps are done very nicely. Here’s my house:

Here’s the zoom=16 texture JPEG for the are around my house:

And here are parts of the raw geometry for the same area. I'm thinking to do as Brandon Jones did and figure out the file format here, since I can already see obvious signs of four-byte floating point values:

00000000  4e334d34 01000000 01000000 28000000  N3M4........(...
00000010  97160000 f4c30100 82120000 00000000  ................
00000020  84330200 a0330200 00d01345 0040f644  .3...3.....E.@.D
00000030  003f3947 00001745 00c02845 00572f47  .?9G...E..(E.W/G
00000040  00a03045 0068e245 006e3947 9e080545  ..0E.h.E.n9G...E
00000050  1a920346 66f33447 00501745 00003442  ...Ff.4G.P.E..4B
00000060  00a93247 00901645 00003442 00b83447  ..2G...E..4B..4G
00000070  00602145 00003442 00164147 00e00a45  .`!E..4B..AG...E
00000080  00c8e845 00272947 00801645 0070f545  ...E.')G...E.p.E
00000090  00994347 00a01245 00982846 004d3547  ..CG...E..(F.M5G
000000a0  00102245 00e43346 00874447 00300c45  .."E..3F..DG.0.E
000000b0  00587346 00fd3047 00c0fc44 00cc7746  .XsF..0G...D..wF

...

00010f20  68cb1f47 07d54c44 89405f47 d4853f47  h..G..LD.@_G..?G
00010f30  42035044 5c405f47 31405f47 b9e8383e  B.PD\@_G1@_G..8>
00010f40  aff0ae3e d4b0533e b0caaf3e c40c443e  ...>..S>...>..D>
00010f50  c944c93e 3003523e 9ee0cd3e c568453e  .D.>0.R>...>.hE>
00010f60  a37ea33e c02c403e a412a43e a1c4203e  .~.>.,@>...>.. >
00010f70  a88aa73e eed86d3e c6bac53e ac8c2b3e  ...>..m>...>..+>
00010f80  cf28cf3e d658563e dac6d93e b140313e  .(.>.XV>...>.@1>
00010f90  e2a4e13e ecd06b3e f068f03e f940793e  ...>..k>.h.>.@y>
00010fa0  f06af03e 8188803e d5b4d43e 898c883e  .j.>...>...>...>
00010fb0  863f063f 8588843e ca84c93e 9040903e  .?.?...>...>.@.>
00010fc0  c7c8c63e a0f09f3e c3bec23e 8a748a3e  ...>...>...>.t.>
00010fd0  c49ec33e 91a2903e bf40bf3e 9028903e  ...>...>.@.>.(.>

...

0001c3c0  8b0b503f c40d053f e87d543f eacce13e  ..P?...?.}T?...>
0001c3d0  91f1583f 034da53e 459e5f3f 917fb93e  ..X?.M.>E._?...>
0001c3e0  98635d3f 6732913e 36d6613f 1fca513e  .c]?g2.>6.a?..Q>
0001c3f0  1e49663f b913ba13 c900b913 c9006213  .If?..........b.
0001c400  b9136213 6113bb13 bd13cb00 bb13cb00  ..b.a...........
0001c410  ca00bd13 be13cb00 be13bf13 cb00bf13  ................
0001c420  cf00ce00 d000ce00 cf00d300 ce00d000  ................
0001c430  d300d400 ce00d400 d300d500 d400d500  ................
0001c440  d600d700 d400d600 d600d800 d700d400  ................
0001c450  d700d900 d900da00 d400db00 da00d900  ................
0001c460  d800d600 dc003802 39023a02 39023802  ......8.9.:.9.8.
0001c470  3b023902 3b023c02 76137713 39027613  ;.9.;.<.v.w.9.v.
0001c480  39023c02 1f032003 21031f03 22032003  9.<... .!...". .
0001c490  23032203 1f032303 24032203 79137a13  #."...#.$.".y.z.
0001c4a0  1a047a13 1d041a04 7a137b13 1e047a13  ..z.....z.{...z.
0001c4b0  1e041d04 71067206 73067406 73067206  ....q.r.s.t.s.r.
0001c4c0  75067306 74061407 15071607 16071707  u.s.t...........
0001c4d0  14071807 16071507 16071807 19071907  ................
0001c4e0  18071a07 d008d108 d208ea13 eb13d508  ................
0001c4f0  ea13d508 d308d608 d308d508 3b093c09  ............;.<.
0001c500  3d093c09 3e093d09 a10aa20a a30aa10a  =.<.>.=.........
0001c510  a40aa20a a20aa40a a50ac30a c40ac50a  ................
0001c520  c50ac60a c30ac50a c40ac70a c40ac80a  ................
0001c530  c70a9513 9613230b 9513230b 210be00c  ......#...#.!...
0001c540  e10ce20c a213a413 ec0ca213 ec0cea0c  ................
0001c550  0a140b14 010d0a14 010dff0c 2c0e2d0e  ............,.-.
0001c560  2e0eb90e d000cf00 b90eba0e d000bf0e  ................
0001c570  d300d000 bf0ec00e d300c10e d500d300  ................
0001c580  c10ec20e d500c30e d600d500 c30ec40e  ................
0001c590  d600c50e d700d800 c50ec60e d700c70e  ................
0001c5a0  d900d700 c70ec80e d900c90e db00d900  ................
0001c5b0  c90eca0e db00cb0e dc00d600 cb0ecc0e  ................
0001c5c0  dc00cd0e d800dc00 cd0ece0e d800210f  ..............!.
0001c5d0  3b023802 210f220f 3b02230f 3c023b02  ;.8.!.".;.#.<.;.
0001c5e0  230f240f 3c027813 3c02250f aa137813  #.$.<.x.<.%...x.
0001c5f0  250fc110 2c0e2e0e c110c210 2c0e2014  %...,.......,. .
0001c600  b9136113 78137613 3c027b13 7c131e04  ..a.x.v.<.{.|...
0001c610  80137f13 55068013 55065606 7f138113  ....U...U.V.....
0001c620  55068313 82137607 82138413 77078213  U.....v.....w...
0001c630  77077607 8f138e13 1d098f13 1d091e09  w.v.............
0001c640  9c139b13 660c9c13 660c670c 9b139d13  ....f...f.g.....
0001c650  660ca313 a213ea0c a313ea0c eb0cbc13  f...............
0001c660  bb13ca00 bf13ce00 cb00bf13 c013cf00  ................
0001c670  c0131014 bc0ec013 bc0ecf00 c100c400  ................
0001c680  0800c600 0800c400 c400c700 c6007613  ..............v.
0001c690  78133e02 76133e02 3d023d02 3e023f02  x.>.v.>.=.=.>.?.
0001c6a0  3f024002 3d023f02 41024002 41024202  ?.@.=.?.A.@.A.B.
0001c6b0  40024102 3f024302 43024402 41024102  @.A.?.C.C.D.A.A.
0001c6c0  44024502 44024302 46024702 44024602  D.E.D.C.F.G.D.F.
0001c6d0  41024802 42025703 58035903 58035703  A.H.B.W.X.Y.X.W.
0001c6e0  5a035b03 57035903 5c035803 5a035c03  Z.[.W.Y.\.X.Z.\.
0001c6f0  5d035803 5a035d03 5c031c13 1b13ae03  ].X.Z.].\.......
0001c700  7c137b13 1c047c13 1c041f04 6e056f05  |.{...|.....n.o.
0001c710  70057005 71056e05 71057005 72057f13  p.p.q.n.q.p.r...
0001c720  80135406 81137f13 54068113 54065706  ..T.....T...T.W.
0001c730  27132813 1d072713 1d071b07 1d071e07  '.(...'.........

...

00023250  08118916 08119d00 86115400 05118611  ..........T.....
00023260  05110611 07110511 5400e211 86110611  ........T.......
00023270  e511e211 0611e511 06117d11 90168b16  ..........}.....
00023280  54009016 54008511 86118511 54008a16  T...T.......T...
00023290  8f160711 8a160711 54008b16 8a165400  ........T.....T.
000232a0  05119c00 9b008916 88169c00 89169c00  ................
000232b0  05118916 05110711 8f168916 07110611  ................
000232c0  9b00af0e 7d110611 af0eb10e 9b009c00  ....}...........
000232d0  b10eb20e 9b00b50e 9c009f00 b50eb60e  ................
000232e0  9c000611 05119b00 88169f00 9c008816  ................
000232f0  8d169f00 8d168e16 b40e8d16 b40e9f00  ................
00023300  03000000 6c000a01 7201b301 0b028f02  ....l...r.......
00023310  ca021f03 8d03d003 5504c904 04055505  ........U.....U.
00023320  9005c205 3906a506 f8067907 da076608  ....9.....y...f.
00023330  98080709 6209c609 fe09510a b00a310b  ....b.....Q...1.
00023340  8f0b4d0c b20c150d 5d0d8d0d cd0df80d  ..M.....].......
00023350  220e460e 680e790e 850eae0e b60ebe0e  ".F.h.y.........
00023360  e60e200f 470f940f af0fc80f 5e10f310  .. .G.......^...
00023370  5011d211 da11e011 f7110d12 28126612  P...........(.f.
00023380  72120000 186d6170 5f31365f 34303231  r....map_16_4021
00023390  325f3130 3531305f 302e6a70 67000000  2_10510_0.jpg...
000233a0  40bf5aba 8940adba 78f89e3a 00000000  @.Z..@..x..:....
000233b0  5a48ce3b c23982bb 00000000 00000000  ZH.;.9..........
000233c0  a8fb1e3b e6d57b3b c3ebbf3b 00000000  ...;..{;...;....
000233d0  456924ca f93382ca 4a546d4a 0000803f  Ei$..3..JTmJ...?
000233e0  00ffff46 00ffff46 00ffff46 00ffff46  ...F...F...F...F
000233f0  00ffff46 00ffff46 5f1d1508 e8574bbf  ...F...F_....WK.
00023400  b648222b 11a855bf 7a5ef80a 0fdf533f  .H"+..U.z^....S?
00023410  00000000 00000000 ed495039 0bc9793f  .........IP9..y?
00023420  a3b5cb31 384770bf 00000000 00000000  ...18Gp.........
00023430  00000000 00000000 5531c6fc 74df633f  ........U1..t.c?
00023440  87457fb4 bc7a6f3f ee042f64 78fd773f  .E...zo?../dx.w?
00023450  00000000 00000000 45b95c93 288d44c1  ........E.\.(.D.
00023460  f1c48f2d 7f4650c1 cd614a3c 89aa4d41  ...-.FP..aJ<..MA
00023470  00000000 0000f03f 00008200 30003000  .......?....0.0.
00023480  0b181a1a 1a14191c 0e0e0e0e 1e1d0e0e  ................
00023490  0e0d0d0d 0dfbfdfd fdfd1325 1b0f1010  ...........%....
000234a0  10100605 05050502 02020202 02020202  ................
000234b0  0c1b1a1a 1a0e1112 0e272727 27261b0e  .........''''&..
000234c0  0e0e0d0d 0f151422 0e0e1a25 25252526  ......."...%%%%&
000234d0  10100606 05050402 02020202 02020202  ................
000234e0  0c1c1c1b 1a0d0d0d 0d27232b 2b33322e  .........'#++32.
000234f0  2e2e2d26 0d131a22 0d0d2224 25252525  ..-&...".."$%%%%
00023500  10060606 05050302 02020202 02020202  ................
00023510  0b3c3a1b 1a0c0c0c 26262331 31322d26  .<:.....&p-&
00023520  2e2c2d2d 28282524 0c0c0c0b 09242515  .,--((%$.....$%.
00023530  07060606 05050202 02020202 02020202  ................
00023540  0a42423f 15100c0c 26262230 31312d22  .BB?....&&"011-"
00023550  22242423 23252726 0b0b1912 0a080807  "$$##%'&........
00023560  06060606 05040202 02020202 02020202  ................
00023570  3c42423e 13110d0b 25252230 312e2121  ....%%"01.!!
00023580  22222324 24222623 0a0a1510 14080706  ""#$$"&#........
00023590  05050505 04040202 02020202 02020202  ................
000235a0  3d42423c 0c0c0b0a 25242222 27262121  =BB<....%$""'&!!
000235b0  21212324 272a2723 24240ae2 e3912106  !!#$'*'#$$....!.
000235c0  05050505 06040202 02020202 02020202  ................
000235d0  0b0b0c0e 0d0b0a1f 25232323 22212121  ........%###"!!!
000235e0  21222522 352d2624 2424e2e3 e3e31e05  !"%"5-&$$$......
000235f0  05050506 07030202 02020202 02020202  ................
00023600  2f2f0d0e 0d0b0923 28232424 22222222  //.....#(#$$""""
00023610  2326302b 322befef 25e2e3e3 e3240605  #&0+2+..%....$..
00023620  05050508 07020202 02020202 02020202  ................
00023630  2f2f2f0d 0c0a0924 2a272626 24232222  ///....$*'&&$#""
00023640  26242324 2eefefef eee3e8e9 24242405  &$#$........$$$.
00023650  05050508 06020202 02020202 02020202  ................
00023660  2e303014 150a0809 22303029 29292929  .00....."00)))))
00023670  28222225 2626efee f0e3e3e3 24242306  (""%&&......$$#.
00023680  06060708 05020202 02020202 02020202  ................
00023690  2e303018 19190809 2330302a 29292930  .00.....#00*)))0
000236a0  28212526 2627e3ee e3e3e324 23230506  (!%&&'.....$##..
000236b0  17060707 03020202 02020202 02020202  ................
000236c0  2c2d2d18 18190808 262f2e2b 2a2b2d30  ,--.....&/.+*+-0
000236d0  2a232627 27e7e6e3 e3e32323 23050606  *#&''.....###...
000236e0  13060605 02020202 02020202 02020203  ................
000236f0  08111318 18180822 292c2d2b 2b2c2e2d  ......."),-++,.-
00023700  272226e2 e4e9eae4 e2232323 05061006  '"&......###....
00023710  07060604 02020202 02020202 02020203  ................
00023720  170b0909 09070708 26292a2a 2a2a2a29  ........&)*****)
00023730  232207e2 e2e2e223 23232306 06091706  #".....####.....
00023740  06060503 02020202 02020202 02020203  ................
00023750  17170a09 08070707 0707070a 27282828  ............'(((
00023760  222108e2 e2cb0d23 23230605 06140706  "!.....###......
00023770  05050402 02020202 02020202 02020204  ................
00023780  1717110a 090c0707 07070707 06060615  ................
00023790  10070706 07060707 05050606 06060606  ................
000237a0  06050302 02020202 02020202 02020204  ................
000237b0  1618190a 091a0d15 1e0d0706 06060606  ................
000237c0  06050505 05050505 06060606 0c070706  ................
000237d0  06050202 02020202 02020202 02020210  ................
000237e0  0a090a0a 0a180f12 1e1e1e0c 07070606  ................
000237f0  06050505 05060606 06060926 23070606  ...........&#...
00023800  06040202 02020202 02020202 02020217  ................
00023810  191f0a0a 0a1a1e0c 1d1d1e1e 1d0a070a  ................
00023820  0f060505 06060606 0708081c 22060607  ............"...
00023830  06040202 02020202 02020202 0202021b  ................
00023840  bf230d1b 140b090a 2a291d1d 1d1dced4  .#......*)......
00023850  d41d0906 06060607 07073009 0706061a  ..........0.....
00023860  1f030202 02020202 02020202 0202021d  ................
00023870  bf281a1b 1b1b0a0e 2a29141c 1d1dd7e0  .(......*)......
00023880  e1d31008 06060606 06060707 0606050f  ................
00023890  05030202 02020202 02020202 0202021a  ................
000238a0  2c2e2c2b 1b1b0e29 31302a0d 09d2dbe3  ,.,+...)10*.....
000238b0  e3d70a08 081c180f 06060606 06050510  ................
000238c0  05020202 02020202 02020202 0202020a  ................
000238d0  2f32302c 2b1a0a2a 31312a29 28d6dfe3  /20,+..*11*)(...
000238e0  e0d20707 11191406 06060605 0505052a  ...............*
000238f0  11020202 02020202 02020202 02020207  ................
00023900  3d33302c 2c0b0b0b 30312929 d1dae3e3  =30,,...01))....
00023910  d91c0808 190f0707 06060505 0505052a  ...............*
00023920  15020202 02020202 02020202 02020207  ................
00023930  4242422d 2c0c1b1b 0e0e0f29 1cdde3e1  BBB-,......)....
00023940  d3080808 15070723 26050505 05050507  .......#&.......
00023950  05020202 02020202 02020202 02020206  ................
00023960  46464242 0d0c1f1d 1b1b131c 3f3de3da  FFBB........?=..
00023970  1e090808 07070622 29050505 05050507  .......").......
00023980  05020202 02020202 02020202 02020206  ................
00023990  47484842 0d1d201e 1b1b1c16 5757571d  GHHB.. .....WWW.
000239a0  09090808 07070706 06060505 05050506  ................
000239b0  05020202 02020202 02020202 02020205  ................
000239c0  0f2c430e 0e1b1c1c 1c1b1b57 5d60570c  .,C........W]`W.
000239d0  0a090908 151b1007 06060605 05050506  ................
000239e0  05020202 02020202 02020202 02020203  ................
000239f0  100f0f0e 1b1b1718 181a165b 5f60570a  ...........[_`W.
00023a00  0a0a090a 141b0c07 07061219 05050506  ................
00023a10  05020202 02020202 02020202 02020202  ................
00023a20  100f0f10 1d1e1e19 191a985c 5e5c0f0b  ...........\^\..
00023a30  0c0b0a13 14100808 0707181c 08050505  ................
00023a40  05030202 02020202 02020202 02020202  ................
00023a50  100f101d 1d1e1d1e 1c97a09f 98570f0c  .............W..
00023a60  230c0b19 27260a09 0707090a 06050504  #...'&..........
00023a70  04030202 02020202 02020202 02020202  ................
00023a80  1510101d 1d1e1d1d 9897a0a0 9a980f0d  ................
00023a90  0d27200c 160b0b1b 1609090a 06050504  .' .............
00023aa0  04040202 02020202 02020202 02020202  ................
00023ab0  15102427 24111d1d 98a0a0a0 9c100e0e  ..$'$...........
00023ac0  0f302811 4c3e0c18 180a0d08 06060504  .0(.L>..........
00023ad0  04040302 02020202 02020202 02020202  ................
00023ae0  1e132527 2725221d 98a0a0a0 960f0e10  ..%''%".........
00023af0  161c120e 362f0e0d 0e1b1b53 09060505  ....6/.....S....
00023b00  04040402 02020202 02020202 02020202  ................
00023b10  26222425 25262828 7f98a198 110f0f0f  &"$%%&((........
00023b20  201d2b19 0f10100f 1d1d5156 54560605   .+.......QVTV..
00023b30  04040402 02020202 02020202 02020202  ................
00023b40  1d151523 24212625 11111411 10101010  ...#$!&%........
00023b50  1e1e1010 11101036 281b5157 61555305  .......6(.QWaUS.
00023b60  05040403 02020202 02020202 02020202  ................
00023b70  12151514 14161511 11111111 11101011  ................
00023b80  32361111 28151240 341b3a53 53530606  26..(..@4.:SSS..
00023b90  05040404 02020202 02020202 02020202  ................
00023ba0  14141414 14131111 11111111 12181112  ................
00023bb0  34371119 293c4d4e 331d0d19 43523436  47..)

Jan 5, 2012 12:12am

blog all oft-played tracks III

These tracks:

  1. were added to iTunes in 2011,
  2. and listened to a lot.

I do these each year, lately. Also: everything as an .m3u playlist.

1. Kanye West: Runaway feat. Pusha T

It’s actually a bit embarrassing how much I listened to this album overall. Runaway, All Of The Lights, and Lost In The World are all amazing tracks, and it all hangs together amazingly.

2. Los Fabulosos Cadillacs: Matador

My roommate in college loved this.

3. Skinny Puppy: Worlock

Rabies (produced by Al Jourgensen) is one of those early-guitar industrial albums balanced right on the edge of dance music.

4. Elbow: Grounds For Divorce

I think this was in Burn After Reading.

5. Paul Simon: The Boy In The Bubble

This year was the 25th anniversary of Graceland. I grabbed a copy, and still remembered all of the lyrics to every song.

6. Skeeter Davis: The End Of The World

7. Adele: Rolling In The Deep

Ubiquitous, amazing voice.

8. Jay-Z: Dirt Off Your Shoulder

Why did I never pay attention to this album when it came out? Dirt Off Your Shoulder is the track from the “milk” studio video with Timbaland.

9. Blamstrain: Ei Voi Olla Tanssimatta

Thanks, Ryan!

10. Technotronic: Pump Up The Jam

May 2012
Su M Tu W Th F Sa
  
  

Other places on the web I'm enjoying: Andrew Vande Moere's Information Aesthetics, Jan Chipchase's Future Perfect, Peacay's Bibliodyssey, Eyebeam's Reblog, The Sartorialist, Processing Blogs, Matthew Hurst's Data Mining, Wondermark, Photos tagged Wroclaw, and The Beautiful Poland Pool.

Friends (who have websites): Abe, Adam, another Adam, Andrew, Andy, Boris, Cassidy, Darren, Eric, Mike, Nikki, Otherworld, Peter, Ryan, Tomas, Tom, Thomas.

Recent Entries

  1. polygonize it
  2. hachures
  3. chicago-bound
  4. maps.stamen.com
  5. tinkering with webgl
  6. county papers
  7. “nice problem to have”
  8. 2sleep1
  9. bandwidth
  10. tile drawer: grist for the mill

Archives