Wednesday, November 23, 2011

Simplifying speech

“I'm sorry I wrote you such a long letter; I didn't have time to write a short one.” - Blaise Pascal

Recently, I decided to reduce my use of the following words, along with others that aren't coming to mind.
  • very
  • like
  • really
  • extremely
  • incredibly
The reason? I believe my overuse of emphatic adverbs decreases the emphasis. "I really enjoy that painting" imparts less meaning than "I enjoy that painting." Even though I've said that I really enjoy the painting, I believe it sounds as though I don't enjoy it as much as if I omitted really. "That dress is very beautiful" doesn't mean as much as "that dress is beautiful." I believe overuse of emphasizers also decreases memorability. When I think of the most persuasive people I know, they tend to speak simply and focus on a few concepts, instead of giving lower emphasis to more concepts. Their focus drives home a clear message - something to remember the conversation and the topic by.

There's a few other words I'm trying to say less often:
  • thing
  • stuff
These words require more mental engagement of the reader or listener. "Would you bring those things over here?" (and pointing) requires the listener to determine the meaning, whereas "would you bring the plate and glass over here?" puts the burden for my request on the speaker. Even when the noun is obvious to speaker and listener, replacing the noun with "stuff" or "thing" frees the listener from determine the speaker's meaning.

Twitter has trained me to be more precise in my statements. The Twitter service, with its limit of 140 characters, pushes users to retype their tweets to impart maximal meaning in finite space.

Thursday, November 10, 2011

The landlord game

Helen and I have been on the lease for our apartment since September 2007. The landlord had us sign a 2 year lease, with a $50/month rent increase after 12 months (in September 2008). There hasn't been another rent increase since then.

The rent is low for Palo Alto. I joke to friends that our approach has been to not contact our landlord at all - if she forgets about us, then she won't remember to raise our rent! Seems that our landlord thinking about us may have caused a rent increase!

Our downstairs neighbors changed about a month ago, and over the past month the landlord has been involved with coordinating repainting the house and repairing the back steps. This week, I had to contact the landlord when a pipe rusted out and we started dripping water onto our downstairs neighbor's yard.

Today, I got an email notifying us of a rent increase of $50/month, effective January first. The rent is still fair, so I have no complaints. But it seems that our stay-out-of-the-landlord's-mind approach had been working!

Tuesday, November 08, 2011

iOS from an Android user's perspective

I'm starting at Strava at the end of the month - a cycling and running data company that has iOS and Android apps. I already have a Google Nexus S Android device. I wanted to be able to try out Strava's iOS app, so I picked up an iPod Touch 4G last week.

I had an original iPhone and iPhone 3G. While working for Google, they gave me a G1, a Nexus One, and a Nexus S. The G1 was terrible, not worth switching to. It was slow, Android then was clunky, and it didn't engage the user the same way that the iPhone did.

I liked the Nexus One better than the iPhone 3G (more responsive, widgets, etc), and I happily switched over to T-Mobile and the Nexus One in December 2009. When Google gave me a Nexus S, I upgraded to that. When on Android, I've always used phones that were latest-release-track, carrier-software-less.

Every once in a while, I read iPhone users' responses to trying out Android, and invariably they're frustrated, disappointed, and certain iOS is the better platform. Every time a friend asks me iPhone versus Android, I wax on about how Google Voice is amazing, the Gmail and Google Calendar integration are great, and I summarize "Android is a better phone that does other things with less polish, whereas iPhone is a device that happens to make phone calls. If you live a Google life, use Android and Google Voice. If you like your music and well polished devices, and happen to make phone calls once in a while, buy an iPhone."

After a few days poking around on iOS, I'm disappointed by the ease of use of iOS. I believe I gave Apple too much credit.

There are things that I like better on iOS / the iPod Touch:
  • The screen has better colors than the Nexus S. The iPod Touch screen is brighter and crisper.
  • The iTunes integration is perfect. Musically, I live an iTunes life. doubleTwist is an inconvenience versus staying in iTunes. I've never synced a podcast to my Android devices - I have no clue how.
  • In the same vein, automatic conversion of high bitrate songs to 128 kbps AAC is convenient.
  • The iPod Touch is thin. Sure, the iPod Touch lacks phone hardware, but darn, every time I pick it up I notice its thinness.
  • The touch responsiveness is better. Every once in a while, I need to lock-and-unlock cycle my Nexus S to have it recognize when I lift off my finger. No such issues on the Touch. (Maybe I haven't dropped the Touch as often as I've dropped the Nexus S!)
  • Software consistency. It sucks that carriers put their own layer over Android - software I think doesn't make user experience better. It sucks that carriers and manufacturers don't upgrade older devices quickly or often.
  • Availability of third party devices for iPods is high. (eg: iHome, hotel alarm clocks, in car integration, Garmin ANT+ adapter)
  • Many applications are iOS first or iOS only. (I wish Android had a Chipotle app.)
