The Sal-gorithm: an algorithm for making delicious salads

August 18, 2016

A few months ago, I decided I needed to solve the problem of often enjoying salad restaurants but being uninspired by the salads I made myself. The Sal-gorithm has worked out very well and simplified lunch decisions when I don't want to make a separate big thing to have as leftovers, as well as help me handle the influx of greens at the beginning of the summer farm share. Some examples of the output in this album.

The way it works is I pick a few items from each of the different categories in constructing grocery lists for the salad, which provides enough variety from week to week. This chart is printed out and on my fridge.

Other tips:
  • If my chosen green is something like kale, then I'll mix it all together, but if there are more delicate items, I might keep those separate and construct right before eating.
  • I have a large stainless steel bowl and set of tongs for tossing the salad with dressing, which is then decanted into the white shallow bowl-like plate. I learned this from a local salad restaurant, because while it's an extra bowl to wash, it gives you enough room to mix everything together but eating from a separate, smaller bowl/plate feels luxurious, rather than just eating from a giant mixing bowl.
  • Some more tips on constructing salad on Serious Eats.

Recommendations for high school students

July 11, 2016

These are articles/books/videos that I feel are particularly helpful to high school students, for whenever I go to speak on career panels and such.

What to work on

"What You'll Wish You'd Known," Paul Graham
I dislike the dismissal of college admissions officers in this essay, but I support pretty much the rest of it. A few excerpts:
I'll start by telling you something you don't have to know in high school: what you want to do with your life. People are always asking you this, so you think you're supposed to have an answer. But adults ask this mainly as a conversation starter. They want to know what sort of person you are, and this question is just to get you talking. They ask it the way you might poke a hermit crab in a tide pool, to see what it does.
Right now most of you feel your job in life is to be a promising college applicant. But that means you're designing your life to satisfy a process so mindless that there's a whole industry devoted to subverting it. No wonder you become cynical.
Rebellion is almost as stupid as obedience. In either case you let yourself be defined by what they tell you to do. The best plan, I think, is to step onto an orthogonal vector. Don't just do what they tell you, and don't just refuse to. Instead treat school as a day job. As day jobs go, it's pretty sweet. You're done at 3 o'clock, and you can even work on your own stuff while you're there.
"Building Your Inner Coach" (18min TEDx talk), Brett Ledbetter
Focus on building your processes and systems towards your goals and success, rather than just the results themselves.

"Let's Teach Kids to Code" (17min TED talk), Mitch Resnick
People are growing up as tech users, but not necessarily tech builders. You don't have to think of yourself as a "computer person" to give learning to code a try. But perhaps you should think of it as: do you want to give instructions to computers, or only receive them instead? The former gives you more of the thing that all teenagers want, which is: freedom.

Figuring out what you want to do for a career

Career advice from the creator of Dilbert, Scott Adams
1. Become the best at one specific thing.
2. Become very good (top 25%) at two or more things.
The second strategy is fairly easy. Everyone has at least a few areas in which they could be in the top 25% with some effort. In my case, I can draw better than most people, but I’m hardly an artist. And I’m not any funnier than the average standup comedian who never makes it big, but I’m funnier than most people. The magic is that few people can draw well and write jokes. It’s the combination of the two that makes what I do so rare. And when you add in my business background, suddenly I had a topic that few cartoonists could hope to understand without living it.
Capitalism rewards things that are both rare and valuable. You make yourself rare by combining two or more “pretty goods” until no one else has your mix. 
The book that introduced me to the idea that "follow your passion" advice gets it wrong because your aim should be to get really, really good at something. I like to tell people that things you're looking for are pursuits where you enjoy the process of getting better at it.

