Rereading The Catcher In The Rye

Reading The Catcher in the Rye when you're in your 30s is a different experience as opposed to reading it in your teens. All I remember from reading it in high school was how I agreed with the rants about phonies. I don't remember any of the other details until I read it again.

What seemed like a simple character back then now seems incredibly young and terribly complex. I don't think I realized even back then that Holden was actually well-to-do; that he was narrating it from some sort of hospital; or even that it was set in New York city. The setting seems much more present now that I've been to NYC several times. I know where the museum with the Indians is.

These days, instead of simply agreeing with the boy's point of view, I can't help but worry if I've turned into one of those phonies that Holden Caulfield detested.

This post brought to you by the free wifi at SEATAC airport.

Book buying binge + building a library

So yesterday, I went on a book buying binge. I got:

I imagine all but one of them are part of a high school reading list. All but two of them I bought from a a used books store. I've read all of them, except for Gravity's Rainbow, which I plan to read on the plane to Texas next week.

One of my new year's resolutions is to start a personal library. It's not gonna be like this guy's library, but a modest one where I have copies of all the good books that I've read and enjoyed.

The plan is to mostly acquire them cheaply, from second hand stores. I got a ways to go, I think. Off the top of my head, I'm looking for copies of Flowers for Algernon, A Brave New World, and the Robert Fitzgerald translation of the Aeneid. Oh and a bunch of Shakespeare.

Christmas 2009

Noche buena picture taking

Had Christmas eve dinner with Joel, Julie, Rob, and Cindy. I tried making lechon kawali, and it sort of kind of worked, but it took way too long to fry the pork, and the oil splattered all over my kitchen. It was still fun to have xmas with good friends. Yes, that's San Miguel beer on the table, imported from Manila, $9.50—about 400 pesos—for six bottles!

After dinner we went to have midnight mass (which was actually held at midnight) at the local church (St. Jude, patron of the hopeless). Including Cindy, who was curious about how Catholics celebrated Christmas. She endured mass for an hour, which is remarkable, given how many people actually avoid going to mass.

Just like last year, I put up the tree barely in time for Christmas.

O Christmas tree

Today, a gang of Filipinos had another party at the billiards room downstairs. Fun... billiards, poker, and karaoke. I got the lowest scores at karaoke; I'm better at pusoy dos. Tess promised pictures on facebook. All in all, a busier Christmas than I expected this year. Probably a good thing for this old hermit.

Made from scratch ramen.

I love ramen, but the ones from a package leave something to be desired. I really wanted to have a chewy noodle that doesnt disintigrate into your soup. The kind you would get in a good noodle house.

Hand made egg noodles attempt 2

I've been reading the cookbook Ratio: The Simple Codes Behind the Craft of Everyday Cooking recently, and thought the pasta recipe (2 parts egg, 3 parts flour, by weight) would make for good ramen. So I attempted to make the noodles last weekend. It turned out really well on my second attempt, even though the hand-cut noodles are sometimes wide and sometimes thin :). I put individual portions into sandwich bags and put them in the freezer.

Made from scratch ramen

Tonight, I tried making everything from scratch. Made the vegetable broth, cooked some pork, boiled the noodles, and put them all together. Took an hour to make everything! It was a meditative process though, so it's ok. The end result was surprisingly edible. Maybe the noodles were a tad bit too al-dente and I might have added a bit too much soy sauce on the broth, but it is definitely better than Maruchan.

cuisine du jour

I'm gonna jump the shark on new year's resolutions and start blogging more. So my good friend Rob is working in Seattle now, and I have an excuse to go cross the bridge and eat at Seattle's many many restaurants.

I've been eating at a lot of French ones lately. Cafe Presse, Le Pichet, Cafe Campagne, The Artisanal Brasserie, and even Taste the Moment here in Redmond. They're all good, though the quail in Cafe Presse deserves special mention for being really good.

Escargot, however, is sadly disappointing. I'd rather have a plate of kuhol where you tease out the meat from the snail with a toothpick.

Speaking of French food, I've been trying to make Bechamel using lactose-free milk (the kind I usually have at home), and it's too sweet. I guess I can sneak out some free milk from Microsoft just for making sauce!

My profile

So many in my team went on this personality profile training (Insights Discovery). As part of it, we got a 22-page personality profile. I thought I'd upload it and let you decide if it's accurate. So here it is; there's at least one thing in there that's absolutely wrong. But in general I thought is was insightful.