Things that have annoyed me on iOS:
  • The keyboard always displays capital letters, even when shift isn't selected. (I miss Swype a lot too, which isn't native Android, but replacing the keyboard isn't possible on iOS.)
  • Lack of turn-by-turn directions in Maps.
  • When an app loads, and it has multiple prompts, I see the first prompt, then immediately see the second. I have to respond to the second prompt before I see the first prompt again. It's a jarring user experience; the prompts should be serial instead of going over each other before a user can react.
  • Prompting users for permission for push and location services on first app load is distracting. I'd much rather do that on app purchase/download like on Android.
  • The iPod connector insertion is awkward. I keep thinking I'm breaking something.
  • iOS presents the ability to sync with Gmail and Google Calendar from the phone, but not Google Contacts. (This is way better than it was on the 3G, where I had to do IMAP and iCal syncing manually, but still sub awesome for the legions of Gmail+Calendar+iOS users)
  • Calendar and Gmail didn't background sync by default. They're pull systems - I understand that they could be push if I dug deeper, but that's annoying.
  • At some point, the home screen instructed me on how to rearrange the apps. However, I'd already done that a few times.
  • To change settings on some apps (and most iOS apps), you have to go to the Settings application. Why do I mentally have to context switch do change settings in the app I'm already in?
  • I miss the hardware back button. Each app seems to have its own convention about how to go back. (On the other hand, at least in iOS it's clear what back goes to.)
  • The screen doesn't get bright every time I turn the display on.
  • The address bar / search box differentiation on the mobile browser is silly. Apple: please steal that from Android or Chrome.
  • I need to authenticate repeatedly. I had to type my password to download a free app.
  • There was no way to discover what "iTunes Match" was from the settings dialog asking me if I wanted to turn it on. (Much of the iCould stuff seems slapped on)
And here are some design decisions I disagree with, but aren't clear iOS problems:
  • I miss widgets - desktop items that aren't simple app launchers.
  • Apple charges money to take songs you've already purchased and crop them to ringtunes.
  • App store policies and platform rigidity / control. Why can't I replace the keyboard? I wish it had deep Google Voice integration.
  • Where's Siri? Why is Siri iPhone 4s specific?
  • Fanboys. Actually, that could be true for both iOS and Android.
My conclusion? The iPhone has become more complicated since the 3G, and the user experience hasn't kept pace. Apple did a good job with Visual Voicemail - but Google Voice and its deep Android integration makes Android a better phone. I can place and receive calls and text messages from my computer or phone, and I can listen to my voicemails on my computer or phone. I'd give my mom an iPhone, but she'll still be confused for a while. The device for anyone who's frequently using the phone as a phone, or someone who wants to highly customize their device? Android.

Friday, October 28, 2011

The Matt Test

In 2000, Joel Spolsky (insightful software engineering blogger) introduced The Joel Test. It tests the bare minimum for a dev team with 12 easy questions:
  1. Do you use source control?
  2. Can you make a build in one step?
  3. Do you make daily builds?
  4. Do you have a bug database?
  5. Do you fix bugs before writing new code?
  6. Do you have an up-to-date schedule?
  7. Do you have a spec?
  8. Do programmers have quiet working conditions?
  9. Do you use the best tools money can buy?
  10. Do you have testers?
  11. Do new candidates write code during their interview?
  12. Do you do hallway usability testing?
A score of 12 is perfect, 11 is tolerable, but 10 or lower and you've got serious problems.
It's not a perfect test of an engineering organization, but it's a great minimum. It's great for being over a decade old - but at a decade old, some of these seem painfully basic to me now (source control and bug database).

I would add a few:
  1. Do you use Google Apps, or at least Gmail and Google Calendar?
  2. Do you deploy at least once every other week?
  3. Do you love your and respect your designer?
  4. Do you have a Twitter account that replies to users?
  5. Do you have design docs for major components that resembles reality?
  6. Do you have a wiki that employees use?
More to come, I'm sure. This is a living document. 1-6 were added on November 2, 2011. I'll annotate the addition date for new ones.

Thursday, October 27, 2011

INTP grieving

I've been playing with Myers Briggs types lately to understand myself and my relationships with others. I've been trying to understand where I come up short and where I excel, trying to figure out what my strengths are and what I would be better suited for in life.

One test said I'm INTP - Introverted (versus Extroverted), iNtuitive (versus Sensing), Thinking (versus Feeling), Perceiving (versus Judging).

My uncle (father's brother) Roger passed away this morning.

Roger is 10 months younger than my dad - and they have some scarily similar mannerisms. Roger and my dad shake their heads the same after swimming, they ski the same, their speech has the same cadence, heck, they even swear the same.

Roger, his wife Diane, and my cousins Mike and Nicole live in Truckee - under four hours from Palo Alto (where I live) and close to great skiing. I've become close with them - I've spent dozens of nights at their home since I moved to California. Roger and Diane are great hosts - they've even opened up their home for my friends. Every meal with them is engaging, and love is palpable around them.

He was diagnosed in April of 2010 with a stage 3 GBM tumor - basically a badass brain tumor that had a 5% survival rate at 6 months. He had incredible doctors, nurses, and surgeons, and in the summer of 2010 it appeared the cancer was kicked. He did chemotherapy but there was no sign on the MRI of cancer anymore.

In March of this year, the cancer came back. Roger underwent surgery, but nothing seemed to work. This summer, he had a ruptured appendix surgically excised. Roger had to pause too much of his cancer medicine while the wound closed. The cancer had been crawling stubbornly to kill him, and after the surgery it was running.

I got the call Sunday that Roger was doing poorly. He passed away this morning at home - a few hours after the 4.7 quake 20 miles northwest of Truckee. He was 62 - too young.

I got the call from my mom at about 7:45 this morning to tell me. And I didn't cry. I bet my mom heard a robot on the phone - I was close to my uncle. And my voice showed no emotion, heck, I didn't feel much.

I didn't feel numb, I don't feel much except when I think about the loss. Just thinking "My uncle is dead" doesn't make me sad. Thinking "I won't be able to talk to him again" makes me sad. When I go visit his home and Roger's not there, when I see family pictures of my aunt Diane and my cousins without Roger, when I see my Dad with Diane and without Roger, that's when I'll grieve.

I feel weird about how I don't seem to grieve - but that's my personality type. I struggle to feel what his death means until I think through the scenarios that are different. And when I do feel what his death means, I struggle to express it others. I think that's part of the curse of being an INTP - we grieve - but we grieve on our own schedule, we grieve when we are in the moment where something is lost, and we don't express our grief well to others.

I'm happy that Roger lived for 18 months when he was given 6. I'm better for having gotten to know him better than I know my other aunts and uncles. But I will miss him - something won't feel right for a long time when I'm with his family or even when I'm in the greater Tahoe area.

Algo interviews are overrated

Google loves algorithms interviews. Palantir loves algorithms interviews. Pretty much every tech company who prides themselves on hiring smart people spends at least half the dev interview time on algorithms questions.

I think algo interviews are overrated. Useful to some extent, but not the only thing and not as important as most engineers think. I think Steve Yegge (mentioned yesterday) would agree.

In my opinion, these are the important things in hiring a new member on a dev team. They are not priority ordered or of equal weight.
  1. Ability to translate a problem into components.
  2. Ability to reason through a problem and feel the solution.
  3. Ability to keep trying and go deeper on problems unlike ones she's seen before.
  4. Ability to translate these solutions into code.
  5. A bag of tricks (data structure knowledge, technical knowledge) and the intuition that says "I bet there's a better way to solve this problem, I just don't know it yet."
  6. Ability to build stuff.
  7. Technical flexibility (can a SQL expert adapt to NoSQL? Can a Java person learn Ruby?).
  8. Attitude. Is the candidate going to mesh with the team? Are they going to make coworkers' days better or worse? At Google, this was "Googliness".
Good algorithms questions can address points 1 through 5, though algo problems and every day coding problems don't map perfectly. Algo problems are too neat - they're like bowling with lane bumpers whereas everyday coding is like bowling without gutters or even lanes.

The real kicker: algo interviews don't gauge the ability to build stuff. Some companies get this and ask for you to build something for them. Airbnb and RockMelt ask candidates to spend time building something on their own. Square does pair programming so you can build something together (I interviewed at Square and feel that I was at a significant disadvantage because I don't know Ruby.).

Companies are wary about having candidates build something on their own time because it adds hours to the candidate's time load. Companies and candidates alike perceive asking a candidate to spend their own time (as opposed to shared interviewer-candidate time) as arrogant and pushing too much onto the candidate.

I think it's important to gauge how good someone is at building things ahead of hiring, but I haven't figured out a method to do it that isn't burdensome.

Another problem with algorithms interviews: the distribution of questions makes it possible for a candidate to have heard 80% of the questions you're going to ask before the interview. I'm not saying the candidate knows 80% of all the problems asked on interviews, but there's effectively a finite set of questions interviewers ask in a 45 minute interview. Algo questions need:
  • Simple set up. The question needs to be intuitive and you can't spend 15 minutes for the problem set up.
  • Bounded solutions. There's probably going to be one or two efficient ways to solve it.
  • Non-esoteric solutions. Priority queues are awesome, as are tries, but they're rarely used outside of algorithms classes and algo interviews. Questions mostly come down to: divide and conquer, dynamic programming, hashing, merging, binary search, sorting, and iteration.
If you paid attention in your 100 level courses, and solve some example problems, you can probably pass your Google onsite with 10 hours of preparation. Steve Yegge (yep, I have a thing for him today) tells you how. Google has an internal list of banned questions that have become affiliated with Google, but even those are still often asked. Good algo questions are hard to find.

I've concluded that algorithms interviews can be gamed and I've concluded that even if they couldn't be gamed, they aren't the only thing to gauge during the hiring process. So where do we go from here?
  • Find a way to have candidates build something during the onsite. I don't have the answer yet, but the closer to real work candidates are doing, the better the interview will be.
  • Ask design questions. Not design patterns esoterica, but problems that almost beg the candidate to say "This is like something I did before! We solved it doing ..." and then asking about the other tradeoffs the person has made.
  • Ask questions that speak to grey (technical) issues. Ask when they'd choose between GWT and jQuery. Ask when they'd take their HashTable and throw it into MySQL, and when they'd go from MySQL to NoSQL and MapReduces. See if they've gotten the feel for products they've developed before instead of simply hacking at them.
  • Get a feel for the candidate. See if it's someone you'd enjoy working with when the server's been down for 3 hours and you still haven't figured out why.
  • And yes, still ask some algo questions. See if the candidate has the gut feel of when to use HashSets, or if they're only into brute force solutions. Ask for the runtime - if someone really gets the solution, runtime is trivial.
Too many tech companies are measuring in great detail something that has poor correlation with career success. I haven't noticed it change much in the past half decade.

Wednesday, October 26, 2011

Five things every Carnegie Mellon student should do before graduation

If you spend more than a year in Pittsburgh, you should try to do all of these:
  1. Visit the Frank Lloyd Wright houses Fallingwater and Kentuck Knob. (I've never been to Kentuck Knob - it's a shame since it's 7 miles from Fallingwater)
  2. Visit Kennywood. It's the best old-time amusement park in the United States. Their halloween evenings ("Phantom Fright Nights") are great.
  3. Visit Sarris Candies in Canonsburg. The ice cream parlor is old timey and the milk shakes are fantastic.
  4. Visit Phipps Conservatory. Heck, go several times. They do a great job changing the flowers for the seasons - I love the Christmas poinsettia display, I love the butterfly exhibit - I pretty much love it whatever they do. And I'm not a flower guy.
  5. Go down by Heinz Field at night - preferably when there's nothing going on across the river. The city by night across the river is serene.

Tuesday, October 25, 2011

Things Google does poorly

You may have read Steve Yegge's Google-sucks-at-platforms rant. I have no real opinion on it since platforms are not my forte. And I agree with him on a lot of positive things he says about Google in the run-up to the rant bit. It's easy to write about what Google does poorly because of the huge number of things they do well.

This isn't meant to pile on, but I do have criticisms about the way some things work at Google.

  • One product, many leaders: Product teams usually are functionally aligned instead of product aligned. The PMs report to a PM VP and the engineers report to an engineering VP. The eng VP and PM VP have different priorities. And there are other roles: marketing, communications, support, design. There won't be a clear, unified product vision that management and employees are on board for - so teams can't be nimble and push forward. (Google has always had YouTube as a "business unit" where people across roles report up to one VP/GM/Director, and they've expanded it to other products, but it's not universal.)
  • Too many cooks in the kitchen: The New York Times wrote an entire article about this: The Auteur vs. the Committee. Google does a great job of listening internally - every employee is encouraged to give feedback on every product. But at a certain point, a product needs to do some things well and figure out, in the future, what next to add. And that hurts feelings - employees often felt unseen and unheard when a product goes in a direction they don't like. I believe that before a decision is made, employees should work to make sure the best outcome happens and after a decision is made, employees (from CEO to individual contributor) should fall in line behind it.
  • Managing out poor performers: Google is too easy to remain at. If you're a bottom 5 percentile performer, why would you chose to leave? You probably got in through a mistake in hiring, and you're probably not going to get as good a paying or perked job elsewhere. So you're going to milk Google until you can't milk it any more. High performers, who could go anywhere, hate working with low performers. Google knows they do a poor job managing people out, but is timid about getting rid of people. There's a delicate balance - cull the herd too hard and employees start getting stressed.
  • Industry isolation (technology): There's too little knowledge of what else is going on in the industry. This argument and complaint has been made by many Googlers before - most Google internal technologies are a generation behind what the industry has come up with in terms of features. C++, Java, and Python are Google's 3 big languages. But none turn on the 20-something startup-bound engineers. Sure, Google infrastructure can scale, but it can't replicate the speed at which engineers at other companies can add features.
  • Industry isolation (products): It's a company with hundreds of products and 31,353 employees (pre Motorola). It's hard to keep up with what's going on just in the company - and many employees don't have the energy to figure out what the trends are in the rest of the industry.
  • Good but not great products: Google products are guaranteed to have many users. That's keeps new products from having tons of users. The PMs and management are playing it safe - trying not to fail - instead of making pure products that might win and might crash and burn. Instead of building intuitive, simple, useful products that do a few things, they're making products that do many things without engaging the user. Yelp, Foursquare, Strava, Gmail, and Google Search all started by doing one thing extremely well. What did Hotpot or Plus launch doing extremely well? On the other hand, Google is doomed by high expectations and high attention in this space - launch early with few features, and users may be disappointed. Those users won't give the product a second chance.
  • Listen to their own support people: maybe this is because Helen is in consumer operations at Google, but I still think it's true. If Google's billion users all had one customer service request every three years, and each request took 10 minutes, Google would need over 20,000 support employees. But the issues that Helen deals with are the same issues, day in day out. They're fixable if the engineering will were there to fix recurring customer issues. But product people generally don't like blending engineering resources across new features, bug fixes, and customer enhancements. I love working at engineering centric companies, but I love more having happy users and customers.
  • Hiring (employee side): Each interview took about an hour and a half - 15 minutes of set up (read resume, tweak questions), 45 minutes of actual interview, and a half hour of feedback. Doing full interview feedback on someone who bombed the interview was painful and demoralizing - at one point, I was allowed to write two sentences about why the person was a poor fit and moved on. Eventually, I was asked to do full feedback even for the worst candidates - I saw no benefit to it, and boy was that sucky.
  • Hiring (future employee side): Want to pick what you work on? Nope. You'll get slotted. Start at Google, wait 12-18 months, and hope to transfer projects. I hate most ads (Google text ads for products usually excluded). I'm not working to put more ads out there. Ads are distracting and dehumanizing. During the recruiting process, candidates often don't know what's going and probably feel like a number. I recognize hiring at scale is a hard problem, but why isn't there a JobScore equivalent where candidates can log in, see whether they're waiting on recruiter communication, interview scheduling, interview feedback, hiring committee, etc?
I hope Google figures it out and can make better products. Change is painful, but out of the right pain comes something great.

Sunday, October 16, 2011

Friends for different seasons

Today, Helen and I hosted the fifth annual Laroche Oktoberfest at our apartment. We cook wurst (usually from Dittmers, but Dittmers had a fire in January and still isn't open!), provide beer, and ask people to bring their favorite German themed food. This year, I provided an Oktoberfest homebrewed beer as well - my first homebrewed lager!

One of my friends mentioned "I made a faux pas - I asked [former coworker] if he was coming today - and he didn't know about it." The former coworker is an awesome guy, someone I like talking to and seeing in situations like this. But I know a lot of people - I would have loved to invite about 20 people today - and then there's Helen's invitees too! But there's two problems with inviting everyone I want: First, I like events at about 6-12 people. It's enough to have 1-2 conversations going on, give everyone a chance to speak, and get to know each other. And second, I try to pick groups of people who I think will match well to the event - there's grill guys and German food guys. There's loud folk and contemplative folk - and I want a different type of friend at different events.

It's hard to avoid hurting feelings, though - I want to put things on Twitter and Facebook, but I don't want people hurt that I didn't invite them, especially if I invited them last year.

One solution: host more events!

Thursday, October 13, 2011

Becoming more conscious on food

I am a terrible moderators. If I tell myself "I can only have a little sweets today," I end up having a croissant, a bag of peanut M&Ms, and cake with dessert. If I tell myself "I will only have a little cheese" I'll have a ton of it. I ... I don't understand moderator. I'm all or nothing. To eat properly, I can't moderate bad foods - I need to abstain.

Most of us spend some time at a not quite conscious level. It's those times where we can't articulate what we're doing, or have some kind of breakthrough when we explain the problem to a friend.

When I lost weight, I logged what I ate into a food notebook. Technically, this was to show my trainer - but effectively, writing food in my notebook kept me honest to myself. Logging what I ate created a consciousness that I lacked. I stopped writing down what I ate because my weight was low, I was exercising strenuously, regularly, and I was eating perfectly. Then I had surgery and gained some back. I'm back on a writing-down-what-I-eat-kick, and I already am finding myself not eating something because I know I will have to write it down later. I find this silly - the log isn't reality, the food and the effect on my body is the reality. However, it works, so I'll keep at it!

Wednesday, October 12, 2011

"blogged" at work today

I wrote a long email to my tech lead that fulfilled the goal today of blogging - articulation, introspection, and expression of formed ideas. And now, after kegging the Oktoberfest beer, I'm exhausted and going to sleep.

The noise

Few moral issues are black and white - but religions, societies, and families give morals and absolutisms about what are good ideas and bad ideas. It's comforting to have affirmation of rightness - something that allows one to say "I did the right thing" and move on. But many people go off the rails at some point - they do something outside the playbook, and are lost.

One answer is to be one's own moral compass - to decide right and wrong on one's own, with no playbook to fall back on. It creates a deeper, more flexible person - with more humility. One can't help but be humble when one's morals are based on on opinions and not a rigid dogma.

But choosing one's own path is full of grays. If one is deciding between two things with tradeoffs, how does one feel good about not going down the second path? I usually have been good at living without regrets, but I can't help but feel tugged in different directions right now.

Tuesday, October 11, 2011

Trouble starting? Narrow scope

I've been struggling to blog every day somewhat because I forget, but largely because I have too broad a scope of things I could talk about and no defined audience or scope for my blog.

I assume that pretty much every college, or even high school, grad has heard about narrowing scope in a writing class. Having no set topics is leaving me awash in ideas for terrible blog posts, posts that would basically be an unemotional recitation of facts. Unless I feel otherwise drawn to a topic, I'm going to try to blog about consciousness traps this month - consciousness traps like starting too broad.

Sunday, October 09, 2011

Some days, I have nothing to say

It's great to be back home. I'd love to be able to say I did something intelligent, had some great insight, or bettered myself, but instead, Helen and I went to Alice's in the coupe, I walked to the Tesla dealership in Menlo Park and checked out the Model S, and I tried out a new cocktail: the Maple Leaf.

I think a lazy (ish) Sunday was just what life needed.

In the west again

I may have to amend the 30 day challenge to be averaging a post a day, not actually post every day, since that's how it's been going anyway.

I'm back in California again. I took my favorite flight in the country, United P.S., in my favorite row of that plane, row 9. United P.S. is a domestic flight in an internationally equipped plane. P.S.'s business class has older style business class seats. I had some expiring upgrades, and this is the best way I knew to use them! Because the 757 has two adjacent exit rows in the business class, Row 9 has about 8 feet of legroom.

photo - PS Row 9

It also has wireless internet onboard, rare for United. I had planned to write a post onboard, but instead I took two naps and watched the inflight movie!

New York was great - I wish I'd seen more friends and family, and my liver needs a breather, but it's good to be home.

Friday, October 07, 2011

The biggest shortcoming in consumer applications right now: meeting people I care about

"Is there anyone I should meet near me?"

This is a squishy statement - imprecise ('near'? 'should'?) and not the type of thing we nerds excel in. But I believe this is an answerable question with technology. Some combination of rarity, closeness, extroversion, and other knowable factors help answer this question. Let me give you some examples:
  • Do I care that my work acquaintance is at the bar a half mile away at 1 AM, when I've been asleep since 10pm? Probably not. (Especially if we've never talked outside of work)
  • Do I care that my college roommate, who normally lives on Long Island, is about to fly out to San Francisco, 30 miles away from Palo Alto? Yes. (Especially if we've emailed or talked on Facebook or Google Chat since)
  • Do I care that the woman who just walked into the bar also likes road biking, home brewing, skiing, and the Red Sox? (If I were unmarried) Unequivocally yes.
More than a few services have tried to solve items around this problem.
  • On Facebook, you can search by "current city." Many users, however, don't fill this in and Facebook doesn't do radius search. It also doesn't cover weekend trips or other chance encounters.
  • Foursquare has no concept of interestingness for a check-in. Users can select a radius for alerts, but there are so many check ins that it becomes too distracting - so users disable the alerts.
  • Google Latitude got closest. For about a year, they had Latitude Alerts. Latitude kept your cell phone's location history and formed an approximate model of where you were at which time which day of the week. If you went somewhere strange for that day and time, it would alert people within an appropriate radius. For example, if I went home early one day, it would alert me of a friend in my neighborhood. If my friend flew from New York to San Francisco for the weekend, it would alert me. If they'd left it on, and if a critical mass of my friends used it, it would have been great.
None have handled friend-of-a-friend meetups, or potential compatible friends or partners. And none have handled a fine grain notification system that tailors itself to introversion level, work night partying tolerance, and ranking of contacts.

I used to check in on Foursquare religiously. Its game mechanics stimulated me, and I hoped to have chance encounters with friends. It started taking over 60 seconds to check in - geolocation takes too long, it showed irrelevant venues, and alerts were too noisy to leave on. I interviewed with them back in February for their new San Francisco office and pitched my idea - the reactions of the interviewers made it seem that they aren't interested in friends-meeting-friends.

It drives me crazy is that this information is there. As a technologist, I figure the solution is to make a new service that combines Latitude and TripIt to know where you have been, are, and where you will be, combs your email, Foursquare, Twitter, and phone logs to know who you actually care about, and make a service that works primarily with other people who use the service. But the set-up cost is high, the privacy implications are high, and I can't see enough people coming on at once make it useful - I imagine burning out early adopters as it seems that Foursquare has done.

This all came to me because I'm in New York City this week and I'm struggling to figure out who is in town, who might be in town, and where in town they are. I ended up using "current city" on Facebook serially for the five boroughs, remembering who lives locally, checking Latitude, and spamming Twitter, Facebook, and Plus to try to find those who might happen to be here for the weekend. (If you want to meet up with me before I leave, I'm hanging out at Ginger Man in the Flatiron Saturday from 12:30pm-2:30pm!)

I don't have the answers. What I do know is meeting other people, seeing the people we know and share history with, is one of the greatest things in life. Meeting more friends is also emotionally valuable. Technology can help, but it's falling flat right now.

Thursday, October 06, 2011

Some days

Some days, it feels like I get nothing done. Paying down technical debt is nice and all, but it isn't amazingly tangible.

Wednesday, October 05, 2011

Levi's GranFondo

You know that thing in life that you were part of that just gelled? The restaurant you started going the second week it was open where the employees are all nice, they've succeeded, and you're a regular? The product you love, and when you submit feedback you get a personal, fast, great reply? That class you were in where the teacher was awesome, the other students were attentive, and you really learned the material? You know the feeling when the wind is at your back, nothing can get you down, you're present, and you're part of something? Levi's GranFondo is that for non-competitive cyclists. Even participating in it feels like being in something bigger than oneself.

Levi Leipheimer is a professional cyclist who calls Santa Rosa, California home. In 2009, Levi's GranFondo started with 3,500 cyclists cycling out of Santa Rosa, in support of Santa Rosa and several local charities. In 2010, the GranFondo was back with 6,000 riders (and me!), and the Gran route sold out in 3 weeks. For 2011, they bumped it up to 7,500 riders (4000 for the 'Gran' route at 100 miles, 2500 for the 'Medio' route at 65 miles, and 1000 for the 'Piccolo' route at 32 miles). The Gran route sold out in 6 days, over 8 months in advance of the ride. The day that entries went on sale, the site crashed due to rabid cyclists hitting-refresh, being unable to imagine missing the ride.

Fast forward to sunrise last Saturday, October first. My friend Jim and I checked tire pressure, donned spandex, and headed out from our motel to the start line. We staged about mid-pack, 20 minutes before start, and listened to the announcer list off names of famous riders prsent. This year, the names I remember (besides Levi and his wife Odessa Gunn) were Patrick Dempsey, Mark-Paul Gosselaar, and Dean Karnazes. The announcer also told us home towns - people flew from as far as New Zealand and Europe to participate (and many other countries and states). At 8am, the first riders started... and 20 minutes later Jim and I crossed the start line.

For the first fifteen miles, I couldn't ride hard, couldn't even warm up because there was no room to pass - even though the roads were closed in both directions and we could ride in the oncoming lane, there were just too many other cyclists around! Jim and I rode together for about 45 minutes, and then I broke away. I kept looking back for him, spending 20 minutes at the first rest stop looking for him. I had no cell reception (and didn't for the next 5 hours). I assumed I'd lost him for the day and carried on.

The weather report, and the actual weather at the start, was great - low 70s and partly cloudy. As I climbed onto Kings Ridge, the fog set in. I climbed on, with some amazing views of valleys and forests - but my sunglasses started to get covered by drizzle. I'd prepared for 70 and sun, not 60 and rain!

Just after the halfway rest stop, I descended the steepest of the entire ride - down towards Hauser Bridge. At one point, I checked my brakes only to find that I might not be able to stop due to the damp roads, my wet brakes, and the steep grade. Right before Hauser Bridge, volunteers were out commanding us to dismount. It turns out I could stop, although it was close! Curious, I asked the volunteer if any riders had wiped out - she replied "Every ambulance and Medevac chopper in the county is full of people who wiped out here." (I learned later that 3 people got helicopter rides from that area).

After we descended towards the coast, the fog and drizzle lifted - thankfully! I blitzed in and out of a couple rest stops because I was warmer on the bike!

On the coast, I was ecstatic to catch the back of paceline - I was tired and wanted all the aerodynamic advantage I could get. It was the first time I was out of the wind the whole day. Within a mile of joining the paceline, though, the rider just in front of me jerked on her brakes, jogged left, and clipped my front wheel, pushing my wheel left. All of the sudden, I knew I was coming off the bike in the next second; the only thing I could do was choose where. I picked the brush on my right - it looked dry and scratchy, but it had to be better than pavement. I pulled the wheel back right and aimed at the brush. Over the bars I went, hitting my head in the brush and coming off the bike.

After shaking myself off, I checked my bike and my body out. I had dirt on my left leg, scratches on my left forearm and left calf, and a tiny cut on my knee. Astoundingly, I wasn't injured (although four days later my neck's still a bit tight!) and my bike was fine, though my chain came off the front derailleur. After putting my chain back on, I mounted, and continued on.

I was weary for the last thirty miles, but finished the 103 mile ride in eight hours and fourteen minutes, including rest stops. I grabbed some food at the finish line festival and sat down, waiting for Jim and wondering how I only left that morning.

I finally heard from Jim - one of the riders who fell near Hauser Bridge fell down an embankment and had to be rescued - the rescue closed the road for over an hour. Jim, much like me, was not prepared for drizzle and cool weather - he was on the verge of hypothermia. Jim elected to get a ride back to the start from a volunteer - but the volunteer couldn't show up until the road re-opened, so he had to wait in the cold for two hours! When he showed up at the festival, he was in surprisingly good spirits for someone who had spent the day cold and not doing what he'd come to do.

You'd expect that the local, non-cycle community would be annoyed by road closures, delays, and 7500 cyclists invading the community. But for much of the ride, we saw nothing but happy families cheering along the road. Levi's Gran Fondo brings in a lot of business for the Santa Rosa - full hotels and busy restaurants. It brings in money for local charities. And my guess is the community feels as swept in this as I did.

The Land of Milk and Honey

As I posted yesterday, I'm in New York for the week. New York is a fascinating, disorienting place - I'm out of my comfort zone the moment I hit the baggage claim and limo drivers solicit passengers. It continues when I get to the subway platform and find out, from another passenger, that the subway line I want isn't running this weekend due to construction. It's not a friendly place for tourists much of the time.

This is my twelfth trip to New York. I've progressed from finding it scary, overwhelming, and impossible-to-get-my-mind-around to exciting, overwhelming, and impossible-to-get-my-mind-around. I've learned some of the city's ways, and have cracked some of the keys to getting around, getting great food, and not getting ripped off. Some of the credit is due to Yelp and Google Maps Transit, some is due to becoming older and more experienced with cities, and much is thanks to friends' personal recommendations.

I started enjoying cities a lot more after I lost weight. Cities are tiring to heavy, out of shape people. Cities require a lot of walking and stair climbing. Cities are hard on people who take up a lot of space. Cities are warm at awkward moments. Cities have a ton of fashionably dressed, attractive people - and when I was heavy, I was self conscious about being both fat and foreign.

New York is hard on me even after all these trips - I usually have no clue which way I'm going when I get off the subway. I hate cold shouldering people who try to hand or sell me things.For someone who grew up rurally, being constantly surrounded by masses of people may never become comfortable. I'm still somewhat on alert on the street.

New York has her wiles for pretty much everyone. Her charms for me include great speakeasies with great cocktails. Great theater. Great architecture. Great food. Great people watching. And I have a lot of friends who live here.

Walking around New York also piques my inner details nerd. The infrastructure required for housing and hosting ten million people is immense. I'm always amazed by the same things. I'm amazed the seemingly endless subway trains that show up every five minutes. I'm amazed that there are multiple train (not just subway) lines running under the city. I'm amazed by the network of food delivery services. I'm amazed by businesses squeezed downstairs on a side street. I'm amazed that it seems to work, day after day, without falling apart.

New York doesn't seem to be a place that encourages the lazy. It asks you to work for its charms - by handling the masses of humanity, by handling the challenges of navigating, by handling the immensity of options, by handling her special challenges, she'll show you her parks, her hole-in-the-wall gems, and her best. It's not an easy city, but it is an amazing one.

Tuesday, October 04, 2011

I meant to post yesterday

I meant to post yesterday, continuing the 30 day blogging challenge, but I was ill.

I'm in New York with my team this week, occupying our Meatpacking District office. We're literally sleeping in our office's unfinished fourth floor.

Yesterday, I checked off a good number of my NYC TODOs:
  • Walked on The High Line, a former rail line that has been converted to a park. It's incredible.
  • Went to Cafe Grumpy, a cool coffee shop with Clovers.
  • Went to Energy Kitchen, a fast food place specializing in protein rich, calorie low meals.
And then in the afternoon, I fell ill. My stomach is still tender today, but I'm feeling way better all around.

Sunday, October 02, 2011

On my consciousness

My own ego is a blessing. It's wonderful when someone gets angry at me, I can think to myself, "I'm not a bad person, I'm worthwhile". I usually get past my impulse to brush the person aside and invalidate him. Instead, I try to listen to what's underlying his criticism - am I doing something unkind? Is he having a bad day? Is there a misunderstanding? Can I do something to turn this bad interaction to a positive one for both of us?

My ego is also a terrible force. In high school, my course work came easily. I had great teachers, I grokked the lessons, and I never had to push myself to study or learn. The first week in college, I started struggling. The material was hard. The concepts weren't as intuitive. I didn't know how to push through, I didn't know how to dig deep, and my ego told me that office hours and tutoring were for other people. My ego told me my grades were more important than my learning, and so I half learned things by just scraping by on some assignments. For exams, sometimes I learned what kind of questions would appear and how to answer those questions instead of learning for the love of learning. I understood some things for long enough to hand in the assignment. I no longer took the content and made it part of myself in a deep, self-altering way.

My short term, short-sighted focus on the deliverable recurs in some aspects of my work and my life. I have consistently worked with people at or above my intelligence level. Intellectually, some people will get some topics faster than I do, and I'll get some topics faster than others. But when I don't understand a design, an algorithm, or solution at work I struggle to ask for clarification and I didn't do the work on my own to figure it out later. My ego says "Don't admit to them, or yourself, that you don't get it." And I skated by, not growing myself as I could have.

This probably sounds like I haven't learned or that I haven't grown in the past decade. That's not true - I rocked some courses, I have put in great work on some projects. However, I have grokked things more slowly than I could have. I've wasted days of work trying to understand solutions before understanding the components of the solution. For example, I have participated in team design discussions suggesting the details of the MapReduces we'd use before reading the Wiki page on MapReduce and writing a few. Time and again I've tried to solve the problem before understanding and internalizing the components of a solution. Each time, I've done myself, and my team, a disservice.

So how do I grow myself? First, I get the ego out of the way. I admit to myself, and to others, that I don't know or don't understand. Quoting Penn Jilette talking about one of the best minds of the twentieth century, Richard Feynman:
My friend Richard Feynman said, "I don't know." I heard him say it several times. He said it just like Harold, the mentally handicapped dishwasher I worked with when I was a young man making minimum wage at Famous Bill's Restaurant in Greenfield, Massachusetts.

"I don't know" is not an apology. There's no shame. It's a simple statement of fact. When Richard Feynman didn't know, he often worked harder than anyone else to find out, but while he didn't know, he said, "I don't know."

I like to think I fit in somewhere between my friends Harold and Richard. I don't know. I try to remember to say "I don't know" just the way they both did, as a simple statement of fact. It doesn't always work, but I try.

Second, I start slower. I learn the material. I never start on a poor foundation. I don't let deadlines cause me to try to create a solution without the necessary comprehension.

Third, and the most important, is growing my consciousness. I get tunnel visioned - and my higher, self-reflective brain takes a vacation. That's the part that can actually change these habits and break the cycle. To be more self-reflective, I need to slow down - I should stop typing code when I should be thinking, asking more assertively when I don't understand. In my most panicked times, I'm doing my team a disservice by trying to fix problems before I understand the problem and the solution.

I have a few things I'm going to attempt to grow my consciousness:
  • Do one thing at a time. Be present for it.
  • Make sure each day contains one non-work thing I'm present for and do without the nagging guilt of "you should be doing something else". Cycling, yoga, weight lifting, driving the coupe, reading for an hour - anything that absorbs me completely.
  • Learn. Ask. Quiet the ego and say, "I don't understand. Would you explain that again?"
  • Slow down. Recognize that if I slow down I'm more likely to make deadlines, and if I miss a deadline I might as well learn something.
What do you think? I've checked my ego, is there something I can do to be better? Do you suffer the same?

30 day challenge

After watching Matt Cutts' 30 day challenge TED talk, I decided to try out 30 day challenges.

August was no alcohol, and I counted it as a win - I did have a going away drink when my tech lead left, and I sampled some homebrew when I took gravity measurements. I learned that I had become too accustomed to having a beer in the evening - merely drinking it instead of enjoying it. I believe I have reset myself to opting in to alcohol instead of opting out.

September, I tried the One Hundred Push Ups program, but I dropped out after the first week. My form was terrible, and I hurt my lower back by going for numbers instead of quality. I may try this again later - I still hope to increase my upper body strength, and there's something about pushups that makes me feel more at home in my own body.

October's goal is to blog daily. I find myself more confident in my own head when I talk about or write about what's going on. I tend to be too in my own head to be conscious about what's going on at work or in some facets of my life. I believe that writing an entry every day will strengthen the reflection muscles and make me more present and conscious about what's going on (more on this struggle, hopefully, in another post later today). I think we all suffer from this at least a little - why else do answers come in the shower, or solutions to our bugs come when we're describing the problem to a coworker?

You might have noticed that this is posted on October second. Yesterday, I rode my bike over 100 miles on Levi's GranFondo. I decided on the ride that this would be my goal, but returned home at 8:30pm exhausted and mentally gone. So perhaps this month's challenge should have been "bike 100 miles or blog every day"!

Monday, September 12, 2011

The first 90 days

If I had written this paragraph, it would have also included the words "panic" and "anxiety." But this is a good summary of my first 90 days.

During times of rapid growth, a team doesn't necessarily take the time to stop and get to know each other because they arrive and the first thing they notice is, "Whoa. Everyone is in a big fucking hurry, so I must hurry as well." Their normal instincts regarding getting to know those around them are buried in their goal of being recognized as a person who is also in a hurry.

From Rands' post Fred Hates It.

Tuesday, July 19, 2011

Changing attitudes

Growing up, Saturday morning was chore morning. I'd put new sheets on my bed, vacuum, dust, and tidy my room, and take out all the trash in the house. I didn't like it - since I didn't know how unlivable a heavily dusted, un-vacuumed, messy room was, I didn't see the point of Saturday morning chores. And so I have a bit of a block against dusting, vacuuming, and tidying - Helen and I have a maid come biweekly to do the vacuuming, dusting, and cleaning.

But I've started to do something that looks suspiciously like doing chores: I've started to block out time with the simple goal of making my life better. If I have a weekend chunk of time free, I just walk around thinking "What would make my life better?" and then I do it! It might be filing the stack of papers on my desk, it might be breaking down boxes and bringing them to recycling, it might be recycling old magazines, and it might be rearranging the food on the shelves. It might be going through the Wii remotes and putting new batteries in and charging them. Since I'm setting out with the goal of making my life better, I'm happy, energetic, and almost bouncing like Tigger.

Here's the funny thing to me: I don't like chores. But these things I'm doing are chores - and I'm doing them happily.

Wednesday, April 20, 2011

Kindle books I can loan

People with Amazon Kindle Books can lend them to friends. The recipient has one week to accept and two weeks to read. If you want to borrow them (and I know you!), contact me through email or Twitter.

This is the list of Kindle books I have that are loanable:

Non fiction:
(Current as of April 20, 2011)

Friday, April 08, 2011

Distributed identity management

Contact and address book management is annoying and over manual - this should be automatable. Here are a few cases that highlight the redundancy and time wasting right now:
  • Mike changes his phone number. Mike either hopes people notice the change or he emails out his new number to people he thinks have his old number. Wouldn't it be better if wherever you had Mike's number, it automatically became the new number?
  • Jane wants to use Facebook as her address book. But there's no way for Jane to add a phone number to a contact such that only Jane can see it. Even more difficult - Jane's grandmother isn't on Facebook. Jane can't create an address book entry for her grandmother.
I don't know exactly what the proper solution is, but I'd love to see some kind of distributed e-identity system that allows for notification of changes with minimal interaction. I see it working somewhat as following:
  • I have a list of contacts. For some contacts, it's information they curate. For others, it's information I enter - maybe they've never participated online in this system before.
  • I can see who's got me listed as a contact. (Or I can see who's listed me as a contact and opted into me seeing that they've listed me)
  • When I change some detail about myself, I can select whom I'd like to notify about this.
  • When users get notifications about a change (maybe email), they can choose to accept or ignore the changes. Or if a user doesn't act on it immediately, the information is annotated with the change and the user can accept it or reject it later.
  • I can choose to trust people's changes - I don't even see their update notification, their contact info is gracefully changed.
Some solutions get close - most notably Plaxo. Plaxo charges $60 a year for the sync, though, and I don't think an external service is necessary for this. Address Book's use of vCards allows me to send out a vCard when I change my information, but vCard doesn't seem seamlessly integrated into other services and isn't as graceful as I'd like.

I'd love to see better integration across different services and applications on this. I'd love to see my Google Contacts knowing about people's Facebook information. I'd love to see this taken from an occasional sync to a gracefully pervasive and integrated system.

Saturday, April 02, 2011

I'm not quitting, I'm declaring victory and moving on.

I sent this out to my coworkers and friends at Google a couple weeks ago:

Hey everybody,

I'm not quitting, I'm declaring victory and moving on.

My last day at Google will be Friday, April 1. It's been an honor to have worked at Google over the last 5 years. There's a real wealth of intelligence, passion, talent, generosity, and big hearts here, and I'm hoping for your continued success.

A big, genuine thank you to everyone, especially the official and unofficial mentors and the people who went out of their way to help even when they didn't have to.


Wait, I thought you resigned last fall!?

That was Ian Langworth! I still can't escape the Ian-Matt-Lan-Rob confusion!

What are you going to do next?

I'm going to Disney World! No, seriously, I'm going to Disney World in May. I'm taking about a month and a half off. After that, I'm going to work at Palantir on their Finance product. I'm excited about what they're doing and the approach they're taking.

Will there be drinks?

Yes! Details forthcoming!

How can I reach you?

Twitter @mlroach

I wish you all the best,


P.S. If I may quote Kevin Stephens quoting someone else, "I've been offended by not getting people's farewell emails before, but now, facing up to the task of not spamming and not leaving anyone out, I see it's a daunting one. If this reached you and you don't give a hoot that I'm leaving, sorry for the spam. If this was forwarded to you and you're offended at being left off the list, sorry as well."