Thursday, September 24, 2009

Dr. Dro

Finally. As of about 9:00am on Tuesday, September 22nd, my doctoral thesis was deposited at the University of Wisconsin - Madison. I am now officially Dr. DeRose.

I look forward to having a life again.

I won't bother with the details of the thesis, but I did want to share my Acknowledgments. They are below.

This dissertation is like the final exam of a long class. And, like many finals, it is cumulative; paraphrasing Prof. Jeff Erickson, "the final will cover everything you have ever learned in your entire life, with a focus on what you learn here". In this context, I have innumerable people to thank, so the ones below are but a few highlights.

First, to my parents: thanks for staying in the United States, despite the personal sacrifice. Thanks for teaching me that C's are unacceptable because I can do better. And thanks for always supporting me, and wanting what's best for me, especially when times got tough.

To my father, special thanks for sparking my interest in programming. I don't remember how young I was when he gave me the Commodore 64. I know I was 11 when, as I started to play computer games, he handed me "The C Programming Language" and told me to stop playing and start making. To him I owe the epiphany of "so that's why pointers are useful!" If not for these things, I don't know where I'd be now.

Thanks also to Joseph Smarr and Steve Severinghaus. They turned a coding hobby into a love of computers and computer science. They taught me, through practice, example, and critique ("line after line of ugly, ugly code"), that software can solve real problems.

Many thanks to Phil Bohannon for teaching me that people live in different worlds. He showed me that so much of collaboration is discovering the benefits of other people's worlds, and sometimes leaving yours to live in theirs.

Finally, I'd like to thank my advisors, AnHai Doan and Raghu Ramakrishnan. They imparted to me their passion for data management. They also put up with me long enough to teach me immeasurably about how to think and how to communicate. These lessons will be priceless anywhere I go from here.

Tuesday, August 25, 2009

Five-Minute Ph.D.

Okay, I lied, both about how often I'd start posting, and about the content of the next post. Briefly put, finishing a thesis and preparing for a defense while working a full-time job is both painful and time consuming. My defense is September 18th, after which there will be much rejoicing, and possibly more consistent posting.

Until then, here's a cross-post from my other blog. I'm behind on that one, too, but since it's a work commitment, I write there before I write here.


As my Ph.D. defense nears, I'm thinking a lot about the most important lessons:
  • Don't look for reasons to fail; find ways to succeed. If something should or must be done, find a way to do it.
  • First figure out the right thing to do. Only then think about implementation, and see how close you can come. Even if you can't reach the ideal, at least you'll be pushing in the right direction.
  • Any good problem solver can hack a good solution quickly. What's more valuable is identifying the underlying problem, and how it relates to other problems. This tells you if something is a true solution, and helps discover other opportunities.
  • Think in a structured, disciplined way. First, separate out orthogonal issues. Then, solve them incrementally and iteratively. Don't try to attack the whole mess at once.
  • Finally, when communicating with others, try to tell a story. Start with something familiar, then make sure your ideas flow.

Those are the big ones. The gems of a Ph.D. education, in five easy minutes. Interestingly, none of these are particularly technical. But deeply technical things are limited in application. I think that's the real secret: the work you do in a Ph.D. is technical, but a good Ph.D. is about becoming a better thinker and communicator.

Tuesday, June 23, 2009

Program Manager Blog

I should also mention that I've started a new, more work-related blog called Learning Program Management. It's primarily about what I've been picking up in my new role at Microsoft.

The division between the two blogs is simple: if it deals with Program Management, Microsoft, or SQL Server, it'll go to Learning PM. Anything else I think worth sharing will go here.

Back on Earth Again

It's been almost a year since my last post, which is very poor of me. I don't know how it works for others, but when I make major life changes, I cocoon for a while.

Since my last post, I have gotten married, honeymooned in New Zealand, visited Brazil, moved to Seattle, started my new job, and bought a house (as you can see, Sarah has been much better than I about staying in touch). One important item not on the list is "defended my thesis", so there are more big changes to come. Nevertheless, I've mostly gotten my feet under me again, so it's time to come out of hibernation. Also, to mix as many metaphors as I can in one post, apparently.

So, if there's anyone still following this out there, apologies, and hello again. If you'd like to get in touch, my old email, IM, and phone number are all the same. All that's changed is my address:

Pedro DeRose
6704 E Crest View Loop SE
Snoqualmie, WA 98065

Now that I've poked my head back out, I'm going to try and be better about posting periodically. Next time: what I learned (or at least remember from what I learned) about buying a house.

Monday, August 18, 2008

New Phone Number

My phone bricked. I'll expand this post with details later, but for now, what's important is that my new number is 217-369-6980 until further notice.

Update: My number is back to 217-898-9662. Been that way for a while, actually. However, what with major life events (marriage, honeymoon, visiting family in Brazil, and moving to Seattle), I haven't had time to post updates. I'll try to be better about it in the upcoming weeks.

Friday, July 18, 2008

Restricting method access in Perl objects

This a geeks-only entry in the "Perl: Handy, but Ugly" series...

I often want to restrict access to certain methods in a class. One classic example is public and private methods. As another, I've written a class for data storage with both read and write methods, and sometimes I want an instance to be read-only, and other times write-only. I could implement this with an internal read/write flag. However, while I want that flag to be flippable, I don't want just anyone flipping it. That sort of thing is hard to do in Perl because it doesn't believe in enforced privacy.

Fortunately, Perl does believe in being powerful and flexible. So I've found a neat way of wrapping object instances in what I call adapters, which expose only a subset of the object's methods.

Thursday, July 3, 2008

Perl: Handy, but Ugly

In what will probably be a many-part series, here's an oddity of Perl that had me tearing out my hair for a couple of hours...

Thursday, June 26, 2008

Project Note Taking System

A while ago, I went looking for a good note taking system. Notes, as in on paper. I work on a lot of projects, and since I grok things better when I write them down, I needed a way to organize ideas, meeting minutes, tasks, and progress.

Thursday, May 29, 2008

Industry vs. Research

As a graduate student looking for jobs, a common question I heard was "Industry or research?" Industry jobs include developers, technical managers, and even applied researchers to a large degree. Fundamental research jobs are professors and research scientists at industrial labs, such as Microsoft Research and Yahoo! Research. The definitions are somewhat fuzzy (applied research is industry? industrial labs are research?), but a generally distinguishing characteristic is whether publishing papers is a primary aspect of the job.

It was this characteristic that made me realize the fundamental difference between industry and research. It's one I wish I had known when I started graduate school. In short,

Industry is primarily about selling products, while research is primarily about selling stories

Saturday, May 24, 2008

Job Decision

It's finally official. After nearly two months of applications, interviews, travel, negotiation, introspection, and extremely hard thinking, I've made a job decision. Come January next year, I'll start as a Program Manager in Microsoft's SQL Server team.

This was a very difficult decision, as I had to choose between five compelling offers. In the end, there were two primary considerations: location, and how I want to contribute to my field.