How do I choose a career path?
I just took jobs I could get using skills I felt reasonably confident I had (for me, at the start, those were writing and being compulsively organized), and then over the course of doing those jobs, gathered and refined information about what I liked doing and what I was good at and what other people thought I was good at and were willing to let me do more of.
The Secret to Being Happy with Your Job: It's not 'follow your passion'
I figured out that biggest mistake I’d been making was asking “What job would I want?” instead of “What do I want out of my job?” In other words, I needed to shift from statements like, “I want to be a writer,” or “I want to be a fashion designer,” or “I want to run my own business,” to “I want a creative atmosphere,” or “I want to work in a team setting.” Because “I want to be a writer” doesn’t actually mean anything tangible.
I like data, so I made a massive list of every workplace quality that had given me joy, and conversely, the ones that made me miserable.
After that, I started asking everyone about what moment in their job made it worth it. The most memorable response came from an engineer who said his happened when he “solved the problem.” Not when the product was made. Not when it was delivered. Not when it was sold. Don’t get me wrong, many people listed more than one core moment. But it became clear that I needed more of whatever it was that made me stoked.

Informational interviews

Cold-emailing strangers to ask for career advice: some things that you can do that will make people more likely to want to help you

Actually useful questions to ask in informational interviews: "don’t just focus on being impressive (which is the pitfall a lot of people fall into), but think seriously about what you’re really wondering about"

Doing well at your first jobs

5 Mistakes Smart People Make at Work: These are all good points, especially "if you’re used to being 'the smart one' and things have always come easily to you, you might not have built up the skills you need for when things are hard."

What Your Internship Manager Wishes You Knew: all good, especially:
  • "Working an internship is different from being in school"
  • "college often rewards lengthy explorations of a single topic. In the work world, shorter is nearly always better"
  • "Effort is nice, but it’s not what matters" 
A roundup of other relevant Ask a Manager posts for new grads.

15 things you don’t know about work when you’re early in your career: again all good points, especially:

  • "I’m the only person who’s fully immersed in my own day-to-day work, and I have to speak up when I want my boss to fix something."
  • "leaders are far more interested in how you plan to fix the issue vs. who was responsible for causing it."
  • (misconception that) "If a process or tool doesn’t work the way an employee thinks it should, it must be broken and in need of fixing. In a lot of situations where this came up, the employee didn’t have (and didn’t seek out) any background on why we did things the way we did, and just assumed management must be idiots. In reality, there were nearly always valid (and sometimes legal / regulatory) reasons why things worked the way they did."
  • (misconception that) "If I see something I perceive to be a problem and report it, my work is done and someone else will fix it."


The UpSide of Down, Megan McArdle
Megan McArdle have been my favorite bloggers to read for several years now, I just like her writing and argument style a lot, and it's informed how I think about things, even if I don't always agree with her. Anyway, this is her book about failure and why it is necessary yet difficult to accept as a part of improving over time.

Keeping track of your accomplishments

July 5, 2016

It's really valuable to keep an ongoing list of what you've actually been doing at your job. This is helpful for:
  • writing the self-assessment part of a performance review at the end of a quarter
  • help your boss make a clear, specific case for you to be promoted, and not rely on their distractable memory
  • updating your resume/LinkedIn when the time comes
  • reminding yourself that you have been competent and gotten stuff done before, if you're feeling frustrated or having a bad day

I just have a Google Doc called "Accomplishments" that I'll add things to every so often, including any kudos or compliments that I receive from co-workers. I'll also write up a short description of a project I worked on that succinctly describes why that project matters to the business and what was hard (and therefore impressive) about my part of it.

Trace Store Service Integration
Migrate from directly accessing databases through ActiveRecord to using a Thrift service instead, enabling our Data Services team to change storage backends without disruption to our end users.
Team size: 2
Don't forget to check if someone would still ask "so what?" at the end of your writeup!

Getting good feedback from practice talks

June 27, 2016

This is a collection of tips I've gathered over the last few years on how to get more from practice runs of a talk that you're working on. The first step, of course, is to run practices in the first place. These are optional extras on top of that.

Scheduling your practice
  • I mostly run practices at work, so I'll book a conference room that fits around 10 people.
  • In the calendar event, include the title and abstract for your talk, as well as any relevant details about the conference (when is it? what is the target audience like?) and target length of your talk.
  • Select your practice audience based on people that you know to be supportive and skilled at giving constructive, kind feedback.
  • Prior familiarity with your topic doesn't matter as much--maybe one or two people who could comment on "correctness", if that's something you're worried about, but getting feedback from people of "this part was confusing" is already very valuable.
  • Invite ~3-8 people--enough for a spread of opinions and having at least a couple people that do show up.
  • If your practice audience seems open to some coaching on giving feedback on practice talks, this old post of mine on giving feedback may be useful and this post by Lara Hogan on Giving Presentation Feedback in particular is excellent.

