Type conversion
June 16th, 2009Someone asked me how to convert a string to a date. This was my answer:
"Your place or mine?"
It works over email, IM, Facebook, SMS and even blog comments! Of course, it’s most effective AFK.
Someone asked me how to convert a string to a date. This was my answer:
"Your place or mine?"
It works over email, IM, Facebook, SMS and even blog comments! Of course, it’s most effective AFK.
Now that I’m back in Toronto (though not quite on EST), I’ve had a bit of time to think over my research. Emerson was kind enough to review my study design and share his literature. Thanks very much for that!
One issue that arose from our discussion is my usage of the term “expert”. In research literature, expert programmers are generally those in industry who are paid to program. In all the software firms I’ve worked for, I’ve observed huge differences among these “experts” to the extent that I don’t feel right calling them all “experts”. I can’t call these “lesser experts” novices because that term refers to inexperienced programmers, such as most CS undergrads.
I ended up choosing a term used by Sonnentag’s study of software design expertise[1]: high and low performers. So now I can talk about high- and low-performing novices, as well as high- and low-performing experts.
My new problem is how to operationalize “performance”.
[1] S. Sonnentag. Expertise in professional software design: a process study. The Journal of applied psychology, 83(5):703–715, October 1998.
This morning, I made my final pitch at the conference to Thomas Setzer, a postdoc from TU München.
I walked over to Banana Leaf for a great 7 course Malaysian tasting menu for lunch. The highlights of the meal were the chicken in gulai sauce and the fried banana dessert.
The rest of the day, I went to Granville Island; tried the Taproom Taster, which is a 4-course beer sampler, got a screaming monkey, took the aquabus across False creek, watched the local dragonboat teams practice and gawked at the $1.5M waterfront condos. Yes, that’s half a million per bedroom. Ouch!
A quick summary of what I took away from the talks today:
Carlo Ghezzi: We should measure quality via the impact of our work
Emerson Murphy-Hill: Refactoring toolsmiths don’t refactor much; even less for normal people. (Ready, normal people? / Ready!–ready!–ready! / Let me hear it!)
Jorge Aranda: Software repositories don’t give us the full picture.
Steve: We are seriously hosed if we don’t do something drastic in the next 5-10 years.
Tonight’s reception was at the Vancouver Aquarium. I got to the sushi table too late so I missed out on that. I found it oddly disturbing to see people eating raw fish at the aquarium… Anyway, I saw the belugas, dolphins, frogs, caecelians, jellies, and of course, sashimi. Err, fish.
During the course of the evening, I pitched my research ideas Karl Reed, an academic gypsy from Australia who’s currently in Italy (I wish I had his job); Shivkumar Shivaji, an engineer at Yahoo!; and Adrian Kuhn, a PhD student from Berne, Switzerland. I felt humbled yet enthusiastic to be surrounded by so many smart and well-spoken people.
Serendipity struck once again. I was trying to recruit people to go to a little Japanese dessert bar prior to dinner. Somehow, Emerson Murphy-Hill ended up coming along–I’ve been keeping an eye out for him because Gail told me we had similar research interests. I had no idea it was him until I introduced myself after we ordered our parfaits. He’s currently at UBC studying super geniuses. I gave my pitch and it seems like our approaches are very similar. If we can arrange a three-way study replication with Chris Parnin, I think we’d have something definitely worth presenting at the next ICSE. Oh, the black sesame parfait I ordered was quite interesting. Mmm…
Finished off the evening at a pool side poster reception; roasted animals carved on tables, open bar and food being carried by wait staff on fancy trays–yes, that type of reception. They had porter cheese there! Beer, samosas, turkey, roast beef; first time I ate sushi standing up. Despite all the alcohol, I somehow did not end up falling into the pool as I toured the posters.
I started off the day attending talks given by Tony Hoare, John Cameron, Daniel Jackson (and later on in the afternoon, Michael Jackson himself). It was very interesting to see the interplay between big names in the field; and even more interesting to see Steve from our research group challenging their views.
I pitched my research ideas to Andrew Ko who gave me quite a bit of good feedback about how I should focus my efforts. I need to reflect on these further before I can write about it.
I went over to the legendary Tanpopo all-you-can-eat sushi restaurant on Denman for lunch. I haven’t been there for 11 years but the food was just as good as I remember. The layout of the place changed a bit. It seems like their kitchen is much bigger. Anyway, lunch went really well except for the final bit of awkward discussion. That’s all I’ll say about that.
On the way back to the conference, we had a bubble tea craving and decided to hike up Robson to Bubble World. They have a special machine that shakes the tea so much it forms lots of tiny bubbles resulting in a very creamy ethereal taste. Milky Taro tea with pearl–Mmm mmm mmm!
Sukanya taught me how to speak and read some Thai. All the interesting stuff at this conference really does happen outside of the regular program.
I bumped into Chris Parnin on my way to dinner and ended up chatting about the empirical research he’s doing. He shared his insights on the difficulties of collecting data during studies and strongly cautioned me to draw upon existing bodies of knowledge whenever I can. Our research interests are similar enough that we’re thinking about replicating each other’s studies and seeing what results we get. He also told me that the cognitive models of memory I’ve been using to frame my research questions are very outdated. He shared a number of pointers about current models (e.g. episodic memory) and how to find relevant literature on the subject. I found out he’s quite an egg.
At the IBM Jazz reception, I met another member of the UC Irvine group. Joel Ossher is studying how people look for code. From what I could gather, he wanted to be able to do a natural language query and get back the software artifacts that implement the answer to the query. For example:
Q: How do I make Python say ‘Hello world’?
A: print(’Hello world’)
Jon proposed a contextual help system based on mining and indexing various project artifacts. For example, the system would provide realtime links from within an IDE to related artifacts such as other bits of code, mailing list postings and BugZilla tickets. We think we can pull it off in 2 weeks and get Jon his thesis topic. Coincidentally, at the reception Apple Viryakattiyaporn presented a poster on very similar work she did recently at UBC.
I finished off the night with sweet potato fries, root beer and a bellini for dinner at White Spot. Seven days left.
I met Gail Murphy from UBC. She offered invaluable advice and insight into my research idea. She’s tried my approach before and strongly cautioned me against doing between-subjects experimental design because of the wide variance in my experimental unit (i.e. software practitioners). She also suggested I should use pair programming–with the less experienced of the pair driving–in my study to force the programmers to explicitly communicate their thoughts to one another as they complete their task. I’m thinking about planting a pseudo-novice as the one driving so that they can prompt their partner to fully explain their intentions.
On the bus ride to Grouse Mountain, I had an interesting chat with Gyeuk at ETRI about software security and attack vectors. It was really foggy tonight so we didn’t get a very good view outside the gondola. As we passed the two towers, our car rocked slowly back and forth. The feeling was somewhere between riding the subway during rush hour and The Bat at Canada’s Wonderland.
Grouse Mountain is a beautiful facility. Unfortunately, the fog robbed all 92 of us of all its grandeur. Open bar and 3 course dinner thousands of metres above sea level. Mmm…
On the bus trip back, I was talking to Daqing Hou, an ECE professor from Clarkson University in New York, about software practices involving code cloning. I found it interesting because code cloning occurs frequently within the projects in the Eclipse ecosystem due to API policies.
I had cheesecake for dessert paired with a Grouse Mountain Cream Ale. Mmm…
Tom Ball gave an inspiring history of version control tool evolution and its relation to the present field of mining software repositories. What surprised me is that in the mid 80’s, there existed tools for editing code across versions similar to how Apple’s Time Machine provides access to historical versions of files; of course, minus the fancy 3D animations.
I met Susan Sim and her student Sukanya Ratanotayanon–both from UC Irvine–at the ICPC poster session. Susan was presenting an interesting visualization of concept location activities as a graph similar to an EKG. It reminded me of body position graphs used by polysomnographists which indicate whether a person is sleeping on their side, back or stomach. Frequent changes in the graph indicate whether they’re uncomfortable while they sleep; however the graph alone is not enough of an indicator of whether they’re breathing is obstructed–which is the primary reason for conducting a polysomnographic study.
Sukanya presented a semi-automatic method for concern map recovery. I’m curious how the contents of the concern maps she generates compare to the task contexts built by tools like Mylyn when used by experienced developers. If her method can reliably predict which files a developer would probably need to review or modify for a given task, that would certainly help users of Mylyn prepopulate a task context to guide their navigation around a code base.
I also met Jim Buckley from the University of Limerick. He’s studying the information seeking behaviours of open source developers. His study found that for certain open source projects, the most prevalent questions asked on developer mailing were about development processes (e.g. How do I access the bug tracker?). He also found more than half the questions asked went unanswered. I’m wondering whether those questions weren’t answered because the answer existed elsewhere on the project portal such as a wiki page.
Rain is in the forecast for the next two days. I spent much of the afternoon outdoors wandering along the sea wall, through Stanley Park, and around downtown Vancouver. I finished off the evening with some uni and mint-infused shochu. It was quite smooth and didn’t taste like it was 25% alcohol by volume–although I certainly felt the 25% a short time later.
8:50 - Met Ric Holt.
8:59 - Met Mike Godfrey; off to MSR.
9:24 - Watching a guy firing up his ThinkPad. Oh, wait–it has an Apple sticker on the top shell.
9:30 - His XP finally booted up. Damn.
9:31 - I realized why people wear their id badges backwards. Most of them aren’t registered for these particular workshops and conferences. Hmm…
9:35 - Battery low…
10:30 - Met Sonia Haiduc from Wayne State University. She studies program comprehension but tries to factor out the effects of interruptions. The study I’m planning to do is similar, except I’ll intentionally interrupt the subjects.
14:00-16:00 - Lots of software design principles exist (high cohesion, low coupling; Law of Demeter)–Are there any correlations between defect/fault rates and violations of specific principles? How do you measure whether implementing a principle is effective? Under what circumstances would particular principles apply?
16:12 - Yay, I found a power outlet!
16:31 - Exhausted. Skipping last set of talks to charge laptop and type this up. Planning to finish off the day with a visit to Tanpopo on Denman and a trip to T&T in Chinatown..
19:00 - Had a prix fixe dinner at Al Porto. BC smoked salmon, portobello ravioli, seared BC sablefish, and chocolate ganache torte paired with more Oyster Bay sauvignon blanc than I could finish. I don’t actually know how many glasses I had because our waiting kept topping us up throughout the night; Met Bernard Wong from UTS in Sydney Australia and chatted about lots of fun nerdy stuff.
9:56 - I’m at YYZ, watching the staff wash windows.
“Click here to skip this welcome screen”. Welcome? They just stuffed an ad into my face. Despite that, they want to charge me for ‘net access.
Bell’s hotspot also reroutes me to Boingo. WTF?
Ok, apparently, Boingo is a portal site that lets me log into some other WiFi provider. They all want to charge me.
10:04 - Fail fail fail. I can’t even connect to their price page.
10:10 - Ok, I bought a month’s worth of access. That’ll get me connectivity at my hotel too so I guess that’s not bad. Note to self: Access charges reoccur unless I explicitly cancel.