Friday, December 12, 2008

Too much BSG

I think I've been watching too much Battlestar Galactica recently.

I just went down to take to take out my recycling. It's been a long time since I last did it, so I had several bags of bottles and cans, but when I got to the curb I saw that the bin was already mostly full. When I looked closer I saw there was some sort of large object half-buried in the usual bottles and cans. I turned it over out of curiosity, and I said to myself, "It's a fracking toaster."

I spent the next few seconds wondering why I felt the urge to swear at a kitchen appliance, until my conscious mind finally caught up with me.

(In other news, I've finished off all the BSG that Netflix has to offer, and I'm working my way through iTunes until I hit the ones still up on hulu. So yeah, no spoilers after Season 4, Episode 4 just yet.)

Wednesday, November 05, 2008

Need to go to sleep. But I came through Union Square on my way home, and well, it's been a long time since I saw a bunch of left-of-center people my age celebrating by waving flags around. I feel like we took something back tonight.

Rather than summarize myself, I'll cheat and link to other posts describing what I saw.

Sunday, September 21, 2008


There's not much point in uploading photos if nobody sees them, and I doubt anybody's compulsively checking my picasaweb page. So, for your potential amusement, links to my photos from New York's Pride Parade '08, and from my trip to London and Scotland.

Friday, September 19, 2008

Rereading Lord of the Rings

I've been reading Lord of the Rings for the first time in years. For a while, I would reread it once every year or two, but when the movies started coming out, I decided that I wanted to go into them clean, without details from the books freshly floating around my head. This is the first time I've opened them up again since my freshman year at MIT.

The first thing I noticed is how slow the start is. I mean, really, it took me weeks to get around to finishing the first few chapters, and I even skipped the Prologue ("Concerning Hobbits") this time. I can understand how it took me three tries before I made it to Rivendell the first time I read them.

But once I was able to get back into it, Tolkien's voice is so much more measured and dignified than the movies. The movies were great, but they punch everything up with music, and quick cuts (especially in the non-extended versions), and the occasional dwarf joke. In the book, all there is is the words, and they just... flow. They set a pace, and it's a slower pace than the movies. When orcs appear, there's no de-duh-daaaaaa Da Duh Dum pause clang clang, it just happens. It sounds obvious, but it really struck me how much the movie depends on the music to carry things through, and how much the book, well, can't.

Relatedly, I was very relieved that I didn't hear all of the dialog in the actors' voices, or even really imagine the characters looking like the actors. Though I did notice every bit of dialog that got used in the movie, especially the ones that got moved from one place to another, or switched between characters.

Plotwise, the changes in the movie were more significant than I remembered. It wasn't just Tom Bombadil who got cut from Book I... it was everything to do with the everyday dangers around the Shire. In the movie, the entire trip to Rivendell only has the Black Riders as the opposition. In the book, they show up first, but then the hobbits wind up getting trapped by the Willow, from whom Tom rescues them, and again by the barrow-wights, from whom Tom also rescues them. Unlike every villain in the movie, they have nothing to do with the Ring... they're just hanging around waiting for hobbits to show up. (Kind of makes it understandable why hobbits don't leave the Shire much.)

The distances between places in general hit me harder reading the books, too. Part of it is that the passage of time is more explicit. But a bigger part of it is how isolated each outpost of civilization is. At one point, somebody mentions that there's hardly any travel between Lorien and Mirkwood anymore. But then you look at the map, and they're right next to each other! All right, the map says the elves live on the northern bit of Mirkwood, and Lorien is near the southern bit, but still. Even Rivendell, where everybody coincidentally shows up just in time for a Council, is a mysterious, distant, near-mythical place to the people who are arriving there, especially Boromir.

Book II diverged less than Book I did. I was surprised to see it observed that the Watcher in the Water went after Frodo first, suggesting that it wasn't just Peter Jackson's idea that it was after the Ring. I also noticed that the whole thing of Frodo blaming himself for Gandalf's death was invented for the movie (mostly for the extended edition), or at least I didn't notice any evidence for it in the book.

And now, on to Two Towers. Ooh, "The Departure of Boromir." I wonder where he's going!

Thursday, September 11, 2008

Feats of Strength

Apparently I've taken up running. The last time I ran any reasonable distance was in high school. (Assuming you don't count, say, the occasional jog from 26-100 to the LSC Office to get whatever item I happened to have forgotten that night--and even those were several years ago.) My main memory of running in high school was that it was painful, and that it was unfair that the people in better shape finished the mile quicker and got to rest while I was still stuck running and in pain.