During the practice
  • Turn on slide numbers in the footer of your slides, so that audience members can write down the slide number associated with the feedback they want to give. (instructions for Keynote)
  • Thank your audience for coming and give them some context on the feedback you're looking for right now. I usually write down these points on a whiteboard in the room to remind them of what my focus is. 
    • Could be: "overall flow and structure" or "do the technical explanations make sense for an audience of ____" or "physical or verbal tics" or "nitpicking on slides." 
    • A sample set of questions from a friend who ran a practice talk:
      • Are these helpful/interesting topics to cover?
      • What else do you think would be helpful?
      • Was the format understandable?
      • Was the format entertaining?
      • How could I add more funny pictures/entertain you more?
  • Tell your audience what you aren't looking for feedback on right now (could be any of those items in the previous bullet too!) See this on the difference between asking for 30% vs. 90% feedback.
  • If you're testing out timing, either set up your view so that you see a timer or ask someone in your audience to keep an eye on this. Recently when I was worried about the length of a particular talk, I asked someone to write down the times for each major section title as I hit it, so I could put those into my notes and see the breakdown overall.
  • When you're ready to receive feedback, put your slides into light table mode and project that, to help your audience pick out which part of the talk they'd like to discuss.
  • You don't have to make all or the exact changes that your audience suggests, but you should take the opportunity to ask questions and understand where they're coming from, in looking for improvements you can make.

After the practice
  • Add their names to a thank you slide.
  • Send the finished slides to the people who attended a practice talk, so they can feel gratified by the final, pretty version!

What my Tiger Parents taught us

June 23, 2016

Thanks, Mom & Dad.

How to be successful

1. Things are fun when you get good at them, and getting good at things requires effort.

When I first started getting into giving conference talks, I had a conversation with a co-worker about a potential topic idea. He said it didn’t sound like I was that excited about it, which I wasn’t, but in my eyes, the point was the giving a talk part. He then shared that for his whole life, he’d only ever been able to do things that he was interested in, and I was so surprised! I feel that literally my entire childhood was about training to acquire the discipline to go after what I want, even if the process wasn’t always fun right then.

In fact, when my mom got a bunch of old home videos digitized and we were watching them, there was a clip of me in the backyard and my mom telling to “go play!” and I teased her that it was good she had this on video, because I would never of believed it happened. She was slightly offended.

In any case, I have absolute confidence in myself that I have the capability to do boring things I don’t want to do, when I need to.

2. If something was worth doing, it was worth trying to do well.

True story: I took up chess club in high school because I thought it might be considered highbrow enough by my parents that I could get away with playing a game for fun. I know they weren’t fooled though, because otherwise they would’ve gotten me books and learned to play themselves to help me get better at it.

They always, always helped my sister and me get better at what we wanted to do, pouring themselves in studying some activity to try to crack it and pass their insights onto us.

3. Confidence and self-esteem comes from a deep belief in yourself, with evidence from a track record of success in what you pursued.

They always had high expectations of us, to the point where I once complained to my mom that it felt like in their eyes, we were at the highest potential at the point of birth and it’s been downhill since then, due to lectures about how we used to be doing so well and now were failing in some way--but never having heard the “doing well” part at the time.

I learned from reading Battle Hymn of the Tiger Mother that really, they were trying to transfer their *own* belief in us and our potential, to have their confidence us become our own. I mentioned this epiphany to my mom and she was very matter-of-factly like, “Of course. If you didn’t have the potential, there would have been no point in trying to help you realize it.” lol

See Mindy Kaling’s essay on this as well.

4. Education isn’t about the actual content you learn.

My parents always emphasized that all education was about “learning how to think” and that it didn’t matter whether they could remember the details of calculus or whether they used it in their daily lives now. What was important was that they *had* learned it at some point in the past, and it was the process of learning that was important.

Also, sometimes you just have to jump through hoops. As immigrants to a new culture, you learn how to figure out and play the rules within the system to get what you want.