Not sure that I learned anything that I didn't know though.

Civ

If you haven't heard from me lately, it's because I've been playing too much Civilizations Revolution on my iphone. The game is crashy, but that just makes me start over...

Hopefully the game will wear out on me like field runners did ;)

Can Runtime Assertion Checking Work for Concurrency?

I was reading this article Programs that Test Themselves in Computer magazine (unfortunately, link requires payment to access... Bertrand Meyer has a different but equally fascinating fascinating article which is now free to access: Seven Principles of Software Testing), and noticed that once again, the testing strategy described doesn't work out of the box for concurrent software.

The article describes an end-to-end scenario for automated+manual testing called AutoTest. It has an automated test generation strategy, a mechanism to run these automatically generated tests, and a way to automatically check the tests (pass/fail). They use the trick of runtime assertion checking of postconditions as an oracle (a technique I also used in my thesis). They paint a very attractive picture of testing that fully integrated automated and manually written unit tests that can check their own correctness. Problem is, it doesn't *quite* work for concurrent software.

Issues include:

  1. An automated test generation strategy that is inherently single-threaded
  2. No knob for exploring different schedules when executing the tests (byproduct of the first issue)
  3. Runtime assertion of postconditions don't work in concurrent systems.

The first issue is probably easy to fix, one can imagine a variant of their test generation strategy but on multiple threads. The second can be fixed by running a test multiple times, each with a different thread schedule such as the CHESS tool does. But the last one is quite problematic.

AutoTest relies on the fact that you can evaluate design-by-contract postconditions at runtime to see whether they hold or not. But in concurrent systems, DBC runtime checking is a lot more tricky. Imagine that you have a simple concurrent stack type that had a Push() method: a typical postcondition for a stack would assert that after the Push(), the size of the stack grew by one element. But what if there was a Pop() running concurrently with the Push()--it is now possible that by the time the Push method returns, the stack did not grow at all!

I kind of recall a JML related paper where they try to solve this by putting in safe points--locations inside the code where pre- and postconditions can be checked safely. It wasn't clear to me that this is doable in general. Plus, we now have to muddy the implementation with contract stuff--which isn't very clean at all.

The idea of self-checking software components is certainly very appealing to me, but how do we make it work for concurrency components? Can we make dbc-style runtime checking work? Or do we need something else?

Code coverage for concurrency

My article with Chris Dern on synchronization coverage is up at MSDN Magazine.

Who could have guessed that someday I'd co-author an article on MSDN Magazine. lol

Taste the Moment

One good thing about moving to a new neighborhood is the opportunity to explore it. Today, I discovered Taste the Moment restaurant, about a block away from my apartment. It's a real cute place, it feels like you're eating in a dollhouse.

Taste the moment II

I had brunch there, ordered the eggs benedict, and it was yummy.

Stuffffffff

You never really realize how much stuff you got until you move.

Nearly all my worldy possessions

Most of the boxes are marked "kitchen". The new apartment has a smaller kitchen with fewer storage. Wonder how I'll fare.

The new pad

Oh well, I guess I'll find out.

Omelette almost totally unlike Julia Child's

Inspired by the movie, I attempted to make an omelette just like Julia Child made it. I ended up with this sorry looking thing. I think the pan wasn't hot enough, and I kept the eggs in too long. Also, I put too much butter that wasn't that fresh anymore. Oh well, maybe I'll attempt it again after I move :)


Omelette, originally uploaded by flyingroc.

Here's Julia making an omelette, the right way.

Unexpected Lechon

Yesterday, Joel and I went to the Filipino Community Center in Seattle, because we heard the consul would be there and we could register to vote. But it turned out when we got there around lunch time that they consuls have left for California already. However, the people there were having lunch, and in the typical Filipino fashion, shared their lunch with us, which turned out to be lechon.

It's not the best lechon in the world, not like the kind Anthony Bourdain rhapsodized about. But it was lechon nonetheless, a whole roast pig. A few stragglers were there too--a couple of nuns also missed the voters registration. Oh well, they will do another one in November; not sure whether that qualifies me to vote for the elections next year, tho.

Getting a new lease

Signed the lease today, moving to a one-bedroom apartment in downtown Redmond. Should save me a few hundred dollars a month in rent. Gotta start packing things up... I should move every couple of years so that I can re-evaluate the stuff that I have.

I'm hoping this blog gets a new lease, too. Gotta have more inane ramblings. So what should I talk about in this blog?