And yet, I bought a pair of running shoes a few weeks ago, and have now taken them out four times in the past two weeks. I'm still seeing what my body can handle, so I'm doing 1-minute-run, 1-minute-walk for 2 miles. The weird part is that, aside from a dull ache in my shins that I've been icing, it feels good. As in, I actually look forwards to the evenings when I can get home early enough to go out running. Maybe that'll go away once I start pushing myself a little harder, but I'm still quite pleasantly surprised.

I've also apparently taken up conducting. I got roped into calling a quarter of Plain Bob Triples this morning. Luckily, I'd studied the composition last night (W 3H, W 6H, W 6H, where each 6 is --S--S, for anyone who cares). My usual studying technique is to write out every single lead end, with the calls and the coursing orders marked in. That confirms that what I think the composition is actually does come round, lets me verify that the coursing orders are what I think they'll be, and gives me a sense of timing for when the calls come. It's good to notice that the wrong is the lead after the home, for example.

Usually, that's about all it accomplishes. But this time, I also happened to notice that I (did I mention I was ringing the 7 of the back 8?) would dodge with the 4 the lead before the last Home in each group of 3. This fact turned out to be very important when I lost count of the number of Homes I'd called, and then the 4 wasn't where I wanted him to be. Putting the 4 where I thought he belonged seemed sure to make things worse, so I just put in one more Bob than I thought I needed and called the Single Home the next time. Luckily, it turned out that the 4 was right and I was wrong, and everything went as it should have. (I got to make up for it in the last few courses, by which time I was dead certain I knew where I was and didn't hesitate to shout at people if they weren't in their designated place. The 6 also helped me keep people straight.)

And finally, since it's been too long since I showed off the view from my apartment, a photo of tonight's WTC memorial lights.

Friday, July 11, 2008

Another year

I've now been living in New York for three years. In the same apartment, no less. That means that after you subtract out the summers I was away from Boston, I've lived here for about the same amount of time that I lived at Random. Funny, it doesn't feel as long.

In the spirit of retrospection, I went over to Google Scholar to see how the JCilk papers. Aside from the usual incestuous citations, I was very excited to see that my thesis had been cited by people I'd never heard of. That meant that someone actually it! Well, okay, at least some of it, but still--somebody read my thesis! Then I searched through their paper for the reference. I quote:

The C implementation for a similar parallel system, called Cilk, introduce a similar overhead for this benchmark (3.63x slowdown [9]). Our system however, significantly outperforms the Java version of Cilk (JCilk) which imposes a 27.5x slowdown for this benchmark [8]).

So they flipped through my thesis, found the biggest, worst number in there, and quoted it to make themselves look better by comparison. And in another paper, they used the analysis from my own Performance chapter to discredit our whole idea, ignoring my suggestions for improvement:

With the volunteer stack splitting mechanism, we avoid the synchronization overhead incurred by work-stealing, which can be significant in a Java system [10].

The sad part is, I'm still kind of excited about it. Somebody read my thesis!

In making-me-feel-old news, the froshlings from my 6.001 class have now graduated. I looked up the graduating Course VI class on the alumni database, and was gratified to see that I didn't manage to scare them all off. I was especially happy that one of my students who seemed to be getting things by the end, but who still got a No-Record, tried it again and ended up graduating Course VI on time.

Of course, once one of my students starts working at my office, then I'll really feel old. It probably won't be long now..

Sunday, May 25, 2008

A long-awaited update

I have, despite all appearances to the contrary, been Up To Things for the past several months. They just haven't been especially interesting or blogworthy. But if I cram them all together, that makes everything more interesting, right? In no particular order:

My curtains finally got installed in mid-March, but it took two more visits by the "professional installers." In the first, they brought the curtains, strung them over the rod, put the rod on the brackets, and watch another one of the brackets fall out of the wall. After much discussion, they suggested putting them on a track instead, which required a second trip to actually bring the track. On one hand, I kind of wonder why they didn't just suggest that in the last time when they saw the brackets wouldn't hold. On the other hand, I do kind of like the way they ended up, and I'm relieved that I didn't have to deal with giant holes in my wall myself.