Another consequence of this is that cheating is completely besides the point. If you work hard, you’ll learn that there is a correlation between your effort and the results--maybe not always as tight a correlation as you would like, but working backwards gets you nothing.

Related: Asian parents teach far more than just "rote memorization"

5. Always look for where you could have improved.

This is the famous “oh you got 99% on a math test? What did you get wrong?” scenario, but a reflexive quest for excellence is a useful one.

6. Get realistic and pragmatic feedback and don’t give up.

This could sometimes be a bit brutal, and my sister and I later taught our mother the role of encouragement in effectively getting people to listen to your feedback, but their goal was toughen us up to hear the message in pursuit of getting better.

7. Make arguments based on logic, not authority.

We definitely have the “respect your elders for their greater life experience” thing, but it was rarely a “because I said so” situation. They lectured us with logic—“why shouldn’t we do better than they did with their lives, with all the advantages that they didn’t have?” Hard to refute, and really, this is the earliest formulation of the idea of privilege that I learned.

8. Do the best you can.

It always makes me tear up a bit when I think of the love involved here: my mom always read to us before we went to bed, in English, even when English was hard for her. I have a warm memory of my mom reading Winnie-the-Pooh to me and struggling over the words a bit, until I corrected her pronunciation. But she was fine with that, she was proud of me for knowing more than her, and kept going.

They *tried* to do American rituals, like Santa and the tooth fairy. Even if the execution wasn’t always particularly solid (I stopped believing in Santa at something like age 3, because I saw the presents in the back of the car on the way home from the mall), they tried to give us a normal American childhood.

They always did what was best for us, even when we hated it. “You’ll thank me some day” was a frequent phrase. And, well, it’s true, they were right! It was never about their own egos, and we never doubted their intent.

How to be independent

9. Have a healthy dose of fear of consequences, but not that much.

My mom has told me that she sees the duty of parents as to watch over their kids in environments where the kids *felt* like there was risk and danger but not in any actual severe sense, so we could learn how to handle ourselves when they could still be around to help us recover, if needed.

  • my mom gave me a credit card when I was 15 to start learning about credit and had me still mail all the credit card statements home through college, to make sure I didn’t accidentally end up over my head in debt.
  • my dad would often get us to drive on the highway back from airports to make sure we still practiced that despite no longer driving regularly after moving out

10. You are capable and in charge of handling your own life, but we’re here to back you up.

At my wedding, my mom gave a toast that was about how the second-to-last time she ever involved herself directly with my education, it was to ask the teacher why I’d gotten a 99 on a standardized test in elementary school. When the teacher told her this was the highest score you could get because it was measured in percentiles, she expressed that that never occurred to her because in China, there is only 100 as the top score! That toast was a huge hit.

For most of the rest of my schooling, she wanted us to manage our own homework schedules and such—just like a good boss, she made sure we knew the objectives and desired end goal (good grades) and then let us accomplish them however we thought best. She never read any of the permission slips we brought home and just signed wherever we told her. (Note that never once did it occur to us to take advantage of this in some way.)

The last time she involved herself was when my high school principal was considering blocking me from going on a trip for an Academic Team (Quizbowl/trivia team) competition because I’d missed too many days of school attending other competitions and visiting colleges. She got him on the phone and after she was through with him, we never heard a peep again. I think she basically argued, isn’t the purpose of being in class to get those grades, and if her grades are impeccable without being there all the time, isn’t that proof that being in class doesn’t matter that much? Do you really want to set a precedent for penalizing a student for being too successful? Ha.

11. You can adapt to most things.

My parents took us traveling pretty often and picked up the whole family when my mom was transferred to work in Bangkok for a few years. I switched schools every 2 years up until high school, so being “the new girl” never seemed like a big deal to me.

12. Everyone has a job in a family unit.

Our job as the kids was do well at school. I think this is why we didn’t fall prey to caring (very much) about popularity in school.


13. Don’t take advantage of other people when you’re more fortunate than they are.

This doesn’t apply to businesses though, my mom always said, “it’s not like they’re going to ring me up to tell me when they’ve overcharged me.”

