World’s Hotels – Manipulating A Large Dataset

First, I’ll start with the video (HD recommended):

And the Git repo with the code:

This visualization takes a random sampling of one-tenth of all hotels in the world and displays them in a map view by default. The points on the map are color-coded by the hotel’s star rating, with 0/unrated being the darkest orange and 5 stars being the brightest yellow. If you press S, the visualization changes to star ranking mode, in which it divides the random 10% set into proportionally-sized squares for each ranking. By pressing M, you can return to map view.
Development Process:

The first challenge with this project was wrangling the huge dataset into some sort of usable shape. I downloaded and went through some tutorials for openRefine, and then loaded the set it. After poking around, I noticed that some of the most complete categories included the hotel name, the star rating (after combing through and setting all unrated hotels to 0), the latitude and longitude, and the country name. In order to try to reduce the amount of data for Processing to parse, I cleaned for those categories and deleted the data I didn’t plan on using (later I ended up taking out the hotel name field, which further cut the file size by about 50%).

Once loaded into Processing, I set out trying to plot the data into a map view. I looked around for map libraries, but the most prominent one only worked with Processing 1.5 or lower. Since I was using Table classes to organize my data (2.0+), I couldn’t use it. After some experimenting, I found that mapping the latitude and longitude coordinates to the edges of the screen makes for a perfectly usable (and rather neat-looking) map. I color-coded them by star ranking by mapping their rating to green in an RGB color with red set to 255. That way, the 0-stars are red, and the hotels get more yellow the higher they’re ranked.

After that, I set about animating the map. It was around then that framerate became a major issue (the screen only refreshed once every 1-3 seconds or so). By putting in a random-selection filter, I found that limiting the data to 8% of the total produced a usable framerate, which was disappointing. (Later, I added a motion blur which let me get away with a slightly chunkier framerate, letting me bump it to 10% – it could probably go to 15 but it would start to really show at that point.)

The final step was to add the star ranking view. In order to make the squares proportionally sized to each other, I had Processing sort/count the number of hotels in each category in the setup() loop. I noticed unrated was the largest, so I mapped all the other squares against that. I also ended up square-rooting each category, so that the size difference of the squares would be exaggerated.


ITP @ Maker Faire – Ohm Wrestling

I was a part of ITP’s team to develop a large-scale project for Maker Faire 2013 in New York. A description from project manager Hannah Mishin: “Ohm Wrestling is a human powered, collaborative mechanical arm wrestling competition.

Two mechanical arms are setup in arm wrestling position for teams Blue and Orange. Each team has an array of energy harvesting devices behind them feeding into the corresponding arm (their motions being Shake, Push, Pedal, Pull, and Crank). The various devices show different methods of harvesting kinetic energy from human motion, energy that the participants use to power their team’s arm. The harder the teams work, the more power they produce – giving more force to their arm to win the competition. In addition, each device is equipped with a light to show each user their own contribution to their team’s winning the competition.

Variables that contribute to a team winning the competition include the amount of watts produced as well as the endurance of the team (how long they can last at peak energy production levels). A large meter reflects the teams’ status/energy produced for the competitors and the audience.”

A photo of the entire exhibit at Maker Faire. Photo by Natasha Dzurny.

A The entire exhibit assembled at Maker Faire. Photo by Natasha Dzurny.


This was an extremely intensive project that took a lot of time and energy from a large team of people. My role in the project was to create two machines with fairly high energy-generating capabilities. I decided to make a pair of large, 4′ x 4′ elevated platforms with two aluminum poles in a T-shaped configuration coming out of the middle. Users could grab the horizontal pipe as handles and push the handles in a circular motion around the platform. Underneath the floor was a very large wooden gear connected by scooter chain to a 40W motor with a small gearhead. The resulting large gear ratio allowed users to generate a fairly large amount of electricity compared to the other devices on display.

This was my first large-scale fabrication project, and most of it was non-digital to boot! It certainly was a challenge to work with gearing, mounting the pole mechanism securely, and creating a durable object that could stand up to the abuse of a great many children. Unfortunately, my computer and camera with most of my documentation of this build were stolen from me before I could back it up, but some pictures of the platforms being constructed/in use are below:

And, finally, here’s a shot of the awards that our exhibit won:


Exhibit photo taken by Natasha Dzurny.

Platform photos taken by Natasha Dzurny, Talya Stein, and Caroline Sinders.

Awards photo taken by Caroline Sinders.

Last Night I Dreamed Of Chickens


I am currently in a class called Poetry Everywhere, and the aim is to create projects that represent existing poetry in new media. One of our early assignments was to create an animated piece based on any existing poem. Both me and my project partner, Xuedi, thought we would have more fun with this if we picked a whimsical poem. Neither of us are very well-versed in poetry, so after a long digressive search we settled on “Last Night I Dreamed of Chickens” by children’s poet Jack Prelutsky:

Last night I dreamed of chickens,
there were chickens everywhere,
they were standing on my stomach,
they were nesting in my hair,
they were pecking at my pillow,
they were hopping on my head,
they were ruffling up their feathers
as they raced about my bed.
They were on the chairs and tables,
they were on the chandeliers,
they were roosting in the corners,
they were clucking in my ears,
there were chickens, chickens, chickens for as far as I could see…
when I woke today, I noticed there were eggs on top of me.


For the animation, we decided to go with the concept of a chicken dreaming of other chickens. Naturally, in order to get anything done, we had to photograph a ceramic chicken I own and also order a giant chicken suit from Amazon. After it arrived, we filmed our friend, chicken enthusiast, and all-around good sport David Rios against a greenscreen performing various actions that fit the poem.

We even made a shot list and everything. You know, real professional.
We even made a shot list and everything. You know, real professional.


Keying out the green screen was a new experience for me and it allowed me to learn the ins and outs of After Effects’ Keylight plugin. Before I knew it, I was a master of keying out adult human chickens. After that, both Xuedi and I set to creating additional assets in Photoshop and then animating. We also recorded Mary Fe narrating the poem and used it as our audio track.

In the end, after the whole process was finished, we ended up returning the chicken suit, much to my chagrin. However, I’m pretty proud of how the animation came out in the end.