I finally changed projects at work last month. It took way too long to find something interesting that needed another engineer, but I am now on... Local Search Indexing! We're the ones who take the multitudes of business-related data and process it into the index that gets searched over when you look for a business on Maps. It's a very different kind of work, and I've had to switch from C++ to Java, but so far I'm enjoying it. (And yes, this does mean there's an entirely new realm of things that you can now blame me for. The plan is to still spend 20% of my time on Spreadsheets, so you can continue to blame issues with that on me too.)

I don't think I've mentioned it here, but I've been taking Mandarin classes at work for the past year. It's through Berlitz, so we've been doing entirely spoken work (no characters), mostly without a textbook. Then last month we got a new textbook, with pinyin dialogs! And instead of the Berlitz "here's five examples, figure out the rest intuitively" method, they actually have little sections about grammar! I'm very excited about it.

At some point, I finally signed up for Netflix. All the cool kids were doing it.

I saw a production of MacBeth at the Brooklyn Academy of Music, featuring Patrick Stewart. It's practically within walking distance of me, so I couldn't resist, especially after I missed out on Ian McKellen last year. It was a very creepy production, set in Stalinist Russia. The witches, for example, were dressed as nurses, but they still got all the good "cauldron bubble" lines, not to mention rather demonic red lighting. And Patrick Stewart is, indeed, awesome.

On Easter Sunday, I called my first quarter. It was ten extents of Plain Bob doubles. It reminded me of when I first started ringing on handbells, when there was one time when I wasn't able to compute 2+4 because I was so completely occupied with remembering my place and where I was going next. Well, conducting is kind of like that, except that there's just so much more I'm supposed to be keeping track of. (I'm supposed to try a quarter of Plain Bob Minor next weekend... we'll see how that goes.)

I went down to Pittsburgh for my brother's graduation from CMU. When I was applying to colleges, CMU was my first choice for a while. I visited it twice about eight years ago when I thought I'd be going there for undergrad, so a lot of the campus was vaguely familiar. The commencement speakers were better than I ever had: Al Gore, who was surprisingly entertaining and upbeat given that he won a Nobel for basically predicting the end of the world; and Randy Pausch, who did the whole "what you regret are the things you didn't do" bit. (I actually thought it was a bit awkward having him speak last, since commencement is about the beginning of your life in the real world and his speech was in some sense about the opposite, but hey, I'm not really going to begrudge him that.)

I went down early to make it to the ringing practice on Thursday night, and scored a quarter of all the doubles methods I could think of. I also got to do touristy stuff around the city with my family, but my main impression was that in Pittsburgh, it's always either raining or about to be raining. (And I forgot to bring my umbrella.)

I suspect I've become the North American record-holder for Plain Bob Cinques, having rung in 4 peals of it, out of 47 ever anywhere. There have never been more than 5 at any single tower (a record I suspect Trinity will surpass in the near future), but apparently at one of those towers the same person conducted 4, so I'm not the world record-holder yet. Ah well.

RAM is now so ludicrously cheap that I just ordered 2GB for $50. That's about a factor of 8 less than the best per-GB cost a couple years ago. How am I supposed to resist that? (I also blame Spaces for increasing the temptation by making it convenient to leave about fifty windows open at any given time.)

I volunteered to help revise the NAGCR web site. So, after three years of avoiding it at work, I'm finally having to learn CSS and Javascript. Fun fun.

I went out to Loew's Journal Square on a work "off-site" a few weeks ago. It's one of the old movie palaces from the 1920s that's been bought by the city and is being restored by a nonprofit group. Once a month or so they show movies there with an all-volunteer staff, including the projectionists. So basically, it's LSC, if 26-100 had a balcony and a gilded ceiling. (Though honestly, I think 26-100 has it beat on acoustics.) They took us on a tour of the projection booth, which still has the back room that used to be full of the dynamos to produce the DC to drive the carbon-arc lamps.

I suppose that's enough. Perhaps it'll be less than four months next time.

Friday, February 22, 2008

Adventures in Home Decor

Our story begins a little more than two years ago. I spent the summer taping old sheets in the windows when I wanted to keep the sun out, but my parents were visiting my apartment for the first time and I felt like I ought to have something more. So I went up 7th Ave to the little fabric-and-upholstery shop, picked out cheap inoffensive beige curtains, and hung them up.

Over the following two years, I came to believe that I didn't really want beige curtains after all, and even if I did, I'd want ones that looked a little less cheap. At the end of December, I decided to finally do something about it. So I went to Google Maps and found a bunch of drapery places in Chelsea, took the subway into Union Square, and wandered up Broadway stopping in shops.

At the first place, the guy was very friendly, but said things like "We have these books of fabric swatches, but we don't use them much, since most of our clients are designers who already have the fabric." He also quoted me a price, just for materials, which was about twice what I had in mind to pay total. So I politely said I'd think about it and left. The guy at the second place was also very friendly, and deigned to search through fabric books with me for the perfect shade of navy. I found a good one and checked the book out to see how it looked at home. At the third place, the the fabric guys had already left for the day, but they'd be happy to come by my apartment next week to pick out fabric and give a quote, and yes they'd honor that coupon I pulled out of the ValuePak mailing. Then I went home, satisfied that I had two reasonable options.

The following Monday morning, the second place called me and gave me a quote that was five times what I had in mind to pay. I wasn't going to go for that. But it meant that when the guy from the third place came, proposed something nicer than I'd had in mind, threw in "professional installation," and said it would only be four times my original price was, it suddenly sounded quite reasonable. He said he'd knock more off the price if I made the order that day. I felt like I was probably being taken, but I knew that angsting over it for a while wouldn't help anything (and hey, I could afford to pay that much, I just hadn't planned to)--so I signed the order.

That brings us to this morning, nearly two months later, when my curtains finally arrived. Well, somebody's curtains arrived, at least. They were definitely the same color I'd ordered. On the other hand, the professional installation guys noticed as soon as they walked in that the curtains they'd brought were a couple feet taller than my ceiling, let alone the top of the windows.

As long as they were there, though, they wanted to install the brackets to hold the rods up (the non-tension rods being one of the extra bits that the sales guy had tempted me with). One of them tried putting the bracket into the moulding the way I wanted. He really did try. But the moulding, being moulding, didn't present a nice flat surface, and while he was trying to deal with that, I could see a crack forming between where the two screws had gone in. He saw it too and pointed out that the moulding wasn't actually strong enough to support the curtains. We agreed that he'd put the brackets in next to the moulding instead.

And put them in he did. Unfortunately, he wasn't exactly from the measure-twice cut-once school of carpentry. When he tested the rod over the first window, it was just a bit crooked. He tried lowering the right-hand bracket by bashing it with a hammer, but no such luck. So he took he bracket down and did the only really stupid thing I saw him do, which was to try to get the screw to go in an eighth of an inch lower. Of course, the result was that the two screw-sized holes merged together into one big hole. He tried using a longer screw, but since my walls are apparently made of one thickness of drywall followed by two inches of air, that just made the hole bigger. He turned to me apologetically and pointed out that my wall sucked and he didn't know what to do. I didn't say anything, on the theory that maybe if I kept my mouth shut he'd figure something out.

He and the other guy talked it over for a bit, and finally came up with something. They plugged the hole with a metal disc attached to an expandy thing that I assume was gripping against the other side of the drywall, and that seemed to work, but didn't get them any closer to getting the bracket back up. After a little more discussion they hit on the idea of mounting a metal angle-bracket to the wall and then screwing the top of the wooden bracket into that. After a small amount of undoing what they'd done and redoing it with the angle-bracket involved, they had everything mounted. Voila, one window done.

On the other window, they again discovered the brackets were crooked. This time, though, they had a better idea than moving the screw in the wall: move the hole in the bracket! I'm really not sure why they didn't think of that the first time, especially since the first thing they did when they got there was attach the metal plate with the holes to the back of the wooden brackets. But anyway, this looked like it was going to go well. Except that on the first attempt, they moved the holes the wrong way and it was even more crooked. As they were fiddling with that, one of the guys put a little too much weight on it and the screws pulled out of my poor drywall, making another big hole.

But now, at least, they'd reduced the problem to one they'd already solved. Out came another expandy thing and another metal angle-bracket, and in a few minutes they were done. They were even nice enough to seal up the first holes they'd made in the moulding, before they left.

But now I'm back where I started, except with four wooden brackets mounted next to my windows. I've wiggled them a bit, and the non-metal-bracket ones are a bit wobbly. At this point I'm just hoping they don't fall down before my real curtains get here.

Tuesday, February 05, 2008

And now for some meaningless coincidences

I grew up in a suburb outside of Washington, DC. During that time, the Redskins won 3 Super Bowls, making them the champions for 17% of the time I lived there. They hadn't won any before I was born, and they haven't won any since I moved away.

In the five years I lived in Boston, the Patriots won 3 Super Bowls, for a 60% success rate. They also hadn't won any before then, and they haven't won any since.

Now I live in New York, and the Giants have won one Super Bowl, giving them a score of 33%. Though to be fair, they did previously win two earlier ones when I was somewhere else. (It should also be mentioned that the New York Giants don't technically play in New York, but that's just a detail.)

Relatedly, there hasn't been a ticker-tape parade in Manhattan since 2000, because foreign dignitaries apparently don't like to ride slowly around in open cars anymore, and New York sports teams haven't been doing especially well recently. But there will be one tomorrow morning, and because Trinity is right on top of the parade route, we'll get to ring for an hour (with sound control completely opened!) as they all go past.

Friday, February 01, 2008

Debugging is fun!

It's occurred to me in the past that one of reasons I watch House is that it's more about problem-solving (and making good guesses) than it's really about medicine, and that it has a lot in common with problem-solving in other domains, like, say, debugging software. In that spirit, here's an hour from my Tuesday afternoon, if it were an episode of House.

(It also occurs to me that this may be the first "creative writing" I've done since my freshman advising seminar. There was probably a reason for that.)

Scene 1

We see a man, mid-40s, at his computer. He's working happily with children playing in the background. One runs up to him and bumps his elbow, causing him to spill coffee all over his desk. It narrowly misses the keyboard. He wipes it up with a few paper towels and gets back to work, but a few moments later an error message pops up on the screen. He swears.



Scene 2

House: So we've got a user with an error page.

Taub: Do we have any idea what caused it?

House: (Sliding folders across the table) Here's the stack trace.

Foreman: It's probably just left over from that bug we fixed last month.

House: Nope. This one was working up until yesterday.

Foreman: Then it's probably something related. The entries were probably written out of order.

House: Probably. Go see if the entries are out of order.

Scene 3 - In House's office

Thirteen: The entries were out of order. It looks exactly like that bug we fixed last month.


Scene 4

Thirteen: It must be the same bug recurring somehow.

House: Am I the only one who's looked at the changelists? We fixed that bug. We haven't seen it in a month. This is something else. Ideas?

Kumar: Maybe they were written fine, and the server just read them in the wrong order.

House: But we read them again, and they're still in that order. You think we read them wrong twice? Either the data store has completely lost its mind and is out to get this one particular user, or we wrote them wrong. (Idiot.)

Thirteen: Maybe something weird happened at the same time as we were writing them.

House: Okay, go look at the debugging logs.

Scene 5 - In the lab

Kumar: Man, these sanitized debugging logs suck.

Thirteen: Yeah, but too many people have access to these logs. You know Cuddy won't let us keep anything juicy here.

Kumar: And there's all these interleaved sessions... I can barely even tell what I'm looking for.

Thirteen: No, look, if we just grep for the session we want... here! The timestamp!

Kumar: That's just saying that it wrote out of order. We already knew that.

Thirteen: ... you're right. It's normal.

Kumar: Told you.


Scene 6

House: Well, if it doesn't look like anything weird happened... Maybe that just means nothing weird happened.

Foreman: Sure, the entries just wrote themselves out of order. Perfectly normal.

House: I mean, maybe these entries always do that. In which case, if we can write the same entries again--

Kumar: But the logs are sanitized! We don't know what data the user entered.

House: Which we would care about if the user had actually entered any data. But according to these logs, they just pressed four buttons.

Taub: You're saying you think it breaks any time a user pushes these four buttons. And nobody's ever noticed before?

House: Look at them! They're pretty weird buttons. Have you ever pushed them in this order?


House: Me neither. Go try it.

Scene 7 - In the lab.

Taub: This is stupid. We're just making this sequence of four edits, there's no way we could reproduce anything this way.

Thirteen: Wait! What was that?

[Dramatically zoom on their faces.]

Taub: It's a NullPointerException!


Scene 8

House: So there was a NullPointerException, and you guys didn't even notice it in the logs because didn't include any context in the grep. (Idiots.)

Taub: But we still weren't able to reproduce the issue the user saw. The entries were all written in order.

House: Who cares? We found a bug. Go fix it.

Scene 9 - The cafeteria

House: How's that refactoring going? Still think that making your code into thirty small files instead of one big one will make it somehow better?

Wilson: Actually, yes. When I moved the code around, I found three subtle bugs that had probably been annoying users for months.

House: Moving the code... (stares into space with a satisfied look)

Scene 10

House: You weren't able to reproduce it because you were running the wrong code.

Thirteen: But we checked! The bug fix from last month was already in production.

House: Not that bug fix, the other one that I made because I was annoyed that NullPointerExceptions could cause entries to be written out of order.

[Team stares blankly at him.]

House: Here, move these four lines back down to the bottom of the method, then push the shiny buttons again.

Taub: He's right, it reproduces.

House: And that bug fix is already lined up to go to production, and the NullPointerException's fixed now too.

Kumar: So you're saying we're done?

House: Yeah.

Kumar: Well, that was anticlimactic.