At the beginning of the month I published ARST ARSW, which is Star Wars sorted alphabetically. It "went viral" (I think it was actually bacterial. Gram stain was positive) almost immediately, due to some lucky press, which is fine by me. If you haven't seen it, clicky-clicky:
Literally, every word spoken in the movie is assembled in alphabetical order along with the corresponding video clip (and ties of course broken chronologically). The description contains some "fun" facts, like that "lightsaber" only appears once in the movie!
At 43 minutes, it's a bit hard to watch the whole thing in a sitting, although many have declared success. I've only been able to finish it with a break or two, in all honesty. Maybe on the elliptical machine. If you do watch, please get to at least Alderaan (link skips directly) to see how it can create unintentional humor, as each character pronounces this fictitious planet's name differently (Luke kinda goes with whatever the person he's talking to says). Some other parts I like: Two words appear adjacent in ARST ARSW that are also adjacent in the movie, such that it goes an an an an ... an analysis. All the words that appear in Leia's hologram message are interesting, like Kenobi. See how much time people spend looking for Luke in this movie, and here you can see one of my three mistakes (one of the "Luke"s is out of order because it had an invisible tab character after it in my transcript). Catch 'em all! And I think Han Solo's scene that contains almost all the uhs in the movie is pretty hilarious. There are lots more favorites highlighted in the comments, along with the ubiquitous internet abuse. (Mom, who felt protective at my Ph.D. defense: Never read the comments.)
It took a while to make, but people routinely waste entire weekends just binge-watching Netflix or worse. Not only was this basically relaxing (not to mention that it absorbed that nervous energy that you probably know I'm aflame with) but I got some practice making software for video editing. The source code is here. It's a pair of multithreaded C++11 apps. Basically the process was like this: I loaded all the frames up into memory, along with the audio, and had keyboard commands for marking a section of the video (actually the audio—you need much better resolution than 24fps to chop up words) and refining its borders while listening to it in a loop. I'd find a phrase in the audio, then type "if this is a consular ship where is the ambassador" and it'd just split up that loop into 10 mini-loops of the same length, one for each word. Obviously "if" is much shorter than "ambassador", so then I'd go and adjust the edges of those loops with the keyboard. I made tweaks to the program as I went, to make it efficient and fun-ish, and eventually got pretty fast at it. Here's what the UI looks like:
I also learned some things from making this video and the reaction to it. First: Star Wars is a really well-made film. I've probably only seen it four times or so—I'm no superfan—but watching the movie this closely, frame by frame, was a master course in filmmaking. At the micro level, I was very surprised how densely packed the dialogue is, with almost no pauses in between lines. (And yet it doesn't sound weird? People obviously don't talk like that.) It was neat how sound effects like laser blasts were carefully placed between words of dialogue during messy scenes, so that you'd still be able to hear the characters. I was also surprised with how little actual sound you need in order to perceive words like "a" or "it"; I often had trouble even isolating what part of the audio even corresponded to the word, despite it being clear that the character was saying that word when I listened to the whole line. It was notable how much of the story is propelled by the two droids, and I entertained an alternate theory that C3PO was Keyser Söze-ing the whole plot by "interpreting" R2D2's nonsense bleeps, which is pretty plausible.
I also learned that people have done this kind of thing before. For example, someone alphabetized one of George W. Bush's speeches as Qaeda Quality Question Quickly Quickly Quiet. There's also AARRSSTW, which I was terrified to see because I thought it might have been literally the same thing, but it is in fact Star Wars reordered by the length of the shot. In general, this kind of exhaustive analysis of the words in some work is called a Concordance, which is usually done entirely earnestly for books like the bible by people who are even more extremely boring than me.
Lots of people have asked to do other stuff with the timecoded words, especially, something where you type in a phrase and it outputs a video of clips from the movie speaking your phrase. (Or more cleverly, take the movie itself and replace each word with a clip of a different character saying that word.) There are lots of good ideas, but I decided that it would detract from the art of this one to do anything that might be perceived as "useful" or "interesting" with it. The point is the movie and that it has no point.
Moreover, although I'm always happy with attention for my projects, this one is now probably my most famous (!), at least if measured by Youtube views, which are now nearly 1 million. (Though people have watched more than twice as many actual minutes of my previous virus.) I don't want to be known as the Star Wars guy or something, so we are now done with this project and it's on to the next! Expect the next post to contain an unexpectedly resumed classic.
Pittsburgh Marathon 2014: 20 hour pace group
(05 May 2014 at 19:48)
This Sunday was the nth annual Pittsburgh Marathon. I ran it again, again in a ridiculous getup, again tiring you with my again-ness:
Pace Group 20 hours - Photo by Matt S!
"OK," you likely think, "What in the world is THAT?" I know from the reactions of many people during the race (self-selected as runners or running spectators) that this is not super-clear. In long races there's the concept of a "pace group", like if it's your life's goal to finish in 4 hours, there is some pro guy or gal who runs with a sign that says "4:00" and if you stick with that person, then you'll finish in that time. Here the idea is that I am the pacer for the 20 hour finish time (the course is closed up after 6h30m so this is way too long), running along with my entourage of four runners whose life's goal is to finish in 20 hours. Moreover, each of these little puppet-people has a story:
Sam is worried about hitting the wall, so he's bringing along lots of high-calorie running goo.
Walter has all the latest gear, including a very stylish running belt with four individual water bottles, which can be used to hydrate himself and up to three of his friends simultaneously. He also has cool shades (with the UV Protection sticker still on) and a LiveStrong bracelet.
Peter used the bathroom twice before starting the race, but the third time, the line was too long for him to make it to his starting corral on time, so he skipped. He's been regretting it ever since.
Junior is registered for the Kid's 400m Fun Run, but the race seems longer than he expected, and where is his mommy?
I attached these characters to a belt using some tomato gardening sticks, strings and coat hangers, and pieces that I designed and 3D printed. That part worked pretty well, but again I underestimated the jostliness of running, and I had to stop frequently near the beginning to repair. (Big ups to Chrisamaphone, who ran the first 10 miles with me, for helping with repairs!) Once the low-quality string knots had been vetted and I figured out how to run while bracing the tomato sticks with my hands and elbows, the only serious construction problem was that the tomato sticks would come out of the 3D printed tomato stick holes and my people would start dangling and spinning and dragging on the ground. Eventually it was happening every 10 minutes, but I got good at grabbing and reattaching the costume while running. Next time (?!), deeper tomato stick holes. Several additional ideas (such as someone covered in Kinesis tape, someone with a DC City Map and binoculars, a CamelBak water backpack for Walter) were cut because I ran out of time. (As usual, I was up too late finishing it and, and then had to be up at 4am for the race!!)
This costume mostly was not as hard as usual to run in. It was awkward to brace everything, but other than some slow bruises in weird places, it really didn't hurt that much. The biggest unexpected problem was the sign in the wind. During the race I realized that real pace group signs are tiny, and made of flimsy bib material. Mine was torso-sized (see picture) and made of foam core. It wasn't that heavy, but in the wind, it was this absurd sail, either pulling out of my hand or doing a metastable wiggle or (usually) pushing back against me. It took so much energy to run against the wind. When it picked up, for the last 10 miles, maybe, I did a lot of walking. Once I was downtown and the buildings were shielding me, I ran again, and I probably had many more miles in my legs. Anyway, the point is not to get a good time. I finished in about 5h15m. Right as I got to the finish line I made a show of checking my watch and the pace sign and the timer at the finish line, like, "Oops, did we go way too fast?" and then consulting each of the puppets to make sure they were okay with beating their goal time by almost 15 hours. They were.
The costume got some good reactions, which I enjoy. It's nice to get cheers from spectators or make kids laugh. Some people, mostly runners if I passed them, were freaked out by the puppets, which admittedly did look like hanged children effigies twisting in the wind. Ain't nobody ever made a hosiery puppet and had it come out not lookin' creepy, so I knew that was a possibility. The sign only had text on the front, and several people that were behind me for a while, eventually caught up and "had to ask, what is this for? what is the cause?" Those people usually did not understand. Then we might run 10 more miles together, which is awkward.
Here's a short video of it in action right before the race, courtesy Chrisamaphone:
Almost two weeks ago there was SIGBOVIK 2014, the 8th annual April Fool's academic conference at CMU. When I say April Fool's conference, it's not that it's a conference about April Fool's Day or something, rather, it takes place on A.F.D. and contains "research" that may or may not be real, and is usually whimsical.
This year I emceed, labcoat and all, and begin with a one-day-hack "SIGBOVIK Plays Twitch Plays Pokémon Plays SIGBOVIK", where I rigged up a website with a controller that looks like this:
(told you I did it on the morning of SIGBOVIK!) and internet people could click the buttons to vote in real time on what a Nintendo emulator running this weird Chinese pirate NES version of Pokémon would do:
although it was delayed 10 seconds due to streaming to twitch.tv, just like the real Twitch Plays Pokémon. But the "twist" here is that the software then reads some bytes out of Pokémon's RAM, and uses those to pose the line drawing of a person, the idea being that the current SIGBOVIK presenter must take on the pose indicated, thus completing the Circle of Life and "playing" SIGBOVIK. Even though my prerogative as emcee is technically limitless, almost nobody followed this decree. It might have had something to do with the fact that the pose changed three times a second, due to bad planning/tuning. Still, it was there projected on the wall, always haunting you:
Connoisseurs of weird pirate versions of Pokémon will notice that we made it into Professor Oak's laboratory to select our beast, which took hours of trying to time the ten-second delay correctly. We accidentally exited the lab before selecting a Poké-egg.
There were many fine ideas at the conference, some of which are collected in the SIGBOVIK 2014 proceedings. My papers this year are even more abstruse than usual. The first was "New results in k/n Power-Hours", a ten-page hangover that revisits the incorrect or nonsensical theories in our paper from 2012, "Algorithms for k/n Power-Hours". Both are about a generalized version of the popular drinking game, but only the latter was written while sober. The results here are completely accurate, studied at length with real software. The "joke" in this case may be a little edgy for SIGBOVIK, the idea being to oversolve some pointless problem and then not even present it in a way that's humorous. It has some cool-looking figures, though. That one won the "Most Deserving of Being Real Research" award. Second I contributed "What, if anything, is epsilon?", a more or less serious descriptive account of how programmers set the value of epsilon in their software (spoiler alert: they range over 300 orders of magnitude!), whose results are obscured by absurd choices in data visualization. Third was "It still seems black has hope in these extremely unfair variants of chess", wherein I combine chess with populist board games, ruining it, and then study strategies for avoiding domination as player 2, using computer game tree search.
I think I started 7 other SIGBOVIK papers that I didn't finish on time, obviously, but I'm keeping the dream alive.
Up next: I have an idea for the Pittsburgh Marathon, and if I simply apply myself to something useful for once, I should be able to put together the apparatus in time (three weeks). In two weeks, another trip to Zurich with a stop in Lugano. Also: Barn-based board games.
Tomorrow is the prestigious academic conference SIGBOVIK, which I will be emceeing this year. It's at 5pm in Rashid auditorium on CMU's campus. There will be cake, "papers", "presentations", and awards. And mirth! I have 3 papers this year and will likely prepare a presentation as well, though as usual I have saved that to the very last minute.
Recently I have been doing some 3D printing, mostly for fun, but also for fixing things and optimizing my life a little. It's really pretty awesome to be able to go from an idea to a physical object in an hour or two, and to make stuff that's completely customized to its use. Here's my page on Thingiverse, the social networking site for 3D printing models. I have a few other things I've made that aren't uploaded there. I started with CAD software, which is super good for precise parts (and really fun; if you have never used modern CAD software and think you might like it, you should try it. It's almost as fun as learning to program was, for me), but recently I've been learning Blender, which is an excellent open source 3D modeling tool. It's much better than I expected (usually open source software for media, like drawing or music or video, is pretty disappointing). Last weekend I made this toy:
It's the Golden Idol from Spelunky, printed here at miniature size. While I'm gushing about software I like, Spelunky is so good. If you like hard platformers, you should play it. Even though it's a roguelike, the adage that "Spelunky has a robust leveling system -- it's just inside your heart" is really true, and I've been playing for months and still haven't beaten it the hardest way. Anyway, I can just make my own treasure so no big deal. Here's a timelapse video of it 3D-printing.