Sometimes our code examples don't make sense

May 27, 2016

I was reading some technical article the other day that started talking about class hierarchy and used the common setup
class Child < Parent
at which point I got distracted because it occurred to me for the first time--this example doesn't actually make sense! If you're using inheritance in (what I understand to be) the correct way, anyway. It doesn't make sense to subclass Child from Parent, because Child is not in fact a type of Parent. If your parent (ahem) class is going to be Parent, then really any subclasses should be things like SingleParent, or Mother, or AsianDad, or whatever else (and maybe these should all be modules anyway, to mix-in different behaviors...if different kinds of parents are all that different from each other in the first place anyway).

I guess we use the Child < Parent setup because we're thinking of class inheritance like a tree, which we can map in our heads to a family tree, and the "children" inherit some genetic material and behaviors from the parents. But maybe this should instead just be a class like Smith, from which you get many instances of different Smiths, and some instances of Smiths are related to other instances of Smith?

The different kinds of animals (Corgi < Dog) or sports examples might be more sensible generally.

Wow Code, Such Read!

May 5, 2016

This talk was presented as a lightning talk at the New Relic afterparty for RailsConf 2016 and as a 30 minute talk at RubyConf Colombia in MedellĂ­n.

When we learn to code, that usually means learning how to *write* code. However in practice, we spend a lot of time *reading* code instead! It’s the way we find answers to questions about how things work. Reading code efficiently is therefore a very valuable skill. This talk will cover how Ruby developers can improve this skill, with tips for comprehending and debugging code faster. We'll also take a look at how you’d go one level deeper and read Ruby’s own source code, even if you don’t know much about C!

Lightning talk slides:
Response to my talk, on Storify: lightning talk version, RubyConf Colombia.

Getting better at thinking on your feet as introvert

March 17, 2016

A few months ago, I did a mentoring session with someone who wanted to get better at thinking on her feet. Specifically, she described feeling tongue-tied in the moments when her boss stopped by her desk to ask her for an opinion on some decision, technical or otherwise. I identified with this a lot; I think it’s fairly common for introverts, who tend to need more time on their own to process ideas, as opposed to extroverts who thrive off the stimulation from bouncing ideas back and forth in a group. I'm going to break down some tactics for handling these situations into three categories: in the moment, afterwards, and before the next time.

In The Moment

I think that when you’re in the moment and your brain freezes, part of the anxiety is from feeling like someone's shoved a pop quiz in your face, with an impossibly short time to try to pass it. I worry that if I don’t come up with the right words, my boss will think I’m stupid or not constantly thinking about Important Work Topics. Or perhaps even worse, if I steer a decision in the wrong direction, I’ll have ruined everything. And this combined with a tendency to go over conversations later on and try to replay them and see all the areas where I could’ve done better, if only I could script my life like a witty and fast-paced Aaron Sorkin dialogue…well, it’s not a very productive way of approaching these situations.

A more productive frame might be to consider a different set of goals. Any boss that makes a snap judgment based on a single short interaction isn’t someone whose good opinion you have a lot of control over winning anyway, so your focus should be on getting stuff right in the long-term. So, in the moment of that particular conversation, your goal is to understand the question and context as much as possible. It’s information gathering, not impromptu opinionating.

As always, consider your particular audience. I got feedback in a performance review once that my manager knew I was committed to helping the team succeed, but basically he thought it would help people’s perceptions of that if I were able to demonstrate more initial enthusiasm to new project ideas rather than immediately jumping to the ways in which it might fail. I’m trying to help when I do that! If I didn’t want you to succeed, I would just let it die with indifference :P But ok, not everyone reads it that way. I’m dispositionally still not a “ooo shiny new thing!” person, but it has seemed to help to at least start with something like, “oh cool, so you want to [the positive part of the goal]? And this would let us [whatever vision is being sold]?”

Plus, while you’re restating the question to confirm your understanding and asking follow up questions about details, you’re also buying some time for your brain to churn on in the background to possibly come up with some preliminary statement: “based on what I’m hearing from you right now, it sounds like ___ might be a good place to start. What do you think?” In general, “thinking on your feet” can also just be considered “thinking out loud,” which isn’t natural for many of us but you can get more comfortable with it over time, especially if you consider that the person asking wants your opinion and wants to stay connected while you’re thinking something over.

