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:
- Learning WebGL
- OpenGL Shading Language wiki
- CAAT implementation notes
- Mozilla Developer Network (with best practices)
- Raw WebGL from Opera
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:
- San Francisco (just osm2pgsql, just imposm)
- London (just osm2pgsql, just imposm)
- Berlin (just osm2pgsql, just imposm)
- Tokyo (just osm2pgsql, just imposm)
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.
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:
- were added to iTunes in 2011,
- 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










































