Saturday, April 25, 2009

Japan in no particular order: Baseball

IMG_0232

After Lonely Planet tells us that there are "beer girls with kegs strapped to their backs," there is no question we are going to the game. Luckily, the Yakult Swallows suck, so the ticket prices are cheap. (ticket girl: "You want to sit on the *home team* side?"). On the way in, we pick up sake and edamame, which you are allowed to bring in. The game starts out normally, and (phew!) there really are keg girls.

Then crazy things start happening. The other team has carefully-coordinated cheers involving sitting down and standing up and colored shirts and singing. The third batter comes out to Toto's Africa (homage to the Japanese toilet manufacturer?). The next batter opts for Carmina Burana. When the Swallows score, every other fan busts out a pink or blue clear plastic umbrella and thursts it into the air. There are cheerleaders, but in conservative outfits. There is a mascot dressed as a Swallow. When the Carp finally score, they inflate thousands of balloons shaped like sperm and release them all at once.

The Swallows pull off a surprise victory, due no doubt to our keg-girl-beer-fueled cheering.

Monday, February 16, 2009

More fun with TGUPT

I've been meaning to hack up a quick straight men-vs-straight women comparison, and I figured there was no better way to honor our Presidents than by finally getting around to it. enjoy! and take the test if you haven't already!

New digs!

Fwd: apartment pics!

I've failed to post about my new apartment, or about how awesome life has been since Emma moved in with me. This is probably because we've been so busy unpacking and furnishing and painting. Some things have gone well: the new neighborhood is much better for eating and subwaying than the LES, the view is amazing, the kitchen is a pleasure to cook in (garbage disposal!), Elfa shelving is relatively easy to install. Some things have been tricky: Wells Fargo freaked out at the last minute, Oz Moving ripped me off with charges for boxes, painting is way harder than anybody told us, brand-new apartments have kinks that require working out.


Fwd: apartment pics!


Last weekend, we had a housewarming at which copious amounts of alcohol were presented and consumed, much of it by people who bravely ventured across the bridge from Manhattan (or New Haven!). Luckily, this party was on Friday, leaving me well-rested to run the Bronx Half-Marathon on Sunday. 1:59:13 was slower than Brooklyn (and much slower than Brian and Monzy), but not bad considering how little I've been training. Later in the week, I purchased a bag of candy hearts and ate all 900 calories of them, undoing any potential benefits from the training.

Saturday, December 27, 2008

The Grown-Up Purity Test!


During the company ski trip last year, we somehow found ourselves taking purity tests, something we hadn't done since college. Much fun was had (at least until Akshay turned off the Internet in a fit of rage, and we had to score the tests using the Firebug console). Many, many drinks later, we somehow decided that what the world really needed was a hip web-2.0ish purity test, with keyboard shortcuts and big fonts and statistics comparing you to other test takers and fewer "have you ever held hands with a MOS?" type questions. So I registered tgupt.com for The Grown-Up Purity Test (pronounced tee-gupt) and figured it couldn't take more than a weekend of hacking to do.

Since it's now a year later, it's clear I severely underestimated what was involved. Writing the questions was surprisingly hard, and took a lot of feedback and help from various folks, especially David. I'm still not 100% happy with them, but this project has dragged out much longer than anything this frivolous and puerile ever should.

<technical details>
Also tricky was figuring out how to work around the limitations of the App Engine data store. In a relational database, it would be pretty easy to go from normalized data to selecting the mean score for some demographic group. But App Engine doesn't offer aggregation functions, doesn't do joins, and doesn't fetch more than 1,000 rows. I ended up doing several writes on each answered question and each finished test. If a 27-year-old male answered yes to Question 1, I write the following:

AggregateQuestion
Question 1, Yes: 1, Total: 1
Question 1, Gender: male, Orientation: straight, Yes: 1, Total: 1
Question 1, Gender: male, Orientation: straight, Age: 27 Yes: 1, Total: 1

Initially, I thought I would have to store all combinations of gender, orientation, and age as separate aggregates to future-proof myself for any graphs I might want to make. This was really slow, especially with atomic writes. Then I realized that for attributes with few possible values, like gender and orientation, I could fetch, say, both the male and female values from the datastore and combine them in the application code to create a gender-neutral statistic as needed. For overall scores, I updated both a global mean as well a set of score buckets in order to make histograms easier to generate. There's more discussion of these sorts of solutions here and here. You can check out the TGUPT code at code.google.com
</technical details>

Anyway, go take the test and let me know what you think.

Sunday, October 12, 2008

Animals in streets

I've been up to various exciting things lately, like Austin City Limits and running a half-marathon this morning (albeit verrry slowly). But at the moment I really want to discuss pictures of animals in streets. So far I only have two of them. But they make me giggle. Please share more.



Wednesday, September 3, 2008

Oo, my blog's back!

Richard thinks there was some DOS attack. Spammers piss me off. If I were the police, and I had the choice of say, arresting someone for smoking marijuana, or castrating a spammer, I would not be especially torn. But since Google's better at fighting spam than Richard is, should I switch to blogger?

Anyway, I was all excited to blog about running the Nike Human Race 10K (a race with a pun!) this weekend. It was crowded and started late, but people pretty much lined up at the right pace points, unlike NYRR races, making the race itself pretty smooth. I overshot, trying to run a 8:15 and running 8:43 instead. Nike even gave us split times, clearly showing me starting off too fast, slowing wayyy down, and then picking it up at the end. It helped that the Naked Cowboy and people drumming on plastic drums were there to cheer us along. And the individually-numbered race shirts and disposable paper timing chips were snazzy. Pro-tip: don't take the bus to Randall's Island. It's slow and crowded and $5, while the walk is pretty and pleasant.

Monday, July 14, 2008

In hindsight, a drinks-to-hours-asleep ratio exceeding 2:1 is not good race preparation

photo.jpg
This weekend, Jon and I had a co-birthday, with pre-drinking, the Girl Talk album, Anchor Steam Porter, margs, remote.app, popcorn, and cake manipulation at my place and then dancing at The Delancey. I was sporting my new shirt from French Connection, which turns out to make small and extra-small shirts that fit me(!). A good time was had by all (based on twittering, which is the new picture-taking), although apparently I am not very good at clapping on the beat. Beats are for suckers, anyway. Also, we had to pay the bouncers $40 to get the last five people in, which is like a total scam. I think there might have been shots involved...

...because when I woke up 4 hours later to go to the Park to Park race (with the fun free trip to the pool at the end), I didn't feel so good. I didn't make it in time to attach my chip or number, but I finished alive and kept pace with a slightly-gimpy Bolin. Sadly, the NYRR website claims I didn't finish the race. We had a tasty brunch at the cafe from You've Got Mail, which has awesome eggs-with-herbs, but I couldn't finish it, due to aforementioned yucky-feelingness. I went home and went back to bed.

Anyway, that was my weekend. I hope we all learned a valuable lesson about how much more badass you feel running a race after a night of crazy partying, or something.