Even if that doesn’t happen, though, in the vast majority of cases it should be acceptable to say something along the lines of, “ok, I think I understand the question, but I’ll need a bit more time to think through it. When do you need my input by?” or even, “you know, I’m not sure what I think about that just yet. I’d like to [some set of actions, including consulting others/the internet or doing some exploration], could I get back to you by [however long you think you’d need to feel more confident in your conclusions]?”

Really those are just variations of “I don’t know yet, but I will find out and I need to do it in my way” which when you’re not used to it, can feel kind of scary to broach. If you feel you need permission to take that route, I am hereby granting it! :) You are allowed to propose a way of doing things that will work better for you, and good managers will help you figure out the intersection between the constraints of the work and your strengths and needs. From there it does take some practice to train your ego to be ok with this approach, but hopefully you’ll receive enough positive feedback. And in any case, it’s worth trying if your alternatives are saying nothing at all or saying something that makes you wince later.


Ideally you’ve already set yourself up for following up later with a more thought-out conclusion, but even if you hadn’t, there’s nothing stopping you from doing so anyway. If you’re worried about being seen as someone that’s indecisive, that can be mitigated by demonstrating what you’ve taken into account later that you didn’t before. People very much value thoughtfulness, delivered within a reasonable timeframe, which doesn’t have to be on-demand. Also, you can use this technique even if you’re not changing your mind, when you’re instead wanting to further strengthen your initial response, like, “I’m even more confident now that this is the right thing to do because ___.”

For what it’s worth, I’ve even done this for some interviews—if there was a question I felt like I flubbed a bit or had more to say on after later consideration, I’ve emailed my interviewer with a (still mostly concise) answer. I haven’t gotten up the courage to ask my former-interviewers-now-colleagues whether they responded well to this, and no one I’ve interviewed on the other side has done it yet either, so I’m not totally sure on how successful it is. But in general it makes me feel better that for most decisions*, the “it’s too late!!” point is much farther off than you’d usually think in the moment.

Before the Next Time

The tactics in the previous two sections might be ok if they only need to be used once awhile, but if you find yourself frequently confronted with situations where you fear freezing, it might be worth considering applying some longer-term strategies as well.

First, for every new manager I have, I like having a “Getting to Know You” introductory conversation where we talk about our working style preferences. This was something they encouraged at Google when I first started working there and since then, I’ve had something like 11 different managers over 5 different roles in 7.5 years of working and I feel it’s been pretty useful technique. It’s less fraught to talk about this sort of thing ahead of time, before you're all up to your neck in some conflict and only then discover a difference in expectations.

My spiel includes a bit about how even though I can come across as fairly sociable and smiley, I’m still a very strong introvert in drawing energy from alone time and that one of the ways this manifests at work is that I need time to think about what I think about something. Also, sometimes I need help from others to draw out what I might be thinking, because I live in my head a lot and may forget that what’s apparent to me isn’t obvious to everyone else too. This way, I’ve done what I can upfront to mitigate the impression that I’m a taciturn bear. My manager can hopefully default to "I need to remember how KWu prefers to communicate and that she doesn't like being surprised" vs. "KWu hates everything I say."

Second, whether it’s in meetings with your manager or with others, you can “cheat” a bit on appearing as though you’re "thinking on your feet" by doing all that work ahead of time instead! I always look for an agenda. If there isn’t an agenda, I’ll ask the facilitator if there’s anything I should prepare. If there is one (thank you, meeting facilitators doing a good job), then I can reflect on it a bit and mentally plot out a few likely directions for where the conversation might go and what I think about it, before anyone’s asking questions. It’s also ok to just decide you don’t have an opinion on a particular topic and inform people of that, it lets them move on quickly.


Don’t despair at not looking like the kind of high energy extrovert we tend to see/hear more frequently, especially in American workplaces. You can figure out what works for you, and your strengths will be appreciated.

*of course, this doesn’t apply if you’re holding someone’s life in your hands. One of the various reasons I did not share my mother’s desire for me to become a doctor…