Julie and Julia

I saw Julie and Julia tonight. Friends at work were joking about how it was a "chick flick". Yeah, it is, but how can I *not* watch a movie about Julia Child? It was a good movie. I am not usually a fan of Meryl Streep, but she did justice to the role here.

After watching the movie, I felt like I should be cooking more. Ah well, perhaps after I move next week.

Here's a video of Julia Child:

"Save up to null on your car insurance"

LOL just goes to show, they never really read these things. This should remind us all that when dealing with numbers especially floating point, we should be careful about Not-A-Number values. Reminds me of this article by Gary Leavens.


photo, originally uploaded by flyingroc.

The cost of software error

It's about $500 Million for Social Security. What's the likelihood that two people have the same name and birth date? And what's the likelihood that one of them is a felon?
The lead plaintiff in the class-action suit, Rosa Martinez, 52, of Redwood City, Calif., was cut off from her $870 monthly disability benefit check in January 2008 because the system had flagged an outstanding drug warrant in 1980 for a Rosa Martinez from Miami. An investigation showed that the warrant was for a different Rosa Martinez. Martinez tried for months to convince officials that she was innocent but failed.
(via slashdot)

Back from vacation

My wonderful vacation was punctured by a tragic event. My nephew Tyler, born with a congenital heart defect, passed away after surgery. Angel and Tom are heartbroken, but determined to persevere with life, I think. I'm praying for them.

Aside from that tragedy though, my vacation was great. I got to spend time with my family and friends. Got to go home to my home town of Cotabato City, got through singing on stage at my father's birthday without any scars, and even spent a day at the beach (Pearl Farm beach resort).

And all the food! It seems that just as one meal is ending, another one is about to start. In many ways, our lives in the Philippines is one of incredible luxury. We have maids to wash our clothes, cook our food, and clean our house. We have a driver to chauffeur us around. Food is cheap *and* good. If only we could fix government corruption, traffic, and pollution.

Now it's back to work, hopefully with renewed vigor and passion. I considered not coming back to the US and decided not to give Shaun a heart attack :P. Thanks to everyone who made the trip so wonderful. To the friends I didn't get to meet, let's do it next time!

Strange cooking dream

So I dreamt I was in a cooking competition, where I was helping out my cousin Anjing. In my dream, I accidentally threw out the risotto, and couldn't figure out how to brew a simple pot of coffee. Hm, what could this mean?!?!

I'm still here

I think I might have some form of blogger's block. You guys have anything interesting to talk about?

Where the bugs are

I've only skimmed the original paper, but this article is intriguing--"...in their study, the top 20 per cent of the largest programs contained over 60 per cent of the bugs."

I've felt like longer functions are more bug-prone per line of code than shorter ones, and this study seems to confirm that intuition.

Condo hunting

Went to look at condos today. There are some pretty nice places out there. But given my current financial state, anything I buy would make my budget extremely tight.

Condo search

On the one hand, it's a bit of a "waste" to spend all that money on rent when I can use it to pay toward my own place. On the other hand, is it really a smart idea to deplete my savings given the current economic climate? Maybe I can ask Suze if I can afford it!

Data visualization example

It is difficult for us people to visualize large numbers. And I still have problems with intuitively projecting "exponential growth" even if I deal with it every day.

Weekends pass by so quickly

And I always find I haven't done half of what I wanted to do. Even when I just wanted to do nothing.

The travails of shoe shopping

I have small wide feet, and they're hard to find shoes for. So the annual shopping for a pair of "leather shoes" and a pair of "rubber shoes" went the usual way--frustrating. Shoes that I liked didn't fit, and shoes that fit were horrible. So finally decided to see if online shopping might be better. I ordered two pairs of shoes from endless.com. One pair looked really good, but were so narrow that I had to return them.

Thankfully, the other one, a pair of Teva hiking shoes actually fit. So now I feel ready to climb Mount St. Helens.

Shoe shopping online verdict: still frustrating, but possible.

In Remembrance

It was some of the saddest times of my years at Tech. But I was never prouder of the Hokie nation.


800px-2007_Virginia_Tech_massacre_candlelight_vigil_4, originally uploaded by shizhao.

Clouds over Vancouver

What would have been a perfectly nice, if cloudy weekend was marred by someone breaking into my car and stealing my GPS, ipod cables, and a sweater(!). When Anjing said we had to call the Royal Canadian Mounted Police, I was imagining some guy on horseback galloping into the garage... but alas we just had to give the details of the theft through the phone.

Oh Canada!

Other than having to have my window repaired, it was a fun weekend; we went to Granville Island, and then went to Richmond to take a peek at the Olympic oval. On Sunday went to Easter Mass at a church with so many Filipinos, it was like having mass at home. Vancouver definitely has a lot more Asian feel to it than Seattle. We had Dimsum--it was good, about as good as you'd get in Hong Kong, I'd say (which is pretty dang good).

I'm looking forward to visiting again, hopefully then it won't be so stressful with the car and all. This is the second time someone broke into my car in two years! I feel so violated.

Coming back to Seattle, I had to navigate the old fashioned way--with directions printed out from Google maps, and looking at the signs.

In Vancouver

"What's your status in the US?" The Canadian immigration officer said. It took me a second to realize she wasn't talking about my Facebook status. Anyway, I'm here in Vancouver to visit cousin Anjing for Easter weekend. It's a 2.5 hour drive or so from Seattle to Vancouver. It was an uneventful drive (I love my car!).

Pretty excited finally get to travel here...

Back

I'm back home, it was a good trip. Here's me presenting at the conference. Pooja insisted on taking the picture :P.

Presenting at ICST

There is some deep thinking going on in software testing research, glad I was able to go.

Going to Denver

Headed to Denver tomorrow, where I'm going to present a paper for ICST, the International Conference on Software Testing. The paper (An Automated Black Box Testing Tool for a Parallel Programming Library), written by me, fellow tester Pooja and our manager Shaun, is about testing PLINQ using an automated test case generation tool called SLUG. One thing I'm grateful for in my work at Microsoft is that I've been able to apply a few things from my previous life as a researcher that has proven pretty effective in practice.

Being in industry is a lot different from being a grad student. For one, I have hard deadlines, and my manager actually expects me to get things done. The nitty gritty of actually testing a technology that is going to be released to the world requires plenty of work that can at times be tedious and tiresome. But it also is incredibly satisfying to know that your work matters, and has impact on a large number of people.

In our team, we have a lot of freedom to apply our creativity and knowledge to the job at hand. That's what we did in developing the tool we discuss in the paper. Hopefully, by the time we ship, it will have helped in making a stable and reliable set of parallelism API that everyone can enjoy.

Bottom?

Certainly hope so...

My life as a software testing professional

It occurred to me that I don't blog much about work, even if it consumes much of my life. So for the curious (that's you, Ma!) here's a bit of what I do at work. Most of you who read this blog know that I work at Microsoft. Specifically I work as part of the pfx team, who are developing a set of programming API for parallel computing in .Net. In other words, we are making stuff so that it is easier for software to take full advantage of the multiple processors that are in most of today's computers.

My role in the team is a software tester (a software development engineer in test, we like to call it). There's a lot of hand-wringing in the industry and in Microsoft about what a software tester does. Lately, I've been leaning toward Bertrand Meyer's idea that software testing is about finding bugs (I paraphrase). So a software tester's basic job is to find bugs--that's what I do to varying levels of success.

To find bugs, we testers have to employ a large set of diverse skills. Programming skills to develop test cases, automation tools, test oracles, etc. People skills to work with our software development counterparts (not my core strength, haha). Debugging skills to analyze what has failed and how it failed. And intuitive skills--all testers at some point learn to listen to that sinking feeling in your stomach that when you turn a knob, everything will fall apart! I have to admit that sometimes, finding bugs in software is incredibly satisfying, particularly when you know that it ultimately isn't your job to fix it :P. Of course what's even more satisfying is that when we find the bug, we know that is one bug that people will not have to see when the software finally ships.

This being Microsoft, I work with some of the smartest, most dedicated group of people I have ever known (and I've known a lot of really smart people). That makes life exciting--everyone has valuable input, and everyone has productive output at a dizzying rate. Sometimes this can be difficult and exhausting, trying to keep up with everyone else, but it is also quite fun and challenging to learn something new every day. Perhaps part of what makes it enjoyable is that for a group of very intelligent opinionated people, this team is remarkably friction free (not entirely friction-free of course, no workplace is).

If you're curious to know more about the team I work with, a few of them have their own personal blogs: Joe, Igor, and Ed, plus the team blog. They talk about the hard-core meaning of life (or computer science which, really, is synonymous with life), while I post pictures of my dinner. :)

Sometime around midnight...

The song's been haunting me lately though nothing so dramatic happens at midnight in my humdrum life :).

In fact, it's close to midnight right about now, and I'm baking bread. Started making the dough fairly late, so I'm stuck waiting for the dough to rise. The other option was to put the dough in the fridge so it rises slowly, and then bake it early in the morning. Not an option at all, if you ask me.

Saturday Noodles

Boom Noodle just opened in downtown Bellevue. Finally somewhere to go when I have a craving for a hot bowl of noodles. Somehow my own attempts at making noodle soup never come out just like they do in noodle houses. I ordered the shio ramen...

Shio Ramen

And the mochi ice cream

mochi ice cream

Yum yum!

One Pot Penne Puttanesca

This is something I like to make when I go home late and a little bit tired, since it's an easy one-pot meal. And it is made from stuff in your pantry, so you can still make it even if you're running out of fresh ingredients.

Ingredients:
2 handful of penne
1 can Diced tomatoes
Capers
Chili flakes
Minced garlic
Olive oil

To make things a little bit more interesting, I thought I'd take some pictures of the cooking process this time. In a small pot or saucepan, sautee some garlic:

Sautee some garlic

Yes, it's minced garlic from a jar... don't really feel like chopping them, most days. Dump a can of diced tomatoes in there, don't worry about draining:

Dump a can of diced tomatoes

Put in a couple of handfuls of pasta. Or just one handful if you have big hands.

One handful of pasta Another handful of pasta

Stir the ingredients, season, and cover the pot. Lower the heat.

Stir

Cook until the pasta absorbs most of the excess liquid. If you think it's a little too al-dente, add a few tablespoons of water. Then, when it's cooked, add some capers and chili flakes.

Add capers Add chili flakes

And we're done! Easy peasy. You might want to put some anchovies in there, with the tomato sauce. I like to eat it with some toast. If the bowl below is the size of your serving, there is enough for two. Personally, I just eat it all myself.

Penne Puttanesca

American Adobo

I am making pork adobo tonight. Adobo is one of those dishes that every cook has a different take on. I found this video for chicken adodo on Youtube. It's kinda funny, props to him for doing it in heavily accented Filipino! :)

I love adobo. It's a very uncomplicated dish to make, but it tastes really really good.

Update:

Pork adobo

Watchmen

After complaining about not having time to read, I spent midnight to 5am reading the Watchmen earlier today, so that I could watch the movie. The book was awesome, but I have mixed feelings about the movie. I liked how they hewed pretty close to the graphic novel, but then again by doing so it may have made it a more difficult movie to watch for those who do not already know the story.

On the other hand so much of the original story had to be cut out to fit everything in 2.5 hours (which is already pretty lengthy movie). I wonder if a mini-series would have been a better format for the movie. Plus it's kinda sad that the ending was slightly different. While the giant psychic squid would be a little weird, it's really no weirder than people running around in costumes fighting crime.

In the end I enjoyed the movie for its cinematography (it's gorgeous), and characters (excellently portrayed by the actors). If you liked the book, watch the movie. If you haven't read the book, read it first, then watch the movie.

Trying out the Kindle iPhone app

Amazon released a Kindle app for the iPhone yesterday, and I downloaded it and tried it out. I tried getting a free book--Kim Stanley Robinson's "Red Mars". Amazon's pretty shrewd giving away the first of a trilogy for free. The text was surprisingly clear and readable on the screen. However, there were two maps at the beginning of the book that I could not figure out how to zoom into. I can see myself reading novels on my phone, or some other electronic device, but I think I would still mostly read my books on paper, for now.

In any case I seem to have very little time for reading for fun these days :(.

Tonight's Dinner...

Bacon, lettuce, egg and cheese sandwich. Sometimes it's just nice to hack up something quickly, and not worry about bugs in the resulting product.

Bacon Lettuce Egg and Cheese Sandwich, originally uploaded by flyingroc.

Though I did thoroughly wash the lettuce, just in case it has bugs.

71 mpg

Maybe I should have held off and got this instead.

New Blog

When I set up my blog five years ago, it was an exercise in web development using PhP and PostgreSQL. I've added a few features as time went by, but it's gotten to the point that it's just easier to use existing blogging software, instead of maintaining the old code.

So, welcome to the new blog. I purposefully made it visually similar to the old one, to help with the transition. You can still go to the archive for older posts. Pardon the dust, I'm sure there will be some issues before things settle down.